rizzo-css 0.0.12 → 0.0.13
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/.env.example +12 -0
- package/LICENSE +21 -0
- package/README.md +17 -3
- package/bin/rizzo-css.js +93 -43
- package/package.json +5 -3
- package/scaffold/astro-app/README.md +13 -2
- package/scaffold/astro-app/src/components/Accordion.astro +178 -0
- package/scaffold/astro-app/src/components/Alert.astro +131 -0
- package/scaffold/astro-app/src/components/Avatar.astro +59 -0
- package/scaffold/astro-app/src/components/Badge.astro +24 -0
- package/scaffold/astro-app/src/components/Breadcrumb.astro +61 -0
- package/scaffold/astro-app/src/components/Button.astro +3 -0
- package/scaffold/astro-app/src/components/Card.astro +18 -0
- package/scaffold/astro-app/src/components/Checkbox.astro +38 -0
- package/scaffold/astro-app/src/components/CodeBlock.astro +393 -0
- package/scaffold/astro-app/src/components/CopyToClipboard.astro +219 -0
- package/scaffold/astro-app/src/components/Divider.astro +37 -0
- package/scaffold/astro-app/src/components/Dropdown.astro +807 -0
- package/scaffold/astro-app/src/components/FormGroup.astro +59 -0
- package/scaffold/astro-app/src/components/FrameworkSwitcher.astro +72 -0
- package/scaffold/astro-app/src/components/Input.astro +59 -0
- package/scaffold/astro-app/src/components/Modal.astro +212 -0
- package/scaffold/astro-app/src/components/Navbar.astro +701 -0
- package/scaffold/astro-app/src/components/Pagination.astro +240 -0
- package/scaffold/astro-app/src/components/ProgressBar.astro +65 -0
- package/scaffold/astro-app/src/components/Radio.astro +38 -0
- package/scaffold/astro-app/src/components/Search.astro +1259 -0
- package/scaffold/astro-app/src/components/Select.astro +49 -0
- package/scaffold/astro-app/src/components/Settings.astro +382 -0
- package/scaffold/astro-app/src/components/Spinner.astro +30 -0
- package/scaffold/astro-app/src/components/Table.astro +181 -0
- package/scaffold/astro-app/src/components/Tabs.astro +223 -0
- package/scaffold/astro-app/src/components/Textarea.astro +58 -0
- package/scaffold/astro-app/src/components/ThemeSwitcher.astro +504 -0
- package/scaffold/astro-app/src/components/Toast.astro +30 -0
- package/scaffold/astro-app/src/components/Tooltip.astro +32 -0
- package/scaffold/astro-app/src/components/icons/Brush.astro +10 -0
- package/scaffold/astro-app/src/components/icons/Cake.astro +11 -0
- package/scaffold/astro-app/src/components/icons/Check.astro +29 -0
- package/scaffold/astro-app/src/components/icons/Cherry.astro +11 -0
- package/scaffold/astro-app/src/components/icons/ChevronDown.astro +29 -0
- package/scaffold/astro-app/src/components/icons/Circle.astro +29 -0
- package/scaffold/astro-app/src/components/icons/Close.astro +30 -0
- package/scaffold/astro-app/src/components/icons/Cmd.astro +26 -0
- package/scaffold/astro-app/src/components/icons/Copy.astro +30 -0
- package/scaffold/astro-app/src/components/icons/Eye.astro +30 -0
- package/scaffold/astro-app/src/components/icons/Filter.astro +29 -0
- package/scaffold/astro-app/src/components/icons/Flame.astro +28 -0
- package/scaffold/astro-app/src/components/icons/Flower.astro +11 -0
- package/scaffold/astro-app/src/components/icons/Gear.astro +30 -0
- package/scaffold/astro-app/src/components/icons/Heart.astro +28 -0
- package/scaffold/astro-app/src/components/icons/IceCream.astro +31 -0
- package/scaffold/astro-app/src/components/icons/Leaf.astro +29 -0
- package/scaffold/astro-app/src/components/icons/Lemon.astro +11 -0
- package/scaffold/astro-app/src/components/icons/Moon.astro +29 -0
- package/scaffold/astro-app/src/components/icons/Owl.astro +34 -0
- package/scaffold/astro-app/src/components/icons/Palette.astro +33 -0
- package/scaffold/astro-app/src/components/icons/Rainbow.astro +31 -0
- package/scaffold/astro-app/src/components/icons/Search.astro +30 -0
- package/scaffold/astro-app/src/components/icons/Shield.astro +28 -0
- package/scaffold/astro-app/src/components/icons/Snowflake.astro +34 -0
- package/scaffold/astro-app/src/components/icons/Sort.astro +30 -0
- package/scaffold/astro-app/src/components/icons/Sun.astro +29 -0
- package/scaffold/astro-app/src/components/icons/Sunset.astro +10 -0
- package/scaffold/astro-app/src/components/icons/Zap.astro +9 -0
- package/scaffold/astro-app/src/components/icons/devicons/Astro.astro +53 -0
- package/scaffold/astro-app/src/components/icons/devicons/Bash.astro +34 -0
- package/scaffold/astro-app/src/components/icons/devicons/Css3.astro +29 -0
- package/scaffold/astro-app/src/components/icons/devicons/Git.astro +24 -0
- package/scaffold/astro-app/src/components/icons/devicons/Html5.astro +27 -0
- package/scaffold/astro-app/src/components/icons/devicons/Javascript.astro +25 -0
- package/scaffold/astro-app/src/components/icons/devicons/Nodejs.astro +47 -0
- package/scaffold/astro-app/src/components/icons/devicons/Plaintext.astro +33 -0
- package/scaffold/astro-app/src/components/icons/devicons/React.astro +27 -0
- package/scaffold/astro-app/src/components/icons/devicons/Svelte.astro +25 -0
- package/scaffold/astro-app/src/components/icons/devicons/Vue.astro +26 -0
- package/scaffold/astro-app/src/config/frameworks.ts +26 -0
- package/scaffold/astro-app/src/config/themes.ts +54 -0
- package/scaffold/astro-app/src/layouts/DocsLayout.astro +204 -0
- package/scaffold/astro-app/src/layouts/Layout.astro +11 -2
- package/scaffold/astro-app/src/pages/components/accordion.astro +172 -0
- package/scaffold/astro-app/src/pages/components/alert.astro +250 -0
- package/scaffold/astro-app/src/pages/components/avatar.astro +102 -0
- package/scaffold/astro-app/src/pages/components/badge.astro +119 -0
- package/scaffold/astro-app/src/pages/components/breadcrumb.astro +124 -0
- package/scaffold/astro-app/src/pages/components/button.astro +74 -0
- package/scaffold/astro-app/src/pages/components/cards.astro +247 -0
- package/scaffold/astro-app/src/pages/components/copy-to-clipboard.astro +49 -0
- package/scaffold/astro-app/src/pages/components/divider.astro +74 -0
- package/scaffold/astro-app/src/pages/components/dropdown.astro +394 -0
- package/scaffold/astro-app/src/pages/components/forms.astro +367 -0
- package/scaffold/astro-app/src/pages/components/icons.astro +246 -0
- package/scaffold/astro-app/src/pages/components/modal.astro +152 -0
- package/scaffold/astro-app/src/pages/components/navbar.astro +80 -0
- package/scaffold/astro-app/src/pages/components/pagination.astro +126 -0
- package/scaffold/astro-app/src/pages/components/progress-bar.astro +94 -0
- package/scaffold/astro-app/src/pages/components/search.astro +155 -0
- package/scaffold/astro-app/src/pages/components/settings.astro +78 -0
- package/scaffold/astro-app/src/pages/components/spinner.astro +81 -0
- package/scaffold/astro-app/src/pages/components/table.astro +144 -0
- package/scaffold/astro-app/src/pages/components/tabs.astro +220 -0
- package/scaffold/astro-app/src/pages/components/theme-switcher.astro +67 -0
- package/scaffold/astro-app/src/pages/components/toast.astro +157 -0
- package/scaffold/astro-app/src/pages/components/tooltip.astro +209 -0
- package/scaffold/astro-app/src/pages/components.astro +290 -0
- package/scaffold/astro-app/src/pages/docs/accessibility.astro +9 -0
- package/scaffold/astro-app/src/pages/docs/colors.astro +9 -0
- package/scaffold/astro-app/src/pages/docs/design-system.astro +9 -0
- package/scaffold/astro-app/src/pages/docs/getting-started.astro +9 -0
- package/scaffold/astro-app/src/pages/docs/index.astro +15 -0
- package/scaffold/astro-app/src/pages/docs/themes/[theme].astro +14 -0
- package/scaffold/astro-app/src/pages/docs/theming.astro +10 -0
- package/scaffold/astro-app/src/pages/index.astro +5 -11
- package/scaffold/svelte-app/README.md +9 -2
- package/scaffold/svelte-app/src/app.html +1 -1
- package/scaffold/svelte-app/src/lib/rizzo/Accordion.svelte +128 -0
- package/scaffold/svelte-app/src/lib/rizzo/Alert.svelte +85 -0
- package/scaffold/svelte-app/src/lib/rizzo/Avatar.svelte +39 -0
- package/scaffold/svelte-app/src/lib/rizzo/Badge.svelte +31 -0
- package/scaffold/svelte-app/src/lib/rizzo/Breadcrumb.svelte +49 -0
- package/scaffold/svelte-app/src/lib/rizzo/Button.svelte +27 -0
- package/scaffold/svelte-app/src/lib/rizzo/Card.svelte +17 -0
- package/scaffold/svelte-app/src/lib/rizzo/Checkbox.svelte +37 -0
- package/scaffold/svelte-app/src/lib/rizzo/CopyToClipboard.svelte +79 -0
- package/scaffold/svelte-app/src/lib/rizzo/Divider.svelte +28 -0
- package/scaffold/svelte-app/src/lib/rizzo/Dropdown.svelte +254 -0
- package/scaffold/svelte-app/src/lib/rizzo/FormGroup.svelte +51 -0
- package/scaffold/svelte-app/src/lib/rizzo/Input.svelte +59 -0
- package/scaffold/svelte-app/src/lib/rizzo/Modal.svelte +157 -0
- package/scaffold/svelte-app/src/lib/rizzo/Pagination.svelte +93 -0
- package/scaffold/svelte-app/src/lib/rizzo/ProgressBar.svelte +58 -0
- package/scaffold/svelte-app/src/lib/rizzo/Radio.svelte +38 -0
- package/scaffold/svelte-app/src/lib/rizzo/Select.svelte +51 -0
- package/scaffold/svelte-app/src/lib/rizzo/Spinner.svelte +14 -0
- package/scaffold/svelte-app/src/lib/rizzo/Table.svelte +158 -0
- package/scaffold/svelte-app/src/lib/rizzo/Tabs.svelte +117 -0
- package/scaffold/svelte-app/src/lib/rizzo/Textarea.svelte +59 -0
- package/scaffold/svelte-app/src/lib/rizzo/ThemeSwitcher.svelte +315 -0
- package/scaffold/svelte-app/src/lib/rizzo/Toast.svelte +33 -0
- package/scaffold/svelte-app/src/lib/rizzo/Tooltip.svelte +19 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Check.svelte +29 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/ChevronDown.svelte +29 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Circle.svelte +29 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Close.svelte +30 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Cmd.svelte +27 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Copy.svelte +30 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Eye.svelte +30 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Filter.svelte +29 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Gear.svelte +30 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/IceCream.svelte +31 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Moon.svelte +29 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Owl.svelte +34 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Palette.svelte +33 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Rainbow.svelte +31 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Search.svelte +30 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Snowflake.svelte +34 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/Sort.svelte +30 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Astro.svelte +45 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Bash.svelte +28 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Css3.svelte +23 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Git.svelte +18 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Html5.svelte +21 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Javascript.svelte +19 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Nodejs.svelte +44 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Plaintext.svelte +24 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/React.svelte +21 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/SvelteIcon.svelte +19 -0
- package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Vue.svelte +20 -0
- package/scaffold/svelte-app/src/lib/rizzo/index.ts +33 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/CodeBlock.svelte +239 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/SvelteDocPage.svelte +99 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/AccordionDoc.svelte +53 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/AlertDoc.svelte +114 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/AvatarDoc.svelte +92 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/BadgeDoc.svelte +60 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/BreadcrumbDoc.svelte +55 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ButtonDoc.svelte +55 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/CardsDoc.svelte +173 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ComingSoon.svelte +12 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ComponentsOverview.svelte +92 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/CopyToClipboardDoc.svelte +26 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/DividerDoc.svelte +105 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/DropdownDoc.svelte +161 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/FormsDoc.svelte +375 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/IconsDoc.svelte +246 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/Index.svelte +8 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ModalDoc.svelte +50 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/NavbarDoc.svelte +79 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/PaginationDoc.svelte +44 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ProgressBarDoc.svelte +95 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/SearchDoc.svelte +147 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/SettingsDoc.svelte +158 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/SpinnerDoc.svelte +41 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/TableDoc.svelte +116 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/TabsDoc.svelte +152 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ThemeSwitcherDoc.svelte +181 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/Theming.svelte +6 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ToastDoc.svelte +136 -0
- package/scaffold/svelte-app/src/lib/rizzo-docs/pages/TooltipDoc.svelte +57 -0
- package/scaffold/svelte-app/src/routes/+page.svelte +2 -2
- package/scaffold/svelte-app/src/routes/components/+page.svelte +4 -0
- package/scaffold/svelte-app/src/routes/components/[slug]/+page.svelte +7 -0
- package/scaffold/vanilla/README.md +11 -4
- package/scaffold/vanilla/components/accordion.html +187 -0
- package/scaffold/vanilla/components/alert.html +187 -0
- package/scaffold/vanilla/components/avatar.html +187 -0
- package/scaffold/vanilla/components/badge.html +187 -0
- package/scaffold/vanilla/components/breadcrumb.html +187 -0
- package/scaffold/vanilla/components/button.html +187 -0
- package/scaffold/vanilla/components/cards.html +187 -0
- package/scaffold/vanilla/components/copy-to-clipboard.html +187 -0
- package/scaffold/vanilla/components/divider.html +187 -0
- package/scaffold/vanilla/components/dropdown.html +187 -0
- package/scaffold/vanilla/components/forms.html +187 -0
- package/scaffold/vanilla/components/icons.html +187 -0
- package/scaffold/vanilla/components/index.html +212 -0
- package/scaffold/vanilla/components/modal.html +187 -0
- package/scaffold/vanilla/components/navbar.html +187 -0
- package/scaffold/vanilla/components/pagination.html +187 -0
- package/scaffold/vanilla/components/progress-bar.html +187 -0
- package/scaffold/vanilla/components/search.html +187 -0
- package/scaffold/vanilla/components/settings.html +187 -0
- package/scaffold/vanilla/components/spinner.html +187 -0
- package/scaffold/vanilla/components/table.html +187 -0
- package/scaffold/vanilla/components/tabs.html +187 -0
- package/scaffold/vanilla/components/theme-switcher.html +187 -0
- package/scaffold/vanilla/components/toast.html +187 -0
- package/scaffold/vanilla/components/tooltip.html +187 -0
- package/scaffold/vanilla/index.html +16 -6
- package/scaffold/vanilla/js/main.js +4 -3
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
import DocsLayout from '../../layouts/DocsLayout.astro';
|
|
3
|
+
import PaginationComponent from '../../components/Pagination.astro';
|
|
4
|
+
import CodeBlock from '../../components/CodeBlock.astro';
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<DocsLayout title="Pagination Component — Astro" description="Accessible pagination navigation with previous/next, page numbers, and ellipsis">
|
|
8
|
+
|
|
9
|
+
<p class="docs__read-docs">Read the full docs for this component at <a href="https://rizzo-css.vercel.app/docs/components/pagination" target="_blank" rel="noopener noreferrer">https://rizzo-css.vercel.app/docs/components/pagination</a>.</p>
|
|
10
|
+
|
|
11
|
+
<section>
|
|
12
|
+
<h2>Pagination Component</h2>
|
|
13
|
+
<p>An accessible pagination component for navigating between pages. Supports previous/next, first/last, page numbers with ellipsis for long ranges, and a configurable URL pattern.</p>
|
|
14
|
+
|
|
15
|
+
<h3>Props</h3>
|
|
16
|
+
<ul>
|
|
17
|
+
<li><code>currentPage</code> (number, required) - The current page number (1-based)</li>
|
|
18
|
+
<li><code>totalPages</code> (number, required) - Total number of pages</li>
|
|
19
|
+
<li><code>hrefTemplate</code> (string, optional) - URL pattern with <code>{'{page}'}</code> placeholder (default: <code>?page={'{page}'}</code>)</li>
|
|
20
|
+
<li><code>showFirstLast</code> (boolean, optional) - Show First and Last links (default: <code>true</code>)</li>
|
|
21
|
+
<li><code>maxVisible</code> (number, optional) - Max page numbers to show before using ellipsis (default: <code>5</code>)</li>
|
|
22
|
+
<li><code>class</code> (string, optional) - Additional CSS classes</li>
|
|
23
|
+
</ul>
|
|
24
|
+
|
|
25
|
+
<h3>Basic Usage</h3>
|
|
26
|
+
<p>Click any page to see the current page update. The example uses <code>syncHash</code> so the URL hash and current page stay in sync.</p>
|
|
27
|
+
<div class="example">
|
|
28
|
+
<div class="example-title">Live Example</div>
|
|
29
|
+
<PaginationComponent
|
|
30
|
+
currentPage={3}
|
|
31
|
+
totalPages={10}
|
|
32
|
+
maxVisible={10}
|
|
33
|
+
hrefTemplate={"#page-{page}"}
|
|
34
|
+
syncHash
|
|
35
|
+
/>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<CodeBlock code={`---
|
|
39
|
+
import Pagination from '../../components/Pagination.astro';
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
<Pagination
|
|
43
|
+
currentPage={3}
|
|
44
|
+
totalPages={10}
|
|
45
|
+
hrefTemplate="?page={page}"
|
|
46
|
+
/>`} language="astro" />
|
|
47
|
+
|
|
48
|
+
<h3>With Query String</h3>
|
|
49
|
+
<p>Use <code>hrefTemplate</code> to build URLs. The <code>{'{page}'}</code> placeholder is replaced with the page number. For in-page demos we use hash links with <code>syncHash</code> so the current page updates without a full reload:</p>
|
|
50
|
+
<div class="example">
|
|
51
|
+
<div class="example-title">Live Example</div>
|
|
52
|
+
<PaginationComponent
|
|
53
|
+
currentPage={2}
|
|
54
|
+
totalPages={5}
|
|
55
|
+
hrefTemplate={"#page-{page}"}
|
|
56
|
+
syncHash
|
|
57
|
+
/>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<CodeBlock code={`<Pagination
|
|
61
|
+
currentPage={2}
|
|
62
|
+
totalPages={5}
|
|
63
|
+
hrefTemplate="/blog?page={page}"
|
|
64
|
+
/>`} language="astro" />
|
|
65
|
+
|
|
66
|
+
<h3>Without First/Last</h3>
|
|
67
|
+
<div class="example">
|
|
68
|
+
<div class="example-title">Live Example</div>
|
|
69
|
+
<PaginationComponent
|
|
70
|
+
currentPage={5}
|
|
71
|
+
totalPages={10}
|
|
72
|
+
maxVisible={10}
|
|
73
|
+
showFirstLast={false}
|
|
74
|
+
hrefTemplate={"#page-{page}"}
|
|
75
|
+
syncHash
|
|
76
|
+
/>
|
|
77
|
+
</div>
|
|
78
|
+
|
|
79
|
+
<CodeBlock code={`<Pagination
|
|
80
|
+
currentPage={5}
|
|
81
|
+
totalPages={10}
|
|
82
|
+
showFirstLast={false}
|
|
83
|
+
hrefTemplate="?page={page}"
|
|
84
|
+
/>`} language="astro" />
|
|
85
|
+
|
|
86
|
+
<h3>Many Pages (Ellipsis)</h3>
|
|
87
|
+
<p>When <code>totalPages</code> exceeds <code>maxVisible</code>, ellipsis (…) is shown between the first/last and the range around the current page:</p>
|
|
88
|
+
<div class="example">
|
|
89
|
+
<div class="example-title">Live Example</div>
|
|
90
|
+
<PaginationComponent
|
|
91
|
+
currentPage={7}
|
|
92
|
+
totalPages={20}
|
|
93
|
+
maxVisible={5}
|
|
94
|
+
hrefTemplate={"#page-{page}"}
|
|
95
|
+
syncHash
|
|
96
|
+
/>
|
|
97
|
+
</div>
|
|
98
|
+
|
|
99
|
+
<h3>First and Last Page</h3>
|
|
100
|
+
<p>Previous/Next and First/Last are disabled when on the first or last page:</p>
|
|
101
|
+
<div class="example">
|
|
102
|
+
<div class="example-title">Live Example (Page 1 of 5)</div>
|
|
103
|
+
<PaginationComponent
|
|
104
|
+
currentPage={1}
|
|
105
|
+
totalPages={5}
|
|
106
|
+
hrefTemplate={"#page-{page}"}
|
|
107
|
+
syncHash
|
|
108
|
+
/>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
<h3>Verifying the examples</h3>
|
|
112
|
+
<p>All live examples above use <code>hrefTemplate="#page-{'{page}'}"</code> and <code>syncHash</code>. To confirm they work: open this page, click different page numbers (and First/Previous/Next/Last where shown). The URL hash should update (e.g. <code>#page-5</code>) and the current page highlight should move. Changing the hash in the address bar (e.g. to <code>#page-1</code>) should update the highlighted page.</p>
|
|
113
|
+
|
|
114
|
+
<h3>Features</h3>
|
|
115
|
+
<ul>
|
|
116
|
+
<li><strong>Semantic markup</strong> - <code><nav aria-label="Pagination"></code> with list of links</li>
|
|
117
|
+
<li><strong>Previous / Next</strong> - Always shown; disabled (non-clickable) on first/last page</li>
|
|
118
|
+
<li><strong>First / Last</strong> - Optional; controlled by <code>showFirstLast</code></li>
|
|
119
|
+
<li><strong>Page numbers</strong> - Current page has <code>aria-current="page"</code> and is not a link</li>
|
|
120
|
+
<li><strong>Ellipsis</strong> - When many pages, shows 1 … 4 5 6 … 10 style range</li>
|
|
121
|
+
<li><strong>Configurable URLs</strong> - <code>hrefTemplate</code> with <code>{'{page}'}</code> placeholder</li>
|
|
122
|
+
<li><strong>Theme-aware</strong> - Uses design system variables</li>
|
|
123
|
+
</ul>
|
|
124
|
+
<p><strong>Svelte & Vanilla:</strong> <a href="/docs/svelte/components/pagination">Svelte</a> · Vanilla: same HTML and BEM as in Usage above.</p>
|
|
125
|
+
</section>
|
|
126
|
+
</DocsLayout>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
import DocsLayout from '../../layouts/DocsLayout.astro';
|
|
3
|
+
import ProgressBarComponent from '../../components/ProgressBar.astro';
|
|
4
|
+
import CodeBlock from '../../components/CodeBlock.astro';
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<DocsLayout title="Progress Bar Component — Astro" description="Accessible progress bar with variants, sizes, and indeterminate state">
|
|
8
|
+
|
|
9
|
+
<p class="docs__read-docs">Read the full docs for this component at <a href="https://rizzo-css.vercel.app/docs/components/progress-bar" target="_blank" rel="noopener noreferrer">https://rizzo-css.vercel.app/docs/components/progress-bar</a>.</p>
|
|
10
|
+
|
|
11
|
+
<section>
|
|
12
|
+
<h2>Progress Bar Component</h2>
|
|
13
|
+
<p>An accessible progress bar for showing completion or loading state. Supports determinate (value-based) and indeterminate (animated) modes, multiple variants and sizes, and an optional percentage label.</p>
|
|
14
|
+
|
|
15
|
+
<h3>Props</h3>
|
|
16
|
+
<ul>
|
|
17
|
+
<li><code>value</code> (number, optional) - Current value, 0 to max (default: 0)</li>
|
|
18
|
+
<li><code>max</code> (number, optional) - Maximum value (default: 100)</li>
|
|
19
|
+
<li><code>variant</code> (string, optional) - <code>primary</code>, <code>success</code>, <code>warning</code>, <code>error</code>, <code>info</code> (default: primary)</li>
|
|
20
|
+
<li><code>size</code> (string, optional) - <code>sm</code>, <code>md</code>, <code>lg</code> (default: md)</li>
|
|
21
|
+
<li><code>showLabel</code> (boolean, optional) - Show percentage label (default: false)</li>
|
|
22
|
+
<li><code>indeterminate</code> (boolean, optional) - Animated loading state, ignores value (default: false)</li>
|
|
23
|
+
<li><code>label</code> (string, optional) - Accessible label (aria-label)</li>
|
|
24
|
+
<li><code>class</code> (string, optional) - Additional CSS classes</li>
|
|
25
|
+
</ul>
|
|
26
|
+
|
|
27
|
+
<h3>Basic Usage</h3>
|
|
28
|
+
<div class="example">
|
|
29
|
+
<div class="example-title">Live Example</div>
|
|
30
|
+
<ProgressBarComponent value={60} max={100} />
|
|
31
|
+
</div>
|
|
32
|
+
<CodeBlock code={`---
|
|
33
|
+
import ProgressBar from '../../components/ProgressBar.astro';
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
<ProgressBar value={60} max={100} />`} language="astro" />
|
|
37
|
+
|
|
38
|
+
<h3>With Label</h3>
|
|
39
|
+
<p>Use <code>showLabel</code> to display the percentage next to the bar.</p>
|
|
40
|
+
<div class="example">
|
|
41
|
+
<div class="example-title">Live Example</div>
|
|
42
|
+
<ProgressBarComponent value={75} max={100} showLabel />
|
|
43
|
+
</div>
|
|
44
|
+
<CodeBlock code={`<ProgressBar value={75} max={100} showLabel />`} language="astro" />
|
|
45
|
+
|
|
46
|
+
<h3>Variants</h3>
|
|
47
|
+
<div class="example">
|
|
48
|
+
<div class="example-title">Live Example</div>
|
|
49
|
+
<div style="display: flex; flex-direction: column; gap: var(--spacing-4);">
|
|
50
|
+
<ProgressBarComponent value={40} variant="primary" />
|
|
51
|
+
<ProgressBarComponent value={55} variant="success" />
|
|
52
|
+
<ProgressBarComponent value={70} variant="warning" />
|
|
53
|
+
<ProgressBarComponent value={85} variant="error" />
|
|
54
|
+
<ProgressBarComponent value={25} variant="info" />
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<h3>Sizes</h3>
|
|
59
|
+
<div class="example">
|
|
60
|
+
<div class="example-title">Live Example</div>
|
|
61
|
+
<div style="display: flex; flex-direction: column; gap: var(--spacing-4);">
|
|
62
|
+
<ProgressBarComponent value={50} size="sm" />
|
|
63
|
+
<ProgressBarComponent value={50} size="md" />
|
|
64
|
+
<ProgressBarComponent value={50} size="lg" />
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<h3>Indeterminate</h3>
|
|
69
|
+
<p>Use <code>indeterminate</code> for loading states when progress is unknown. The bar shows an animated fill. Provide an <code>aria-label</code> (e.g. "Loading") for accessibility.</p>
|
|
70
|
+
<div class="example">
|
|
71
|
+
<div class="example-title">Live Example</div>
|
|
72
|
+
<ProgressBarComponent indeterminate label="Loading" />
|
|
73
|
+
</div>
|
|
74
|
+
<CodeBlock code={`<ProgressBar indeterminate label="Loading" />`} language="astro" />
|
|
75
|
+
|
|
76
|
+
<h3>Custom Max</h3>
|
|
77
|
+
<p>Use <code>max</code> and <code>value</code> for non-percentage progress (e.g. steps). The bar width is computed as value/max.</p>
|
|
78
|
+
<div class="example">
|
|
79
|
+
<div class="example-title">Live Example (3 of 5 steps)</div>
|
|
80
|
+
<ProgressBarComponent value={3} max={5} showLabel />
|
|
81
|
+
</div>
|
|
82
|
+
<CodeBlock code={`<ProgressBar value={3} max={5} showLabel />`} language="astro" />
|
|
83
|
+
|
|
84
|
+
<h3>Features</h3>
|
|
85
|
+
<ul>
|
|
86
|
+
<li><strong>Semantic</strong> - <code>role="progressbar"</code> with <code>aria-valuenow</code>, <code>aria-valuemin</code>, <code>aria-valuemax</code></li>
|
|
87
|
+
<li><strong>Indeterminate</strong> - <code>aria-valuetext="Loading"</code> when progress is unknown</li>
|
|
88
|
+
<li><strong>Variants</strong> - Primary, success, warning, error, info using theme variables</li>
|
|
89
|
+
<li><strong>Sizes</strong> - sm, md, lg bar heights</li>
|
|
90
|
+
<li><strong>Reduced motion</strong> - Indeterminate animation disabled when user prefers reduced motion</li>
|
|
91
|
+
</ul>
|
|
92
|
+
<p><strong>Svelte & Vanilla:</strong> <a href="/docs/svelte/components/progress-bar">Svelte</a> · Vanilla: same HTML and BEM as in Usage above.</p>
|
|
93
|
+
</section>
|
|
94
|
+
</DocsLayout>
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
import DocsLayout from '../../layouts/DocsLayout.astro';
|
|
3
|
+
import SearchComponent from '../../components/Search.astro';
|
|
4
|
+
import CodeBlock from '../../components/CodeBlock.astro';
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<DocsLayout title="Search Component — Astro" description="Search component with Algolia integration and live filtering">
|
|
8
|
+
|
|
9
|
+
<p class="docs__read-docs">Read the full docs for this component at <a href="https://rizzo-css.vercel.app/docs/components/search" target="_blank" rel="noopener noreferrer">https://rizzo-css.vercel.app/docs/components/search</a>.</p>
|
|
10
|
+
|
|
11
|
+
<section>
|
|
12
|
+
<h2>Search Component</h2>
|
|
13
|
+
<p>An accessible search component with Algolia integration for fast, relevant search results. Includes live filtering, keyboard navigation, and a client-side fallback.</p>
|
|
14
|
+
</section>
|
|
15
|
+
|
|
16
|
+
<section>
|
|
17
|
+
<h2>Features</h2>
|
|
18
|
+
<ul>
|
|
19
|
+
<li><strong>Full-screen overlay</strong> - When open, the overlay covers the viewport; the search modal is centered inside it both horizontally and vertically</li>
|
|
20
|
+
<li>Algolia integration with client-side fallback</li>
|
|
21
|
+
<li>Keyboard shortcut - <kbd>Ctrl+K</kbd> / <kbd>Cmd+K</kbd> to open</li>
|
|
22
|
+
<li>Close button on desktop (X icon with screen reader label)</li>
|
|
23
|
+
<li>Close button on mobile with text label</li>
|
|
24
|
+
<li>Live search results as you type</li>
|
|
25
|
+
<li>Full keyboard navigation (Arrow keys, Enter, Escape, Tab)</li>
|
|
26
|
+
<li>Mobile responsive - Full-width panel on mobile</li>
|
|
27
|
+
<li>Mutually exclusive with mobile menu (only one open at a time)</li>
|
|
28
|
+
<li>Accessible - ARIA attributes and screen reader support</li>
|
|
29
|
+
</ul>
|
|
30
|
+
</section>
|
|
31
|
+
|
|
32
|
+
<section>
|
|
33
|
+
<h2>Live example</h2>
|
|
34
|
+
<p>Search is in the navbar (top of page) — click the search icon or press <kbd>Ctrl+K</kbd> / <kbd>Cmd+K</kbd>. You can also use the standalone search below.</p>
|
|
35
|
+
<div class="example">
|
|
36
|
+
<div class="example-title">Standalone search (same as navbar)</div>
|
|
37
|
+
<div class="search-doc-example">
|
|
38
|
+
<SearchComponent />
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</section>
|
|
42
|
+
|
|
43
|
+
<section>
|
|
44
|
+
<h2>Usage</h2>
|
|
45
|
+
<CodeBlock code={`---
|
|
46
|
+
import Search from '../../components/Search.astro';
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
<!-- Client-side search (default; uses built-in index when no Algolia credentials) -->
|
|
50
|
+
<Search />
|
|
51
|
+
|
|
52
|
+
<!-- With Algolia (pass credentials via props or env) -->
|
|
53
|
+
<Search
|
|
54
|
+
useAlgolia={true}
|
|
55
|
+
algoliaAppId="YOUR_APP_ID"
|
|
56
|
+
algoliaApiKey="YOUR_SEARCH_ONLY_API_KEY"
|
|
57
|
+
algoliaIndexName="rizzo-css-docs"
|
|
58
|
+
/>`} language="astro" />
|
|
59
|
+
</section>
|
|
60
|
+
|
|
61
|
+
<section>
|
|
62
|
+
<h2>Props</h2>
|
|
63
|
+
<ul>
|
|
64
|
+
<li><code>useAlgolia</code> (boolean, optional) - Enable Algolia search (default: <code>false</code>)</li>
|
|
65
|
+
<li><code>algoliaAppId</code> (string, optional) - Algolia Application ID</li>
|
|
66
|
+
<li><code>algoliaApiKey</code> (string, optional) - Algolia Search-Only API Key</li>
|
|
67
|
+
<li><code>algoliaIndexName</code> (string, optional) - Algolia index name (default: <code>"rizzo-css-docs"</code>)</li>
|
|
68
|
+
</ul>
|
|
69
|
+
</section>
|
|
70
|
+
|
|
71
|
+
<section>
|
|
72
|
+
<h2>Keyboard Shortcuts</h2>
|
|
73
|
+
<ul>
|
|
74
|
+
<li><kbd>Ctrl+K</kbd> / <kbd>Cmd+K</kbd> - Open/close search</li>
|
|
75
|
+
<li><kbd>Escape</kbd> - Close search</li>
|
|
76
|
+
<li><kbd>Arrow Down</kbd> - Navigate to next result</li>
|
|
77
|
+
<li><kbd>Arrow Up</kbd> - Navigate to previous result</li>
|
|
78
|
+
<li><kbd>Enter</kbd> - Navigate to selected result</li>
|
|
79
|
+
</ul>
|
|
80
|
+
</section>
|
|
81
|
+
|
|
82
|
+
<section>
|
|
83
|
+
<h2>Algolia Setup</h2>
|
|
84
|
+
<p>To use Algolia search in production:</p>
|
|
85
|
+
<ol>
|
|
86
|
+
<li>Create an account at <a href="https://www.algolia.com/" target="_blank" rel="noopener noreferrer">algolia.com</a></li>
|
|
87
|
+
<li>Create a new application and get your credentials</li>
|
|
88
|
+
<li>Index your documentation using the indexing script:
|
|
89
|
+
<CodeBlock code={`# Install Algolia client
|
|
90
|
+
pnpm add algoliasearch
|
|
91
|
+
|
|
92
|
+
# Set environment variables
|
|
93
|
+
export ALGOLIA_APP_ID="your-app-id"
|
|
94
|
+
export ALGOLIA_API_KEY="your-admin-api-key"
|
|
95
|
+
export ALGOLIA_INDEX_NAME="rizzo-css-docs"
|
|
96
|
+
|
|
97
|
+
# Run indexing script
|
|
98
|
+
node scripts/index-docs.js`} language="nodejs" />
|
|
99
|
+
</li>
|
|
100
|
+
<li>Configure your Search component with the credentials</li>
|
|
101
|
+
</ol>
|
|
102
|
+
<p>See <a href="/docs/search">Search Documentation</a> for complete setup instructions.</p>
|
|
103
|
+
</section>
|
|
104
|
+
|
|
105
|
+
<section>
|
|
106
|
+
<h2>Accessibility</h2>
|
|
107
|
+
<p>The Search component includes comprehensive accessibility features:</p>
|
|
108
|
+
<ul>
|
|
109
|
+
<li><strong>ARIA Roles:</strong> <code>role="dialog"</code>, <code>role="listbox"</code>, <code>role="option"</code></li>
|
|
110
|
+
<li><strong>ARIA Labels:</strong> Descriptive labels for all interactive elements</li>
|
|
111
|
+
<li><strong>Keyboard Navigation:</strong> Full keyboard support for all interactions</li>
|
|
112
|
+
<li><strong>Focus Management:</strong> Focus trapping and restoration</li>
|
|
113
|
+
<li><strong>Screen Reader Support:</strong> Proper announcements and labels</li>
|
|
114
|
+
<li><strong>Live Regions:</strong> Search results announced to screen readers</li>
|
|
115
|
+
</ul>
|
|
116
|
+
<p><strong>Svelte & Vanilla:</strong> <a href="/docs/svelte/components/search">Svelte</a> · Vanilla: same HTML and BEM as in Usage above; add JS for Cmd+K and Algolia.</p>
|
|
117
|
+
</section>
|
|
118
|
+
</DocsLayout>
|
|
119
|
+
|
|
120
|
+
<style>
|
|
121
|
+
/* Search trigger matches navbar size (base .search__trigger already has same padding/min) */
|
|
122
|
+
.search-doc-example {
|
|
123
|
+
display: flex;
|
|
124
|
+
align-items: center;
|
|
125
|
+
gap: var(--spacing-4);
|
|
126
|
+
}
|
|
127
|
+
@media (width <= 1023px) {
|
|
128
|
+
.search-doc-example .search__trigger {
|
|
129
|
+
width: auto;
|
|
130
|
+
justify-content: center;
|
|
131
|
+
}
|
|
132
|
+
.search-doc-example .search__trigger-text,
|
|
133
|
+
.search-doc-example .search__kbd {
|
|
134
|
+
position: absolute;
|
|
135
|
+
width: 1px;
|
|
136
|
+
height: 1px;
|
|
137
|
+
padding: 0;
|
|
138
|
+
margin: -1px;
|
|
139
|
+
overflow: hidden;
|
|
140
|
+
clip-path: inset(50%);
|
|
141
|
+
white-space: nowrap;
|
|
142
|
+
border: 0;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
kbd {
|
|
146
|
+
display: inline-block;
|
|
147
|
+
padding: var(--spacing-0-125) var(--spacing-0-375);
|
|
148
|
+
background-color: var(--background-alt);
|
|
149
|
+
border: var(--outline-width) solid var(--border);
|
|
150
|
+
border-radius: var(--radius);
|
|
151
|
+
font-family: var(--font-family-mono);
|
|
152
|
+
font-size: var(--font-size-xs);
|
|
153
|
+
line-height: 1;
|
|
154
|
+
}
|
|
155
|
+
</style>
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
import DocsLayout from '../../layouts/DocsLayout.astro';
|
|
3
|
+
import CodeBlock from '../../components/CodeBlock.astro';
|
|
4
|
+
import Gear from '../../components/icons/Gear.astro';
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<DocsLayout title="Settings Component — Astro" description="Comprehensive settings panel for theme switching, font size adjustment, and accessibility options">
|
|
8
|
+
|
|
9
|
+
<p class="docs__read-docs">Read the full docs for this component at <a href="https://rizzo-css.vercel.app/docs/components/settings" target="_blank" rel="noopener noreferrer">https://rizzo-css.vercel.app/docs/components/settings</a>.</p>
|
|
10
|
+
|
|
11
|
+
<section>
|
|
12
|
+
<h2>Settings Component</h2>
|
|
13
|
+
<p>A comprehensive settings panel for theme switching, font size adjustment, and accessibility options.</p>
|
|
14
|
+
|
|
15
|
+
<h3>Features</h3>
|
|
16
|
+
<ul>
|
|
17
|
+
<li><strong>Theme Switcher</strong> - Integrated ThemeSwitcher component with theme icons (persists in localStorage as <code>theme</code>)</li>
|
|
18
|
+
<li><strong>Font Size Slider</strong> - Adjustable from 75% to 150% with filled track indicator (uses CSS gradient with <code>--slider-progress</code> variable). Persists in localStorage as <code>fontSizeScale</code></li>
|
|
19
|
+
<li><strong>Reduce Motion Toggle</strong> - Applies <code>.reduced-motion</code> class to document root. Persists in localStorage as <code>reducedMotion</code></li>
|
|
20
|
+
<li><strong>High Contrast Toggle</strong> - Applies <code>.high-contrast</code> class to document root. Persists in localStorage as <code>highContrast</code></li>
|
|
21
|
+
<li><strong>Scrollbar Style</strong> - Radio button group with three options: Thin (default, 0.5rem/8px), Thick (1.5rem/24px), and Hidden. Applies classes to <code>html</code> element (<code>.scrollbar-thick</code> or <code>.scrollbar-hidden</code>). Persists in localStorage as <code>scrollbarStyle</code> (values: <code>thin</code>, <code>thick</code>, <code>hidden</code>)</li>
|
|
22
|
+
<li><strong>Opening and Closing Animations</strong> - Smooth slide-in from right with overlay fade (respects <code>prefers-reduced-motion</code>)</li>
|
|
23
|
+
<li><strong>Focus Trapping</strong> - Tab cycles within panel when open</li>
|
|
24
|
+
<li><strong>Focus Management</strong> - Returns focus to trigger element on close</li>
|
|
25
|
+
<li>Slide-in panel with overlay</li>
|
|
26
|
+
<li><strong>All settings persist in localStorage</strong> - All preferences are automatically saved and restored on page load</li>
|
|
27
|
+
<li>Full keyboard navigation (Escape to close)</li>
|
|
28
|
+
<li>Accessible ARIA attributes</li>
|
|
29
|
+
<li>Slider track visibility optimized for all themes</li>
|
|
30
|
+
<li><strong>Mobile Responsive</strong> - Full width on mobile devices, optimized layout</li>
|
|
31
|
+
</ul>
|
|
32
|
+
|
|
33
|
+
<h3>Settings Persistence</h3>
|
|
34
|
+
<p>All settings options automatically persist to localStorage and are restored when the page loads:</p>
|
|
35
|
+
<ul>
|
|
36
|
+
<li><code>theme</code> - Selected theme name (e.g., <code>github-dark-classic</code>, <code>github-light</code>)</li>
|
|
37
|
+
<li><code>fontSizeScale</code> - Font size multiplier (e.g., <code>1.0</code> for 100%, <code>1.25</code> for 125%)</li>
|
|
38
|
+
<li><code>reducedMotion</code> - Boolean string (<code>true</code> or <code>false</code>)</li>
|
|
39
|
+
<li><code>highContrast</code> - Boolean string (<code>true</code> or <code>false</code>)</li>
|
|
40
|
+
<li><code>scrollbarStyle</code> - Scrollbar style preference (<code>thin</code>, <code>thick</code>, or <code>hidden</code>)</li>
|
|
41
|
+
</ul>
|
|
42
|
+
|
|
43
|
+
<h3>Live example</h3>
|
|
44
|
+
<p>Open Settings via the gear icon in the navbar or the button below (same as navbar).</p>
|
|
45
|
+
<div class="example">
|
|
46
|
+
<div class="example-title">Open Settings</div>
|
|
47
|
+
<button type="button" class="navbar__settings-btn" aria-label="Open settings" onclick="window.openSettings && window.openSettings()">
|
|
48
|
+
<Gear class="navbar__settings-icon" width={20} height={20} />
|
|
49
|
+
<span class="navbar__settings-label">Settings</span>
|
|
50
|
+
</button>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<h3>Usage</h3>
|
|
54
|
+
<CodeBlock code={`---
|
|
55
|
+
import Settings from '../../components/Settings.astro';
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
<!-- Include once in layout (e.g. with Navbar). Default closed. -->
|
|
59
|
+
<Settings open={false} />
|
|
60
|
+
|
|
61
|
+
<!-- Open/close from JS (e.g. navbar gear button): -->
|
|
62
|
+
<!-- window.openSettings(); window.closeSettings(); -->`} language="astro" />
|
|
63
|
+
|
|
64
|
+
<h3>Props</h3>
|
|
65
|
+
<ul>
|
|
66
|
+
<li><code>open</code> (boolean, optional) - Whether settings panel is open by default (default: false)</li>
|
|
67
|
+
</ul>
|
|
68
|
+
|
|
69
|
+
<h3>Opening Settings</h3>
|
|
70
|
+
<p>The Settings component registers <code>window.openSettings()</code> and <code>window.closeSettings()</code>. The Navbar gear button calls <code>openSettings()</code>.</p>
|
|
71
|
+
<CodeBlock code={`// Open the settings panel (e.g. from a button or navbar)
|
|
72
|
+
window.openSettings();
|
|
73
|
+
|
|
74
|
+
// Close the settings panel
|
|
75
|
+
window.closeSettings();`} language="javascript" />
|
|
76
|
+
<p><strong>Svelte & Vanilla:</strong> <a href="/docs/svelte/components/settings">Svelte</a> · Vanilla: same HTML and BEM as in Usage above; scaffold includes <code>openSettings()</code>.</p>
|
|
77
|
+
</section>
|
|
78
|
+
</DocsLayout>
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
import DocsLayout from '../../layouts/DocsLayout.astro';
|
|
3
|
+
import SpinnerComponent from '../../components/Spinner.astro';
|
|
4
|
+
import CodeBlock from '../../components/CodeBlock.astro';
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<DocsLayout title="Spinner Component — Astro" description="Accessible loading spinner with variants and sizes">
|
|
8
|
+
|
|
9
|
+
<p class="docs__read-docs">Read the full docs for this component at <a href="https://rizzo-css.vercel.app/docs/components/spinner" target="_blank" rel="noopener noreferrer">https://rizzo-css.vercel.app/docs/components/spinner</a>.</p>
|
|
10
|
+
|
|
11
|
+
<section>
|
|
12
|
+
<h2>Spinner Component</h2>
|
|
13
|
+
<p>An accessible loading spinner for indicating progress when content is loading. Uses <code>role="status"</code> and an <code>aria-label</code> (default: "Loading") so screen readers announce the state. Supports multiple sizes and color variants.</p>
|
|
14
|
+
|
|
15
|
+
<h3>Props</h3>
|
|
16
|
+
<ul>
|
|
17
|
+
<li><code>size</code> (string, optional) - <code>sm</code>, <code>md</code>, <code>lg</code> (default: md)</li>
|
|
18
|
+
<li><code>variant</code> (string, optional) - <code>primary</code>, <code>success</code>, <code>warning</code>, <code>error</code>, <code>info</code> (default: primary)</li>
|
|
19
|
+
<li><code>label</code> (string, optional) - Accessible label for screen readers (default: "Loading")</li>
|
|
20
|
+
<li><code>class</code> (string, optional) - Additional CSS classes</li>
|
|
21
|
+
</ul>
|
|
22
|
+
|
|
23
|
+
<h3>Basic Usage</h3>
|
|
24
|
+
<div class="example">
|
|
25
|
+
<div class="example-title">Live Example</div>
|
|
26
|
+
<SpinnerComponent />
|
|
27
|
+
</div>
|
|
28
|
+
<CodeBlock code={`---
|
|
29
|
+
import Spinner from '../../components/Spinner.astro';
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
<Spinner />`} language="astro" />
|
|
33
|
+
|
|
34
|
+
<h3>Sizes</h3>
|
|
35
|
+
<div class="example">
|
|
36
|
+
<div class="example-title">Live Example</div>
|
|
37
|
+
<div style="display: flex; align-items: center; gap: var(--spacing-6); flex-wrap: wrap;">
|
|
38
|
+
<SpinnerComponent size="sm" />
|
|
39
|
+
<SpinnerComponent size="md" />
|
|
40
|
+
<SpinnerComponent size="lg" />
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<CodeBlock code={`<Spinner size="sm" />
|
|
44
|
+
<Spinner size="md" />
|
|
45
|
+
<Spinner size="lg" />`} language="astro" />
|
|
46
|
+
|
|
47
|
+
<h3>Variants</h3>
|
|
48
|
+
<div class="example">
|
|
49
|
+
<div class="example-title">Live Example</div>
|
|
50
|
+
<div style="display: flex; align-items: center; gap: var(--spacing-6); flex-wrap: wrap;">
|
|
51
|
+
<SpinnerComponent variant="primary" />
|
|
52
|
+
<SpinnerComponent variant="success" />
|
|
53
|
+
<SpinnerComponent variant="warning" />
|
|
54
|
+
<SpinnerComponent variant="error" />
|
|
55
|
+
<SpinnerComponent variant="info" />
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
<CodeBlock code={`<Spinner variant="primary" />
|
|
59
|
+
<Spinner variant="success" />
|
|
60
|
+
<Spinner variant="warning" />
|
|
61
|
+
<Spinner variant="error" />
|
|
62
|
+
<Spinner variant="info" />`} language="astro" />
|
|
63
|
+
|
|
64
|
+
<h3>Custom Label</h3>
|
|
65
|
+
<p>Use the <code>label</code> prop to describe the loading context for screen readers (e.g. "Loading results", "Saving…").</p>
|
|
66
|
+
<div class="example">
|
|
67
|
+
<div class="example-title">Live Example</div>
|
|
68
|
+
<SpinnerComponent label="Loading results…" />
|
|
69
|
+
</div>
|
|
70
|
+
<CodeBlock code={`<Spinner label="Loading results…" />`} language="astro" />
|
|
71
|
+
|
|
72
|
+
<h3>Features</h3>
|
|
73
|
+
<ul>
|
|
74
|
+
<li><strong>Accessible</strong> - <code>role="status"</code> and <code>aria-label</code> so screen readers announce loading</li>
|
|
75
|
+
<li><strong>Variants</strong> - Primary, success, warning, error, info using theme variables</li>
|
|
76
|
+
<li><strong>Sizes</strong> - sm, md, lg</li>
|
|
77
|
+
<li><strong>Reduced motion</strong> - Animation disabled when user prefers reduced motion; static segment shown instead</li>
|
|
78
|
+
</ul>
|
|
79
|
+
<p><strong>Svelte & Vanilla:</strong> <a href="/docs/svelte/components/spinner">Svelte</a> · Vanilla: same HTML and BEM as in Usage above.</p>
|
|
80
|
+
</section>
|
|
81
|
+
</DocsLayout>
|