diff --git a/README.md b/README.md index c33ea6f..7ee02b5 100644 --- a/README.md +++ b/README.md @@ -32,33 +32,54 @@ ```sh volt/ -├── package.json -├── tsconfig.json -├── vite.config.ts -├── README.md -├── src/ -│ ├── index.ts # entry point -│ ├── core/ -│ │ ├── signal.ts # reactive primitives -│ │ ├── dom.ts # DOM helpers -│ │ ├── patch.ts # JSON patch engine -│ │ ├── stream.ts # SSE / WebSocket layer -│ │ ├── plugin.ts # plugin registration API -│ │ └── binder.ts # mounts and binds data-volt-* attributes -│ └── plugins/ -│ ├── persist.ts -│ ├── scroll.ts -│ ├── animate.ts -│ └── url.ts -└── test/ - ├── setupTests.ts - ├── core/ - │ ├── signal.test.ts - │ ├── dom.test.ts - │ └── patch.test.ts - └── integration/ - ├── mount.test.ts - └── plugin.persist.test.ts +├── dev/ +├── docs/ +├── examples/ +├── lib +│ ├── index.html +│ ├── public +│ ├── src +│ │ ├── core +│ │ │ ├── asyncEffect.ts +│ │ │ ├── binder.ts +│ │ │ ├── charge.ts +│ │ │ ├── dom.ts +│ │ │ ├── evaluator.ts +│ │ │ ├── http.ts +│ │ │ ├── lifecycle.ts +│ │ │ ├── plugin.ts +│ │ │ ├── reactive.ts +│ │ │ ├── shared.ts +│ │ │ ├── signal.ts +│ │ │ ├── ssr.ts +│ │ │ └── tracker.ts +│ │ ├── debug +│ │ │ ├── graph.ts +│ │ │ ├── logger.ts +│ │ │ └── registry.ts +│ │ ├── debug.ts +│ │ ├── demo/ +│ │ ├── index.ts +│ │ ├── main.ts +│ │ ├── plugins +│ │ │ ├── persist.ts +│ │ │ ├── scroll.ts +│ │ │ └── url.ts +│ │ ├── styles +│ │ │ ├── index.css +│ │ │ ├── variables.css +│ │ │ ├── typography.css +│ │ │ ├── forms.css +│ │ │ ├── components.css +│ │ │ ├── collections.css +│ │ │ ├── media.css +│ │ │ └── base.css +│ │ └── types +│ │ ├── helpers.ts +│ │ └── volt.d.ts +│ └── test/ +└── README.md + ``` ## License diff --git a/docs/css/volt-css.md b/docs/css/volt-css.md index b974340..a8c41c6 100644 --- a/docs/css/volt-css.md +++ b/docs/css/volt-css.md @@ -92,7 +92,7 @@ Include the stylesheet in your HTML ``: - + My Document @@ -101,6 +101,12 @@ Include the stylesheet in your HTML ``: ``` +Or import in JavaScript/TypeScript: + +```js +import 'volt/styles'; +``` + ### Example Document Structure ```html @@ -180,9 +186,14 @@ Forms get styling with focus states, required field indicators, and spacing betw ### CSS Custom Properties -All design tokens are defined as CSS custom properties (CSS variables) in the `:root` selector. Override them to customize the appearance: +All design tokens are defined as CSS custom properties (CSS variables) in `variables.css`. +Override them in your own stylesheet to customize the appearance: ```css +/* Load Volt CSS first */ +@import 'volt.css'; + +/* Then override variables */ :root { /* Change the accent color */ --color-accent: #d63384; @@ -199,7 +210,9 @@ All design tokens are defined as CSS custom properties (CSS variables) in the `: } ``` -### Properties +See `variables.css` for the complete list of available tokens. + +### Available Properties **Typography**: diff --git a/lib/package.json b/lib/package.json index 6087856..f1c991b 100644 --- a/lib/package.json +++ b/lib/package.json @@ -5,8 +5,10 @@ "type": "module", "scripts": { "dev": "vite", - "build": "tsc && vite build", + "build": "pnpm build:lib && pnpm build:css", "build:lib": "tsc && vite build --mode lib", + "build:css": "postcss src/styles/index.css -o dist/volt.css", + "build:css:min": "postcss src/styles/index.css -o dist/volt.min.css --env production", "preview": "vite preview", "test": "vitest", "test:run": "vitest run", @@ -16,8 +18,12 @@ "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.9.1", "@vitest/coverage-v8": "3.2.4", + "cssnano": "^7.1.1", "dprint": "^0.50.2", "jsdom": "^27.0.0", + "postcss": "^8.5.6", + "postcss-cli": "^11.0.1", + "postcss-import": "^16.1.1", "vite": "npm:rolldown-vite@7.1.14" } } diff --git a/lib/postcss.config.js b/lib/postcss.config.js new file mode 100644 index 0000000..01604b9 --- /dev/null +++ b/lib/postcss.config.js @@ -0,0 +1 @@ +export default { plugins: { "postcss-import": {}, "cssnano": {} } }; diff --git a/lib/src/styles/base.css b/lib/src/styles/base.css index 5c692ba..ac9bc26 100644 --- a/lib/src/styles/base.css +++ b/lib/src/styles/base.css @@ -1,123 +1,6 @@ -/* - 8b d8 88 - `8b d8' 88 ,d - `8b d8' 88 88 - `8b d8' ,adPPYba, 88 MM88MMM ,adPPYba, ,adPPYba, ,adPPYba, - `8b d8' a8" "8a 88 88 a8" "" I8[ "" I8[ "" - `8b d8' 8b d8 88 88 8b `"Y8ba, `"Y8ba, - `888' "8a, ,a8" 88 88, 888 "8a, ,aa aa ]8I aa ]8I - `8' `"YbbdP"' 88 "Y888 888 `"Ybbd8"' `"YbbdP"' `"YbbdP"' -*/ - -/** - * Volt CSS - Classless stylesheet for elegant, readable web documents - * - * Design Philosophy: - * - Classless: Style semantic HTML5 elements directly - * - Dual theme: Automatic light/dark mode via prefers-color-scheme - * - Typography-first: Optimized for reading and information density - * - Accessible: WCAG AA contrast ratios, keyboard navigation support - * - Responsive: Mobile-first, adapts gracefully to all screen sizes - * - * Inspired by: magick.css, latex-css, sakura, matcha, mvp.css - */ - -@import url('https://fonts.googleapis.com/css2?family=Google+Sans+Code:ital,wght@0,300..800;1,300..800&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&display=swap'); - -/** - * Root-level CSS variables define the design system. - * - * Light theme is default, dark theme overrides via media query. - */ -:root { - /* Typography Scale - Modular scale based on 1.25 ratio */ - --font-size-base: 18px; - --font-size-sm: 0.889rem; - --font-size-lg: 1.125rem; - --font-size-xl: 1.266rem; - --font-size-2xl: 1.424rem; - --font-size-3xl: 1.802rem; - --font-size-4xl: 2.027rem; - --font-size-5xl: 2.566rem; - - --font-sans: "Inter", sans-serif; - --font-serif: "Libre Baskerville", serif; - --font-mono: "Google Sans Code", monospace; - - /* Spacing Scale - Based on 0.5rem increments */ - --space-xs: 0.25rem; - --space-sm: 0.5rem; - --space-md: 1rem; - --space-lg: 1.5rem; - --space-xl: 2rem; - --space-2xl: 3rem; - --space-3xl: 4rem; - - --line-height-tight: 1.25; - --line-height-base: 1.6; - --line-height-relaxed: 1.8; - - --content-width: 79ch; - /* Width of margin notes */ - --sidenote-width: 18rem; - /* Space between content and sidenotes */ - --sidenote-gap: 2rem; - - --color-bg: #fefefe; - /* For code blocks, tables */ - --color-bg-alt: #f5f5f5; - --color-text: #1a1a1a; - --color-text-muted: #666666; - /* Links, primary actions */ - --color-accent: #0066cc; - --color-accent-hover: #0052a3; - --color-border: #d4d4d4; - --color-code-bg: #f8f8f8; - /* Highlighted text */ - --color-mark: #fff3cd; - --color-success: #22863a; - --color-warning: #bf8700; - --color-error: #cb2431; - - --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); - --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07); - --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1); - - /* Border Radius */ - --radius-xs: 1px; - --radius-sm: 3px; - --radius-md: 6px; - --radius-lg: 8px; - - --transition-fast: 150ms ease-in-out; - --transition-base: 250ms ease-in-out; -} - -/** - * Dark Theme Overrides - * - * Automatically applied when user prefers dark color scheme - */ -@media (prefers-color-scheme: dark) { - :root { - --color-bg: #1a1a1a; - --color-bg-alt: #2a2a2a; - --color-text: #e6e6e6; - --color-text-muted: #a0a0a0; - --color-accent: #4da6ff; - --color-accent-hover: #66b3ff; - --color-border: #404040; - --color-code-bg: #2a2a2a; - --color-mark: #4a4a00; - --color-success: #34d058; - --color-warning: #ffdf5d; - --color-error: #f97583; - - --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3); - --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.4); - --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.5); - } -} +/* ========================================================================== */ +/* Base Rules & Reset */ +/* ========================================================================== */ *, *::before, *::after { box-sizing: border-box; @@ -157,182 +40,6 @@ body { padding: var(--space-2xl) var(--space-lg); } -/** - * Headings hierarchy - * - Uses modular scale for harmonious sizing - * - Tighter line-height for larger text improves readability - */ -h1, h2, h3, h4, h5, h6 { - font-weight: 700; - line-height: var(--line-height-tight); - color: var(--color-text); - margin-top: var(--space-2xl); - margin-bottom: var(--space-md); - letter-spacing: -0.02em; -} - -h1 { - font-size: var(--font-size-5xl); - margin-top: 0; -} - -h2 { - font-size: var(--font-size-4xl); -} - -h3 { - font-size: var(--font-size-3xl); -} - -h4 { - font-size: var(--font-size-2xl); -} - -h5 { - font-size: var(--font-size-xl); -} - -h6 { - font-size: var(--font-size-lg); - color: var(--color-text-muted); - text-transform: uppercase; - letter-spacing: 0.05em; -} - -/** - * Paragraph spacing - * - * Generous spacing between paragraphs aids scanning - */ -p { - margin-bottom: var(--space-lg); - max-width: var(--content-width); -} - -/** - * First paragraph after headings - No top margin - * - * Inspired by tufte.css - */ -h1 + p, h2 + p, h3 + p, h4 + p, h5 + p, h6 + p { - margin-top: 0; -} - -/** - * Links - * - * Uses accent color with underline for clarity - */ -a { - color: var(--color-accent); - text-decoration: underline; - text-decoration-thickness: 1px; - text-underline-offset: 2px; - transition: color var(--transition-fast); -} - -a:hover { - color: var(--color-accent-hover); -} - -a:focus-visible { - outline: 2px solid var(--color-accent); - outline-offset: 2px; - border-radius: var(--radius-sm); -} - -em { - font-style: italic; -} - -strong { - font-weight: 700; -} - -mark { - background-color: var(--color-mark); - padding: 0.1em 0.2em; - border-radius: var(--radius-sm); -} - -/** - * Subscript and superscript - * - * Prevents them from affecting line height - */ -sub, sup { - font-size: 0.75em; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/** - * Small text - * Also used for Tufte-style sidenotes (see sidenotes section) - */ -small { - font-size: var(--font-size-sm); - color: var(--color-text-muted); -} - -/** - * List spacing and indentation - * - * Nested lists inherit spacing - */ -ul, ol { - margin-bottom: var(--space-lg); - padding-left: var(--space-xl); - max-width: var(--content-width); -} - -/** - * List items - */ -li { - margin-bottom: var(--space-sm); -} - -li::marker { - color: var(--color-accent); -} - -/** - * Nested lists - Reduced spacing - */ -li > ul, li > ol { - margin-top: var(--space-sm); - margin-bottom: var(--space-sm); -} - -/** - * Description lists - For key-value pairs - */ -dl { - margin-bottom: var(--space-lg); - max-width: var(--content-width); -} - -dt { - font-weight: 700; - margin-top: var(--space-md); - margin-bottom: var(--space-xs); -} - -dd { - margin-left: var(--space-xl); - margin-bottom: var(--space-sm); - color: var(--color-text-muted); -} /** * Sidenotes using elements @@ -384,347 +91,6 @@ dd { } } -/** - * Blockquote styling - * Left border for visual distinction, italic for emphasis - */ -blockquote { - margin: var(--space-xl) 0; - padding: var(--space-md) var(--space-lg); - border-left: 4px solid var(--color-accent); - background-color: var(--color-bg-alt); - font-style: italic; - color: var(--color-text-muted); - max-width: var(--content-width); - border-radius: var(--radius-sm); -} - -blockquote p:last-child { - margin-bottom: 0; -} - -/** - * Citation element - */ -cite { - font-style: normal; - font-size: var(--font-size-sm); - color: var(--color-text-muted); -} - -blockquote cite::before { - /* em dash */ - content: "— "; -} - -/** - * Inline code - * - * Monospace font with subtle background - */ -code { - font-family: var(--font-mono); - font-size: 0.9em; - padding: 0.15em 0.4em; - color: var(--color-text); - background-color: var(--color-code-bg); - border: 1px solid var(--color-border); - border-radius: var(--radius-sm); -} - -/** - * Keyboard input - * - * Styled like keys on a keyboard - */ -kbd { - font-family: var(--font-mono); - font-size: 0.9em; - padding: 0.15em 0.4em; - background-color: var(--color-bg-alt); - border: 1px solid var(--color-border); - border-radius: var(--radius-sm); - box-shadow: 0 1px 0 var(--color-border), 0 0 0 2px var(--color-bg) inset; -} - -samp { - font-family: var(--font-mono); - font-size: 0.9em; -} - -var { - font-family: var(--font-mono); - font-style: normal; - font-weight: 600; -} - -/** - * Preformatted code blocks - * - * Horizontal scrolling for overflow, no word wrap - */ -pre { - margin: var(--space-xl) 0; - padding: var(--space-lg); - color: var(--color-text); - background-color: var(--color-code-bg); - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - overflow-x: auto; - max-width: var(--content-width); - line-height: var(--line-height-base); -} - -pre code { - padding: 0; - color: inherit; - background: none; - border: none; - font-size: 0.875rem; -} - - -hr { - margin: var(--space-3xl) auto; - border: none; - border-top: 1px solid var(--color-border); - max-width: 50%; -} - -table { - width: 100%; - max-width: var(--content-width); - margin: var(--space-xl) 0; - border-collapse: collapse; - overflow-x: auto; - display: block; -} - -thead { - background-color: var(--color-bg-alt); - border-bottom: 2px solid var(--color-border); -} - -th { - padding: var(--space-sm) var(--space-md); - text-align: left; - font-weight: 700; - color: var(--color-text); -} - -td { - padding: var(--space-sm) var(--space-md); - border-bottom: 1px solid var(--color-border); -} - -tbody tr:nth-child(even) { - background-color: var(--color-bg-alt); -} - -tbody tr:hover { - background-color: var(--color-border); - transition: background-color var(--transition-fast); -} - -form { - margin: var(--space-xl) 0; - max-width: var(--content-width); -} - -fieldset { - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - padding: var(--space-lg); - margin-bottom: var(--space-lg); -} - -legend { - font-weight: 700; - padding: 0 var(--space-sm); - color: var(--color-text); -} - -label { - display: block; - margin-bottom: var(--space-xs); - font-weight: 600; - color: var(--color-text); -} - -label:has(+ input[required])::after, -label:has(+ textarea[required])::after, -label:has(+ select[required])::after { - content: " *"; - color: var(--color-error); -} - -input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]), -select, -textarea { - width: 100%; - padding: var(--space-sm) var(--space-md); - font-family: inherit; - font-size: 1rem; - line-height: var(--line-height-base); - color: var(--color-text); - background-color: var(--color-bg); - border: 1px solid var(--color-border); - border-radius: var(--radius-sm); - transition: border-color var(--transition-fast), box-shadow var(--transition-fast); - margin-bottom: var(--space-md); -} - -input:focus, -select:focus, -textarea:focus { - outline: none; - border-color: var(--color-accent); - box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.1); -} - -input:disabled, -select:disabled, -textarea:disabled { - opacity: 0.6; - cursor: not-allowed; - background-color: var(--color-bg-alt); -} - -textarea { - resize: vertical; - min-height: 8rem; -} - -input[type="checkbox"], -input[type="radio"] { - margin-right: var(--space-xs); - accent-color: var(--color-accent); -} - -input[type="file"] { - padding: var(--space-sm); - border: 1px dashed var(--color-border); - border-radius: var(--radius-sm); - cursor: pointer; - margin-bottom: var(--space-md); -} - -input[type="range"] { - width: 100%; - margin: var(--space-md) 0; - accent-color: var(--color-accent); -} - -progress, meter { - width: 100%; - height: 1.5rem; - margin: var(--space-md) 0; - border-radius: var(--radius-sm); - overflow: hidden; -} - -button, -input[type="submit"], -input[type="button"], -input[type="reset"] { - display: inline-block; - padding: var(--space-sm) var(--space-lg); - font-family: inherit; - font-size: 1rem; - font-weight: 600; - line-height: 1; - color: white; - background-color: var(--color-accent); - border: none; - border-radius: var(--radius-md); - cursor: pointer; - text-decoration: none; - transition: background-color var(--transition-fast), transform var(--transition-fast); - margin-right: var(--space-sm); - margin-bottom: var(--space-sm); -} - -button:hover, -input[type="submit"]:hover, -input[type="button"]:hover { - background-color: var(--color-accent-hover); -} - -button:active, -input[type="submit"]:active, -input[type="button"]:active { - transform: translateY(1px); -} - -input[type="reset"] { - background-color: var(--color-bg-alt); - color: var(--color-text); - border: 1px solid var(--color-border); -} - -input[type="reset"]:hover { - background-color: var(--color-border); -} - -button:disabled, -input[type="submit"]:disabled, -input[type="button"]:disabled { - opacity: 0.6; - cursor: not-allowed; - transform: none; -} - -button:focus-visible, -input[type="submit"]:focus-visible, -input[type="button"]:focus-visible { - outline: 2px solid var(--color-accent); - outline-offset: 2px; -} - -/** - * Images are responsive by default, maintains aspect ratio - */ -img { - max-width: 100%; - height: auto; - display: block; - border-radius: var(--radius-sm); -} - -/** - * Figures with captions - * Common in academic and technical writing - */ -figure { - margin: var(--space-xl) 0; - max-width: var(--content-width); -} - -figcaption { - margin-top: var(--space-sm); - font-size: var(--font-size-sm); - color: var(--color-text-muted); - font-style: italic; - text-align: center; -} - -video, audio { - max-width: 100%; - margin: var(--space-xl) 0; -} - -canvas, svg { - max-width: 100%; - height: auto; -} - -iframe { - max-width: 100%; - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - margin: var(--space-xl) 0; -} - article, section { margin-bottom: var(--space-3xl); } @@ -768,37 +134,6 @@ nav li { margin: 0; } -/** - * Details and Summary - * - * Disclosure widget for expandable content - */ -details { - margin: var(--space-lg) 0; - padding: var(--space-md); - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - max-width: var(--content-width); -} - -summary { - font-weight: 700; - cursor: pointer; - user-select: none; - padding: var(--space-sm); - margin: calc(-1 * var(--space-sm)); - transition: background-color var(--transition-fast); -} - -summary:hover { - background-color: var(--color-bg-alt); -} - -details[open] summary { - margin-bottom: var(--space-md); - border-bottom: 1px solid var(--color-border); -} - /** * Screen reader only * @@ -903,3 +238,4 @@ details[open] summary { font-size: var(--font-size-sm); } } + diff --git a/lib/src/styles/collections.css b/lib/src/styles/collections.css new file mode 100644 index 0000000..b183a68 --- /dev/null +++ b/lib/src/styles/collections.css @@ -0,0 +1,85 @@ +/** + * List spacing and indentation + * + * Nested lists inherit spacing + */ +ul, ol { + margin-bottom: var(--space-lg); + padding-left: var(--space-xl); + max-width: var(--content-width); +} + +/** + * List items + */ +li { + margin-bottom: var(--space-sm); +} + +li::marker { + color: var(--color-accent); +} + +/** + * Nested lists - Reduced spacing + */ +li > ul, li > ol { + margin-top: var(--space-sm); + margin-bottom: var(--space-sm); +} + +/** + * Description lists - For key-value pairs + */ +dl { + margin-bottom: var(--space-lg); + max-width: var(--content-width); +} + +dt { + font-weight: 700; + margin-top: var(--space-md); + margin-bottom: var(--space-xs); +} + +dd { + margin-left: var(--space-xl); + margin-bottom: var(--space-sm); + color: var(--color-text-muted); +} + + +table { + width: 100%; + max-width: var(--content-width); + margin: var(--space-xl) 0; + border-collapse: collapse; + overflow-x: auto; + display: block; +} + +thead { + background-color: var(--color-bg-alt); + border-bottom: 2px solid var(--color-border); +} + +th { + padding: var(--space-sm) var(--space-md); + text-align: left; + font-weight: 700; + color: var(--color-text); +} + +td { + padding: var(--space-sm) var(--space-md); + border-bottom: 1px solid var(--color-border); +} + +tbody tr:nth-child(even) { + background-color: var(--color-bg-alt); +} + +tbody tr:hover { + background-color: var(--color-border); + transition: background-color var(--transition-fast); +} diff --git a/lib/src/styles/components.css b/lib/src/styles/components.css new file mode 100644 index 0000000..5007855 --- /dev/null +++ b/lib/src/styles/components.css @@ -0,0 +1,158 @@ +/* ========================================================================== */ +/* Components */ +/* ========================================================================== */ + +/** + * Dialog (Modal) + * + * Native element provides semantic modal functionality. + * Structure:
...
content
+ * Close buttons should use aria-label="Close" for targeting. + */ +dialog { + border: none; + padding: 0; + margin: auto; + max-width: min(90vw, 600px); + max-height: 90vh; + background-color: var(--color-bg); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-lg); + overflow: hidden; +} + +dialog::backdrop { + background-color: rgba(0, 0, 0, 0.5); + backdrop-filter: blur(4px); +} + +@media (prefers-color-scheme: dark) { + dialog::backdrop { + background-color: rgba(0, 0, 0, 0.7); + } +} + +dialog article { + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + max-height: 90vh; +} + +dialog header { + position: relative; + border-bottom: 1px solid var(--color-border); + padding: var(--space-lg); + margin: 0; +} + +dialog header h1, +dialog header h2, +dialog header h3, +dialog header h4, +dialog header h5, +dialog header h6 { + margin-top: 0; + margin-bottom: 0; + padding-right: var(--space-3xl); +} + +dialog header button[aria-label="Close"], +dialog header button[aria-label="close"] { + position: absolute; + top: var(--space-lg); + right: var(--space-lg); + background: none; + border: none; + font-size: 1.75rem; + line-height: 1; + padding: var(--space-xs); + margin: 0; + width: auto; + color: var(--color-text-muted); + cursor: pointer; + transition: color var(--transition-fast), transform var(--transition-fast); +} + +dialog header button[aria-label="Close"]:hover, +dialog header button[aria-label="close"]:hover { + color: var(--color-text); + background: none; + transform: scale(1.1); +} + +dialog article > :not(header):not(footer) { + padding: var(--space-lg); + overflow-y: auto; + flex: 1; +} + +dialog form { + margin: 0; + max-width: none; +} + +dialog footer { + border-top: 1px solid var(--color-border); + padding: var(--space-lg); + margin: 0; + display: flex; + gap: var(--space-md); + justify-content: flex-end; + flex-wrap: wrap; +} + +dialog footer button { + margin: 0; +} + +@media (max-width: 768px) { + dialog { + max-width: 95vw; + max-height: 95vh; + } + + dialog header, + dialog article > :not(header):not(footer), + dialog footer { + padding: var(--space-md); + } + + dialog header button[aria-label="Close"], + dialog header button[aria-label="close"] { + top: var(--space-md); + right: var(--space-md); + } +} + +/** + * Accordian + * + * implemented as details and summary + */ +details { + margin: var(--space-lg) 0; + padding: var(--space-md); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + max-width: var(--content-width); +} + +summary { + font-weight: 700; + cursor: pointer; + user-select: none; + padding: var(--space-sm); + margin: calc(-1 * var(--space-sm)); + transition: background-color var(--transition-fast); +} + +summary:hover { + background-color: var(--color-bg-alt); +} + +details[open] summary { + margin-bottom: var(--space-md); + border-bottom: 1px solid var(--color-border); +} diff --git a/lib/src/styles/forms.css b/lib/src/styles/forms.css new file mode 100644 index 0000000..1291186 --- /dev/null +++ b/lib/src/styles/forms.css @@ -0,0 +1,155 @@ + +form { + margin: var(--space-xl) 0; + max-width: var(--content-width); +} + +fieldset { + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + padding: var(--space-lg); + margin-bottom: var(--space-lg); +} + +legend { + font-weight: 700; + padding: 0 var(--space-sm); + color: var(--color-text); +} + +label { + display: block; + margin-bottom: var(--space-xs); + font-weight: 600; + color: var(--color-text); +} + +label:has(+ input[required])::after, +label:has(+ textarea[required])::after, +label:has(+ select[required])::after { + content: " *"; + color: var(--color-error); +} + +input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]), +select, +textarea { + width: 100%; + padding: var(--space-sm) var(--space-md); + font-family: inherit; + font-size: 1rem; + line-height: var(--line-height-base); + color: var(--color-text); + background-color: var(--color-bg); + border: 1px solid var(--color-border); + border-radius: var(--radius-sm); + transition: border-color var(--transition-fast), box-shadow var(--transition-fast); + margin-bottom: var(--space-md); +} + +input:focus, +select:focus, +textarea:focus { + outline: none; + border-color: var(--color-accent); + box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.1); +} + +input:disabled, +select:disabled, +textarea:disabled { + opacity: 0.6; + cursor: not-allowed; + background-color: var(--color-bg-alt); +} + +textarea { + resize: vertical; + min-height: 8rem; +} + +input[type="checkbox"], +input[type="radio"] { + margin-right: var(--space-xs); + accent-color: var(--color-accent); +} + +input[type="file"] { + padding: var(--space-sm); + border: 1px dashed var(--color-border); + border-radius: var(--radius-sm); + cursor: pointer; + margin-bottom: var(--space-md); +} + +input[type="range"] { + width: 100%; + margin: var(--space-md) 0; + accent-color: var(--color-accent); +} + +progress, meter { + width: 100%; + height: 1.5rem; + margin: var(--space-md) 0; + border-radius: var(--radius-sm); + overflow: hidden; +} + +button, +input[type="submit"], +input[type="button"], +input[type="reset"] { + display: inline-block; + padding: var(--space-sm) var(--space-lg); + font-family: inherit; + font-size: 1rem; + font-weight: 600; + line-height: 1; + color: white; + background-color: var(--color-accent); + border: none; + border-radius: var(--radius-md); + cursor: pointer; + text-decoration: none; + transition: background-color var(--transition-fast), transform var(--transition-fast); + margin-right: var(--space-sm); + margin-bottom: var(--space-sm); +} + +button:hover, +input[type="submit"]:hover, +input[type="button"]:hover { + background-color: var(--color-accent-hover); +} + +button:active, +input[type="submit"]:active, +input[type="button"]:active { + transform: translateY(1px); +} + +input[type="reset"] { + background-color: var(--color-bg-alt); + color: var(--color-text); + border: 1px solid var(--color-border); +} + +input[type="reset"]:hover { + background-color: var(--color-border); +} + +button:disabled, +input[type="submit"]:disabled, +input[type="button"]:disabled { + opacity: 0.6; + cursor: not-allowed; + transform: none; +} + +button:focus-visible, +input[type="submit"]:focus-visible, +input[type="button"]:focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: 2px; +} diff --git a/lib/src/styles/index.css b/lib/src/styles/index.css new file mode 100644 index 0000000..07c219c --- /dev/null +++ b/lib/src/styles/index.css @@ -0,0 +1,34 @@ +/* + 8b d8 88 + `8b d8' 88 ,d + `8b d8' 88 88 + `8b d8' ,adPPYba, 88 MM88MMM ,adPPYba, ,adPPYba, ,adPPYba, + `8b d8' a8" "8a 88 88 a8" "" I8[ "" I8[ "" + `8b d8' 8b d8 88 88 8b `"Y8ba, `"Y8ba, + `888' "8a, ,a8" 88 88, 888 "8a, ,aa aa ]8I aa ]8I + `8' `"YbbdP"' 88 "Y888 888 `"Ybbd8"' `"YbbdP"' `"YbbdP"' +*/ + +/** + * Volt CSS - Classless stylesheet for elegant, readable web documents + * + * Design Philosophy: + * - Classless: Style semantic HTML5 elements directly + * - Dual theme: Automatic light/dark mode via prefers-color-scheme + * - Typography-first: Optimized for reading and information density + * - Accessible: WCAG AA contrast ratios, keyboard navigation support + * - Responsive: Mobile-first, adapts gracefully to all screen sizes + * + * Inspired by: magick.css, latex-css, sakura, matcha, mvp.css + */ + +@import url('https://fonts.googleapis.com/css2?family=Google+Sans+Code:ital,wght@0,300..800;1,300..800&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&display=swap'); + +/* Design system tokens */ +@import './variables.css'; +@import './base.css'; +@import './typography.css'; +@import './forms.css'; +@import './components.css'; +@import './collections.css'; +@import './media.css'; diff --git a/lib/src/styles/media.css b/lib/src/styles/media.css new file mode 100644 index 0000000..b90cbbd --- /dev/null +++ b/lib/src/styles/media.css @@ -0,0 +1,43 @@ +/** + * Images are responsive by default, maintains aspect ratio + */ +img { + max-width: 100%; + height: auto; + display: block; + border-radius: var(--radius-sm); +} + +/** + * Figures with captions + * Common in academic and technical writing + */ +figure { + margin: var(--space-xl) 0; + max-width: var(--content-width); +} + +figcaption { + margin-top: var(--space-sm); + font-size: var(--font-size-sm); + color: var(--color-text-muted); + font-style: italic; + text-align: center; +} + +video, audio { + max-width: 100%; + margin: var(--space-xl) 0; +} + +canvas, svg { + max-width: 100%; + height: auto; +} + +iframe { + max-width: 100%; + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + margin: var(--space-xl) 0; +} diff --git a/lib/src/styles/typography.css b/lib/src/styles/typography.css new file mode 100644 index 0000000..61e66bb --- /dev/null +++ b/lib/src/styles/typography.css @@ -0,0 +1,233 @@ +/* ========================================================================== */ +/* Typography & Inline Elements */ +/* ========================================================================== */ + +/** + * Headings hierarchy + * - Uses modular scale for harmonious sizing + * - Tighter line-height for larger text improves readability + */ +h1, h2, h3, h4, h5, h6 { + font-weight: 700; + line-height: var(--line-height-tight); + color: var(--color-text); + margin-top: var(--space-2xl); + margin-bottom: var(--space-md); + letter-spacing: -0.02em; +} + +h1 { + font-size: var(--font-size-5xl); + margin-top: 0; +} + +h2 { + font-size: var(--font-size-4xl); +} + +h3 { + font-size: var(--font-size-3xl); +} + +h4 { + font-size: var(--font-size-2xl); +} + +h5 { + font-size: var(--font-size-xl); +} + +h6 { + font-size: var(--font-size-lg); + color: var(--color-text-muted); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +p { + margin-bottom: var(--space-lg); + max-width: var(--content-width); +} + +/** + * First paragraph after headings - No top margin + * + * Inspired by tufte.css + */ +h1 + p, h2 + p, h3 + p, h4 + p, h5 + p, h6 + p { + margin-top: 0; +} + +/** + * Links + * + * Uses accent color with underline + */ +a { + color: var(--color-accent); + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 2px; + transition: color var(--transition-fast); +} + +a:hover { + color: var(--color-accent-hover); +} + +a:focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: 2px; + border-radius: var(--radius-sm); +} + +em { + font-style: italic; +} + +strong { + font-weight: 700; +} + +mark { + background-color: var(--color-mark); + padding: 0.1em 0.2em; + border-radius: var(--radius-sm); +} + +/** + * Subscript and superscript + * + * Prevents them from affecting line height + */ +sub, sup { + font-size: 0.75em; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/** + * Small text + * Also used for Tufte-style sidenotes (see sidenotes section) + */ +small { + font-size: var(--font-size-sm); + color: var(--color-text-muted); +} + +/** + * Blockquote styling + * Left border for visual distinction, italic for emphasis + */ +blockquote { + margin: var(--space-xl) 0; + padding: var(--space-md) var(--space-lg); + border-left: 4px solid var(--color-accent); + background-color: var(--color-bg-alt); + font-style: italic; + color: var(--color-text-muted); + max-width: var(--content-width); + border-radius: var(--radius-sm); +} + +blockquote p:last-child { + margin-bottom: 0; +} + +/** + * Citation element + */ +cite { + font-style: normal; + font-size: var(--font-size-sm); + color: var(--color-text-muted); +} + +blockquote cite::before { + /* em dash */ + content: "— "; +} + + +/** + * Inline code + * + * Monospace font with subtle background + */ +code { + font-family: var(--font-mono); + font-size: 0.9em; + padding: 0.15em 0.4em; + color: var(--color-text); + background-color: var(--color-code-bg); + border: 1px solid var(--color-border); + border-radius: var(--radius-sm); +} + +/** + * Keyboard input + * + * Styled like keys on a keyboard + */ +kbd { + font-family: var(--font-mono); + font-size: 0.9em; + padding: 0.15em 0.4em; + background-color: var(--color-bg-alt); + border: 1px solid var(--color-border); + border-radius: var(--radius-sm); + box-shadow: 0 1px 0 var(--color-border), 0 0 0 2px var(--color-bg) inset; +} + +samp { + font-family: var(--font-mono); + font-size: 0.9em; +} + +var { + font-family: var(--font-mono); + font-style: normal; + font-weight: 600; +} + +/** + * Preformatted code blocks + * + * Horizontal scrolling for overflow, no word wrap + */ +pre { + margin: var(--space-xl) 0; + padding: var(--space-lg); + color: var(--color-text); + background-color: var(--color-code-bg); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + overflow-x: auto; + max-width: var(--content-width); + line-height: var(--line-height-base); +} + +pre code { + padding: 0; + color: inherit; + background: none; + border: none; + font-size: 0.875rem; +} + + +hr { + margin: var(--space-3xl) auto; + border: none; + border-top: 1px solid var(--color-border); + max-width: 50%; +} diff --git a/lib/src/styles/variables.css b/lib/src/styles/variables.css new file mode 100644 index 0000000..98c3974 --- /dev/null +++ b/lib/src/styles/variables.css @@ -0,0 +1,96 @@ +/** + * Volt CSS Variables + * + * Design system tokens for the Volt CSS framework. + * Light theme is default, dark theme overrides via media query. + */ + +:root { + /* Typography Scale - Modular scale based on 1.25 ratio */ + --font-size-base: 18px; + --font-size-sm: 0.889rem; + --font-size-lg: 1.125rem; + --font-size-xl: 1.266rem; + --font-size-2xl: 1.424rem; + --font-size-3xl: 1.802rem; + --font-size-4xl: 2.027rem; + --font-size-5xl: 2.566rem; + + --font-sans: "Inter", sans-serif; + --font-serif: "Libre Baskerville", serif; + --font-mono: "Google Sans Code", monospace; + + /* Spacing Scale - Based on 0.5rem increments */ + --space-xs: 0.25rem; + --space-sm: 0.5rem; + --space-md: 1rem; + --space-lg: 1.5rem; + --space-xl: 2rem; + --space-2xl: 3rem; + --space-3xl: 4rem; + + --line-height-tight: 1.25; + --line-height-base: 1.6; + --line-height-relaxed: 1.8; + + --content-width: 79ch; + /* Width of margin notes */ + --sidenote-width: 18rem; + /* Space between content and sidenotes */ + --sidenote-gap: 2rem; + + --color-bg: #fefefe; + /* For code blocks, tables */ + --color-bg-alt: #f5f5f5; + --color-text: #1a1a1a; + --color-text-muted: #666666; + /* Links, primary actions */ + --color-accent: #0066cc; + --color-accent-hover: #0052a3; + --color-border: #d4d4d4; + --color-code-bg: #f8f8f8; + /* Highlighted text */ + --color-mark: #fff3cd; + --color-success: #22863a; + --color-warning: #bf8700; + --color-error: #cb2431; + + --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); + --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07); + --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1); + + /* Border Radius */ + --radius-xs: 1px; + --radius-sm: 3px; + --radius-md: 6px; + --radius-lg: 8px; + + --transition-fast: 150ms ease-in-out; + --transition-base: 250ms ease-in-out; +} + +/** + * Dark Theme Overrides + * + * Automatically applied when user prefers dark color scheme + */ +@media (prefers-color-scheme: dark) { + :root { + --color-bg: #1a1a1a; + --color-bg-alt: #2a2a2a; + --color-text: #e6e6e6; + --color-text-muted: #a0a0a0; + --color-accent: #4da6ff; + --color-accent-hover: #66b3ff; + --color-border: #404040; + --color-code-bg: #2a2a2a; + --color-mark: #4a4a00; + --color-success: #34d058; + --color-warning: #ffdf5d; + --color-error: #f97583; + + --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3); + --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.4); + --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.5); + } +} diff --git a/lib/tsconfig.json b/lib/tsconfig.json index f516945..c4d48cf 100644 --- a/lib/tsconfig.json +++ b/lib/tsconfig.json @@ -29,5 +29,5 @@ "$volt": ["./src/index.ts"] } }, - "include": ["src", "test", "eslint.config.js", "vite.config.ts"] + "include": ["src", "test", "eslint.config.js", "vite.config.ts", "postcss.config.js"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 443feba..df35322 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,7 +37,7 @@ importers: version: 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0)(terser@5.44.0)(yaml@2.8.1) dev: dependencies: @@ -81,12 +81,24 @@ importers: '@vitest/coverage-v8': specifier: 3.2.4 version: 3.2.4(vitest@3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(terser@5.44.0)(yaml@2.8.1)) + cssnano: + specifier: ^7.1.1 + version: 7.1.1(postcss@8.5.6) dprint: specifier: ^0.50.2 version: 0.50.2 jsdom: specifier: ^27.0.0 version: 27.0.0(postcss@8.5.6) + postcss: + specifier: ^8.5.6 + version: 8.5.6 + postcss-cli: + specifier: ^11.0.1 + version: 11.0.1(jiti@2.6.1)(postcss@8.5.6) + postcss-import: + specifier: ^16.1.1 + version: 16.1.1(postcss@8.5.6) vite: specifier: npm:rolldown-vite@7.1.14 version: rolldown-vite@7.1.14(@types/node@24.8.1)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) @@ -452,8 +464,8 @@ packages: '@oxc-project/types@0.93.0': resolution: {integrity: sha512-yNtwmWZIBtJsMr5TEfoZFDxIWV6OdScOpza/f5YxbqUMJk+j6QX3Cf3jgZShGEFYWQJ5j9mJ6jM0tZHu2J9Yrg==} - '@oxc-project/types@0.94.0': - resolution: {integrity: sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==} + '@oxc-project/types@0.95.0': + resolution: {integrity: sha512-vACy7vhpMPhjEJhULNxrdR0D943TkA/MigMpJCHmBHvMXxRStRi/dPtTlfQ3uDwWSzRpT8z+7ImjZVf8JWBocQ==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -468,8 +480,8 @@ packages: cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.0.0-beta.43': - resolution: {integrity: sha512-TP8bcPOb1s6UmY5syhXrDn9k0XkYcw+XaoylTN4cJxf0JOVS2j682I3aTcpfT51hOFGr2bRwNKN9RZ19XxeQbA==} + '@rolldown/binding-android-arm64@1.0.0-beta.44': + resolution: {integrity: sha512-g9ejDOehJFhxC1DIXQuZQ9bKv4lRDioOTL42cJjFjqKPl1L7DVb9QQQE1FxokGEIMr6FezLipxwnzOXWe7DNPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -480,8 +492,8 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.0-beta.43': - resolution: {integrity: sha512-kuVWnZsE4vEjMF/10SbSUyzucIW2zmdsqFghYMqy+fsjXnRHg0luTU6qWF8IqJf4Cbpm9NEZRnjIEPpAbdiSNQ==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.44': + resolution: {integrity: sha512-PxAW1PXLPmCzfhfKIS53kwpjLGTUdIfX4Ht+l9mj05C3lYCGaGowcNsYi2rdxWH24vSTmeK+ajDNRmmmrK0M7g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -492,8 +504,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.43': - resolution: {integrity: sha512-u9Ps4sh6lcmJ3vgLtyEg/x4jlhI64U0mM93Ew+tlfFdLDe7yKyA+Fe80cpr2n1mNCeZXrvTSbZluKpXQ0GxLjw==} + '@rolldown/binding-darwin-x64@1.0.0-beta.44': + resolution: {integrity: sha512-/CtQqs1oO9uSb5Ju60rZvsdjE7Pzn8EK2ISAdl2jedjMzeD/4neNyCbwyJOAPzU+GIQTZVyrFZJX+t7HXR1R/g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -504,8 +516,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.0-beta.43': - resolution: {integrity: sha512-h9lUtVtXgfbk/tnicMpbFfZ3DJvk5Zn2IvmlC1/e0+nUfwoc/TFqpfrRRqcNBXk/e+xiWMSKv6b0MF8N+Rtvlg==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.44': + resolution: {integrity: sha512-V5Q5W9c4+2GJ4QabmjmVV6alY97zhC/MZBaLkDtHwGy3qwzbM4DYgXUbun/0a8AH5hGhuU27tUIlYz6ZBlvgOA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -516,8 +528,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.43': - resolution: {integrity: sha512-IX2C6bA6wM2rX/RvD75ko+ix9yxPKjKGGq7pOhB8wGI4Z4fqX5B1nDHga/qMDmAdCAR1m9ymzxkmqhm/AFYf7A==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.44': + resolution: {integrity: sha512-X6adjkHeFqKsTU0FXdNN9HY4LDozPqIfHcnXovE5RkYLWIjMWuc489mIZ6iyhrMbCqMUla9IOsh5dvXSGT9o9A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -528,8 +540,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.43': - resolution: {integrity: sha512-mcjd57vEj+CEQbZAzUiaxNzNgwwgOpFtZBWcINm8DNscvkXl5b/s622Z1dqGNWSdrZmdjdC6LWMvu8iHM6v9sQ==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.44': + resolution: {integrity: sha512-kRRKGZI4DXWa6ANFr3dLA85aSVkwPdgXaRjfanwY84tfc3LncDiIjyWCb042e3ckPzYhHSZ3LmisO+cdOIYL6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -540,8 +552,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.43': - resolution: {integrity: sha512-Pa8QMwlkrztTo/1mVjZmPIQ44tCSci10TBqxzVBvXVA5CFh5EpiEi99fPSll2dHG2uT4dCOMeC6fIhyDdb0zXA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.44': + resolution: {integrity: sha512-hMtiN9xX1NhxXBa2U3Up4XkVcsVp2h73yYtMDY59z9CDLEZLrik9RVLhBL5QtoX4zZKJ8HZKJtWuGYvtmkCbIQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -552,8 +564,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.43': - resolution: {integrity: sha512-BgynXKMjeaX4AfWLARhOKDetBOOghnSiVRjAHVvhiAaDXgdQN8e65mSmXRiVoVtD3cHXx/cfU8Gw0p0K+qYKVQ==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.44': + resolution: {integrity: sha512-rd1LzbpXQuR8MTG43JB9VyXDjG7ogSJbIkBpZEHJ8oMKzL6j47kQT5BpIXrg3b5UVygW9QCI2fpFdMocT5Kudg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -564,8 +576,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.43': - resolution: {integrity: sha512-VIsoPlOB/tDSAw9CySckBYysoIBqLeps1/umNSYUD8pMtalJyzMTneAVI1HrUdf4ceFmQ5vARoLIXSsPwVFxNg==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.44': + resolution: {integrity: sha512-qI2IiPqmPRW25exXkuQr3TlweCDc05YvvbSDRPCuPsWkwb70dTiSoXn8iFxT4PWqTi71wWHg1Wyta9PlVhX5VA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -576,8 +588,8 @@ packages: cpu: [arm64] os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.43': - resolution: {integrity: sha512-YDXTxVJG67PqTQMKyjVJSddoPbSWJ4yRz/E3xzTLHqNrTDGY0UuhG8EMr8zsYnfH/0cPFJ3wjQd/hJWHuR6nkA==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.44': + resolution: {integrity: sha512-+vHvEc1pL5iJRFlldLC8mjm6P4Qciyfh2bh5ZI6yxDQKbYhCHRKNURaKz1mFcwxhVL5YMYsLyaqM3qizVif9MQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -587,8 +599,8 @@ packages: engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': - resolution: {integrity: sha512-3M+2DmorXvDuAIGYQ9Z93Oy1G9ETkejLwdXXb1uRTgKN9pMcu7N+KG2zDrJwqyxeeLIFE22AZGtSJm3PJbNu9Q==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.44': + resolution: {integrity: sha512-XSgLxRrtFj6RpTeMYmmQDAwHjKseYGKUn5LPiIdW4Cq+f5SBSStL2ToBDxkbdxKPEbCZptnLPQ/nfKcAxrC8Xg==} engines: {node: '>=14.0.0'} cpu: [wasm32] @@ -598,8 +610,8 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': - resolution: {integrity: sha512-/B1j1pJs33y9ywtslOMxryUPHq8zIGu/OGEc2gyed0slimJ8fX2uR/SaJVhB4+NEgCFIeYDR4CX6jynAkeRuCA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.44': + resolution: {integrity: sha512-cF1LJdDIX02cJrFrX3wwQ6IzFM7I74BYeKFkzdcIA4QZ0+2WA7/NsKIgjvrunupepWb1Y6PFWdRlHSaz5AW1Wg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -610,8 +622,8 @@ packages: cpu: [ia32] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.43': - resolution: {integrity: sha512-29oG1swCz7hNP+CQYrsM4EtylsKwuYzM8ljqbqC5TsQwmKat7P8ouDpImsqg/GZxFSXcPP9ezQm0Q0wQwGM3JA==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.44': + resolution: {integrity: sha512-5uaJonDafhHiMn+iEh7qUp3QQ4Gihv3lEOxKfN8Vwadpy0e+5o28DWI42DpJ9YBYMrVy4JOWJ/3etB/sptpUwA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] @@ -622,8 +634,8 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.43': - resolution: {integrity: sha512-eWBV1Ef3gfGNehxVGCyXs7wLayRIgCmyItuCZwYYXW5bsk4EvR4n2GP5m3ohjnx7wdiY3nLmwQfH2Knb5gbNZw==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.44': + resolution: {integrity: sha512-vsqhWAFJkkmgfBN/lkLCWTXF1PuPhMjfnAyru48KvF7mVh2+K7WkKYHezF3Fjz4X/mPScOcIv+g6cf6wnI6eWg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -631,8 +643,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.41': resolution: {integrity: sha512-ycMEPrS3StOIeb87BT3/+bu+blEtyvwQ4zmo2IcJQy0Rd1DAAhKksA0iUZ3MYSpJtjlPhg0Eo6mvVS6ggPhRbw==} - '@rolldown/pluginutils@1.0.0-beta.43': - resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==} + '@rolldown/pluginutils@1.0.0-beta.44': + resolution: {integrity: sha512-g6eW7Zwnr2c5RADIoqziHoVs6b3W5QTQ4+qbpfjbkMJ9x+8Og211VW/oot2dj9dVwaK/UyC6Yo+02gV+wWQVNg==} '@shikijs/core@2.5.0': resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} @@ -774,7 +786,7 @@ packages: resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: ^5.0.0 || ^6.0.0 + vite: npm:rolldown-vite@7.1.14 vue: ^3.2.25 '@vitest/coverage-v8@3.2.4': @@ -793,7 +805,7 @@ packages: resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + vite: npm:rolldown-vite@7.1.14 peerDependenciesMeta: msw: optional: true @@ -948,6 +960,10 @@ packages: resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -982,9 +998,16 @@ packages: bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + birpc@2.6.1: resolution: {integrity: sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -1028,6 +1051,9 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + caniuse-lite@1.0.30001751: resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} @@ -1059,6 +1085,10 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -1074,6 +1104,10 @@ packages: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1081,9 +1115,16 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + commander@14.0.1: resolution: {integrity: sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==} engines: {node: '>=20'} @@ -1112,13 +1153,57 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + css-declaration-sorter@7.3.0: + resolution: {integrity: sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + css-tree@3.1.0: resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-default@7.0.9: + resolution: {integrity: sha512-tCD6AAFgYBOVpMBX41KjbvRh9c2uUjLXRyV7KHSIrwHiq5Z9o0TFfUCoM3TwVrRsRteN3sVXGNvjVNxYzkpTsA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + cssnano-utils@5.0.1: + resolution: {integrity: sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + cssnano@7.1.1: + resolution: {integrity: sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + cssstyle@5.3.1: resolution: {integrity: sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==} engines: {node: '>=20'} @@ -1152,6 +1237,10 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + dependency-graph@1.0.0: + resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} + engines: {node: '>=4'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -1176,6 +1265,19 @@ packages: dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dotenv@17.2.3: resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} engines: {node: '>=12'} @@ -1351,11 +1453,22 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} + fs-extra@11.3.2: + resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} + engines: {node: '>=14.14'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-tsconfig@4.12.0: resolution: {integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==} @@ -1383,6 +1496,9 @@ packages: resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} engines: {node: '>=18'} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -1390,6 +1506,10 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} @@ -1445,10 +1565,18 @@ packages: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-builtin-module@5.0.0: resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} engines: {node: '>=18.20'} + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1539,6 +1667,9 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -1616,13 +1747,23 @@ packages: resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} engines: {node: '>= 12.0.0'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} @@ -1653,6 +1794,9 @@ packages: mdast-util-to-hast@13.2.0: resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} @@ -1717,6 +1861,13 @@ packages: node-releases@2.0.25: resolution: {integrity: sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nypm@0.6.2: resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==} engines: {node: ^14.16.0 || >=16.10.0} @@ -1761,6 +1912,9 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -1789,6 +1943,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} @@ -1796,6 +1954,209 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} + postcss-calc@10.1.1: + resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} + engines: {node: ^18.12 || ^20.9 || >=22.0} + peerDependencies: + postcss: ^8.4.38 + + postcss-cli@11.0.1: + resolution: {integrity: sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + postcss: ^8.0.0 + + postcss-colormin@7.0.4: + resolution: {integrity: sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-convert-values@7.0.7: + resolution: {integrity: sha512-HR9DZLN04Xbe6xugRH6lS4ZQH2zm/bFh/ZyRkpedZozhvh+awAfbA0P36InO4fZfDhvYfNJeNvlTf1sjwGbw/A==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-comments@7.0.4: + resolution: {integrity: sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-duplicates@7.0.2: + resolution: {integrity: sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-empty@7.0.1: + resolution: {integrity: sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-overridden@7.0.1: + resolution: {integrity: sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-import@16.1.1: + resolution: {integrity: sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-load-config@5.1.0: + resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + + postcss-merge-longhand@7.0.5: + resolution: {integrity: sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-merge-rules@7.0.6: + resolution: {integrity: sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-font-values@7.0.1: + resolution: {integrity: sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-gradients@7.0.1: + resolution: {integrity: sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-params@7.0.4: + resolution: {integrity: sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-selectors@7.0.5: + resolution: {integrity: sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-charset@7.0.1: + resolution: {integrity: sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-display-values@7.0.1: + resolution: {integrity: sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-positions@7.0.1: + resolution: {integrity: sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-repeat-style@7.0.1: + resolution: {integrity: sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-string@7.0.1: + resolution: {integrity: sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-timing-functions@7.0.1: + resolution: {integrity: sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-unicode@7.0.4: + resolution: {integrity: sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-url@7.0.1: + resolution: {integrity: sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-whitespace@7.0.1: + resolution: {integrity: sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-ordered-values@7.0.2: + resolution: {integrity: sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-reduce-initial@7.0.4: + resolution: {integrity: sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-reduce-transforms@7.0.1: + resolution: {integrity: sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-reporter@7.1.0: + resolution: {integrity: sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==} + engines: {node: '>=10'} + peerDependencies: + postcss: ^8.1.0 + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-svgo@7.1.0: + resolution: {integrity: sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w==} + engines: {node: ^18.12.0 || ^20.9.0 || >= 18} + peerDependencies: + postcss: ^8.4.32 + + postcss-unique-selectors@7.0.4: + resolution: {integrity: sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -1811,6 +2172,10 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-hrtime@1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} @@ -1830,6 +2195,13 @@ packages: react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} @@ -1855,6 +2227,10 @@ packages: resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -1866,6 +2242,11 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -1937,8 +2318,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rolldown@1.0.0-beta.43: - resolution: {integrity: sha512-6RcqyRx0tY1MlRLnjXPp/849Rl/CPFhzpGGwNPEPjKwqBMqPq/Rbbkxasa8s0x+IkUk46ty4jazb5skZ/Vgdhw==} + rolldown@1.0.0-beta.44: + resolution: {integrity: sha512-gcqgyCi3g93Fhr49PKvymE8PoaGS0sf6ajQrsYaQ8o5de6aUEbD6rJZiJbhOfpcqOnycgsAsUNPYri1h25NgsQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -1951,6 +2332,9 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -1981,6 +2365,10 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -2039,6 +2427,12 @@ packages: strip-literal@3.1.0: resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + stylehacks@7.0.6: + resolution: {integrity: sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + superjson@2.2.2: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} @@ -2047,6 +2441,15 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svgo@4.0.0: + resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} + engines: {node: '>=16'} + hasBin: true + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -2062,6 +2465,9 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} + thenby@1.3.4: + resolution: {integrity: sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -2181,6 +2587,10 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -2190,6 +2600,9 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + vfile-message@4.0.3: resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} @@ -2310,11 +2723,23 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yaml@2.8.1: resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} engines: {node: '>= 14.6'} hasBin: true + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -2714,7 +3139,7 @@ snapshots: '@oxc-project/types@0.93.0': {} - '@oxc-project/types@0.94.0': {} + '@oxc-project/types@0.95.0': {} '@pkgjs/parseargs@0.11.0': optional: true @@ -2726,61 +3151,61 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-beta.41': optional: true - '@rolldown/binding-android-arm64@1.0.0-beta.43': + '@rolldown/binding-android-arm64@1.0.0-beta.44': optional: true '@rolldown/binding-darwin-arm64@1.0.0-beta.41': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.43': + '@rolldown/binding-darwin-arm64@1.0.0-beta.44': optional: true '@rolldown/binding-darwin-x64@1.0.0-beta.41': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.43': + '@rolldown/binding-darwin-x64@1.0.0-beta.44': optional: true '@rolldown/binding-freebsd-x64@1.0.0-beta.41': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.43': + '@rolldown/binding-freebsd-x64@1.0.0-beta.44': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.41': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.43': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.44': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.41': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.43': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.44': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-beta.41': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.43': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.44': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-beta.41': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.43': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.44': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-beta.41': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.43': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.44': optional: true '@rolldown/binding-openharmony-arm64@1.0.0-beta.41': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.43': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.44': optional: true '@rolldown/binding-wasm32-wasi@1.0.0-beta.41': @@ -2788,7 +3213,7 @@ snapshots: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.44': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true @@ -2796,24 +3221,24 @@ snapshots: '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.41': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.44': optional: true '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.41': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.43': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.44': optional: true '@rolldown/binding-win32-x64-msvc@1.0.0-beta.41': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.43': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.44': optional: true '@rolldown/pluginutils@1.0.0-beta.41': {} - '@rolldown/pluginutils@1.0.0-beta.43': {} + '@rolldown/pluginutils@1.0.0-beta.44': {} '@shikijs/core@2.5.0': dependencies: @@ -3032,7 +3457,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(terser@5.44.0)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0)(terser@5.44.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -3224,6 +3649,11 @@ snapshots: ansis@4.2.0: {} + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + argparse@2.0.1: {} args-tokenizer@0.3.0: {} @@ -3255,8 +3685,12 @@ snapshots: dependencies: require-from-string: 2.0.2 + binary-extensions@2.3.0: {} + birpc@2.6.1: {} + boolbase@1.0.0: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -3319,6 +3753,13 @@ snapshots: callsites@3.1.0: {} + caniuse-api@3.0.0: + dependencies: + browserslist: 4.26.3 + caniuse-lite: 1.0.30001751 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + caniuse-lite@1.0.30001751: {} ccount@2.0.1: {} @@ -3346,6 +3787,18 @@ snapshots: check-error@2.1.1: {} + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + chokidar@4.0.3: dependencies: readdirp: 4.1.2 @@ -3360,14 +3813,24 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + color-convert@2.0.1: dependencies: color-name: 1.1.4 color-name@1.1.4: {} + colord@2.9.3: {} + comma-separated-tokens@2.0.3: {} + commander@11.1.0: {} + commander@14.0.1: {} commander@2.20.3: {} @@ -3392,13 +3855,82 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + css-declaration-sorter@7.3.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + css-tree@3.1.0: dependencies: mdn-data: 2.12.2 source-map-js: 1.2.1 + css-what@6.2.2: {} + css.escape@1.5.1: {} + cssesc@3.0.0: {} + + cssnano-preset-default@7.0.9(postcss@8.5.6): + dependencies: + browserslist: 4.26.3 + css-declaration-sorter: 7.3.0(postcss@8.5.6) + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-calc: 10.1.1(postcss@8.5.6) + postcss-colormin: 7.0.4(postcss@8.5.6) + postcss-convert-values: 7.0.7(postcss@8.5.6) + postcss-discard-comments: 7.0.4(postcss@8.5.6) + postcss-discard-duplicates: 7.0.2(postcss@8.5.6) + postcss-discard-empty: 7.0.1(postcss@8.5.6) + postcss-discard-overridden: 7.0.1(postcss@8.5.6) + postcss-merge-longhand: 7.0.5(postcss@8.5.6) + postcss-merge-rules: 7.0.6(postcss@8.5.6) + postcss-minify-font-values: 7.0.1(postcss@8.5.6) + postcss-minify-gradients: 7.0.1(postcss@8.5.6) + postcss-minify-params: 7.0.4(postcss@8.5.6) + postcss-minify-selectors: 7.0.5(postcss@8.5.6) + postcss-normalize-charset: 7.0.1(postcss@8.5.6) + postcss-normalize-display-values: 7.0.1(postcss@8.5.6) + postcss-normalize-positions: 7.0.1(postcss@8.5.6) + postcss-normalize-repeat-style: 7.0.1(postcss@8.5.6) + postcss-normalize-string: 7.0.1(postcss@8.5.6) + postcss-normalize-timing-functions: 7.0.1(postcss@8.5.6) + postcss-normalize-unicode: 7.0.4(postcss@8.5.6) + postcss-normalize-url: 7.0.1(postcss@8.5.6) + postcss-normalize-whitespace: 7.0.1(postcss@8.5.6) + postcss-ordered-values: 7.0.2(postcss@8.5.6) + postcss-reduce-initial: 7.0.4(postcss@8.5.6) + postcss-reduce-transforms: 7.0.1(postcss@8.5.6) + postcss-svgo: 7.1.0(postcss@8.5.6) + postcss-unique-selectors: 7.0.4(postcss@8.5.6) + + cssnano-utils@5.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + cssnano@7.1.1(postcss@8.5.6): + dependencies: + cssnano-preset-default: 7.0.9(postcss@8.5.6) + lilconfig: 3.1.3 + postcss: 8.5.6 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + cssstyle@5.3.1(postcss@8.5.6): dependencies: '@asamuzakjp/css-color': 4.0.5 @@ -3426,6 +3958,8 @@ snapshots: defu@6.1.4: {} + dependency-graph@1.0.0: {} + dequal@2.0.3: {} destr@2.0.5: {} @@ -3442,6 +3976,24 @@ snapshots: dom-accessibility-api@0.6.3: {} + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dotenv@17.2.3: {} dprint@0.50.2: @@ -3635,9 +4187,19 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + fs-extra@11.3.2: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + fsevents@2.3.3: optional: true + function-bind@1.1.2: {} + + get-caller-file@2.0.5: {} + get-tsconfig@4.12.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -3672,10 +4234,16 @@ snapshots: globals@16.4.0: {} + graceful-fs@4.2.11: {} + graphemer@1.4.0: {} has-flag@4.0.0: {} + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.4 @@ -3737,10 +4305,18 @@ snapshots: indent-string@5.0.0: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-builtin-module@5.0.0: dependencies: builtin-modules: 5.0.0 + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -3834,6 +4410,12 @@ snapshots: jsonc-parser@3.3.1: {} + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -3892,12 +4474,18 @@ snapshots: lightningcss-win32-arm64-msvc: 1.30.2 lightningcss-win32-x64-msvc: 1.30.2 + lilconfig@3.1.3: {} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 + lodash.memoize@4.1.2: {} + lodash.merge@4.6.2: {} + lodash.uniq@4.5.0: {} + loupe@3.2.1: {} lru-cache@10.4.3: {} @@ -3934,6 +4522,8 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 + mdn-data@2.0.28: {} + mdn-data@2.12.2: {} merge2@1.4.1: {} @@ -3986,6 +4576,12 @@ snapshots: node-releases@2.0.25: {} + normalize-path@3.0.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + nypm@0.6.2: dependencies: citty: 0.1.6 @@ -4035,6 +4631,8 @@ snapshots: path-key@3.1.1: {} + path-parse@1.0.7: {} + path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -4054,6 +4652,8 @@ snapshots: picomatch@4.0.3: {} + pify@2.3.0: {} + pkg-types@2.3.0: dependencies: confbox: 0.2.2 @@ -4062,6 +4662,201 @@ snapshots: pluralize@8.0.0: {} + postcss-calc@10.1.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-cli@11.0.1(jiti@2.6.1)(postcss@8.5.6): + dependencies: + chokidar: 3.6.0 + dependency-graph: 1.0.0 + fs-extra: 11.3.2 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-load-config: 5.1.0(jiti@2.6.1)(postcss@8.5.6) + postcss-reporter: 7.1.0(postcss@8.5.6) + pretty-hrtime: 1.0.3 + read-cache: 1.0.0 + slash: 5.1.0 + tinyglobby: 0.2.15 + yargs: 17.7.2 + transitivePeerDependencies: + - jiti + - tsx + + postcss-colormin@7.0.4(postcss@8.5.6): + dependencies: + browserslist: 4.26.3 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-convert-values@7.0.7(postcss@8.5.6): + dependencies: + browserslist: 4.26.3 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@7.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-discard-duplicates@7.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-discard-empty@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-discard-overridden@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-import@16.1.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-load-config@5.1.0(jiti@2.6.1)(postcss@8.5.6): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.1 + optionalDependencies: + jiti: 2.6.1 + postcss: 8.5.6 + + postcss-merge-longhand@7.0.5(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + stylehacks: 7.0.6(postcss@8.5.6) + + postcss-merge-rules@7.0.6(postcss@8.5.6): + dependencies: + browserslist: 4.26.3 + caniuse-api: 3.0.0 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-minify-font-values@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@7.0.1(postcss@8.5.6): + dependencies: + colord: 2.9.3 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-minify-params@7.0.4(postcss@8.5.6): + dependencies: + browserslist: 4.26.3 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@7.0.5(postcss@8.5.6): + dependencies: + cssesc: 3.0.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-normalize-charset@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-normalize-display-values@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@7.0.4(postcss@8.5.6): + dependencies: + browserslist: 4.26.3 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@7.0.2(postcss@8.5.6): + dependencies: + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@7.0.4(postcss@8.5.6): + dependencies: + browserslist: 4.26.3 + caniuse-api: 3.0.0 + postcss: 8.5.6 + + postcss-reduce-transforms@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-reporter@7.1.0(postcss@8.5.6): + dependencies: + picocolors: 1.1.1 + postcss: 8.5.6 + thenby: 1.3.4 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@7.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + svgo: 4.0.0 + + postcss-unique-selectors@7.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-value-parser@4.2.0: {} + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -4078,6 +4873,8 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 + pretty-hrtime@1.0.3: {} + property-information@7.1.0: {} punycode@2.3.1: {} @@ -4093,6 +4890,14 @@ snapshots: react-is@17.0.2: {} + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + readdirp@4.1.2: {} redent@3.0.0: @@ -4116,17 +4921,25 @@ snapshots: dependencies: jsesc: 3.0.2 + require-directory@2.1.1: {} + require-from-string@2.0.2: {} resolve-from@4.0.0: {} resolve-pkg-maps@1.0.0: {} + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + reusify@1.1.0: {} rfdc@1.4.1: {} - rolldown-plugin-dts@0.16.12(rolldown@1.0.0-beta.43)(typescript@5.9.3): + rolldown-plugin-dts@0.16.12(rolldown@1.0.0-beta.44)(typescript@5.9.3): dependencies: '@babel/generator': 7.28.3 '@babel/parser': 7.28.4 @@ -4137,7 +4950,7 @@ snapshots: dts-resolver: 2.1.2 get-tsconfig: 4.12.0 magic-string: 0.30.19 - rolldown: 1.0.0-beta.43 + rolldown: 1.0.0-beta.44 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -4181,26 +4994,25 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.41 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.41 - rolldown@1.0.0-beta.43: + rolldown@1.0.0-beta.44: dependencies: - '@oxc-project/types': 0.94.0 - '@rolldown/pluginutils': 1.0.0-beta.43 - ansis: 4.2.0 + '@oxc-project/types': 0.95.0 + '@rolldown/pluginutils': 1.0.0-beta.44 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.43 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.43 - '@rolldown/binding-darwin-x64': 1.0.0-beta.43 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.43 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.43 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.43 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.43 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.43 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.43 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.43 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.43 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.43 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.43 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.43 + '@rolldown/binding-android-arm64': 1.0.0-beta.44 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.44 + '@rolldown/binding-darwin-x64': 1.0.0-beta.44 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.44 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.44 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.44 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.44 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.44 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.44 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.44 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.44 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.44 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.44 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.44 rrweb-cssom@0.8.0: {} @@ -4210,6 +5022,8 @@ snapshots: safer-buffer@2.1.2: {} + sax@1.4.1: {} + saxes@6.0.0: dependencies: xmlchars: 2.2.0 @@ -4239,6 +5053,8 @@ snapshots: signal-exit@4.1.0: {} + slash@5.1.0: {} + source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -4293,6 +5109,12 @@ snapshots: dependencies: js-tokens: 9.0.1 + stylehacks@7.0.6(postcss@8.5.6): + dependencies: + browserslist: 4.26.3 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + superjson@2.2.2: dependencies: copy-anything: 3.0.5 @@ -4301,6 +5123,18 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} + + svgo@4.0.0: + dependencies: + commander: 11.1.0 + css-select: 5.2.2 + css-tree: 3.1.0 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + sax: 1.4.1 + symbol-tree@3.2.4: {} tabbable@6.2.0: {} @@ -4318,6 +5152,8 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 + thenby@1.3.4: {} + tinybench@2.9.0: {} tinyexec@0.3.2: {} @@ -4370,8 +5206,8 @@ snapshots: diff: 8.0.2 empathic: 2.0.0 hookable: 5.5.3 - rolldown: 1.0.0-beta.43 - rolldown-plugin-dts: 0.16.12(rolldown@1.0.0-beta.43)(typescript@5.9.3) + rolldown: 1.0.0-beta.44 + rolldown-plugin-dts: 0.16.12(rolldown@1.0.0-beta.44)(typescript@5.9.3) semver: 7.7.3 tinyexec: 1.0.1 tinyglobby: 0.2.15 @@ -4438,6 +5274,8 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 + universalify@2.0.1: {} + update-browserslist-db@1.1.3(browserslist@4.26.3): dependencies: browserslist: 4.26.3 @@ -4448,6 +5286,8 @@ snapshots: dependencies: punycode: 2.3.1 + util-deprecate@1.0.2: {} + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 @@ -4531,7 +5371,7 @@ snapshots: - universal-cookie - yaml - vitest@3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(terser@5.44.0)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.8.1)(jiti@2.6.1)(jsdom@27.0.0)(terser@5.44.0)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 @@ -4629,8 +5469,22 @@ snapshots: xmlchars@2.2.0: {} + y18n@5.0.8: {} + yaml@2.8.1: {} + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + yocto-queue@0.1.0: {} zwitch@2.0.4: {}