rizzo-css 0.0.80 → 0.0.82
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 +1 -1
- package/bin/rizzo-css.js +15 -3
- package/package.json +1 -1
- package/scaffold/react/DocsSidebar.tsx +130 -28
- package/scaffold/react/ThemeIcon.tsx +57 -0
- package/scaffold/react/base/package.json +1 -1
- package/scaffold/react/themes.ts +54 -0
- package/scaffold/react/variants/full/README-RIZZO.md +35 -0
- package/scaffold/react/variants/full/package.json +24 -0
- package/scaffold/react/variants/full/src/App.tsx +41 -0
- package/scaffold/react/variants/full/src/config/componentCategories.ts +43 -0
- package/scaffold/react/variants/full/src/config/docsNav.ts +70 -0
- package/scaffold/react/variants/full/src/index.css +96 -0
- package/scaffold/react/variants/full/src/layouts/BlocksLayout.tsx +124 -0
- package/scaffold/react/variants/full/src/layouts/DocsLayout.tsx +93 -0
- package/scaffold/react/variants/full/src/main.tsx +13 -0
- package/scaffold/react/variants/full/src/views/BlocksIndex.tsx +56 -0
- package/scaffold/react/variants/full/src/views/DocsComponents.tsx +56 -0
- package/scaffold/react/variants/full/src/views/DocsGettingStarted.tsx +27 -0
- package/scaffold/react/variants/full/src/views/DocsIndex.tsx +39 -0
- package/scaffold/react/variants/full/src/views/DocsOverview.tsx +39 -0
- package/scaffold/react/variants/full/src/views/Home.tsx +104 -0
- package/scaffold/react/variants/full/src/views/Themes.tsx +118 -0
- package/scaffold/svelte/Settings.svelte +11 -48
- package/scaffold/svelte/variants/full/README-RIZZO.md +1 -0
- package/scaffold/svelte/variants/full/src/config/docsNav.ts +23 -3
- package/scaffold/svelte/variants/full/src/routes/+layout.svelte +4 -1
- package/scaffold/svelte/variants/full/src/routes/blocks/+layout.svelte +4 -2
- package/scaffold/svelte/variants/full/src/routes/docs/+layout.svelte +3 -1
- package/scaffold/svelte/variants/full/src/routes/themes/+page.svelte +130 -69
- package/scaffold/vanilla/README-RIZZO.md +1 -1
- package/scaffold/vanilla/components/accordion.html +8 -0
- package/scaffold/vanilla/components/alert-dialog.html +8 -0
- package/scaffold/vanilla/components/alert.html +8 -0
- package/scaffold/vanilla/components/aspect-ratio.html +8 -0
- package/scaffold/vanilla/components/avatar.html +8 -0
- package/scaffold/vanilla/components/back-to-top.html +8 -0
- package/scaffold/vanilla/components/badge.html +8 -0
- package/scaffold/vanilla/components/breadcrumb.html +8 -0
- package/scaffold/vanilla/components/button-group.html +8 -0
- package/scaffold/vanilla/components/button.html +8 -0
- package/scaffold/vanilla/components/calendar.html +8 -0
- package/scaffold/vanilla/components/cards.html +8 -0
- package/scaffold/vanilla/components/carousel.html +8 -0
- package/scaffold/vanilla/components/chart.html +8 -0
- package/scaffold/vanilla/components/collapsible.html +8 -0
- package/scaffold/vanilla/components/command.html +8 -0
- package/scaffold/vanilla/components/context-menu.html +8 -0
- package/scaffold/vanilla/components/copy-to-clipboard.html +8 -0
- package/scaffold/vanilla/components/dashboard.html +8 -0
- package/scaffold/vanilla/components/direction.html +8 -0
- package/scaffold/vanilla/components/divider.html +8 -0
- package/scaffold/vanilla/components/docs-sidebar.html +8 -0
- package/scaffold/vanilla/components/dropdown.html +8 -0
- package/scaffold/vanilla/components/empty.html +8 -0
- package/scaffold/vanilla/components/font-switcher.html +8 -0
- package/scaffold/vanilla/components/footer.html +8 -0
- package/scaffold/vanilla/components/forms.html +8 -0
- package/scaffold/vanilla/components/hover-card.html +8 -0
- package/scaffold/vanilla/components/icons.html +8 -0
- package/scaffold/vanilla/components/index.html +8 -0
- package/scaffold/vanilla/components/input-group.html +8 -0
- package/scaffold/vanilla/components/input-otp.html +8 -0
- package/scaffold/vanilla/components/kbd.html +8 -0
- package/scaffold/vanilla/components/label.html +8 -0
- package/scaffold/vanilla/components/menubar.html +8 -0
- package/scaffold/vanilla/components/modal.html +8 -0
- package/scaffold/vanilla/components/navbar.html +8 -0
- package/scaffold/vanilla/components/pagination.html +8 -0
- package/scaffold/vanilla/components/popover.html +8 -0
- package/scaffold/vanilla/components/progress-bar.html +8 -0
- package/scaffold/vanilla/components/range-calendar.html +8 -0
- package/scaffold/vanilla/components/resizable.html +8 -0
- package/scaffold/vanilla/components/scroll-area.html +8 -0
- package/scaffold/vanilla/components/search.html +8 -0
- package/scaffold/vanilla/components/separator.html +8 -0
- package/scaffold/vanilla/components/settings.html +8 -0
- package/scaffold/vanilla/components/sheet.html +8 -0
- package/scaffold/vanilla/components/skeleton.html +8 -0
- package/scaffold/vanilla/components/slider.html +8 -0
- package/scaffold/vanilla/components/sound-effects.html +8 -0
- package/scaffold/vanilla/components/spinner.html +8 -0
- package/scaffold/vanilla/components/switch.html +8 -0
- package/scaffold/vanilla/components/table.html +8 -0
- package/scaffold/vanilla/components/tabs.html +8 -0
- package/scaffold/vanilla/components/theme-switcher.html +8 -0
- package/scaffold/vanilla/components/toast.html +8 -0
- package/scaffold/vanilla/components/toggle-group.html +8 -0
- package/scaffold/vanilla/components/toggle.html +8 -0
- package/scaffold/vanilla/components/tooltip.html +8 -0
- package/scaffold/vanilla/index.html +8 -0
- package/scaffold/vue/DocsSidebar.vue +132 -4
- package/scaffold/vue/ThemeIcon.vue +50 -0
- package/scaffold/vue/base/package.json +1 -1
- package/scaffold/vue/themes.ts +54 -0
- package/scaffold/vue/variants/full/README-RIZZO.md +35 -0
- package/scaffold/vue/variants/full/package.json +22 -0
- package/scaffold/vue/variants/full/src/App.vue +17 -0
- package/scaffold/vue/variants/full/src/config/componentCategories.ts +43 -0
- package/scaffold/vue/variants/full/src/config/docsNav.ts +70 -0
- package/scaffold/vue/variants/full/src/layouts/BlocksLayout.vue +136 -0
- package/scaffold/vue/variants/full/src/layouts/DocsLayout.vue +145 -0
- package/scaffold/vue/variants/full/src/main.ts +6 -0
- package/scaffold/vue/variants/full/src/router/index.ts +38 -0
- package/scaffold/vue/variants/full/src/views/BlocksIndex.vue +111 -0
- package/scaffold/vue/variants/full/src/views/DocsComponents.vue +115 -0
- package/scaffold/vue/variants/full/src/views/DocsGettingStarted.vue +45 -0
- package/scaffold/vue/variants/full/src/views/DocsIndex.vue +69 -0
- package/scaffold/vue/variants/full/src/views/DocsOverview.vue +66 -0
- package/scaffold/vue/variants/full/src/views/Home.vue +240 -0
- package/scaffold/vue/variants/full/src/views/Themes.vue +257 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<section class="docs-overview">
|
|
3
|
+
<h1 class="docs__title">Docs overview</h1>
|
|
4
|
+
<p class="docs-overview__intro">
|
|
5
|
+
Rizzo CSS is a design system built on semantic theming and 14 themes. One CSS codebase, 58 accessible BEM components — for <strong>Vanilla JS</strong>, <strong>Astro</strong>, <strong>Svelte</strong>, <strong>React</strong>, and <strong>Vue</strong>.
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<h2 id="overview" class="docs-overview__h2">Overview</h2>
|
|
9
|
+
<ul class="docs-overview__list">
|
|
10
|
+
<li><router-link to="/docs/getting-started">Getting Started</router-link> — Installation, CLI, templates (CSS only | Landing | Docs | Dashboard | Full)</li>
|
|
11
|
+
<li><router-link to="/docs/components">Components</router-link> — Browse all components by category</li>
|
|
12
|
+
<li><router-link to="/blocks">Blocks</router-link> — Pre-built layouts and patterns</li>
|
|
13
|
+
<li><router-link to="/themes">Themes</router-link> — 14 themes, live preview</li>
|
|
14
|
+
</ul>
|
|
15
|
+
|
|
16
|
+
<h2 id="blocks" class="docs-overview__h2">Blocks</h2>
|
|
17
|
+
<ul class="docs-overview__list">
|
|
18
|
+
<li><router-link to="/blocks">Blocks overview</router-link></li>
|
|
19
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/landing-hero" target="_blank" rel="noopener noreferrer">Landing hero</a></li>
|
|
20
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/pricing" target="_blank" rel="noopener noreferrer">Pricing cards</a></li>
|
|
21
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/dashboard-01" target="_blank" rel="noopener noreferrer">Dashboard with sidebar</a></li>
|
|
22
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/docs-layout" target="_blank" rel="noopener noreferrer">Docs layout</a></li>
|
|
23
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/login" target="_blank" rel="noopener noreferrer">Login</a></li>
|
|
24
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/signup" target="_blank" rel="noopener noreferrer">Sign up</a></li>
|
|
25
|
+
</ul>
|
|
26
|
+
|
|
27
|
+
<p class="docs-overview__footer">
|
|
28
|
+
<router-link to="/docs/getting-started">Getting Started</router-link>
|
|
29
|
+
·
|
|
30
|
+
<router-link to="/docs/components">Components</router-link>
|
|
31
|
+
·
|
|
32
|
+
<router-link to="/themes">Themes</router-link>
|
|
33
|
+
</p>
|
|
34
|
+
</section>
|
|
35
|
+
</template>
|
|
36
|
+
|
|
37
|
+
<script setup lang="ts">
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<style scoped>
|
|
41
|
+
.docs-overview__intro {
|
|
42
|
+
margin: 0 0 var(--spacing-6);
|
|
43
|
+
color: var(--text);
|
|
44
|
+
line-height: var(--line-height-relaxed);
|
|
45
|
+
}
|
|
46
|
+
.docs-overview__h2 {
|
|
47
|
+
font-size: var(--font-size-2xl);
|
|
48
|
+
font-weight: 600;
|
|
49
|
+
margin: var(--spacing-10) 0 var(--spacing-4);
|
|
50
|
+
color: var(--text);
|
|
51
|
+
}
|
|
52
|
+
.docs-overview__list {
|
|
53
|
+
margin: 0 0 var(--spacing-6);
|
|
54
|
+
padding-left: var(--spacing-8);
|
|
55
|
+
}
|
|
56
|
+
.docs-overview__list li {
|
|
57
|
+
margin-bottom: var(--spacing-2);
|
|
58
|
+
}
|
|
59
|
+
.docs-overview__footer {
|
|
60
|
+
margin-top: var(--spacing-10);
|
|
61
|
+
padding-top: var(--spacing-6);
|
|
62
|
+
border-top: 1px solid var(--border);
|
|
63
|
+
color: var(--text-dim);
|
|
64
|
+
font-size: var(--font-size-sm);
|
|
65
|
+
}
|
|
66
|
+
.docs-overview__footer a {
|
|
67
|
+
margin-right: var(--spacing-2);
|
|
68
|
+
}
|
|
69
|
+
</style>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<section class="docs-overview">
|
|
3
|
+
<h1 class="docs__title">Docs overview</h1>
|
|
4
|
+
<p class="docs-overview__intro">
|
|
5
|
+
Rizzo CSS is a design system built on semantic theming and 14 themes. One CSS codebase, 58 accessible BEM components — for <strong>Vanilla JS</strong>, <strong>Astro</strong>, <strong>Svelte</strong>, <strong>React</strong>, and <strong>Vue</strong>.
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<h2 id="overview" class="docs-overview__h2">Overview</h2>
|
|
9
|
+
<ul class="docs-overview__list">
|
|
10
|
+
<li><router-link to="/docs/getting-started">Getting Started</router-link> — Installation, CLI, templates (CSS only | Landing | Docs | Dashboard | Full)</li>
|
|
11
|
+
<li><router-link to="/docs/components">Components</router-link> — Browse all components by category</li>
|
|
12
|
+
<li><router-link to="/blocks">Blocks</router-link> — Pre-built layouts and patterns</li>
|
|
13
|
+
<li><router-link to="/themes">Themes</router-link> — 14 themes, live preview</li>
|
|
14
|
+
</ul>
|
|
15
|
+
|
|
16
|
+
<h2 id="blocks" class="docs-overview__h2">Blocks</h2>
|
|
17
|
+
<ul class="docs-overview__list">
|
|
18
|
+
<li><router-link to="/blocks">Blocks overview</router-link></li>
|
|
19
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/landing-hero" target="_blank" rel="noopener noreferrer">Landing hero</a></li>
|
|
20
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/pricing" target="_blank" rel="noopener noreferrer">Pricing cards</a></li>
|
|
21
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/dashboard-01" target="_blank" rel="noopener noreferrer">Dashboard with sidebar</a></li>
|
|
22
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/docs-layout" target="_blank" rel="noopener noreferrer">Docs layout</a></li>
|
|
23
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/login" target="_blank" rel="noopener noreferrer">Login</a></li>
|
|
24
|
+
<li><a href="https://rizzo-css.vercel.app/blocks/signup" target="_blank" rel="noopener noreferrer">Sign up</a></li>
|
|
25
|
+
</ul>
|
|
26
|
+
|
|
27
|
+
<p class="docs-overview__footer">
|
|
28
|
+
<router-link to="/docs/getting-started">Getting Started</router-link>
|
|
29
|
+
·
|
|
30
|
+
<router-link to="/docs/components">Components</router-link>
|
|
31
|
+
·
|
|
32
|
+
<router-link to="/themes">Themes</router-link>
|
|
33
|
+
</p>
|
|
34
|
+
</section>
|
|
35
|
+
</template>
|
|
36
|
+
|
|
37
|
+
<style scoped>
|
|
38
|
+
.docs-overview__intro {
|
|
39
|
+
margin: 0 0 var(--spacing-6);
|
|
40
|
+
color: var(--text);
|
|
41
|
+
line-height: var(--line-height-relaxed);
|
|
42
|
+
}
|
|
43
|
+
.docs-overview__h2 {
|
|
44
|
+
font-size: var(--font-size-2xl);
|
|
45
|
+
font-weight: 600;
|
|
46
|
+
margin: var(--spacing-10) 0 var(--spacing-4);
|
|
47
|
+
color: var(--text);
|
|
48
|
+
}
|
|
49
|
+
.docs-overview__list {
|
|
50
|
+
margin: 0 0 var(--spacing-6);
|
|
51
|
+
padding-left: var(--spacing-8);
|
|
52
|
+
}
|
|
53
|
+
.docs-overview__list li {
|
|
54
|
+
margin-bottom: var(--spacing-2);
|
|
55
|
+
}
|
|
56
|
+
.docs-overview__footer {
|
|
57
|
+
margin-top: var(--spacing-10);
|
|
58
|
+
padding-top: var(--spacing-6);
|
|
59
|
+
border-top: 1px solid var(--border);
|
|
60
|
+
color: var(--text-dim);
|
|
61
|
+
font-size: var(--font-size-sm);
|
|
62
|
+
}
|
|
63
|
+
.docs-overview__footer a {
|
|
64
|
+
margin-right: var(--spacing-2);
|
|
65
|
+
}
|
|
66
|
+
</style>
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<main id="main-content" class="home">
|
|
3
|
+
<div class="home__container">
|
|
4
|
+
<header class="home__hero">
|
|
5
|
+
<h1 class="home__title">Rizzo CSS</h1>
|
|
6
|
+
<p class="home__subtitle">
|
|
7
|
+
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.
|
|
8
|
+
</p>
|
|
9
|
+
<div class="home__hero-ctas">
|
|
10
|
+
<router-link to="/docs/getting-started" class="btn btn-primary home__hero-cta">Get Started</router-link>
|
|
11
|
+
<router-link to="/docs/components" class="btn btn-outline home__hero-cta">View Components</router-link>
|
|
12
|
+
</div>
|
|
13
|
+
</header>
|
|
14
|
+
|
|
15
|
+
<section class="home__features" aria-labelledby="home-features-heading">
|
|
16
|
+
<h2 id="home-features-heading" class="home__section-title">Features</h2>
|
|
17
|
+
<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>
|
|
18
|
+
<div class="home__features-featured">
|
|
19
|
+
<div class="home__card home__card--featured">
|
|
20
|
+
<span class="home__card-icon" aria-hidden="true">Themes</span>
|
|
21
|
+
<h3>14 beautiful themes</h3>
|
|
22
|
+
<p>7 dark and 7 light with OKLCH for perceptual uniformity. System preference, persistence, and a unique icon per theme.</p>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="home__card home__card--featured">
|
|
25
|
+
<span class="home__card-icon" aria-hidden="true">A11y</span>
|
|
26
|
+
<h3>Accessibility first</h3>
|
|
27
|
+
<p>WCAG AA compliant with full keyboard navigation, ARIA, focus management, and screen reader support.</p>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="home__card home__card--featured">
|
|
30
|
+
<span class="home__card-icon" aria-hidden="true">Components</span>
|
|
31
|
+
<h3>All components</h3>
|
|
32
|
+
<p>Navbar, Settings, Theme Switcher, Font Switcher, Modal, Dropdown, Tabs, Forms, and more — all accessible and themeable.</p>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<h3 class="home__features-supporting-label">And more</h3>
|
|
36
|
+
<div class="home__grid home__grid--supporting">
|
|
37
|
+
<div class="home__card home__card--supporting">
|
|
38
|
+
<h3>Semantic variables</h3>
|
|
39
|
+
<p>CSS variables that adapt to themes. No hardcoded colors; override once, update everywhere.</p>
|
|
40
|
+
</div>
|
|
41
|
+
<div class="home__card home__card--supporting">
|
|
42
|
+
<h3>PostCSS powered</h3>
|
|
43
|
+
<p>Imports, autoprefixing, and production minification. Fits into any build pipeline.</p>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="home__card home__card--supporting">
|
|
46
|
+
<h3>Typography & spacing</h3>
|
|
47
|
+
<p>Scaling font sizes, weights, line heights, and a consistent spacing scale (0–24).</p>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="home__card home__card--supporting">
|
|
50
|
+
<h3>Responsive & utilities</h3>
|
|
51
|
+
<p>Mobile-first breakpoints and utility classes for layout, display, and flexbox.</p>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</section>
|
|
55
|
+
|
|
56
|
+
<section class="home__add-command" aria-labelledby="home-add-command-heading">
|
|
57
|
+
<h2 id="home-add-command-heading" class="home__section-title">Add a component</h2>
|
|
58
|
+
<p class="home__features-intro" style="margin-bottom: var(--spacing-4);">Add any component from the CLI:</p>
|
|
59
|
+
<div class="home__add-command-block">
|
|
60
|
+
<pre><code>npx rizzo-css add <ComponentName></code></pre>
|
|
61
|
+
<CopyToClipboard
|
|
62
|
+
:value="ADD_COMMAND"
|
|
63
|
+
icon-only
|
|
64
|
+
button-label="Copy"
|
|
65
|
+
format="command"
|
|
66
|
+
label="Copy command"
|
|
67
|
+
class="home__add-command-copy"
|
|
68
|
+
/>
|
|
69
|
+
</div>
|
|
70
|
+
</section>
|
|
71
|
+
|
|
72
|
+
<section class="home__docs">
|
|
73
|
+
<h2 class="home__section-title">Documentation</h2>
|
|
74
|
+
<div class="home__docs-grid">
|
|
75
|
+
<router-link to="/docs/getting-started" class="home__doc-card">
|
|
76
|
+
<h3>Getting Started</h3>
|
|
77
|
+
<p>Installation, project structure, and quick start guide</p>
|
|
78
|
+
</router-link>
|
|
79
|
+
<router-link to="/docs/components" class="home__doc-card">
|
|
80
|
+
<h3>Components</h3>
|
|
81
|
+
<p>Component library with usage examples and live demos</p>
|
|
82
|
+
</router-link>
|
|
83
|
+
<router-link to="/themes" class="home__doc-card">
|
|
84
|
+
<h3>Themes</h3>
|
|
85
|
+
<p>Theme system, 14 themes, and live preview</p>
|
|
86
|
+
</router-link>
|
|
87
|
+
<router-link to="/blocks" class="home__doc-card">
|
|
88
|
+
<h3>Blocks</h3>
|
|
89
|
+
<p>Pre-built layouts: landing, pricing, dashboard, docs, login, signup</p>
|
|
90
|
+
</router-link>
|
|
91
|
+
<router-link to="/docs" class="home__doc-card">
|
|
92
|
+
<h3>Docs Overview</h3>
|
|
93
|
+
<p>Condensed index of documentation and links</p>
|
|
94
|
+
</router-link>
|
|
95
|
+
<a href="https://rizzo-css.vercel.app/docs/theming" class="home__doc-card" target="_blank" rel="noopener noreferrer">
|
|
96
|
+
<h3>Theming (full docs)</h3>
|
|
97
|
+
<p>Custom themes, persistence, color format — on main site</p>
|
|
98
|
+
<span class="sr-only"> (opens in new tab)</span>
|
|
99
|
+
</a>
|
|
100
|
+
</div>
|
|
101
|
+
</section>
|
|
102
|
+
</div>
|
|
103
|
+
</main>
|
|
104
|
+
</template>
|
|
105
|
+
|
|
106
|
+
<script setup lang="ts">
|
|
107
|
+
import CopyToClipboard from '@/components/rizzo/CopyToClipboard.vue';
|
|
108
|
+
|
|
109
|
+
const ADD_COMMAND = 'npx rizzo-css add <ComponentName>';
|
|
110
|
+
</script>
|
|
111
|
+
|
|
112
|
+
<style scoped>
|
|
113
|
+
.home__container {
|
|
114
|
+
width: 100%;
|
|
115
|
+
max-width: var(--container-default);
|
|
116
|
+
margin: 0 auto;
|
|
117
|
+
padding: 0 var(--content-padding-x);
|
|
118
|
+
}
|
|
119
|
+
.home__hero {
|
|
120
|
+
text-align: center;
|
|
121
|
+
padding: var(--spacing-10) 0;
|
|
122
|
+
}
|
|
123
|
+
.home__title {
|
|
124
|
+
font-size: var(--font-size-4xl);
|
|
125
|
+
font-weight: var(--font-weight-bold);
|
|
126
|
+
color: var(--text);
|
|
127
|
+
margin: 0 0 var(--spacing-4);
|
|
128
|
+
line-height: var(--line-height-tight);
|
|
129
|
+
}
|
|
130
|
+
.home__subtitle {
|
|
131
|
+
font-size: var(--font-size-lg);
|
|
132
|
+
color: var(--text-dim);
|
|
133
|
+
margin: 0 auto var(--spacing-6);
|
|
134
|
+
max-width: 42ch;
|
|
135
|
+
line-height: var(--line-height-relaxed);
|
|
136
|
+
}
|
|
137
|
+
.home__hero-ctas {
|
|
138
|
+
display: flex;
|
|
139
|
+
flex-wrap: wrap;
|
|
140
|
+
gap: var(--spacing-4);
|
|
141
|
+
justify-content: center;
|
|
142
|
+
}
|
|
143
|
+
.home__hero-cta {
|
|
144
|
+
text-decoration: none;
|
|
145
|
+
}
|
|
146
|
+
.home__section-title {
|
|
147
|
+
font-size: var(--font-size-2xl);
|
|
148
|
+
font-weight: 600;
|
|
149
|
+
margin: var(--spacing-10) 0 var(--spacing-4);
|
|
150
|
+
color: var(--text);
|
|
151
|
+
}
|
|
152
|
+
.home__features-intro {
|
|
153
|
+
margin: 0 0 var(--spacing-6);
|
|
154
|
+
color: var(--text-dim);
|
|
155
|
+
line-height: var(--line-height-relaxed);
|
|
156
|
+
}
|
|
157
|
+
.home__features-featured,
|
|
158
|
+
.home__grid--supporting {
|
|
159
|
+
display: grid;
|
|
160
|
+
grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr));
|
|
161
|
+
gap: var(--spacing-6);
|
|
162
|
+
margin: var(--spacing-6) 0;
|
|
163
|
+
}
|
|
164
|
+
.home__card {
|
|
165
|
+
padding: var(--spacing-6);
|
|
166
|
+
border-radius: var(--radius-lg);
|
|
167
|
+
border: 1px solid var(--border);
|
|
168
|
+
background: var(--background-alt);
|
|
169
|
+
}
|
|
170
|
+
.home__card h3 {
|
|
171
|
+
margin: 0 0 var(--spacing-2);
|
|
172
|
+
font-size: var(--font-size-lg);
|
|
173
|
+
color: var(--text);
|
|
174
|
+
}
|
|
175
|
+
.home__card p {
|
|
176
|
+
margin: 0;
|
|
177
|
+
font-size: var(--font-size-sm);
|
|
178
|
+
color: var(--text-dim);
|
|
179
|
+
line-height: var(--line-height-relaxed);
|
|
180
|
+
}
|
|
181
|
+
.home__card-icon {
|
|
182
|
+
display: block;
|
|
183
|
+
font-size: var(--font-size-xs);
|
|
184
|
+
color: var(--accent-fg);
|
|
185
|
+
margin-bottom: var(--spacing-2);
|
|
186
|
+
}
|
|
187
|
+
.home__features-supporting-label {
|
|
188
|
+
font-size: var(--font-size-lg);
|
|
189
|
+
margin: var(--spacing-8) 0 var(--spacing-4);
|
|
190
|
+
color: var(--text);
|
|
191
|
+
}
|
|
192
|
+
.home__add-command-block {
|
|
193
|
+
display: flex;
|
|
194
|
+
align-items: flex-start;
|
|
195
|
+
gap: var(--spacing-2);
|
|
196
|
+
flex-wrap: wrap;
|
|
197
|
+
}
|
|
198
|
+
.home__add-command-block pre {
|
|
199
|
+
flex: 1;
|
|
200
|
+
min-width: 0;
|
|
201
|
+
margin: 0;
|
|
202
|
+
background: var(--background-alt);
|
|
203
|
+
border: 1px solid var(--border);
|
|
204
|
+
border-radius: var(--radius-lg);
|
|
205
|
+
padding: var(--spacing-4);
|
|
206
|
+
overflow-x: auto;
|
|
207
|
+
font-size: var(--font-size-sm);
|
|
208
|
+
}
|
|
209
|
+
.home__docs-grid {
|
|
210
|
+
display: grid;
|
|
211
|
+
grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr));
|
|
212
|
+
gap: var(--spacing-4);
|
|
213
|
+
margin-top: var(--spacing-6);
|
|
214
|
+
}
|
|
215
|
+
.home__doc-card {
|
|
216
|
+
display: block;
|
|
217
|
+
padding: var(--spacing-6);
|
|
218
|
+
border-radius: var(--radius-lg);
|
|
219
|
+
border: 1px solid var(--border);
|
|
220
|
+
background: var(--background-alt);
|
|
221
|
+
text-decoration: none;
|
|
222
|
+
color: inherit;
|
|
223
|
+
transition: border-color 0.15s, transform 0.15s;
|
|
224
|
+
}
|
|
225
|
+
.home__doc-card:hover {
|
|
226
|
+
border-color: var(--accent-fg);
|
|
227
|
+
transform: translateY(-2px);
|
|
228
|
+
}
|
|
229
|
+
.home__doc-card h3 {
|
|
230
|
+
margin: 0 0 var(--spacing-2);
|
|
231
|
+
font-size: var(--font-size-lg);
|
|
232
|
+
color: var(--text);
|
|
233
|
+
}
|
|
234
|
+
.home__doc-card p {
|
|
235
|
+
margin: 0;
|
|
236
|
+
font-size: var(--font-size-sm);
|
|
237
|
+
color: var(--text-dim);
|
|
238
|
+
line-height: var(--line-height-relaxed);
|
|
239
|
+
}
|
|
240
|
+
</style>
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="themes-page">
|
|
3
|
+
<div class="themes-page__container">
|
|
4
|
+
<header class="themes-page__hero">
|
|
5
|
+
<h1 id="available-themes" class="themes-page__title">Available Themes</h1>
|
|
6
|
+
<p class="themes-page__subtitle">
|
|
7
|
+
Rizzo CSS includes 14 themes. Switch instantly via the Settings panel (gear icon in the navbar) or try the Theme Switcher below. Each theme uses semantic OKLCH variables.
|
|
8
|
+
</p>
|
|
9
|
+
<div class="themes-page__hero-demo example">
|
|
10
|
+
<div class="example-title">Try Themes</div>
|
|
11
|
+
<ThemeSwitcher id-prefix="page" />
|
|
12
|
+
</div>
|
|
13
|
+
<div class="themes-page__hero-ctas">
|
|
14
|
+
<a href="https://rizzo-css.vercel.app/docs/theming" class="btn btn-primary themes-page__hero-cta" target="_blank" rel="noopener noreferrer">Theming docs</a>
|
|
15
|
+
<router-link to="/docs/components" class="btn btn-outline themes-page__hero-cta">Components</router-link>
|
|
16
|
+
</div>
|
|
17
|
+
</header>
|
|
18
|
+
|
|
19
|
+
<div class="themes-page__main">
|
|
20
|
+
<section class="themes-page__section" aria-labelledby="dark-themes">
|
|
21
|
+
<h2 id="dark-themes" class="themes-page__section-title">Dark Themes</h2>
|
|
22
|
+
<div class="themes-page__grid">
|
|
23
|
+
<Card v-for="theme in THEMES_DARK" :key="theme.value" variant="elevated">
|
|
24
|
+
<div class="card__body">
|
|
25
|
+
<div class="themes-page__card-header">
|
|
26
|
+
<ThemeIcon :theme-id="theme.value" :size="24" class="themes-page__card-icon" />
|
|
27
|
+
<h3 class="themes-page__card-title">
|
|
28
|
+
<button
|
|
29
|
+
type="button"
|
|
30
|
+
class="themes-page__card-title-btn"
|
|
31
|
+
@click="applyTheme(theme.value)"
|
|
32
|
+
>
|
|
33
|
+
{{ theme.label }}
|
|
34
|
+
</button>
|
|
35
|
+
</h3>
|
|
36
|
+
</div>
|
|
37
|
+
<template v-if="themeCardContent[theme.value]">
|
|
38
|
+
<p class="themes-page__card-desc">{{ themeCardContent[theme.value].description }}</p>
|
|
39
|
+
<p class="themes-page__card-meta"><strong>Author:</strong> {{ themeCardContent[theme.value].author }}</p>
|
|
40
|
+
</template>
|
|
41
|
+
<p class="themes-page__card-meta"><code>{{ theme.value }}</code></p>
|
|
42
|
+
</div>
|
|
43
|
+
</Card>
|
|
44
|
+
</div>
|
|
45
|
+
</section>
|
|
46
|
+
|
|
47
|
+
<section class="themes-page__section" aria-labelledby="light-themes">
|
|
48
|
+
<h2 id="light-themes" class="themes-page__section-title">Light Themes</h2>
|
|
49
|
+
<div class="themes-page__grid">
|
|
50
|
+
<Card v-for="theme in THEMES_LIGHT" :key="theme.value" variant="elevated">
|
|
51
|
+
<div class="card__body">
|
|
52
|
+
<div class="themes-page__card-header">
|
|
53
|
+
<ThemeIcon :theme-id="theme.value" :size="24" class="themes-page__card-icon" />
|
|
54
|
+
<h3 class="themes-page__card-title">
|
|
55
|
+
<button
|
|
56
|
+
type="button"
|
|
57
|
+
class="themes-page__card-title-btn"
|
|
58
|
+
@click="applyTheme(theme.value)"
|
|
59
|
+
>
|
|
60
|
+
{{ theme.label }}
|
|
61
|
+
</button>
|
|
62
|
+
</h3>
|
|
63
|
+
</div>
|
|
64
|
+
<template v-if="themeCardContent[theme.value]">
|
|
65
|
+
<p class="themes-page__card-desc">{{ themeCardContent[theme.value].description }}</p>
|
|
66
|
+
<p class="themes-page__card-meta"><strong>Author:</strong> {{ themeCardContent[theme.value].author }}</p>
|
|
67
|
+
</template>
|
|
68
|
+
<p class="themes-page__card-meta"><code>{{ theme.value }}</code></p>
|
|
69
|
+
</div>
|
|
70
|
+
</Card>
|
|
71
|
+
</div>
|
|
72
|
+
</section>
|
|
73
|
+
|
|
74
|
+
<section id="using-themes" class="themes-page__copy-section" aria-labelledby="copy-heading">
|
|
75
|
+
<h2 id="copy-heading" class="themes-page__section-title">Use a theme in your app</h2>
|
|
76
|
+
<p class="themes-page__copy-desc">Set the theme on your HTML root. For persistence and custom themes, see the <a href="https://rizzo-css.vercel.app/docs/theming" target="_blank" rel="noopener noreferrer">theming docs</a>.</p>
|
|
77
|
+
<div class="themes-page__code-block">
|
|
78
|
+
<pre><code>{{ snippet }}</code></pre>
|
|
79
|
+
<CopyToClipboard :value="snippet" button-label="Copy" format="code" label="Copy snippet" />
|
|
80
|
+
</div>
|
|
81
|
+
</section>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</template>
|
|
86
|
+
|
|
87
|
+
<script setup lang="ts">
|
|
88
|
+
import ThemeIcon from '@/components/rizzo/ThemeIcon.vue';
|
|
89
|
+
import ThemeSwitcher from '@/components/rizzo/ThemeSwitcher.vue';
|
|
90
|
+
import Card from '@/components/rizzo/Card.vue';
|
|
91
|
+
import CopyToClipboard from '@/components/rizzo/CopyToClipboard.vue';
|
|
92
|
+
import { THEMES_DARK, THEMES_LIGHT } from '@/components/rizzo/themes';
|
|
93
|
+
|
|
94
|
+
const defaultTheme = 'github-dark-classic';
|
|
95
|
+
const snippet = `<html lang="en" data-theme="${defaultTheme}">`;
|
|
96
|
+
|
|
97
|
+
const themeCardContent: Record<string, { description: string; author: string }> = {
|
|
98
|
+
'github-dark-classic': { description: 'Official GitHub dark theme for VS Code', author: 'Primer (GitHub)' },
|
|
99
|
+
'shades-of-purple': { description: 'Professional theme with bold purple shades', author: 'Ahmad Awais' },
|
|
100
|
+
'sandstorm-classic': { description: 'Dark, red-based theme for late-night coding', author: 'Devan Sisson' },
|
|
101
|
+
'rocky-blood-orange': { description: 'Dark theme with blood-orange accent', author: 'Luca Heyworth' },
|
|
102
|
+
'minimal-dark-neon-yellow': { description: 'Minimal dark theme with neon yellow accent', author: 'Gabriel D Sanchez' },
|
|
103
|
+
'hack-the-box': { description: 'Dark blue with lime green accent, built for hackers', author: 'silofy' },
|
|
104
|
+
'pink-cat-boo': { description: 'Sweet and cute dark theme with rose pink accents', author: 'Fiona Fan' },
|
|
105
|
+
'github-light': { description: 'Official GitHub light theme for VS Code', author: 'Primer (GitHub)' },
|
|
106
|
+
'red-velvet-cupcake': { description: 'Velvet-cupcake light theme with red accent', author: 'Fahad Ashraf Chaudhry' },
|
|
107
|
+
'orangy-one-light': { description: 'Light theme with orange accent', author: 'maher-cshub' },
|
|
108
|
+
sunflower: { description: 'Yellow light theme', author: 'Hashirama Naiff' },
|
|
109
|
+
'green-breeze-light': { description: 'Green and blue focused light theme with good contrast', author: 'icy9ptcl' },
|
|
110
|
+
'cute-pink': { description: 'Cute pink light theme for VSCode', author: 'WebFreak' },
|
|
111
|
+
'semi-light-purple': { description: 'Light aesthetic theme with soft purple tones', author: 'Kapil Yadav' },
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
function applyTheme(value: string) {
|
|
115
|
+
if (typeof document !== 'undefined') {
|
|
116
|
+
document.documentElement.setAttribute('data-theme', value);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
</script>
|
|
120
|
+
|
|
121
|
+
<style scoped>
|
|
122
|
+
.themes-page {
|
|
123
|
+
padding: var(--spacing-8) 0 var(--spacing-12);
|
|
124
|
+
}
|
|
125
|
+
.themes-page__container {
|
|
126
|
+
width: 100%;
|
|
127
|
+
max-width: var(--container-default);
|
|
128
|
+
margin: 0 auto;
|
|
129
|
+
padding: 0 var(--content-padding-x);
|
|
130
|
+
}
|
|
131
|
+
.themes-page__hero {
|
|
132
|
+
text-align: center;
|
|
133
|
+
margin-bottom: var(--spacing-10);
|
|
134
|
+
}
|
|
135
|
+
.themes-page__title {
|
|
136
|
+
font-size: var(--font-size-4xl);
|
|
137
|
+
font-weight: var(--font-weight-bold);
|
|
138
|
+
color: var(--text);
|
|
139
|
+
margin: 0 0 var(--spacing-4);
|
|
140
|
+
line-height: var(--line-height-tight);
|
|
141
|
+
}
|
|
142
|
+
.themes-page__subtitle {
|
|
143
|
+
font-size: var(--font-size-lg);
|
|
144
|
+
color: var(--text-dim);
|
|
145
|
+
margin: 0;
|
|
146
|
+
max-width: 42ch;
|
|
147
|
+
margin-left: auto;
|
|
148
|
+
margin-right: auto;
|
|
149
|
+
line-height: var(--line-height-relaxed);
|
|
150
|
+
}
|
|
151
|
+
.themes-page__subtitle code {
|
|
152
|
+
background: var(--background-alt);
|
|
153
|
+
color: var(--accent-fg);
|
|
154
|
+
padding: var(--spacing-0-125) var(--spacing-0-375);
|
|
155
|
+
border-radius: var(--radius);
|
|
156
|
+
font-size: var(--font-size-sm);
|
|
157
|
+
}
|
|
158
|
+
.themes-page__hero-demo {
|
|
159
|
+
margin-top: var(--spacing-6);
|
|
160
|
+
text-align: left;
|
|
161
|
+
}
|
|
162
|
+
.themes-page__hero-ctas {
|
|
163
|
+
display: flex;
|
|
164
|
+
flex-wrap: wrap;
|
|
165
|
+
gap: var(--spacing-4);
|
|
166
|
+
justify-content: center;
|
|
167
|
+
margin-top: var(--spacing-6);
|
|
168
|
+
}
|
|
169
|
+
.themes-page__hero-cta {
|
|
170
|
+
text-decoration: none;
|
|
171
|
+
}
|
|
172
|
+
.themes-page__section {
|
|
173
|
+
margin-bottom: var(--spacing-10);
|
|
174
|
+
}
|
|
175
|
+
.themes-page__section-title {
|
|
176
|
+
font-size: var(--font-size-xl);
|
|
177
|
+
font-weight: var(--font-weight-semibold);
|
|
178
|
+
color: var(--text);
|
|
179
|
+
margin: 0 0 var(--spacing-4);
|
|
180
|
+
}
|
|
181
|
+
.themes-page__grid {
|
|
182
|
+
display: grid;
|
|
183
|
+
grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr));
|
|
184
|
+
gap: var(--spacing-4);
|
|
185
|
+
}
|
|
186
|
+
.themes-page__card-header {
|
|
187
|
+
display: flex;
|
|
188
|
+
align-items: center;
|
|
189
|
+
gap: var(--spacing-3);
|
|
190
|
+
margin-bottom: var(--spacing-2);
|
|
191
|
+
}
|
|
192
|
+
:deep(.themes-page__card-icon) {
|
|
193
|
+
flex-shrink: 0;
|
|
194
|
+
color: var(--text-dim);
|
|
195
|
+
}
|
|
196
|
+
.themes-page__card-title {
|
|
197
|
+
margin: 0;
|
|
198
|
+
font-size: var(--font-size-lg);
|
|
199
|
+
font-weight: var(--font-weight-semibold);
|
|
200
|
+
}
|
|
201
|
+
.themes-page__card-title-btn {
|
|
202
|
+
background: none;
|
|
203
|
+
border: none;
|
|
204
|
+
padding: 0;
|
|
205
|
+
font: inherit;
|
|
206
|
+
color: var(--accent-fg);
|
|
207
|
+
text-decoration: underline;
|
|
208
|
+
text-underline-offset: 0.15em;
|
|
209
|
+
cursor: pointer;
|
|
210
|
+
}
|
|
211
|
+
.themes-page__card-title-btn:hover {
|
|
212
|
+
color: var(--accent-fg-hover);
|
|
213
|
+
}
|
|
214
|
+
.themes-page__card-desc {
|
|
215
|
+
font-size: var(--font-size-sm);
|
|
216
|
+
color: var(--text-dim);
|
|
217
|
+
margin: 0 0 var(--spacing-2);
|
|
218
|
+
line-height: var(--line-height-relaxed);
|
|
219
|
+
}
|
|
220
|
+
.themes-page__card-meta {
|
|
221
|
+
font-size: var(--font-size-sm);
|
|
222
|
+
color: var(--text-dim);
|
|
223
|
+
margin: 0 0 var(--spacing-1);
|
|
224
|
+
}
|
|
225
|
+
.themes-page__card-meta code {
|
|
226
|
+
background: var(--background-alt);
|
|
227
|
+
color: var(--accent-fg);
|
|
228
|
+
padding: var(--spacing-0-125) var(--spacing-0-375);
|
|
229
|
+
border-radius: var(--radius);
|
|
230
|
+
font-size: var(--font-size-xs);
|
|
231
|
+
}
|
|
232
|
+
.themes-page__copy-section {
|
|
233
|
+
margin-top: var(--spacing-10);
|
|
234
|
+
}
|
|
235
|
+
.themes-page__copy-desc {
|
|
236
|
+
color: var(--text-dim);
|
|
237
|
+
font-size: var(--font-size-sm);
|
|
238
|
+
margin: 0 0 var(--spacing-3);
|
|
239
|
+
}
|
|
240
|
+
.themes-page__code-block {
|
|
241
|
+
display: flex;
|
|
242
|
+
align-items: flex-start;
|
|
243
|
+
gap: var(--spacing-2);
|
|
244
|
+
flex-wrap: wrap;
|
|
245
|
+
}
|
|
246
|
+
.themes-page__code-block pre {
|
|
247
|
+
flex: 1;
|
|
248
|
+
min-width: 0;
|
|
249
|
+
margin: 0;
|
|
250
|
+
background: var(--background-alt);
|
|
251
|
+
border: 1px solid var(--border);
|
|
252
|
+
border-radius: var(--radius-lg);
|
|
253
|
+
padding: var(--spacing-4);
|
|
254
|
+
overflow-x: auto;
|
|
255
|
+
font-size: var(--font-size-sm);
|
|
256
|
+
}
|
|
257
|
+
</style>
|