@cl-light-ds/ui 0.2.0 → 0.4.0

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 (293) hide show
  1. package/README.md +45 -45
  2. package/package.json +2 -2
  3. package/src/components/accordion/Accordion.astro +248 -248
  4. package/src/components/accordion/AccordionContent.astro +26 -26
  5. package/src/components/accordion/AccordionItem.astro +36 -36
  6. package/src/components/accordion/AccordionTrigger.astro +118 -118
  7. package/src/components/accordion/CHANGELOG.md +41 -41
  8. package/src/components/accordion/index.ts +4 -4
  9. package/src/components/alert/Alert.astro +167 -167
  10. package/src/components/alert/AlertDescription.astro +24 -24
  11. package/src/components/alert/AlertTitle.astro +24 -24
  12. package/src/components/alert/CHANGELOG.md +5 -5
  13. package/src/components/alert/index.ts +4 -4
  14. package/src/components/avatar/Avatar.astro +197 -197
  15. package/src/components/avatar/AvatarBadge.astro +44 -44
  16. package/src/components/avatar/AvatarFallback.astro +26 -26
  17. package/src/components/avatar/AvatarGroup.astro +26 -26
  18. package/src/components/avatar/AvatarGroupCount.astro +30 -30
  19. package/src/components/avatar/AvatarImage.astro +46 -46
  20. package/src/components/avatar/CHANGELOG.md +44 -44
  21. package/src/components/avatar/index.ts +6 -6
  22. package/src/components/badge/Badge.astro +167 -167
  23. package/src/components/badge/CHANGELOG.md +49 -49
  24. package/src/components/badge/index.ts +2 -2
  25. package/src/components/breadcrumb/Breadcrumb.astro +76 -76
  26. package/src/components/breadcrumb/BreadcrumbItem.astro +32 -32
  27. package/src/components/breadcrumb/BreadcrumbList.astro +26 -26
  28. package/src/components/breadcrumb/BreadcrumbSeparator.astro +26 -26
  29. package/src/components/breadcrumb/CHANGELOG.md +24 -24
  30. package/src/components/breadcrumb/index.ts +5 -5
  31. package/src/components/button/Button.astro +233 -233
  32. package/src/components/button/CHANGELOG.md +41 -41
  33. package/src/components/button/index.ts +2 -2
  34. package/src/components/button-group/ButtonGroup.astro +130 -130
  35. package/src/components/button-group/ButtonGroupSeparator.astro +30 -30
  36. package/src/components/button-group/ButtonGroupText.astro +21 -21
  37. package/src/components/button-group/CHANGELOG.md +34 -34
  38. package/src/components/button-group/index.ts +3 -3
  39. package/src/components/callout/CHANGELOG.md +32 -0
  40. package/src/components/callout/Callout.astro +147 -0
  41. package/src/components/callout/CalloutDescription.astro +16 -0
  42. package/src/components/callout/CalloutTitle.astro +16 -0
  43. package/src/components/callout/index.ts +3 -0
  44. package/src/components/card/CHANGELOG.md +162 -119
  45. package/src/components/card/Card.astro +197 -182
  46. package/src/components/card/CardAction.astro +26 -26
  47. package/src/components/card/CardContent.astro +28 -28
  48. package/src/components/card/CardDescription.astro +28 -28
  49. package/src/components/card/CardFooter.astro +24 -24
  50. package/src/components/card/CardHeader.astro +30 -30
  51. package/src/components/card/CardMedia.astro +27 -27
  52. package/src/components/card/CardMediaActions.astro +21 -0
  53. package/src/components/card/CardMediaSelect.astro +21 -0
  54. package/src/components/card/CardOverlay.astro +32 -32
  55. package/src/components/card/CardTitle.astro +21 -21
  56. package/src/components/card/index.ts +12 -10
  57. package/src/components/carousel/CHANGELOG.md +5 -5
  58. package/src/components/carousel/Carousel.astro +106 -106
  59. package/src/components/carousel/CarouselSlide.astro +22 -22
  60. package/src/components/carousel/index.ts +3 -3
  61. package/src/components/checkbox/CHANGELOG.md +58 -58
  62. package/src/components/checkbox/Checkbox.astro +159 -159
  63. package/src/components/checkbox/index.ts +1 -1
  64. package/src/components/collapsible/CHANGELOG.md +5 -5
  65. package/src/components/collapsible/Collapsible.astro +202 -202
  66. package/src/components/collapsible/CollapsibleContent.astro +36 -36
  67. package/src/components/collapsible/CollapsibleTrigger.astro +34 -34
  68. package/src/components/collapsible/index.ts +4 -4
  69. package/src/components/combobox/CHANGELOG.md +27 -27
  70. package/src/components/combobox/Combobox.astro +365 -365
  71. package/src/components/combobox/ComboboxContent.astro +37 -37
  72. package/src/components/combobox/ComboboxEmpty.astro +18 -18
  73. package/src/components/combobox/ComboboxGroup.astro +19 -19
  74. package/src/components/combobox/ComboboxInput.astro +74 -74
  75. package/src/components/combobox/ComboboxItem.astro +39 -39
  76. package/src/components/combobox/ComboboxLabel.astro +18 -18
  77. package/src/components/combobox/ComboboxList.astro +21 -21
  78. package/src/components/combobox/ComboboxSeparator.astro +17 -17
  79. package/src/components/combobox/ComboboxTrigger.astro +30 -30
  80. package/src/components/combobox/ComboboxValue.astro +22 -22
  81. package/src/components/combobox/index.ts +11 -11
  82. package/src/components/date/CHANGELOG.md +18 -18
  83. package/src/components/date/Date.astro +137 -137
  84. package/src/components/date/index.ts +2 -2
  85. package/src/components/dialog/CHANGELOG.md +39 -39
  86. package/src/components/dialog/Dialog.astro +196 -196
  87. package/src/components/dialog/DialogClose.astro +23 -23
  88. package/src/components/dialog/DialogContent.astro +42 -42
  89. package/src/components/dialog/DialogDescription.astro +18 -18
  90. package/src/components/dialog/DialogFooter.astro +18 -18
  91. package/src/components/dialog/DialogHeader.astro +18 -18
  92. package/src/components/dialog/DialogOverlay.astro +19 -19
  93. package/src/components/dialog/DialogTitle.astro +18 -18
  94. package/src/components/dialog/DialogTrigger.astro +37 -37
  95. package/src/components/dialog/index.ts +9 -9
  96. package/src/components/dropdown-menu/CHANGELOG.md +194 -194
  97. package/src/components/dropdown-menu/DropdownMenu.astro +226 -226
  98. package/src/components/dropdown-menu/DropdownMenuCheckboxItem.astro +114 -114
  99. package/src/components/dropdown-menu/DropdownMenuContent.astro +42 -42
  100. package/src/components/dropdown-menu/DropdownMenuGroup.astro +19 -19
  101. package/src/components/dropdown-menu/DropdownMenuItem.astro +220 -220
  102. package/src/components/dropdown-menu/DropdownMenuItemContent.astro +79 -79
  103. package/src/components/dropdown-menu/DropdownMenuLabel.astro +20 -20
  104. package/src/components/dropdown-menu/DropdownMenuPortal.astro +13 -13
  105. package/src/components/dropdown-menu/DropdownMenuRadioGroup.astro +13 -13
  106. package/src/components/dropdown-menu/DropdownMenuRadioItem.astro +101 -101
  107. package/src/components/dropdown-menu/DropdownMenuSeparator.astro +18 -18
  108. package/src/components/dropdown-menu/DropdownMenuShortcut.astro +18 -18
  109. package/src/components/dropdown-menu/DropdownMenuTrigger.astro +49 -49
  110. package/src/components/dropdown-menu/dropdown-menu-item-variants.ts +24 -24
  111. package/src/components/dropdown-menu/index.ts +12 -12
  112. package/src/components/field/CHANGELOG.md +33 -33
  113. package/src/components/field/Field.astro +664 -664
  114. package/src/components/field/FieldContent.astro +20 -20
  115. package/src/components/field/FieldDescription.astro +22 -22
  116. package/src/components/field/FieldError.astro +51 -51
  117. package/src/components/field/FieldGroup.astro +20 -20
  118. package/src/components/field/FieldLabel.astro +22 -22
  119. package/src/components/field/FieldLegend.astro +23 -23
  120. package/src/components/field/FieldSeparator.astro +30 -30
  121. package/src/components/field/FieldSet.astro +20 -20
  122. package/src/components/field/FieldTitle.astro +20 -20
  123. package/src/components/field/index.ts +10 -10
  124. package/src/components/hover-card/CHANGELOG.md +20 -20
  125. package/src/components/hover-card/HoverCard.astro +235 -235
  126. package/src/components/hover-card/HoverCardContent.astro +54 -54
  127. package/src/components/hover-card/HoverCardTrigger.astro +38 -38
  128. package/src/components/hover-card/index.ts +3 -3
  129. package/src/components/input/CHANGELOG.md +44 -29
  130. package/src/components/input/Input.astro +130 -130
  131. package/src/components/input/InputOTP.astro +211 -0
  132. package/src/components/input/index.ts +2 -2
  133. package/src/components/input-group/CHANGELOG.md +49 -49
  134. package/src/components/input-group/InputGroup.astro +135 -135
  135. package/src/components/input-group/InputGroupAddon.astro +49 -49
  136. package/src/components/input-group/InputGroupButton.astro +58 -58
  137. package/src/components/input-group/InputGroupInput.astro +18 -18
  138. package/src/components/input-group/InputGroupText.astro +21 -21
  139. package/src/components/input-group/InputGroupTextarea.astro +17 -17
  140. package/src/components/input-group/controlClasses.ts +2 -2
  141. package/src/components/input-group/index.ts +6 -6
  142. package/src/components/item/CHANGELOG.md +27 -27
  143. package/src/components/item/Item.astro +122 -122
  144. package/src/components/item/ItemActions.astro +21 -21
  145. package/src/components/item/ItemContent.astro +25 -25
  146. package/src/components/item/ItemDescription.astro +25 -25
  147. package/src/components/item/ItemFooter.astro +24 -24
  148. package/src/components/item/ItemGroup.astro +24 -24
  149. package/src/components/item/ItemHeader.astro +24 -24
  150. package/src/components/item/ItemMedia.astro +47 -47
  151. package/src/components/item/ItemSeparator.astro +21 -21
  152. package/src/components/item/ItemTitle.astro +25 -25
  153. package/src/components/item/index.ts +10 -10
  154. package/src/components/kbd/CHANGELOG.md +5 -5
  155. package/src/components/kbd/Kbd.astro +145 -145
  156. package/src/components/kbd/KbdGroup.astro +55 -55
  157. package/src/components/kbd/index.ts +2 -2
  158. package/src/components/label/CHANGELOG.md +28 -28
  159. package/src/components/label/Label.astro +97 -97
  160. package/src/components/label/index.ts +2 -2
  161. package/src/components/link-group/CHANGELOG.md +75 -75
  162. package/src/components/link-group/LinkGroup.astro +67 -67
  163. package/src/components/link-group/LinkGroupItem.astro +32 -32
  164. package/src/components/link-group/LinkGroupList.astro +25 -25
  165. package/src/components/link-group/LinkGroupTitle.astro +22 -22
  166. package/src/components/link-group/index.ts +5 -5
  167. package/src/components/link-group/link-group-list-variants.ts +15 -15
  168. package/src/components/logo/CHANGELOG.md +17 -0
  169. package/src/components/logo/Logo.astro +90 -0
  170. package/src/components/logo/index.ts +3 -0
  171. package/src/components/logo/logo-paths.ts +57 -0
  172. package/src/components/marquee/CHANGELOG.md +5 -5
  173. package/src/components/marquee/Marquee.astro +119 -119
  174. package/src/components/marquee/index.ts +2 -2
  175. package/src/components/native-select/CHANGELOG.md +5 -5
  176. package/src/components/native-select/NativeSelect.astro +125 -125
  177. package/src/components/native-select/NativeSelectOptGroup.astro +14 -14
  178. package/src/components/native-select/NativeSelectOption.astro +9 -9
  179. package/src/components/native-select/index.ts +3 -3
  180. package/src/components/navigation-menu/CHANGELOG.md +63 -63
  181. package/src/components/navigation-menu/NavigationMenu.astro +414 -414
  182. package/src/components/navigation-menu/NavigationMenuContent.astro +37 -37
  183. package/src/components/navigation-menu/NavigationMenuIndicator.astro +24 -24
  184. package/src/components/navigation-menu/NavigationMenuItem.astro +22 -22
  185. package/src/components/navigation-menu/NavigationMenuLink.astro +18 -18
  186. package/src/components/navigation-menu/NavigationMenuList.astro +21 -21
  187. package/src/components/navigation-menu/NavigationMenuPositioner.astro +44 -44
  188. package/src/components/navigation-menu/NavigationMenuTrigger.astro +30 -30
  189. package/src/components/navigation-menu/NavigationMenuViewport.astro +19 -19
  190. package/src/components/navigation-menu/index.ts +10 -10
  191. package/src/components/organisms/lightning-sidebar-nav/CHANGELOG.md +50 -0
  192. package/src/components/organisms/lightning-sidebar-nav/LightningSidebarNav.astro +176 -0
  193. package/src/components/organisms/lightning-sidebar-nav/SidebarNav.astro +50 -0
  194. package/src/components/organisms/lightning-sidebar-nav/SidebarNavGroup.astro +74 -0
  195. package/src/components/organisms/lightning-sidebar-nav/SidebarNavItem.astro +94 -0
  196. package/src/components/organisms/lightning-sidebar-nav/SidebarNavProBadge.astro +26 -0
  197. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSection.astro +71 -0
  198. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSkeleton.astro +67 -0
  199. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSubItem.astro +69 -0
  200. package/src/components/organisms/lightning-sidebar-nav/SidebarNavUsage.astro +78 -0
  201. package/src/components/organisms/lightning-sidebar-nav/SidebarNavWorkspaceAvatar.astro +46 -0
  202. package/src/components/organisms/lightning-sidebar-nav/SidebarNavWorkspaceSwitcher.astro +130 -0
  203. package/src/components/organisms/lightning-sidebar-nav/icons.ts +46 -0
  204. package/src/components/organisms/lightning-sidebar-nav/index.ts +18 -0
  205. package/src/components/organisms/lightning-sidebar-nav/types.ts +77 -0
  206. package/src/components/popover/CHANGELOG.md +20 -20
  207. package/src/components/popover/Popover.astro +211 -211
  208. package/src/components/popover/PopoverClose.astro +18 -18
  209. package/src/components/popover/PopoverContent.astro +50 -50
  210. package/src/components/popover/PopoverDescription.astro +18 -18
  211. package/src/components/popover/PopoverHeader.astro +18 -18
  212. package/src/components/popover/PopoverTitle.astro +18 -18
  213. package/src/components/popover/PopoverTrigger.astro +35 -35
  214. package/src/components/popover/index.ts +7 -7
  215. package/src/components/radio-group/CHANGELOG.md +31 -31
  216. package/src/components/radio-group/RadioGroup.astro +81 -81
  217. package/src/components/radio-group/RadioGroupItem.astro +51 -51
  218. package/src/components/radio-group/index.ts +3 -3
  219. package/src/components/select/CHANGELOG.md +39 -39
  220. package/src/components/select/Select.astro +373 -373
  221. package/src/components/select/SelectContent.astro +91 -91
  222. package/src/components/select/SelectGroup.astro +19 -19
  223. package/src/components/select/SelectItem.astro +48 -48
  224. package/src/components/select/SelectLabel.astro +18 -18
  225. package/src/components/select/SelectSeparator.astro +17 -17
  226. package/src/components/select/SelectTrigger.astro +34 -34
  227. package/src/components/select/SelectValue.astro +22 -22
  228. package/src/components/select/index.ts +8 -8
  229. package/src/components/separator/CHANGELOG.md +5 -5
  230. package/src/components/separator/Separator.astro +60 -60
  231. package/src/components/separator/index.ts +2 -2
  232. package/src/components/skeleton/CHANGELOG.md +5 -5
  233. package/src/components/skeleton/Skeleton.astro +121 -121
  234. package/src/components/skeleton/index.ts +1 -1
  235. package/src/components/slider/CHANGELOG.md +5 -5
  236. package/src/components/slider/Slider.astro +198 -198
  237. package/src/components/slider/index.ts +1 -1
  238. package/src/components/spinner/CHANGELOG.md +18 -18
  239. package/src/components/spinner/Spinner.astro +135 -135
  240. package/src/components/spinner/index.ts +1 -1
  241. package/src/components/sticky-surface/CHANGELOG.md +5 -5
  242. package/src/components/sticky-surface/StickySurface.astro +152 -152
  243. package/src/components/sticky-surface/index.ts +2 -2
  244. package/src/components/switch/CHANGELOG.md +29 -29
  245. package/src/components/switch/Switch.astro +106 -106
  246. package/src/components/switch/index.ts +1 -1
  247. package/src/components/table/CHANGELOG.md +24 -24
  248. package/src/components/table/Table.astro +358 -251
  249. package/src/components/table/TableBody.astro +17 -18
  250. package/src/components/table/TableBulkToolbar.astro +37 -0
  251. package/src/components/table/TableCaption.astro +17 -17
  252. package/src/components/table/TableCell.astro +45 -21
  253. package/src/components/table/TableCellText.astro +17 -0
  254. package/src/components/table/TableColumnMenu.astro +50 -0
  255. package/src/components/table/TableEditableCell.astro +287 -0
  256. package/src/components/table/TableEmpty.astro +17 -0
  257. package/src/components/table/TableFolderCell.astro +38 -0
  258. package/src/components/table/TableFooter.astro +21 -21
  259. package/src/components/table/TableHead.astro +90 -21
  260. package/src/components/table/TableHeader.astro +17 -17
  261. package/src/components/table/TablePagination.astro +57 -0
  262. package/src/components/table/TableRow.astro +52 -21
  263. package/src/components/table/TableSelectAllBanner.astro +34 -0
  264. package/src/components/table/TableSelectCell.astro +50 -0
  265. package/src/components/table/TableSkeletonRow.astro +21 -0
  266. package/src/components/table/index.ts +19 -9
  267. package/src/components/table/table-cell-variants.ts +29 -0
  268. package/src/components/tabs/CHANGELOG.md +5 -5
  269. package/src/components/tabs/Tabs.astro +306 -306
  270. package/src/components/tabs/TabsContent.astro +47 -47
  271. package/src/components/tabs/TabsList.astro +69 -69
  272. package/src/components/tabs/TabsTrigger.astro +40 -40
  273. package/src/components/tabs/index.ts +6 -6
  274. package/src/components/textarea/CHANGELOG.md +22 -22
  275. package/src/components/textarea/Textarea.astro +58 -58
  276. package/src/components/textarea/index.ts +2 -2
  277. package/src/components/toggle/CHANGELOG.md +23 -23
  278. package/src/components/toggle/Toggle.astro +150 -150
  279. package/src/components/toggle/index.ts +1 -1
  280. package/src/components/toggle-group/CHANGELOG.md +18 -18
  281. package/src/components/toggle-group/ToggleGroup.astro +236 -236
  282. package/src/components/toggle-group/ToggleGroupItem.astro +48 -48
  283. package/src/components/toggle-group/index.ts +2 -2
  284. package/src/components/tooltip/CHANGELOG.md +22 -22
  285. package/src/components/tooltip/Tooltip.astro +357 -357
  286. package/src/components/tooltip/TooltipContent.astro +85 -85
  287. package/src/components/tooltip/TooltipTrigger.astro +34 -34
  288. package/src/components/tooltip/index.ts +3 -3
  289. package/src/lib/table-controller.ts +1090 -0
  290. package/src/lib/toggle-group-controller.ts +113 -113
  291. package/src/lib/toggle-shared.ts +27 -27
  292. package/src/lib/utils.ts +6 -6
  293. package/src/styles/globals.css +209 -177
@@ -1,46 +1,46 @@
1
- ---
2
- import { cn } from "@cl-light-ds/ui/lib/utils";
3
- import type { HTMLAttributes } from "astro/types";
4
-
5
- interface Props extends HTMLAttributes<"img"> {
6
- class?: string;
7
- src?: string;
8
- alt?: string;
9
- }
10
-
11
- const {
12
- class: className = "",
13
- src,
14
- alt = "",
15
- ...rest
16
- } = Astro.props as Props;
17
- ---
18
-
19
- {
20
- src ? (
21
- <img
22
- {...rest}
23
- data-slot="avatar-image"
24
- src={src}
25
- alt={alt}
26
- class={cn(
27
- "rounded-full",
28
- "relative z-10 aspect-square size-full object-cover",
29
- className,
30
- )}
31
- />
32
- ) : (
33
- <div
34
- {...rest}
35
- data-slot="avatar-image"
36
- class={cn(
37
- "rounded-full",
38
- "relative z-10 aspect-square size-full overflow-hidden",
39
- "[&_img]:size-full [&_img]:object-cover",
40
- className,
41
- )}
42
- >
43
- <slot />
44
- </div>
45
- )
46
- }
1
+ ---
2
+ import { cn } from "@cl-light-ds/ui/lib/utils";
3
+ import type { HTMLAttributes } from "astro/types";
4
+
5
+ interface Props extends HTMLAttributes<"img"> {
6
+ class?: string;
7
+ src?: string;
8
+ alt?: string;
9
+ }
10
+
11
+ const {
12
+ class: className = "",
13
+ src,
14
+ alt = "",
15
+ ...rest
16
+ } = Astro.props as Props;
17
+ ---
18
+
19
+ {
20
+ src ? (
21
+ <img
22
+ {...rest}
23
+ data-slot="avatar-image"
24
+ src={src}
25
+ alt={alt}
26
+ class={cn(
27
+ "rounded-full",
28
+ "relative z-10 aspect-square size-full object-cover",
29
+ className,
30
+ )}
31
+ />
32
+ ) : (
33
+ <div
34
+ {...rest}
35
+ data-slot="avatar-image"
36
+ class={cn(
37
+ "rounded-full",
38
+ "relative z-10 aspect-square size-full overflow-hidden",
39
+ "[&_img]:size-full [&_img]:object-cover",
40
+ className,
41
+ )}
42
+ >
43
+ <slot />
44
+ </div>
45
+ )
46
+ }
@@ -1,44 +1,44 @@
1
- # Changelog Avatar
2
-
3
- All notable changes to the `Avatar` component will be documented in this file.
4
-
5
-
6
- ## New props
7
-
8
- | Prop | Type | Default | Purpose |
9
- | :--- | :--- | :--- | :--- |
10
- | `variant` | `"image" &#124; "initials" &#124; "icon"` | `"image"` | Sets `data-variant`; gates the new inline icon rendering. Image/Initials still render via whichever child (`<AvatarImage>`/`<AvatarFallback>`) you slot in — this doesn't replace that. |
11
- | `icon` | `AstroComponent` (from `@lucide/astro`) | — | Icon to render when `variant="icon"`, same pattern as `Alert`'s icon prop. |
12
- | `status` | `"active" &#124; "inactive"` | `undefined` (no badge) | Renders an internal status dot — green for active/online, red for inactive/offline. |
13
-
14
- ## Styling
15
-
16
- - Migrated the root class string to `cva` (size × variant), matching the pattern `Alert.astro` already uses, instead of the old chained `data-[size=...]:` selectors.
17
- - Added a border to the circle at every size, bound to the `border-border` token: 1px (sm), 1.5px (default), 2px (lg) — previously there was no border at all.
18
- - `variant="icon"` adds `bg-primary-foreground` (white fill) since there's no child component supplying it.
19
-
20
- ## Markup
21
-
22
- - Added `data-variant` and `data-status` attributes alongside the existing `data-slot`/`data-size`.
23
- - Icon is rendered inline (centered, sized 14/16/20px per size) when `variant="icon"` — no new subcomponent file needed.
24
- - Status badge is now rendered internally via `<AvatarBadge status={status} />` when status is set, instead of requiring the consumer to manually slot `<AvatarBadge />`.
25
-
26
- ## Docs (JSDoc block)
27
-
28
- - `@figmaUrl` corrected — it was pointing at the old generic BejamasUI template file; now points at your ClickLearn Lightning node (`node-id=113-1145`).
29
- - `@description` updated to mention initials/icon/status.
30
- - Replaced the old "Badge" example with a "Variants" example (image/initials/icon) and a "Status" example (active/inactive).
31
- - `@preview` / `@usage` updated to use `status="active"` instead of a bare `<AvatarBadge />` child.
32
-
33
- ## Sibling files (part of the same alignment)
34
-
35
- - `AvatarBadge.astro` — added `status?: "active" | "inactive"` (default `"active"`, keeps old bare `<AvatarBadge />` usage looking the same); color now `bg-success`/`bg-destructive` by status; size now scales 6/10/12px per avatar size; swapped `ring-background` for an explicit `border-primary-foreground` to match Figma's literal token.
36
- - `AvatarFallback.astro` (the Initials variant) — recolored from `bg-muted`/`text-muted-foreground` to `bg-primary-foreground`/`text-foreground`/`font-semibold`; text size now scales with avatar size.
37
- - `Avatar.stories.ts` / `AvatarStory.astro` — added Initials, Icon, StatusActive, StatusInactive stories.
38
- - `apps/web/.../_sections/avatar.astro` — props table updated with variant/icon/status; added "Variants" and "Status" preview sections.
39
-
40
- ## Not changed
41
-
42
- - `AvatarImage.astro`, `AvatarGroup.astro`, `AvatarGroupCount.astro` — diameters were already correct, and group-stacking behavior was verified visually to still look right after the border change.
43
-
44
- ## Unreleased
1
+ # Changelog Avatar
2
+
3
+ All notable changes to the `Avatar` component will be documented in this file.
4
+
5
+
6
+ ## New props
7
+
8
+ | Prop | Type | Default | Purpose |
9
+ | :--- | :--- | :--- | :--- |
10
+ | `variant` | `"image" &#124; "initials" &#124; "icon"` | `"image"` | Sets `data-variant`; gates the new inline icon rendering. Image/Initials still render via whichever child (`<AvatarImage>`/`<AvatarFallback>`) you slot in — this doesn't replace that. |
11
+ | `icon` | `AstroComponent` (from `@lucide/astro`) | — | Icon to render when `variant="icon"`, same pattern as `Alert`'s icon prop. |
12
+ | `status` | `"active" &#124; "inactive"` | `undefined` (no badge) | Renders an internal status dot — green for active/online, red for inactive/offline. |
13
+
14
+ ## Styling
15
+
16
+ - Migrated the root class string to `cva` (size × variant), matching the pattern `Alert.astro` already uses, instead of the old chained `data-[size=...]:` selectors.
17
+ - Added a border to the circle at every size, bound to the `border-border` token: 1px (sm), 1.5px (default), 2px (lg) — previously there was no border at all.
18
+ - `variant="icon"` adds `bg-primary-foreground` (white fill) since there's no child component supplying it.
19
+
20
+ ## Markup
21
+
22
+ - Added `data-variant` and `data-status` attributes alongside the existing `data-slot`/`data-size`.
23
+ - Icon is rendered inline (centered, sized 14/16/20px per size) when `variant="icon"` — no new subcomponent file needed.
24
+ - Status badge is now rendered internally via `<AvatarBadge status={status} />` when status is set, instead of requiring the consumer to manually slot `<AvatarBadge />`.
25
+
26
+ ## Docs (JSDoc block)
27
+
28
+ - `@figmaUrl` corrected — it was pointing at the old generic BejamasUI template file; now points at your ClickLearn Lightning node (`node-id=113-1145`).
29
+ - `@description` updated to mention initials/icon/status.
30
+ - Replaced the old "Badge" example with a "Variants" example (image/initials/icon) and a "Status" example (active/inactive).
31
+ - `@preview` / `@usage` updated to use `status="active"` instead of a bare `<AvatarBadge />` child.
32
+
33
+ ## Sibling files (part of the same alignment)
34
+
35
+ - `AvatarBadge.astro` — added `status?: "active" | "inactive"` (default `"active"`, keeps old bare `<AvatarBadge />` usage looking the same); color now `bg-success`/`bg-destructive` by status; size now scales 6/10/12px per avatar size; swapped `ring-background` for an explicit `border-primary-foreground` to match Figma's literal token.
36
+ - `AvatarFallback.astro` (the Initials variant) — recolored from `bg-muted`/`text-muted-foreground` to `bg-primary-foreground`/`text-foreground`/`font-semibold`; text size now scales with avatar size.
37
+ - `Avatar.stories.ts` / `AvatarStory.astro` — added Initials, Icon, StatusActive, StatusInactive stories.
38
+ - `apps/web/.../_sections/avatar.astro` — props table updated with variant/icon/status; added "Variants" and "Status" preview sections.
39
+
40
+ ## Not changed
41
+
42
+ - `AvatarImage.astro`, `AvatarGroup.astro`, `AvatarGroupCount.astro` — diameters were already correct, and group-stacking behavior was verified visually to still look right after the border change.
43
+
44
+ ## Unreleased
@@ -1,6 +1,6 @@
1
- export { default as Avatar } from "./Avatar.astro";
2
- export { default as AvatarImage } from "./AvatarImage.astro";
3
- export { default as AvatarFallback } from "./AvatarFallback.astro";
4
- export { default as AvatarBadge } from "./AvatarBadge.astro";
5
- export { default as AvatarGroup } from "./AvatarGroup.astro";
6
- export { default as AvatarGroupCount } from "./AvatarGroupCount.astro";
1
+ export { default as Avatar } from "./Avatar.astro";
2
+ export { default as AvatarImage } from "./AvatarImage.astro";
3
+ export { default as AvatarFallback } from "./AvatarFallback.astro";
4
+ export { default as AvatarBadge } from "./AvatarBadge.astro";
5
+ export { default as AvatarGroup } from "./AvatarGroup.astro";
6
+ export { default as AvatarGroupCount } from "./AvatarGroupCount.astro";
@@ -1,167 +1,167 @@
1
- ---
2
- /**
3
- * @component Badge
4
- * @description A small label for status, categories, or counts.
5
- * @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=80-1462
6
- * @preview
7
- *
8
- * <div class="flex flex-col items-center gap-3">
9
- * <div class="flex w-full flex-wrap items-center gap-3">
10
- * <Badge>Badge</Badge>
11
- * <Badge variant="secondary">Secondary</Badge>
12
- * <Badge variant="outline">Outline</Badge>
13
- * <Badge variant="destructive">Destructive</Badge>
14
- * <Badge variant="success">Success</Badge>
15
- * <Badge variant="warning">Warning</Badge>
16
- * <Badge variant="accent">Accent</Badge>
17
- * <Badge variant="ghost">Ghost</Badge>
18
- * </div>
19
- * <div class="flex w-full flex-wrap items-center gap-3">
20
- * <Badge shape="pill">Pill</Badge>
21
- * <Badge shape="rounded">Rounded</Badge>
22
- * <Badge shape="sharp">Sharp</Badge>
23
- * </div>
24
- * <div class="flex w-full flex-wrap items-center gap-3">
25
- * <Badge leadIcon>
26
- * <BadgeCheckIcon slot="lead-icon" />
27
- * Verified
28
- * </Badge>
29
- * <Badge variant="secondary" tailIcon>
30
- * Dismissible
31
- * <XIcon slot="tail-icon" />
32
- * </Badge>
33
- * <Badge size="sm">8</Badge>
34
- * </div>
35
- * </div>
36
- *
37
- * @usage
38
- *
39
- * ```astro nocollapse
40
- * ---
41
- * import { Badge } from '@bejamas/ui/components/badge';
42
- * ---
43
- *
44
- * <Badge>Badge</Badge>
45
- * <Badge variant="secondary">Secondary</Badge>
46
- * ```
47
- */
48
-
49
- import type { HTMLTag } from "astro/types";
50
- import { cva } from "class-variance-authority";
51
- import { cn } from "@cl-light-ds/ui/lib/utils";
52
-
53
- type BadgeVariant =
54
- | "default"
55
- | "secondary"
56
- | "destructive"
57
- | "outline"
58
- | "success"
59
- | "warning"
60
- | "accent"
61
- | "ghost";
62
- type BadgeShape = "sharp" | "pill" | "rounded";
63
- type BadgeSize = "default" | "sm";
64
-
65
- interface Props {
66
- as?: HTMLTag;
67
- variant?: BadgeVariant;
68
- shape?: BadgeShape;
69
- size?: BadgeSize;
70
- leadIcon?: boolean;
71
- tailIcon?: boolean;
72
- class?: string;
73
- }
74
-
75
- const hasLeadIconSlot = Astro.slots.has("lead-icon");
76
- const hasTailIconSlot = Astro.slots.has("tail-icon");
77
-
78
- const {
79
- as = "span",
80
- variant = "default",
81
- shape = "pill",
82
- size = "default",
83
- leadIcon = hasLeadIconSlot,
84
- tailIcon = hasTailIconSlot,
85
- class: className = "",
86
- ...rest
87
- } = Astro.props as Props;
88
-
89
- const badgeVariants = cva(
90
- [
91
- "inline-flex w-fit shrink-0 items-center justify-center gap-0.5 overflow-hidden border whitespace-nowrap transition-[color,box-shadow]",
92
- "font-semibold [&_svg]:pointer-events-none [&_svg]:shrink-0",
93
- "outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",
94
- "disabled:pointer-events-none disabled:border-transparent disabled:bg-muted disabled:text-muted-foreground",
95
- ],
96
- {
97
- variants: {
98
- variant: {
99
- default:
100
- "border-primary bg-primary text-primary-foreground [a]:hover:bg-primary/80 [a]:hover:border-primary/80 [button]:hover:bg-primary/80 [button]:hover:border-primary/80",
101
- secondary:
102
- "border-border bg-secondary text-secondary-foreground [a]:hover:bg-background-button-hover [button]:hover:bg-background-button-hover",
103
- outline:
104
- "border-border bg-transparent text-foreground [a]:hover:bg-background-hover [button]:hover:bg-background-hover",
105
- destructive:
106
- "border-destructive bg-destructive text-destructive-foreground [a]:hover:bg-destructive-hover [button]:hover:bg-destructive-hover",
107
- success:
108
- "border-badge-success bg-badge-success text-badge-success-foreground [a]:hover:bg-badge-success/90 [a]:hover:border-badge-success/90 [button]:hover:bg-badge-success/90 [button]:hover:border-badge-success/90",
109
- warning:
110
- "border-badge-warning bg-badge-warning text-badge-warning-foreground [a]:hover:bg-badge-warning/80 [button]:hover:bg-badge-warning/80",
111
- accent:
112
- "border-badge-accent bg-badge-accent text-badge-accent-foreground [a]:hover:bg-badge-accent-hover [a]:hover:border-badge-accent-hover [button]:hover:bg-badge-accent-hover [button]:hover:border-badge-accent-hover",
113
- ghost:
114
- "border-transparent bg-card text-foreground [a]:hover:bg-background-hover [button]:hover:bg-background-hover",
115
- },
116
- shape: {
117
- sharp: "rounded-xs",
118
- rounded: "rounded-md",
119
- pill: "rounded-full",
120
- },
121
- size: {
122
- default: "h-6 px-1.5 py-0.5 text-sm",
123
- sm: "h-5 px-1 py-0.5 text-xs",
124
- },
125
- },
126
- defaultVariants: {
127
- variant: "default",
128
- shape: "pill",
129
- size: "default",
130
- },
131
- },
132
- );
133
-
134
- const iconVariants = cva("[&>svg]:size-full", {
135
- variants: {
136
- size: {
137
- default: "size-3.5",
138
- sm: "size-3",
139
- },
140
- },
141
- defaultVariants: {
142
- size: "default",
143
- },
144
- });
145
-
146
- const Tag = as;
147
- const classes = cn(badgeVariants({ variant, shape, size }), className);
148
- const iconClass = iconVariants({ size });
149
- ---
150
-
151
- <Tag data-slot="badge" data-variant={variant} data-shape={shape} data-size={size} class={classes} {...rest}>
152
- {
153
- leadIcon && (
154
- <span data-slot="badge-lead-icon" class={iconClass}>
155
- <slot name="lead-icon" />
156
- </span>
157
- )
158
- }
159
- <slot />
160
- {
161
- tailIcon && (
162
- <span data-slot="badge-tail-icon" class={iconClass}>
163
- <slot name="tail-icon" />
164
- </span>
165
- )
166
- }
167
- </Tag>
1
+ ---
2
+ /**
3
+ * @component Badge
4
+ * @description A small label for status, categories, or counts.
5
+ * @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=80-1462
6
+ * @preview
7
+ *
8
+ * <div class="flex flex-col items-center gap-3">
9
+ * <div class="flex w-full flex-wrap items-center gap-3">
10
+ * <Badge>Badge</Badge>
11
+ * <Badge variant="secondary">Secondary</Badge>
12
+ * <Badge variant="outline">Outline</Badge>
13
+ * <Badge variant="destructive">Destructive</Badge>
14
+ * <Badge variant="success">Success</Badge>
15
+ * <Badge variant="warning">Warning</Badge>
16
+ * <Badge variant="accent">Accent</Badge>
17
+ * <Badge variant="ghost">Ghost</Badge>
18
+ * </div>
19
+ * <div class="flex w-full flex-wrap items-center gap-3">
20
+ * <Badge shape="pill">Pill</Badge>
21
+ * <Badge shape="rounded">Rounded</Badge>
22
+ * <Badge shape="sharp">Sharp</Badge>
23
+ * </div>
24
+ * <div class="flex w-full flex-wrap items-center gap-3">
25
+ * <Badge leadIcon>
26
+ * <BadgeCheckIcon slot="lead-icon" />
27
+ * Verified
28
+ * </Badge>
29
+ * <Badge variant="secondary" tailIcon>
30
+ * Dismissible
31
+ * <XIcon slot="tail-icon" />
32
+ * </Badge>
33
+ * <Badge size="sm">8</Badge>
34
+ * </div>
35
+ * </div>
36
+ *
37
+ * @usage
38
+ *
39
+ * ```astro nocollapse
40
+ * ---
41
+ * import { Badge } from '@bejamas/ui/components/badge';
42
+ * ---
43
+ *
44
+ * <Badge>Badge</Badge>
45
+ * <Badge variant="secondary">Secondary</Badge>
46
+ * ```
47
+ */
48
+
49
+ import type { HTMLTag } from "astro/types";
50
+ import { cva } from "class-variance-authority";
51
+ import { cn } from "@cl-light-ds/ui/lib/utils";
52
+
53
+ type BadgeVariant =
54
+ | "default"
55
+ | "secondary"
56
+ | "destructive"
57
+ | "outline"
58
+ | "success"
59
+ | "warning"
60
+ | "accent"
61
+ | "ghost";
62
+ type BadgeShape = "sharp" | "pill" | "rounded";
63
+ type BadgeSize = "default" | "sm";
64
+
65
+ interface Props {
66
+ as?: HTMLTag;
67
+ variant?: BadgeVariant;
68
+ shape?: BadgeShape;
69
+ size?: BadgeSize;
70
+ leadIcon?: boolean;
71
+ tailIcon?: boolean;
72
+ class?: string;
73
+ }
74
+
75
+ const hasLeadIconSlot = Astro.slots.has("lead-icon");
76
+ const hasTailIconSlot = Astro.slots.has("tail-icon");
77
+
78
+ const {
79
+ as = "span",
80
+ variant = "default",
81
+ shape = "pill",
82
+ size = "default",
83
+ leadIcon = hasLeadIconSlot,
84
+ tailIcon = hasTailIconSlot,
85
+ class: className = "",
86
+ ...rest
87
+ } = Astro.props as Props;
88
+
89
+ const badgeVariants = cva(
90
+ [
91
+ "inline-flex w-fit shrink-0 items-center justify-center gap-0.5 overflow-hidden border whitespace-nowrap transition-[color,box-shadow]",
92
+ "font-semibold [&_svg]:pointer-events-none [&_svg]:shrink-0",
93
+ "outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",
94
+ "disabled:pointer-events-none disabled:border-transparent disabled:bg-muted disabled:text-muted-foreground",
95
+ ],
96
+ {
97
+ variants: {
98
+ variant: {
99
+ default:
100
+ "border-primary bg-primary text-primary-foreground [a]:hover:bg-primary/80 [a]:hover:border-primary/80 [button]:hover:bg-primary/80 [button]:hover:border-primary/80",
101
+ secondary:
102
+ "border-border bg-secondary text-secondary-foreground [a]:hover:bg-background-button-hover [button]:hover:bg-background-button-hover",
103
+ outline:
104
+ "border-border bg-transparent text-foreground [a]:hover:bg-background-hover [button]:hover:bg-background-hover",
105
+ destructive:
106
+ "border-destructive bg-destructive text-destructive-foreground [a]:hover:bg-destructive-hover [button]:hover:bg-destructive-hover",
107
+ success:
108
+ "border-badge-success bg-badge-success text-badge-success-foreground [a]:hover:bg-badge-success/90 [a]:hover:border-badge-success/90 [button]:hover:bg-badge-success/90 [button]:hover:border-badge-success/90",
109
+ warning:
110
+ "border-badge-warning bg-badge-warning text-badge-warning-foreground [a]:hover:bg-badge-warning/80 [button]:hover:bg-badge-warning/80",
111
+ accent:
112
+ "border-badge-accent bg-badge-accent text-badge-accent-foreground [a]:hover:bg-badge-accent-hover [a]:hover:border-badge-accent-hover [button]:hover:bg-badge-accent-hover [button]:hover:border-badge-accent-hover",
113
+ ghost:
114
+ "border-transparent bg-card text-foreground [a]:hover:bg-background-hover [button]:hover:bg-background-hover",
115
+ },
116
+ shape: {
117
+ sharp: "rounded-xs",
118
+ rounded: "rounded-md",
119
+ pill: "rounded-full",
120
+ },
121
+ size: {
122
+ default: "h-6 px-1.5 py-0.5 text-sm",
123
+ sm: "h-5 px-1 py-0.5 text-xs",
124
+ },
125
+ },
126
+ defaultVariants: {
127
+ variant: "default",
128
+ shape: "pill",
129
+ size: "default",
130
+ },
131
+ },
132
+ );
133
+
134
+ const iconVariants = cva("[&>svg]:size-full", {
135
+ variants: {
136
+ size: {
137
+ default: "size-3.5",
138
+ sm: "size-3",
139
+ },
140
+ },
141
+ defaultVariants: {
142
+ size: "default",
143
+ },
144
+ });
145
+
146
+ const Tag = as;
147
+ const classes = cn(badgeVariants({ variant, shape, size }), className);
148
+ const iconClass = iconVariants({ size });
149
+ ---
150
+
151
+ <Tag data-slot="badge" data-variant={variant} data-shape={shape} data-size={size} class={classes} {...rest}>
152
+ {
153
+ leadIcon && (
154
+ <span data-slot="badge-lead-icon" class={iconClass}>
155
+ <slot name="lead-icon" />
156
+ </span>
157
+ )
158
+ }
159
+ <slot />
160
+ {
161
+ tailIcon && (
162
+ <span data-slot="badge-tail-icon" class={iconClass}>
163
+ <slot name="tail-icon" />
164
+ </span>
165
+ )
166
+ }
167
+ </Tag>
@@ -1,49 +1,49 @@
1
- # Changelog for Badge.astro
2
-
3
- ## Variants
4
-
5
- - Added 4 new variants: `success`, `warning`, `accent`, and `ghost` (previously only `default`, `secondary`, `destructive`, and `outline`).
6
- - **Destructive restyled:** Now uses a solid red background with white text (previously a soft/light red-on-red-tint style).
7
- - **Ghost:** Matches its name by using `bg-card` with no border, seamlessly blending into the surface.
8
-
9
- ## Shapes
10
-
11
- - Renamed `shape="default"` to `shape="sharp"` (breaking rename, approved).
12
- - Added `shape="rounded"` (6px radius).
13
- - Default shape changed from `"default"` to `"pill"`.
14
-
15
- ## Sizing & Spacing
16
-
17
- - Fixed a padding bug where both sizes shared the same horizontal padding. Sizes are now distinctly mapped per Figma: `sm` uses `px-1`, and `default` uses `px-1.5`.
18
- - Tightened the icon/label gap from `gap-1` (4px) to `gap-0.5` (2px).
19
-
20
- ## New Props
21
-
22
- - `leadIcon` / `tailIcon` (`boolean`): Renders a lead-icon / tail-icon named slot before/after the label. This is auto-detected from slot presence if not explicitly passed (matching the pattern used for `Alert`'s `hasActions`).
23
- - Icon sizing now dynamically scales with the badge size (12px for small / 14px for default).
24
-
25
- ## States
26
-
27
- - **Focus:** Added `focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3` (replacing dead code where the old `has-data-[icon=...]` selectors never matched).
28
- - **Disabled:** Added `disabled:bg-muted disabled:text-muted-foreground disabled:border-transparent`.
29
- - **Hover:** Added in a follow-up pass to align with new Figma designs.
30
- - Every variant now has its own hover fill, which fires on both `as="a"` and `as="button"` elements. Plain `<span>` badges remain static.
31
- - Fixed a selector bug (`[a]:hover:` is confirmed working) and removed an incorrect text-color hover change on the outline variant.
32
-
33
- ## Tokens (`globals.css`)
34
-
35
- New CSS variables were added. None of these conflict with or touch the shared `--accent` / `--success` tokens used elsewhere in the app:
36
- - **Solid variant colors:** `--badge-success`, `--badge-warning`, `--badge-accent` (plus their respective foregrounds).
37
- - **Hover-only colors:** `--background-button-hover`, `--destructive-hover`, `--badge-accent-hover` (used for hover states that require specific colors rather than simple opacity fades of existing tokens).
38
-
39
- ## Storybook & Docs (`_sections/badge.astro`)
40
-
41
- - Rebuilt the prop table to include the new variants, shape values, and `leadIcon` / `tailIcon` rows.
42
- - Added new preview blocks: **Shapes**, **Sizes**, and **With icons**.
43
- - Added an **Interactive states** block. All variants are rendered `as="button"` alongside a disabled example, so hover, focus, and disabled states can be previewed live rather than just described.
44
-
45
- ## Not Changed
46
-
47
- - Disabled and Focus states were already correct from the initial pass. They were confirmed against the latest Figma updates and left as-is.
48
-
49
- ## Unreleased
1
+ # Changelog for Badge.astro
2
+
3
+ ## Variants
4
+
5
+ - Added 4 new variants: `success`, `warning`, `accent`, and `ghost` (previously only `default`, `secondary`, `destructive`, and `outline`).
6
+ - **Destructive restyled:** Now uses a solid red background with white text (previously a soft/light red-on-red-tint style).
7
+ - **Ghost:** Matches its name by using `bg-card` with no border, seamlessly blending into the surface.
8
+
9
+ ## Shapes
10
+
11
+ - Renamed `shape="default"` to `shape="sharp"` (breaking rename, approved).
12
+ - Added `shape="rounded"` (6px radius).
13
+ - Default shape changed from `"default"` to `"pill"`.
14
+
15
+ ## Sizing & Spacing
16
+
17
+ - Fixed a padding bug where both sizes shared the same horizontal padding. Sizes are now distinctly mapped per Figma: `sm` uses `px-1`, and `default` uses `px-1.5`.
18
+ - Tightened the icon/label gap from `gap-1` (4px) to `gap-0.5` (2px).
19
+
20
+ ## New Props
21
+
22
+ - `leadIcon` / `tailIcon` (`boolean`): Renders a lead-icon / tail-icon named slot before/after the label. This is auto-detected from slot presence if not explicitly passed (matching the pattern used for `Alert`'s `hasActions`).
23
+ - Icon sizing now dynamically scales with the badge size (12px for small / 14px for default).
24
+
25
+ ## States
26
+
27
+ - **Focus:** Added `focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3` (replacing dead code where the old `has-data-[icon=...]` selectors never matched).
28
+ - **Disabled:** Added `disabled:bg-muted disabled:text-muted-foreground disabled:border-transparent`.
29
+ - **Hover:** Added in a follow-up pass to align with new Figma designs.
30
+ - Every variant now has its own hover fill, which fires on both `as="a"` and `as="button"` elements. Plain `<span>` badges remain static.
31
+ - Fixed a selector bug (`[a]:hover:` is confirmed working) and removed an incorrect text-color hover change on the outline variant.
32
+
33
+ ## Tokens (`globals.css`)
34
+
35
+ New CSS variables were added. None of these conflict with or touch the shared `--accent` / `--success` tokens used elsewhere in the app:
36
+ - **Solid variant colors:** `--badge-success`, `--badge-warning`, `--badge-accent` (plus their respective foregrounds).
37
+ - **Hover-only colors:** `--background-button-hover`, `--destructive-hover`, `--badge-accent-hover` (used for hover states that require specific colors rather than simple opacity fades of existing tokens).
38
+
39
+ ## Storybook & Docs (`_sections/badge.astro`)
40
+
41
+ - Rebuilt the prop table to include the new variants, shape values, and `leadIcon` / `tailIcon` rows.
42
+ - Added new preview blocks: **Shapes**, **Sizes**, and **With icons**.
43
+ - Added an **Interactive states** block. All variants are rendered `as="button"` alongside a disabled example, so hover, focus, and disabled states can be previewed live rather than just described.
44
+
45
+ ## Not Changed
46
+
47
+ - Disabled and Focus states were already correct from the initial pass. They were confirmed against the latest Figma updates and left as-is.
48
+
49
+ ## Unreleased
@@ -1,2 +1,2 @@
1
- export { default as Badge } from "./Badge.astro";
2
-
1
+ export { default as Badge } from "./Badge.astro";
2
+