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
package/README.md CHANGED
@@ -12,7 +12,7 @@ pnpm add rizzo-css
12
12
  yarn add rizzo-css
13
13
  ```
14
14
 
15
- **Quick start (no install):** `npx rizzo-css init` — choose **framework** (Vanilla, Astro, or Svelte), then **add to existing** or **create new**. For new projects choose a **template** (Vanilla: full or minimal; Astro/Svelte: full-app or minimal) and **package manager** (npm, pnpm, yarn, bun). For Astro/Svelte: **What to include?** — CSS only, Recommended set, All (25 components), or Pick. Add to existing: you must add the stylesheet `<link>` yourself (CLI prints the exact tag). New: full scaffold. Non-interactive: `npx rizzo-css init --yes --framework vanilla|astro|svelte`. Optional **rizzo-css.json** and `add --install-package`. All get the **same CSS and component styles**. To use the **official Svelte or Astro scaffold** plus Rizzo CSS, create the app with their CLI first, then run `npx rizzo-css add`:
15
+ **Quick start (no install):** `npx rizzo-css init` — choose **framework** (Vanilla, Astro, or Svelte), then **add to existing** or **create new**. **Existing** (or `npx rizzo-css add`) drop in CSS + hand-pick components; you must add the `<link>` yourself (CLI prints the exact tag). **New** → choose **template** (Vanilla: full or minimal; Astro/Svelte: minimal) or **no template** (minimal base + hand-pick components), then package manager. Non-interactive: `npx rizzo-css init --yes --framework vanilla|astro|svelte`. Optional **rizzo-css.json** and `add --install-package`. All get the **same CSS and component styles**. To use the **official Svelte or Astro create command** plus Rizzo, create the app first, then run `npx rizzo-css add`:
16
16
 
17
17
  ```bash
18
18
  npm create svelte@latest my-app && cd my-app && npx rizzo-css add
@@ -41,7 +41,7 @@ You install **the same package** for every framework: `npm install rizzo-css`. N
41
41
 
42
42
  With `npx rizzo-css add --path <dir>`, the CLI still suggests the correct href for your framework (e.g. Astro/Svelte get a leading `/` path).
43
43
 
44
- Scaffolds (full starter apps) are in the package: `scaffold/vanilla/`, `scaffold/astro-app/`, `scaffold/svelte-app/`. Use `npx rizzo-css init` and choose **Create new project** to get the full clone (navbar/chrome + component showcase) for the chosen framework; the stylesheet link is already in the layout. **Add to existing** only adds the CSS and optional components (no full scaffold); **you must add the stylesheet `<link>` to your layout yourself** — the CLI prints the exact tag for your framework (e.g. Svelte/Astro: `/css/rizzo.min.css`; Vanilla: `css/rizzo.min.css`). Each scaffold folder has a README with setup and instructions for editing the cloned site.
44
+ Scaffolds in the package: `scaffold/vanilla/` (full or minimal template), `scaffold/astro-minimal/`, `scaffold/svelte-minimal/`, plus `scaffold/astro/` and `scaffold/svelte/` (component templates for hand-pick). Use `npx rizzo-css init` and choose **Create new project** to get a template-based scaffold or minimal base + hand-picked components; the stylesheet link is in the layout. **Add to existing** (or `add` command) drops in CSS + hand-pick components; **you must add the stylesheet `<link>` yourself** — the CLI prints the exact tag. Every scaffold includes LICENSE and README; Astro/Svelte minimal include package.json and .env.example.
45
45
 
46
46
  ## Use
47
47
 
@@ -56,7 +56,7 @@ import 'rizzo-css';
56
56
  **Without a bundler (plain HTML):** Use a CDN. Both unpkg and jsDelivr resolve the package root to the built CSS (via the `unpkg` / `jsdelivr` fields in this package). For reliability or to pin a version, use the explicit path:
57
57
 
58
58
  ```html
59
- <!-- unpkg (pin version: replace @latest with @0.0.17 or any version) -->
59
+ <!-- unpkg (pin version: replace @latest with @0.0.18 or any version) -->
60
60
  <link rel="stylesheet" href="https://unpkg.com/rizzo-css@latest/dist/rizzo.min.css" />
61
61
 
62
62
  <!-- or jsDelivr -->
@@ -65,7 +65,7 @@ import 'rizzo-css';
65
65
 
66
66
  Short URLs also work: `https://unpkg.com/rizzo-css@latest` and `https://cdn.jsdelivr.net/npm/rizzo-css@latest` (CDNs serve the default file from package.json). To verify after publish: open the URL in a browser or run `curl -I https://unpkg.com/rizzo-css@latest/dist/rizzo.min.css` and expect `200 OK`.
67
67
 
68
- Use the same class names and HTML structure as in the [component docs](https://rizzo-css.vercel.app/docs/components). **Vanilla JS**, Astro, and Svelte all use the same CSS and BEM markup; Astro/Svelte add framework component files for convenience. Each scaffold has a README in its folder (`scaffold/vanilla/README.md`, `scaffold/astro-app/README.md`, `scaffold/svelte-app/README.md`) with setup and commands. The **Vanilla** scaffold includes a full Settings panel and toast; **Astro** and **Svelte** scaffold layouts include theme persistence and toast (`showToast`, `removeToast`, `removeAllToasts`).
68
+ Use the same class names and HTML structure as in the [component docs](https://rizzo-css.vercel.app/docs/components). **Vanilla JS**, Astro, and Svelte all use the same CSS and BEM markup; Astro/Svelte add framework component files when you hand-pick. Each scaffold has a README; every install includes LICENSE. The **Vanilla** full template includes a Settings panel and toast; **Astro** and **Svelte** minimal layouts include theme persistence and toast (`showToast`, `removeToast`, `removeAllToasts`).
69
69
 
70
70
  ## Themes
71
71
 
package/bin/rizzo-css.js CHANGED
@@ -10,21 +10,41 @@ const RIZZO_CONFIG_FILE = 'rizzo-css.json';
10
10
  const COMMANDS = ['init', 'add', 'theme', 'help'];
11
11
  const FRAMEWORKS = ['vanilla', 'astro', 'svelte'];
12
12
 
13
- /** Template options per framework for "create new". full-app = full Astro/Svelte app scaffold; full = vanilla with theme switcher + js; minimal = CSS + single HTML only. */
13
+ /** Template options for "create new" when user chooses "Use a template". When they choose "No template" they get minimal base + hand-pick components. */
14
14
  const TEMPLATES = {
15
15
  vanilla: [
16
16
  { value: 'full', label: 'Full — index.html + theme switcher, js/main.js, icons, README' },
17
17
  { value: 'minimal', label: 'Minimal — index.html + CSS link only' },
18
18
  ],
19
19
  astro: [
20
- { value: 'full-app', label: 'Full app complete Astro project with Rizzo CSS' },
21
- { value: 'minimal', label: 'Minimal — public/css + index.html with CSS link' },
20
+ { value: 'minimal', label: 'Minimal — Astro with config, one page, README, LICENSE, .env.example' },
22
21
  ],
23
22
  svelte: [
24
- { value: 'full-app', label: 'Full app complete SvelteKit project with Rizzo CSS' },
25
- { value: 'minimal', label: 'Minimal — static/css + index.html with CSS link' },
23
+ { value: 'minimal', label: 'Minimal — SvelteKit with config, one page, README, LICENSE, .env.example' },
26
24
  ],
27
25
  };
26
+
27
+ const VANILLA_MINIMAL_README = `# Vanilla + Rizzo CSS (minimal)
28
+
29
+ Minimal HTML + Rizzo CSS. Scaffolded with \`npx rizzo-css init --framework vanilla --template minimal\`.
30
+
31
+ - Open \`index.html\` in a browser or serve the folder with any static server.
32
+ - Edit \`index.html\` and add your content. CSS: \`css/rizzo.min.css\`.
33
+ - Set a theme: \`<html data-theme="github-dark-classic">\` (see \`npx rizzo-css theme\` for all themes).
34
+
35
+ Docs: [rizzo-css.vercel.app](https://rizzo-css.vercel.app)
36
+ `;
37
+
38
+ const FALLBACK_MINIMAL_README = `# Rizzo CSS (minimal)
39
+
40
+ Minimal project with Rizzo CSS. Add a proper framework (e.g. \`npm create astro@latest\` or \`npm create svelte@latest\`), then run \`npx rizzo-css add\` in the project.
41
+
42
+ - This folder has a single HTML file and \`css/rizzo.min.css\`.
43
+ - For a full app with config and tooling, use the framework's create command and \`rizzo-css add\`.
44
+
45
+ Docs: [rizzo-css.vercel.app](https://rizzo-css.vercel.app)
46
+ `;
47
+
28
48
  // Dark and light themes (order matches scaffold optgroups and config/themes.ts)
29
49
  const DARK_THEMES = [
30
50
  'github-dark-classic',
@@ -86,6 +106,14 @@ function getCssPath() {
86
106
  return join(getPackageRoot(), 'dist', 'rizzo.min.css');
87
107
  }
88
108
 
109
+ /** Copy the package LICENSE into the project dir. Call after every scaffold so every install includes a license. */
110
+ function copyPackageLicense(projectDir) {
111
+ const licensePath = join(getPackageRoot(), 'LICENSE');
112
+ if (existsSync(licensePath)) {
113
+ copyFileSync(licensePath, join(projectDir, 'LICENSE'));
114
+ }
115
+ }
116
+
89
117
  /** Read rizzo-css.json from cwd. Returns { targetDir?, framework?, packageManager? } or null. */
90
118
  function readRizzoConfig(cwd) {
91
119
  if (!cwd || !existsSync(cwd)) return null;
@@ -189,7 +217,7 @@ async function promptPackageManager(projectDir) {
189
217
  return selectMenu(options, '? Package manager (for install and run commands)');
190
218
  }
191
219
 
192
- /** Prompt user to select template for the chosen framework. Returns template value (full-app, full, or minimal). */
220
+ /** Prompt user to select template for the chosen framework. Returns template value (full or minimal for Vanilla; minimal for Astro/Svelte). */
193
221
  async function promptTemplate(framework) {
194
222
  const options = TEMPLATES[framework] || TEMPLATES.vanilla;
195
223
  return selectMenu(options, '? Template');
@@ -476,16 +504,16 @@ Usage (use your package manager):
476
504
  bunx rizzo-css <command> [options]
477
505
 
478
506
  Commands:
479
- init Add Rizzo to existing project or scaffold new one (framework existing vs new → themes/components/PM)
480
- add Copy Rizzo CSS into the current project (auto-detects Vanilla/Astro/Svelte; use rizzo-css.json if present)
507
+ init New project = template (or no template hand-pick components). Existing = drop in CSS + hand-pick. First: framework, then existing vs new.
508
+ add Same as init existing: drop in CSS + hand-pick components (framework detected or from rizzo-css.json)
481
509
  theme List all available themes (use in init or set data-theme on <html>)
482
510
  help Show this help
483
511
 
484
512
  Options (init):
485
- --yes Non-interactive: scaffold new in cwd with defaults (framework: astro, template: full-app, no components)
513
+ --yes Non-interactive: scaffold new in cwd with defaults (framework: astro, template: minimal)
486
514
  --framework <fw> vanilla | astro | svelte (with --yes; otherwise first prompt)
487
- --template <t> full-app (Astro/Svelte) or full | minimal (Vanilla); with --yes defaults to full-app or full
488
- --install After scaffolding, run package manager install (full-app only)
515
+ --template <t> full | minimal (Vanilla); minimal only (Astro/Svelte); with --yes defaults to full or minimal
516
+ --install After scaffolding, run package manager install (new project)
489
517
  --no-install Do not run install
490
518
  --write-config Write rizzo-css.json (targetDir, framework, packageManager) in the project
491
519
 
@@ -618,7 +646,7 @@ function getLinkHrefForTargetDir(framework, targetDir) {
618
646
  return base ? base + '/' + file : file;
619
647
  }
620
648
 
621
- function cmdAdd(argv) {
649
+ async function cmdAdd(argv) {
622
650
  const customPath = getFlagValue(argv, '--path');
623
651
  const explicitFrameworkRaw = getFlagValue(argv, '--framework');
624
652
  const explicitFramework = explicitFrameworkRaw && FRAMEWORKS.includes(explicitFrameworkRaw.toLowerCase()) ? explicitFrameworkRaw.toLowerCase() : null;
@@ -627,58 +655,19 @@ function cmdAdd(argv) {
627
655
 
628
656
  const cwd = process.cwd();
629
657
  const config = readRizzoConfig(cwd);
630
- let framework = explicitFramework || (config && config.framework) || detectFramework(cwd);
631
- const paths = getFrameworkCssPaths(framework);
632
- const targetDir = customPath || (config && config.targetDir) || paths.targetDir;
633
- const targetFile = join(cwd, targetDir, 'rizzo.min.css');
634
- const cssSource = getCssPath();
635
-
636
- if (!existsSync(cssSource)) {
637
- console.error('Error: Rizzo CSS build not found. Run from repo root: pnpm build:css');
638
- process.exit(1);
639
- }
640
-
641
- const pm = (config && config.packageManager)
642
- ? getPackageManagerCommands({ agent: config.packageManager, command: config.packageManager })
643
- : resolvePackageManager(cwd);
644
- const addPkg = pm.add('rizzo-css');
645
- const linkHref = customPath ? getLinkHrefForTargetDir(framework, targetDir) : paths.linkHref;
646
- const cliExample = pm.dlx('rizzo-css theme');
647
- const initExample = pm.dlx('rizzo-css init');
648
-
649
- mkdirSync(join(cwd, targetDir), { recursive: true });
650
- copyFileSync(cssSource, targetFile);
651
- console.log('\n✓ Rizzo CSS copied to ' + targetFile);
652
-
658
+ const options = { config, targetDir: customPath || (config && config.targetDir) || undefined };
659
+ await runAddToExisting(explicitFramework, options);
653
660
  if (installPackage && !noInstall) {
661
+ const pm = (config && config.packageManager)
662
+ ? getPackageManagerCommands({ agent: config.packageManager, command: config.packageManager })
663
+ : resolvePackageManager(cwd);
664
+ const addPkg = pm.add('rizzo-css');
654
665
  console.log('\nRunning: ' + addPkg);
655
666
  const code = runInDir(cwd, addPkg);
656
667
  if (code !== 0) {
657
668
  console.error('\nInstall failed (exit ' + code + '). You can run manually: ' + addPkg);
658
669
  }
659
670
  }
660
-
661
- if (framework === 'svelte') {
662
- console.log('\nDetected Svelte/SvelteKit. Add to your root layout (e.g. src/app.html):\n');
663
- console.log(' <link rel="stylesheet" href="' + linkHref + '" />');
664
- console.log('\nSet a theme on <html>: data-theme="github-dark-classic" (see: ' + cliExample + ')');
665
- console.log('\nTo add Rizzo Svelte components later: copy from this package\'s scaffold or run ' + initExample + ' and pick Svelte + components in an empty folder, then copy the generated files.\n');
666
- } else if (framework === 'astro') {
667
- console.log('\nDetected Astro. Add to your layout (e.g. src/layouts/Layout.astro):\n');
668
- console.log(' <link rel="stylesheet" href="' + linkHref + '" />');
669
- console.log('\nSet a theme on <html>: data-theme="github-dark-classic" (see: ' + cliExample + ')\n');
670
- } else {
671
- console.log('\nAdd to your HTML or layout:\n');
672
- console.log(' <link rel="stylesheet" href="' + linkHref + '" />');
673
- if (framework === 'vanilla') {
674
- console.log('\nVanilla JS: same CSS and component classes as Astro/Svelte. Use the same BEM markup from the docs.');
675
- }
676
- console.log('\nSet a theme on <html>: data-theme="github-dark-classic" (see: ' + cliExample + ')');
677
- }
678
- if (!installPackage || noInstall) {
679
- console.log('\nTo install the package (CLI + components): ' + addPkg);
680
- }
681
- console.log('\nDocs: https://rizzo-css.vercel.app\n');
682
671
  }
683
672
 
684
673
  function getScaffoldSvelteDir() {
@@ -720,12 +709,12 @@ function copyRizzoIcons(projectDir, framework) {
720
709
  }
721
710
  }
722
711
 
723
- function getScaffoldAstroAppDir() {
724
- return join(getPackageRoot(), 'scaffold', 'astro-app');
712
+ function getScaffoldAstroMinimalDir() {
713
+ return join(getPackageRoot(), 'scaffold', 'astro-minimal');
725
714
  }
726
715
 
727
- function getScaffoldSvelteAppDir() {
728
- return join(getPackageRoot(), 'scaffold', 'svelte-app');
716
+ function getScaffoldSvelteMinimalDir() {
717
+ return join(getPackageRoot(), 'scaffold', 'svelte-minimal');
729
718
  }
730
719
 
731
720
  function copyDirRecursive(src, dest) {
@@ -847,7 +836,7 @@ function copyAstroComponents(projectDir, selectedNames) {
847
836
  }
848
837
  }
849
838
 
850
- /** Add Rizzo CSS (and optional components) to an existing project in cwd. frameworkOverride: when set (from init), skip framework prompt. options: { config? }. */
839
+ /** Add Rizzo CSS and hand-picked components to an existing project in cwd. frameworkOverride: when set (from init), skip framework prompt. options: { config?, targetDir? }. */
851
840
  async function runAddToExisting(frameworkOverride, options) {
852
841
  const cwd = process.cwd();
853
842
  const config = (options && options.config) || readRizzoConfig(cwd);
@@ -904,7 +893,8 @@ async function runAddToExisting(frameworkOverride, options) {
904
893
  }
905
894
 
906
895
  const paths = getFrameworkCssPaths(framework);
907
- const targetDir = join(cwd, paths.targetDir);
896
+ const targetDirRaw = (options && options.targetDir) || (config && config.targetDir) || paths.targetDir;
897
+ const targetDir = join(cwd, targetDirRaw);
908
898
  const cssTarget = join(targetDir, 'rizzo.min.css');
909
899
  mkdirSync(targetDir, { recursive: true });
910
900
  copyFileSync(cssSource, cssTarget);
@@ -916,7 +906,7 @@ async function runAddToExisting(frameworkOverride, options) {
916
906
  copyAstroComponents(cwd, selectedComponents);
917
907
  }
918
908
 
919
- const linkHref = paths.linkHref;
909
+ const linkHref = (options && options.targetDir) ? getLinkHrefForTargetDir(framework, options.targetDir) : paths.linkHref;
920
910
  const pm = (config && config.packageManager)
921
911
  ? getPackageManagerCommands({ agent: config.packageManager, command: config.packageManager })
922
912
  : resolvePackageManager(cwd);
@@ -963,17 +953,17 @@ async function cmdInit(argv) {
963
953
  let initMode;
964
954
  let name = '';
965
955
  let theme, defaultDark, defaultLight;
966
- let selectedComponents = [];
967
956
  let selectedPm;
968
957
  let selectedTemplate;
958
+ let selectedComponents = [];
969
959
 
970
960
  if (yes) {
971
961
  const frameworkArg = getFlagValue(argv, '--framework');
972
962
  framework = (frameworkArg && FRAMEWORKS.includes(frameworkArg.toLowerCase())) ? frameworkArg.toLowerCase() : (config && config.framework) || 'astro';
973
963
  initMode = 'new';
974
964
  const templateArg = getFlagValue(argv, '--template');
975
- selectedTemplate = (templateArg && (templateArg === 'full-app' || templateArg === 'full' || templateArg === 'minimal')) ? templateArg : (framework === 'vanilla' ? 'full' : 'full-app');
976
- if (framework === 'vanilla' && selectedTemplate === 'full-app') selectedTemplate = 'full';
965
+ const rawTemplate = (templateArg && (templateArg === 'full' || templateArg === 'minimal')) ? templateArg : (framework === 'vanilla' ? 'full' : 'minimal');
966
+ selectedTemplate = rawTemplate;
977
967
  const projectDir = cwd;
978
968
  const resolved = resolvePackageManager(projectDir, cwd);
979
969
  selectedPm = (config && config.packageManager) || resolved.agent || 'npm';
@@ -1012,17 +1002,45 @@ async function cmdInit(argv) {
1012
1002
  );
1013
1003
  name = projectChoice === 'name' ? await question('Project name (folder name): ') : '';
1014
1004
 
1015
- selectedTemplate = await promptTemplate(framework);
1016
-
1017
- const themeOut = await promptThemes();
1018
- theme = themeOut.theme;
1019
- defaultDark = themeOut.defaultDark;
1020
- defaultLight = themeOut.defaultLight;
1005
+ const templateOrHandpick = await selectMenu(
1006
+ [
1007
+ { value: 'template', label: 'Use a template (Full or Minimal — ready-made scaffold)' },
1008
+ { value: 'handpick', label: 'No template — minimal base + hand-pick components' },
1009
+ ],
1010
+ '? Template or hand-pick components?'
1011
+ );
1021
1012
 
1022
- const componentList = framework === 'svelte' ? SVELTE_COMPONENTS : framework === 'astro' ? ASTRO_COMPONENTS : [];
1023
- selectedComponents = componentList.length > 0
1024
- ? await promptComponentChoice(componentList, framework)
1025
- : [];
1013
+ if (templateOrHandpick === 'template') {
1014
+ selectedTemplate = await promptTemplate(framework);
1015
+ const templateHasThemeSwitcher = framework === 'vanilla' && selectedTemplate === 'full';
1016
+ if (templateHasThemeSwitcher) {
1017
+ const themeOut = await promptThemes();
1018
+ theme = themeOut.theme;
1019
+ defaultDark = themeOut.defaultDark;
1020
+ defaultLight = themeOut.defaultLight;
1021
+ } else {
1022
+ theme = 'system';
1023
+ defaultDark = DARK_THEMES[0];
1024
+ defaultLight = LIGHT_THEMES[0];
1025
+ }
1026
+ } else {
1027
+ selectedTemplate = 'handpick';
1028
+ const componentList = framework === 'svelte' ? SVELTE_COMPONENTS : framework === 'astro' ? ASTRO_COMPONENTS : [];
1029
+ selectedComponents = componentList.length > 0
1030
+ ? await promptComponentChoice(componentList, framework)
1031
+ : [];
1032
+ const wantsThemeSwitcher = selectedComponents.includes('ThemeSwitcher');
1033
+ if (wantsThemeSwitcher) {
1034
+ const themeOut = await promptThemes();
1035
+ theme = themeOut.theme;
1036
+ defaultDark = themeOut.defaultDark;
1037
+ defaultLight = themeOut.defaultLight;
1038
+ } else {
1039
+ theme = 'system';
1040
+ defaultDark = DARK_THEMES[0];
1041
+ defaultLight = LIGHT_THEMES[0];
1042
+ }
1043
+ }
1026
1044
 
1027
1045
  const projectDirForPm = name ? join(cwd, name) : cwd;
1028
1046
  selectedPm = await promptPackageManager(projectDirForPm);
@@ -1049,11 +1067,13 @@ async function cmdInit(argv) {
1049
1067
  '{{PROJECT_NAME}}': projectNamePkg,
1050
1068
  };
1051
1069
 
1052
- const astroAppDir = getScaffoldAstroAppDir();
1053
- const svelteAppDir = getScaffoldSvelteAppDir();
1070
+ const astroMinimalDir = getScaffoldAstroMinimalDir();
1071
+ const svelteMinimalDir = getScaffoldSvelteMinimalDir();
1054
1072
  const pathsForScaffold = getFrameworkCssPaths(framework);
1055
- const useAstroApp = framework === 'astro' && selectedTemplate === 'full-app' && existsSync(astroAppDir);
1056
- const useSvelteApp = framework === 'svelte' && selectedTemplate === 'full-app' && existsSync(svelteAppDir);
1073
+ const useHandpickAstro = selectedTemplate === 'handpick' && framework === 'astro' && existsSync(astroMinimalDir);
1074
+ const useHandpickSvelte = selectedTemplate === 'handpick' && framework === 'svelte' && existsSync(svelteMinimalDir);
1075
+ const useAstroMinimal = framework === 'astro' && selectedTemplate === 'minimal' && existsSync(astroMinimalDir);
1076
+ const useSvelteMinimal = framework === 'svelte' && selectedTemplate === 'minimal' && existsSync(svelteMinimalDir);
1057
1077
  const useVanillaFull = framework === 'vanilla' && selectedTemplate === 'full' && existsSync(getScaffoldVanillaIndex());
1058
1078
 
1059
1079
  let cssTarget;
@@ -1074,32 +1094,54 @@ async function cmdInit(argv) {
1074
1094
  </html>
1075
1095
  `;
1076
1096
 
1077
- if (useAstroApp) {
1097
+ if (useHandpickAstro) {
1078
1098
  mkdirSync(projectDir, { recursive: true });
1079
- copyDirRecursiveWithReplacements(astroAppDir, projectDir, replacements);
1099
+ copyDirRecursiveWithReplacements(astroMinimalDir, projectDir, replacements);
1080
1100
  mkdirSync(join(projectDir, 'public', 'css'), { recursive: true });
1081
1101
  cssTarget = join(projectDir, 'public', 'css', 'rizzo.min.css');
1082
1102
  copyFileSync(cssSource, cssTarget);
1083
1103
  if (statSync(cssTarget).size < 5000) {
1084
1104
  console.warn('\nWarning: rizzo.min.css is very small. From repo root run: pnpm build:css');
1085
1105
  }
1086
- copyRizzoIcons(projectDir, 'astro');
1106
+ copyPackageLicense(projectDir);
1087
1107
  if (selectedComponents.length > 0) {
1108
+ copyRizzoIcons(projectDir, 'astro');
1088
1109
  copyAstroComponents(projectDir, selectedComponents);
1089
1110
  }
1090
- } else if (useSvelteApp) {
1111
+ } else if (useHandpickSvelte) {
1091
1112
  mkdirSync(projectDir, { recursive: true });
1092
- copyDirRecursiveWithReplacements(svelteAppDir, projectDir, replacements);
1113
+ copyDirRecursiveWithReplacements(svelteMinimalDir, projectDir, replacements);
1093
1114
  mkdirSync(join(projectDir, 'static', 'css'), { recursive: true });
1094
1115
  cssTarget = join(projectDir, 'static', 'css', 'rizzo.min.css');
1095
1116
  copyFileSync(cssSource, cssTarget);
1096
1117
  if (statSync(cssTarget).size < 5000) {
1097
1118
  console.warn('\nWarning: rizzo.min.css is very small. From repo root run: pnpm build:css');
1098
1119
  }
1099
- copyRizzoIcons(projectDir, 'svelte');
1120
+ copyPackageLicense(projectDir);
1100
1121
  if (selectedComponents.length > 0) {
1122
+ copyRizzoIcons(projectDir, 'svelte');
1101
1123
  copySvelteComponents(projectDir, selectedComponents);
1102
1124
  }
1125
+ } else if (useAstroMinimal) {
1126
+ mkdirSync(projectDir, { recursive: true });
1127
+ copyDirRecursiveWithReplacements(astroMinimalDir, projectDir, replacements);
1128
+ mkdirSync(join(projectDir, 'public', 'css'), { recursive: true });
1129
+ cssTarget = join(projectDir, 'public', 'css', 'rizzo.min.css');
1130
+ copyFileSync(cssSource, cssTarget);
1131
+ if (statSync(cssTarget).size < 5000) {
1132
+ console.warn('\nWarning: rizzo.min.css is very small. From repo root run: pnpm build:css');
1133
+ }
1134
+ copyPackageLicense(projectDir);
1135
+ } else if (useSvelteMinimal) {
1136
+ mkdirSync(projectDir, { recursive: true });
1137
+ copyDirRecursiveWithReplacements(svelteMinimalDir, projectDir, replacements);
1138
+ mkdirSync(join(projectDir, 'static', 'css'), { recursive: true });
1139
+ cssTarget = join(projectDir, 'static', 'css', 'rizzo.min.css');
1140
+ copyFileSync(cssSource, cssTarget);
1141
+ if (statSync(cssTarget).size < 5000) {
1142
+ console.warn('\nWarning: rizzo.min.css is very small. From repo root run: pnpm build:css');
1143
+ }
1144
+ copyPackageLicense(projectDir);
1103
1145
  } else if (useVanillaFull) {
1104
1146
  const cssDir = join(projectDir, pathsForScaffold.targetDir);
1105
1147
  cssTarget = join(cssDir, 'rizzo.min.css');
@@ -1132,6 +1174,7 @@ async function cmdInit(argv) {
1132
1174
  mainJs = mainJs.replace(/\{\{DEFAULT_DARK\}\}/g, defaultDark).replace(/\{\{DEFAULT_LIGHT\}\}/g, defaultLight);
1133
1175
  writeFileSync(join(projectDir, 'js', 'main.js'), mainJs, 'utf8');
1134
1176
  }
1177
+ copyPackageLicense(projectDir);
1135
1178
  } else {
1136
1179
  const cssDir = join(projectDir, pathsForScaffold.targetDir);
1137
1180
  cssTarget = join(cssDir, 'rizzo.min.css');
@@ -1143,22 +1186,19 @@ async function cmdInit(argv) {
1143
1186
  if (framework === 'vanilla') {
1144
1187
  indexPath = join(projectDir, 'index.html');
1145
1188
  writeFileSync(indexPath, minimalHtml, 'utf8');
1189
+ writeFileSync(join(projectDir, 'README.md'), VANILLA_MINIMAL_README, 'utf8');
1146
1190
  } else if (framework === 'astro') {
1147
1191
  indexPath = join(projectDir, 'public', 'index.html');
1148
1192
  mkdirSync(join(projectDir, 'public'), { recursive: true });
1149
1193
  writeFileSync(indexPath, minimalHtml, 'utf8');
1194
+ writeFileSync(join(projectDir, 'README.md'), FALLBACK_MINIMAL_README, 'utf8');
1150
1195
  } else {
1151
1196
  indexPath = join(projectDir, 'static', 'index.html');
1152
1197
  mkdirSync(join(projectDir, 'static'), { recursive: true });
1153
1198
  writeFileSync(indexPath, minimalHtml, 'utf8');
1199
+ writeFileSync(join(projectDir, 'README.md'), FALLBACK_MINIMAL_README, 'utf8');
1154
1200
  }
1155
- if (framework === 'svelte' && selectedComponents.length > 0) {
1156
- copyRizzoIcons(projectDir, 'svelte');
1157
- copySvelteComponents(projectDir, selectedComponents);
1158
- } else if (framework === 'astro' && selectedComponents.length > 0) {
1159
- copyRizzoIcons(projectDir, 'astro');
1160
- copyAstroComponents(projectDir, selectedComponents);
1161
- }
1201
+ copyPackageLicense(projectDir);
1162
1202
  }
1163
1203
 
1164
1204
  console.log('\n✓ Project ready at ' + projectDir);
@@ -1175,7 +1215,7 @@ async function cmdInit(argv) {
1175
1215
  const nextStep = pm.install + ' && ' + pm.run('dev');
1176
1216
  const runPrefix = name ? 'cd ' + name + ' && ' : '';
1177
1217
 
1178
- if (runInstallAfterScaffold && !noInstall && (useAstroApp || useSvelteApp)) {
1218
+ if (runInstallAfterScaffold && !noInstall && (useHandpickAstro || useHandpickSvelte || useAstroMinimal || useSvelteMinimal)) {
1179
1219
  console.log('\nRunning: ' + pm.install);
1180
1220
  const code = runInDir(projectDir, pm.install);
1181
1221
  if (code !== 0) {
@@ -1189,15 +1229,20 @@ async function cmdInit(argv) {
1189
1229
  console.log('\n - Wrote ' + RIZZO_CONFIG_FILE);
1190
1230
  }
1191
1231
 
1192
- if (useAstroApp) {
1193
- console.log(' - Full Astro project with Rizzo CSS. Run: ' + runPrefix + nextStep);
1194
- console.log(' - Icons: src/components/rizzo/icons/ (Astro components)');
1232
+ if (useHandpickAstro || useHandpickSvelte) {
1233
+ const fw = useHandpickAstro ? 'Astro' : 'SvelteKit';
1234
+ console.log(' - Minimal ' + fw + ' base + ' + selectedComponents.length + ' hand-picked component(s). Run: ' + runPrefix + nextStep);
1235
+ }
1236
+ if (useAstroMinimal) {
1237
+ console.log(' - Minimal Astro project (config, README, LICENSE, .env.example). Run: ' + runPrefix + nextStep);
1195
1238
  }
1196
- if (useSvelteApp) {
1197
- console.log(' - Full SvelteKit project with Rizzo CSS. Run: ' + runPrefix + nextStep);
1198
- console.log(' - Install dependencies first (required before dev). Icons: src/lib/rizzo/icons/ (Svelte components)');
1239
+ if (useSvelteMinimal) {
1240
+ console.log(' - Minimal SvelteKit project (config, README, LICENSE, .env.example). Run: ' + runPrefix + nextStep);
1199
1241
  }
1200
- if ((framework === 'astro' || framework === 'svelte') && !useAstroApp && !useSvelteApp) {
1242
+ if (selectedTemplate === 'handpick' && framework === 'vanilla') {
1243
+ console.log(' - Vanilla minimal base (index.html + CSS, README, LICENSE). No component files for Vanilla; use BEM markup from docs.');
1244
+ }
1245
+ if ((framework === 'astro' || framework === 'svelte') && !useAstroMinimal && !useSvelteMinimal && !useHandpickAstro && !useHandpickSvelte) {
1201
1246
  const fw = framework === 'svelte' ? 'Svelte' : 'Astro';
1202
1247
  const createExample = getCreateProjectExample(pm, framework);
1203
1248
  console.log('\n - Minimal template (CSS + index). To get a full app: ' + createExample + ', then cd into the project and run ' + pm.dlx('rizzo-css add') + '.');
@@ -1223,7 +1268,10 @@ function main() {
1223
1268
  }
1224
1269
 
1225
1270
  if (command === 'add') {
1226
- cmdAdd(argv);
1271
+ cmdAdd(argv).catch((err) => {
1272
+ console.error(err);
1273
+ process.exit(1);
1274
+ });
1227
1275
  return;
1228
1276
  }
1229
1277
 
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "rizzo-css",
3
- "version": "0.0.17",
3
+ "version": "0.0.18",
4
4
  "scripts": {
5
- "prepublishOnly": "cd ../.. && pnpm run lint:css:fix && pnpm run build:css && node scripts/copy-scaffold.js && node scripts/prepare-astro-scaffold.js && node scripts/prepare-vanilla-scaffold.js && node scripts/prepare-svelte-scaffold.js"
5
+ "prepublishOnly": "cd ../.. && pnpm run lint:css:fix && pnpm run build:css && node scripts/copy-scaffold.js && node scripts/prepare-vanilla-scaffold.js"
6
6
  },
7
7
  "description": "A modern CSS design system with semantic theming, 14 themes, and accessible components (BEM). Optimized for Vanilla JS, Astro, and Svelte; same CSS and component styles for all.",
8
8
  "style": "dist/rizzo.min.css",
@@ -25,7 +25,11 @@
25
25
  "LICENSE",
26
26
  ".env.example",
27
27
  "bin",
28
- "scaffold"
28
+ "scaffold/astro",
29
+ "scaffold/svelte",
30
+ "scaffold/vanilla",
31
+ "scaffold/astro-minimal",
32
+ "scaffold/svelte-minimal"
29
33
  ],
30
34
  "keywords": [
31
35
  "css",
@@ -0,0 +1,3 @@
1
+ # Copy to .env and adjust as needed.
2
+ # Example:
3
+ # PUBLIC_SITE_URL=https://example.com
@@ -0,0 +1,36 @@
1
+ # Astro + Rizzo CSS (minimal)
2
+
3
+ Minimal Astro project with Rizzo CSS. Scaffolded with `npx rizzo-css init --framework astro --template minimal`.
4
+
5
+ ## Setup
6
+
7
+ 1. Copy environment example (optional):
8
+ ```bash
9
+ cp .env.example .env
10
+ ```
11
+
12
+ 2. Install dependencies:
13
+ ```bash
14
+ pnpm install
15
+ # or: npm install
16
+ ```
17
+
18
+ 3. Start the dev server:
19
+ ```bash
20
+ pnpm dev
21
+ ```
22
+
23
+ ## Project structure
24
+
25
+ - `astro.config.mjs` — Astro configuration
26
+ - `src/layouts/Layout.astro` — Layout with Rizzo CSS and theme (edit `data-theme` for default)
27
+ - `src/pages/index.astro` — Home page
28
+ - `public/css/rizzo.min.css` — Rizzo CSS bundle
29
+
30
+ ## Commands
31
+
32
+ - `pnpm dev` — Start dev server
33
+ - `pnpm build` — Build for production
34
+ - `pnpm preview` — Preview production build
35
+
36
+ Docs: [rizzo-css.vercel.app](https://rizzo-css.vercel.app)
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "{{PROJECT_NAME}}",
3
+ "type": "module",
4
+ "version": "0.0.1",
5
+ "scripts": {
6
+ "dev": "astro dev",
7
+ "build": "astro build",
8
+ "preview": "astro preview"
9
+ },
10
+ "devDependencies": {
11
+ "astro": "^5.17.1"
12
+ }
13
+ }
@@ -0,0 +1,28 @@
1
+ ---
2
+ /* Placeholders replaced by rizzo-css CLI when scaffolding */
3
+ const DATA_THEME = '{{DATA_THEME}}';
4
+ const THEME_LIST_COMMENT = '{{THEME_LIST_COMMENT}}';
5
+ interface Props {
6
+ title?: string;
7
+ }
8
+ const { title = '{{TITLE}}' } = Astro.props;
9
+ ---
10
+ <!doctype html>
11
+ <html lang="en" data-theme={DATA_THEME}>{THEME_LIST_COMMENT}
12
+ <head>
13
+ <meta charset="UTF-8" />
14
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
15
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
16
+ <script is:inline>
17
+ (function(){try{var s=localStorage.getItem('theme');var d='{{DEFAULT_DARK}}';var l='{{DEFAULT_LIGHT}}';var initial=document.documentElement.getAttribute('data-theme');var r=!s?((initial&&initial!=='system')?initial:(matchMedia('(prefers-color-scheme: dark)').matches?d:l)):s==='system'?(matchMedia('(prefers-color-scheme: dark)').matches?d:l):s;document.documentElement.setAttribute('data-theme',r);}catch(e){}})();
18
+ </script>
19
+ <link rel="stylesheet" href="/css/rizzo.min.css" />
20
+ <title>{title}</title>
21
+ </head>
22
+ <body>
23
+ <a href="#main-content" class="skip-link">Skip to main content</a>
24
+ <main id="main-content">
25
+ <slot />
26
+ </main>
27
+ </body>
28
+ </html>
@@ -0,0 +1,10 @@
1
+ ---
2
+ import Layout from '../layouts/Layout.astro';
3
+ const TITLE = '{{TITLE}}';
4
+ ---
5
+ <Layout title={TITLE}>
6
+ <div class="layout__container" style="padding: var(--spacing-12) var(--spacing-4); min-height: 100vh;">
7
+ <h1>Hello, Rizzo CSS</h1>
8
+ <p>Edit <code>src/pages/index.astro</code> and add your content. Docs: <a href="https://rizzo-css.vercel.app">rizzo-css.vercel.app</a></p>
9
+ </div>
10
+ </Layout>
@@ -0,0 +1,3 @@
1
+ # Copy to .env and adjust as needed.
2
+ # Example:
3
+ # PUBLIC_SITE_URL=https://example.com