rizzo-css 0.0.11 → 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.
Files changed (233) hide show
  1. package/.env.example +12 -0
  2. package/LICENSE +21 -0
  3. package/README.md +17 -3
  4. package/bin/rizzo-css.js +98 -42
  5. package/dist/rizzo.min.css +3 -2
  6. package/package.json +5 -3
  7. package/scaffold/astro-app/README.md +13 -2
  8. package/scaffold/astro-app/src/components/Accordion.astro +178 -0
  9. package/scaffold/astro-app/src/components/Alert.astro +131 -0
  10. package/scaffold/astro-app/src/components/Avatar.astro +59 -0
  11. package/scaffold/astro-app/src/components/Badge.astro +24 -0
  12. package/scaffold/astro-app/src/components/Breadcrumb.astro +61 -0
  13. package/scaffold/astro-app/src/components/Button.astro +3 -0
  14. package/scaffold/astro-app/src/components/Card.astro +18 -0
  15. package/scaffold/astro-app/src/components/Checkbox.astro +38 -0
  16. package/scaffold/astro-app/src/components/CodeBlock.astro +393 -0
  17. package/scaffold/astro-app/src/components/CopyToClipboard.astro +219 -0
  18. package/scaffold/astro-app/src/components/Divider.astro +37 -0
  19. package/scaffold/astro-app/src/components/Dropdown.astro +807 -0
  20. package/scaffold/astro-app/src/components/FormGroup.astro +59 -0
  21. package/scaffold/astro-app/src/components/FrameworkSwitcher.astro +72 -0
  22. package/scaffold/astro-app/src/components/Input.astro +59 -0
  23. package/scaffold/astro-app/src/components/Modal.astro +212 -0
  24. package/scaffold/astro-app/src/components/Navbar.astro +701 -0
  25. package/scaffold/astro-app/src/components/Pagination.astro +240 -0
  26. package/scaffold/astro-app/src/components/ProgressBar.astro +65 -0
  27. package/scaffold/astro-app/src/components/Radio.astro +38 -0
  28. package/scaffold/astro-app/src/components/Search.astro +1259 -0
  29. package/scaffold/astro-app/src/components/Select.astro +49 -0
  30. package/scaffold/astro-app/src/components/Settings.astro +382 -0
  31. package/scaffold/astro-app/src/components/Spinner.astro +30 -0
  32. package/scaffold/astro-app/src/components/Table.astro +181 -0
  33. package/scaffold/astro-app/src/components/Tabs.astro +223 -0
  34. package/scaffold/astro-app/src/components/Textarea.astro +58 -0
  35. package/scaffold/astro-app/src/components/ThemeSwitcher.astro +504 -0
  36. package/scaffold/astro-app/src/components/Toast.astro +30 -0
  37. package/scaffold/astro-app/src/components/Tooltip.astro +32 -0
  38. package/scaffold/astro-app/src/components/icons/Brush.astro +10 -0
  39. package/scaffold/astro-app/src/components/icons/Cake.astro +11 -0
  40. package/scaffold/astro-app/src/components/icons/Check.astro +29 -0
  41. package/scaffold/astro-app/src/components/icons/Cherry.astro +11 -0
  42. package/scaffold/astro-app/src/components/icons/ChevronDown.astro +29 -0
  43. package/scaffold/astro-app/src/components/icons/Circle.astro +29 -0
  44. package/scaffold/astro-app/src/components/icons/Close.astro +30 -0
  45. package/scaffold/astro-app/src/components/icons/Cmd.astro +26 -0
  46. package/scaffold/astro-app/src/components/icons/Copy.astro +30 -0
  47. package/scaffold/astro-app/src/components/icons/Eye.astro +30 -0
  48. package/scaffold/astro-app/src/components/icons/Filter.astro +29 -0
  49. package/scaffold/astro-app/src/components/icons/Flame.astro +28 -0
  50. package/scaffold/astro-app/src/components/icons/Flower.astro +11 -0
  51. package/scaffold/astro-app/src/components/icons/Gear.astro +30 -0
  52. package/scaffold/astro-app/src/components/icons/Heart.astro +28 -0
  53. package/scaffold/astro-app/src/components/icons/IceCream.astro +31 -0
  54. package/scaffold/astro-app/src/components/icons/Leaf.astro +29 -0
  55. package/scaffold/astro-app/src/components/icons/Lemon.astro +11 -0
  56. package/scaffold/astro-app/src/components/icons/Moon.astro +29 -0
  57. package/scaffold/astro-app/src/components/icons/Owl.astro +34 -0
  58. package/scaffold/astro-app/src/components/icons/Palette.astro +33 -0
  59. package/scaffold/astro-app/src/components/icons/Rainbow.astro +31 -0
  60. package/scaffold/astro-app/src/components/icons/Search.astro +30 -0
  61. package/scaffold/astro-app/src/components/icons/Shield.astro +28 -0
  62. package/scaffold/astro-app/src/components/icons/Snowflake.astro +34 -0
  63. package/scaffold/astro-app/src/components/icons/Sort.astro +30 -0
  64. package/scaffold/astro-app/src/components/icons/Sun.astro +29 -0
  65. package/scaffold/astro-app/src/components/icons/Sunset.astro +10 -0
  66. package/scaffold/astro-app/src/components/icons/Zap.astro +9 -0
  67. package/scaffold/astro-app/src/components/icons/devicons/Astro.astro +53 -0
  68. package/scaffold/astro-app/src/components/icons/devicons/Bash.astro +34 -0
  69. package/scaffold/astro-app/src/components/icons/devicons/Css3.astro +29 -0
  70. package/scaffold/astro-app/src/components/icons/devicons/Git.astro +24 -0
  71. package/scaffold/astro-app/src/components/icons/devicons/Html5.astro +27 -0
  72. package/scaffold/astro-app/src/components/icons/devicons/Javascript.astro +25 -0
  73. package/scaffold/astro-app/src/components/icons/devicons/Nodejs.astro +47 -0
  74. package/scaffold/astro-app/src/components/icons/devicons/Plaintext.astro +33 -0
  75. package/scaffold/astro-app/src/components/icons/devicons/React.astro +27 -0
  76. package/scaffold/astro-app/src/components/icons/devicons/Svelte.astro +25 -0
  77. package/scaffold/astro-app/src/components/icons/devicons/Vue.astro +26 -0
  78. package/scaffold/astro-app/src/config/frameworks.ts +26 -0
  79. package/scaffold/astro-app/src/config/themes.ts +54 -0
  80. package/scaffold/astro-app/src/layouts/DocsLayout.astro +204 -0
  81. package/scaffold/astro-app/src/layouts/Layout.astro +11 -2
  82. package/scaffold/astro-app/src/pages/components/accordion.astro +172 -0
  83. package/scaffold/astro-app/src/pages/components/alert.astro +250 -0
  84. package/scaffold/astro-app/src/pages/components/avatar.astro +102 -0
  85. package/scaffold/astro-app/src/pages/components/badge.astro +119 -0
  86. package/scaffold/astro-app/src/pages/components/breadcrumb.astro +124 -0
  87. package/scaffold/astro-app/src/pages/components/button.astro +74 -0
  88. package/scaffold/astro-app/src/pages/components/cards.astro +247 -0
  89. package/scaffold/astro-app/src/pages/components/copy-to-clipboard.astro +49 -0
  90. package/scaffold/astro-app/src/pages/components/divider.astro +74 -0
  91. package/scaffold/astro-app/src/pages/components/dropdown.astro +394 -0
  92. package/scaffold/astro-app/src/pages/components/forms.astro +367 -0
  93. package/scaffold/astro-app/src/pages/components/icons.astro +246 -0
  94. package/scaffold/astro-app/src/pages/components/modal.astro +152 -0
  95. package/scaffold/astro-app/src/pages/components/navbar.astro +80 -0
  96. package/scaffold/astro-app/src/pages/components/pagination.astro +126 -0
  97. package/scaffold/astro-app/src/pages/components/progress-bar.astro +94 -0
  98. package/scaffold/astro-app/src/pages/components/search.astro +155 -0
  99. package/scaffold/astro-app/src/pages/components/settings.astro +78 -0
  100. package/scaffold/astro-app/src/pages/components/spinner.astro +81 -0
  101. package/scaffold/astro-app/src/pages/components/table.astro +144 -0
  102. package/scaffold/astro-app/src/pages/components/tabs.astro +220 -0
  103. package/scaffold/astro-app/src/pages/components/theme-switcher.astro +67 -0
  104. package/scaffold/astro-app/src/pages/components/toast.astro +157 -0
  105. package/scaffold/astro-app/src/pages/components/tooltip.astro +209 -0
  106. package/scaffold/astro-app/src/pages/components.astro +290 -0
  107. package/scaffold/astro-app/src/pages/docs/accessibility.astro +9 -0
  108. package/scaffold/astro-app/src/pages/docs/colors.astro +9 -0
  109. package/scaffold/astro-app/src/pages/docs/design-system.astro +9 -0
  110. package/scaffold/astro-app/src/pages/docs/getting-started.astro +9 -0
  111. package/scaffold/astro-app/src/pages/docs/index.astro +15 -0
  112. package/scaffold/astro-app/src/pages/docs/themes/[theme].astro +14 -0
  113. package/scaffold/astro-app/src/pages/docs/theming.astro +10 -0
  114. package/scaffold/astro-app/src/pages/index.astro +5 -11
  115. package/scaffold/svelte/Table.svelte +6 -5
  116. package/scaffold/svelte/Tabs.svelte +3 -1
  117. package/scaffold/svelte-app/README.md +9 -2
  118. package/scaffold/svelte-app/src/app.html +1 -1
  119. package/scaffold/svelte-app/src/lib/rizzo/Accordion.svelte +128 -0
  120. package/scaffold/svelte-app/src/lib/rizzo/Alert.svelte +85 -0
  121. package/scaffold/svelte-app/src/lib/rizzo/Avatar.svelte +39 -0
  122. package/scaffold/svelte-app/src/lib/rizzo/Badge.svelte +31 -0
  123. package/scaffold/svelte-app/src/lib/rizzo/Breadcrumb.svelte +49 -0
  124. package/scaffold/svelte-app/src/lib/rizzo/Button.svelte +27 -0
  125. package/scaffold/svelte-app/src/lib/rizzo/Card.svelte +17 -0
  126. package/scaffold/svelte-app/src/lib/rizzo/Checkbox.svelte +37 -0
  127. package/scaffold/svelte-app/src/lib/rizzo/CopyToClipboard.svelte +79 -0
  128. package/scaffold/svelte-app/src/lib/rizzo/Divider.svelte +28 -0
  129. package/scaffold/svelte-app/src/lib/rizzo/Dropdown.svelte +254 -0
  130. package/scaffold/svelte-app/src/lib/rizzo/FormGroup.svelte +51 -0
  131. package/scaffold/svelte-app/src/lib/rizzo/Input.svelte +59 -0
  132. package/scaffold/svelte-app/src/lib/rizzo/Modal.svelte +157 -0
  133. package/scaffold/svelte-app/src/lib/rizzo/Pagination.svelte +93 -0
  134. package/scaffold/svelte-app/src/lib/rizzo/ProgressBar.svelte +58 -0
  135. package/scaffold/svelte-app/src/lib/rizzo/Radio.svelte +38 -0
  136. package/scaffold/svelte-app/src/lib/rizzo/Select.svelte +51 -0
  137. package/scaffold/svelte-app/src/lib/rizzo/Spinner.svelte +14 -0
  138. package/scaffold/svelte-app/src/lib/rizzo/Table.svelte +158 -0
  139. package/scaffold/svelte-app/src/lib/rizzo/Tabs.svelte +117 -0
  140. package/scaffold/svelte-app/src/lib/rizzo/Textarea.svelte +59 -0
  141. package/scaffold/svelte-app/src/lib/rizzo/ThemeSwitcher.svelte +315 -0
  142. package/scaffold/svelte-app/src/lib/rizzo/Toast.svelte +33 -0
  143. package/scaffold/svelte-app/src/lib/rizzo/Tooltip.svelte +19 -0
  144. package/scaffold/svelte-app/src/lib/rizzo/icons/Check.svelte +29 -0
  145. package/scaffold/svelte-app/src/lib/rizzo/icons/ChevronDown.svelte +29 -0
  146. package/scaffold/svelte-app/src/lib/rizzo/icons/Circle.svelte +29 -0
  147. package/scaffold/svelte-app/src/lib/rizzo/icons/Close.svelte +30 -0
  148. package/scaffold/svelte-app/src/lib/rizzo/icons/Cmd.svelte +27 -0
  149. package/scaffold/svelte-app/src/lib/rizzo/icons/Copy.svelte +30 -0
  150. package/scaffold/svelte-app/src/lib/rizzo/icons/Eye.svelte +30 -0
  151. package/scaffold/svelte-app/src/lib/rizzo/icons/Filter.svelte +29 -0
  152. package/scaffold/svelte-app/src/lib/rizzo/icons/Gear.svelte +30 -0
  153. package/scaffold/svelte-app/src/lib/rizzo/icons/IceCream.svelte +31 -0
  154. package/scaffold/svelte-app/src/lib/rizzo/icons/Moon.svelte +29 -0
  155. package/scaffold/svelte-app/src/lib/rizzo/icons/Owl.svelte +34 -0
  156. package/scaffold/svelte-app/src/lib/rizzo/icons/Palette.svelte +33 -0
  157. package/scaffold/svelte-app/src/lib/rizzo/icons/Rainbow.svelte +31 -0
  158. package/scaffold/svelte-app/src/lib/rizzo/icons/Search.svelte +30 -0
  159. package/scaffold/svelte-app/src/lib/rizzo/icons/Snowflake.svelte +34 -0
  160. package/scaffold/svelte-app/src/lib/rizzo/icons/Sort.svelte +30 -0
  161. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Astro.svelte +45 -0
  162. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Bash.svelte +28 -0
  163. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Css3.svelte +23 -0
  164. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Git.svelte +18 -0
  165. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Html5.svelte +21 -0
  166. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Javascript.svelte +19 -0
  167. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Nodejs.svelte +44 -0
  168. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Plaintext.svelte +24 -0
  169. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/React.svelte +21 -0
  170. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/SvelteIcon.svelte +19 -0
  171. package/scaffold/svelte-app/src/lib/rizzo/icons/devicons/Vue.svelte +20 -0
  172. package/scaffold/svelte-app/src/lib/rizzo/index.ts +33 -0
  173. package/scaffold/svelte-app/src/lib/rizzo-docs/CodeBlock.svelte +239 -0
  174. package/scaffold/svelte-app/src/lib/rizzo-docs/SvelteDocPage.svelte +99 -0
  175. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/AccordionDoc.svelte +53 -0
  176. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/AlertDoc.svelte +114 -0
  177. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/AvatarDoc.svelte +92 -0
  178. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/BadgeDoc.svelte +60 -0
  179. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/BreadcrumbDoc.svelte +55 -0
  180. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ButtonDoc.svelte +55 -0
  181. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/CardsDoc.svelte +173 -0
  182. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ComingSoon.svelte +12 -0
  183. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ComponentsOverview.svelte +92 -0
  184. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/CopyToClipboardDoc.svelte +26 -0
  185. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/DividerDoc.svelte +105 -0
  186. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/DropdownDoc.svelte +161 -0
  187. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/FormsDoc.svelte +375 -0
  188. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/IconsDoc.svelte +246 -0
  189. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/Index.svelte +8 -0
  190. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ModalDoc.svelte +50 -0
  191. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/NavbarDoc.svelte +79 -0
  192. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/PaginationDoc.svelte +44 -0
  193. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ProgressBarDoc.svelte +95 -0
  194. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/SearchDoc.svelte +147 -0
  195. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/SettingsDoc.svelte +158 -0
  196. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/SpinnerDoc.svelte +41 -0
  197. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/TableDoc.svelte +116 -0
  198. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/TabsDoc.svelte +152 -0
  199. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ThemeSwitcherDoc.svelte +181 -0
  200. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/Theming.svelte +6 -0
  201. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/ToastDoc.svelte +136 -0
  202. package/scaffold/svelte-app/src/lib/rizzo-docs/pages/TooltipDoc.svelte +57 -0
  203. package/scaffold/svelte-app/src/routes/+page.svelte +2 -2
  204. package/scaffold/svelte-app/src/routes/components/+page.svelte +4 -0
  205. package/scaffold/svelte-app/src/routes/components/[slug]/+page.svelte +7 -0
  206. package/scaffold/vanilla/README.md +20 -8
  207. package/scaffold/vanilla/components/accordion.html +187 -0
  208. package/scaffold/vanilla/components/alert.html +187 -0
  209. package/scaffold/vanilla/components/avatar.html +187 -0
  210. package/scaffold/vanilla/components/badge.html +187 -0
  211. package/scaffold/vanilla/components/breadcrumb.html +187 -0
  212. package/scaffold/vanilla/components/button.html +187 -0
  213. package/scaffold/vanilla/components/cards.html +187 -0
  214. package/scaffold/vanilla/components/copy-to-clipboard.html +187 -0
  215. package/scaffold/vanilla/components/divider.html +187 -0
  216. package/scaffold/vanilla/components/dropdown.html +187 -0
  217. package/scaffold/vanilla/components/forms.html +187 -0
  218. package/scaffold/vanilla/components/icons.html +187 -0
  219. package/scaffold/vanilla/components/index.html +212 -0
  220. package/scaffold/vanilla/components/modal.html +187 -0
  221. package/scaffold/vanilla/components/navbar.html +187 -0
  222. package/scaffold/vanilla/components/pagination.html +187 -0
  223. package/scaffold/vanilla/components/progress-bar.html +187 -0
  224. package/scaffold/vanilla/components/search.html +187 -0
  225. package/scaffold/vanilla/components/settings.html +187 -0
  226. package/scaffold/vanilla/components/spinner.html +187 -0
  227. package/scaffold/vanilla/components/table.html +187 -0
  228. package/scaffold/vanilla/components/tabs.html +187 -0
  229. package/scaffold/vanilla/components/theme-switcher.html +187 -0
  230. package/scaffold/vanilla/components/toast.html +187 -0
  231. package/scaffold/vanilla/components/tooltip.html +187 -0
  232. package/scaffold/vanilla/index.html +17 -283
  233. package/scaffold/vanilla/js/main.js +748 -0
@@ -0,0 +1,239 @@
1
+ <script lang="ts">
2
+ import Copy from '$lib/rizzo/icons/Copy.svelte';
3
+ import Check from '$lib/rizzo/icons/Check.svelte';
4
+ import Css3 from '$lib/rizzo/icons/devicons/Css3.svelte';
5
+ import Html5 from '$lib/rizzo/icons/devicons/Html5.svelte';
6
+ import Javascript from '$lib/rizzo/icons/devicons/Javascript.svelte';
7
+ import Nodejs from '$lib/rizzo/icons/devicons/Nodejs.svelte';
8
+ import AstroIcon from '$lib/rizzo/icons/devicons/Astro.svelte';
9
+ import Plaintext from '$lib/rizzo/icons/devicons/Plaintext.svelte';
10
+ import Git from '$lib/rizzo/icons/devicons/Git.svelte';
11
+ import SvelteIcon from '$lib/rizzo/icons/devicons/SvelteIcon.svelte';
12
+ import React from '$lib/rizzo/icons/devicons/React.svelte';
13
+ import Vue from '$lib/rizzo/icons/devicons/Vue.svelte';
14
+ import Bash from '$lib/rizzo/icons/devicons/Bash.svelte';
15
+
16
+ interface Props {
17
+ code: string;
18
+ language?: string;
19
+ class?: string;
20
+ }
21
+ let { code, language = '', class: className = '' }: Props = $props();
22
+ let copied = $state(false);
23
+ const languageLabel = $derived(language || '');
24
+ const languageLower = $derived(language.toLowerCase());
25
+
26
+ async function copyCode() {
27
+ try {
28
+ await navigator.clipboard.writeText(code);
29
+ copied = true;
30
+ setTimeout(() => (copied = false), 2000);
31
+ } catch {
32
+ const ta = document.createElement('textarea');
33
+ ta.value = code;
34
+ ta.style.position = 'fixed';
35
+ ta.style.left = '-999999px';
36
+ document.body.appendChild(ta);
37
+ ta.focus();
38
+ ta.select();
39
+ try {
40
+ document.execCommand('copy');
41
+ copied = true;
42
+ setTimeout(() => (copied = false), 2000);
43
+ } finally {
44
+ document.body.removeChild(ta);
45
+ }
46
+ }
47
+ }
48
+
49
+ </script>
50
+
51
+ <div class={`code-block ${className}`.trim()}>
52
+ <div class="code-block__header">
53
+ {#if language}
54
+ <span class="code-block__language" aria-label={languageLabel}>
55
+ {#if languageLower === 'css'}
56
+ <span class="code-block__language-icon" aria-hidden="true">
57
+ <Css3 width={20} height={20} />
58
+ </span>
59
+ {:else if languageLower === 'html'}
60
+ <span class="code-block__language-icon" aria-hidden="true">
61
+ <Html5 width={20} height={20} />
62
+ </span>
63
+ {:else if languageLower === 'javascript'}
64
+ <span class="code-block__language-icon" aria-hidden="true">
65
+ <Javascript width={20} height={20} />
66
+ </span>
67
+ {:else if languageLower === 'nodejs'}
68
+ <span class="code-block__language-icon" aria-hidden="true">
69
+ <Nodejs width={20} height={20} />
70
+ </span>
71
+ {:else if languageLower === 'astro'}
72
+ <span class="code-block__language-icon" aria-hidden="true">
73
+ <AstroIcon width={20} height={20} />
74
+ </span>
75
+ {:else if languageLower === 'plaintext'}
76
+ <span class="code-block__language-icon" aria-hidden="true">
77
+ <Plaintext width={20} height={20} class="code-block__plaintext-icon" />
78
+ </span>
79
+ {:else if languageLower === 'git'}
80
+ <span class="code-block__language-icon" aria-hidden="true">
81
+ <Git width={20} height={20} />
82
+ </span>
83
+ {:else if languageLower === 'svelte'}
84
+ <span class="code-block__language-icon" aria-hidden="true">
85
+ <SvelteIcon width={20} height={20} />
86
+ </span>
87
+ {:else if languageLower === 'react' || languageLower === 'jsx' || languageLower === 'tsx'}
88
+ <span class="code-block__language-icon" aria-hidden="true">
89
+ <React width={20} height={20} />
90
+ </span>
91
+ {:else if languageLower === 'vue'}
92
+ <span class="code-block__language-icon" aria-hidden="true">
93
+ <Vue width={20} height={20} />
94
+ </span>
95
+ {:else if languageLower === 'bash' || languageLower === 'shell' || languageLower === 'sh'}
96
+ <span class="code-block__language-icon" aria-hidden="true">
97
+ <Bash width={20} height={20} class="code-block__bash-icon" />
98
+ </span>
99
+ {/if}
100
+ <span class="code-block__language-text">{language}</span>
101
+ <span class="sr-only">{languageLabel}</span>
102
+ </span>
103
+ {/if}
104
+ <span class="tooltip-host" data-tooltip={copied ? 'Copied!' : 'Copy code'}>
105
+ <button
106
+ type="button"
107
+ class="code-block__copy-btn"
108
+ aria-label={copied ? 'Copied!' : 'Copy code'}
109
+ onclick={copyCode}
110
+ >
111
+ {#if copied}
112
+ <span class="code-block__copy-icon code-block__copy-icon--check" aria-hidden="true">
113
+ <Check width={20} height={20} />
114
+ </span>
115
+ {:else}
116
+ <span class="code-block__copy-icon code-block__copy-icon--copy" aria-hidden="true">
117
+ <Copy width={20} height={20} />
118
+ </span>
119
+ {/if}
120
+ </button>
121
+ </span>
122
+ </div>
123
+ <pre><code>{code}</code></pre>
124
+ </div>
125
+
126
+ <style>
127
+ .code-block {
128
+ position: relative;
129
+ margin: var(--spacing-4) 0;
130
+ border-radius: var(--radius-lg);
131
+ overflow: visible;
132
+ background-color: var(--background-alt);
133
+ border: 1px solid var(--border);
134
+ }
135
+ .code-block__header {
136
+ display: flex;
137
+ align-items: center;
138
+ justify-content: space-between;
139
+ padding: var(--spacing-2) var(--spacing-3);
140
+ background-color: var(--background);
141
+ border-bottom: 1px solid var(--border);
142
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
143
+ overflow: visible;
144
+ position: relative;
145
+ z-index: 1;
146
+ }
147
+ .code-block__language {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: var(--spacing-2);
151
+ font-size: var(--font-size-xs);
152
+ color: var(--text-dim);
153
+ text-transform: uppercase;
154
+ letter-spacing: var(--letter-spacing-wider);
155
+ font-weight: var(--font-weight-medium);
156
+ }
157
+ .code-block__language-icon {
158
+ display: block;
159
+ flex-shrink: 0;
160
+ width: var(--spacing-5);
161
+ height: var(--spacing-5);
162
+ color: var(--text-dim);
163
+ }
164
+ .code-block__language-icon svg {
165
+ width: 100%;
166
+ height: 100%;
167
+ display: block;
168
+ }
169
+ .code-block__plaintext-icon {
170
+ color: var(--text-dim);
171
+ }
172
+ .code-block__plaintext-icon :global(path) {
173
+ fill: currentColor;
174
+ }
175
+ .code-block__bash-icon {
176
+ color: var(--text-dim);
177
+ }
178
+ .code-block__bash-icon :global(.bash-icon__main) {
179
+ fill: currentColor;
180
+ }
181
+ .code-block__language-text {
182
+ display: none;
183
+ }
184
+ @media (width >= 768px) {
185
+ .code-block__language-text {
186
+ display: inline;
187
+ }
188
+ }
189
+ .code-block__copy-btn {
190
+ display: flex;
191
+ align-items: center;
192
+ justify-content: center;
193
+ padding: var(--spacing-2);
194
+ min-width: var(--spacing-8);
195
+ height: var(--spacing-8);
196
+ margin-left: auto;
197
+ background-color: var(--background-alt);
198
+ border: 1px solid var(--border);
199
+ border-radius: var(--radius-md);
200
+ color: var(--text);
201
+ cursor: pointer;
202
+ transition: background-color var(--transition-base), border-color var(--transition-base), color var(--transition-base);
203
+ }
204
+ .code-block__copy-btn:hover {
205
+ background-color: var(--background);
206
+ border-color: var(--accent);
207
+ color: var(--accent);
208
+ }
209
+ .code-block__copy-btn:focus-visible {
210
+ outline: var(--outline-width) solid var(--accent);
211
+ outline-offset: var(--outline-offset);
212
+ }
213
+ .code-block pre {
214
+ margin: 0;
215
+ padding: var(--spacing-4);
216
+ overflow-x: auto;
217
+ background-color: var(--background-alt);
218
+ border-radius: 0 0 var(--radius-lg) var(--radius-lg);
219
+ }
220
+ .code-block code {
221
+ font-family: var(--font-family-mono);
222
+ font-size: var(--font-size-sm);
223
+ line-height: var(--line-height-relaxed);
224
+ color: var(--text);
225
+ white-space: pre;
226
+ word-wrap: normal;
227
+ }
228
+ .sr-only {
229
+ position: absolute;
230
+ width: 1px;
231
+ height: 1px;
232
+ padding: 0;
233
+ margin: -1px;
234
+ overflow: hidden;
235
+ clip: rect(0, 0, 0, 0);
236
+ white-space: nowrap;
237
+ border: 0;
238
+ }
239
+ </style>
@@ -0,0 +1,99 @@
1
+ <script lang="ts">
2
+ import Index from './pages/Index.svelte';
3
+ import ComponentsOverview from './pages/ComponentsOverview.svelte';
4
+ import ComingSoon from './pages/ComingSoon.svelte';
5
+ import ButtonDoc from './pages/ButtonDoc.svelte';
6
+ import BadgeDoc from './pages/BadgeDoc.svelte';
7
+ import CardsDoc from './pages/CardsDoc.svelte';
8
+ import DividerDoc from './pages/DividerDoc.svelte';
9
+ import SpinnerDoc from './pages/SpinnerDoc.svelte';
10
+ import ProgressBarDoc from './pages/ProgressBarDoc.svelte';
11
+ import AvatarDoc from './pages/AvatarDoc.svelte';
12
+ import AlertDoc from './pages/AlertDoc.svelte';
13
+ import BreadcrumbDoc from './pages/BreadcrumbDoc.svelte';
14
+ import FormsDoc from './pages/FormsDoc.svelte';
15
+ import CopyToClipboardDoc from './pages/CopyToClipboardDoc.svelte';
16
+ import TooltipDoc from './pages/TooltipDoc.svelte';
17
+ import PaginationDoc from './pages/PaginationDoc.svelte';
18
+ import TabsDoc from './pages/TabsDoc.svelte';
19
+ import AccordionDoc from './pages/AccordionDoc.svelte';
20
+ import DropdownDoc from './pages/DropdownDoc.svelte';
21
+ import ModalDoc from './pages/ModalDoc.svelte';
22
+ import ToastDoc from './pages/ToastDoc.svelte';
23
+ import TableDoc from './pages/TableDoc.svelte';
24
+ import IconsDoc from './pages/IconsDoc.svelte';
25
+ import NavbarDoc from './pages/NavbarDoc.svelte';
26
+ import SearchDoc from './pages/SearchDoc.svelte';
27
+ import SettingsDoc from './pages/SettingsDoc.svelte';
28
+ import ThemeSwitcherDoc from './pages/ThemeSwitcherDoc.svelte';
29
+
30
+ interface Props {
31
+ /** Slug from URL (e.g. "components/badge"). Pass string so SSR and client hydrate the same. */
32
+ slug?: string | undefined;
33
+ }
34
+ let { slug }: Props = $props();
35
+
36
+ const path = $derived(
37
+ typeof slug === 'string' && slug !== '' ? slug.split('/').filter(Boolean) : []
38
+ );
39
+ const first = $derived(path[0] ?? '');
40
+ const second = $derived(path[1] ?? '');
41
+ </script>
42
+
43
+ <div class="svelte-doc-page-root">
44
+ {#if path.length === 0 || (path.length === 1 && first === '')}
45
+ <Index />
46
+ {:else if first === 'components' && !second}
47
+ <ComponentsOverview />
48
+ {:else if first === 'components' && second === 'button'}
49
+ <ButtonDoc />
50
+ {:else if first === 'components' && second === 'badge'}
51
+ <BadgeDoc />
52
+ {:else if first === 'components' && second === 'cards'}
53
+ <CardsDoc />
54
+ {:else if first === 'components' && second === 'divider'}
55
+ <DividerDoc />
56
+ {:else if first === 'components' && second === 'spinner'}
57
+ <SpinnerDoc />
58
+ {:else if first === 'components' && second === 'progress-bar'}
59
+ <ProgressBarDoc />
60
+ {:else if first === 'components' && second === 'avatar'}
61
+ <AvatarDoc />
62
+ {:else if first === 'components' && second === 'alert'}
63
+ <AlertDoc />
64
+ {:else if first === 'components' && second === 'breadcrumb'}
65
+ <BreadcrumbDoc />
66
+ {:else if first === 'components' && second === 'forms'}
67
+ <FormsDoc />
68
+ {:else if first === 'components' && second === 'copy-to-clipboard'}
69
+ <CopyToClipboardDoc />
70
+ {:else if first === 'components' && second === 'tooltip'}
71
+ <TooltipDoc />
72
+ {:else if first === 'components' && second === 'pagination'}
73
+ <PaginationDoc />
74
+ {:else if first === 'components' && second === 'tabs'}
75
+ <TabsDoc />
76
+ {:else if first === 'components' && second === 'accordion'}
77
+ <AccordionDoc />
78
+ {:else if first === 'components' && second === 'dropdown'}
79
+ <DropdownDoc />
80
+ {:else if first === 'components' && second === 'modal'}
81
+ <ModalDoc />
82
+ {:else if first === 'components' && second === 'toast'}
83
+ <ToastDoc />
84
+ {:else if first === 'components' && second === 'table'}
85
+ <TableDoc />
86
+ {:else if first === 'components' && second === 'icons'}
87
+ <IconsDoc />
88
+ {:else if first === 'components' && second === 'navbar'}
89
+ <NavbarDoc />
90
+ {:else if first === 'components' && second === 'search'}
91
+ <SearchDoc />
92
+ {:else if first === 'components' && second === 'settings'}
93
+ <SettingsDoc />
94
+ {:else if first === 'components' && second === 'theme-switcher'}
95
+ <ThemeSwitcherDoc />
96
+ {:else}
97
+ <ComingSoon title={second ? second.replace(/-/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase()) : first} />
98
+ {/if}
99
+ </div>
@@ -0,0 +1,53 @@
1
+ <script lang="ts">
2
+ import Accordion from '$lib/rizzo/Accordion.svelte';
3
+ import CodeBlock from '$lib/rizzo-docs/CodeBlock.svelte';
4
+
5
+ const items = [
6
+ { id: 'one', title: 'Section one', content: '<p>Content for section one.</p>' },
7
+ { id: 'two', title: 'Section two', content: '<p>Content for section two.</p>' },
8
+ { id: 'three', title: 'Section three', content: '<p>Content for section three.</p>' },
9
+ ];
10
+ </script>
11
+
12
+ <section>
13
+ <h2>Accordion component</h2>
14
+ <p>Expandable panels with single or multiple open. Keyboard (Arrow keys, Home, End, Enter/Space) and ARIA.</p>
15
+
16
+ <h3>Props</h3>
17
+ <ul>
18
+ <li><code>items</code> (array, required) — Objects with <code>id</code>, <code>title</code>, optional <code>content</code> (HTML string)</li>
19
+ <li><code>id</code> (string, optional) — Unique accordion id</li>
20
+ <li><code>allowMultiple</code> (boolean, optional) — Allow multiple panels open (default: false)</li>
21
+ <li><code>defaultExpanded</code> (string | string[], optional) — ID(s) to expand by default</li>
22
+ <li><code>class</code> (string, optional) — Additional CSS classes</li>
23
+ </ul>
24
+
25
+ <h3>Single open (default)</h3>
26
+ <div class="example">
27
+ <div class="example-title">Live example</div>
28
+ <Accordion {items} defaultExpanded="one" />
29
+ </div>
30
+
31
+ <h3>Allow multiple</h3>
32
+ <div class="example">
33
+ <div class="example-title">Live example</div>
34
+ <Accordion {items} allowMultiple defaultExpanded={['one', 'two']} />
35
+ </div>
36
+
37
+ <h3>Usage</h3>
38
+ <CodeBlock
39
+ code={`<script>
40
+ import Accordion from './components/svelte/Accordion.svelte';
41
+ </script>
42
+
43
+ <Accordion
44
+ items={[
45
+ { id: 'a', title: 'Panel A', content: '<p>Content A.</p>' },
46
+ { id: 'b', title: 'Panel B', content: '<p>Content B.</p>' },
47
+ ]}
48
+ defaultExpanded="a"
49
+ />
50
+ <Accordion items={items} allowMultiple />`}
51
+ language="svelte"
52
+ />
53
+ </section>
@@ -0,0 +1,114 @@
1
+ <script lang="ts">
2
+ import Alert from '$lib/rizzo/Alert.svelte';
3
+ import CodeBlock from '$lib/rizzo-docs/CodeBlock.svelte';
4
+
5
+ type AlertItem = { id: string; variant: 'success' | 'error' | 'warning' | 'info'; message: string; dismissible: boolean; autoDismiss?: number };
6
+ let liveAlerts = $state<AlertItem[]>([]);
7
+ let autoDismissAlerts = $state<AlertItem[]>([]);
8
+
9
+ function showAlert(variant: AlertItem['variant'], message: string, dismissible = true, autoDismiss = 0, target: 'live' | 'auto' = 'live') {
10
+ const item: AlertItem = {
11
+ id: crypto.randomUUID(),
12
+ variant,
13
+ message,
14
+ dismissible,
15
+ ...(autoDismiss > 0 ? { autoDismiss } : {}),
16
+ };
17
+ if (target === 'auto') autoDismissAlerts = [...autoDismissAlerts, item];
18
+ else liveAlerts = [...liveAlerts, item];
19
+ }
20
+
21
+ function removeLive(id: string) {
22
+ liveAlerts = liveAlerts.filter((a) => a.id !== id);
23
+ }
24
+ function removeAutoDismiss(id: string) {
25
+ autoDismissAlerts = autoDismissAlerts.filter((a) => a.id !== id);
26
+ }
27
+
28
+ const msgAuto3 = 'This alert will auto-dismiss in 3 seconds';
29
+ const msgAuto5 = 'This alert will auto-dismiss in 5 seconds';
30
+ const msgAuto7 = 'This alert will auto-dismiss in 7 seconds';
31
+ </script>
32
+
33
+ <section>
34
+ <h2>Alert component</h2>
35
+ <p>Variants: success, error, warning, info. Optional dismissible and auto-dismiss.</p>
36
+
37
+ <h3>Variants (show on click)</h3>
38
+ <p>Click the buttons below to see each variant in action:</p>
39
+ <div class="example">
40
+ <div class="example-title">Live examples</div>
41
+ <div class="example-buttons">
42
+ <button type="button" class="btn btn-success" onclick={() => showAlert('success', 'Success! Your changes have been saved successfully.')}>Show Success Alert</button>
43
+ <button type="button" class="btn btn-error" onclick={() => showAlert('error', 'Error! Something went wrong. Please try again.')}>Show Error Alert</button>
44
+ <button type="button" class="btn btn-warning" onclick={() => showAlert('warning', 'Warning! This action cannot be undone.')}>Show Warning Alert</button>
45
+ <button type="button" class="btn btn-info" onclick={() => showAlert('info', 'Info: New features are available in the latest update.')}>Show Info Alert</button>
46
+ </div>
47
+ <div class="example-stack example-alert-container">
48
+ {#each liveAlerts as item (item.id)}
49
+ <Alert variant={item.variant} dismissible={item.dismissible} autoDismiss={item.autoDismiss} onDismiss={() => removeLive(item.id)}>
50
+ {item.message}
51
+ </Alert>
52
+ {/each}
53
+ </div>
54
+ </div>
55
+
56
+ <h3>Auto-dismiss</h3>
57
+ <p>Alerts can automatically dismiss after a set duration:</p>
58
+ <div class="example">
59
+ <div class="example-title">Auto-dismiss examples</div>
60
+ <div class="example-buttons">
61
+ <button type="button" class="btn btn-primary" onclick={() => showAlert('success', msgAuto3, true, 3000, 'auto')}>3 second</button>
62
+ <button type="button" class="btn btn-primary" onclick={() => showAlert('info', msgAuto5, true, 5000, 'auto')}>5 second</button>
63
+ <button type="button" class="btn btn-primary" onclick={() => showAlert('warning', msgAuto7, true, 7000, 'auto')}>7 second</button>
64
+ </div>
65
+ <div class="example-stack example-alert-container">
66
+ {#each autoDismissAlerts as item (item.id)}
67
+ <Alert variant={item.variant} dismissible={item.dismissible} autoDismiss={item.autoDismiss} onDismiss={() => removeAutoDismiss(item.id)}>
68
+ {item.message}
69
+ </Alert>
70
+ {/each}
71
+ </div>
72
+ </div>
73
+
74
+ <h3>Static examples</h3>
75
+ <div class="example">
76
+ <div class="example-title">Inline alerts</div>
77
+ <div class="example-stack">
78
+ <Alert variant="success">Success message.</Alert>
79
+ <Alert variant="error">Error message.</Alert>
80
+ <Alert variant="warning">Warning message.</Alert>
81
+ <Alert variant="info" dismissible>Dismissible info alert.</Alert>
82
+ </div>
83
+ </div>
84
+
85
+ <h3>Usage</h3>
86
+ <CodeBlock
87
+ code={`<script>
88
+ import Alert from './components/svelte/Alert.svelte';
89
+ </script>
90
+
91
+ <Alert variant="success">Saved.</Alert>
92
+ <Alert variant="error" dismissible>Something went wrong.</Alert>
93
+ <Alert variant="info" autoDismiss={5000}>Auto-dismiss in 5s.</Alert>`}
94
+ language="svelte"
95
+ />
96
+ </section>
97
+
98
+ <style>
99
+ .example-stack {
100
+ display: flex;
101
+ flex-direction: column;
102
+ gap: var(--spacing-3);
103
+ }
104
+ .example-buttons {
105
+ display: flex;
106
+ flex-wrap: wrap;
107
+ gap: var(--spacing-3);
108
+ margin-bottom: var(--spacing-4);
109
+ }
110
+ .example-alert-container {
111
+ min-height: 1px;
112
+ margin-top: var(--spacing-4);
113
+ }
114
+ </style>
@@ -0,0 +1,92 @@
1
+ <script lang="ts">
2
+ import AvatarComponent from '$lib/rizzo/Avatar.svelte';
3
+ import CodeBlock from '$lib/rizzo-docs/CodeBlock.svelte';
4
+ </script>
5
+
6
+ <section>
7
+ <h2>Avatar component</h2>
8
+ <p>Accessible avatar: profile image when provided, or initials from <code>name</code> / <code>initials</code>. Sizes (sm, md, lg) and shape (circle, square). BEM: <code>avatar</code>, <code>avatar--sm</code>/<code>md</code>/<code>lg</code>, <code>avatar--circle</code>/<code>square</code>.</p>
9
+
10
+ <h3>Props</h3>
11
+ <ul>
12
+ <li><code>src</code> (string, optional) — Image URL</li>
13
+ <li><code>alt</code> (string, optional) — Alt text for the image</li>
14
+ <li><code>name</code> (string, optional) — Full name for initials (e.g. "Jane Doe" → "JD")</li>
15
+ <li><code>initials</code> (string, optional) — Override initials; ignored if <code>name</code> is set</li>
16
+ <li><code>size</code> (string, optional) — <code>sm</code>, <code>md</code>, <code>lg</code> (default: md)</li>
17
+ <li><code>shape</code> (string, optional) — <code>circle</code>, <code>square</code> (default: circle)</li>
18
+ <li><code>class</code> (string, optional) — Additional CSS classes</li>
19
+ </ul>
20
+
21
+ <h3>Initials (basic)</h3>
22
+ <div class="example">
23
+ <div class="example-title">Live examples</div>
24
+ <div class="example-row">
25
+ <AvatarComponent name="Jane Doe" />
26
+ <AvatarComponent name="Alice" />
27
+ <AvatarComponent initials="AB" />
28
+ </div>
29
+ </div>
30
+
31
+ <h3>Sizes</h3>
32
+ <div class="example">
33
+ <div class="example-title">Live examples</div>
34
+ <div class="example-row">
35
+ <AvatarComponent name="Jane Doe" size="sm" />
36
+ <AvatarComponent name="Jane Doe" size="md" />
37
+ <AvatarComponent name="Jane Doe" size="lg" />
38
+ </div>
39
+ </div>
40
+
41
+ <h3>Shape</h3>
42
+ <p>Use <code>shape="square"</code> for a rounded square; default is <code>circle</code>.</p>
43
+ <div class="example">
44
+ <div class="example-title">Live examples</div>
45
+ <div class="example-row">
46
+ <AvatarComponent name="Jane Doe" shape="circle" />
47
+ <AvatarComponent name="Jane Doe" shape="square" />
48
+ </div>
49
+ </div>
50
+
51
+ <h3>With image</h3>
52
+ <p>Pass <code>src</code> and <code>alt</code> for a profile image (lazy-loaded, <code>object-fit: cover</code>).</p>
53
+ <div class="example">
54
+ <div class="example-title">Live example (placeholder)</div>
55
+ <div class="example-row">
56
+ <AvatarComponent
57
+ src="https://api.dicebear.com/7.x/initials/svg?seed=Jane"
58
+ alt="Jane Doe"
59
+ size="md"
60
+ />
61
+ <AvatarComponent
62
+ src="https://api.dicebear.com/7.x/initials/svg?seed=Alice"
63
+ alt="Alice"
64
+ size="lg"
65
+ />
66
+ </div>
67
+ </div>
68
+
69
+ <h3>Usage</h3>
70
+ <CodeBlock
71
+ code={`<script>
72
+ import Avatar from './components/svelte/Avatar.svelte';
73
+ </script>
74
+
75
+ <Avatar name="Jane Doe" />
76
+ <Avatar name="Alice" />
77
+ <Avatar initials="AB" />
78
+ <Avatar name="Jane Doe" size="sm" />
79
+ <Avatar name="Jane Doe" shape="square" />
80
+ <Avatar src="/photo.jpg" alt="Jane Doe" size="md" />`}
81
+ language="svelte"
82
+ />
83
+ </section>
84
+
85
+ <style>
86
+ .example-row {
87
+ display: flex;
88
+ flex-wrap: wrap;
89
+ gap: var(--spacing-4);
90
+ align-items: center;
91
+ }
92
+ </style>
@@ -0,0 +1,60 @@
1
+ <script lang="ts">
2
+ import Badge from '$lib/rizzo/Badge.svelte';
3
+ import CodeBlock from '$lib/rizzo-docs/CodeBlock.svelte';
4
+ </script>
5
+
6
+ <section>
7
+ <h2>Badge component</h2>
8
+ <p>Small labels and tags with variants, sizes, and optional pill style. BEM: <code>badge</code>, <code>badge--primary</code>, etc. Text on solid semantic variants (success, warning, error, info) uses the same contrast variables as buttons (<code>--success-text-on-solid</code>, etc.) for theme-aware readability.</p>
9
+
10
+ <h3>Props</h3>
11
+ <ul>
12
+ <li><code>variant</code> (string, optional) — <code>primary</code>, <code>success</code>, <code>warning</code>, <code>error</code>, <code>info</code></li>
13
+ <li><code>size</code> (string, optional) — <code>sm</code>, <code>md</code>, <code>lg</code></li>
14
+ <li><code>pill</code> (boolean, optional) — Rounded pill style</li>
15
+ <li><code>class</code> (string, optional) — Additional CSS classes</li>
16
+ </ul>
17
+
18
+ <h3>Variants</h3>
19
+ <div class="example">
20
+ <div class="example-title">Live examples</div>
21
+ <div class="example-badges">
22
+ <Badge variant="primary">Primary</Badge>
23
+ <Badge variant="success">Success</Badge>
24
+ <Badge variant="warning">Warning</Badge>
25
+ <Badge variant="error">Error</Badge>
26
+ <Badge variant="info">Info</Badge>
27
+ </div>
28
+ </div>
29
+
30
+ <h3>Sizes and pill</h3>
31
+ <div class="example">
32
+ <div class="example-badges">
33
+ <Badge variant="primary" size="sm">Small</Badge>
34
+ <Badge variant="primary" size="md">Medium</Badge>
35
+ <Badge variant="primary" size="lg">Large</Badge>
36
+ <Badge variant="success" pill>Pill</Badge>
37
+ </div>
38
+ </div>
39
+
40
+ <h3>Usage</h3>
41
+ <CodeBlock
42
+ code={`<script>
43
+ import Badge from './components/svelte/Badge.svelte';
44
+ </script>
45
+
46
+ <Badge variant="primary">New</Badge>
47
+ <Badge variant="success" size="sm">Active</Badge>
48
+ <Badge variant="error" pill>Urgent</Badge>`}
49
+ language="svelte"
50
+ />
51
+ </section>
52
+
53
+ <style>
54
+ .example-badges {
55
+ display: flex;
56
+ flex-wrap: wrap;
57
+ gap: var(--spacing-3);
58
+ align-items: center;
59
+ }
60
+ </style>