@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,58 +1,58 @@
|
|
|
1
|
-
---
|
|
2
|
-
import type { HTMLAttributes } from "astro/types";
|
|
3
|
-
import { cva } from "class-variance-authority";
|
|
4
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
5
|
-
import { Button } from "../button";
|
|
6
|
-
|
|
7
|
-
type GroupButtonSize = "xs" | "sm" | "icon-xs" | "icon-sm";
|
|
8
|
-
|
|
9
|
-
interface Props extends HTMLAttributes<"button"> {
|
|
10
|
-
size?: GroupButtonSize;
|
|
11
|
-
variant?:
|
|
12
|
-
| "default"
|
|
13
|
-
| "secondary"
|
|
14
|
-
| "outline"
|
|
15
|
-
| "ghost"
|
|
16
|
-
| "destructive"
|
|
17
|
-
| "link";
|
|
18
|
-
type?: "button" | "submit" | "reset";
|
|
19
|
-
class?: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const {
|
|
23
|
-
size = "xs",
|
|
24
|
-
variant = "ghost",
|
|
25
|
-
type = "button",
|
|
26
|
-
class: className = "",
|
|
27
|
-
...rest
|
|
28
|
-
} = Astro.props as Props;
|
|
29
|
-
|
|
30
|
-
const inputGroupButtonVariants = cva(
|
|
31
|
-
"gap-2 text-sm flex items-center shadow-none",
|
|
32
|
-
{
|
|
33
|
-
variants: {
|
|
34
|
-
size: {
|
|
35
|
-
xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
|
|
36
|
-
sm: "h-8 gap-1 px-2 text-xs [&>svg:not([class*='size-'])]:size-3.5",
|
|
37
|
-
"icon-xs":
|
|
38
|
-
"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
|
|
39
|
-
"icon-sm": "size-8 p-0 has-[>svg]:p-0",
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
defaultVariants: {
|
|
43
|
-
size: "xs",
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
);
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
<Button
|
|
50
|
-
type={type}
|
|
51
|
-
data-size={size}
|
|
52
|
-
variant={variant}
|
|
53
|
-
data-slot="input-group-button"
|
|
54
|
-
class={cn(inputGroupButtonVariants({ size }), className)}
|
|
55
|
-
{...rest}
|
|
56
|
-
>
|
|
57
|
-
<slot />
|
|
58
|
-
</Button>
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
5
|
+
import { Button } from "../button";
|
|
6
|
+
|
|
7
|
+
type GroupButtonSize = "xs" | "sm" | "icon-xs" | "icon-sm";
|
|
8
|
+
|
|
9
|
+
interface Props extends HTMLAttributes<"button"> {
|
|
10
|
+
size?: GroupButtonSize;
|
|
11
|
+
variant?:
|
|
12
|
+
| "default"
|
|
13
|
+
| "secondary"
|
|
14
|
+
| "outline"
|
|
15
|
+
| "ghost"
|
|
16
|
+
| "destructive"
|
|
17
|
+
| "link";
|
|
18
|
+
type?: "button" | "submit" | "reset";
|
|
19
|
+
class?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const {
|
|
23
|
+
size = "xs",
|
|
24
|
+
variant = "ghost",
|
|
25
|
+
type = "button",
|
|
26
|
+
class: className = "",
|
|
27
|
+
...rest
|
|
28
|
+
} = Astro.props as Props;
|
|
29
|
+
|
|
30
|
+
const inputGroupButtonVariants = cva(
|
|
31
|
+
"gap-2 text-sm flex items-center shadow-none",
|
|
32
|
+
{
|
|
33
|
+
variants: {
|
|
34
|
+
size: {
|
|
35
|
+
xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
|
|
36
|
+
sm: "h-8 gap-1 px-2 text-xs [&>svg:not([class*='size-'])]:size-3.5",
|
|
37
|
+
"icon-xs":
|
|
38
|
+
"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
|
|
39
|
+
"icon-sm": "size-8 p-0 has-[>svg]:p-0",
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
defaultVariants: {
|
|
43
|
+
size: "xs",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
);
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
<Button
|
|
50
|
+
type={type}
|
|
51
|
+
data-size={size}
|
|
52
|
+
variant={variant}
|
|
53
|
+
data-slot="input-group-button"
|
|
54
|
+
class={cn(inputGroupButtonVariants({ size }), className)}
|
|
55
|
+
{...rest}
|
|
56
|
+
>
|
|
57
|
+
<slot />
|
|
58
|
+
</Button>
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
---
|
|
2
|
-
import type { HTMLAttributes } from "astro/types";
|
|
3
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
4
|
-
import { Input } from "../input";
|
|
5
|
-
import { inputGroupControlClasses } from "./controlClasses";
|
|
6
|
-
|
|
7
|
-
interface Props extends HTMLAttributes<"input"> {
|
|
8
|
-
class?: string;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const { class: className = "", ...rest } = Astro.props as Props;
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
<Input
|
|
15
|
-
data-slot="input-group-control"
|
|
16
|
-
class={cn(inputGroupControlClasses, className)}
|
|
17
|
-
{...rest}
|
|
18
|
-
/>
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types";
|
|
3
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
4
|
+
import { Input } from "../input";
|
|
5
|
+
import { inputGroupControlClasses } from "./controlClasses";
|
|
6
|
+
|
|
7
|
+
interface Props extends HTMLAttributes<"input"> {
|
|
8
|
+
class?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const { class: className = "", ...rest } = Astro.props as Props;
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
<Input
|
|
15
|
+
data-slot="input-group-control"
|
|
16
|
+
class={cn(inputGroupControlClasses, className)}
|
|
17
|
+
{...rest}
|
|
18
|
+
/>
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
---
|
|
2
|
-
import type { HTMLAttributes } from "astro/types";
|
|
3
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
4
|
-
|
|
5
|
-
interface Props extends HTMLAttributes<"span"> {
|
|
6
|
-
class?: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const { class: className = "", ...rest } = Astro.props as Props;
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
<span
|
|
13
|
-
{...rest}
|
|
14
|
-
data-slot="input-group-text"
|
|
15
|
-
class={cn(
|
|
16
|
-
"text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none",
|
|
17
|
-
className,
|
|
18
|
-
)}
|
|
19
|
-
>
|
|
20
|
-
<slot />
|
|
21
|
-
</span>
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types";
|
|
3
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
4
|
+
|
|
5
|
+
interface Props extends HTMLAttributes<"span"> {
|
|
6
|
+
class?: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const { class: className = "", ...rest } = Astro.props as Props;
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<span
|
|
13
|
+
{...rest}
|
|
14
|
+
data-slot="input-group-text"
|
|
15
|
+
class={cn(
|
|
16
|
+
"text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none",
|
|
17
|
+
className,
|
|
18
|
+
)}
|
|
19
|
+
>
|
|
20
|
+
<slot />
|
|
21
|
+
</span>
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
---
|
|
2
|
-
import type { HTMLAttributes } from "astro/types";
|
|
3
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
4
|
-
import { Textarea } from "../textarea";
|
|
5
|
-
|
|
6
|
-
interface Props extends HTMLAttributes<"textarea"> {
|
|
7
|
-
class?: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const { class: className = "", ...rest } = Astro.props as Props;
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
<Textarea
|
|
14
|
-
data-slot="input-group-control"
|
|
15
|
-
class={cn("rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent flex-1 resize-none", className)}
|
|
16
|
-
{...rest}
|
|
17
|
-
/>
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from "astro/types";
|
|
3
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
4
|
+
import { Textarea } from "../textarea";
|
|
5
|
+
|
|
6
|
+
interface Props extends HTMLAttributes<"textarea"> {
|
|
7
|
+
class?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { class: className = "", ...rest } = Astro.props as Props;
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<Textarea
|
|
14
|
+
data-slot="input-group-control"
|
|
15
|
+
class={cn("rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent flex-1 resize-none", className)}
|
|
16
|
+
{...rest}
|
|
17
|
+
/>
|
|
@@ -1,122 +1,122 @@
|
|
|
1
|
-
---
|
|
2
|
-
/**
|
|
3
|
-
* @component Item
|
|
4
|
-
* @title Item
|
|
5
|
-
* @description A versatile component for displaying any content, combining elements like title, description, media, and actions.
|
|
6
|
-
* @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=2329-7472
|
|
7
|
-
*
|
|
8
|
-
* @preview
|
|
9
|
-
*
|
|
10
|
-
* <div class="flex w-full max-w-md flex-col gap-6">
|
|
11
|
-
* <Item variant="outline">
|
|
12
|
-
* <ItemContent>
|
|
13
|
-
* <ItemTitle>Basic Item</ItemTitle>
|
|
14
|
-
* <ItemDescription>A simple item with title and description.</ItemDescription>
|
|
15
|
-
* </ItemContent>
|
|
16
|
-
* <ItemActions><Button variant="outline" size="sm">Action</Button></ItemActions>
|
|
17
|
-
* </Item>
|
|
18
|
-
* </div>
|
|
19
|
-
*
|
|
20
|
-
* @usage
|
|
21
|
-
*
|
|
22
|
-
* ```astro nocollapse
|
|
23
|
-
* ---
|
|
24
|
-
* import { Item, ItemContent, ItemTitle, ItemDescription, ItemActions, ItemMedia } from '@bejamas/ui/components/item';
|
|
25
|
-
* ---
|
|
26
|
-
*
|
|
27
|
-
* <Item variant="outline">
|
|
28
|
-
* <ItemContent>
|
|
29
|
-
* <ItemTitle>Basic Item</ItemTitle>
|
|
30
|
-
* <ItemDescription>A simple item.</ItemDescription>
|
|
31
|
-
* </ItemContent>
|
|
32
|
-
* <ItemActions>
|
|
33
|
-
* <Button variant="outline" size="sm">Action</Button>
|
|
34
|
-
* </ItemActions>
|
|
35
|
-
* </Item>
|
|
36
|
-
* ```
|
|
37
|
-
*
|
|
38
|
-
* @examples
|
|
39
|
-
*
|
|
40
|
-
* ### Header size
|
|
41
|
-
*
|
|
42
|
-
* <Item variant="outline" size="header" class="max-w-xs">
|
|
43
|
-
* <ItemMedia mediaVariant="image">
|
|
44
|
-
* <img src="https://gradient.bejamas.com/presets/bejamas/marine.png" alt="" />
|
|
45
|
-
* </ItemMedia>
|
|
46
|
-
* <ItemContent>
|
|
47
|
-
* <ItemTitle>Security Alert</ItemTitle>
|
|
48
|
-
* <ItemDescription>A simple item with title and description.</ItemDescription>
|
|
49
|
-
* </ItemContent>
|
|
50
|
-
* </Item>
|
|
51
|
-
*
|
|
52
|
-
* ### Disabled
|
|
53
|
-
*
|
|
54
|
-
* <Item variant="outline" disabled>
|
|
55
|
-
* <ItemContent>
|
|
56
|
-
* <ItemTitle>Basic Item</ItemTitle>
|
|
57
|
-
* <ItemDescription>A simple item with title and description.</ItemDescription>
|
|
58
|
-
* </ItemContent>
|
|
59
|
-
* <ItemActions><Button variant="outline" size="sm" disabled>Action</Button></ItemActions>
|
|
60
|
-
* </Item>
|
|
61
|
-
*/
|
|
62
|
-
|
|
63
|
-
import type { HTMLAttributes } from "astro/types";
|
|
64
|
-
import { cva } from "class-variance-authority";
|
|
65
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
66
|
-
|
|
67
|
-
type ItemRootVariant = "default" | "outline" | "muted";
|
|
68
|
-
type ItemRootSize = "default" | "sm" | "header";
|
|
69
|
-
|
|
70
|
-
interface Props extends HTMLAttributes<"div"> {
|
|
71
|
-
variant?: ItemRootVariant;
|
|
72
|
-
size?: ItemRootSize;
|
|
73
|
-
disabled?: boolean;
|
|
74
|
-
class?: string;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const {
|
|
78
|
-
class: className = "",
|
|
79
|
-
variant = "default",
|
|
80
|
-
size = "default",
|
|
81
|
-
disabled = false,
|
|
82
|
-
...rest
|
|
83
|
-
} = Astro.props as Props;
|
|
84
|
-
|
|
85
|
-
const itemVariants = cva(
|
|
86
|
-
"group/item flex outline-none transition-colors",
|
|
87
|
-
{
|
|
88
|
-
variants: {
|
|
89
|
-
variant: {
|
|
90
|
-
default: "border-transparent",
|
|
91
|
-
outline: "border-border",
|
|
92
|
-
muted: "bg-muted/50 border-transparent",
|
|
93
|
-
},
|
|
94
|
-
size: {
|
|
95
|
-
default: "flex-row flex-wrap items-center gap-3.5 px-4 py-3.5",
|
|
96
|
-
sm: "flex-row flex-wrap items-center gap-2.5 px-3 py-2.5",
|
|
97
|
-
header: "flex-col items-start gap-4 p-4",
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
defaultVariants: {
|
|
101
|
-
variant: "default",
|
|
102
|
-
size: "default",
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
);
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
<div
|
|
109
|
-
{...rest}
|
|
110
|
-
data-slot="item"
|
|
111
|
-
data-variant={variant}
|
|
112
|
-
data-size={size}
|
|
113
|
-
data-disabled={disabled}
|
|
114
|
-
aria-disabled={disabled ? "true" : undefined}
|
|
115
|
-
class={cn(
|
|
116
|
-
"border text-sm rounded-lg has-[:focus-visible]:border-ring has-[:focus-visible]:ring-3 has-[:focus-visible]:ring-ring/50 data-[disabled=true]:bg-muted data-[disabled=true]:pointer-events-none",
|
|
117
|
-
itemVariants({ variant, size }),
|
|
118
|
-
className,
|
|
119
|
-
)}
|
|
120
|
-
>
|
|
121
|
-
<slot />
|
|
122
|
-
</div>
|
|
1
|
+
---
|
|
2
|
+
/**
|
|
3
|
+
* @component Item
|
|
4
|
+
* @title Item
|
|
5
|
+
* @description A versatile component for displaying any content, combining elements like title, description, media, and actions.
|
|
6
|
+
* @figmaUrl https://www.figma.com/design/qXkzdqZ3QPQqgckU3AwIAH/ClickLearn-Lightning-Design-Library?node-id=2329-7472
|
|
7
|
+
*
|
|
8
|
+
* @preview
|
|
9
|
+
*
|
|
10
|
+
* <div class="flex w-full max-w-md flex-col gap-6">
|
|
11
|
+
* <Item variant="outline">
|
|
12
|
+
* <ItemContent>
|
|
13
|
+
* <ItemTitle>Basic Item</ItemTitle>
|
|
14
|
+
* <ItemDescription>A simple item with title and description.</ItemDescription>
|
|
15
|
+
* </ItemContent>
|
|
16
|
+
* <ItemActions><Button variant="outline" size="sm">Action</Button></ItemActions>
|
|
17
|
+
* </Item>
|
|
18
|
+
* </div>
|
|
19
|
+
*
|
|
20
|
+
* @usage
|
|
21
|
+
*
|
|
22
|
+
* ```astro nocollapse
|
|
23
|
+
* ---
|
|
24
|
+
* import { Item, ItemContent, ItemTitle, ItemDescription, ItemActions, ItemMedia } from '@bejamas/ui/components/item';
|
|
25
|
+
* ---
|
|
26
|
+
*
|
|
27
|
+
* <Item variant="outline">
|
|
28
|
+
* <ItemContent>
|
|
29
|
+
* <ItemTitle>Basic Item</ItemTitle>
|
|
30
|
+
* <ItemDescription>A simple item.</ItemDescription>
|
|
31
|
+
* </ItemContent>
|
|
32
|
+
* <ItemActions>
|
|
33
|
+
* <Button variant="outline" size="sm">Action</Button>
|
|
34
|
+
* </ItemActions>
|
|
35
|
+
* </Item>
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @examples
|
|
39
|
+
*
|
|
40
|
+
* ### Header size
|
|
41
|
+
*
|
|
42
|
+
* <Item variant="outline" size="header" class="max-w-xs">
|
|
43
|
+
* <ItemMedia mediaVariant="image">
|
|
44
|
+
* <img src="https://gradient.bejamas.com/presets/bejamas/marine.png" alt="" />
|
|
45
|
+
* </ItemMedia>
|
|
46
|
+
* <ItemContent>
|
|
47
|
+
* <ItemTitle>Security Alert</ItemTitle>
|
|
48
|
+
* <ItemDescription>A simple item with title and description.</ItemDescription>
|
|
49
|
+
* </ItemContent>
|
|
50
|
+
* </Item>
|
|
51
|
+
*
|
|
52
|
+
* ### Disabled
|
|
53
|
+
*
|
|
54
|
+
* <Item variant="outline" disabled>
|
|
55
|
+
* <ItemContent>
|
|
56
|
+
* <ItemTitle>Basic Item</ItemTitle>
|
|
57
|
+
* <ItemDescription>A simple item with title and description.</ItemDescription>
|
|
58
|
+
* </ItemContent>
|
|
59
|
+
* <ItemActions><Button variant="outline" size="sm" disabled>Action</Button></ItemActions>
|
|
60
|
+
* </Item>
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
import type { HTMLAttributes } from "astro/types";
|
|
64
|
+
import { cva } from "class-variance-authority";
|
|
65
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
66
|
+
|
|
67
|
+
type ItemRootVariant = "default" | "outline" | "muted";
|
|
68
|
+
type ItemRootSize = "default" | "sm" | "header";
|
|
69
|
+
|
|
70
|
+
interface Props extends HTMLAttributes<"div"> {
|
|
71
|
+
variant?: ItemRootVariant;
|
|
72
|
+
size?: ItemRootSize;
|
|
73
|
+
disabled?: boolean;
|
|
74
|
+
class?: string;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const {
|
|
78
|
+
class: className = "",
|
|
79
|
+
variant = "default",
|
|
80
|
+
size = "default",
|
|
81
|
+
disabled = false,
|
|
82
|
+
...rest
|
|
83
|
+
} = Astro.props as Props;
|
|
84
|
+
|
|
85
|
+
const itemVariants = cva(
|
|
86
|
+
"group/item flex outline-none transition-colors",
|
|
87
|
+
{
|
|
88
|
+
variants: {
|
|
89
|
+
variant: {
|
|
90
|
+
default: "border-transparent",
|
|
91
|
+
outline: "border-border",
|
|
92
|
+
muted: "bg-muted/50 border-transparent",
|
|
93
|
+
},
|
|
94
|
+
size: {
|
|
95
|
+
default: "flex-row flex-wrap items-center gap-3.5 px-4 py-3.5",
|
|
96
|
+
sm: "flex-row flex-wrap items-center gap-2.5 px-3 py-2.5",
|
|
97
|
+
header: "flex-col items-start gap-4 p-4",
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
defaultVariants: {
|
|
101
|
+
variant: "default",
|
|
102
|
+
size: "default",
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
);
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
<div
|
|
109
|
+
{...rest}
|
|
110
|
+
data-slot="item"
|
|
111
|
+
data-variant={variant}
|
|
112
|
+
data-size={size}
|
|
113
|
+
data-disabled={disabled}
|
|
114
|
+
aria-disabled={disabled ? "true" : undefined}
|
|
115
|
+
class={cn(
|
|
116
|
+
"border text-sm rounded-lg has-[:focus-visible]:border-ring has-[:focus-visible]:ring-3 has-[:focus-visible]:ring-ring/50 data-[disabled=true]:bg-muted data-[disabled=true]:pointer-events-none",
|
|
117
|
+
itemVariants({ variant, size }),
|
|
118
|
+
className,
|
|
119
|
+
)}
|
|
120
|
+
>
|
|
121
|
+
<slot />
|
|
122
|
+
</div>
|
|
@@ -1,21 +1,21 @@
|
|
|
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="item-actions"
|
|
18
|
-
class={cn("gap-2 flex items-center", className)}
|
|
19
|
-
>
|
|
20
|
-
<slot />
|
|
21
|
-
</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="item-actions"
|
|
18
|
+
class={cn("gap-2 flex items-center", className)}
|
|
19
|
+
>
|
|
20
|
+
<slot />
|
|
21
|
+
</div>
|
|
@@ -1,25 +1,25 @@
|
|
|
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="item-content"
|
|
18
|
-
class={cn(
|
|
19
|
-
"gap-1",
|
|
20
|
-
"flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none",
|
|
21
|
-
className,
|
|
22
|
-
)}
|
|
23
|
-
>
|
|
24
|
-
<slot />
|
|
25
|
-
</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="item-content"
|
|
18
|
+
class={cn(
|
|
19
|
+
"gap-1",
|
|
20
|
+
"flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none",
|
|
21
|
+
className,
|
|
22
|
+
)}
|
|
23
|
+
>
|
|
24
|
+
<slot />
|
|
25
|
+
</div>
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
---
|
|
2
|
-
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
3
|
-
import type { HTMLAttributes } from "astro/types";
|
|
4
|
-
|
|
5
|
-
interface Props extends HTMLAttributes<"p"> {
|
|
6
|
-
class?: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const {
|
|
10
|
-
class: className = "",
|
|
11
|
-
...rest
|
|
12
|
-
} = Astro.props as Props;
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
<p
|
|
16
|
-
{...rest}
|
|
17
|
-
data-slot="item-description"
|
|
18
|
-
class={cn(
|
|
19
|
-
"text-muted-foreground text-left text-sm leading-normal",
|
|
20
|
-
"line-clamp-2 text-balance",
|
|
21
|
-
className,
|
|
22
|
-
)}
|
|
23
|
-
>
|
|
24
|
-
<slot />
|
|
25
|
-
</p>
|
|
1
|
+
---
|
|
2
|
+
import { cn } from "@cl-light-ds/ui/lib/utils";
|
|
3
|
+
import type { HTMLAttributes } from "astro/types";
|
|
4
|
+
|
|
5
|
+
interface Props extends HTMLAttributes<"p"> {
|
|
6
|
+
class?: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const {
|
|
10
|
+
class: className = "",
|
|
11
|
+
...rest
|
|
12
|
+
} = Astro.props as Props;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<p
|
|
16
|
+
{...rest}
|
|
17
|
+
data-slot="item-description"
|
|
18
|
+
class={cn(
|
|
19
|
+
"text-muted-foreground text-left text-sm leading-normal",
|
|
20
|
+
"line-clamp-2 text-balance",
|
|
21
|
+
className,
|
|
22
|
+
)}
|
|
23
|
+
>
|
|
24
|
+
<slot />
|
|
25
|
+
</p>
|
|
@@ -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="item-footer"
|
|
18
|
-
class={cn(
|
|
19
|
-
"gap-2 flex basis-full items-center justify-between",
|
|
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="item-footer"
|
|
18
|
+
class={cn(
|
|
19
|
+
"gap-2 flex basis-full items-center justify-between",
|
|
20
|
+
className,
|
|
21
|
+
)}
|
|
22
|
+
>
|
|
23
|
+
<slot />
|
|
24
|
+
</div>
|