rizzo-css 0.0.63 → 0.0.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/bin/rizzo-css.js +108 -9
- package/dist/rizzo.min.css +4 -2
- package/package.json +1 -1
- package/scaffold/astro/Footer.astro +1 -1
- package/scaffold/astro/InputGroup.astro +74 -0
- package/scaffold/astro/base/README-RIZZO.md +1 -1
- package/scaffold/astro/base/src/pages/index.astro +2 -2
- package/scaffold/astro/variants/full/README-RIZZO.md +1 -1
- package/scaffold/astro/variants/full/src/pages/index.astro +2 -2
- package/scaffold/react/base/README-RIZZO.md +50 -0
- package/scaffold/react/base/gitignore +8 -0
- package/scaffold/react/base/index.html +16 -0
- package/scaffold/react/base/package.json +22 -0
- package/scaffold/react/base/public/.gitkeep +0 -0
- package/scaffold/react/base/src/App.tsx +11 -0
- package/scaffold/react/base/src/index.css +1 -0
- package/scaffold/react/base/src/main.tsx +10 -0
- package/scaffold/react/base/src/vite-env.d.ts +1 -0
- package/scaffold/react/base/tsconfig.json +21 -0
- package/scaffold/react/base/tsconfig.node.json +9 -0
- package/scaffold/react/base/vite.config.ts +6 -0
- package/scaffold/shared/sound-effects-inline.js +1 -1
- package/scaffold/svelte/InputGroup.svelte +71 -0
- package/scaffold/svelte/base/README-RIZZO.md +1 -1
- package/scaffold/svelte/base/package.json +2 -2
- package/scaffold/svelte/variants/full/README-RIZZO.md +1 -1
- package/scaffold/svelte/variants/full/package.json +2 -2
- package/scaffold/vanilla/README-RIZZO.md +2 -2
- package/scaffold/vanilla/components/accordion.html +24 -0
- package/scaffold/vanilla/components/alert-dialog.html +24 -0
- package/scaffold/vanilla/components/alert.html +24 -0
- package/scaffold/vanilla/components/aspect-ratio.html +24 -0
- package/scaffold/vanilla/components/avatar.html +24 -0
- package/scaffold/vanilla/components/back-to-top.html +24 -0
- package/scaffold/vanilla/components/badge.html +24 -0
- package/scaffold/vanilla/components/breadcrumb.html +24 -0
- package/scaffold/vanilla/components/button-group.html +24 -0
- package/scaffold/vanilla/components/button.html +24 -0
- package/scaffold/vanilla/components/cards.html +24 -0
- package/scaffold/vanilla/components/collapsible.html +24 -0
- package/scaffold/vanilla/components/context-menu.html +24 -0
- package/scaffold/vanilla/components/copy-to-clipboard.html +24 -0
- package/scaffold/vanilla/components/dashboard.html +24 -0
- package/scaffold/vanilla/components/divider.html +24 -0
- package/scaffold/vanilla/components/docs-sidebar.html +24 -0
- package/scaffold/vanilla/components/dropdown.html +24 -0
- package/scaffold/vanilla/components/empty.html +24 -0
- package/scaffold/vanilla/components/font-switcher.html +24 -0
- package/scaffold/vanilla/components/footer.html +24 -0
- package/scaffold/vanilla/components/forms.html +24 -0
- package/scaffold/vanilla/components/hover-card.html +24 -0
- package/scaffold/vanilla/components/icons.html +24 -0
- package/scaffold/vanilla/components/index.html +25 -0
- package/scaffold/vanilla/components/input-group.html +746 -0
- package/scaffold/vanilla/components/kbd.html +24 -0
- package/scaffold/vanilla/components/label.html +24 -0
- package/scaffold/vanilla/components/modal.html +24 -0
- package/scaffold/vanilla/components/navbar.html +24 -0
- package/scaffold/vanilla/components/pagination.html +24 -0
- package/scaffold/vanilla/components/popover.html +24 -0
- package/scaffold/vanilla/components/progress-bar.html +24 -0
- package/scaffold/vanilla/components/resizable.html +24 -0
- package/scaffold/vanilla/components/scroll-area.html +24 -0
- package/scaffold/vanilla/components/search.html +24 -0
- package/scaffold/vanilla/components/separator.html +24 -0
- package/scaffold/vanilla/components/settings.html +24 -0
- package/scaffold/vanilla/components/sheet.html +24 -0
- package/scaffold/vanilla/components/skeleton.html +24 -0
- package/scaffold/vanilla/components/slider.html +24 -0
- package/scaffold/vanilla/components/sound-effects.html +24 -0
- package/scaffold/vanilla/components/spinner.html +24 -0
- package/scaffold/vanilla/components/switch.html +24 -0
- package/scaffold/vanilla/components/table.html +24 -0
- package/scaffold/vanilla/components/tabs.html +24 -0
- package/scaffold/vanilla/components/theme-switcher.html +24 -0
- package/scaffold/vanilla/components/toast.html +24 -0
- package/scaffold/vanilla/components/toggle-group.html +24 -0
- package/scaffold/vanilla/components/toggle.html +24 -0
- package/scaffold/vanilla/components/tooltip.html +24 -0
- package/scaffold/vanilla/index.html +26 -2
- package/scaffold/vue/base/README-RIZZO.md +50 -0
- package/scaffold/vue/base/gitignore +8 -0
- package/scaffold/vue/base/index.html +16 -0
- package/scaffold/vue/base/package.json +20 -0
- package/scaffold/vue/base/public/.gitkeep +0 -0
- package/scaffold/vue/base/src/App.vue +13 -0
- package/scaffold/vue/base/src/index.css +1 -0
- package/scaffold/vue/base/src/main.ts +5 -0
- package/scaffold/vue/base/src/vite-env.d.ts +7 -0
- package/scaffold/vue/base/tsconfig.json +22 -0
- package/scaffold/vue/base/tsconfig.node.json +10 -0
- package/scaffold/vue/base/vite.config.ts +6 -0
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ bun add rizzo-css
|
|
|
16
16
|
|
|
17
17
|
The package works with **npm**, **pnpm**, **yarn**, and **bun**. After install, run the CLI with your manager’s runner: `npx` (npm/yarn), `pnpm dlx`, or `bunx`.
|
|
18
18
|
|
|
19
|
-
**Quick start (no install):** `npx rizzo-css init` — choose **framework** (Vanilla, Astro, Svelte, React, or Vue), then **add to existing** or **create new**. Both flows use the **same template choice**: **Landing** (hero/features), **Docs** (sidebar + sample doc), **Dashboard** (sidebar + stats/table), or **Full** (clone of the docs site). Landing/Docs/Dashboard = component picker (all
|
|
19
|
+
**Quick start (no install):** `npx rizzo-css init` — choose **framework** (Vanilla, Astro, Svelte, React, or Vue), then **add to existing** or **create new**. Both flows use the **same template choice**: **Landing** (hero/features), **Docs** (sidebar + sample doc), **Dashboard** (sidebar + stats/table), or **Full** (clone of the docs site). Landing/Docs/Dashboard = component picker (all 57 or pick). We **never overwrite your existing files**; any skipped content is in **RIZZO-SETUP.md**. You must add the `<link>` yourself (CLI prints the exact tag). Non-interactive: `npx rizzo-css init --yes --framework vanilla|astro|svelte|react|vue --template landing|docs|dashboard|full` or `npx rizzo-css add --template landing|docs|dashboard|full`. Optional **rizzo-css.json** and `add --install-package`. All get the **same CSS and component styles**. To use the **official Svelte or Astro create command** plus Rizzo, create the app first, then run `npx rizzo-css add`:
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
22
|
npm create svelte@latest my-app && cd my-app && npx rizzo-css add
|
|
@@ -25,7 +25,7 @@ npm create astro@latest my-app && cd my-app && npx rizzo-css add
|
|
|
25
25
|
|
|
26
26
|
**Running the CLI:** npm → `npx`; pnpm → `pnpm dlx`; yarn → `npx` (Yarn 1 has no `dlx`; works with Yarn 2+ too); bun → `bunx`. The [docs site](https://rizzo-css.vercel.app/docs/getting-started) tabs show the correct command for each manager.
|
|
27
27
|
|
|
28
|
-
**Same flow for new and existing:** Both prompt for **Landing** | **Docs** | **Dashboard** | **Full**. Landing/Docs/Dashboard = component picker (all
|
|
28
|
+
**Same flow for new and existing:** Both prompt for **Landing** | **Docs** | **Dashboard** | **Full**. Landing/Docs/Dashboard = component picker (all 57 or pick). Full = site clone (no picker); also writes **RIZZO-SNIPPET.txt** (link + theme) unless `--no-snippet`. `npx rizzo-css doctor` checks config and CSS path. `npx rizzo-css theme` lists themes.
|
|
29
29
|
|
|
30
30
|
| | **Create new** (`init` → new) | **Add to existing** (`add` or `init` → existing) |
|
|
31
31
|
|---|------------------------------|--------------------------------------------------|
|
|
@@ -72,7 +72,7 @@ import 'rizzo-css';
|
|
|
72
72
|
**Without a bundler (plain HTML):** Use a CDN. Both unpkg and jsDelivr resolve the package root to the built CSS (via the `unpkg` / `jsdelivr` fields in this package). For reliability or to pin a version, use the explicit path:
|
|
73
73
|
|
|
74
74
|
```html
|
|
75
|
-
<!-- unpkg (pin version: replace @latest with @0.0.
|
|
75
|
+
<!-- unpkg (pin version: replace @latest with @0.0.65 or any version) -->
|
|
76
76
|
<link rel="stylesheet" href="https://unpkg.com/rizzo-css@latest/dist/rizzo.min.css" />
|
|
77
77
|
|
|
78
78
|
<!-- or jsDelivr -->
|
|
@@ -95,7 +95,7 @@ Theme IDs and full docs: [Theming](https://rizzo-css.vercel.app/docs/theming).
|
|
|
95
95
|
|
|
96
96
|
## Docs
|
|
97
97
|
|
|
98
|
-
Full documentation: **[rizzo-css.vercel.app](https://rizzo-css.vercel.app)** — **Docs** (Getting Started, Design System, Theming, Accessibility), **Components**, **Blocks** (pre-built layouts), **Themes**, **Colors**, and usage for Vanilla, Astro, and
|
|
98
|
+
Full documentation: **[rizzo-css.vercel.app](https://rizzo-css.vercel.app)** — **Docs** (Getting Started, Design System, Theming, Accessibility), **Components**, **Blocks** (pre-built layouts), **Themes**, **Colors**, and usage for Vanilla, Astro, Svelte, React, and Vue.
|
|
99
99
|
|
|
100
100
|
## Package contents
|
|
101
101
|
|
package/bin/rizzo-css.js
CHANGED
|
@@ -197,7 +197,7 @@ const VALID_THEME_VALUES = ['system', ...THEMES];
|
|
|
197
197
|
// Components available for scaffold (must match scaffold/svelte and scaffold/astro; missing files are skipped on copy)
|
|
198
198
|
const SVELTE_COMPONENTS = [
|
|
199
199
|
'Button', 'Badge', 'Card', 'Dashboard', 'Divider', 'DocsSidebar', 'Footer', 'Spinner', 'ProgressBar', 'Avatar', 'Alert',
|
|
200
|
-
'BackToTop', 'Breadcrumb',
|
|
200
|
+
'BackToTop', 'Breadcrumb', 'FormGroup', 'Input', 'InputGroup', 'Checkbox', 'Textarea', 'Select', 'Radio',
|
|
201
201
|
'CopyToClipboard', 'Tooltip', 'Pagination', 'Tabs', 'Accordion', 'Dropdown',
|
|
202
202
|
'Modal', 'Toast', 'Table', 'ThemeSwitcher', 'FontSwitcher', 'SoundEffects',
|
|
203
203
|
'Navbar', 'Settings', 'Search', 'Icons', 'Skeleton', 'Switch',
|
|
@@ -206,7 +206,7 @@ const SVELTE_COMPONENTS = [
|
|
|
206
206
|
];
|
|
207
207
|
const ASTRO_COMPONENTS = [
|
|
208
208
|
'Button', 'Badge', 'Card', 'Dashboard', 'Divider', 'DocsSidebar', 'Footer', 'Spinner', 'ProgressBar', 'Avatar', 'Alert',
|
|
209
|
-
'BackToTop', 'Breadcrumb',
|
|
209
|
+
'BackToTop', 'Breadcrumb', 'FormGroup', 'Input', 'InputGroup', 'Checkbox', 'Textarea', 'Select', 'Radio',
|
|
210
210
|
'CopyToClipboard', 'Tooltip', 'Pagination', 'Tabs', 'Accordion', 'Dropdown',
|
|
211
211
|
'Modal', 'Toast', 'Table', 'ThemeSwitcher', 'FontSwitcher', 'SoundEffects',
|
|
212
212
|
'Navbar', 'Settings', 'Search', 'Icons', 'Skeleton', 'Switch',
|
|
@@ -291,7 +291,7 @@ function logAddedDeps(selected, expanded, framework) {
|
|
|
291
291
|
const VANILLA_COMPONENT_SLUGS = {
|
|
292
292
|
Accordion: 'accordion', Alert: 'alert', AlertDialog: 'alert-dialog', AspectRatio: 'aspect-ratio', Avatar: 'avatar', BackToTop: 'back-to-top', Badge: 'badge', Breadcrumb: 'breadcrumb', Button: 'button', ButtonGroup: 'button-group',
|
|
293
293
|
Card: 'cards', Checkbox: 'forms', Collapsible: 'collapsible', ContextMenu: 'context-menu', CopyToClipboard: 'copy-to-clipboard', Dashboard: 'dashboard', Divider: 'divider', DocsSidebar: 'docs-sidebar', Dropdown: 'dropdown',
|
|
294
|
-
Empty: 'empty', Footer: 'footer', FormGroup: 'forms', HoverCard: 'hover-card', Input: 'forms', Icons: 'icons', Kbd: 'kbd', Label: 'label',
|
|
294
|
+
Empty: 'empty', Footer: 'footer', FormGroup: 'forms', HoverCard: 'hover-card', Input: 'forms', InputGroup: 'input-group', Icons: 'icons', Kbd: 'kbd', Label: 'label',
|
|
295
295
|
Modal: 'modal', Navbar: 'navbar', Pagination: 'pagination', Popover: 'popover', ProgressBar: 'progress-bar',
|
|
296
296
|
Radio: 'forms', ResizableHandle: 'resizable', ResizablePane: 'resizable', ResizablePaneGroup: 'resizable', ScrollArea: 'scroll-area', Search: 'search', Separator: 'separator', Select: 'forms', Settings: 'settings', Sheet: 'sheet',
|
|
297
297
|
Skeleton: 'skeleton', Slider: 'slider', SoundEffects: 'sound-effects', Spinner: 'spinner', Switch: 'switch', Table: 'table',
|
|
@@ -564,6 +564,26 @@ function copySvelteGitignore(projectDir) {
|
|
|
564
564
|
}
|
|
565
565
|
}
|
|
566
566
|
|
|
567
|
+
/** Copy React scaffold gitignore into project as .gitignore. */
|
|
568
|
+
function copyReactGitignore(projectDir) {
|
|
569
|
+
const gitignorePath = join(getScaffoldReactCoreDir(), SCAFFOLD_GITIGNORE_FILE);
|
|
570
|
+
if (existsSync(gitignorePath)) {
|
|
571
|
+
copyFileSync(gitignorePath, join(projectDir, '.gitignore'));
|
|
572
|
+
const copiedAsFile = join(projectDir, SCAFFOLD_GITIGNORE_FILE);
|
|
573
|
+
if (existsSync(copiedAsFile)) unlinkSync(copiedAsFile);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
/** Copy Vue scaffold gitignore into project as .gitignore. */
|
|
578
|
+
function copyVueGitignore(projectDir) {
|
|
579
|
+
const gitignorePath = join(getScaffoldVueCoreDir(), SCAFFOLD_GITIGNORE_FILE);
|
|
580
|
+
if (existsSync(gitignorePath)) {
|
|
581
|
+
copyFileSync(gitignorePath, join(projectDir, '.gitignore'));
|
|
582
|
+
const copiedAsFile = join(projectDir, SCAFFOLD_GITIGNORE_FILE);
|
|
583
|
+
if (existsSync(copiedAsFile)) unlinkSync(copiedAsFile);
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
|
|
567
587
|
/** Read rizzo-css.json from cwd. Returns { targetDir?, framework?, packageManager?, theme? } or null. Preserves unknown keys. */
|
|
568
588
|
function readRizzoConfig(cwd) {
|
|
569
589
|
if (!cwd || !existsSync(cwd)) return null;
|
|
@@ -1104,7 +1124,7 @@ Commands:
|
|
|
1104
1124
|
Options (init):
|
|
1105
1125
|
--yes Non-interactive: scaffold new in cwd with defaults (framework: astro, template: landing)
|
|
1106
1126
|
--path <dir> Project directory (relative to cwd or absolute). Scaffold and run install there. With --yes; interactive: "Enter path" option.
|
|
1107
|
-
--framework <fw> vanilla | astro | svelte | react | vue (same
|
|
1127
|
+
--framework <fw> vanilla | astro | svelte | react | vue (same 57 components each)
|
|
1108
1128
|
--template <t> create new: css-only | landing | docs | dashboard | full (default: landing). add: same options.
|
|
1109
1129
|
--package-manager <pm> npm | pnpm | yarn | bun (with --yes, or skip PM prompt when interactive)
|
|
1110
1130
|
--install After scaffolding, run package manager install in project directory (no prompt)
|
|
@@ -1169,7 +1189,7 @@ Component dependencies (Full template):
|
|
|
1169
1189
|
Full list of available components and what relies on what: npx rizzo-css help components
|
|
1170
1190
|
|
|
1171
1191
|
Frameworks:
|
|
1172
|
-
Scaffolds (init/add): Vanilla, Astro, Svelte, React, Vue. Same
|
|
1192
|
+
Scaffolds (init/add): Vanilla, Astro, Svelte, React, Vue. Same 57 components in each framework’s syntax; same CSS and BEM. Docs: https://rizzo-css.vercel.app/docs/react and Vue.
|
|
1173
1193
|
|
|
1174
1194
|
Docs: https://rizzo-css.vercel.app
|
|
1175
1195
|
`);
|
|
@@ -1702,6 +1722,14 @@ function getScaffoldSvelteCoreDir() {
|
|
|
1702
1722
|
return join(getPackageRoot(), 'scaffold', 'svelte', 'base');
|
|
1703
1723
|
}
|
|
1704
1724
|
|
|
1725
|
+
function getScaffoldReactCoreDir() {
|
|
1726
|
+
return join(getPackageRoot(), 'scaffold', 'react', 'base');
|
|
1727
|
+
}
|
|
1728
|
+
|
|
1729
|
+
function getScaffoldVueCoreDir() {
|
|
1730
|
+
return join(getPackageRoot(), 'scaffold', 'vue', 'base');
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1705
1733
|
function copyDirRecursive(src, dest) {
|
|
1706
1734
|
mkdirSync(dest, { recursive: true });
|
|
1707
1735
|
const entries = readdirSync(src, { withFileTypes: true });
|
|
@@ -2202,13 +2230,15 @@ async function runAddToExisting(frameworkOverride, options) {
|
|
|
2202
2230
|
let addSkippedFiles = [];
|
|
2203
2231
|
const astroCoreDir = getScaffoldAstroCoreDir();
|
|
2204
2232
|
const svelteCoreDir = getScaffoldSvelteCoreDir();
|
|
2233
|
+
const reactCoreDir = getScaffoldReactCoreDir();
|
|
2234
|
+
const vueCoreDir = getScaffoldVueCoreDir();
|
|
2205
2235
|
const themeCommentAdd = ' <!-- Initial: ' + theme + '; dark: ' + defaultDark + '; light: ' + defaultLight + ' (all 14 themes in CSS) -->';
|
|
2206
2236
|
const copyOpts = options.dryRun && options.plan ? options : undefined;
|
|
2207
2237
|
if (framework === 'vanilla' && getVariantDir('vanilla', selectedVariation)) {
|
|
2208
2238
|
const vanillaRepl = { '{{LINK_HREF}}': 'css/rizzo.min.css', '{{TITLE}}': 'App', '{{DATA_THEME}}': theme, '{{THEME_LIST_COMMENT}}': themeCommentAdd };
|
|
2209
2239
|
const variantResult = copyVariantOverlayNoOverwrite(cwd, 'vanilla', selectedVariation, vanillaRepl, copyOpts);
|
|
2210
2240
|
if (variantResult && variantResult.skipped) addSkippedFiles = variantResult.skipped;
|
|
2211
|
-
} else if (selectedVariation !== 'css-only' && ((framework === 'astro' && existsSync(astroCoreDir)) || (framework === 'svelte' && existsSync(svelteCoreDir)))) {
|
|
2241
|
+
} else if (selectedVariation !== 'css-only' && ((framework === 'astro' && existsSync(astroCoreDir)) || (framework === 'svelte' && existsSync(svelteCoreDir)) || (framework === 'react' && existsSync(reactCoreDir)) || (framework === 'vue' && existsSync(vueCoreDir)))) {
|
|
2212
2242
|
const themeComment = themeCommentAdd;
|
|
2213
2243
|
const replacements = {
|
|
2214
2244
|
'{{DATA_THEME}}': theme,
|
|
@@ -2255,6 +2285,14 @@ async function runAddToExisting(frameworkOverride, options) {
|
|
|
2255
2285
|
const baseResult = copyDirRecursiveWithReplacementsNoOverwrite(svelteCoreDir, cwd, replacements, cwd, copyOpts);
|
|
2256
2286
|
const variantResult = copyVariantOverlayNoOverwrite(cwd, 'svelte', selectedVariation, replacements, copyOpts);
|
|
2257
2287
|
addSkippedFiles = baseResult.skipped.concat(variantResult.skipped || []);
|
|
2288
|
+
} else if (framework === 'react') {
|
|
2289
|
+
const baseResult = copyDirRecursiveWithReplacementsNoOverwrite(reactCoreDir, cwd, replacements, cwd, copyOpts);
|
|
2290
|
+
const variantResult = copyVariantOverlayNoOverwrite(cwd, 'react', selectedVariation, replacements, copyOpts);
|
|
2291
|
+
addSkippedFiles = baseResult.skipped.concat(variantResult.skipped || []);
|
|
2292
|
+
} else if (framework === 'vue') {
|
|
2293
|
+
const baseResult = copyDirRecursiveWithReplacementsNoOverwrite(vueCoreDir, cwd, replacements, cwd, copyOpts);
|
|
2294
|
+
const variantResult = copyVariantOverlayNoOverwrite(cwd, 'vue', selectedVariation, replacements, copyOpts);
|
|
2295
|
+
addSkippedFiles = baseResult.skipped.concat(variantResult.skipped || []);
|
|
2258
2296
|
}
|
|
2259
2297
|
}
|
|
2260
2298
|
|
|
@@ -2607,12 +2645,16 @@ async function cmdInit(argv) {
|
|
|
2607
2645
|
|
|
2608
2646
|
const astroCoreDir = getScaffoldAstroCoreDir();
|
|
2609
2647
|
const svelteCoreDir = getScaffoldSvelteCoreDir();
|
|
2648
|
+
const reactCoreDir = getScaffoldReactCoreDir();
|
|
2649
|
+
const vueCoreDir = getScaffoldVueCoreDir();
|
|
2610
2650
|
const pathsForScaffold = getFrameworkCssPaths(framework);
|
|
2611
2651
|
const useFullVariant = selectedVariation === 'full' && hasFullVariant(framework);
|
|
2612
2652
|
const useHandpickAstro = selectedTemplate === 'full' && !fullAllComponents && framework === 'astro' && existsSync(astroCoreDir) && !useFullVariant;
|
|
2613
2653
|
const useHandpickSvelte = selectedTemplate === 'full' && !fullAllComponents && framework === 'svelte' && existsSync(svelteCoreDir) && !useFullVariant;
|
|
2614
2654
|
const useAstroBase = selectedTemplate === 'full' && fullAllComponents && framework === 'astro' && existsSync(astroCoreDir) && !useFullVariant;
|
|
2615
2655
|
const useSvelteBase = selectedTemplate === 'full' && fullAllComponents && framework === 'svelte' && existsSync(svelteCoreDir) && !useFullVariant;
|
|
2656
|
+
const useReactBase = selectedVariation !== 'css-only' && framework === 'react' && existsSync(reactCoreDir);
|
|
2657
|
+
const useVueBase = selectedVariation !== 'css-only' && framework === 'vue' && existsSync(vueCoreDir);
|
|
2616
2658
|
const useVanillaCore = selectedTemplate === 'full' && fullAllComponents && framework === 'vanilla' && existsSync(getScaffoldVanillaIndex()) && !useFullVariant && selectedVariation === 'landing';
|
|
2617
2659
|
const useVanillaWithOverlay = selectedTemplate === 'full' && framework === 'vanilla' && (selectedVariation === 'docs' || selectedVariation === 'dashboard') && getVariantDir('vanilla', selectedVariation);
|
|
2618
2660
|
|
|
@@ -2798,6 +2840,38 @@ async function cmdInit(argv) {
|
|
|
2798
2840
|
copyRizzoIcons(projectDir, 'svelte');
|
|
2799
2841
|
copySvelteComponents(projectDir, componentsToCopy);
|
|
2800
2842
|
}
|
|
2843
|
+
} else if (useReactBase) {
|
|
2844
|
+
mkdirSync(projectDir, { recursive: true });
|
|
2845
|
+
const { skipped } = copyDirRecursiveWithReplacementsNoOverwrite(reactCoreDir, projectDir, replacements, projectDir);
|
|
2846
|
+
copyVariantOverlay(projectDir, 'react', selectedVariation, replacements);
|
|
2847
|
+
copyRizzoCssAndFontsForAstro(projectDir, cssSource);
|
|
2848
|
+
if (skipped.length > 0) {
|
|
2849
|
+
writeFileSync(join(projectDir, RIZZO_SETUP_FILE), buildRizzoSetupMd('react', { linkHref: '/css/rizzo.min.css', theme, defaultDark, defaultLight, skippedFiles: skipped }), 'utf8');
|
|
2850
|
+
}
|
|
2851
|
+
cssTarget = join(projectDir, 'public', 'css', 'rizzo.min.css');
|
|
2852
|
+
if (existsSync(cssTarget) && statSync(cssTarget).size < 5000) {
|
|
2853
|
+
console.warn('\nWarning: rizzo.min.css is very small. From repo root run: pnpm build:css');
|
|
2854
|
+
}
|
|
2855
|
+
copyPackageLicense(projectDir);
|
|
2856
|
+
copyReactGitignore(projectDir);
|
|
2857
|
+
copyRizzoIcons(projectDir, 'react');
|
|
2858
|
+
if (componentsToCopy.length > 0) copyReactComponents(projectDir, componentsToCopy);
|
|
2859
|
+
} else if (useVueBase) {
|
|
2860
|
+
mkdirSync(projectDir, { recursive: true });
|
|
2861
|
+
const { skipped } = copyDirRecursiveWithReplacementsNoOverwrite(vueCoreDir, projectDir, replacements, projectDir);
|
|
2862
|
+
copyVariantOverlay(projectDir, 'vue', selectedVariation, replacements);
|
|
2863
|
+
copyRizzoCssAndFontsForAstro(projectDir, cssSource);
|
|
2864
|
+
if (skipped.length > 0) {
|
|
2865
|
+
writeFileSync(join(projectDir, RIZZO_SETUP_FILE), buildRizzoSetupMd('vue', { linkHref: '/css/rizzo.min.css', theme, defaultDark, defaultLight, skippedFiles: skipped }), 'utf8');
|
|
2866
|
+
}
|
|
2867
|
+
cssTarget = join(projectDir, 'public', 'css', 'rizzo.min.css');
|
|
2868
|
+
if (existsSync(cssTarget) && statSync(cssTarget).size < 5000) {
|
|
2869
|
+
console.warn('\nWarning: rizzo.min.css is very small. From repo root run: pnpm build:css');
|
|
2870
|
+
}
|
|
2871
|
+
copyPackageLicense(projectDir);
|
|
2872
|
+
copyVueGitignore(projectDir);
|
|
2873
|
+
copyRizzoIcons(projectDir, 'vue');
|
|
2874
|
+
if (componentsToCopy.length > 0) copyVueComponents(projectDir, componentsToCopy);
|
|
2801
2875
|
} else if (selectedVariation === 'css-only') {
|
|
2802
2876
|
// CSS only: no components, no web pages — just CSS, fonts, license, README, .gitignore (and framework base for Astro/Svelte)
|
|
2803
2877
|
mkdirSync(projectDir, { recursive: true });
|
|
@@ -2828,6 +2902,24 @@ async function cmdInit(argv) {
|
|
|
2828
2902
|
cssTarget = join(projectDir, 'static', 'css', 'rizzo.min.css');
|
|
2829
2903
|
copyPackageLicense(projectDir);
|
|
2830
2904
|
copySvelteGitignore(projectDir);
|
|
2905
|
+
} else if (framework === 'react' && existsSync(reactCoreDir)) {
|
|
2906
|
+
const { skipped } = copyDirRecursiveWithReplacementsNoOverwrite(reactCoreDir, projectDir, replacements, projectDir);
|
|
2907
|
+
copyRizzoCssAndFontsForAstro(projectDir, cssSource);
|
|
2908
|
+
if (skipped.length > 0) {
|
|
2909
|
+
writeFileSync(join(projectDir, RIZZO_SETUP_FILE), buildRizzoSetupMd('react', { linkHref: '/css/rizzo.min.css', theme, defaultDark, defaultLight, skippedFiles: skipped }), 'utf8');
|
|
2910
|
+
}
|
|
2911
|
+
cssTarget = join(projectDir, 'public', 'css', 'rizzo.min.css');
|
|
2912
|
+
copyPackageLicense(projectDir);
|
|
2913
|
+
copyReactGitignore(projectDir);
|
|
2914
|
+
} else if (framework === 'vue' && existsSync(vueCoreDir)) {
|
|
2915
|
+
const { skipped } = copyDirRecursiveWithReplacementsNoOverwrite(vueCoreDir, projectDir, replacements, projectDir);
|
|
2916
|
+
copyRizzoCssAndFontsForAstro(projectDir, cssSource);
|
|
2917
|
+
if (skipped.length > 0) {
|
|
2918
|
+
writeFileSync(join(projectDir, RIZZO_SETUP_FILE), buildRizzoSetupMd('vue', { linkHref: '/css/rizzo.min.css', theme, defaultDark, defaultLight, skippedFiles: skipped }), 'utf8');
|
|
2919
|
+
}
|
|
2920
|
+
cssTarget = join(projectDir, 'public', 'css', 'rizzo.min.css');
|
|
2921
|
+
copyPackageLicense(projectDir);
|
|
2922
|
+
copyVueGitignore(projectDir);
|
|
2831
2923
|
} else {
|
|
2832
2924
|
// fallback: same as vanilla (no index.html)
|
|
2833
2925
|
const cssDir = join(projectDir, pathsForScaffold.targetDir);
|
|
@@ -3033,7 +3125,7 @@ async function cmdInit(argv) {
|
|
|
3033
3125
|
const pm = getPackageManagerCommands({ agent: selectedPm, command: selectedPm });
|
|
3034
3126
|
const nextStep = pm.install + ' && ' + pm.run('dev');
|
|
3035
3127
|
const runPrefix = projectDir !== cwd ? 'cd ' + pathRelative(cwd, projectDir) + ' && ' : '';
|
|
3036
|
-
const hasPackageJson = useHandpickAstro || useHandpickSvelte || useAstroBase || useSvelteBase || (selectedVariation === 'css-only' && (framework === 'astro' || framework === 'svelte'));
|
|
3128
|
+
const hasPackageJson = useHandpickAstro || useHandpickSvelte || useAstroBase || useSvelteBase || useReactBase || useVueBase || (selectedVariation === 'css-only' && (framework === 'astro' || framework === 'svelte' || framework === 'react' || framework === 'vue'));
|
|
3037
3129
|
|
|
3038
3130
|
console.log('\n Scaffold complete. Summary above.');
|
|
3039
3131
|
|
|
@@ -3092,8 +3184,15 @@ async function cmdInit(argv) {
|
|
|
3092
3184
|
if (useSvelteBase) {
|
|
3093
3185
|
console.log(' - SvelteKit (core): app + ' + selectedComponents.length + ' component(s). Run: ' + runPrefix + nextStep);
|
|
3094
3186
|
}
|
|
3095
|
-
if (
|
|
3096
|
-
|
|
3187
|
+
if (useReactBase) {
|
|
3188
|
+
console.log(' - React (Vite): app + ' + (componentsToCopy.length > 0 ? componentsToCopy.length + ' component(s).' : 'base.') + ' Run: ' + runPrefix + nextStep);
|
|
3189
|
+
}
|
|
3190
|
+
if (useVueBase) {
|
|
3191
|
+
console.log(' - Vue (Vite): app + ' + (componentsToCopy.length > 0 ? componentsToCopy.length + ' component(s).' : 'base.') + ' Run: ' + runPrefix + nextStep);
|
|
3192
|
+
}
|
|
3193
|
+
const hasBaseScaffold = useAstroBase || useSvelteBase || useHandpickAstro || useHandpickSvelte || useReactBase || useVueBase || (selectedVariation === 'css-only' && (framework === 'astro' || framework === 'svelte' || framework === 'react' || framework === 'vue'));
|
|
3194
|
+
if ((framework === 'astro' || framework === 'svelte' || framework === 'react' || framework === 'vue') && !hasBaseScaffold) {
|
|
3195
|
+
const fw = framework === 'svelte' ? 'Svelte' : framework === 'react' ? 'React' : framework === 'vue' ? 'Vue' : 'Astro';
|
|
3097
3196
|
const createExample = getCreateProjectExample(pm, framework);
|
|
3098
3197
|
console.log('\n - Basic template (CSS + index). To get a full app: ' + createExample + ', then cd into the project and run ' + pm.dlx('rizzo-css add') + '.');
|
|
3099
3198
|
}
|
package/dist/rizzo.min.css
CHANGED
|
@@ -89,7 +89,8 @@ input[type="radio"]:disabled{cursor:not-allowed;opacity:var(--opacity-60)}.check
|
|
|
89
89
|
.radio-label:hover{color:var(--accent)}.checkbox-label:has(input:disabled),
|
|
90
90
|
.radio-label:has(input:disabled){cursor:not-allowed;opacity:var(--opacity-60)}.checkbox-label:has(input:disabled):hover,
|
|
91
91
|
.radio-label:has(input:disabled):hover{color:var(--text)}.checkbox-group,
|
|
92
|
-
.radio-group{display:flex;flex-direction:column;gap:var(--spacing-3)}input[type="file"]{background-color:var(--background-alt);border:var(--border-width) solid var(--border);border-radius:var(--radius-md);color:var(--text);cursor:pointer;font-family:var(--font-family);font-size:var(--font-size-base);padding:var(--spacing-0-625) var(--spacing-3);width:100%}input[type="file"]:focus{border-color:var(--accent);box-shadow:0 0 0 var(--spacing-3) oklch(from var(--accent) l c h/10%);outline:none}input[type="file"]:disabled{cursor:not-allowed;opacity:var(--opacity-60)}input[type="range"]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--background-alt);border-radius:var(--radius);height:var(--spacing-2);outline:none;width:100%}input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:var(--accent);border:var(--outline-width) solid var(--background-alt);border-radius:var(--radius-circle);box-shadow:0 0 0 var(--spacing-0-125) var(--accent);cursor:pointer;height:var(--spacing-5);width:var(--spacing-5)}input[type="range"]::-moz-range-thumb{background-color:var(--accent);border:var(--outline-width) solid var(--background-alt);border-radius:var(--radius-circle);box-shadow:0 0 0 var(--spacing-0-125) var(--accent);cursor:pointer;height:var(--spacing-5);width:var(--spacing-5)}input[type="range"]:focus::-webkit-slider-thumb{box-shadow:0 0 0 var(--spacing-0-125) var(--accent),0 0 0 var(--spacing-1) oklch(from var(--accent) l c h/10%)}input[type="range"]:focus::-moz-range-thumb{box-shadow:0 0 0 var(--spacing-0-125) var(--accent),0 0 0 var(--spacing-1) oklch(from var(--accent) l c h/10%)}fieldset{border:var(--border-width) solid var(--border);border-radius:var(--radius-md);margin:0 0 var(--spacing-6);padding:var(--spacing-4)}legend{color:var(--text);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);padding:0 var(--spacing-2)}.form-error{color:var(--error)}.form-error,.form-success{display:block;font-size:var(--font-size-xs);margin-top:var(--spacing-0-375)}.form-success{color:var(--success)}.
|
|
92
|
+
.radio-group{display:flex;flex-direction:column;gap:var(--spacing-3)}input[type="file"]{background-color:var(--background-alt);border:var(--border-width) solid var(--border);border-radius:var(--radius-md);color:var(--text);cursor:pointer;font-family:var(--font-family);font-size:var(--font-size-base);padding:var(--spacing-0-625) var(--spacing-3);width:100%}input[type="file"]:focus{border-color:var(--accent);box-shadow:0 0 0 var(--spacing-3) oklch(from var(--accent) l c h/10%);outline:none}input[type="file"]:disabled{cursor:not-allowed;opacity:var(--opacity-60)}input[type="range"]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--background-alt);border-radius:var(--radius);height:var(--spacing-2);outline:none;width:100%}input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:var(--accent);border:var(--outline-width) solid var(--background-alt);border-radius:var(--radius-circle);box-shadow:0 0 0 var(--spacing-0-125) var(--accent);cursor:pointer;height:var(--spacing-5);width:var(--spacing-5)}input[type="range"]::-moz-range-thumb{background-color:var(--accent);border:var(--outline-width) solid var(--background-alt);border-radius:var(--radius-circle);box-shadow:0 0 0 var(--spacing-0-125) var(--accent);cursor:pointer;height:var(--spacing-5);width:var(--spacing-5)}input[type="range"]:focus::-webkit-slider-thumb{box-shadow:0 0 0 var(--spacing-0-125) var(--accent),0 0 0 var(--spacing-1) oklch(from var(--accent) l c h/10%)}input[type="range"]:focus::-moz-range-thumb{box-shadow:0 0 0 var(--spacing-0-125) var(--accent),0 0 0 var(--spacing-1) oklch(from var(--accent) l c h/10%)}fieldset{border:var(--border-width) solid var(--border);border-radius:var(--radius-md);margin:0 0 var(--spacing-6);padding:var(--spacing-4)}legend{color:var(--text);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);padding:0 var(--spacing-2)}.form-error{color:var(--error)}.form-error,.form-success{display:block;font-size:var(--font-size-xs);margin-top:var(--spacing-0-375)}.form-success{color:var(--success)}.input-group{display:flex;width:100%}.input-group__wrapper{background-color:var(--background-alt);border:var(--border-width) solid var(--border);border-radius:var(--radius-md);display:flex;flex:1;min-width:0;transition:border-color var(--transition-base),box-shadow var(--transition-base)}.input-group__wrapper:focus-within{border-color:var(--accent);box-shadow:0 0 0 var(--spacing-3) oklch(from var(--accent) l c h/10%);outline:none}.input-group__addon{align-items:center;background-color:var(--background);border:var(--border-width) solid var(--border);color:var(--text-dim);display:inline-flex;font-size:var(--font-size-base);padding:var(--spacing-0-625) var(--spacing-3);white-space:nowrap}.input-group__addon--prefix{border-radius:var(--radius-md) 0 0 var(--radius-md);border-right:none}.input-group__addon--suffix{border-left:none;border-radius:0 var(--radius-md) var(--radius-md) 0}.input-group__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:var(--border-width) solid var(--border);border-radius:0;color:var(--text);flex:1;font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-normal);min-width:0;padding:var(--spacing-0-625) var(--spacing-3);transition:border-color var(--transition-base)}.input-group__input::-moz-placeholder{color:var(--text-dim);opacity:var(--opacity-70)}.input-group__input::placeholder{color:var(--text-dim);opacity:var(--opacity-70)}.input-group__wrapper:has(.input-group__addon--prefix):not(:has(.input-group__addon--suffix)) .input-group__input{border-left:none;border-radius:0 var(--radius-md) var(--radius-md) 0}.input-group__wrapper:has(.input-group__addon--suffix):not(:has(.input-group__addon--prefix)) .input-group__input{border-radius:var(--radius-md) 0 0 var(--radius-md);border-right:none}.input-group__wrapper:has(.input-group__addon--prefix):has(.input-group__addon--suffix) .input-group__input{border-left:none;border-right:none}.input-group__input:focus{border-color:transparent;box-shadow:none;outline:none}.input-group__input:disabled,
|
|
93
|
+
.input-group__wrapper:has(.input-group__input:disabled){cursor:not-allowed;opacity:var(--opacity-60)}.input-group--error .input-group__wrapper{border-color:var(--error)}.input-group--error .input-group__wrapper:focus-within{border-color:var(--error);box-shadow:0 0 0 var(--spacing-3) oklch(from var(--error) l c h/10%)}.input-group--success .input-group__wrapper{border-color:var(--success)}.input-group--success .input-group__wrapper:focus-within{border-color:var(--success);box-shadow:0 0 0 var(--spacing-3) oklch(from var(--success) l c h/10%)}.form-row{display:flex;gap:var(--spacing-4);margin-bottom:var(--spacing-6)}.form-row .form-group{flex:1;margin-bottom:0}@media (width <= 640px){.form-row{flex-direction:column;gap:var(--spacing-0)}}main{max-width:100%;overflow-x:clip;width:100%}.layout__container{box-sizing:border-box;min-width:0;padding:0;width:100%}.container,.layout__container{margin:0 auto;max-width:var(--container-default)}.container{padding:0 var(--content-padding-x)}.card{background-color:var(--background-alt);border:var(--border-width) solid var(--border);border-radius:var(--radius-lg);box-sizing:border-box;color:var(--text);display:flex;flex-direction:column;min-width:0;padding:var(--spacing-6);transition:border-color var(--transition-base),box-shadow var(--transition-base),transform var(--transition-base);width:100%}.card--elevated{border:none;box-shadow:var(--shadow-md)}.card--elevated:hover{box-shadow:var(--shadow-lg);transform:translateY(calc(var(--spacing-0-125)*-1))}.card--outlined{background-color:transparent;border:var(--outline-width) solid var(--border)}.card--outlined:hover{border-color:var(--accent)}.card--filled{background-color:var(--background);border:var(--border-width) solid var(--border)}.card__header{border-bottom:var(--border-width) solid var(--border);margin-bottom:var(--spacing-4);padding-bottom:var(--spacing-4)}.card__header:empty{display:none}.card__body{flex:1}.card__body:empty{display:none}.card__body h2,
|
|
93
94
|
.card__body h3,
|
|
94
95
|
.card__body h4{color:var(--text)}.card a{text-decoration:none}
|
|
95
96
|
.card a:hover,.card:hover a{text-decoration:underline;text-underline-offset:.15em}.card__footer{border-top:var(--border-width) solid var(--border);margin-top:var(--spacing-4);padding-top:var(--spacing-4)}.card__footer:empty{display:none}.card__image{border-radius:var(--radius-lg) var(--radius-lg) 0 0;display:block;height:auto;margin:calc(var(--spacing-6)*-1) calc(var(--spacing-6)*-1) var(--spacing-6) calc(var(--spacing-6)*-1);-o-object-fit:cover;object-fit:cover;width:100%}.card:has(.card__image){padding-top:0}.card__image + .card__header{margin-top:0;padding-top:0}.card__title{color:var(--text);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin:0 0 var(--spacing-2) 0}.card__subtitle{color:var(--text-dim);font-size:var(--font-size-sm);margin:0}section{background-color:var(--background);color:var(--text)}.border{border:var(--border-width) solid var(--border)}.border-top{border-top:var(--border-width) solid var(--border)}.border-bottom{border-bottom:var(--border-width) solid var(--border)}.border-left{border-left:var(--border-width) solid var(--border)}.border-right{border-right:var(--border-width) solid var(--border)}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:.75rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-6{margin:1.5rem}.m-8{margin:2rem}.m-10{margin:2.5rem}.m-12{margin:3rem}.m-16{margin:4rem}.m-20{margin:5rem}.m-24{margin:6rem}.m-auto{margin:auto}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-20{margin-top:5rem}.mt-24{margin-top:6rem}.mt-auto{margin-top:auto}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-6{margin-right:1.5rem}.mr-8{margin-right:2rem}.mr-10{margin-right:2.5rem}.mr-12{margin-right:3rem}.mr-16{margin-right:4rem}.mr-20{margin-right:5rem}.mr-24{margin-right:6rem}.mr-auto{margin-right:auto}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mb-20{margin-bottom:5rem}.mb-24{margin-bottom:6rem}.mb-auto{margin-bottom:auto}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-6{margin-left:1.5rem}.ml-8{margin-left:2rem}.ml-10{margin-left:2.5rem}.ml-12{margin-left:3rem}.ml-16{margin-left:4rem}.ml-20{margin-left:5rem}.ml-24{margin-left:6rem}.ml-auto{margin-left:auto}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.mx-12{margin-left:3rem;margin-right:3rem}.mx-16{margin-left:4rem;margin-right:4rem}.mx-20{margin-left:5rem;margin-right:5rem}.mx-24{margin-left:6rem;margin-right:6rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-bottom:0;margin-top:0}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.my-8{margin-bottom:2rem;margin-top:2rem}.my-10{margin-bottom:2.5rem;margin-top:2.5rem}.my-12{margin-bottom:3rem;margin-top:3rem}.my-16{margin-bottom:4rem;margin-top:4rem}.my-20{margin-bottom:5rem;margin-top:5rem}.my-24{margin-bottom:6rem;margin-top:6rem}.my-auto{margin-bottom:auto;margin-top:auto}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-16{padding:4rem}.p-20{padding:5rem}.p-24{padding:6rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.pt-10{padding-top:2.5rem}.pt-12{padding-top:3rem}.pt-16{padding-top:4rem}.pt-20{padding-top:5rem}.pt-24{padding-top:6rem}.pr-0{padding-right:0}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-5{padding-right:1.25rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-16{padding-right:4rem}.pr-20{padding-right:5rem}.pr-24{padding-right:6rem}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-10{padding-left:2.5rem}.pl-12{padding-left:3rem}.pl-16{padding-left:4rem}.pl-20{padding-left:5rem}.pl-24{padding-left:6rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-12{padding-left:3rem;padding-right:3rem}.px-16{padding-left:4rem;padding-right:4rem}.px-20{padding-left:5rem;padding-right:5rem}.px-24{padding-left:6rem;padding-right:6rem}.py-0{padding-bottom:0;padding-top:0}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-10{padding-bottom:2.5rem;padding-top:2.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-20{padding-bottom:5rem;padding-top:5rem}.py-24{padding-bottom:6rem;padding-top:6rem}.container-sm{max-width:640px}.container-md,.container-sm{margin-left:auto;margin-right:auto;padding-left:var(--spacing-4);padding-right:var(--spacing-4)}.container-md{max-width:768px}.container-lg{max-width:1024px}.container-lg,.container-xl{margin-left:auto;margin-right:auto;padding-left:var(--spacing-4);padding-right:var(--spacing-4)}.container-xl{max-width:1280px}.container-2xl{max-width:1536px}.container-2xl,.container-full{margin-left:auto;margin-right:auto;padding-left:var(--spacing-4);padding-right:var(--spacing-4)}.container-full{max-width:100%}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.w-fit{width:-moz-fit-content;width:fit-content}.w-max{width:-moz-max-content;width:max-content}.w-min{width:-moz-min-content;width:min-content}.w-0{width:0}.w-1{width:.25rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-32{width:8rem}.w-40{width:10rem}.w-48{width:12rem}.w-56{width:14rem}.w-64{width:16rem}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.h-fit{height:-moz-fit-content;height:fit-content}.h-max{height:-moz-max-content;height:max-content}.h-min{height:-moz-min-content;height:min-content}.h-0{height:0}.h-1{height:.25rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-32{height:8rem}.h-40{height:10rem}.h-48{height:12rem}.h-56{height:14rem}.h-64{height:16rem}.min-w-0{min-width:0}.min-w-full{min-width:100%}.min-w-min{min-width:-moz-min-content;min-width:min-content}.min-w-max{min-width:-moz-max-content;min-width:max-content}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.min-h-0{min-height:0}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.min-h-fit{min-height:-moz-fit-content;min-height:fit-content}.min-h-max{min-height:-moz-max-content;min-height:max-content}.min-h-min{min-height:-moz-min-content;min-height:min-content}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.max-w-sm{max-width:24rem}.max-w-md{max-width:28rem}.max-w-lg{max-width:32rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.max-w-screen-sm{max-width:640px}.max-w-screen-md{max-width:768px}.max-w-screen-lg{max-width:1024px}.max-w-screen-xl{max-width:1280px}.max-w-screen-2xl{max-width:1536px}.max-h-none{max-height:none}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.max-h-fit{max-height:-moz-fit-content;max-height:fit-content}.max-h-max{max-height:-moz-max-content;max-height:max-content}.max-h-min{max-height:-moz-min-content;max-height:min-content}.max-h-0{max-height:0}.max-h-1{max-height:.25rem}.max-h-2{max-height:.5rem}.max-h-3{max-height:.75rem}.max-h-4{max-height:1rem}.max-h-5{max-height:1.25rem}.max-h-6{max-height:1.5rem}.max-h-8{max-height:2rem}.max-h-10{max-height:2.5rem}.max-h-12{max-height:3rem}.max-h-16{max-height:4rem}.max-h-20{max-height:5rem}.max-h-24{max-height:6rem}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-56{max-height:14rem}.max-h-64{max-height:16rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.inline-grid{display:inline-grid}.table{display:table}.table-row{display:table-row}.table-cell{display:table-cell}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}@media (width >= 640px){.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}}@media (width >= 768px){.md\:block{display:block}.md\:inline-block{display:inline-block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:inline-flex{display:inline-flex}.md\:grid{display:grid}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}}@media (width >= 1024px){.lg\:block{display:block}.lg\:inline-block{display:inline-block}.lg\:inline{display:inline}.lg\:flex{display:flex}.lg\:inline-flex{display:inline-flex}.lg\:grid{display:grid}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}}@media (width >= 1280px){.xl\:block{display:block}.xl\:inline-block{display:inline-block}.xl\:inline{display:inline}.xl\:flex{display:flex}.xl\:inline-flex{display:inline-flex}.xl\:grid{display:grid}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}}@media (width >= 1536px){.xxl\:block{display:block}.xxl\:inline-block{display:inline-block}.xxl\:inline{display:inline}.xxl\:flex{display:flex}.xxl\:inline-flex{display:inline-flex}.xxl\:grid{display:grid}.xxl\:inline-grid{display:inline-grid}.xxl\:hidden{display:none}}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-auto{z-index:auto}.z-dropdown{z-index:1000}.z-dropdown-submenu{z-index:1001}.z-modal{z-index:2000}.z-modal-backdrop{z-index:1999}.z-tooltip{z-index:3000}.z-toast{z-index:4000}.z-navbar{z-index:5000}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-t-sm{border-top-left-radius:.125rem;border-top-right-radius:.125rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}.rounded-t-full{border-top-left-radius:9999px;border-top-right-radius:9999px}.rounded-r-none{border-bottom-right-radius:0;border-top-right-radius:0}.rounded-r-sm{border-bottom-right-radius:.125rem;border-top-right-radius:.125rem}.rounded-r{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.rounded-r-md{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem}.rounded-r-lg{border-bottom-right-radius:.5rem;border-top-right-radius:.5rem}.rounded-r-xl{border-bottom-right-radius:.75rem;border-top-right-radius:.75rem}.rounded-r-2xl{border-bottom-right-radius:1rem;border-top-right-radius:1rem}.rounded-r-full{border-bottom-right-radius:9999px;border-top-right-radius:9999px}.rounded-b-none{border-bottom-left-radius:0;border-bottom-right-radius:0}.rounded-b-sm{border-bottom-left-radius:.125rem;border-bottom-right-radius:.125rem}.rounded-b{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-b-md{border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-b-lg{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-b-2xl{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.rounded-b-full{border-bottom-left-radius:9999px;border-bottom-right-radius:9999px}.rounded-l-none{border-bottom-left-radius:0;border-top-left-radius:0}.rounded-l-sm{border-bottom-left-radius:.125rem;border-top-left-radius:.125rem}.rounded-l{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.rounded-l-md{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem}.rounded-l-lg{border-bottom-left-radius:.5rem;border-top-left-radius:.5rem}.rounded-l-xl{border-bottom-left-radius:.75rem;border-top-left-radius:.75rem}.rounded-l-2xl{border-bottom-left-radius:1rem;border-top-left-radius:1rem}.rounded-l-full{border-bottom-left-radius:9999px;border-top-left-radius:9999px}.border-0{border-width:0}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-8{border-width:8px}.border-t-0{border-top-width:0}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-t-4{border-top-width:4px}.border-t-8{border-top-width:8px}.border-r-0{border-right-width:0}.border-r{border-right-width:1px}.border-r-2{border-right-width:2px}.border-r-4{border-right-width:4px}.border-r-8{border-right-width:8px}.border-b-0{border-bottom-width:0}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-b-4{border-bottom-width:4px}.border-b-8{border-bottom-width:8px}.border-l-0{border-left-width:0}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-l-8{border-left-width:8px}.border-transparent{border-color:transparent}.border-color{border-color:var(--border)}.border-accent{border-color:var(--accent)}.border-success{border-color:var(--success)}.border-warning{border-color:var(--warning)}.border-error{border-color:var(--error)}.border-info{border-color:var(--info)}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-nowrap{flex-wrap:nowrap}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.self-auto{align-self:auto}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-stretch{align-self:stretch}.self-baseline{align-self:baseline}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-initial{flex:0 1 auto}.flex-none{flex:none}.grow{flex-grow:1}.grow-0{flex-grow:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-none{grid-template-columns:none}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.grid-rows-none{grid-template-rows:none}.col-auto{grid-column:auto}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-full{grid-column:1/-1}.row-auto{grid-row:auto}.row-span-1{grid-row:span 1/span 1}.row-span-2{grid-row:span 2/span 2}.row-span-3{grid-row:span 3/span 3}.row-span-4{grid-row:span 4/span 4}.row-span-5{grid-row:span 5/span 5}.row-span-6{grid-row:span 6/span 6}.row-span-full{grid-row:1/-1}.gap-0{gap:0}.gap-1{gap:var(--spacing-1)}.gap-2{gap:var(--spacing-2)}.gap-3{gap:var(--spacing-3)}.gap-4{gap:var(--spacing-4)}.gap-5{gap:var(--spacing-5)}.gap-6{gap:var(--spacing-6)}.gap-8{gap:var(--spacing-8)}.gap-10{gap:var(--spacing-10)}.gap-12{gap:var(--spacing-12)}.gap-16{gap:var(--spacing-16)}.gap-20{gap:var(--spacing-20)}.gap-24{gap:var(--spacing-24)}.gap-x-0{-moz-column-gap:0;column-gap:0}.gap-x-1{-moz-column-gap:var(--spacing-1);column-gap:var(--spacing-1)}.gap-x-2{-moz-column-gap:var(--spacing-2);column-gap:var(--spacing-2)}.gap-x-3{-moz-column-gap:var(--spacing-3);column-gap:var(--spacing-3)}.gap-x-4{-moz-column-gap:var(--spacing-4);column-gap:var(--spacing-4)}.gap-x-5{-moz-column-gap:var(--spacing-5);column-gap:var(--spacing-5)}.gap-x-6{-moz-column-gap:var(--spacing-6);column-gap:var(--spacing-6)}.gap-x-8{-moz-column-gap:var(--spacing-8);column-gap:var(--spacing-8)}.gap-x-10{-moz-column-gap:var(--spacing-10);column-gap:var(--spacing-10)}.gap-x-12{-moz-column-gap:var(--spacing-12);column-gap:var(--spacing-12)}.gap-x-16{-moz-column-gap:var(--spacing-16);column-gap:var(--spacing-16)}.gap-x-20{-moz-column-gap:var(--spacing-20);column-gap:var(--spacing-20)}.gap-x-24{-moz-column-gap:var(--spacing-24);column-gap:var(--spacing-24)}.gap-y-0{row-gap:0}.gap-y-1{row-gap:var(--spacing-1)}.gap-y-2{row-gap:var(--spacing-2)}.gap-y-3{row-gap:var(--spacing-3)}.gap-y-4{row-gap:var(--spacing-4)}.gap-y-5{row-gap:var(--spacing-5)}.gap-y-6{row-gap:var(--spacing-6)}.gap-y-8{row-gap:var(--spacing-8)}.gap-y-10{row-gap:var(--spacing-10)}.gap-y-12{row-gap:var(--spacing-12)}.gap-y-16{row-gap:var(--spacing-16)}.gap-y-20{row-gap:var(--spacing-20)}.gap-y-24{row-gap:var(--spacing-24)}.transition-none{transition-property:none}.transition-all{transition-property:all}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke}.transition-opacity{transition-property:opacity}.transition-shadow{transition-property:box-shadow}.transition-transform{transition-property:transform}.duration-75{transition-duration:75ms}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.duration-1000{transition-duration:1s}.ease-linear{transition-timing-function:linear}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-75{transition-delay:75ms}.delay-100{transition-delay:.1s}.delay-150{transition-delay:.15s}.delay-200{transition-delay:.2s}.delay-300{transition-delay:.3s}.delay-500{transition-delay:.5s}.delay-700{transition-delay:.7s}.delay-1000{transition-delay:1s}.transition-fast{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-base{transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-slow{transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (prefers-reduced-motion:reduce){
|
|
@@ -219,7 +220,8 @@ div.navbar__link{background:none;border:none;color:inherit;cursor:pointer;font:i
|
|
|
219
220
|
#themes-preview .themes-page__preview-dropdown-menu .dropdown__item:focus-visible:not(.dropdown__item--disabled) span,#themes-preview .themes-page__preview-dropdown-menu .dropdown__item:hover:not(.dropdown__item--disabled) span,
|
|
220
221
|
#themes-preview .themes-page__preview-dropdown-menu .dropdown__item[aria-current="true"] span,
|
|
221
222
|
#themes-preview .themes-page__preview-dropdown-menu .dropdown__item[aria-current="true"]:focus-visible span,
|
|
222
|
-
#themes-preview .themes-page__preview-dropdown-menu .dropdown__item[aria-current="true"]:hover span{color:var(--accent)!important}
|
|
223
|
+
#themes-preview .themes-page__preview-dropdown-menu .dropdown__item[aria-current="true"]:hover span{color:var(--accent)!important}.block-preview-wrapper{border:1px solid var(--border);border-radius:var(--radius-lg);margin:var(--spacing-6) 0;overflow:hidden}.block-preview-wrapper--hero{background:var(--background-alt);padding:var(--spacing-16) var(--spacing-6);text-align:center}.block-preview-wrapper--pricing{background:var(--background-alt);padding:var(--spacing-6)}.block-preview-wrapper--docs{min-height:16rem}.block-preview-wrapper--dashboard{min-height:24rem}.docs-dim{color:var(--text-dim);font-size:var(--font-size-sm);margin-top:0}.landing-hero__title{color:var(--text);font-size:var(--font-size-4xl);font-weight:var(--font-weight-extrabold);line-height:var(--line-height-tight);margin:0 0 var(--spacing-4)}.landing-hero__subtitle{color:var(--text-dim);font-size:var(--font-size-xl);line-height:var(--line-height-relaxed);margin:0 auto var(--spacing-8);max-width:var(--spacing-175)}.landing-hero__ctas{display:flex;flex-wrap:wrap;gap:var(--spacing-3);justify-content:center}.pricing-grid{display:grid;gap:var(--spacing-6);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));margin:0 auto;max-width:56rem}.pricing-card{display:flex;flex-direction:column}.pricing-card .card__body{display:flex;flex:1;flex-direction:column}.pricing-card--featured{border-color:var(--accent);box-shadow:0 0 0 2px oklch(from var(--accent) l c h/20%)}.pricing-card__badge{align-self:flex-start;margin-bottom:var(--spacing-2)}.pricing-card__name{color:var(--text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin:0 0 var(--spacing-2)}.pricing-card__price{color:var(--text);font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);margin:0 0 var(--spacing-0-5)}.pricing-card__currency,
|
|
224
|
+
.pricing-card__period-inline{color:var(--text-dim);font-size:var(--font-size-lg);font-weight:var(--font-weight-normal)}.pricing-card__period{color:var(--text-dim);font-size:var(--font-size-sm);margin:0 0 var(--spacing-4)}.pricing-card__features{color:var(--text);flex:1;font-size:var(--font-size-sm);list-style:none;margin:0 0 var(--spacing-6);padding:0}.pricing-card__features li{padding:var(--spacing-1) 0;padding-left:var(--spacing-4);position:relative}.pricing-card__features li::before{background:var(--accent);border-radius:50%;content:"";height:.35em;left:0;position:absolute;top:.65em;width:.35em}.pricing-card__cta{justify-content:center;width:100%}.dashboard-page__header{margin-bottom:var(--spacing-6)}.dashboard-page__title{color:var(--text);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin:0 0 var(--spacing-1)}.dashboard-page__subtitle{color:var(--text-dim);font-size:var(--font-size-sm);margin:0}.dashboard-page__stats-grid{display:grid;gap:var(--spacing-4);grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));margin-bottom:var(--spacing-8)}.dashboard-page__stat .card__body{display:flex;flex-direction:column;gap:var(--spacing-1)}.dashboard-page__stat .card__label{color:var(--text-dim);font-size:var(--font-size-sm)}.dashboard-page__stat .card__value{color:var(--text);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.dashboard-page__section-title{color:var(--text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin:0 0 var(--spacing-4)}.docs-layout-demo{display:flex;min-height:16rem}.docs-layout-demo__sidebar{background:var(--background-alt);border-right:1px solid var(--border);flex-shrink:0;padding:var(--spacing-4);width:12rem}.docs-layout-demo__nav{display:flex;flex-direction:column;gap:var(--spacing-1)}.docs-layout-demo__nav-link{border-radius:var(--radius-md);color:var(--text);display:block;font-size:var(--font-size-sm);padding:var(--spacing-2) var(--spacing-3);text-decoration:none}.docs-layout-demo__nav-link:hover{background:var(--background)}.docs-layout-demo__nav-link--active{background:var(--accent);color:var(--accent-text)}.docs-layout-demo__main{flex:1;overflow:auto;padding:var(--spacing-6)}.docs-layout-demo__header{margin-bottom:var(--spacing-4)}.docs-layout-demo__title{color:var(--text);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin:0 0 var(--spacing-1)}.docs-layout-demo__desc{color:var(--text-dim);margin:0}.docs-layout-demo__content{margin-top:var(--spacing-4)}[data-theme="github-dark-classic"]{--bg:oklch(18% 0.012 264deg);--bg-alt:oklch(15% 0.01 264deg);--current-line:oklch(20% 0.012 264deg);--selection:oklch(28% 0.08 255deg);--fg:oklch(91% 0.004 264deg);--fg-dim:oklch(66% 0.01 264deg);--comment:oklch(52% 0.015 264deg);--cyan:oklch(72% 0.12 250deg);--green:oklch(72% 0.19 145deg);--orange:oklch(78% 0.12 55deg);--pink:oklch(68% 0.14 15deg);--purple:oklch(68% 0.14 300deg);--red:oklch(68% 0.16 15deg);--yellow:oklch(88% 0.12 95deg);--background:var(--bg);--background-alt:var(--bg-alt);--text:var(--fg);--text-dim:var(--fg-dim);--icon:var(--fg);--icon-dim:oklch(75% 0.01 264deg);--border:oklch(13% 0.01 264deg);--accent:oklch(45% 0.18 250deg);--accent-hover:oklch(48% 0.18 250deg);--accent-text:oklch(100% 0 0deg);--accent-text-on-hover:var(--accent-text);--accent-fg:var(--cyan);--accent-fg-hover:oklch(78% 0.12 250deg);--success:var(--green);--success-hover:oklch(78% 0.16 145deg);--success-text:oklch(100% 0 0deg);--success-text-on-solid:oklch(22% 0.03 145deg);--warning:var(--orange);--warning-hover:oklch(85% 0.1 55deg);--warning-text:oklch(100% 0 0deg);--warning-text-on-solid:oklch(22% 0.02 55deg);--error:var(--red);--error-hover:oklch(75% 0.14 15deg);--error-text:oklch(100% 0 0deg);--error-text-on-solid:oklch(22% 0.03 25deg);--info:var(--cyan);--info-hover:oklch(78% 0.1 250deg);--info-text:oklch(100% 0 0deg);--info-text-on-solid:oklch(22% 0.03 250deg);--scrollbar-thumb:oklch(42% 0.02 264deg);--scrollbar-thumb-hover:oklch(52% 0.03 264deg);--scrollbar-thumb-active:oklch(58% 0.04 264deg);.card .card__body h2,
|
|
223
225
|
.card .card__body h3,
|
|
224
226
|
.card .card__body h4,.footer__link{color:var(--fg)}}@supports (color:oklch(from red l c h)){[data-theme="github-dark-classic"]{--color-accent-50:oklch(from var(--accent) 0.97deg 0.03 h);--color-accent-100:oklch(from var(--accent) 0.93deg 0.06 h);--color-accent-200:oklch(from var(--accent) 0.88deg 0.1 h);--color-accent-300:oklch(from var(--accent) 0.78deg 0.14 h);--color-accent-400:oklch(from var(--accent) 0.65deg 0.16 h);--color-accent-500:var(--accent);--color-accent-600:oklch(from var(--accent) 0.45deg 0.18 h);--color-accent-700:oklch(from var(--accent) 0.38deg 0.16 h);--color-accent-800:oklch(from var(--accent) 0.3deg 0.12 h);--color-accent-900:oklch(from var(--accent) 0.22deg 0.08 h);--color-accent-950:oklch(from var(--accent) 0.15deg 0.05 h);--color-success-50:oklch(from var(--success) 0.97deg 0.03 h);--color-success-100:oklch(from var(--success) 0.93deg 0.06 h);--color-success-200:oklch(from var(--success) 0.88deg 0.1 h);--color-success-300:oklch(from var(--success) 0.78deg 0.14 h);--color-success-400:oklch(from var(--success) 0.65deg 0.16 h);--color-success-500:var(--success);--color-success-600:oklch(from var(--success) 0.45deg 0.18 h);--color-success-700:oklch(from var(--success) 0.38deg 0.16 h);--color-success-800:oklch(from var(--success) 0.3deg 0.12 h);--color-success-900:oklch(from var(--success) 0.22deg 0.08 h);--color-success-950:oklch(from var(--success) 0.15deg 0.05 h);--color-warning-50:oklch(from var(--warning) 0.97deg 0.03 h);--color-warning-100:oklch(from var(--warning) 0.93deg 0.06 h);--color-warning-200:oklch(from var(--warning) 0.88deg 0.1 h);--color-warning-300:oklch(from var(--warning) 0.82deg 0.12 h);--color-warning-400:oklch(from var(--warning) 0.75deg 0.14 h);--color-warning-500:var(--warning);--color-warning-600:oklch(from var(--warning) 0.55deg 0.14 h);--color-warning-700:oklch(from var(--warning) 0.45deg 0.12 h);--color-warning-800:oklch(from var(--warning) 0.35deg 0.1 h);--color-warning-900:oklch(from var(--warning) 0.25deg 0.06 h);--color-warning-950:oklch(from var(--warning) 0.18deg 0.04 h);--color-error-50:oklch(from var(--error) 0.97deg 0.03 h);--color-error-100:oklch(from var(--error) 0.93deg 0.06 h);--color-error-200:oklch(from var(--error) 0.88deg 0.1 h);--color-error-300:oklch(from var(--error) 0.78deg 0.14 h);--color-error-400:oklch(from var(--error) 0.65deg 0.18 h);--color-error-500:var(--error);--color-error-600:oklch(from var(--error) 0.45deg 0.2 h);--color-error-700:oklch(from var(--error) 0.38deg 0.18 h);--color-error-800:oklch(from var(--error) 0.3deg 0.14 h);--color-error-900:oklch(from var(--error) 0.22deg 0.1 h);--color-error-950:oklch(from var(--error) 0.15deg 0.06 h);--color-info-50:oklch(from var(--info) 0.97deg 0.03 h);--color-info-100:oklch(from var(--info) 0.93deg 0.06 h);--color-info-200:oklch(from var(--info) 0.88deg 0.08 h);--color-info-300:oklch(from var(--info) 0.78deg 0.1 h);--color-info-400:oklch(from var(--info) 0.65deg 0.12 h);--color-info-500:var(--info);--color-info-600:oklch(from var(--info) 0.45deg 0.12 h);--color-info-700:oklch(from var(--info) 0.38deg 0.1 h);--color-info-800:oklch(from var(--info) 0.3deg 0.08 h);--color-info-900:oklch(from var(--info) 0.22deg 0.06 h);--color-info-950:oklch(from var(--info) 0.15deg 0.04 h)}}
|
|
225
227
|
[data-theme="github-dark-classic"] ::-webkit-scrollbar-thumb,[data-theme="github-dark-classic"]::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb)}
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@ interface Props {
|
|
|
13
13
|
links?: FooterLink[];
|
|
14
14
|
/** Optional class for the root element */
|
|
15
15
|
class?: string;
|
|
16
|
-
/** Optional version string (e.g. from package.json); shown as "v0.0.
|
|
16
|
+
/** Optional version string (e.g. from package.json); shown as "v0.0.65" with link to CHANGELOG */
|
|
17
17
|
version?: string;
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
/**
|
|
3
|
+
* Input Group – input with optional prefix and/or suffix addons.
|
|
4
|
+
* BEM: input-group, input-group__wrapper, input-group__addon, input-group__addon--prefix|--suffix, input-group__input.
|
|
5
|
+
* Uses design tokens (--border, --accent, --text-dim, --radius-md, etc.).
|
|
6
|
+
*/
|
|
7
|
+
interface Props {
|
|
8
|
+
id?: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
|
|
11
|
+
value?: string;
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
required?: boolean;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
readonly?: boolean;
|
|
16
|
+
autocomplete?: string;
|
|
17
|
+
class?: string;
|
|
18
|
+
error?: boolean;
|
|
19
|
+
success?: boolean;
|
|
20
|
+
/** ID for the inner input (for label for=""). */
|
|
21
|
+
inputId?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const {
|
|
25
|
+
id,
|
|
26
|
+
name,
|
|
27
|
+
type = 'text',
|
|
28
|
+
value,
|
|
29
|
+
placeholder,
|
|
30
|
+
required = false,
|
|
31
|
+
disabled = false,
|
|
32
|
+
readonly = false,
|
|
33
|
+
autocomplete,
|
|
34
|
+
class: className = '',
|
|
35
|
+
error = false,
|
|
36
|
+
success = false,
|
|
37
|
+
inputId,
|
|
38
|
+
} = Astro.props;
|
|
39
|
+
|
|
40
|
+
const inputIdFinal = inputId ?? id ?? `input-group-${Math.random().toString(36).slice(2, 9)}`;
|
|
41
|
+
const errorClass = error ? 'input-group--error' : '';
|
|
42
|
+
const successClass = success ? 'input-group--success' : '';
|
|
43
|
+
const rootClass = ['input-group', errorClass, successClass, className].filter(Boolean).join(' ');
|
|
44
|
+
const hasPrefix = Astro.slots.has('prefix');
|
|
45
|
+
const hasSuffix = Astro.slots.has('suffix');
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
<div class={rootClass}>
|
|
49
|
+
<div class="input-group__wrapper">
|
|
50
|
+
{hasPrefix && (
|
|
51
|
+
<span class="input-group__addon input-group__addon--prefix" aria-hidden="true">
|
|
52
|
+
<slot name="prefix" />
|
|
53
|
+
</span>
|
|
54
|
+
)}
|
|
55
|
+
<input
|
|
56
|
+
id={inputIdFinal}
|
|
57
|
+
name={name}
|
|
58
|
+
type={type}
|
|
59
|
+
value={value}
|
|
60
|
+
placeholder={placeholder}
|
|
61
|
+
required={required}
|
|
62
|
+
disabled={disabled}
|
|
63
|
+
readonly={readonly}
|
|
64
|
+
autocomplete={autocomplete}
|
|
65
|
+
class="input-group__input"
|
|
66
|
+
aria-invalid={error ? 'true' : undefined}
|
|
67
|
+
/>
|
|
68
|
+
{hasSuffix && (
|
|
69
|
+
<span class="input-group__addon input-group__addon--suffix" aria-hidden="true">
|
|
70
|
+
<slot name="suffix" />
|
|
71
|
+
</span>
|
|
72
|
+
)}
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
Design system · Vanilla · Astro · Svelte
|
|
16
16
|
</pre>
|
|
17
17
|
|
|
18
|
-
Astro project with Rizzo CSS. Scaffolded with `npx rizzo-css init` when you chose **Create new** and Astro, then **Landing**, **Docs**, **Dashboard**, or **Full**. **Full** = clone of the docs site. **Landing** / **Docs** / **Dashboard** = base + component picker (all
|
|
18
|
+
Astro project with Rizzo CSS. Scaffolded with `npx rizzo-css init` when you chose **Create new** and Astro, then **Landing**, **Docs**, **Dashboard**, or **Full**. **Full** = clone of the docs site. **Landing** / **Docs** / **Dashboard** = base + component picker (all 57 or pick). Same template choice for **Add to existing** (`npx rizzo-css add`).
|
|
19
19
|
|
|
20
20
|
## Setup
|
|
21
21
|
|
|
@@ -10,7 +10,7 @@ const ADD_COMMAND = 'npx rizzo-css add <ComponentName>';
|
|
|
10
10
|
<div class="home__container">
|
|
11
11
|
<header class="home__hero">
|
|
12
12
|
<h1 class="home__title">Rizzo CSS</h1>
|
|
13
|
-
<p class="home__subtitle">A modern CSS design system with semantic theming, accessibility-first components, and one CLI for Vanilla, Astro, and
|
|
13
|
+
<p class="home__subtitle">A modern CSS design system with semantic theming, accessibility-first components, and one CLI for Vanilla, Astro, Svelte, React, and Vue. Start here then make it your own.</p>
|
|
14
14
|
<div class="home__hero-ctas">
|
|
15
15
|
<a href={`${DOCS_BASE}/docs/getting-started`} class="btn btn-primary home__hero-cta" target="_blank" rel="noopener noreferrer">Get Started<span class="sr-only"> (opens in new tab)</span></a>
|
|
16
16
|
<a href={`${DOCS_BASE}/docs/components`} class="btn btn-outline home__hero-cta" target="_blank" rel="noopener noreferrer">View Components<span class="sr-only"> (opens in new tab)</span></a>
|
|
@@ -19,7 +19,7 @@ const ADD_COMMAND = 'npx rizzo-css add <ComponentName>';
|
|
|
19
19
|
|
|
20
20
|
<section class="home__features" aria-labelledby="home-features-heading">
|
|
21
21
|
<h2 id="home-features-heading" class="home__section-title">Features</h2>
|
|
22
|
-
<p class="home__features-intro">A complete design system that works across Vanilla, Astro, and
|
|
22
|
+
<p class="home__features-intro">A complete design system that works across Vanilla, Astro, Svelte, React, and Vue — same CSS, same components, zero lock-in.</p>
|
|
23
23
|
<div class="home__features-featured">
|
|
24
24
|
<div class="home__card home__card--featured">
|
|
25
25
|
<span class="home__card-icon" aria-hidden="true">Themes</span>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
Design system · Vanilla · Astro · Svelte
|
|
16
16
|
</pre>
|
|
17
17
|
|
|
18
|
-
Astro project with Rizzo CSS. Scaffolded with `npx rizzo-css init` when you chose **Create new** and Astro, then **Full** template. **Full** = clone of the Rizzo docs site (no component picker). **Landing** / **Docs** / **Dashboard** = base + component picker (all
|
|
18
|
+
Astro project with Rizzo CSS. Scaffolded with `npx rizzo-css init` when you chose **Create new** and Astro, then **Full** template. **Full** = clone of the Rizzo docs site (no component picker). **Landing** / **Docs** / **Dashboard** = base + component picker (all 57 or pick). Same template choice for **Add to existing** (`npx rizzo-css add`).
|
|
19
19
|
|
|
20
20
|
## Setup
|
|
21
21
|
|
|
@@ -10,7 +10,7 @@ const ADD_COMMAND = 'npx rizzo-css add <ComponentName>';
|
|
|
10
10
|
<div class="home__container">
|
|
11
11
|
<header class="home__hero">
|
|
12
12
|
<h1 class="home__title">Rizzo CSS</h1>
|
|
13
|
-
<p class="home__subtitle">A modern CSS design system with semantic theming, accessibility-first components, and one CLI for Vanilla, Astro, and
|
|
13
|
+
<p class="home__subtitle">A modern CSS design system with semantic theming, accessibility-first components, and one CLI for Vanilla, Astro, Svelte, React, and Vue. Start here then make it your own.</p>
|
|
14
14
|
<div class="home__hero-ctas">
|
|
15
15
|
<a href={`${DOCS_BASE}/docs/getting-started`} class="btn btn-primary home__hero-cta" target="_blank" rel="noopener noreferrer">Get Started<span class="sr-only"> (opens in new tab)</span></a>
|
|
16
16
|
<a href={`${DOCS_BASE}/docs/components`} class="btn btn-outline home__hero-cta" target="_blank" rel="noopener noreferrer">View Components<span class="sr-only"> (opens in new tab)</span></a>
|
|
@@ -19,7 +19,7 @@ const ADD_COMMAND = 'npx rizzo-css add <ComponentName>';
|
|
|
19
19
|
|
|
20
20
|
<section class="home__features" aria-labelledby="home-features-heading">
|
|
21
21
|
<h2 id="home-features-heading" class="home__section-title">Features</h2>
|
|
22
|
-
<p class="home__features-intro">A complete design system that works across Vanilla, Astro, and
|
|
22
|
+
<p class="home__features-intro">A complete design system that works across Vanilla, Astro, Svelte, React, and Vue — same CSS, same components, zero lock-in.</p>
|
|
23
23
|
<div class="home__features-featured">
|
|
24
24
|
<div class="home__card home__card--featured">
|
|
25
25
|
<span class="home__card-icon" aria-hidden="true">Themes</span>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# React + Rizzo CSS
|
|
2
|
+
|
|
3
|
+
<pre style="font-family: ui-monospace, monospace; font-size: 0.85em; line-height: 1.2;">
|
|
4
|
+
/\___/\
|
|
5
|
+
__( o o )__
|
|
6
|
+
( =^= )
|
|
7
|
+
_/ ~ \_
|
|
8
|
+
/ \_____/ \
|
|
9
|
+
<span style="color:#c44536"> ____ </span><span style="color:#e07c3e"> ___ _</span><span style="color:#d4a800">______</span><span style="color:#2d9d78">______</span><span style="color:#0052bd"> _</span><span style="color:#7c3aed">___ __</span><span style="color:#d946ef">__ ____</span>
|
|
10
|
+
<span style="color:#c44536">| _ \</span><span style="color:#e07c3e">|_ _|_</span><span style="color:#d4a800">_ /__</span><span style="color:#2d9d78"> / _ </span><span style="color:#0052bd">\ / </span><span style="color:#7c3aed">___/ _</span><span style="color:#d946ef">__/ ___|</span>
|
|
11
|
+
<span style="color:#c44536">| |_) </span><span style="color:#e07c3e">|| | </span><span style="color:#d4a800">/ / /</span><span style="color:#2d9d78"> / | |</span><span style="color:#0052bd"> | | |</span><span style="color:#7c3aed"> \__</span><span style="color:#d946ef">_ \___ \</span>
|
|
12
|
+
<span style="color:#c44536">| _ <</span><span style="color:#e07c3e"> | | /</span><span style="color:#d4a800"> /_ / </span><span style="color:#2d9d78">/| |_|</span><span style="color:#0052bd"> | | |</span><span style="color:#7c3aed">___ __</span><span style="color:#d946ef">_) |__) |</span>
|
|
13
|
+
<span style="color:#c44536">|_| \_</span><span style="color:#e07c3e">\___/_</span><span style="color:#d4a800">___/__</span><span style="color:#2d9d78">__\___</span><span style="color:#0052bd">/ \_</span><span style="color:#7c3aed">___|__</span><span style="color:#d946ef">__/____/</span>
|
|
14
|
+
|
|
15
|
+
Design system · Vanilla · Astro · Svelte · React · Vue
|
|
16
|
+
</pre>
|
|
17
|
+
|
|
18
|
+
Vite + React project with Rizzo CSS. Scaffolded with `npx rizzo-css init` when you chose **Create new** and React, then **Landing**, **Docs**, **Dashboard**, or **Full**. Same template choice for **Add to existing** (`npx rizzo-css add`).
|
|
19
|
+
|
|
20
|
+
## Setup
|
|
21
|
+
|
|
22
|
+
1. Install dependencies:
|
|
23
|
+
```bash
|
|
24
|
+
pnpm install
|
|
25
|
+
# or: npm install
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
2. Start the dev server:
|
|
29
|
+
```bash
|
|
30
|
+
pnpm dev
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Project structure
|
|
34
|
+
|
|
35
|
+
- `vite.config.ts` — Vite configuration
|
|
36
|
+
- `index.html` — HTML shell with Rizzo CSS and theme (edit `data-theme` for default)
|
|
37
|
+
- `src/main.tsx` — Entry point
|
|
38
|
+
- `src/App.tsx` — Root component
|
|
39
|
+
- `public/css/rizzo.min.css` — Rizzo CSS bundle (added by CLI; font URLs point to `/assets/fonts/`)
|
|
40
|
+
- `public/assets/fonts/` — Rizzo font files (added by CLI)
|
|
41
|
+
- `README-RIZZO.md` — This file (scaffold docs; does not replace your project README)
|
|
42
|
+
- `LICENSE-RIZZO` — Rizzo CSS license (does not replace your project LICENSE)
|
|
43
|
+
|
|
44
|
+
## Commands
|
|
45
|
+
|
|
46
|
+
- `pnpm dev` — Start dev server
|
|
47
|
+
- `pnpm build` — Build for production
|
|
48
|
+
- `pnpm preview` — Preview production build
|
|
49
|
+
|
|
50
|
+
Docs: [rizzo-css.vercel.app](https://rizzo-css.vercel.app)
|