@cl-light-ds/ui 0.2.0 → 0.3.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 (283) hide show
  1. package/README.md +45 -45
  2. package/package.json +1 -1
  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/card/CHANGELOG.md +162 -119
  40. package/src/components/card/Card.astro +197 -182
  41. package/src/components/card/CardAction.astro +26 -26
  42. package/src/components/card/CardContent.astro +28 -28
  43. package/src/components/card/CardDescription.astro +28 -28
  44. package/src/components/card/CardFooter.astro +24 -24
  45. package/src/components/card/CardHeader.astro +30 -30
  46. package/src/components/card/CardMedia.astro +27 -27
  47. package/src/components/card/CardMediaActions.astro +21 -0
  48. package/src/components/card/CardMediaSelect.astro +21 -0
  49. package/src/components/card/CardOverlay.astro +32 -32
  50. package/src/components/card/CardTitle.astro +21 -21
  51. package/src/components/card/index.ts +12 -10
  52. package/src/components/carousel/CHANGELOG.md +5 -5
  53. package/src/components/carousel/Carousel.astro +106 -106
  54. package/src/components/carousel/CarouselSlide.astro +22 -22
  55. package/src/components/carousel/index.ts +3 -3
  56. package/src/components/checkbox/CHANGELOG.md +58 -58
  57. package/src/components/checkbox/Checkbox.astro +159 -159
  58. package/src/components/checkbox/index.ts +1 -1
  59. package/src/components/collapsible/CHANGELOG.md +5 -5
  60. package/src/components/collapsible/Collapsible.astro +202 -202
  61. package/src/components/collapsible/CollapsibleContent.astro +36 -36
  62. package/src/components/collapsible/CollapsibleTrigger.astro +34 -34
  63. package/src/components/collapsible/index.ts +4 -4
  64. package/src/components/combobox/CHANGELOG.md +27 -27
  65. package/src/components/combobox/Combobox.astro +365 -365
  66. package/src/components/combobox/ComboboxContent.astro +37 -37
  67. package/src/components/combobox/ComboboxEmpty.astro +18 -18
  68. package/src/components/combobox/ComboboxGroup.astro +19 -19
  69. package/src/components/combobox/ComboboxInput.astro +74 -74
  70. package/src/components/combobox/ComboboxItem.astro +39 -39
  71. package/src/components/combobox/ComboboxLabel.astro +18 -18
  72. package/src/components/combobox/ComboboxList.astro +21 -21
  73. package/src/components/combobox/ComboboxSeparator.astro +17 -17
  74. package/src/components/combobox/ComboboxTrigger.astro +30 -30
  75. package/src/components/combobox/ComboboxValue.astro +22 -22
  76. package/src/components/combobox/index.ts +11 -11
  77. package/src/components/date/CHANGELOG.md +18 -18
  78. package/src/components/date/Date.astro +137 -137
  79. package/src/components/date/index.ts +2 -2
  80. package/src/components/dialog/CHANGELOG.md +39 -39
  81. package/src/components/dialog/Dialog.astro +196 -196
  82. package/src/components/dialog/DialogClose.astro +23 -23
  83. package/src/components/dialog/DialogContent.astro +42 -42
  84. package/src/components/dialog/DialogDescription.astro +18 -18
  85. package/src/components/dialog/DialogFooter.astro +18 -18
  86. package/src/components/dialog/DialogHeader.astro +18 -18
  87. package/src/components/dialog/DialogOverlay.astro +19 -19
  88. package/src/components/dialog/DialogTitle.astro +18 -18
  89. package/src/components/dialog/DialogTrigger.astro +37 -37
  90. package/src/components/dialog/index.ts +9 -9
  91. package/src/components/dropdown-menu/CHANGELOG.md +194 -194
  92. package/src/components/dropdown-menu/DropdownMenu.astro +226 -226
  93. package/src/components/dropdown-menu/DropdownMenuCheckboxItem.astro +114 -114
  94. package/src/components/dropdown-menu/DropdownMenuContent.astro +42 -42
  95. package/src/components/dropdown-menu/DropdownMenuGroup.astro +19 -19
  96. package/src/components/dropdown-menu/DropdownMenuItem.astro +220 -220
  97. package/src/components/dropdown-menu/DropdownMenuItemContent.astro +79 -79
  98. package/src/components/dropdown-menu/DropdownMenuLabel.astro +20 -20
  99. package/src/components/dropdown-menu/DropdownMenuPortal.astro +13 -13
  100. package/src/components/dropdown-menu/DropdownMenuRadioGroup.astro +13 -13
  101. package/src/components/dropdown-menu/DropdownMenuRadioItem.astro +101 -101
  102. package/src/components/dropdown-menu/DropdownMenuSeparator.astro +18 -18
  103. package/src/components/dropdown-menu/DropdownMenuShortcut.astro +18 -18
  104. package/src/components/dropdown-menu/DropdownMenuTrigger.astro +49 -49
  105. package/src/components/dropdown-menu/dropdown-menu-item-variants.ts +24 -24
  106. package/src/components/dropdown-menu/index.ts +12 -12
  107. package/src/components/field/CHANGELOG.md +33 -33
  108. package/src/components/field/Field.astro +664 -664
  109. package/src/components/field/FieldContent.astro +20 -20
  110. package/src/components/field/FieldDescription.astro +22 -22
  111. package/src/components/field/FieldError.astro +51 -51
  112. package/src/components/field/FieldGroup.astro +20 -20
  113. package/src/components/field/FieldLabel.astro +22 -22
  114. package/src/components/field/FieldLegend.astro +23 -23
  115. package/src/components/field/FieldSeparator.astro +30 -30
  116. package/src/components/field/FieldSet.astro +20 -20
  117. package/src/components/field/FieldTitle.astro +20 -20
  118. package/src/components/field/index.ts +10 -10
  119. package/src/components/hover-card/CHANGELOG.md +20 -20
  120. package/src/components/hover-card/HoverCard.astro +235 -235
  121. package/src/components/hover-card/HoverCardContent.astro +54 -54
  122. package/src/components/hover-card/HoverCardTrigger.astro +38 -38
  123. package/src/components/hover-card/index.ts +3 -3
  124. package/src/components/input/CHANGELOG.md +29 -29
  125. package/src/components/input/Input.astro +130 -130
  126. package/src/components/input/index.ts +2 -2
  127. package/src/components/input-group/CHANGELOG.md +49 -49
  128. package/src/components/input-group/InputGroup.astro +135 -135
  129. package/src/components/input-group/InputGroupAddon.astro +49 -49
  130. package/src/components/input-group/InputGroupButton.astro +58 -58
  131. package/src/components/input-group/InputGroupInput.astro +18 -18
  132. package/src/components/input-group/InputGroupText.astro +21 -21
  133. package/src/components/input-group/InputGroupTextarea.astro +17 -17
  134. package/src/components/input-group/controlClasses.ts +2 -2
  135. package/src/components/input-group/index.ts +6 -6
  136. package/src/components/item/CHANGELOG.md +27 -27
  137. package/src/components/item/Item.astro +122 -122
  138. package/src/components/item/ItemActions.astro +21 -21
  139. package/src/components/item/ItemContent.astro +25 -25
  140. package/src/components/item/ItemDescription.astro +25 -25
  141. package/src/components/item/ItemFooter.astro +24 -24
  142. package/src/components/item/ItemGroup.astro +24 -24
  143. package/src/components/item/ItemHeader.astro +24 -24
  144. package/src/components/item/ItemMedia.astro +47 -47
  145. package/src/components/item/ItemSeparator.astro +21 -21
  146. package/src/components/item/ItemTitle.astro +25 -25
  147. package/src/components/item/index.ts +10 -10
  148. package/src/components/kbd/CHANGELOG.md +5 -5
  149. package/src/components/kbd/Kbd.astro +145 -145
  150. package/src/components/kbd/KbdGroup.astro +55 -55
  151. package/src/components/kbd/index.ts +2 -2
  152. package/src/components/label/CHANGELOG.md +28 -28
  153. package/src/components/label/Label.astro +97 -97
  154. package/src/components/label/index.ts +2 -2
  155. package/src/components/link-group/CHANGELOG.md +75 -75
  156. package/src/components/link-group/LinkGroup.astro +67 -67
  157. package/src/components/link-group/LinkGroupItem.astro +32 -32
  158. package/src/components/link-group/LinkGroupList.astro +25 -25
  159. package/src/components/link-group/LinkGroupTitle.astro +22 -22
  160. package/src/components/link-group/index.ts +5 -5
  161. package/src/components/link-group/link-group-list-variants.ts +15 -15
  162. package/src/components/marquee/CHANGELOG.md +5 -5
  163. package/src/components/marquee/Marquee.astro +119 -119
  164. package/src/components/marquee/index.ts +2 -2
  165. package/src/components/native-select/CHANGELOG.md +5 -5
  166. package/src/components/native-select/NativeSelect.astro +125 -125
  167. package/src/components/native-select/NativeSelectOptGroup.astro +14 -14
  168. package/src/components/native-select/NativeSelectOption.astro +9 -9
  169. package/src/components/native-select/index.ts +3 -3
  170. package/src/components/navigation-menu/CHANGELOG.md +63 -63
  171. package/src/components/navigation-menu/NavigationMenu.astro +414 -414
  172. package/src/components/navigation-menu/NavigationMenuContent.astro +37 -37
  173. package/src/components/navigation-menu/NavigationMenuIndicator.astro +24 -24
  174. package/src/components/navigation-menu/NavigationMenuItem.astro +22 -22
  175. package/src/components/navigation-menu/NavigationMenuLink.astro +18 -18
  176. package/src/components/navigation-menu/NavigationMenuList.astro +21 -21
  177. package/src/components/navigation-menu/NavigationMenuPositioner.astro +44 -44
  178. package/src/components/navigation-menu/NavigationMenuTrigger.astro +30 -30
  179. package/src/components/navigation-menu/NavigationMenuViewport.astro +19 -19
  180. package/src/components/navigation-menu/index.ts +10 -10
  181. package/src/components/organisms/lightning-sidebar-nav/CHANGELOG.md +50 -0
  182. package/src/components/organisms/lightning-sidebar-nav/LightningSidebarNav.astro +176 -0
  183. package/src/components/organisms/lightning-sidebar-nav/SidebarNav.astro +50 -0
  184. package/src/components/organisms/lightning-sidebar-nav/SidebarNavGroup.astro +74 -0
  185. package/src/components/organisms/lightning-sidebar-nav/SidebarNavItem.astro +94 -0
  186. package/src/components/organisms/lightning-sidebar-nav/SidebarNavProBadge.astro +26 -0
  187. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSection.astro +71 -0
  188. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSkeleton.astro +67 -0
  189. package/src/components/organisms/lightning-sidebar-nav/SidebarNavSubItem.astro +69 -0
  190. package/src/components/organisms/lightning-sidebar-nav/SidebarNavUsage.astro +78 -0
  191. package/src/components/organisms/lightning-sidebar-nav/SidebarNavWorkspaceAvatar.astro +46 -0
  192. package/src/components/organisms/lightning-sidebar-nav/SidebarNavWorkspaceSwitcher.astro +130 -0
  193. package/src/components/organisms/lightning-sidebar-nav/icons.ts +46 -0
  194. package/src/components/organisms/lightning-sidebar-nav/index.ts +18 -0
  195. package/src/components/organisms/lightning-sidebar-nav/types.ts +77 -0
  196. package/src/components/popover/CHANGELOG.md +20 -20
  197. package/src/components/popover/Popover.astro +211 -211
  198. package/src/components/popover/PopoverClose.astro +18 -18
  199. package/src/components/popover/PopoverContent.astro +50 -50
  200. package/src/components/popover/PopoverDescription.astro +18 -18
  201. package/src/components/popover/PopoverHeader.astro +18 -18
  202. package/src/components/popover/PopoverTitle.astro +18 -18
  203. package/src/components/popover/PopoverTrigger.astro +35 -35
  204. package/src/components/popover/index.ts +7 -7
  205. package/src/components/radio-group/CHANGELOG.md +31 -31
  206. package/src/components/radio-group/RadioGroup.astro +81 -81
  207. package/src/components/radio-group/RadioGroupItem.astro +51 -51
  208. package/src/components/radio-group/index.ts +3 -3
  209. package/src/components/select/CHANGELOG.md +39 -39
  210. package/src/components/select/Select.astro +373 -373
  211. package/src/components/select/SelectContent.astro +91 -91
  212. package/src/components/select/SelectGroup.astro +19 -19
  213. package/src/components/select/SelectItem.astro +48 -48
  214. package/src/components/select/SelectLabel.astro +18 -18
  215. package/src/components/select/SelectSeparator.astro +17 -17
  216. package/src/components/select/SelectTrigger.astro +34 -34
  217. package/src/components/select/SelectValue.astro +22 -22
  218. package/src/components/select/index.ts +8 -8
  219. package/src/components/separator/CHANGELOG.md +5 -5
  220. package/src/components/separator/Separator.astro +60 -60
  221. package/src/components/separator/index.ts +2 -2
  222. package/src/components/skeleton/CHANGELOG.md +5 -5
  223. package/src/components/skeleton/Skeleton.astro +121 -121
  224. package/src/components/skeleton/index.ts +1 -1
  225. package/src/components/slider/CHANGELOG.md +5 -5
  226. package/src/components/slider/Slider.astro +198 -198
  227. package/src/components/slider/index.ts +1 -1
  228. package/src/components/spinner/CHANGELOG.md +18 -18
  229. package/src/components/spinner/Spinner.astro +135 -135
  230. package/src/components/spinner/index.ts +1 -1
  231. package/src/components/sticky-surface/CHANGELOG.md +5 -5
  232. package/src/components/sticky-surface/StickySurface.astro +152 -152
  233. package/src/components/sticky-surface/index.ts +2 -2
  234. package/src/components/switch/CHANGELOG.md +29 -29
  235. package/src/components/switch/Switch.astro +106 -106
  236. package/src/components/switch/index.ts +1 -1
  237. package/src/components/table/CHANGELOG.md +24 -24
  238. package/src/components/table/Table.astro +358 -251
  239. package/src/components/table/TableBody.astro +17 -18
  240. package/src/components/table/TableBulkToolbar.astro +37 -0
  241. package/src/components/table/TableCaption.astro +17 -17
  242. package/src/components/table/TableCell.astro +45 -21
  243. package/src/components/table/TableCellText.astro +17 -0
  244. package/src/components/table/TableColumnMenu.astro +50 -0
  245. package/src/components/table/TableEditableCell.astro +287 -0
  246. package/src/components/table/TableEmpty.astro +17 -0
  247. package/src/components/table/TableFolderCell.astro +38 -0
  248. package/src/components/table/TableFooter.astro +21 -21
  249. package/src/components/table/TableHead.astro +90 -21
  250. package/src/components/table/TableHeader.astro +17 -17
  251. package/src/components/table/TablePagination.astro +57 -0
  252. package/src/components/table/TableRow.astro +52 -21
  253. package/src/components/table/TableSelectAllBanner.astro +34 -0
  254. package/src/components/table/TableSelectCell.astro +50 -0
  255. package/src/components/table/TableSkeletonRow.astro +21 -0
  256. package/src/components/table/index.ts +19 -9
  257. package/src/components/table/table-cell-variants.ts +29 -0
  258. package/src/components/tabs/CHANGELOG.md +5 -5
  259. package/src/components/tabs/Tabs.astro +306 -306
  260. package/src/components/tabs/TabsContent.astro +47 -47
  261. package/src/components/tabs/TabsList.astro +69 -69
  262. package/src/components/tabs/TabsTrigger.astro +40 -40
  263. package/src/components/tabs/index.ts +6 -6
  264. package/src/components/textarea/CHANGELOG.md +22 -22
  265. package/src/components/textarea/Textarea.astro +58 -58
  266. package/src/components/textarea/index.ts +2 -2
  267. package/src/components/toggle/CHANGELOG.md +23 -23
  268. package/src/components/toggle/Toggle.astro +150 -150
  269. package/src/components/toggle/index.ts +1 -1
  270. package/src/components/toggle-group/CHANGELOG.md +18 -18
  271. package/src/components/toggle-group/ToggleGroup.astro +236 -236
  272. package/src/components/toggle-group/ToggleGroupItem.astro +48 -48
  273. package/src/components/toggle-group/index.ts +2 -2
  274. package/src/components/tooltip/CHANGELOG.md +22 -22
  275. package/src/components/tooltip/Tooltip.astro +357 -357
  276. package/src/components/tooltip/TooltipContent.astro +85 -85
  277. package/src/components/tooltip/TooltipTrigger.astro +34 -34
  278. package/src/components/tooltip/index.ts +3 -3
  279. package/src/lib/table-controller.ts +1090 -0
  280. package/src/lib/toggle-group-controller.ts +113 -113
  281. package/src/lib/toggle-shared.ts +27 -27
  282. package/src/lib/utils.ts +6 -6
  283. package/src/styles/globals.css +197 -177
@@ -1,2 +1,2 @@
1
- export { default as Separator } from "./Separator.astro";
2
-
1
+ export { default as Separator } from "./Separator.astro";
2
+
@@ -1,5 +1,5 @@
1
- # Changelog
2
-
3
- All notable changes to the `Skeleton` component will be documented in this file.
4
-
5
- ## Unreleased
1
+ # Changelog
2
+
3
+ All notable changes to the `Skeleton` component will be documented in this file.
4
+
5
+ ## Unreleased
@@ -1,121 +1,121 @@
1
- ---
2
- /**
3
- * @component Skeleton
4
- * @title Skeleton
5
- * @description A loading placeholder component that displays animated pulse effect, commonly used to indicate content is being loaded.
6
- * @status stable
7
- *
8
- * Works great with Astro Server Islands as a fallback for loading content.
9
- *
10
- * @preview
11
- *
12
- * <div class="flex items-center gap-4">
13
- * <Skeleton class="h-12 w-12 rounded-full" />
14
- * <div class="space-y-2">
15
- * <Skeleton class="h-4 w-[250px]" />
16
- * <Skeleton class="h-4 w-[200px]" />
17
- * </div>
18
- * </div>
19
- *
20
- * @usage
21
- *
22
- * ```astro
23
- * ---
24
- * import { Skeleton } from '@bejamas/ui/components/skeleton';
25
- * ---
26
- *
27
- * <Skeleton class="h-4 w-[250px]" />
28
- * ```
29
- *
30
- * @examples
31
- *
32
- * ### Avatar
33
- *
34
- * <div class="flex w-fit items-center gap-4">
35
- * <Skeleton class="size-10 shrink-0 rounded-full" />
36
- * <div class="grid gap-2">
37
- * <Skeleton class="h-4 w-[150px]" />
38
- * <Skeleton class="h-4 w-[100px]" />
39
- * </div>
40
- * </div>
41
- *
42
- * ### Card
43
- *
44
- * <Card class="w-full max-w-xs">
45
- * <CardHeader>
46
- * <Skeleton class="h-4 w-2/3" />
47
- * <Skeleton class="h-4 w-1/2" />
48
- * </CardHeader>
49
- * <CardContent>
50
- * <Skeleton class="aspect-video w-full" />
51
- * </CardContent>
52
- * </Card>
53
- *
54
- * ### Text
55
- *
56
- * <div class="flex w-full max-w-xs flex-col gap-2">
57
- * <Skeleton class="h-4 w-full" />
58
- * <Skeleton class="h-4 w-full" />
59
- * <Skeleton class="h-4 w-3/4" />
60
- * </div>
61
- *
62
- * ### Form
63
- *
64
- * <div class="flex w-full max-w-xs flex-col gap-7">
65
- * <div class="flex flex-col gap-3">
66
- * <Skeleton class="h-4 w-20" />
67
- * <Skeleton class="h-8 w-full" />
68
- * </div>
69
- * <div class="flex flex-col gap-3">
70
- * <Skeleton class="h-4 w-24" />
71
- * <Skeleton class="h-8 w-full" />
72
- * </div>
73
- * <Skeleton class="h-8 w-24" />
74
- * </div>
75
- *
76
- * ### Table
77
- *
78
- * <div class="flex w-full max-w-sm flex-col gap-2">
79
- * <div class="flex gap-4">
80
- * <Skeleton class="h-4 flex-1" />
81
- * <Skeleton class="h-4 w-24" />
82
- * <Skeleton class="h-4 w-20" />
83
- * </div>
84
- * <div class="flex gap-4">
85
- * <Skeleton class="h-4 flex-1" />
86
- * <Skeleton class="h-4 w-24" />
87
- * <Skeleton class="h-4 w-20" />
88
- * </div>
89
- * <div class="flex gap-4">
90
- * <Skeleton class="h-4 flex-1" />
91
- * <Skeleton class="h-4 w-24" />
92
- * <Skeleton class="h-4 w-20" />
93
- * </div>
94
- * <div class="flex gap-4">
95
- * <Skeleton class="h-4 flex-1" />
96
- * <Skeleton class="h-4 w-24" />
97
- * <Skeleton class="h-4 w-20" />
98
- * </div>
99
- * <div class="flex gap-4">
100
- * <Skeleton class="h-4 flex-1" />
101
- * <Skeleton class="h-4 w-24" />
102
- * <Skeleton class="h-4 w-20" />
103
- * </div>
104
- * </div>
105
- *
106
- * @props
107
- * - class?: string — Additional classes for styling.
108
- */
109
-
110
- import { cn } from "@cl-light-ds/ui/lib/utils";
111
-
112
- const { class: className = "", ...props } = Astro.props;
113
- ---
114
-
115
- <div
116
- data-slot="skeleton"
117
- class={cn("bg-muted rounded-md animate-pulse", className)}
118
- {...props}
119
- >
120
- <slot />
121
- </div>
1
+ ---
2
+ /**
3
+ * @component Skeleton
4
+ * @title Skeleton
5
+ * @description A loading placeholder component that displays animated pulse effect, commonly used to indicate content is being loaded.
6
+ * @status stable
7
+ *
8
+ * Works great with Astro Server Islands as a fallback for loading content.
9
+ *
10
+ * @preview
11
+ *
12
+ * <div class="flex items-center gap-4">
13
+ * <Skeleton class="h-12 w-12 rounded-full" />
14
+ * <div class="space-y-2">
15
+ * <Skeleton class="h-4 w-[250px]" />
16
+ * <Skeleton class="h-4 w-[200px]" />
17
+ * </div>
18
+ * </div>
19
+ *
20
+ * @usage
21
+ *
22
+ * ```astro
23
+ * ---
24
+ * import { Skeleton } from '@bejamas/ui/components/skeleton';
25
+ * ---
26
+ *
27
+ * <Skeleton class="h-4 w-[250px]" />
28
+ * ```
29
+ *
30
+ * @examples
31
+ *
32
+ * ### Avatar
33
+ *
34
+ * <div class="flex w-fit items-center gap-4">
35
+ * <Skeleton class="size-10 shrink-0 rounded-full" />
36
+ * <div class="grid gap-2">
37
+ * <Skeleton class="h-4 w-[150px]" />
38
+ * <Skeleton class="h-4 w-[100px]" />
39
+ * </div>
40
+ * </div>
41
+ *
42
+ * ### Card
43
+ *
44
+ * <Card class="w-full max-w-xs">
45
+ * <CardHeader>
46
+ * <Skeleton class="h-4 w-2/3" />
47
+ * <Skeleton class="h-4 w-1/2" />
48
+ * </CardHeader>
49
+ * <CardContent>
50
+ * <Skeleton class="aspect-video w-full" />
51
+ * </CardContent>
52
+ * </Card>
53
+ *
54
+ * ### Text
55
+ *
56
+ * <div class="flex w-full max-w-xs flex-col gap-2">
57
+ * <Skeleton class="h-4 w-full" />
58
+ * <Skeleton class="h-4 w-full" />
59
+ * <Skeleton class="h-4 w-3/4" />
60
+ * </div>
61
+ *
62
+ * ### Form
63
+ *
64
+ * <div class="flex w-full max-w-xs flex-col gap-7">
65
+ * <div class="flex flex-col gap-3">
66
+ * <Skeleton class="h-4 w-20" />
67
+ * <Skeleton class="h-8 w-full" />
68
+ * </div>
69
+ * <div class="flex flex-col gap-3">
70
+ * <Skeleton class="h-4 w-24" />
71
+ * <Skeleton class="h-8 w-full" />
72
+ * </div>
73
+ * <Skeleton class="h-8 w-24" />
74
+ * </div>
75
+ *
76
+ * ### Table
77
+ *
78
+ * <div class="flex w-full max-w-sm flex-col gap-2">
79
+ * <div class="flex gap-4">
80
+ * <Skeleton class="h-4 flex-1" />
81
+ * <Skeleton class="h-4 w-24" />
82
+ * <Skeleton class="h-4 w-20" />
83
+ * </div>
84
+ * <div class="flex gap-4">
85
+ * <Skeleton class="h-4 flex-1" />
86
+ * <Skeleton class="h-4 w-24" />
87
+ * <Skeleton class="h-4 w-20" />
88
+ * </div>
89
+ * <div class="flex gap-4">
90
+ * <Skeleton class="h-4 flex-1" />
91
+ * <Skeleton class="h-4 w-24" />
92
+ * <Skeleton class="h-4 w-20" />
93
+ * </div>
94
+ * <div class="flex gap-4">
95
+ * <Skeleton class="h-4 flex-1" />
96
+ * <Skeleton class="h-4 w-24" />
97
+ * <Skeleton class="h-4 w-20" />
98
+ * </div>
99
+ * <div class="flex gap-4">
100
+ * <Skeleton class="h-4 flex-1" />
101
+ * <Skeleton class="h-4 w-24" />
102
+ * <Skeleton class="h-4 w-20" />
103
+ * </div>
104
+ * </div>
105
+ *
106
+ * @props
107
+ * - class?: string — Additional classes for styling.
108
+ */
109
+
110
+ import { cn } from "@cl-light-ds/ui/lib/utils";
111
+
112
+ const { class: className = "", ...props } = Astro.props;
113
+ ---
114
+
115
+ <div
116
+ data-slot="skeleton"
117
+ class={cn("bg-muted rounded-md animate-pulse", className)}
118
+ {...props}
119
+ >
120
+ <slot />
121
+ </div>
@@ -1 +1 @@
1
- export { default as Skeleton } from "./Skeleton.astro";
1
+ export { default as Skeleton } from "./Skeleton.astro";
@@ -1,5 +1,5 @@
1
- # Changelog
2
-
3
- All notable changes to the `Slider` component will be documented in this file.
4
-
5
- ## Unreleased
1
+ # Changelog
2
+
3
+ All notable changes to the `Slider` component will be documented in this file.
4
+
5
+ ## Unreleased
@@ -1,198 +1,198 @@
1
- ---
2
- /**
3
- * @component Slider
4
- * @title Slider
5
- * @description An input component that allows users to select a value from a range by dragging a thumb along a track.
6
- * @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=5455-17811
7
- *
8
- * @preview
9
- *
10
- * <Slider class="w-full max-w-sm" defaultValue={50} max={100} />
11
- *
12
- * @usage
13
- *
14
- * ```astro nocollapse
15
- * ---
16
- * import { Slider } from '@bejamas/ui/components/slider';
17
- * ---
18
- *
19
- * <Slider defaultValue={50} max={100} />
20
- * ```
21
- *
22
- * @examples
23
- *
24
- * ### Range
25
- *
26
- * Use two thumbs to create a range slider for selecting a min and max value.
27
- *
28
- * <Slider class="w-full max-w-sm" defaultValue={[25, 75]} max={100} />
29
- *
30
- * ### Vertical
31
- *
32
- * Set orientation to vertical for a vertical slider.
33
- *
34
- * <div class="h-48">
35
- * <Slider class="h-full" orientation="vertical" defaultValue={50} max={100} />
36
- * </div>
37
- *
38
- * ### Disabled
39
- *
40
- * Disable the slider to prevent interaction.
41
- *
42
- * <Slider class="w-full max-w-sm" defaultValue={50} max={100} disabled />
43
- *
44
- * ### Step
45
- *
46
- * Set a custom step increment.
47
- *
48
- * <Slider class="w-full max-w-sm" defaultValue={50} max={100} step={10} />
49
- *
50
- * @api
51
- *
52
- * ### Events
53
- *
54
- * The slider emits custom events that you can listen to:
55
- *
56
- * | Event | Detail | Description |
57
- * |-------|--------|-------------|
58
- * | `slider:change` | `{ value: number \| [number, number] }` | Fired on every value change (during drag) |
59
- * | `slider:commit` | `{ value: number \| [number, number] }` | Fired when value is committed (pointer up or keyboard blur) |
60
- *
61
- * ```astro nocollapse
62
- * <Slider id="my-slider" defaultValue={50} max={100} />
63
- * ```
64
- *
65
- * ```js nocollapse
66
- * const slider = document.getElementById('my-slider');
67
- *
68
- * slider.addEventListener('slider:change', (e) => {
69
- * console.log('Value changing:', e.detail.value);
70
- * });
71
- *
72
- * slider.addEventListener('slider:commit', (e) => {
73
- * console.log('Value committed:', e.detail.value);
74
- * });
75
- * ```
76
- *
77
- * ### Programmatic Control
78
- *
79
- * You can set the slider value programmatically by dispatching a `slider:set` event:
80
- *
81
- * ```js nocollapse
82
- * // Set single value
83
- * slider.dispatchEvent(new CustomEvent('slider:set', {
84
- * detail: { value: 75 }
85
- * }));
86
- *
87
- * // Set range values
88
- * slider.dispatchEvent(new CustomEvent('slider:set', {
89
- * detail: { value: [25, 75] }
90
- * }));
91
- * ```
92
- *
93
- * ### Data Attributes
94
- *
95
- * The slider sets these data attributes that you can use for styling or querying state:
96
- *
97
- * | Attribute | Element | Description |
98
- * |-----------|---------|-------------|
99
- * | `data-orientation` | slider | Current orientation (`horizontal` or `vertical`) |
100
- * | `data-disabled` | slider | Present when slider is disabled |
101
- * | `data-dragging` | slider, thumb | Present during drag interaction |
102
- * | `data-value` | slider | Current value(s) as string (e.g., `"50"` or `"25,75"`) |
103
- *
104
- */
105
-
106
- import type { HTMLAttributes } from "astro/types";
107
- import { cn } from "@cl-light-ds/ui/lib/utils";
108
-
109
- type SliderValue = number | [number, number];
110
-
111
- interface Props extends HTMLAttributes<"div"> {
112
- class?: string;
113
- value?: SliderValue;
114
- defaultValue?: SliderValue;
115
- min?: number;
116
- max?: number;
117
- step?: number;
118
- orientation?: "horizontal" | "vertical";
119
- disabled?: boolean;
120
- }
121
-
122
- const {
123
- class: className = "",
124
- value,
125
- defaultValue,
126
- min = 0,
127
- max = 100,
128
- step = 1,
129
- orientation = "horizontal",
130
- disabled = false,
131
- ...rest
132
- } = Astro.props as Props;
133
-
134
- const resolvedValue = value ?? defaultValue ?? min;
135
- const defaultValueAttribute = Array.isArray(resolvedValue)
136
- ? resolvedValue.join(",")
137
- : String(resolvedValue);
138
- const thumbCount = Array.isArray(resolvedValue) ? 2 : 1;
139
- ---
140
-
141
- <div
142
- {...rest}
143
- data-slot="slider"
144
- data-default-value={defaultValueAttribute}
145
- data-min={min}
146
- data-max={max}
147
- data-step={step}
148
- data-orientation={orientation}
149
- data-thumb-alignment="edge"
150
- data-disabled={disabled ? "true" : undefined}
151
- class={cn("data-horizontal:w-full data-vertical:h-full", className)}
152
- >
153
- <div
154
- data-disabled={disabled ? "true" : undefined}
155
- class="data-vertical:min-h-40 relative flex w-full touch-none items-center select-none data-disabled:cursor-not-allowed data-vertical:h-full data-vertical:w-auto data-vertical:flex-col"
156
- >
157
- <div
158
- data-slot="slider-track"
159
- class="bg-muted rounded-full data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1 relative grow overflow-hidden select-none data-disabled:opacity-40"
160
- >
161
- <div
162
- data-slot="slider-range"
163
- class="bg-primary select-none data-horizontal:h-full data-vertical:w-full data-disabled:bg-slider-background-disabled"
164
- >
165
- </div>
166
- </div>
167
- {
168
- Array.from({ length: thumbCount }, (_, index) => (
169
- <div
170
- data-slot="slider-thumb"
171
- data-index={index}
172
- data-disabled={disabled ? "true" : undefined}
173
- class="border-primary size-4 rounded-full border-2 bg-background transition-[color,box-shadow] hover:ring-3 hover:ring-ring/50 focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-hidden block shrink-0 select-none data-disabled:pointer-events-none data-disabled:bg-[linear-gradient(var(--slider-dot-background-disabled),var(--slider-dot-background-disabled))] data-disabled:border-[var(--primary-50)]"
174
- />
175
- ))
176
- }
177
- </div>
178
- </div>
179
-
180
- <script>
181
- import { createSlider } from "@data-slot/slider";
182
-
183
- document.querySelectorAll('[data-slot="slider"]').forEach((el) => {
184
- const element = el as HTMLElement;
185
-
186
- // Don't pass defaultValue in options - let the library read from
187
- // data-default-value directly so single and range sliders stay aligned.
188
- createSlider(element, {
189
- min: Number(element.dataset.min) || 0,
190
- max: Number(element.dataset.max) || 100,
191
- step: Number(element.dataset.step) || 1,
192
- orientation:
193
- (element.dataset.orientation as "horizontal" | "vertical") ||
194
- "horizontal",
195
- disabled: element.dataset.disabled === "true",
196
- });
197
- });
198
- </script>
1
+ ---
2
+ /**
3
+ * @component Slider
4
+ * @title Slider
5
+ * @description An input component that allows users to select a value from a range by dragging a thumb along a track.
6
+ * @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=5455-17811
7
+ *
8
+ * @preview
9
+ *
10
+ * <Slider class="w-full max-w-sm" defaultValue={50} max={100} />
11
+ *
12
+ * @usage
13
+ *
14
+ * ```astro nocollapse
15
+ * ---
16
+ * import { Slider } from '@bejamas/ui/components/slider';
17
+ * ---
18
+ *
19
+ * <Slider defaultValue={50} max={100} />
20
+ * ```
21
+ *
22
+ * @examples
23
+ *
24
+ * ### Range
25
+ *
26
+ * Use two thumbs to create a range slider for selecting a min and max value.
27
+ *
28
+ * <Slider class="w-full max-w-sm" defaultValue={[25, 75]} max={100} />
29
+ *
30
+ * ### Vertical
31
+ *
32
+ * Set orientation to vertical for a vertical slider.
33
+ *
34
+ * <div class="h-48">
35
+ * <Slider class="h-full" orientation="vertical" defaultValue={50} max={100} />
36
+ * </div>
37
+ *
38
+ * ### Disabled
39
+ *
40
+ * Disable the slider to prevent interaction.
41
+ *
42
+ * <Slider class="w-full max-w-sm" defaultValue={50} max={100} disabled />
43
+ *
44
+ * ### Step
45
+ *
46
+ * Set a custom step increment.
47
+ *
48
+ * <Slider class="w-full max-w-sm" defaultValue={50} max={100} step={10} />
49
+ *
50
+ * @api
51
+ *
52
+ * ### Events
53
+ *
54
+ * The slider emits custom events that you can listen to:
55
+ *
56
+ * | Event | Detail | Description |
57
+ * |-------|--------|-------------|
58
+ * | `slider:change` | `{ value: number \| [number, number] }` | Fired on every value change (during drag) |
59
+ * | `slider:commit` | `{ value: number \| [number, number] }` | Fired when value is committed (pointer up or keyboard blur) |
60
+ *
61
+ * ```astro nocollapse
62
+ * <Slider id="my-slider" defaultValue={50} max={100} />
63
+ * ```
64
+ *
65
+ * ```js nocollapse
66
+ * const slider = document.getElementById('my-slider');
67
+ *
68
+ * slider.addEventListener('slider:change', (e) => {
69
+ * console.log('Value changing:', e.detail.value);
70
+ * });
71
+ *
72
+ * slider.addEventListener('slider:commit', (e) => {
73
+ * console.log('Value committed:', e.detail.value);
74
+ * });
75
+ * ```
76
+ *
77
+ * ### Programmatic Control
78
+ *
79
+ * You can set the slider value programmatically by dispatching a `slider:set` event:
80
+ *
81
+ * ```js nocollapse
82
+ * // Set single value
83
+ * slider.dispatchEvent(new CustomEvent('slider:set', {
84
+ * detail: { value: 75 }
85
+ * }));
86
+ *
87
+ * // Set range values
88
+ * slider.dispatchEvent(new CustomEvent('slider:set', {
89
+ * detail: { value: [25, 75] }
90
+ * }));
91
+ * ```
92
+ *
93
+ * ### Data Attributes
94
+ *
95
+ * The slider sets these data attributes that you can use for styling or querying state:
96
+ *
97
+ * | Attribute | Element | Description |
98
+ * |-----------|---------|-------------|
99
+ * | `data-orientation` | slider | Current orientation (`horizontal` or `vertical`) |
100
+ * | `data-disabled` | slider | Present when slider is disabled |
101
+ * | `data-dragging` | slider, thumb | Present during drag interaction |
102
+ * | `data-value` | slider | Current value(s) as string (e.g., `"50"` or `"25,75"`) |
103
+ *
104
+ */
105
+
106
+ import type { HTMLAttributes } from "astro/types";
107
+ import { cn } from "@cl-light-ds/ui/lib/utils";
108
+
109
+ type SliderValue = number | [number, number];
110
+
111
+ interface Props extends HTMLAttributes<"div"> {
112
+ class?: string;
113
+ value?: SliderValue;
114
+ defaultValue?: SliderValue;
115
+ min?: number;
116
+ max?: number;
117
+ step?: number;
118
+ orientation?: "horizontal" | "vertical";
119
+ disabled?: boolean;
120
+ }
121
+
122
+ const {
123
+ class: className = "",
124
+ value,
125
+ defaultValue,
126
+ min = 0,
127
+ max = 100,
128
+ step = 1,
129
+ orientation = "horizontal",
130
+ disabled = false,
131
+ ...rest
132
+ } = Astro.props as Props;
133
+
134
+ const resolvedValue = value ?? defaultValue ?? min;
135
+ const defaultValueAttribute = Array.isArray(resolvedValue)
136
+ ? resolvedValue.join(",")
137
+ : String(resolvedValue);
138
+ const thumbCount = Array.isArray(resolvedValue) ? 2 : 1;
139
+ ---
140
+
141
+ <div
142
+ {...rest}
143
+ data-slot="slider"
144
+ data-default-value={defaultValueAttribute}
145
+ data-min={min}
146
+ data-max={max}
147
+ data-step={step}
148
+ data-orientation={orientation}
149
+ data-thumb-alignment="edge"
150
+ data-disabled={disabled ? "true" : undefined}
151
+ class={cn("data-horizontal:w-full data-vertical:h-full", className)}
152
+ >
153
+ <div
154
+ data-disabled={disabled ? "true" : undefined}
155
+ class="data-vertical:min-h-40 relative flex w-full touch-none items-center select-none data-disabled:cursor-not-allowed data-vertical:h-full data-vertical:w-auto data-vertical:flex-col"
156
+ >
157
+ <div
158
+ data-slot="slider-track"
159
+ class="bg-muted rounded-full data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1 relative grow overflow-hidden select-none data-disabled:opacity-40"
160
+ >
161
+ <div
162
+ data-slot="slider-range"
163
+ class="bg-primary select-none data-horizontal:h-full data-vertical:w-full data-disabled:bg-slider-background-disabled"
164
+ >
165
+ </div>
166
+ </div>
167
+ {
168
+ Array.from({ length: thumbCount }, (_, index) => (
169
+ <div
170
+ data-slot="slider-thumb"
171
+ data-index={index}
172
+ data-disabled={disabled ? "true" : undefined}
173
+ class="border-primary size-4 rounded-full border-2 bg-background transition-[color,box-shadow] hover:ring-3 hover:ring-ring/50 focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-hidden block shrink-0 select-none data-disabled:pointer-events-none data-disabled:bg-[linear-gradient(var(--slider-dot-background-disabled),var(--slider-dot-background-disabled))] data-disabled:border-[var(--primary-50)]"
174
+ />
175
+ ))
176
+ }
177
+ </div>
178
+ </div>
179
+
180
+ <script>
181
+ import { createSlider } from "@data-slot/slider";
182
+
183
+ document.querySelectorAll('[data-slot="slider"]').forEach((el) => {
184
+ const element = el as HTMLElement;
185
+
186
+ // Don't pass defaultValue in options - let the library read from
187
+ // data-default-value directly so single and range sliders stay aligned.
188
+ createSlider(element, {
189
+ min: Number(element.dataset.min) || 0,
190
+ max: Number(element.dataset.max) || 100,
191
+ step: Number(element.dataset.step) || 1,
192
+ orientation:
193
+ (element.dataset.orientation as "horizontal" | "vertical") ||
194
+ "horizontal",
195
+ disabled: element.dataset.disabled === "true",
196
+ });
197
+ });
198
+ </script>