rizzo-css 0.0.17 → 0.0.18

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.
Files changed (260) hide show
  1. package/README.md +4 -4
  2. package/bin/rizzo-css.js +151 -103
  3. package/package.json +7 -3
  4. package/scaffold/astro-minimal/.env.example +3 -0
  5. package/scaffold/astro-minimal/README.md +36 -0
  6. package/scaffold/astro-minimal/package.json +13 -0
  7. package/scaffold/astro-minimal/src/layouts/Layout.astro +28 -0
  8. package/scaffold/astro-minimal/src/pages/index.astro +10 -0
  9. package/scaffold/svelte-minimal/.env.example +3 -0
  10. package/scaffold/svelte-minimal/README.md +37 -0
  11. package/scaffold/svelte-minimal/package.json +20 -0
  12. package/scaffold/svelte-minimal/src/app.d.ts +11 -0
  13. package/scaffold/svelte-minimal/src/app.html +15 -0
  14. package/scaffold/svelte-minimal/src/routes/+layout.svelte +1 -0
  15. package/scaffold/svelte-minimal/src/routes/+page.svelte +5 -0
  16. package/scaffold/svelte-minimal/svelte.config.js +10 -0
  17. package/scaffold/svelte-minimal/tsconfig.json +11 -0
  18. package/scaffold/vanilla/README.md +4 -4
  19. package/scaffold/vanilla/components/accordion.html +8 -0
  20. package/scaffold/vanilla/components/alert.html +8 -0
  21. package/scaffold/vanilla/components/avatar.html +8 -0
  22. package/scaffold/vanilla/components/badge.html +8 -0
  23. package/scaffold/vanilla/components/breadcrumb.html +8 -0
  24. package/scaffold/vanilla/components/button.html +8 -0
  25. package/scaffold/vanilla/components/cards.html +8 -0
  26. package/scaffold/vanilla/components/copy-to-clipboard.html +8 -0
  27. package/scaffold/vanilla/components/divider.html +8 -0
  28. package/scaffold/vanilla/components/dropdown.html +8 -0
  29. package/scaffold/vanilla/components/forms.html +8 -0
  30. package/scaffold/vanilla/components/icons.html +8 -0
  31. package/scaffold/vanilla/components/index.html +8 -0
  32. package/scaffold/vanilla/components/modal.html +8 -0
  33. package/scaffold/vanilla/components/navbar.html +8 -0
  34. package/scaffold/vanilla/components/pagination.html +8 -0
  35. package/scaffold/vanilla/components/progress-bar.html +8 -0
  36. package/scaffold/vanilla/components/search.html +8 -0
  37. package/scaffold/vanilla/components/settings.html +8 -0
  38. package/scaffold/vanilla/components/spinner.html +8 -0
  39. package/scaffold/vanilla/components/table.html +8 -0
  40. package/scaffold/vanilla/components/tabs.html +8 -0
  41. package/scaffold/vanilla/components/theme-switcher.html +8 -0
  42. package/scaffold/vanilla/components/toast.html +8 -0
  43. package/scaffold/vanilla/components/tooltip.html +8 -0
  44. package/scaffold/vanilla/index.html +8 -0
  45. package/scaffold/astro-app/README.md +0 -43
  46. package/scaffold/astro-app/package.json +0 -1
  47. package/scaffold/astro-app/src/components/Accordion.astro +0 -178
  48. package/scaffold/astro-app/src/components/Alert.astro +0 -131
  49. package/scaffold/astro-app/src/components/Avatar.astro +0 -59
  50. package/scaffold/astro-app/src/components/Badge.astro +0 -24
  51. package/scaffold/astro-app/src/components/Breadcrumb.astro +0 -61
  52. package/scaffold/astro-app/src/components/Button.astro +0 -3
  53. package/scaffold/astro-app/src/components/Card.astro +0 -18
  54. package/scaffold/astro-app/src/components/Checkbox.astro +0 -38
  55. package/scaffold/astro-app/src/components/CliCommandTabs.astro +0 -90
  56. package/scaffold/astro-app/src/components/CodeBlock.astro +0 -393
  57. package/scaffold/astro-app/src/components/CopyToClipboard.astro +0 -219
  58. package/scaffold/astro-app/src/components/Divider.astro +0 -37
  59. package/scaffold/astro-app/src/components/DocsSidebar.astro +0 -51
  60. package/scaffold/astro-app/src/components/Dropdown.astro +0 -807
  61. package/scaffold/astro-app/src/components/FormGroup.astro +0 -59
  62. package/scaffold/astro-app/src/components/FrameworkSwitcher.astro +0 -72
  63. package/scaffold/astro-app/src/components/Input.astro +0 -59
  64. package/scaffold/astro-app/src/components/Modal.astro +0 -212
  65. package/scaffold/astro-app/src/components/Navbar.astro +0 -623
  66. package/scaffold/astro-app/src/components/PackageInstallTabs.astro +0 -87
  67. package/scaffold/astro-app/src/components/Pagination.astro +0 -240
  68. package/scaffold/astro-app/src/components/ProgressBar.astro +0 -65
  69. package/scaffold/astro-app/src/components/Radio.astro +0 -38
  70. package/scaffold/astro-app/src/components/Search.astro +0 -1259
  71. package/scaffold/astro-app/src/components/Select.astro +0 -49
  72. package/scaffold/astro-app/src/components/Settings.astro +0 -382
  73. package/scaffold/astro-app/src/components/Spinner.astro +0 -30
  74. package/scaffold/astro-app/src/components/Table.astro +0 -181
  75. package/scaffold/astro-app/src/components/Tabs.astro +0 -223
  76. package/scaffold/astro-app/src/components/Textarea.astro +0 -58
  77. package/scaffold/astro-app/src/components/ThemeIcon.astro +0 -50
  78. package/scaffold/astro-app/src/components/ThemeSwitcher.astro +0 -504
  79. package/scaffold/astro-app/src/components/Toast.astro +0 -30
  80. package/scaffold/astro-app/src/components/Tooltip.astro +0 -32
  81. package/scaffold/astro-app/src/components/icons/Brush.astro +0 -10
  82. package/scaffold/astro-app/src/components/icons/Cake.astro +0 -11
  83. package/scaffold/astro-app/src/components/icons/Check.astro +0 -29
  84. package/scaffold/astro-app/src/components/icons/Cherry.astro +0 -11
  85. package/scaffold/astro-app/src/components/icons/ChevronDown.astro +0 -29
  86. package/scaffold/astro-app/src/components/icons/Circle.astro +0 -29
  87. package/scaffold/astro-app/src/components/icons/Close.astro +0 -30
  88. package/scaffold/astro-app/src/components/icons/Cmd.astro +0 -26
  89. package/scaffold/astro-app/src/components/icons/Copy.astro +0 -30
  90. package/scaffold/astro-app/src/components/icons/Eye.astro +0 -30
  91. package/scaffold/astro-app/src/components/icons/Filter.astro +0 -29
  92. package/scaffold/astro-app/src/components/icons/Flame.astro +0 -28
  93. package/scaffold/astro-app/src/components/icons/Flower.astro +0 -11
  94. package/scaffold/astro-app/src/components/icons/Gear.astro +0 -30
  95. package/scaffold/astro-app/src/components/icons/Heart.astro +0 -28
  96. package/scaffold/astro-app/src/components/icons/IceCream.astro +0 -31
  97. package/scaffold/astro-app/src/components/icons/Leaf.astro +0 -29
  98. package/scaffold/astro-app/src/components/icons/Lemon.astro +0 -11
  99. package/scaffold/astro-app/src/components/icons/Moon.astro +0 -29
  100. package/scaffold/astro-app/src/components/icons/Owl.astro +0 -34
  101. package/scaffold/astro-app/src/components/icons/Palette.astro +0 -33
  102. package/scaffold/astro-app/src/components/icons/Rainbow.astro +0 -31
  103. package/scaffold/astro-app/src/components/icons/Search.astro +0 -30
  104. package/scaffold/astro-app/src/components/icons/Shield.astro +0 -28
  105. package/scaffold/astro-app/src/components/icons/Snowflake.astro +0 -34
  106. package/scaffold/astro-app/src/components/icons/Sort.astro +0 -30
  107. package/scaffold/astro-app/src/components/icons/Sun.astro +0 -29
  108. package/scaffold/astro-app/src/components/icons/Sunset.astro +0 -10
  109. package/scaffold/astro-app/src/components/icons/Zap.astro +0 -9
  110. package/scaffold/astro-app/src/components/icons/devicons/Astro.astro +0 -53
  111. package/scaffold/astro-app/src/components/icons/devicons/Bash.astro +0 -34
  112. package/scaffold/astro-app/src/components/icons/devicons/Css3.astro +0 -29
  113. package/scaffold/astro-app/src/components/icons/devicons/Git.astro +0 -24
  114. package/scaffold/astro-app/src/components/icons/devicons/Html5.astro +0 -27
  115. package/scaffold/astro-app/src/components/icons/devicons/Javascript.astro +0 -25
  116. package/scaffold/astro-app/src/components/icons/devicons/Nodejs.astro +0 -47
  117. package/scaffold/astro-app/src/components/icons/devicons/Plaintext.astro +0 -33
  118. package/scaffold/astro-app/src/components/icons/devicons/React.astro +0 -27
  119. package/scaffold/astro-app/src/components/icons/devicons/Svelte.astro +0 -25
  120. package/scaffold/astro-app/src/components/icons/devicons/Vue.astro +0 -26
  121. package/scaffold/astro-app/src/config/frameworks.ts +0 -26
  122. package/scaffold/astro-app/src/config/themes.ts +0 -54
  123. package/scaffold/astro-app/src/layouts/DocsLayout.astro +0 -263
  124. package/scaffold/astro-app/src/layouts/Layout.astro +0 -41
  125. package/scaffold/astro-app/src/pages/components/accordion.astro +0 -172
  126. package/scaffold/astro-app/src/pages/components/alert.astro +0 -250
  127. package/scaffold/astro-app/src/pages/components/avatar.astro +0 -102
  128. package/scaffold/astro-app/src/pages/components/badge.astro +0 -119
  129. package/scaffold/astro-app/src/pages/components/breadcrumb.astro +0 -124
  130. package/scaffold/astro-app/src/pages/components/button.astro +0 -74
  131. package/scaffold/astro-app/src/pages/components/cards.astro +0 -247
  132. package/scaffold/astro-app/src/pages/components/copy-to-clipboard.astro +0 -49
  133. package/scaffold/astro-app/src/pages/components/divider.astro +0 -74
  134. package/scaffold/astro-app/src/pages/components/dropdown.astro +0 -394
  135. package/scaffold/astro-app/src/pages/components/forms.astro +0 -367
  136. package/scaffold/astro-app/src/pages/components/icons.astro +0 -246
  137. package/scaffold/astro-app/src/pages/components/modal.astro +0 -152
  138. package/scaffold/astro-app/src/pages/components/navbar.astro +0 -80
  139. package/scaffold/astro-app/src/pages/components/pagination.astro +0 -126
  140. package/scaffold/astro-app/src/pages/components/progress-bar.astro +0 -94
  141. package/scaffold/astro-app/src/pages/components/search.astro +0 -155
  142. package/scaffold/astro-app/src/pages/components/settings.astro +0 -78
  143. package/scaffold/astro-app/src/pages/components/spinner.astro +0 -81
  144. package/scaffold/astro-app/src/pages/components/table.astro +0 -144
  145. package/scaffold/astro-app/src/pages/components/tabs.astro +0 -220
  146. package/scaffold/astro-app/src/pages/components/theme-switcher.astro +0 -69
  147. package/scaffold/astro-app/src/pages/components/toast.astro +0 -157
  148. package/scaffold/astro-app/src/pages/components/tooltip.astro +0 -209
  149. package/scaffold/astro-app/src/pages/components.astro +0 -290
  150. package/scaffold/astro-app/src/pages/docs/accessibility.astro +0 -9
  151. package/scaffold/astro-app/src/pages/docs/colors.astro +0 -9
  152. package/scaffold/astro-app/src/pages/docs/design-system.astro +0 -9
  153. package/scaffold/astro-app/src/pages/docs/getting-started.astro +0 -9
  154. package/scaffold/astro-app/src/pages/docs/index.astro +0 -15
  155. package/scaffold/astro-app/src/pages/docs/themes/[theme].astro +0 -14
  156. package/scaffold/astro-app/src/pages/docs/theming.astro +0 -10
  157. package/scaffold/astro-app/src/pages/index.astro +0 -24
  158. package/scaffold/svelte-app/README.md +0 -39
  159. package/scaffold/svelte-app/package.json +0 -22
  160. package/scaffold/svelte-app/src/app.d.ts +0 -28
  161. package/scaffold/svelte-app/src/app.html +0 -21
  162. package/scaffold/svelte-app/src/lib/assets/favicon.svg +0 -1
  163. package/scaffold/svelte-app/src/lib/rizzo/Accordion.svelte +0 -128
  164. package/scaffold/svelte-app/src/lib/rizzo/Alert.svelte +0 -85
  165. package/scaffold/svelte-app/src/lib/rizzo/Avatar.svelte +0 -39
  166. package/scaffold/svelte-app/src/lib/rizzo/Badge.svelte +0 -31
  167. package/scaffold/svelte-app/src/lib/rizzo/Breadcrumb.svelte +0 -49
  168. package/scaffold/svelte-app/src/lib/rizzo/Button.svelte +0 -27
  169. package/scaffold/svelte-app/src/lib/rizzo/Card.svelte +0 -17
  170. package/scaffold/svelte-app/src/lib/rizzo/Checkbox.svelte +0 -37
  171. package/scaffold/svelte-app/src/lib/rizzo/CopyToClipboard.svelte +0 -79
  172. package/scaffold/svelte-app/src/lib/rizzo/Divider.svelte +0 -28
  173. package/scaffold/svelte-app/src/lib/rizzo/Dropdown.svelte +0 -254
  174. package/scaffold/svelte-app/src/lib/rizzo/FormGroup.svelte +0 -51
  175. package/scaffold/svelte-app/src/lib/rizzo/Input.svelte +0 -59
  176. package/scaffold/svelte-app/src/lib/rizzo/Modal.svelte +0 -157
  177. package/scaffold/svelte-app/src/lib/rizzo/Pagination.svelte +0 -93
  178. package/scaffold/svelte-app/src/lib/rizzo/ProgressBar.svelte +0 -58
  179. package/scaffold/svelte-app/src/lib/rizzo/Radio.svelte +0 -38
  180. package/scaffold/svelte-app/src/lib/rizzo/Select.svelte +0 -51
  181. package/scaffold/svelte-app/src/lib/rizzo/Spinner.svelte +0 -14
  182. package/scaffold/svelte-app/src/lib/rizzo/Table.svelte +0 -158
  183. package/scaffold/svelte-app/src/lib/rizzo/Tabs.svelte +0 -117
  184. package/scaffold/svelte-app/src/lib/rizzo/Textarea.svelte +0 -59
  185. package/scaffold/svelte-app/src/lib/rizzo/ThemeIcon.svelte +0 -54
  186. package/scaffold/svelte-app/src/lib/rizzo/ThemeSwitcher.svelte +0 -315
  187. package/scaffold/svelte-app/src/lib/rizzo/Toast.svelte +0 -33
  188. package/scaffold/svelte-app/src/lib/rizzo/Tooltip.svelte +0 -19
  189. package/scaffold/svelte-app/src/lib/rizzo/icons/Check.svelte +0 -29
  190. package/scaffold/svelte-app/src/lib/rizzo/icons/ChevronDown.svelte +0 -29
  191. package/scaffold/svelte-app/src/lib/rizzo/icons/Circle.svelte +0 -29
  192. package/scaffold/svelte-app/src/lib/rizzo/icons/Close.svelte +0 -30
  193. package/scaffold/svelte-app/src/lib/rizzo/icons/Cmd.svelte +0 -27
  194. package/scaffold/svelte-app/src/lib/rizzo/icons/Copy.svelte +0 -30
  195. package/scaffold/svelte-app/src/lib/rizzo/icons/Eye.svelte +0 -30
  196. package/scaffold/svelte-app/src/lib/rizzo/icons/Filter.svelte +0 -29
  197. package/scaffold/svelte-app/src/lib/rizzo/icons/Gear.svelte +0 -30
  198. package/scaffold/svelte-app/src/lib/rizzo/icons/IceCream.svelte +0 -31
  199. package/scaffold/svelte-app/src/lib/rizzo/icons/Moon.svelte +0 -29
  200. package/scaffold/svelte-app/src/lib/rizzo/icons/Owl.svelte +0 -34
  201. package/scaffold/svelte-app/src/lib/rizzo/icons/Palette.svelte +0 -33
  202. package/scaffold/svelte-app/src/lib/rizzo/icons/Rainbow.svelte +0 -31
  203. package/scaffold/svelte-app/src/lib/rizzo/icons/Search.svelte +0 -30
  204. package/scaffold/svelte-app/src/lib/rizzo/icons/Snowflake.svelte +0 -34
  205. package/scaffold/svelte-app/src/lib/rizzo/icons/Sort.svelte +0 -30
  206. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Astro.svelte +0 -45
  207. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Bash.svelte +0 -28
  208. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Css3.svelte +0 -23
  209. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Git.svelte +0 -18
  210. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Html5.svelte +0 -21
  211. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Javascript.svelte +0 -19
  212. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Nodejs.svelte +0 -44
  213. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Plaintext.svelte +0 -24
  214. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/React.svelte +0 -21
  215. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/SvelteIcon.svelte +0 -19
  216. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Vue.svelte +0 -20
  217. package/scaffold/svelte-app/src/lib/rizzo/index.ts +0 -35
  218. package/scaffold/svelte-app/src/lib/rizzo-docs/CodeBlock.svelte +0 -239
  219. package/scaffold/svelte-app/src/lib/rizzo-docs/SvelteDocPage.svelte +0 -99
  220. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/AccordionDoc.svelte +0 -53
  221. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/AlertDoc.svelte +0 -114
  222. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/AvatarDoc.svelte +0 -92
  223. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/BadgeDoc.svelte +0 -60
  224. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/BreadcrumbDoc.svelte +0 -55
  225. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ButtonDoc.svelte +0 -55
  226. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/CardsDoc.svelte +0 -173
  227. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ComingSoon.svelte +0 -12
  228. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ComponentsOverview.svelte +0 -92
  229. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/CopyToClipboardDoc.svelte +0 -26
  230. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/DividerDoc.svelte +0 -105
  231. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/DropdownDoc.svelte +0 -161
  232. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/FormsDoc.svelte +0 -375
  233. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/IconsDoc.svelte +0 -246
  234. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/Index.svelte +0 -8
  235. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ModalDoc.svelte +0 -50
  236. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/NavbarDoc.svelte +0 -79
  237. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/PaginationDoc.svelte +0 -44
  238. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ProgressBarDoc.svelte +0 -95
  239. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/SearchDoc.svelte +0 -147
  240. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/SettingsDoc.svelte +0 -158
  241. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/SpinnerDoc.svelte +0 -41
  242. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/TableDoc.svelte +0 -116
  243. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/TabsDoc.svelte +0 -152
  244. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ThemeSwitcherDoc.svelte +0 -189
  245. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/Theming.svelte +0 -6
  246. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ToastDoc.svelte +0 -136
  247. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/TooltipDoc.svelte +0 -57
  248. package/scaffold/svelte-app/src/routes/+layout.svelte +0 -10
  249. package/scaffold/svelte-app/src/routes/+page.svelte +0 -31
  250. package/scaffold/svelte-app/src/routes/components/+page.svelte +0 -4
  251. package/scaffold/svelte-app/src/routes/components/[slug]/+page.svelte +0 -7
  252. package/scaffold/svelte-app/static/robots.txt +0 -3
  253. package/scaffold/svelte-app/svelte.config.js +0 -13
  254. package/scaffold/svelte-app/tsconfig.json +0 -21
  255. package/scaffold/svelte-app/vite.config.ts +0 -6
  256. /package/scaffold/{astro-app → astro-minimal}/astro.config.mjs +0 -0
  257. /package/scaffold/{astro-app → astro-minimal}/public/.gitkeep +0 -0
  258. /package/scaffold/{astro-app → astro-minimal}/public/favicon.svg +0 -0
  259. /package/scaffold/{astro-app → astro-minimal}/tsconfig.json +0 -0
  260. /package/scaffold/{svelte-app → svelte-minimal}/static/.gitkeep +0 -0
@@ -1,43 +0,0 @@
1
- # Astro + Rizzo CSS
2
-
3
- This project was scaffolded with `npx rizzo-css init` when you chose **Create new project** and Astro. This full clone (navbar, docs pages, component showcase) is only generated for new projects; **Add to existing project** only adds the CSS and optional components (you must add the stylesheet `<link>` to your layout yourself; the CLI prints the exact tag).
4
-
5
- ## First-time setup
6
-
7
- **Install dependencies before running any Astro command:**
8
-
9
- ```bash
10
- pnpm install
11
- # or: npm install
12
- ```
13
-
14
- Then start the dev server:
15
-
16
- ```bash
17
- pnpm dev
18
- ```
19
-
20
- The theme selected during `rizzo-css init` is set in `src/layouts/Layout.astro` (`data-theme` on `<html>`) and is used on first load when you have no saved preference in the browser.
21
-
22
- ## Commands
23
-
24
- - `pnpm dev` — Start dev server
25
- - `pnpm build` — Build for production
26
- - `pnpm preview` — Preview production build
27
-
28
- ## Editing the cloned site
29
-
30
- - **Layout and shell** — `src/layouts/Layout.astro` (navbar, settings, theme script, CSS link). Change the default theme or title placeholders here.
31
- - **Docs and theme pages** — `src/pages/docs/` (getting-started, design-system, theming, themes, etc.). Each page uses `DocsLayout` and can be edited or replaced; stubs link to the main site for full content.
32
- - **Component showcase** — `src/pages/components.astro` (index) and `src/pages/components/*.astro`. Edit or add component demos; imports use `../../components/` and `../../layouts/`.
33
- - **Home page** — `src/pages/index.astro`. Replace the hero and links with your own content.
34
- - **Components and config** — `src/components/` (Navbar, Settings, Card, etc.) and `src/config/themes.ts`. Customize or remove components; update the nav in `Navbar.astro` if you add/remove routes.
35
- - **CSS** — The app loads `/css/rizzo.min.css` (from `public/css/`). Replace or add styles as needed.
36
-
37
- After editing, run `pnpm dev` to preview and `pnpm build` for production.
38
-
39
- ## Other scaffolds
40
-
41
- From the same **rizzo-css** package: **Vanilla** (`scaffold/vanilla/`) — index + component showcase (components/index.html, components/<slug>.html) with Settings and toast; **Svelte** (`scaffold/svelte-app/`) — SvelteKit app with /components and /components/[slug]. Use `npx rizzo-css init` and pick a different framework to create one of them.
42
-
43
- Docs: [rizzo-css.vercel.app](https://rizzo-css.vercel.app)
@@ -1 +0,0 @@
1
- {"name":"{{PROJECT_NAME}}","type":"module","version":"0.0.1","scripts":{"dev":"astro dev","build":"astro build","preview":"astro preview"},"devDependencies":{"astro":"^5.17.1"}}
@@ -1,178 +0,0 @@
1
- ---
2
- import ChevronDown from './icons/ChevronDown.astro';
3
-
4
- interface AccordionItem {
5
- id: string;
6
- title: string;
7
- content?: string;
8
- }
9
-
10
- interface Props {
11
- items: AccordionItem[];
12
- id?: string;
13
- allowMultiple?: boolean;
14
- defaultExpanded?: string | string[];
15
- class?: string;
16
- }
17
-
18
- const {
19
- items,
20
- id,
21
- allowMultiple = false,
22
- defaultExpanded,
23
- class: className = '',
24
- } = Astro.props;
25
-
26
- const accordionId = id || `accordion-${Math.random().toString(36).substr(2, 9)}`;
27
-
28
- const getDefaultExpanded = (): Set<string> => {
29
- if (defaultExpanded === undefined) return new Set(items[0] ? [items[0].id] : []);
30
- if (typeof defaultExpanded === 'string') return new Set([defaultExpanded]);
31
- return new Set(defaultExpanded);
32
- };
33
-
34
- const defaultOpenIds = getDefaultExpanded();
35
- const classes = `accordion ${className}`.trim();
36
- let slotIndex = 0;
37
- ---
38
-
39
- <div class={classes} data-accordion={accordionId} data-allow-multiple={allowMultiple ? 'true' : 'false'}>
40
- {items.map((item) => {
41
- const triggerId = `${accordionId}-trigger-${item.id}`;
42
- const panelId = `${accordionId}-panel-${item.id}`;
43
- const isExpanded = defaultOpenIds.has(item.id);
44
- const useSlot = !item.content;
45
- const currentSlotIndex = useSlot ? slotIndex++ : -1;
46
-
47
- return (
48
- <div class="accordion__item" data-accordion-item data-item-id={item.id}>
49
- <h3 class="accordion__heading">
50
- <button
51
- type="button"
52
- class={`accordion__trigger ${isExpanded ? 'accordion__trigger--expanded' : ''}`}
53
- id={triggerId}
54
- aria-expanded={isExpanded}
55
- aria-controls={panelId}
56
- data-accordion-trigger
57
- >
58
- <span class="accordion__title">{item.title}</span>
59
- <ChevronDown class="accordion__icon" width={16} height={16} aria-hidden="true" />
60
- </button>
61
- </h3>
62
- <div
63
- class={`accordion__panel ${isExpanded ? 'accordion__panel--expanded' : ''}`}
64
- id={panelId}
65
- role="region"
66
- aria-labelledby={triggerId}
67
- hidden={!isExpanded}
68
- data-accordion-panel
69
- >
70
- <div class="accordion__panel-inner">
71
- {item.content ? (
72
- <div class="accordion__panel-content" set:html={item.content} />
73
- ) : (
74
- <div class="accordion__panel-content accordion__panel-slot" data-accordion-slot-index={currentSlotIndex}>
75
- <!-- Slot content distributed by script -->
76
- </div>
77
- )}
78
- </div>
79
- </div>
80
- </div>
81
- );
82
- })}
83
- <!-- Slot content for distribution (same order as items) -->
84
- <div class="accordion__slot-content" style="display: none;">
85
- <slot />
86
- </div>
87
- </div>
88
-
89
- <script is:inline>
90
- (function initAccordions() {
91
- function initOne(accordion) {
92
- if (accordion.dataset.accordionInit === 'true') return;
93
- accordion.dataset.accordionInit = 'true';
94
-
95
- const isMultiple = accordion.getAttribute('data-allow-multiple') === 'true';
96
- const triggers = accordion.querySelectorAll('[data-accordion-trigger]');
97
-
98
- const setExpanded = (trigger, expanded) => {
99
- const panelId = trigger.getAttribute('aria-controls');
100
- const panel = panelId ? accordion.querySelector('#' + CSS.escape(panelId)) : null;
101
- trigger.setAttribute('aria-expanded', String(expanded));
102
- trigger.classList.toggle('accordion__trigger--expanded', expanded);
103
- if (panel) {
104
- panel.classList.toggle('accordion__panel--expanded', expanded);
105
- panel.hidden = !expanded;
106
- }
107
- };
108
-
109
- const toggle = (trigger) => {
110
- const expanded = trigger.getAttribute('aria-expanded') === 'true';
111
- if (!isMultiple) {
112
- triggers.forEach((t) => setExpanded(t, false));
113
- }
114
- setExpanded(trigger, !expanded);
115
- };
116
-
117
- triggers.forEach((trigger) => {
118
- trigger.addEventListener('click', () => toggle(trigger));
119
- });
120
-
121
- triggers.forEach((trigger, index) => {
122
- trigger.addEventListener('keydown', (e) => {
123
- let targetIndex = index;
124
- switch (e.key) {
125
- case 'ArrowDown':
126
- e.preventDefault();
127
- targetIndex = Math.min(index + 1, triggers.length - 1);
128
- break;
129
- case 'ArrowUp':
130
- e.preventDefault();
131
- targetIndex = Math.max(index - 1, 0);
132
- break;
133
- case 'Home':
134
- e.preventDefault();
135
- targetIndex = 0;
136
- break;
137
- case 'End':
138
- e.preventDefault();
139
- targetIndex = triggers.length - 1;
140
- break;
141
- case 'Enter':
142
- case ' ':
143
- e.preventDefault();
144
- toggle(trigger);
145
- return;
146
- default:
147
- return;
148
- }
149
- if (targetIndex !== index) {
150
- triggers[targetIndex].focus();
151
- }
152
- });
153
- });
154
-
155
- const slotContent = accordion.querySelector('.accordion__slot-content');
156
- if (slotContent) {
157
- const slotChildren = Array.from(slotContent.children);
158
- slotChildren.forEach((child, index) => {
159
- const slotPlaceholder = accordion.querySelector('[data-accordion-slot-index="' + index + '"]');
160
- if (slotPlaceholder) {
161
- slotPlaceholder.appendChild(child);
162
- }
163
- });
164
- slotContent.remove();
165
- }
166
- }
167
-
168
- function init() {
169
- document.querySelectorAll('[data-accordion]').forEach(initOne);
170
- }
171
-
172
- if (document.readyState === 'loading') {
173
- document.addEventListener('DOMContentLoaded', init);
174
- } else {
175
- init();
176
- }
177
- })();
178
- </script>
@@ -1,131 +0,0 @@
1
- ---
2
- import Close from './icons/Close.astro';
3
-
4
- interface Props {
5
- variant?: 'success' | 'error' | 'warning' | 'info';
6
- dismissible?: boolean;
7
- autoDismiss?: number; // Duration in milliseconds (0 = disabled)
8
- class?: string;
9
- id?: string;
10
- }
11
-
12
- const {
13
- variant = 'info',
14
- dismissible = false,
15
- autoDismiss = 0, // 0 means disabled
16
- class: className = '',
17
- id,
18
- } = Astro.props;
19
-
20
- const alertId = id || `alert-${Math.random().toString(36).substr(2, 9)}`;
21
- const variantClass = `alert--${variant}`;
22
- const classes = `alert ${variantClass} ${className}`.trim();
23
-
24
- // ARIA labels based on variant
25
- const ariaLabels = {
26
- success: 'Success message',
27
- error: 'Error message',
28
- warning: 'Warning message',
29
- info: 'Information message',
30
- };
31
- ---
32
-
33
- <div
34
- class={classes}
35
- id={alertId}
36
- role="alert"
37
- aria-live="polite"
38
- aria-atomic="true"
39
- aria-label={ariaLabels[variant]}
40
- >
41
- <div class="alert__content">
42
- <slot />
43
- </div>
44
- {dismissible && (
45
- <button
46
- type="button"
47
- class="alert__close"
48
- aria-label="Dismiss alert"
49
- data-alert-close
50
- aria-controls={alertId}
51
- >
52
- <Close width={16} height={16} />
53
- </button>
54
- )}
55
- </div>
56
-
57
- <script define:vars={{ alertId, autoDismiss }}>
58
- (function initAlert() {
59
- const init = () => {
60
- const alert = document.querySelector(`#${alertId}`);
61
- if (!alert) {
62
- if (document.readyState === 'loading') {
63
- document.addEventListener('DOMContentLoaded', init);
64
- return;
65
- }
66
- return;
67
- }
68
-
69
- // Skip if already initialized
70
- if (alert.hasAttribute('data-alert-initialized')) return;
71
- alert.setAttribute('data-alert-initialized', 'true');
72
-
73
- const closeBtn = alert.querySelector('[data-alert-close]');
74
-
75
- let closeAlert = () => {
76
- // Announce dismissal to screen readers
77
- const announcement = document.createElement('div');
78
- announcement.setAttribute('role', 'status');
79
- announcement.setAttribute('aria-live', 'polite');
80
- announcement.className = 'sr-only';
81
- announcement.textContent = 'Alert dismissed';
82
- document.body.appendChild(announcement);
83
-
84
- // Remove alert with animation
85
- alert.style.opacity = '0';
86
- alert.style.transform = 'translateY(-10px)';
87
-
88
- setTimeout(() => {
89
- alert.remove();
90
- if (document.body.contains(announcement)) {
91
- document.body.removeChild(announcement);
92
- }
93
- }, 200);
94
- };
95
-
96
- // Auto-dismiss functionality
97
- if (autoDismiss > 0) {
98
- const timeoutId = setTimeout(() => {
99
- closeAlert();
100
- }, autoDismiss);
101
-
102
- // Clear timeout if user manually dismisses
103
- if (closeBtn) {
104
- const originalClose = closeAlert;
105
- closeAlert = () => {
106
- clearTimeout(timeoutId);
107
- originalClose();
108
- };
109
- }
110
- }
111
-
112
- if (closeBtn) {
113
- closeBtn.addEventListener('click', closeAlert);
114
-
115
- // Keyboard support
116
- closeBtn.addEventListener('keydown', (e) => {
117
- if (e.key === 'Enter' || e.key === ' ') {
118
- e.preventDefault();
119
- closeAlert();
120
- }
121
- });
122
- }
123
- };
124
-
125
- if (document.readyState === 'loading') {
126
- document.addEventListener('DOMContentLoaded', init);
127
- } else {
128
- init();
129
- }
130
- })();
131
- </script>
@@ -1,59 +0,0 @@
1
- ---
2
- import { Image } from 'astro:assets';
3
-
4
- interface Props {
5
- /** Image URL (when provided, shows image; otherwise shows initials or placeholder). For remote URLs, add the domain to image.domains in astro.config. */
6
- src?: string;
7
- /** Alt text for the image */
8
- alt?: string;
9
- /** Full name used to derive initials when no image (e.g. "Jane Doe" → "JD") */
10
- name?: string;
11
- /** Override initials when no image (e.g. "JD"); ignored if name is provided */
12
- initials?: string;
13
- /** Size */
14
- size?: 'sm' | 'md' | 'lg';
15
- /** Shape */
16
- shape?: 'circle' | 'square';
17
- class?: string;
18
- }
19
-
20
- const {
21
- src,
22
- alt = '',
23
- name = '',
24
- initials: initialsProp = '',
25
- size = 'md',
26
- shape = 'circle',
27
- class: className = '',
28
- } = Astro.props;
29
-
30
- function getInitials(name: string): string {
31
- const parts = name.trim().split(/\s+/).filter(Boolean);
32
- if (parts.length === 0) return '';
33
- if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();
34
- return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();
35
- }
36
-
37
- const displayInitials = name ? getInitials(name) : initialsProp;
38
- const sizeClass = `avatar--${size}`;
39
- const shapeClass = `avatar--${shape}`;
40
- const classes = `avatar ${sizeClass} ${shapeClass} ${className}`.trim();
41
-
42
- const sizePixels = size === 'sm' ? 32 : size === 'lg' ? 48 : 40;
43
- ---
44
-
45
- <span class={classes} role="img" aria-label={alt || name || (displayInitials ? `Avatar: ${displayInitials}` : 'Avatar')}>
46
- {src ? (
47
- <Image
48
- src={src}
49
- alt={alt || name || ''}
50
- width={sizePixels}
51
- height={sizePixels}
52
- class="avatar__img"
53
- />
54
- ) : (
55
- <span class="avatar__initials" aria-hidden="true">
56
- {displayInitials || '?'}
57
- </span>
58
- )}
59
- </span>
@@ -1,24 +0,0 @@
1
- ---
2
- interface Props {
3
- variant?: 'primary' | 'success' | 'warning' | 'error' | 'info';
4
- size?: 'sm' | 'md' | 'lg';
5
- pill?: boolean;
6
- class?: string;
7
- }
8
-
9
- const {
10
- variant = 'primary',
11
- size = 'md',
12
- pill = false,
13
- class: className = '',
14
- } = Astro.props;
15
-
16
- const variantClass = `badge--${variant}`;
17
- const sizeClass = `badge--${size}`;
18
- const pillClass = pill ? 'badge--pill' : '';
19
- const classes = `badge ${variantClass} ${sizeClass} ${pillClass} ${className}`.trim();
20
- ---
21
-
22
- <span class={classes}>
23
- <slot />
24
- </span>
@@ -1,61 +0,0 @@
1
- ---
2
- import ChevronDown from './icons/ChevronDown.astro';
3
-
4
- interface BreadcrumbItem {
5
- label: string;
6
- href?: string;
7
- }
8
-
9
- interface Props {
10
- items: BreadcrumbItem[];
11
- separator?: 'chevron' | 'slash' | 'arrow' | string;
12
- class?: string;
13
- }
14
-
15
- const {
16
- items,
17
- separator = 'chevron',
18
- class: className = '',
19
- } = Astro.props;
20
-
21
- const separatorVariant =
22
- separator === 'slash' ? 'breadcrumb--slash' :
23
- separator === 'arrow' ? 'breadcrumb--arrow' :
24
- 'breadcrumb--chevron';
25
- const classes = `breadcrumb ${separatorVariant} ${className}`.trim();
26
-
27
- const separatorChar = separator === 'slash' ? '/' : separator === 'arrow' ? '›' : typeof separator === 'string' ? separator : null;
28
- const useIcon = separator === 'chevron';
29
- ---
30
-
31
- <nav class={classes} aria-label="Breadcrumb">
32
- <ol class="breadcrumb__list">
33
- {items.map((item, index) => {
34
- const isLast = index === items.length - 1;
35
- const isCurrent = isLast || !item.href;
36
-
37
- return (
38
- <li class={`breadcrumb__item ${isCurrent ? 'breadcrumb__item--current' : ''}`}>
39
- {isCurrent ? (
40
- <span class="breadcrumb__current" aria-current="page">
41
- {item.label}
42
- </span>
43
- ) : (
44
- <a class="breadcrumb__link" href={item.href}>
45
- {item.label}
46
- </a>
47
- )}
48
- {!isLast && (
49
- <span class="breadcrumb__separator" aria-hidden="true">
50
- {useIcon ? (
51
- <ChevronDown class="breadcrumb__separator-icon" width={14} height={14} />
52
- ) : (
53
- separatorChar ?? '›'
54
- )}
55
- </span>
56
- )}
57
- </li>
58
- );
59
- })}
60
- </ol>
61
- </nav>
@@ -1,3 +0,0 @@
1
- <button>
2
- Click me
3
- </button>
@@ -1,18 +0,0 @@
1
- ---
2
- interface Props {
3
- variant?: 'default' | 'elevated' | 'outlined' | 'filled';
4
- class?: string;
5
- }
6
-
7
- const {
8
- variant = 'default',
9
- class: className = '',
10
- } = Astro.props;
11
-
12
- const variantClass = variant !== 'default' ? `card--${variant}` : '';
13
- const classes = `card ${variantClass} ${className}`.trim();
14
- ---
15
-
16
- <div class={classes}>
17
- <slot />
18
- </div>
@@ -1,38 +0,0 @@
1
- ---
2
- interface Props {
3
- id?: string;
4
- name?: string;
5
- value?: string;
6
- checked?: boolean;
7
- required?: boolean;
8
- disabled?: boolean;
9
- class?: string;
10
- ariaDescribedby?: string;
11
- ariaLabel?: string;
12
- }
13
-
14
- const {
15
- id,
16
- name,
17
- value,
18
- checked = false,
19
- required = false,
20
- disabled = false,
21
- class: className = '',
22
- ariaDescribedby,
23
- ariaLabel,
24
- } = Astro.props;
25
- ---
26
-
27
- <input
28
- type="checkbox"
29
- id={id}
30
- name={name}
31
- value={value}
32
- checked={checked}
33
- required={required}
34
- disabled={disabled}
35
- class={className}
36
- aria-describedby={ariaDescribedby}
37
- aria-label={ariaLabel}
38
- />