('');
+ useEffect(() => {
+ const getItemOffsets = () => {
+ const titles = document.querySelectorAll('article :is(h1, h2, h3, h4)');
+ itemOffsets.current = Array.from(titles).map((title) => ({
+ id: title.id,
+ topOffset: title.getBoundingClientRect().top + window.scrollY,
+ }));
+ };
+
+ getItemOffsets();
+ window.addEventListener('resize', getItemOffsets);
+
+ return () => {
+ window.removeEventListener('resize', getItemOffsets);
+ };
+ }, []);
+
+ return (
+ <>
+ On this page
+
+ -
+ Overview
+
+ {headings
+ .filter(({ depth }) => depth > 1 && depth < 4)
+ .map((heading) => (
+ -
+ {heading.text}
+
+ ))}
+
+ >
+ );
+};
+
+export default TableOfContents;
diff --git a/docs/src/components/RightSidebar/ThemeToggleButton.css b/docs/src/components/RightSidebar/ThemeToggleButton.css
new file mode 100644
index 0000000..dc5ba46
--- /dev/null
+++ b/docs/src/components/RightSidebar/ThemeToggleButton.css
@@ -0,0 +1,37 @@
+.theme-toggle {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.25em;
+ padding: 0.33em 0.67em;
+ border-radius: 99em;
+ background-color: var(--theme-code-inline-bg);
+}
+
+.theme-toggle > label:focus-within {
+ outline: 2px solid transparent;
+ box-shadow: 0 0 0 0.08em var(--theme-accent), 0 0 0 0.12em white;
+}
+
+.theme-toggle > label {
+ color: var(--theme-code-inline-text);
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ opacity: 0.5;
+}
+
+.theme-toggle .checked {
+ color: var(--theme-accent);
+ opacity: 1;
+}
+
+input[name='theme-toggle'] {
+ position: absolute;
+ opacity: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: -1;
+}
diff --git a/docs/src/components/RightSidebar/ThemeToggleButton.tsx b/docs/src/components/RightSidebar/ThemeToggleButton.tsx
new file mode 100644
index 0000000..b9682aa
--- /dev/null
+++ b/docs/src/components/RightSidebar/ThemeToggleButton.tsx
@@ -0,0 +1,82 @@
+import type { FunctionalComponent } from 'preact';
+import { useState, useEffect } from 'preact/hooks';
+import './ThemeToggleButton.css';
+
+const themes = ['light', 'dark'];
+
+const icons = [
+ ,
+ ,
+];
+
+const ThemeToggle: FunctionalComponent = () => {
+ const [theme, setTheme] = useState(() => {
+ if (import.meta.env.SSR) {
+ return undefined;
+ }
+ if (typeof localStorage !== undefined && localStorage.getItem('theme')) {
+ return localStorage.getItem('theme');
+ }
+ if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
+ return 'dark';
+ }
+ return 'light';
+ });
+
+ useEffect(() => {
+ const root = document.documentElement;
+ if (theme === 'light') {
+ root.classList.remove('theme-dark');
+ } else {
+ root.classList.add('theme-dark');
+ }
+ }, [theme]);
+
+ return (
+
+ {themes.map((t, i) => {
+ const icon = icons[i];
+ const checked = t === theme;
+ return (
+
+ );
+ })}
+
+ );
+};
+
+export default ThemeToggle;
diff --git a/docs/src/config.ts b/docs/src/config.ts
new file mode 100644
index 0000000..056ce18
--- /dev/null
+++ b/docs/src/config.ts
@@ -0,0 +1,57 @@
+export const SITE = {
+ title: 'Astro Reactive Library Docs',
+ description: 'Documentation for the Astro Reactive Library',
+ defaultLanguage: 'en_US',
+};
+
+export const OPEN_GRAPH = {
+ image: {
+ src: 'https://github.com/withastro/astro/blob/main/assets/social/banner.jpg?raw=true',
+ alt:
+ 'astro logo on a starry expanse of space,' +
+ ' with a purple saturn-like planet floating in the right foreground',
+ },
+ twitter: 'astrodotbuild',
+};
+
+// This is the type of the frontmatter you put in the docs markdown files.
+export type Frontmatter = {
+ title: string;
+ description: string;
+ layout: string;
+ image?: { src: string; alt: string };
+ dir?: 'ltr' | 'rtl';
+ ogLocale?: string;
+ lang?: string;
+};
+
+export const KNOWN_LANGUAGES = {
+ English: 'en',
+} as const;
+export const KNOWN_LANGUAGE_CODES = Object.values(KNOWN_LANGUAGES);
+
+export const GITHUB_EDIT_URL = `https://github.com/ayoayco/astro-reactive-library/tree/main/docs`;
+
+export const COMMUNITY_INVITE_URL = `https://astro.build/chat`;
+
+// See "Algolia" section of the README for more information.
+export const ALGOLIA = {
+ indexName: 'XXXXXXXXXX',
+ appId: 'XXXXXXXXXX',
+ apiKey: 'XXXXXXXXXX',
+};
+
+export type Sidebar = Record<
+ typeof KNOWN_LANGUAGE_CODES[number],
+ Record
+>;
+export const SIDEBAR: Sidebar = {
+ en: {
+ 'Section Header': [
+ { text: 'Introduction', link: 'en/introduction' },
+ { text: 'Page 2', link: 'en/page-2' },
+ { text: 'Page 3', link: 'en/page-3' },
+ ],
+ 'Another Section': [{ text: 'Page 4', link: 'en/page-4' }],
+ },
+};
diff --git a/docs/src/env.d.ts b/docs/src/env.d.ts
new file mode 100644
index 0000000..f964fe0
--- /dev/null
+++ b/docs/src/env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/docs/src/languages.ts b/docs/src/languages.ts
new file mode 100644
index 0000000..405b692
--- /dev/null
+++ b/docs/src/languages.ts
@@ -0,0 +1,10 @@
+import { KNOWN_LANGUAGES, KNOWN_LANGUAGE_CODES } from './config';
+export { KNOWN_LANGUAGES, KNOWN_LANGUAGE_CODES };
+
+export const langPathRegex = /\/([a-z]{2}-?[A-Z]{0,2})\//;
+
+export function getLanguageFromURL(pathname: string) {
+ const langCodeMatch = pathname.match(langPathRegex);
+ const langCode = langCodeMatch ? langCodeMatch[1] : 'en';
+ return langCode as typeof KNOWN_LANGUAGE_CODES[number];
+}
diff --git a/docs/src/layouts/MainLayout.astro b/docs/src/layouts/MainLayout.astro
new file mode 100644
index 0000000..60d4392
--- /dev/null
+++ b/docs/src/layouts/MainLayout.astro
@@ -0,0 +1,139 @@
+---
+import HeadCommon from '../components/HeadCommon.astro';
+import HeadSEO from '../components/HeadSEO.astro';
+import Header from '../components/Header/Header.astro';
+import PageContent from '../components/PageContent/PageContent.astro';
+import LeftSidebar from '../components/LeftSidebar/LeftSidebar.astro';
+import RightSidebar from '../components/RightSidebar/RightSidebar.astro';
+import * as CONFIG from '../config';
+import type { MarkdownHeading } from 'astro';
+import Footer from '../components/Footer/Footer.astro';
+
+type Props = {
+ frontmatter: CONFIG.Frontmatter;
+ headings: MarkdownHeading[];
+};
+
+const { frontmatter, headings } = Astro.props as Props;
+const canonicalURL = new URL(Astro.url.pathname, Astro.site);
+const currentPage = Astro.url.pathname;
+const currentFile = `src/pages${currentPage.replace(/\/$/, '')}.md`;
+const githubEditUrl = `${CONFIG.GITHUB_EDIT_URL}/${currentFile}`;
+---
+
+
+
+
+
+
+ {frontmatter.title ? `${frontmatter.title} 🚀 ${CONFIG.SITE.title}` : CONFIG.SITE.title}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/src/pages/en/introduction.md b/docs/src/pages/en/introduction.md
new file mode 100644
index 0000000..0a83c50
--- /dev/null
+++ b/docs/src/pages/en/introduction.md
@@ -0,0 +1,70 @@
+---
+title: Astro Reactive Library
+description: Library homepage
+layout: ../../layouts/MainLayout.astro
+---
+
+
+
+[](https://github.com/ayoayco/astro-reactive-library/actions/workflows/build-and-test.yml)
+[](https://github.com/ayoayco/astro-reactive-library)
+
+# Components and utilities for building reactive user interfaces 🔥
+
+Let your data build your UI. Blazing-fast, reactive user interfaces with native [Astro](https://astro.build) components and architecture.
+
+| Packages | Version | Docs | Description |
+| --- | --- | --- | --- |
+| [astro-reactive-form](https://github.com/ayoayco/astro-reactive-library/blob/main/packages/astro-reactive-form/README.md) | [](https://www.npmjs.com/package/astro-reactive-form) | 🛠 | generate a dynamic form which can be modified programatically |
+| astro-reactive-validator | 🛠 | 🛠 | set of utilities for validating inputs |
+| astro-reactive-datagrid | 🛠 | 🛠 | generate a dynamic datagrid or table of values |
+
+# Running locally
+
+We mainly use the `demo` app to see changes we make on the packages. Do the following to start hacking:
+
+1. Fork the project then clone to your computer
+
+```
+git clone git@github.com:/astro-reactive-library.git
+```
+
+2. Go into the project directory
+
+```
+cd astro-reactive-library
+```
+
+3. Install the node dependencies
+
+```
+npm i
+```
+
+4. Run the demo application
+
+```
+npm start
+```
+
+5. Open the demo application on you browser. Browse to the address:
+
+```
+https://localhost:3000
+```
+
+6. To run the tests:
+
+```
+npm test
+```
+
+_[Please report issues and suggestions](https://github.com/ayoayco/astro-reactive-library/issues)_
+
+# Contributors
+
+
+
+
+
+👉 _[Join our contributors!](https://github.com/ayoayco/astro-reactive-library/blob/main/CONTRIBUTING.md)_
diff --git a/docs/src/pages/en/page-2.md b/docs/src/pages/en/page-2.md
new file mode 100644
index 0000000..1e504f4
--- /dev/null
+++ b/docs/src/pages/en/page-2.md
@@ -0,0 +1,106 @@
+---
+title: Reactive Form
+description: Lorem ipsum dolor sit amet - 2
+layout: ../../layouts/MainLayout.astro
+---
+
+
+
+[](https://www.npmjs.com/package/astro-reactive-form)
+[](https://www.npmjs.com/package/astro-reactive-form)
+[](https://www.npmjs.com/package/astro-reactive-form)
+[](https://www.npmjs.com/package/astro-reactive-form)
+
+# Astro Reactive Form 🔥
+
+Generate a dynamic form based on your data, and modify programatically.
+
+The Reactive Form component for [Astro](https://astro.build) 🔥
+
+_[All contributions are welcome.](https://github.com/ayoayco/astro-reactive-library/issues)_
+
+## Installation
+In your Astro project:
+
+```
+npm i astro-reactive-form
+```
+
+## Usage
+Use in an Astro page:
+
+```astro
+---
+import { FormControl, FormGroup } from "astro-reactive-form/core";
+import Form from "astro-reactive-form";
+
+// create a form group
+const form = new FormGroup([
+ {
+ name: "username",
+ label: "Username",
+ },
+ {
+ name: "password",
+ label: "Password",
+ type: "password",
+ },
+]);
+
+// set the name optionally
+form.name = "Simple Form";
+
+// you can insert a control at any point
+form.controls.push(
+ new FormControl({
+ type: "checkbox",
+ name: "is-awesome",
+ label: "is Awesome?",
+ labelPosition: "right",
+ })
+);
+
+// you can get a FormControl object
+const userNameControl = form.get("username");
+
+// you can set values dynamically
+userNameControl?.setValue("RAMOOOON");
+form.get('is-awesome')?.setValue("checked");
+---
+
+
+
+
+```
+
+# Screenshots
+
+Result of example above:
+
+
+
+Example of multiple form groups:
+
+
+
+# Future Plans
+
+Currently this only supports very basic form creation, but the goal of the project is ambitious:
+
+1. Validator library for common validation scenarios
+ 1. Client-side validation
+ 1. Server-side validation
+ 1. validation hooks - onFocus, onBlur, onSubmit
+1. Themes - unstyled, light mode, dark mode, compact, large
+1. FormGroup class
+ 1. `statusChanges` - observable that emits the form status when it changes
+ 1. `valueChanges` - observable that emits the values of all controls when they change
+1. FormControl class
+ 1. `statusChanges` - observable that emits the control status when it changes
+ 1. `valueChanges` - observable that emits the control value when it changes
+ 1. `value` - property that reflects the control value
+1. Documentation website
+
+... and so much more
+
+_All contributions are welcome. Let's make the fastest web form component powered by Astro_
diff --git a/docs/src/pages/en/page-3.md b/docs/src/pages/en/page-3.md
new file mode 100644
index 0000000..6d590f1
--- /dev/null
+++ b/docs/src/pages/en/page-3.md
@@ -0,0 +1,37 @@
+---
+title: Page 3
+description: Lorem ipsum dolor sit amet - 3
+layout: ../../layouts/MainLayout.astro
+---
+
+This is a fully-featured page, written in Markdown!
+
+## Section A
+
+Lorem ipsum dolor sit amet, **consectetur adipiscing elit**. Sed ut tortor _suscipit_, posuere ante id, vulputate urna. Pellentesque molestie aliquam dui sagittis aliquet. Sed sed felis convallis, lacinia lorem sit amet, fermentum ex. Etiam hendrerit mauris at elementum egestas. Vivamus id gravida ante. Praesent consectetur fermentum turpis, quis blandit tortor feugiat in. Aliquam erat volutpat. In elementum purus et tristique ornare. Suspendisse sollicitudin dignissim est a ultrices. Pellentesque sed ipsum finibus, condimentum metus eget, sagittis elit. Sed id lorem justo. Vivamus in sem ac mi molestie ornare.
+
+## Section B
+
+Nam quam dolor, pellentesque sed odio euismod, feugiat tempus tellus. Quisque arcu velit, ultricies in faucibus sed, ultrices ac enim. Nunc eget dictum est. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ex nisi, egestas mollis ultricies ut, laoreet suscipit libero. Nam condimentum molestie turpis. Sed vestibulum sagittis congue. Maecenas tristique enim et tincidunt tempor. Curabitur ac scelerisque nulla, in malesuada libero. Praesent eu tempus odio. Pellentesque aliquam ullamcorper quam at gravida. Sed non fringilla mauris. Aenean sit amet ultrices erat. Vestibulum congue venenatis tortor, nec suscipit tortor. Aenean pellentesque mauris eget tortor tincidunt pharetra.
+
+## Section C
+
+```markdown
+---
+title: Markdown Page!
+lang: en
+layout: ~/layouts/MainLayout.astro
+---
+
+# Markdown example
+
+This is a fully-featured page, written in Markdown!
+
+## Section A
+
+Lorem ipsum dolor sit amet, **consectetur adipiscing elit**. Sed ut tortor _suscipit_, posuere ante id, vulputate urna. Pellentesque molestie aliquam dui sagittis aliquet. Sed sed felis convallis, lacinia lorem sit amet, fermentum ex. Etiam hendrerit mauris at elementum egestas. Vivamus id gravida ante. Praesent consectetur fermentum turpis, quis blandit tortor feugiat in. Aliquam erat volutpat. In elementum purus et tristique ornare. Suspendisse sollicitudin dignissim est a ultrices. Pellentesque sed ipsum finibus, condimentum metus eget, sagittis elit. Sed id lorem justo. Vivamus in sem ac mi molestie ornare.
+
+## Section B
+
+Nam quam dolor, pellentesque sed odio euismod, feugiat tempus tellus. Quisque arcu velit, ultricies in faucibus sed, ultrices ac enim. Nunc eget dictum est. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ex nisi, egestas mollis ultricies ut, laoreet suscipit libero. Nam condimentum molestie turpis. Sed vestibulum sagittis congue. Maecenas tristique enim et tincidunt tempor. Curabitur ac scelerisque nulla, in malesuada libero. Praesent eu tempus odio. Pellentesque aliquam ullamcorper quam at gravida. Sed non fringilla mauris. Aenean sit amet ultrices erat. Vestibulum congue venenatis tortor, nec suscipit tortor. Aenean pellentesque mauris eget tortor tincidunt pharetra.
+```
diff --git a/docs/src/pages/en/page-4.md b/docs/src/pages/en/page-4.md
new file mode 100644
index 0000000..85416ff
--- /dev/null
+++ b/docs/src/pages/en/page-4.md
@@ -0,0 +1,37 @@
+---
+title: Page 4
+description: Lorem ipsum dolor sit amet - 4
+layout: ../../layouts/MainLayout.astro
+---
+
+This is a fully-featured page, written in Markdown!
+
+## Section A
+
+Lorem ipsum dolor sit amet, **consectetur adipiscing elit**. Sed ut tortor _suscipit_, posuere ante id, vulputate urna. Pellentesque molestie aliquam dui sagittis aliquet. Sed sed felis convallis, lacinia lorem sit amet, fermentum ex. Etiam hendrerit mauris at elementum egestas. Vivamus id gravida ante. Praesent consectetur fermentum turpis, quis blandit tortor feugiat in. Aliquam erat volutpat. In elementum purus et tristique ornare. Suspendisse sollicitudin dignissim est a ultrices. Pellentesque sed ipsum finibus, condimentum metus eget, sagittis elit. Sed id lorem justo. Vivamus in sem ac mi molestie ornare.
+
+## Section B
+
+Nam quam dolor, pellentesque sed odio euismod, feugiat tempus tellus. Quisque arcu velit, ultricies in faucibus sed, ultrices ac enim. Nunc eget dictum est. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ex nisi, egestas mollis ultricies ut, laoreet suscipit libero. Nam condimentum molestie turpis. Sed vestibulum sagittis congue. Maecenas tristique enim et tincidunt tempor. Curabitur ac scelerisque nulla, in malesuada libero. Praesent eu tempus odio. Pellentesque aliquam ullamcorper quam at gravida. Sed non fringilla mauris. Aenean sit amet ultrices erat. Vestibulum congue venenatis tortor, nec suscipit tortor. Aenean pellentesque mauris eget tortor tincidunt pharetra.
+
+## Section C
+
+```markdown
+---
+title: Markdown Page!
+lang: en
+layout: ~/layouts/MainLayout.astro
+---
+
+# Markdown example
+
+This is a fully-featured page, written in Markdown!
+
+## Section A
+
+Lorem ipsum dolor sit amet, **consectetur adipiscing elit**. Sed ut tortor _suscipit_, posuere ante id, vulputate urna. Pellentesque molestie aliquam dui sagittis aliquet. Sed sed felis convallis, lacinia lorem sit amet, fermentum ex. Etiam hendrerit mauris at elementum egestas. Vivamus id gravida ante. Praesent consectetur fermentum turpis, quis blandit tortor feugiat in. Aliquam erat volutpat. In elementum purus et tristique ornare. Suspendisse sollicitudin dignissim est a ultrices. Pellentesque sed ipsum finibus, condimentum metus eget, sagittis elit. Sed id lorem justo. Vivamus in sem ac mi molestie ornare.
+
+## Section B
+
+Nam quam dolor, pellentesque sed odio euismod, feugiat tempus tellus. Quisque arcu velit, ultricies in faucibus sed, ultrices ac enim. Nunc eget dictum est. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ex nisi, egestas mollis ultricies ut, laoreet suscipit libero. Nam condimentum molestie turpis. Sed vestibulum sagittis congue. Maecenas tristique enim et tincidunt tempor. Curabitur ac scelerisque nulla, in malesuada libero. Praesent eu tempus odio. Pellentesque aliquam ullamcorper quam at gravida. Sed non fringilla mauris. Aenean sit amet ultrices erat. Vestibulum congue venenatis tortor, nec suscipit tortor. Aenean pellentesque mauris eget tortor tincidunt pharetra.
+```
diff --git a/docs/src/pages/index.astro b/docs/src/pages/index.astro
new file mode 100644
index 0000000..bce0697
--- /dev/null
+++ b/docs/src/pages/index.astro
@@ -0,0 +1,5 @@
+
diff --git a/docs/src/styles/index.css b/docs/src/styles/index.css
new file mode 100644
index 0000000..2a735de
--- /dev/null
+++ b/docs/src/styles/index.css
@@ -0,0 +1,382 @@
+* {
+ box-sizing: border-box;
+ margin: 0;
+}
+
+/* Global focus outline reset */
+*:focus:not(:focus-visible) {
+ outline: none;
+}
+
+:root {
+ --user-font-scale: 1rem - 16px;
+ --max-width: calc(100% - 1rem);
+}
+
+@media (min-width: 50em) {
+ :root {
+ --max-width: 46em;
+ }
+}
+
+body {
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+ font-family: var(--font-body);
+ font-size: 1rem;
+ font-size: clamp(0.9rem, 0.75rem + 0.375vw + var(--user-font-scale), 1rem);
+ line-height: 1.5;
+ max-width: 100vw;
+}
+
+nav ul {
+ list-style: none;
+ padding: 0;
+}
+
+.content > section > * + * {
+ margin-top: 1.25rem;
+}
+
+.content > section > :first-child {
+ margin-top: 0;
+}
+
+/* Typography */
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin-bottom: 1rem;
+ font-weight: bold;
+ line-height: 1;
+}
+
+h1,
+h2 {
+ max-width: 40ch;
+}
+
+:is(h2, h3):not(:first-child) {
+ margin-top: 3rem;
+}
+
+:is(h4, h5, h6):not(:first-child) {
+ margin-top: 2rem;
+}
+
+h1 {
+ font-size: 3.25rem;
+ font-weight: 800;
+}
+
+h2 {
+ font-size: 2.5rem;
+}
+
+h3 {
+ font-size: 1.75rem;
+}
+
+h4 {
+ font-size: 1.3rem;
+}
+
+h5 {
+ font-size: 1rem;
+}
+
+p {
+ line-height: 1.65em;
+}
+
+.content ul {
+ line-height: 1.1em;
+}
+
+p,
+.content ul {
+ color: var(--theme-text-light);
+}
+
+small,
+.text_small {
+ font-size: 0.833rem;
+}
+
+a {
+ color: var(--theme-text-accent);
+ font-weight: 400;
+ text-underline-offset: 0.08em;
+ align-items: center;
+ gap: 0.5rem;
+}
+
+article > section :is(ul, ol) > * + * {
+ margin-top: 0.75rem;
+}
+
+article > section nav :is(ul, ol) > * + * {
+ margin-top: inherit;
+}
+
+article > section li > :is(p, pre, blockquote):not(:first-child) {
+ margin-top: 1rem;
+}
+
+article > section :is(ul, ol) {
+ padding-left: 1em;
+}
+
+article > section nav :is(ul, ol) {
+ padding-left: inherit;
+}
+
+article > section nav {
+ margin-top: 1rem;
+ margin-bottom: 2rem;
+}
+
+article > section ::marker {
+ font-weight: bold;
+ color: var(--theme-text-light);
+}
+
+article > section iframe {
+ width: 100%;
+ height: auto;
+ aspect-ratio: 16 / 9;
+}
+
+a > code {
+ position: relative;
+ color: var(--theme-text-accent);
+ background: transparent;
+ text-underline-offset: var(--padding-block);
+}
+
+a > code::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ background: var(--theme-accent);
+ opacity: var(--theme-accent-opacity);
+ border-radius: var(--border-radius);
+}
+
+a:hover,
+a:focus {
+ text-decoration: underline;
+}
+
+a:focus {
+ outline: 2px solid currentColor;
+ outline-offset: 0.25em;
+}
+
+strong {
+ font-weight: 600;
+ color: inherit;
+}
+
+/* Supporting Content */
+
+code {
+ --border-radius: 3px;
+ --padding-block: 0.2rem;
+ --padding-inline: 0.33rem;
+
+ font-family: var(--font-mono);
+ font-size: 0.85em;
+ color: inherit;
+ background-color: var(--theme-code-inline-bg);
+ padding: var(--padding-block) var(--padding-inline);
+ margin: calc(var(--padding-block) * -1) -0.125em;
+ border-radius: var(--border-radius);
+ word-break: break-word;
+}
+
+pre.astro-code > code {
+ all: unset;
+}
+
+pre > code {
+ font-size: 1em;
+}
+
+table,
+pre {
+ position: relative;
+ --padding-block: 1rem;
+ --padding-inline: 2rem;
+ padding: var(--padding-block) var(--padding-inline);
+ padding-right: calc(var(--padding-inline) * 2);
+ margin-left: calc(var(--padding-inline) * -1);
+ margin-right: calc(var(--padding-inline) * -1);
+ font-family: var(--font-mono);
+
+ line-height: 1.5;
+ font-size: 0.85em;
+ overflow-y: hidden;
+ overflow-x: auto;
+}
+
+table {
+ width: 100%;
+ padding: var(--padding-block) 0;
+ margin: 0;
+ border-collapse: collapse;
+}
+
+/* Zebra striping */
+tr:nth-of-type(odd) {
+ background: var(--theme-bg-hover);
+}
+th {
+ background: var(--color-black);
+ color: var(--theme-color);
+ font-weight: bold;
+}
+td,
+th {
+ padding: 6px;
+ text-align: left;
+}
+
+pre {
+ background-color: var(--theme-code-bg);
+ color: var(--theme-code-text);
+}
+
+blockquote code {
+ background-color: var(--theme-bg);
+}
+
+@media (min-width: 37.75em) {
+ pre {
+ --padding-inline: 1.25rem;
+ border-radius: 8px;
+ margin-left: 0;
+ margin-right: 0;
+ }
+}
+
+blockquote {
+ margin: 2rem 0;
+ padding: 1.25em 1.5rem;
+ border-left: 3px solid var(--theme-text-light);
+ background-color: var(--theme-bg-offset);
+ border-radius: 0 0.25rem 0.25rem 0;
+ line-height: 1.7;
+}
+
+img {
+ max-width: 100%;
+}
+
+.flex {
+ display: flex;
+ align-items: center;
+}
+
+button {
+ display: flex;
+ align-items: center;
+ justify-items: center;
+ gap: 0.25em;
+ padding: 0.33em 0.67em;
+ border: 0;
+ background: var(--theme-bg);
+ display: flex;
+ font-size: 1rem;
+ align-items: center;
+ gap: 0.25em;
+ border-radius: 99em;
+ color: var(--theme-text);
+ background-color: var(--theme-bg);
+}
+
+h2.heading {
+ font-size: 1rem;
+ font-weight: 700;
+ padding: 0.1rem 1rem;
+ text-transform: uppercase;
+ margin-bottom: 0.5rem;
+}
+
+.heading-link {
+ font-size: 1rem;
+ padding: 0.1rem 0 0.1rem 1rem;
+ border-left: 4px solid var(--theme-divider);
+}
+
+.heading-link:hover,
+.heading-link:focus {
+ border-left-color: var(--theme-accent);
+ color: var(--theme-accent);
+}
+.heading-link:focus-within {
+ color: var(--theme-text-light);
+ border-left-color: hsla(var(--color-gray-40), 1);
+}
+.heading-link svg {
+ opacity: 0.6;
+}
+.heading-link:hover svg {
+ opacity: 0.8;
+}
+.heading-link a {
+ display: inline-flex;
+ gap: 0.5em;
+ width: 100%;
+ padding: 0.15em 0 0.15em 0;
+}
+
+.heading-link.depth-3 {
+ padding-left: 2rem;
+}
+.heading-link.depth-4 {
+ padding-left: 3rem;
+}
+
+.heading-link a {
+ font: inherit;
+ color: inherit;
+ text-decoration: none;
+}
+
+/* Screenreader Only Text */
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border-width: 0;
+}
+
+.focus\:not-sr-only:focus,
+.focus\:not-sr-only:focus-visible {
+ position: static;
+ width: auto;
+ height: auto;
+ padding: 0;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+ white-space: normal;
+}
+
+:target {
+ scroll-margin: calc(var(--theme-sidebar-offset, 5rem) + 2rem) 0 2rem;
+}
diff --git a/docs/src/styles/theme.css b/docs/src/styles/theme.css
new file mode 100644
index 0000000..1dad9dc
--- /dev/null
+++ b/docs/src/styles/theme.css
@@ -0,0 +1,125 @@
+:root {
+ --font-fallback: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif,
+ Apple Color Emoji, Segoe UI Emoji;
+ --font-body: system-ui, var(--font-fallback);
+ --font-mono: 'IBM Plex Mono', Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console',
+ 'Lucida Sans Typewriter', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Liberation Mono',
+ 'Nimbus Mono L', Monaco, 'Courier New', Courier, monospace;
+
+ /*
+ * Variables with --color-base prefix define
+ * the hue, and saturation values to be used for
+ * hsla colors.
+ *
+ * ex:
+ *
+ * --color-base-{color}: {hue}, {saturation};
+ *
+ */
+
+ --color-base-white: 0, 0%;
+ --color-base-black: 240, 100%;
+ --color-base-gray: 215, 14%;
+ --color-base-blue: 212, 100%;
+ --color-base-blue-dark: 212, 72%;
+ --color-base-green: 158, 79%;
+ --color-base-orange: 22, 100%;
+ --color-base-purple: 269, 79%;
+ --color-base-red: 351, 100%;
+ --color-base-yellow: 41, 100%;
+
+ /*
+ * Color palettes are made using --color-base
+ * variables, along with a lightness value to
+ * define different variants.
+ *
+ */
+
+ --color-gray-5: var(--color-base-gray), 5%;
+ --color-gray-10: var(--color-base-gray), 10%;
+ --color-gray-20: var(--color-base-gray), 20%;
+ --color-gray-30: var(--color-base-gray), 30%;
+ --color-gray-40: var(--color-base-gray), 40%;
+ --color-gray-50: var(--color-base-gray), 50%;
+ --color-gray-60: var(--color-base-gray), 60%;
+ --color-gray-70: var(--color-base-gray), 70%;
+ --color-gray-80: var(--color-base-gray), 80%;
+ --color-gray-90: var(--color-base-gray), 90%;
+ --color-gray-95: var(--color-base-gray), 95%;
+
+ --color-blue: var(--color-base-blue), 61%;
+ --color-blue-dark: var(--color-base-blue-dark), 39%;
+ --color-green: var(--color-base-green), 42%;
+ --color-orange: var(--color-base-orange), 50%;
+ --color-purple: var(--color-base-purple), 54%;
+ --color-red: var(--color-base-red), 54%;
+ --color-yellow: var(--color-base-yellow), 59%;
+}
+
+:root {
+ color-scheme: light;
+ --theme-accent: hsla(var(--color-blue), 1);
+ --theme-text-accent: hsla(var(--color-blue), 1);
+ --theme-accent-opacity: 0.15;
+ --theme-divider: hsla(var(--color-gray-95), 1);
+ --theme-text: hsla(var(--color-gray-10), 1);
+ --theme-text-light: hsla(var(--color-gray-40), 1);
+ /* @@@: not used anywhere */
+ --theme-text-lighter: hsla(var(--color-gray-80), 1);
+ --theme-bg: hsla(var(--color-base-white), 100%, 1);
+ --theme-bg-hover: hsla(var(--color-gray-95), 1);
+ --theme-bg-offset: hsla(var(--color-gray-90), 1);
+ --theme-bg-accent: hsla(var(--color-blue), var(--theme-accent-opacity));
+ --theme-code-inline-bg: hsla(var(--color-gray-95), 1);
+ --theme-code-inline-text: var(--theme-text);
+ --theme-code-bg: hsla(217, 19%, 27%, 1);
+ --theme-code-text: hsla(var(--color-gray-95), 1);
+ --theme-navbar-bg: hsla(var(--color-base-white), 100%, 1);
+ --theme-navbar-height: 6rem;
+ --theme-selection-color: hsla(var(--color-blue), 1);
+ --theme-selection-bg: hsla(var(--color-blue), var(--theme-accent-opacity));
+}
+
+body {
+ background: var(--theme-bg);
+ color: var(--theme-text);
+}
+
+:root.theme-dark {
+ color-scheme: dark;
+ --theme-accent-opacity: 0.15;
+ --theme-accent: hsla(var(--color-blue), 1);
+ --theme-text-accent: hsla(var(--color-blue), 1);
+ --theme-divider: hsla(var(--color-gray-10), 1);
+ --theme-text: hsla(var(--color-gray-90), 1);
+ --theme-text-light: hsla(var(--color-gray-80), 1);
+
+ /* @@@: not used anywhere */
+ --theme-text-lighter: hsla(var(--color-gray-40), 1);
+ --theme-bg: hsla(215, 28%, 17%, 1);
+ --theme-bg-hover: hsla(var(--color-gray-40), 1);
+ --theme-bg-offset: hsla(var(--color-gray-5), 1);
+ --theme-code-inline-bg: hsla(var(--color-gray-10), 1);
+ --theme-code-inline-text: hsla(var(--color-base-white), 100%, 1);
+ --theme-code-bg: hsla(var(--color-gray-5), 1);
+ --theme-code-text: hsla(var(--color-base-white), 100%, 1);
+ --theme-navbar-bg: hsla(215, 28%, 17%, 1);
+ --theme-selection-color: hsla(var(--color-base-white), 100%, 1);
+ --theme-selection-bg: hsla(var(--color-purple), var(--theme-accent-opacity));
+
+ /* DocSearch [Algolia] */
+ --docsearch-modal-background: var(--theme-bg);
+ --docsearch-searchbox-focus-background: var(--theme-divider);
+ --docsearch-footer-background: var(--theme-divider);
+ --docsearch-text-color: var(--theme-text);
+ --docsearch-hit-background: var(--theme-divider);
+ --docsearch-hit-shadow: none;
+ --docsearch-hit-color: var(--theme-text);
+ --docsearch-footer-shadow: inset 0 2px 10px #000;
+ --docsearch-modal-shadow: inset 0 0 8px #000;
+}
+
+::selection {
+ color: var(--theme-selection-color);
+ background-color: var(--theme-selection-bg);
+}
diff --git a/docs/tsconfig.json b/docs/tsconfig.json
new file mode 100644
index 0000000..59625a7
--- /dev/null
+++ b/docs/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "astro/tsconfigs/base",
+ "compilerOptions": {
+ "jsx": "preserve",
+ "skipLibCheck": true
+ }
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 9379cd9..855121d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,8 @@
"workspaces": [
"demo",
"packages/astro-reactive-form",
- "packages/astro-reactive-validator"
+ "packages/astro-reactive-validator",
+ "docs"
]
},
"demo": {
@@ -28,6 +29,164 @@
"link": true
},
"demo/packages/astro-reactive-form": {},
+ "docs": {
+ "version": "0.0.1",
+ "license": "ISC",
+ "dependencies": {
+ "@algolia/client-search": "^4.13.1",
+ "@astrojs/preact": "^1.1.1",
+ "@astrojs/react": "^1.1.4",
+ "@docsearch/css": "^3.1.0",
+ "@docsearch/react": "^3.1.0",
+ "@types/node": "^18.0.0",
+ "@types/react": "^17.0.45",
+ "@types/react-dom": "^18.0.0",
+ "astro": "^1.4.4",
+ "preact": "^10.7.3",
+ "react": "^18.1.0",
+ "react-dom": "^18.1.0"
+ }
+ },
+ "node_modules/@algolia/autocomplete-core": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.7.1.tgz",
+ "integrity": "sha512-eiZw+fxMzNQn01S8dA/hcCpoWCOCwcIIEUtHHdzN5TGB3IpzLbuhqFeTfh2OUhhgkE8Uo17+wH+QJ/wYyQmmzg==",
+ "dependencies": {
+ "@algolia/autocomplete-shared": "1.7.1"
+ }
+ },
+ "node_modules/@algolia/autocomplete-preset-algolia": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.7.1.tgz",
+ "integrity": "sha512-pJwmIxeJCymU1M6cGujnaIYcY3QPOVYZOXhFkWVM7IxKzy272BwCvMFMyc5NpG/QmiObBxjo7myd060OeTNJXg==",
+ "dependencies": {
+ "@algolia/autocomplete-shared": "1.7.1"
+ },
+ "peerDependencies": {
+ "@algolia/client-search": "^4.9.1",
+ "algoliasearch": "^4.9.1"
+ }
+ },
+ "node_modules/@algolia/autocomplete-shared": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.7.1.tgz",
+ "integrity": "sha512-eTmGVqY3GeyBTT8IWiB2K5EuURAqhnumfktAEoHxfDY2o7vg2rSnO16ZtIG0fMgt3py28Vwgq42/bVEuaQV7pg=="
+ },
+ "node_modules/@algolia/cache-browser-local-storage": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.14.2.tgz",
+ "integrity": "sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==",
+ "dependencies": {
+ "@algolia/cache-common": "4.14.2"
+ }
+ },
+ "node_modules/@algolia/cache-common": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.14.2.tgz",
+ "integrity": "sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg=="
+ },
+ "node_modules/@algolia/cache-in-memory": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.14.2.tgz",
+ "integrity": "sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==",
+ "dependencies": {
+ "@algolia/cache-common": "4.14.2"
+ }
+ },
+ "node_modules/@algolia/client-account": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.14.2.tgz",
+ "integrity": "sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w==",
+ "dependencies": {
+ "@algolia/client-common": "4.14.2",
+ "@algolia/client-search": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
+ "node_modules/@algolia/client-analytics": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.14.2.tgz",
+ "integrity": "sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ==",
+ "dependencies": {
+ "@algolia/client-common": "4.14.2",
+ "@algolia/client-search": "4.14.2",
+ "@algolia/requester-common": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
+ "node_modules/@algolia/client-common": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.14.2.tgz",
+ "integrity": "sha512-43o4fslNLcktgtDMVaT5XwlzsDPzlqvqesRi4MjQz2x4/Sxm7zYg5LRYFol1BIhG6EwxKvSUq8HcC/KxJu3J0Q==",
+ "dependencies": {
+ "@algolia/requester-common": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
+ "node_modules/@algolia/client-personalization": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.14.2.tgz",
+ "integrity": "sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==",
+ "dependencies": {
+ "@algolia/client-common": "4.14.2",
+ "@algolia/requester-common": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
+ "node_modules/@algolia/client-search": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.14.2.tgz",
+ "integrity": "sha512-L5zScdOmcZ6NGiVbLKTvP02UbxZ0njd5Vq9nJAmPFtjffUSOGEp11BmD2oMJ5QvARgx2XbX4KzTTNS5ECYIMWw==",
+ "dependencies": {
+ "@algolia/client-common": "4.14.2",
+ "@algolia/requester-common": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
+ "node_modules/@algolia/logger-common": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.14.2.tgz",
+ "integrity": "sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA=="
+ },
+ "node_modules/@algolia/logger-console": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.14.2.tgz",
+ "integrity": "sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==",
+ "dependencies": {
+ "@algolia/logger-common": "4.14.2"
+ }
+ },
+ "node_modules/@algolia/requester-browser-xhr": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.14.2.tgz",
+ "integrity": "sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw==",
+ "dependencies": {
+ "@algolia/requester-common": "4.14.2"
+ }
+ },
+ "node_modules/@algolia/requester-common": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.14.2.tgz",
+ "integrity": "sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg=="
+ },
+ "node_modules/@algolia/requester-node-http": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.14.2.tgz",
+ "integrity": "sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==",
+ "dependencies": {
+ "@algolia/requester-common": "4.14.2"
+ }
+ },
+ "node_modules/@algolia/transporter": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.14.2.tgz",
+ "integrity": "sha512-t89dfQb2T9MFQHidjHcfhh6iGMNwvuKUvojAj+JsrHAGbuSy7yE4BylhLX6R0Q1xYRoC4Vvv+O5qIw/LdnQfsQ==",
+ "dependencies": {
+ "@algolia/cache-common": "4.14.2",
+ "@algolia/logger-common": "4.14.2",
+ "@algolia/requester-common": "4.14.2"
+ }
+ },
"node_modules/@ampproject/remapping": {
"version": "2.2.0",
"license": "Apache-2.0",
@@ -109,6 +268,23 @@
"vfile-message": "^3.0.0"
}
},
+ "node_modules/@astrojs/preact": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@astrojs/preact/-/preact-1.1.1.tgz",
+ "integrity": "sha512-33YXVOBSRn0mzx7/Qlnw96CaBLMrwRZ9XLBWEox4738FXzWTyV0JcZ7iwNMCC7vw9pjjnCFouqKlK3xFdBFcxg==",
+ "dependencies": {
+ "@babel/core": ">=7.0.0-0 <8.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.17.12",
+ "babel-plugin-module-resolver": "^4.1.0",
+ "preact-render-to-string": "^5.2.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.12.0"
+ },
+ "peerDependencies": {
+ "preact": "^10.6.5"
+ }
+ },
"node_modules/@astrojs/prism": {
"version": "1.0.1",
"license": "MIT",
@@ -119,6 +295,22 @@
"node": "^14.18.0 || >=16.12.0"
}
},
+ "node_modules/@astrojs/react": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-1.1.4.tgz",
+ "integrity": "sha512-eTIXRjvyrDRkMewL5KrbhkF+zl+KSkCgL7k8/BBMXPTUrtOZZY5N5oZbjFtvjxBSQ/dhMWp9g+SwloDldN5ZDg==",
+ "dependencies": {
+ "@babel/core": ">=7.0.0-0 <8.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.17.12"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.12.0"
+ },
+ "peerDependencies": {
+ "react": "^17.0.2 || ^18.0.0",
+ "react-dom": "^17.0.2 || ^18.0.0"
+ }
+ },
"node_modules/@astrojs/telemetry": {
"version": "1.0.1",
"license": "MIT",
@@ -463,6 +655,38 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@docsearch/css": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.2.1.tgz",
+ "integrity": "sha512-gaP6TxxwQC+K8D6TRx5WULUWKrcbzECOPA2KCVMuI+6C7dNiGUk5yXXzVhc5sld79XKYLnO9DRTI4mjXDYkh+g=="
+ },
+ "node_modules/@docsearch/react": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.2.1.tgz",
+ "integrity": "sha512-EzTQ/y82s14IQC5XVestiK/kFFMe2aagoYFuTAIfIb/e+4FU7kSMKonRtLwsCiLQHmjvNQq+HO+33giJ5YVtaQ==",
+ "dependencies": {
+ "@algolia/autocomplete-core": "1.7.1",
+ "@algolia/autocomplete-preset-algolia": "1.7.1",
+ "@docsearch/css": "3.2.1",
+ "algoliasearch": "^4.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": ">= 16.8.0 < 19.0.0",
+ "react": ">= 16.8.0 < 19.0.0",
+ "react-dom": ">= 16.8.0 < 19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@emmetio/abbreviation": {
"version": "2.2.3",
"license": "MIT",
@@ -810,7 +1034,6 @@
},
"node_modules/@types/node": {
"version": "18.8.2",
- "dev": true,
"license": "MIT"
},
"node_modules/@types/parse5": {
@@ -822,10 +1045,38 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ },
+ "node_modules/@types/react": {
+ "version": "17.0.50",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.50.tgz",
+ "integrity": "sha512-ZCBHzpDb5skMnc1zFXAXnL3l1FAdi+xZvwxK+PkglMmBrwjpp9nKaWuEvrGnSifCJmBFGxZOOFuwC6KH/s0NuA==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.0.6",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz",
+ "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/@types/resolve": {
"version": "1.20.2",
"license": "MIT"
},
+ "node_modules/@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
+ },
"node_modules/@types/unist": {
"version": "2.0.6",
"license": "MIT"
@@ -1063,6 +1314,27 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/algoliasearch": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.14.2.tgz",
+ "integrity": "sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg==",
+ "dependencies": {
+ "@algolia/cache-browser-local-storage": "4.14.2",
+ "@algolia/cache-common": "4.14.2",
+ "@algolia/cache-in-memory": "4.14.2",
+ "@algolia/client-account": "4.14.2",
+ "@algolia/client-analytics": "4.14.2",
+ "@algolia/client-common": "4.14.2",
+ "@algolia/client-personalization": "4.14.2",
+ "@algolia/client-search": "4.14.2",
+ "@algolia/logger-common": "4.14.2",
+ "@algolia/logger-console": "4.14.2",
+ "@algolia/requester-browser-xhr": "4.14.2",
+ "@algolia/requester-common": "4.14.2",
+ "@algolia/requester-node-http": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
"node_modules/ansi-align": {
"version": "3.0.1",
"license": "ISC",
@@ -1272,6 +1544,21 @@
"resolved": "packages/astro-reactive-validator",
"link": true
},
+ "node_modules/babel-plugin-module-resolver": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz",
+ "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==",
+ "dependencies": {
+ "find-babel-config": "^1.2.0",
+ "glob": "^7.1.6",
+ "pkg-up": "^3.1.0",
+ "reselect": "^4.0.0",
+ "resolve": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
"node_modules/bail": {
"version": "2.0.2",
"license": "MIT",
@@ -1282,7 +1569,6 @@
},
"node_modules/balanced-match": {
"version": "1.0.2",
- "dev": true,
"license": "MIT"
},
"node_modules/base64-js": {
@@ -1404,7 +1690,6 @@
},
"node_modules/brace-expansion": {
"version": "1.1.11",
- "dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
@@ -1771,7 +2056,6 @@
},
"node_modules/concat-map": {
"version": "0.0.1",
- "dev": true,
"license": "MIT"
},
"node_modules/convert-source-map": {
@@ -1800,6 +2084,11 @@
"node": ">= 8"
}
},
+ "node_modules/csstype": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
+ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
+ },
"node_modules/data-uri-to-buffer": {
"version": "4.0.0",
"license": "MIT",
@@ -1932,6 +2221,10 @@
"version": "1.1.3",
"license": "MIT"
},
+ "node_modules/docs": {
+ "resolved": "docs",
+ "link": true
+ },
"node_modules/doctrine": {
"version": "3.0.0",
"dev": true,
@@ -2567,6 +2860,34 @@
"node": ">=8"
}
},
+ "node_modules/find-babel-config": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
+ "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==",
+ "dependencies": {
+ "json5": "^0.5.1",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/find-babel-config/node_modules/json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==",
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/find-babel-config/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/find-up": {
"version": "5.0.0",
"license": "MIT",
@@ -2626,7 +2947,6 @@
},
"node_modules/fs.realpath": {
"version": "1.0.0",
- "dev": true,
"license": "ISC"
},
"node_modules/fsevents": {
@@ -2695,7 +3015,6 @@
},
"node_modules/glob": {
"version": "7.2.0",
- "dev": true,
"license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -3089,7 +3408,6 @@
},
"node_modules/inflight": {
"version": "1.0.6",
- "dev": true,
"license": "ISC",
"dependencies": {
"once": "^1.3.0",
@@ -3461,6 +3779,17 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
"node_modules/loupe": {
"version": "2.3.4",
"dev": true,
@@ -4372,7 +4701,6 @@
},
"node_modules/minimatch": {
"version": "3.1.2",
- "dev": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -4721,7 +5049,6 @@
},
"node_modules/once": {
"version": "1.4.0",
- "dev": true,
"license": "ISC",
"dependencies": {
"wrappy": "1"
@@ -4907,7 +5234,6 @@
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -5019,6 +5345,73 @@
"node": ">=8"
}
},
+ "node_modules/pkg-up": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
+ "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-up/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-up/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-up/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-up/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-up/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/postcss": {
"version": "8.4.17",
"funding": [
@@ -5068,6 +5461,26 @@
}
}
},
+ "node_modules/preact": {
+ "version": "10.11.1",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.1.tgz",
+ "integrity": "sha512-1Wz5PCRm6Fg+6BTXWJHhX4wRK9MZbZBHuwBqfZlOdVm2NqPe8/rjYpufvYCwJSGb9layyzB2jTTXfpCTynLqFQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ }
+ },
+ "node_modules/preact-render-to-string": {
+ "version": "5.2.5",
+ "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-5.2.5.tgz",
+ "integrity": "sha512-rEBn42C3Wh+AjPxXUbDkb6xw0cTJQgxdYlp6ytUR1uBZF647Wn6ykkopMeQlRl7ggX+qnYYjZ4Hs1abZENl7ww==",
+ "dependencies": {
+ "pretty-format": "^3.8.0"
+ },
+ "peerDependencies": {
+ "preact": ">=10"
+ }
+ },
"node_modules/preferred-pm": {
"version": "3.0.3",
"license": "MIT",
@@ -5131,6 +5544,11 @@
"version": "0.23.5",
"license": "MIT"
},
+ "node_modules/pretty-format": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz",
+ "integrity": "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew=="
+ },
"node_modules/prismjs": {
"version": "1.29.0",
"license": "MIT",
@@ -5198,6 +5616,29 @@
"safe-buffer": "^5.1.0"
}
},
+ "node_modules/react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
"node_modules/readable-stream": {
"version": "3.6.0",
"license": "MIT",
@@ -5367,6 +5808,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/reselect": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz",
+ "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ=="
+ },
"node_modules/resolve": {
"version": "1.22.1",
"license": "MIT",
@@ -5601,6 +6047,14 @@
"suf-log": "^2.5.3"
}
},
+ "node_modules/scheduler": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
"node_modules/section-matter": {
"version": "1.0.0",
"license": "MIT",
@@ -6564,7 +7018,6 @@
},
"node_modules/wrappy": {
"version": "1.0.2",
- "dev": true,
"license": "ISC"
},
"node_modules/y18n": {
@@ -6737,6 +7190,142 @@
}
},
"dependencies": {
+ "@algolia/autocomplete-core": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.7.1.tgz",
+ "integrity": "sha512-eiZw+fxMzNQn01S8dA/hcCpoWCOCwcIIEUtHHdzN5TGB3IpzLbuhqFeTfh2OUhhgkE8Uo17+wH+QJ/wYyQmmzg==",
+ "requires": {
+ "@algolia/autocomplete-shared": "1.7.1"
+ }
+ },
+ "@algolia/autocomplete-preset-algolia": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.7.1.tgz",
+ "integrity": "sha512-pJwmIxeJCymU1M6cGujnaIYcY3QPOVYZOXhFkWVM7IxKzy272BwCvMFMyc5NpG/QmiObBxjo7myd060OeTNJXg==",
+ "requires": {
+ "@algolia/autocomplete-shared": "1.7.1"
+ }
+ },
+ "@algolia/autocomplete-shared": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.7.1.tgz",
+ "integrity": "sha512-eTmGVqY3GeyBTT8IWiB2K5EuURAqhnumfktAEoHxfDY2o7vg2rSnO16ZtIG0fMgt3py28Vwgq42/bVEuaQV7pg=="
+ },
+ "@algolia/cache-browser-local-storage": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.14.2.tgz",
+ "integrity": "sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==",
+ "requires": {
+ "@algolia/cache-common": "4.14.2"
+ }
+ },
+ "@algolia/cache-common": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.14.2.tgz",
+ "integrity": "sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg=="
+ },
+ "@algolia/cache-in-memory": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.14.2.tgz",
+ "integrity": "sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==",
+ "requires": {
+ "@algolia/cache-common": "4.14.2"
+ }
+ },
+ "@algolia/client-account": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.14.2.tgz",
+ "integrity": "sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w==",
+ "requires": {
+ "@algolia/client-common": "4.14.2",
+ "@algolia/client-search": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
+ "@algolia/client-analytics": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.14.2.tgz",
+ "integrity": "sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ==",
+ "requires": {
+ "@algolia/client-common": "4.14.2",
+ "@algolia/client-search": "4.14.2",
+ "@algolia/requester-common": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
+ "@algolia/client-common": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.14.2.tgz",
+ "integrity": "sha512-43o4fslNLcktgtDMVaT5XwlzsDPzlqvqesRi4MjQz2x4/Sxm7zYg5LRYFol1BIhG6EwxKvSUq8HcC/KxJu3J0Q==",
+ "requires": {
+ "@algolia/requester-common": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
+ "@algolia/client-personalization": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.14.2.tgz",
+ "integrity": "sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==",
+ "requires": {
+ "@algolia/client-common": "4.14.2",
+ "@algolia/requester-common": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
+ "@algolia/client-search": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.14.2.tgz",
+ "integrity": "sha512-L5zScdOmcZ6NGiVbLKTvP02UbxZ0njd5Vq9nJAmPFtjffUSOGEp11BmD2oMJ5QvARgx2XbX4KzTTNS5ECYIMWw==",
+ "requires": {
+ "@algolia/client-common": "4.14.2",
+ "@algolia/requester-common": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
+ "@algolia/logger-common": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.14.2.tgz",
+ "integrity": "sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA=="
+ },
+ "@algolia/logger-console": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.14.2.tgz",
+ "integrity": "sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==",
+ "requires": {
+ "@algolia/logger-common": "4.14.2"
+ }
+ },
+ "@algolia/requester-browser-xhr": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.14.2.tgz",
+ "integrity": "sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw==",
+ "requires": {
+ "@algolia/requester-common": "4.14.2"
+ }
+ },
+ "@algolia/requester-common": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.14.2.tgz",
+ "integrity": "sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg=="
+ },
+ "@algolia/requester-node-http": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.14.2.tgz",
+ "integrity": "sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==",
+ "requires": {
+ "@algolia/requester-common": "4.14.2"
+ }
+ },
+ "@algolia/transporter": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.14.2.tgz",
+ "integrity": "sha512-t89dfQb2T9MFQHidjHcfhh6iGMNwvuKUvojAj+JsrHAGbuSy7yE4BylhLX6R0Q1xYRoC4Vvv+O5qIw/LdnQfsQ==",
+ "requires": {
+ "@algolia/cache-common": "4.14.2",
+ "@algolia/logger-common": "4.14.2",
+ "@algolia/requester-common": "4.14.2"
+ }
+ },
"@ampproject/remapping": {
"version": "2.2.0",
"requires": {
@@ -6807,12 +7396,32 @@
"vfile-message": "^3.0.0"
}
},
+ "@astrojs/preact": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@astrojs/preact/-/preact-1.1.1.tgz",
+ "integrity": "sha512-33YXVOBSRn0mzx7/Qlnw96CaBLMrwRZ9XLBWEox4738FXzWTyV0JcZ7iwNMCC7vw9pjjnCFouqKlK3xFdBFcxg==",
+ "requires": {
+ "@babel/core": ">=7.0.0-0 <8.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.17.12",
+ "babel-plugin-module-resolver": "^4.1.0",
+ "preact-render-to-string": "^5.2.0"
+ }
+ },
"@astrojs/prism": {
"version": "1.0.1",
"requires": {
"prismjs": "^1.28.0"
}
},
+ "@astrojs/react": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-1.1.4.tgz",
+ "integrity": "sha512-eTIXRjvyrDRkMewL5KrbhkF+zl+KSkCgL7k8/BBMXPTUrtOZZY5N5oZbjFtvjxBSQ/dhMWp9g+SwloDldN5ZDg==",
+ "requires": {
+ "@babel/core": ">=7.0.0-0 <8.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.17.12"
+ }
+ },
"@astrojs/telemetry": {
"version": "1.0.1",
"requires": {
@@ -7030,6 +7639,22 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@docsearch/css": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.2.1.tgz",
+ "integrity": "sha512-gaP6TxxwQC+K8D6TRx5WULUWKrcbzECOPA2KCVMuI+6C7dNiGUk5yXXzVhc5sld79XKYLnO9DRTI4mjXDYkh+g=="
+ },
+ "@docsearch/react": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.2.1.tgz",
+ "integrity": "sha512-EzTQ/y82s14IQC5XVestiK/kFFMe2aagoYFuTAIfIb/e+4FU7kSMKonRtLwsCiLQHmjvNQq+HO+33giJ5YVtaQ==",
+ "requires": {
+ "@algolia/autocomplete-core": "1.7.1",
+ "@algolia/autocomplete-preset-algolia": "1.7.1",
+ "@docsearch/css": "3.2.1",
+ "algoliasearch": "^4.0.0"
+ }
+ },
"@emmetio/abbreviation": {
"version": "2.2.3",
"requires": {
@@ -7273,8 +7898,7 @@
}
},
"@types/node": {
- "version": "18.8.2",
- "dev": true
+ "version": "18.8.2"
},
"@types/parse5": {
"version": "6.0.3"
@@ -7283,9 +7907,37 @@
"version": "2.7.1",
"dev": true
},
+ "@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ },
+ "@types/react": {
+ "version": "17.0.50",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.50.tgz",
+ "integrity": "sha512-ZCBHzpDb5skMnc1zFXAXnL3l1FAdi+xZvwxK+PkglMmBrwjpp9nKaWuEvrGnSifCJmBFGxZOOFuwC6KH/s0NuA==",
+ "requires": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "@types/react-dom": {
+ "version": "18.0.6",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz",
+ "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==",
+ "requires": {
+ "@types/react": "*"
+ }
+ },
"@types/resolve": {
"version": "1.20.2"
},
+ "@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
+ },
"@types/unist": {
"version": "2.0.6"
},
@@ -7408,6 +8060,27 @@
"uri-js": "^4.2.2"
}
},
+ "algoliasearch": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.14.2.tgz",
+ "integrity": "sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg==",
+ "requires": {
+ "@algolia/cache-browser-local-storage": "4.14.2",
+ "@algolia/cache-common": "4.14.2",
+ "@algolia/cache-in-memory": "4.14.2",
+ "@algolia/client-account": "4.14.2",
+ "@algolia/client-analytics": "4.14.2",
+ "@algolia/client-common": "4.14.2",
+ "@algolia/client-personalization": "4.14.2",
+ "@algolia/client-search": "4.14.2",
+ "@algolia/logger-common": "4.14.2",
+ "@algolia/logger-console": "4.14.2",
+ "@algolia/requester-browser-xhr": "4.14.2",
+ "@algolia/requester-common": "4.14.2",
+ "@algolia/requester-node-http": "4.14.2",
+ "@algolia/transporter": "4.14.2"
+ }
+ },
"ansi-align": {
"version": "3.0.1",
"requires": {
@@ -7577,12 +8250,23 @@
"astro": "^1.4.4"
}
},
+ "babel-plugin-module-resolver": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz",
+ "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==",
+ "requires": {
+ "find-babel-config": "^1.2.0",
+ "glob": "^7.1.6",
+ "pkg-up": "^3.1.0",
+ "reselect": "^4.0.0",
+ "resolve": "^1.13.1"
+ }
+ },
"bail": {
"version": "2.0.2"
},
"balanced-match": {
- "version": "1.0.2",
- "dev": true
+ "version": "1.0.2"
},
"base64-js": {
"version": "1.5.1"
@@ -7650,7 +8334,6 @@
},
"brace-expansion": {
"version": "1.1.11",
- "dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -7842,8 +8525,7 @@
"version": "1.0.1"
},
"concat-map": {
- "version": "0.0.1",
- "dev": true
+ "version": "0.0.1"
},
"convert-source-map": {
"version": "1.8.0",
@@ -7862,6 +8544,11 @@
"which": "^2.0.1"
}
},
+ "csstype": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
+ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
+ },
"data-uri-to-buffer": {
"version": "4.0.0"
},
@@ -7942,6 +8629,23 @@
"dlv": {
"version": "1.1.3"
},
+ "docs": {
+ "version": "file:docs",
+ "requires": {
+ "@algolia/client-search": "^4.13.1",
+ "@astrojs/preact": "^1.1.1",
+ "@astrojs/react": "^1.1.4",
+ "@docsearch/css": "^3.1.0",
+ "@docsearch/react": "^3.1.0",
+ "@types/node": "^18.0.0",
+ "@types/react": "^17.0.45",
+ "@types/react-dom": "^18.0.0",
+ "astro": "^1.4.4",
+ "preact": "^10.7.3",
+ "react": "^18.1.0",
+ "react-dom": "^18.1.0"
+ }
+ },
"doctrine": {
"version": "3.0.0",
"dev": true,
@@ -8324,6 +9028,27 @@
"to-regex-range": "^5.0.1"
}
},
+ "find-babel-config": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
+ "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==",
+ "requires": {
+ "json5": "^0.5.1",
+ "path-exists": "^3.0.0"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw=="
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="
+ }
+ }
+ },
"find-up": {
"version": "5.0.0",
"requires": {
@@ -8361,8 +9086,7 @@
}
},
"fs.realpath": {
- "version": "1.0.0",
- "dev": true
+ "version": "1.0.0"
},
"fsevents": {
"version": "2.3.2",
@@ -8398,7 +9122,6 @@
},
"glob": {
"version": "7.2.0",
- "dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -8631,7 +9354,6 @@
},
"inflight": {
"version": "1.0.6",
- "dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
@@ -8812,6 +9534,14 @@
"longest-streak": {
"version": "3.0.1"
},
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
"loupe": {
"version": "2.3.4",
"dev": true,
@@ -9302,7 +10032,6 @@
},
"minimatch": {
"version": "3.1.2",
- "dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -9493,7 +10222,6 @@
},
"once": {
"version": "1.4.0",
- "dev": true,
"requires": {
"wrappy": "1"
}
@@ -9601,8 +10329,7 @@
"version": "4.0.0"
},
"path-is-absolute": {
- "version": "1.0.1",
- "dev": true
+ "version": "1.0.1"
},
"path-key": {
"version": "3.1.1"
@@ -9663,6 +10390,54 @@
}
}
},
+ "pkg-up": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
+ "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+ "requires": {
+ "find-up": "^3.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="
+ }
+ }
+ },
"postcss": {
"version": "8.4.17",
"requires": {
@@ -9678,6 +10453,19 @@
"yaml": "^1.10.2"
}
},
+ "preact": {
+ "version": "10.11.1",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.1.tgz",
+ "integrity": "sha512-1Wz5PCRm6Fg+6BTXWJHhX4wRK9MZbZBHuwBqfZlOdVm2NqPe8/rjYpufvYCwJSGb9layyzB2jTTXfpCTynLqFQ=="
+ },
+ "preact-render-to-string": {
+ "version": "5.2.5",
+ "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-5.2.5.tgz",
+ "integrity": "sha512-rEBn42C3Wh+AjPxXUbDkb6xw0cTJQgxdYlp6ytUR1uBZF647Wn6ykkopMeQlRl7ggX+qnYYjZ4Hs1abZENl7ww==",
+ "requires": {
+ "pretty-format": "^3.8.0"
+ }
+ },
"preferred-pm": {
"version": "3.0.3",
"requires": {
@@ -9715,6 +10503,11 @@
}
}
},
+ "pretty-format": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz",
+ "integrity": "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew=="
+ },
"prismjs": {
"version": "1.29.0"
},
@@ -9747,6 +10540,23 @@
"safe-buffer": "^5.1.0"
}
},
+ "react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "requires": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "react-dom": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ }
+ },
"readable-stream": {
"version": "3.6.0",
"requires": {
@@ -9852,6 +10662,11 @@
"version": "2.1.1",
"dev": true
},
+ "reselect": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz",
+ "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ=="
+ },
"resolve": {
"version": "1.22.1",
"requires": {
@@ -9989,6 +10804,14 @@
"suf-log": "^2.5.3"
}
},
+ "scheduler": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "requires": {
+ "loose-envify": "^1.1.0"
+ }
+ },
"section-matter": {
"version": "1.0.0",
"requires": {
@@ -10522,8 +11345,7 @@
}
},
"wrappy": {
- "version": "1.0.2",
- "dev": true
+ "version": "1.0.2"
},
"y18n": {
"version": "5.0.8",
diff --git a/package.json b/package.json
index 5c8bb8a..0c6c325 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,7 @@
"workspaces": [
"demo",
"packages/astro-reactive-form",
- "packages/astro-reactive-validator"
+ "packages/astro-reactive-validator",
+ "docs"
]
}