@cl-light-ds/ui 0.1.0 → 0.2.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.
- package/README.md +45 -45
- package/package.json +1 -1
- package/src/components/accordion/Accordion.astro +248 -248
- package/src/components/accordion/AccordionContent.astro +26 -26
- package/src/components/accordion/AccordionItem.astro +36 -36
- package/src/components/accordion/AccordionTrigger.astro +118 -118
- package/src/components/alert/Alert.astro +167 -167
- package/src/components/alert/AlertDescription.astro +24 -24
- package/src/components/alert/AlertTitle.astro +24 -24
- package/src/components/avatar/Avatar.astro +197 -197
- package/src/components/avatar/AvatarBadge.astro +44 -44
- package/src/components/avatar/AvatarFallback.astro +26 -26
- package/src/components/avatar/AvatarGroup.astro +26 -26
- package/src/components/avatar/AvatarGroupCount.astro +30 -30
- package/src/components/avatar/AvatarImage.astro +46 -46
- package/src/components/badge/Badge.astro +167 -167
- package/src/components/breadcrumb/Breadcrumb.astro +76 -76
- package/src/components/breadcrumb/BreadcrumbItem.astro +32 -32
- package/src/components/breadcrumb/BreadcrumbList.astro +26 -26
- package/src/components/breadcrumb/BreadcrumbSeparator.astro +26 -26
- package/src/components/button/Button.astro +233 -233
- package/src/components/button-group/ButtonGroup.astro +130 -130
- package/src/components/button-group/ButtonGroupSeparator.astro +30 -30
- package/src/components/button-group/ButtonGroupText.astro +21 -21
- package/src/components/card/Card.astro +182 -182
- package/src/components/card/CardAction.astro +26 -26
- package/src/components/card/CardContent.astro +28 -28
- package/src/components/card/CardDescription.astro +28 -28
- package/src/components/card/CardFooter.astro +24 -24
- package/src/components/card/CardHeader.astro +30 -30
- package/src/components/card/CardMedia.astro +27 -27
- package/src/components/card/CardOverlay.astro +32 -32
- package/src/components/card/CardTitle.astro +21 -21
- package/src/components/carousel/Carousel.astro +106 -106
- package/src/components/carousel/CarouselSlide.astro +22 -22
- package/src/components/checkbox/Checkbox.astro +159 -159
- package/src/components/collapsible/Collapsible.astro +202 -202
- package/src/components/collapsible/CollapsibleContent.astro +36 -36
- package/src/components/collapsible/CollapsibleTrigger.astro +34 -34
- package/src/components/combobox/Combobox.astro +365 -365
- package/src/components/combobox/ComboboxContent.astro +37 -37
- package/src/components/combobox/ComboboxEmpty.astro +18 -18
- package/src/components/combobox/ComboboxGroup.astro +19 -19
- package/src/components/combobox/ComboboxInput.astro +74 -74
- package/src/components/combobox/ComboboxItem.astro +39 -39
- package/src/components/combobox/ComboboxLabel.astro +18 -18
- package/src/components/combobox/ComboboxList.astro +21 -21
- package/src/components/combobox/ComboboxSeparator.astro +17 -17
- package/src/components/combobox/ComboboxTrigger.astro +30 -30
- package/src/components/combobox/ComboboxValue.astro +22 -22
- package/src/components/date/Date.astro +137 -137
- package/src/components/dialog/Dialog.astro +196 -196
- package/src/components/dialog/DialogClose.astro +23 -23
- package/src/components/dialog/DialogContent.astro +42 -42
- package/src/components/dialog/DialogDescription.astro +18 -18
- package/src/components/dialog/DialogFooter.astro +18 -18
- package/src/components/dialog/DialogHeader.astro +18 -18
- package/src/components/dialog/DialogOverlay.astro +19 -19
- package/src/components/dialog/DialogTitle.astro +18 -18
- package/src/components/dialog/DialogTrigger.astro +37 -37
- package/src/components/dropdown-menu/DropdownMenu.astro +226 -226
- package/src/components/dropdown-menu/DropdownMenuCheckboxItem.astro +114 -114
- package/src/components/dropdown-menu/DropdownMenuContent.astro +42 -42
- package/src/components/dropdown-menu/DropdownMenuGroup.astro +19 -19
- package/src/components/dropdown-menu/DropdownMenuItem.astro +220 -220
- package/src/components/dropdown-menu/DropdownMenuLabel.astro +20 -20
- package/src/components/dropdown-menu/DropdownMenuRadioItem.astro +101 -101
- package/src/components/dropdown-menu/DropdownMenuSeparator.astro +18 -18
- package/src/components/dropdown-menu/DropdownMenuShortcut.astro +18 -18
- package/src/components/dropdown-menu/DropdownMenuTrigger.astro +49 -49
- package/src/components/field/Field.astro +664 -664
- package/src/components/field/FieldContent.astro +20 -20
- package/src/components/field/FieldDescription.astro +22 -22
- package/src/components/field/FieldError.astro +51 -51
- package/src/components/field/FieldGroup.astro +20 -20
- package/src/components/field/FieldLabel.astro +22 -22
- package/src/components/field/FieldLegend.astro +23 -23
- package/src/components/field/FieldSeparator.astro +30 -30
- package/src/components/field/FieldSet.astro +20 -20
- package/src/components/field/FieldTitle.astro +20 -20
- package/src/components/hover-card/HoverCard.astro +235 -235
- package/src/components/hover-card/HoverCardContent.astro +54 -54
- package/src/components/hover-card/HoverCardTrigger.astro +38 -38
- package/src/components/input/Input.astro +130 -130
- package/src/components/input-group/InputGroup.astro +135 -135
- package/src/components/input-group/InputGroupAddon.astro +49 -49
- package/src/components/input-group/InputGroupButton.astro +58 -58
- package/src/components/input-group/InputGroupInput.astro +18 -18
- package/src/components/input-group/InputGroupText.astro +21 -21
- package/src/components/input-group/InputGroupTextarea.astro +17 -17
- package/src/components/item/Item.astro +122 -122
- package/src/components/item/ItemActions.astro +21 -21
- package/src/components/item/ItemContent.astro +25 -25
- package/src/components/item/ItemDescription.astro +25 -25
- package/src/components/item/ItemFooter.astro +24 -24
- package/src/components/item/ItemGroup.astro +24 -24
- package/src/components/item/ItemHeader.astro +24 -24
- package/src/components/item/ItemMedia.astro +47 -47
- package/src/components/item/ItemSeparator.astro +21 -21
- package/src/components/item/ItemTitle.astro +25 -25
- package/src/components/kbd/Kbd.astro +145 -145
- package/src/components/kbd/KbdGroup.astro +55 -55
- package/src/components/label/Label.astro +97 -97
- package/src/components/link-group/LinkGroup.astro +67 -67
- package/src/components/link-group/LinkGroupItem.astro +32 -32
- package/src/components/link-group/LinkGroupList.astro +25 -25
- package/src/components/link-group/LinkGroupTitle.astro +22 -22
- package/src/components/marquee/Marquee.astro +119 -119
- package/src/components/native-select/NativeSelect.astro +125 -125
- package/src/components/native-select/NativeSelectOptGroup.astro +14 -14
- package/src/components/navigation-menu/NavigationMenu.astro +414 -414
- package/src/components/navigation-menu/NavigationMenuContent.astro +37 -37
- package/src/components/navigation-menu/NavigationMenuIndicator.astro +24 -24
- package/src/components/navigation-menu/NavigationMenuItem.astro +22 -22
- package/src/components/navigation-menu/NavigationMenuLink.astro +18 -18
- package/src/components/navigation-menu/NavigationMenuList.astro +21 -21
- package/src/components/navigation-menu/NavigationMenuPositioner.astro +44 -44
- package/src/components/navigation-menu/NavigationMenuTrigger.astro +30 -30
- package/src/components/navigation-menu/NavigationMenuViewport.astro +19 -19
- package/src/components/popover/CHANGELOG.md +17 -2
- package/src/components/popover/Popover.astro +211 -210
- package/src/components/popover/PopoverClose.astro +18 -18
- package/src/components/popover/PopoverContent.astro +50 -49
- package/src/components/popover/PopoverDescription.astro +18 -18
- package/src/components/popover/PopoverHeader.astro +18 -18
- package/src/components/popover/PopoverTitle.astro +18 -18
- package/src/components/popover/PopoverTrigger.astro +35 -29
- package/src/components/radio-group/CHANGELOG.md +23 -1
- package/src/components/radio-group/RadioGroup.astro +81 -81
- package/src/components/radio-group/RadioGroupItem.astro +51 -42
- package/src/components/select/Select.astro +373 -373
- package/src/components/select/SelectContent.astro +91 -91
- package/src/components/select/SelectGroup.astro +19 -19
- package/src/components/select/SelectItem.astro +48 -48
- package/src/components/select/SelectLabel.astro +18 -18
- package/src/components/select/SelectSeparator.astro +17 -17
- package/src/components/select/SelectTrigger.astro +34 -34
- package/src/components/select/SelectValue.astro +22 -22
- package/src/components/separator/Separator.astro +60 -60
- package/src/components/skeleton/Skeleton.astro +121 -121
- package/src/components/slider/Slider.astro +198 -198
- package/src/components/spinner/CHANGELOG.md +14 -1
- package/src/components/spinner/Spinner.astro +135 -134
- package/src/components/sticky-surface/StickySurface.astro +152 -152
- package/src/components/switch/CHANGELOG.md +20 -0
- package/src/components/switch/Switch.astro +106 -106
- package/src/components/table/CHANGELOG.md +21 -2
- package/src/components/table/Table.astro +251 -250
- package/src/components/table/TableBody.astro +18 -18
- package/src/components/table/TableCaption.astro +17 -17
- package/src/components/table/TableCell.astro +21 -21
- package/src/components/table/TableFooter.astro +21 -21
- package/src/components/table/TableHead.astro +21 -21
- package/src/components/table/TableHeader.astro +17 -17
- package/src/components/table/TableRow.astro +21 -21
- package/src/components/tabs/Tabs.astro +306 -306
- package/src/components/tabs/TabsContent.astro +47 -47
- package/src/components/tabs/TabsList.astro +69 -69
- package/src/components/tabs/TabsTrigger.astro +40 -40
- package/src/components/textarea/CHANGELOG.md +18 -1
- package/src/components/textarea/Textarea.astro +58 -36
- package/src/components/toggle/CHANGELOG.md +19 -1
- package/src/components/toggle/Toggle.astro +150 -138
- package/src/components/toggle-group/CHANGELOG.md +14 -1
- package/src/components/toggle-group/ToggleGroup.astro +236 -224
- package/src/components/toggle-group/ToggleGroupItem.astro +48 -48
- package/src/components/tooltip/CHANGELOG.md +19 -2
- package/src/components/tooltip/Tooltip.astro +357 -331
- package/src/components/tooltip/TooltipContent.astro +85 -60
- package/src/components/tooltip/TooltipTrigger.astro +34 -34
- package/src/lib/toggle-shared.ts +3 -2
|
@@ -1,36 +1,36 @@
|
|
|
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
|
-
value: string;
|
|
7
|
-
class?: string;
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const {
|
|
12
|
-
value,
|
|
13
|
-
class: className = "",
|
|
14
|
-
disabled = false,
|
|
15
|
-
...rest
|
|
16
|
-
} = Astro.props as Props;
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
<div
|
|
20
|
-
{...rest}
|
|
21
|
-
data-value={value}
|
|
22
|
-
data-slot="accordion-item"
|
|
23
|
-
data-disabled={disabled ? "" : undefined}
|
|
24
|
-
aria-disabled={disabled ? "true" : undefined}
|
|
25
|
-
class={cn(
|
|
26
|
-
"group/accordion-item",
|
|
27
|
-
"[--accordion-indent:--spacing(3)] has-data-[slot=accordion-trigger-lead-icon]:[--accordion-indent:--spacing(9)]",
|
|
28
|
-
"group-data-[shape=default]/accordion:not-last:border-b group-data-[shape=default]/accordion:border-border",
|
|
29
|
-
"group-data-[shape=rounded]/accordion:rounded-lg group-data-[shape=rounded]/accordion:border group-data-[shape=rounded]/accordion:border-border group-data-[shape=rounded]/accordion:bg-card",
|
|
30
|
-
"has-[[data-slot=accordion-trigger]:focus-visible]:relative has-[[data-slot=accordion-trigger]:focus-visible]:z-10 has-[[data-slot=accordion-trigger]:focus-visible]:border has-[[data-slot=accordion-trigger]:focus-visible]:border-ring has-[[data-slot=accordion-trigger]:focus-visible]:ring-3 has-[[data-slot=accordion-trigger]:focus-visible]:ring-ring/50 has-[[data-slot=accordion-trigger]:focus-visible]:bg-card",
|
|
31
|
-
"data-disabled:opacity-50",
|
|
32
|
-
className,
|
|
33
|
-
)}
|
|
34
|
-
>
|
|
35
|
-
<slot />
|
|
36
|
-
</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
|
+
value: string;
|
|
7
|
+
class?: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const {
|
|
12
|
+
value,
|
|
13
|
+
class: className = "",
|
|
14
|
+
disabled = false,
|
|
15
|
+
...rest
|
|
16
|
+
} = Astro.props as Props;
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
<div
|
|
20
|
+
{...rest}
|
|
21
|
+
data-value={value}
|
|
22
|
+
data-slot="accordion-item"
|
|
23
|
+
data-disabled={disabled ? "" : undefined}
|
|
24
|
+
aria-disabled={disabled ? "true" : undefined}
|
|
25
|
+
class={cn(
|
|
26
|
+
"group/accordion-item",
|
|
27
|
+
"[--accordion-indent:--spacing(3)] has-data-[slot=accordion-trigger-lead-icon]:[--accordion-indent:--spacing(9)]",
|
|
28
|
+
"group-data-[shape=default]/accordion:not-last:border-b group-data-[shape=default]/accordion:border-border",
|
|
29
|
+
"group-data-[shape=rounded]/accordion:rounded-lg group-data-[shape=rounded]/accordion:border group-data-[shape=rounded]/accordion:border-border group-data-[shape=rounded]/accordion:bg-card",
|
|
30
|
+
"has-[[data-slot=accordion-trigger]:focus-visible]:relative has-[[data-slot=accordion-trigger]:focus-visible]:z-10 has-[[data-slot=accordion-trigger]:focus-visible]:border has-[[data-slot=accordion-trigger]:focus-visible]:border-ring has-[[data-slot=accordion-trigger]:focus-visible]:ring-3 has-[[data-slot=accordion-trigger]:focus-visible]:ring-ring/50 has-[[data-slot=accordion-trigger]:focus-visible]:bg-card",
|
|
31
|
+
"data-disabled:opacity-50",
|
|
32
|
+
className,
|
|
33
|
+
)}
|
|
34
|
+
>
|
|
35
|
+
<slot />
|
|
36
|
+
</div>
|
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { cva } from "class-variance-authority";
|
|
3
|
-
import { Plus, Minus, ChevronDown, ChevronUp } from "@lucide/astro";
|
|
4
|
-
import type { AstroComponent } from "@lucide/astro";
|
|
5
|
-
import Badge from "../badge/Badge.astro";
|
|
6
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
7
|
-
import type { HTMLAttributes } from "astro/types";
|
|
8
|
-
|
|
9
|
-
type IndicatorIcon = "plus-minus" | "chevron";
|
|
10
|
-
|
|
11
|
-
interface Props extends HTMLAttributes<"button"> {
|
|
12
|
-
class?: string;
|
|
13
|
-
/** Radix-like: render wrapper so the child can be the interactive element */
|
|
14
|
-
asChild?: boolean;
|
|
15
|
-
/** Leading icon rendered before the label (e.g. a lucide-astro icon). */
|
|
16
|
-
icon?: AstroComponent;
|
|
17
|
-
/** Optional badge/pill rendered next to the label. */
|
|
18
|
-
badge?: string | number;
|
|
19
|
-
disabled?: boolean;
|
|
20
|
-
/** Style of the built-in expand/collapse indicator. Ignored when a custom `icon` slot is provided. */
|
|
21
|
-
indicatorIcon?: IndicatorIcon;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const {
|
|
25
|
-
class: className = "",
|
|
26
|
-
asChild = false,
|
|
27
|
-
type = "button",
|
|
28
|
-
icon,
|
|
29
|
-
badge,
|
|
30
|
-
disabled = false,
|
|
31
|
-
indicatorIcon = "plus-minus",
|
|
32
|
-
...rest
|
|
33
|
-
} = Astro.props as Props;
|
|
34
|
-
|
|
35
|
-
const Icon = icon;
|
|
36
|
-
const hasBadge = badge !== undefined && badge !== null;
|
|
37
|
-
const [CollapsedIndicator, ExpandedIndicator] =
|
|
38
|
-
indicatorIcon === "chevron" ? [ChevronDown, ChevronUp] : [Plus, Minus];
|
|
39
|
-
|
|
40
|
-
const triggerVariants = cva(
|
|
41
|
-
"**:data-[slot=accordion-trigger-icon]:text-muted-foreground rounded-md p-3 aria-expanded:pb-1 text-left text-xs font-semibold hover:underline **:data-[slot=accordion-trigger-icon]:size-4 group/accordion-trigger relative flex flex-1 items-start justify-between gap-2 transition-all outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-disabled/accordion-item:pointer-events-none group-data-disabled/accordion-item:opacity-50",
|
|
42
|
-
);
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
{
|
|
46
|
-
asChild ? (
|
|
47
|
-
<div class="flex">
|
|
48
|
-
<div
|
|
49
|
-
data-slot="accordion-trigger"
|
|
50
|
-
data-as-child
|
|
51
|
-
class={cn(triggerVariants(), className)}
|
|
52
|
-
>
|
|
53
|
-
<slot />
|
|
54
|
-
</div>
|
|
55
|
-
</div>
|
|
56
|
-
) : (
|
|
57
|
-
<div class="flex">
|
|
58
|
-
<button
|
|
59
|
-
{...rest}
|
|
60
|
-
type={type}
|
|
61
|
-
aria-disabled={disabled ? "true" : undefined}
|
|
62
|
-
data-slot="accordion-trigger"
|
|
63
|
-
class={cn(triggerVariants(), className)}
|
|
64
|
-
>
|
|
65
|
-
<span class="flex flex-1 items-center gap-2">
|
|
66
|
-
{
|
|
67
|
-
Icon && (
|
|
68
|
-
<span
|
|
69
|
-
data-slot="accordion-trigger-lead-icon"
|
|
70
|
-
class="text-foreground pointer-events-none size-4 shrink-0"
|
|
71
|
-
>
|
|
72
|
-
<Icon class="size-4" />
|
|
73
|
-
</span>
|
|
74
|
-
)
|
|
75
|
-
}
|
|
76
|
-
<span class="flex items-center gap-1.5">
|
|
77
|
-
<slot />
|
|
78
|
-
{
|
|
79
|
-
hasBadge && (
|
|
80
|
-
<Badge
|
|
81
|
-
data-slot="accordion-trigger-badge"
|
|
82
|
-
variant="outline"
|
|
83
|
-
shape="pill"
|
|
84
|
-
size="sm"
|
|
85
|
-
>
|
|
86
|
-
{badge}
|
|
87
|
-
</Badge>
|
|
88
|
-
)
|
|
89
|
-
}
|
|
90
|
-
</span>
|
|
91
|
-
</span>
|
|
92
|
-
{
|
|
93
|
-
Astro.slots.has("icon") ? (
|
|
94
|
-
<span
|
|
95
|
-
data-slot="accordion-trigger-icon"
|
|
96
|
-
class="pointer-events-none shrink-0"
|
|
97
|
-
>
|
|
98
|
-
<slot name="icon" />
|
|
99
|
-
</span>
|
|
100
|
-
) : (
|
|
101
|
-
<>
|
|
102
|
-
<CollapsedIndicator
|
|
103
|
-
data-slot="accordion-trigger-icon"
|
|
104
|
-
class="pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"
|
|
105
|
-
aria-hidden="true"
|
|
106
|
-
/>
|
|
107
|
-
<ExpandedIndicator
|
|
108
|
-
data-slot="accordion-trigger-icon"
|
|
109
|
-
class="pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"
|
|
110
|
-
aria-hidden="true"
|
|
111
|
-
/>
|
|
112
|
-
</>
|
|
113
|
-
)
|
|
114
|
-
}
|
|
115
|
-
</button>
|
|
116
|
-
</div>
|
|
117
|
-
)
|
|
118
|
-
}
|
|
1
|
+
---
|
|
2
|
+
import { cva } from "class-variance-authority";
|
|
3
|
+
import { Plus, Minus, ChevronDown, ChevronUp } from "@lucide/astro";
|
|
4
|
+
import type { AstroComponent } from "@lucide/astro";
|
|
5
|
+
import Badge from "../badge/Badge.astro";
|
|
6
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
7
|
+
import type { HTMLAttributes } from "astro/types";
|
|
8
|
+
|
|
9
|
+
type IndicatorIcon = "plus-minus" | "chevron";
|
|
10
|
+
|
|
11
|
+
interface Props extends HTMLAttributes<"button"> {
|
|
12
|
+
class?: string;
|
|
13
|
+
/** Radix-like: render wrapper so the child can be the interactive element */
|
|
14
|
+
asChild?: boolean;
|
|
15
|
+
/** Leading icon rendered before the label (e.g. a lucide-astro icon). */
|
|
16
|
+
icon?: AstroComponent;
|
|
17
|
+
/** Optional badge/pill rendered next to the label. */
|
|
18
|
+
badge?: string | number;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
/** Style of the built-in expand/collapse indicator. Ignored when a custom `icon` slot is provided. */
|
|
21
|
+
indicatorIcon?: IndicatorIcon;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const {
|
|
25
|
+
class: className = "",
|
|
26
|
+
asChild = false,
|
|
27
|
+
type = "button",
|
|
28
|
+
icon,
|
|
29
|
+
badge,
|
|
30
|
+
disabled = false,
|
|
31
|
+
indicatorIcon = "plus-minus",
|
|
32
|
+
...rest
|
|
33
|
+
} = Astro.props as Props;
|
|
34
|
+
|
|
35
|
+
const Icon = icon;
|
|
36
|
+
const hasBadge = badge !== undefined && badge !== null;
|
|
37
|
+
const [CollapsedIndicator, ExpandedIndicator] =
|
|
38
|
+
indicatorIcon === "chevron" ? [ChevronDown, ChevronUp] : [Plus, Minus];
|
|
39
|
+
|
|
40
|
+
const triggerVariants = cva(
|
|
41
|
+
"**:data-[slot=accordion-trigger-icon]:text-muted-foreground rounded-md p-3 aria-expanded:pb-1 text-left text-xs font-semibold hover:underline **:data-[slot=accordion-trigger-icon]:size-4 group/accordion-trigger relative flex flex-1 items-start justify-between gap-2 transition-all outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-disabled/accordion-item:pointer-events-none group-data-disabled/accordion-item:opacity-50",
|
|
42
|
+
);
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
{
|
|
46
|
+
asChild ? (
|
|
47
|
+
<div class="flex">
|
|
48
|
+
<div
|
|
49
|
+
data-slot="accordion-trigger"
|
|
50
|
+
data-as-child
|
|
51
|
+
class={cn(triggerVariants(), className)}
|
|
52
|
+
>
|
|
53
|
+
<slot />
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
) : (
|
|
57
|
+
<div class="flex">
|
|
58
|
+
<button
|
|
59
|
+
{...rest}
|
|
60
|
+
type={type}
|
|
61
|
+
aria-disabled={disabled ? "true" : undefined}
|
|
62
|
+
data-slot="accordion-trigger"
|
|
63
|
+
class={cn(triggerVariants(), className)}
|
|
64
|
+
>
|
|
65
|
+
<span class="flex flex-1 items-center gap-2">
|
|
66
|
+
{
|
|
67
|
+
Icon && (
|
|
68
|
+
<span
|
|
69
|
+
data-slot="accordion-trigger-lead-icon"
|
|
70
|
+
class="text-foreground pointer-events-none size-4 shrink-0"
|
|
71
|
+
>
|
|
72
|
+
<Icon class="size-4" />
|
|
73
|
+
</span>
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
<span class="flex items-center gap-1.5">
|
|
77
|
+
<slot />
|
|
78
|
+
{
|
|
79
|
+
hasBadge && (
|
|
80
|
+
<Badge
|
|
81
|
+
data-slot="accordion-trigger-badge"
|
|
82
|
+
variant="outline"
|
|
83
|
+
shape="pill"
|
|
84
|
+
size="sm"
|
|
85
|
+
>
|
|
86
|
+
{badge}
|
|
87
|
+
</Badge>
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
</span>
|
|
91
|
+
</span>
|
|
92
|
+
{
|
|
93
|
+
Astro.slots.has("icon") ? (
|
|
94
|
+
<span
|
|
95
|
+
data-slot="accordion-trigger-icon"
|
|
96
|
+
class="pointer-events-none shrink-0"
|
|
97
|
+
>
|
|
98
|
+
<slot name="icon" />
|
|
99
|
+
</span>
|
|
100
|
+
) : (
|
|
101
|
+
<>
|
|
102
|
+
<CollapsedIndicator
|
|
103
|
+
data-slot="accordion-trigger-icon"
|
|
104
|
+
class="pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"
|
|
105
|
+
aria-hidden="true"
|
|
106
|
+
/>
|
|
107
|
+
<ExpandedIndicator
|
|
108
|
+
data-slot="accordion-trigger-icon"
|
|
109
|
+
class="pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"
|
|
110
|
+
aria-hidden="true"
|
|
111
|
+
/>
|
|
112
|
+
</>
|
|
113
|
+
)
|
|
114
|
+
}
|
|
115
|
+
</button>
|
|
116
|
+
</div>
|
|
117
|
+
)
|
|
118
|
+
}
|
|
@@ -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>
|