@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,167 +1,167 @@
1
- ---
2
- /**
3
- * @component Alert
4
- * @title Alert
5
- * @description A prominent message that draws user attention to important information.
6
- * @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=133-10053
7
- *
8
- * @preview
9
- *
10
- * <div class="grid w-full max-w-xl items-start gap-4">
11
- * <Alert icon={Info}>
12
- * <AlertTitle>Success! Your changes have been saved</AlertTitle>
13
- * </Alert>
14
- *
15
- * <Alert variant="destructive" size="large" icon={CircleAlertIcon}>
16
- * <AlertTitle>Unable to process your payment.</AlertTitle>
17
- * <AlertDescription>Please verify your billing information and try again.</AlertDescription>
18
- * <Fragment slot="actions">
19
- * <Button size="sm">Primary</Button>
20
- * <Button size="sm" variant="outline">Outline</Button>
21
- * </Fragment>
22
- * </Alert>
23
- *
24
- * <Alert variant="success" icon={CircleCheckIcon}>
25
- * <AlertTitle>Payment successful.</AlertTitle>
26
- * </Alert>
27
- * </div>
28
- *
29
- * @usage
30
- *
31
- * ```astro nocollapse
32
- * ---
33
- * import { Alert, AlertTitle, AlertDescription } from '@bejamas/ui/components/alert';
34
- * import { InfoIcon } from '@lucide/astro';
35
- * ---
36
- * <Alert variant="default" icon={InfoIcon}>
37
- * <AlertTitle>Heads up!</AlertTitle>
38
- * <AlertDescription>Something happened successfully.</AlertDescription>
39
- * </Alert>
40
- * ```
41
- */
42
- import { cva } from "class-variance-authority";
43
- import { X as XIcon } from "@lucide/astro";
44
- import type { AstroComponent } from "@lucide/astro";
45
- import { cn } from "@cl-light-ds/ui/lib/utils";
46
- import type { HTMLAttributes } from "astro/types";
47
-
48
- type AlertVariant = "default" | "destructive" | "success";
49
- type AlertSize = "default" | "large";
50
-
51
- interface Props extends HTMLAttributes<"div"> {
52
- variant?: AlertVariant;
53
- size?: AlertSize;
54
- icon?: AstroComponent;
55
- dismissible?: boolean;
56
- class?: string;
57
- }
58
-
59
- const {
60
- class: className = "",
61
- variant = "default",
62
- size = "default",
63
- icon,
64
- dismissible = true,
65
- ...rest
66
- } = Astro.props as Props;
67
-
68
- const Icon = icon;
69
- const hasIcon = Boolean(Icon);
70
- const hasActions = Astro.slots.has("actions");
71
-
72
- const alertVariants = cva(
73
- "group/alert relative flex w-full rounded-lg border border-border",
74
- {
75
- variants: {
76
- variant: {
77
- default: "bg-popover",
78
- destructive: "bg-card",
79
- success: "bg-card",
80
- },
81
- size: {
82
- default: "items-center gap-2 p-2",
83
- large: "items-start gap-4 p-4",
84
- },
85
- },
86
- defaultVariants: {
87
- variant: "default",
88
- size: "default",
89
- },
90
- },
91
- );
92
-
93
- const iconVariants = cva(
94
- "flex size-6 shrink-0 items-center justify-center rounded-full [&>svg]:size-4",
95
- {
96
- variants: {
97
- variant: {
98
- default: "bg-muted text-foreground",
99
- destructive: "bg-destructive text-destructive-foreground",
100
- success: "bg-success text-success-foreground",
101
- },
102
- },
103
- defaultVariants: {
104
- variant: "default",
105
- },
106
- },
107
- );
108
-
109
- const contentVariants = cva("flex flex-1 text-sm", {
110
- variants: {
111
- size: {
112
- default: "items-center py-0.5 pl-2",
113
- large: "flex-col gap-8 pt-0.5",
114
- },
115
- },
116
- defaultVariants: {
117
- size: "default",
118
- },
119
- });
120
- ---
121
-
122
- <div
123
- {...rest}
124
- data-slot="alert"
125
- data-variant={variant}
126
- data-size={size}
127
- role="alert"
128
- class={cn(alertVariants({ variant, size }), className)}
129
- >
130
- {
131
- hasIcon && (
132
- <div data-slot="alert-icon" class={iconVariants({ variant })}>
133
- <Icon />
134
- </div>
135
- )
136
- }
137
- <div data-slot="alert-content" class={contentVariants({ size })}>
138
- {
139
- size === "large" ? (
140
- <div class="flex flex-col gap-2">
141
- <slot />
142
- </div>
143
- ) : (
144
- <slot />
145
- )
146
- }
147
- {
148
- size === "large" && hasActions && (
149
- <div data-slot="alert-actions" class="flex w-full items-center gap-2">
150
- <slot name="actions" />
151
- </div>
152
- )
153
- }
154
- </div>
155
- {
156
- dismissible && (
157
- <button
158
- type="button"
159
- data-slot="alert-dismiss"
160
- class="flex shrink-0 items-center justify-center gap-0.5 rounded-lg bg-background p-2 [&>svg]:size-4"
161
- >
162
- <XIcon />
163
- <span class="sr-only">Dismiss</span>
164
- </button>
165
- )
166
- }
167
- </div>
1
+ ---
2
+ /**
3
+ * @component Alert
4
+ * @title Alert
5
+ * @description A prominent message that draws user attention to important information.
6
+ * @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=133-10053
7
+ *
8
+ * @preview
9
+ *
10
+ * <div class="grid w-full max-w-xl items-start gap-4">
11
+ * <Alert icon={Info}>
12
+ * <AlertTitle>Success! Your changes have been saved</AlertTitle>
13
+ * </Alert>
14
+ *
15
+ * <Alert variant="destructive" size="large" icon={CircleAlertIcon}>
16
+ * <AlertTitle>Unable to process your payment.</AlertTitle>
17
+ * <AlertDescription>Please verify your billing information and try again.</AlertDescription>
18
+ * <Fragment slot="actions">
19
+ * <Button size="sm">Primary</Button>
20
+ * <Button size="sm" variant="outline">Outline</Button>
21
+ * </Fragment>
22
+ * </Alert>
23
+ *
24
+ * <Alert variant="success" icon={CircleCheckIcon}>
25
+ * <AlertTitle>Payment successful.</AlertTitle>
26
+ * </Alert>
27
+ * </div>
28
+ *
29
+ * @usage
30
+ *
31
+ * ```astro nocollapse
32
+ * ---
33
+ * import { Alert, AlertTitle, AlertDescription } from '@bejamas/ui/components/alert';
34
+ * import { InfoIcon } from '@lucide/astro';
35
+ * ---
36
+ * <Alert variant="default" icon={InfoIcon}>
37
+ * <AlertTitle>Heads up!</AlertTitle>
38
+ * <AlertDescription>Something happened successfully.</AlertDescription>
39
+ * </Alert>
40
+ * ```
41
+ */
42
+ import { cva } from "class-variance-authority";
43
+ import { X as XIcon } from "@lucide/astro";
44
+ import type { AstroComponent } from "@lucide/astro";
45
+ import { cn } from "@cl-light-ds/ui/lib/utils";
46
+ import type { HTMLAttributes } from "astro/types";
47
+
48
+ type AlertVariant = "default" | "destructive" | "success";
49
+ type AlertSize = "default" | "large";
50
+
51
+ interface Props extends HTMLAttributes<"div"> {
52
+ variant?: AlertVariant;
53
+ size?: AlertSize;
54
+ icon?: AstroComponent;
55
+ dismissible?: boolean;
56
+ class?: string;
57
+ }
58
+
59
+ const {
60
+ class: className = "",
61
+ variant = "default",
62
+ size = "default",
63
+ icon,
64
+ dismissible = true,
65
+ ...rest
66
+ } = Astro.props as Props;
67
+
68
+ const Icon = icon;
69
+ const hasIcon = Boolean(Icon);
70
+ const hasActions = Astro.slots.has("actions");
71
+
72
+ const alertVariants = cva(
73
+ "group/alert relative flex w-full rounded-lg border border-border",
74
+ {
75
+ variants: {
76
+ variant: {
77
+ default: "bg-popover",
78
+ destructive: "bg-card",
79
+ success: "bg-card",
80
+ },
81
+ size: {
82
+ default: "items-center gap-2 p-2",
83
+ large: "items-start gap-4 p-4",
84
+ },
85
+ },
86
+ defaultVariants: {
87
+ variant: "default",
88
+ size: "default",
89
+ },
90
+ },
91
+ );
92
+
93
+ const iconVariants = cva(
94
+ "flex size-6 shrink-0 items-center justify-center rounded-full [&>svg]:size-4",
95
+ {
96
+ variants: {
97
+ variant: {
98
+ default: "bg-muted text-foreground",
99
+ destructive: "bg-destructive text-destructive-foreground",
100
+ success: "bg-success text-success-foreground",
101
+ },
102
+ },
103
+ defaultVariants: {
104
+ variant: "default",
105
+ },
106
+ },
107
+ );
108
+
109
+ const contentVariants = cva("flex flex-1 text-sm", {
110
+ variants: {
111
+ size: {
112
+ default: "items-center py-0.5 pl-2",
113
+ large: "flex-col gap-8 pt-0.5",
114
+ },
115
+ },
116
+ defaultVariants: {
117
+ size: "default",
118
+ },
119
+ });
120
+ ---
121
+
122
+ <div
123
+ {...rest}
124
+ data-slot="alert"
125
+ data-variant={variant}
126
+ data-size={size}
127
+ role="alert"
128
+ class={cn(alertVariants({ variant, size }), className)}
129
+ >
130
+ {
131
+ hasIcon && (
132
+ <div data-slot="alert-icon" class={iconVariants({ variant })}>
133
+ <Icon />
134
+ </div>
135
+ )
136
+ }
137
+ <div data-slot="alert-content" class={contentVariants({ size })}>
138
+ {
139
+ size === "large" ? (
140
+ <div class="flex flex-col gap-2">
141
+ <slot />
142
+ </div>
143
+ ) : (
144
+ <slot />
145
+ )
146
+ }
147
+ {
148
+ size === "large" && hasActions && (
149
+ <div data-slot="alert-actions" class="flex w-full items-center gap-2">
150
+ <slot name="actions" />
151
+ </div>
152
+ )
153
+ }
154
+ </div>
155
+ {
156
+ dismissible && (
157
+ <button
158
+ type="button"
159
+ data-slot="alert-dismiss"
160
+ class="flex shrink-0 items-center justify-center gap-0.5 rounded-lg bg-background p-2 [&>svg]:size-4"
161
+ >
162
+ <XIcon />
163
+ <span class="sr-only">Dismiss</span>
164
+ </button>
165
+ )
166
+ }
167
+ </div>
@@ -1,24 +1,24 @@
1
- ---
2
- import { cn } from "@cl-light-ds/ui/lib/utils";
3
- import type { HTMLAttributes } from "astro/types";
4
-
5
- interface Props extends HTMLAttributes<"div"> {
6
- class?: string;
7
- }
8
-
9
- const {
10
- class: className = "",
11
- ...rest
12
- } = Astro.props as Props;
13
- ---
14
-
15
- <div
16
- {...rest}
17
- data-slot="alert-description"
18
- class={cn(
19
- "text-sm text-muted-foreground [&_p:not(:last-child)]:mb-1 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",
20
- className,
21
- )}
22
- >
23
- <slot />
24
- </div>
1
+ ---
2
+ import { cn } from "@cl-light-ds/ui/lib/utils";
3
+ import type { HTMLAttributes } from "astro/types";
4
+
5
+ interface Props extends HTMLAttributes<"div"> {
6
+ class?: string;
7
+ }
8
+
9
+ const {
10
+ class: className = "",
11
+ ...rest
12
+ } = Astro.props as Props;
13
+ ---
14
+
15
+ <div
16
+ {...rest}
17
+ data-slot="alert-description"
18
+ class={cn(
19
+ "text-sm text-muted-foreground [&_p:not(:last-child)]:mb-1 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",
20
+ className,
21
+ )}
22
+ >
23
+ <slot />
24
+ </div>
@@ -1,24 +1,24 @@
1
- ---
2
- import { cn } from "@cl-light-ds/ui/lib/utils";
3
- import type { HTMLAttributes } from "astro/types";
4
-
5
- interface Props extends HTMLAttributes<"div"> {
6
- class?: string;
7
- }
8
-
9
- const {
10
- class: className = "",
11
- ...rest
12
- } = Astro.props as Props;
13
- ---
14
-
15
- <div
16
- {...rest}
17
- data-slot="alert-title"
18
- class={cn(
19
- "text-sm font-semibold text-foreground [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground/80",
20
- className,
21
- )}
22
- >
23
- <slot />
24
- </div>
1
+ ---
2
+ import { cn } from "@cl-light-ds/ui/lib/utils";
3
+ import type { HTMLAttributes } from "astro/types";
4
+
5
+ interface Props extends HTMLAttributes<"div"> {
6
+ class?: string;
7
+ }
8
+
9
+ const {
10
+ class: className = "",
11
+ ...rest
12
+ } = Astro.props as Props;
13
+ ---
14
+
15
+ <div
16
+ {...rest}
17
+ data-slot="alert-title"
18
+ class={cn(
19
+ "text-sm font-semibold text-foreground [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground/80",
20
+ className,
21
+ )}
22
+ >
23
+ <slot />
24
+ </div>
@@ -1,5 +1,5 @@
1
- # Changelog
2
-
3
- All notable changes to the `Alert` component will be documented in this file.
4
-
5
- ## Unreleased
1
+ # Changelog
2
+
3
+ All notable changes to the `Alert` component will be documented in this file.
4
+
5
+ ## Unreleased
@@ -1,4 +1,4 @@
1
- export { default as Alert } from "./Alert.astro";
2
- export { default as AlertTitle } from "./AlertTitle.astro";
3
- export { default as AlertDescription } from "./AlertDescription.astro";
4
-
1
+ export { default as Alert } from "./Alert.astro";
2
+ export { default as AlertTitle } from "./AlertTitle.astro";
3
+ export { default as AlertDescription } from "./AlertDescription.astro";
4
+