cortena-ui 1.3.0 → 1.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.
- package/README.md +74 -3
- package/dist/a2ui/catalogue-doc.d.ts +44 -0
- package/dist/a2ui/catalogue-doc.js +169 -0
- package/dist/a2ui/catalogue-doc.js.map +1 -0
- package/dist/a2ui/catalogue.d.ts +44 -0
- package/dist/a2ui/catalogue.js +942 -0
- package/dist/a2ui/catalogue.js.map +1 -0
- package/dist/a2ui/index.d.ts +7 -0
- package/dist/a2ui/message.d.ts +232 -0
- package/dist/a2ui/message.js +365 -0
- package/dist/a2ui/message.js.map +1 -0
- package/dist/a2ui/renderer.d.ts +46 -0
- package/dist/a2ui/renderer.js +252 -0
- package/dist/a2ui/renderer.js.map +1 -0
- package/dist/a2ui/views.d.ts +80 -0
- package/dist/a2ui/views.js +596 -0
- package/dist/a2ui/views.js.map +1 -0
- package/dist/a2ui.d.ts +8 -0
- package/dist/a2ui.js +7 -0
- package/dist/chart.d.ts +9 -0
- package/dist/chart.js +9 -0
- package/dist/components/accordion.d.ts +22 -0
- package/dist/components/accordion.js +63 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert.d.ts +15 -0
- package/dist/components/alert.js +64 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/avatar.d.ts +18 -0
- package/dist/components/avatar.js +40 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +12 -0
- package/dist/components/badge.js +47 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/breadcrumb.d.ts +71 -0
- package/dist/components/breadcrumb.js +123 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button-link.d.ts +28 -0
- package/dist/components/button-link.js +24 -0
- package/dist/components/button-link.js.map +1 -0
- package/dist/components/button.d.ts +24 -0
- package/dist/components/button.js +65 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar.d.ts +28 -0
- package/dist/components/calendar.js +123 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +32 -0
- package/dist/components/card.js +57 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/chart/chart.d.ts +71 -0
- package/dist/components/chart/chart.js +167 -0
- package/dist/components/chart/chart.js.map +1 -0
- package/dist/components/chart/container.d.ts +88 -0
- package/dist/components/chart/container.js +189 -0
- package/dist/components/chart/container.js.map +1 -0
- package/dist/components/chart/data.js +128 -0
- package/dist/components/chart/data.js.map +1 -0
- package/dist/components/chart/index.d.ts +9 -0
- package/dist/components/chart/index.js +10 -0
- package/dist/components/chart/nivo-charts.js +225 -0
- package/dist/components/chart/nivo-charts.js.map +1 -0
- package/dist/components/chart/nivo-lazy.js +50 -0
- package/dist/components/chart/nivo-lazy.js.map +1 -0
- package/dist/components/chart/nivo-theme.d.ts +156 -0
- package/dist/components/chart/nivo-theme.js +161 -0
- package/dist/components/chart/nivo-theme.js.map +1 -0
- package/dist/components/chart/recharts-charts.js +276 -0
- package/dist/components/chart/recharts-charts.js.map +1 -0
- package/dist/components/chart/recharts-lazy.js +58 -0
- package/dist/components/chart/recharts-lazy.js.map +1 -0
- package/dist/components/chart/recharts-parts.d.ts +10 -0
- package/dist/components/chart/recharts-parts.js +25 -0
- package/dist/components/chart/recharts-parts.js.map +1 -0
- package/dist/components/chart/tokens.d.ts +62 -0
- package/dist/components/chart/tokens.js +192 -0
- package/dist/components/chart/tokens.js.map +1 -0
- package/dist/components/chart/types.d.ts +114 -0
- package/dist/components/chart/types.js +27 -0
- package/dist/components/chart/types.js.map +1 -0
- package/dist/components/checkbox.d.ts +20 -0
- package/dist/components/checkbox.js +24 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/chip.d.ts +17 -0
- package/dist/components/chip.js +47 -0
- package/dist/components/chip.js.map +1 -0
- package/dist/components/combobox.d.ts +76 -0
- package/dist/components/combobox.js +201 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command.d.ts +50 -0
- package/dist/components/command.js +117 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/data-table/data-table.d.ts +65 -0
- package/dist/components/data-table/data-table.js +588 -0
- package/dist/components/data-table/data-table.js.map +1 -0
- package/dist/components/data-table/export.d.ts +23 -0
- package/dist/components/data-table/export.js +95 -0
- package/dist/components/data-table/export.js.map +1 -0
- package/dist/components/data-table/features.d.ts +66 -0
- package/dist/components/data-table/features.js +103 -0
- package/dist/components/data-table/features.js.map +1 -0
- package/dist/components/data-table/index.d.ts +8 -0
- package/dist/components/data-table/parts.d.ts +79 -0
- package/dist/components/data-table/parts.js +400 -0
- package/dist/components/data-table/parts.js.map +1 -0
- package/dist/components/data-table/system-columns.js +84 -0
- package/dist/components/data-table/system-columns.js.map +1 -0
- package/dist/components/data-table/types.d.ts +172 -0
- package/dist/components/data-table/use-data-table.d.ts +19 -0
- package/dist/components/data-table/use-data-table.js +171 -0
- package/dist/components/data-table/use-data-table.js.map +1 -0
- package/dist/components/data-table/use-server-source.js +200 -0
- package/dist/components/data-table/use-server-source.js.map +1 -0
- package/dist/components/date-field.d.ts +54 -0
- package/dist/components/date-field.js +235 -0
- package/dist/components/date-field.js.map +1 -0
- package/dist/components/date-picker.d.ts +42 -0
- package/dist/components/date-picker.js +125 -0
- package/dist/components/date-picker.js.map +1 -0
- package/dist/components/dialog.d.ts +36 -0
- package/dist/components/dialog.js +97 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +54 -0
- package/dist/components/dropdown-menu.js +191 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/dropzone.d.ts +48 -0
- package/dist/components/dropzone.js +185 -0
- package/dist/components/dropzone.js.map +1 -0
- package/dist/components/empty-state.d.ts +22 -0
- package/dist/components/empty-state.js +46 -0
- package/dist/components/empty-state.js.map +1 -0
- package/dist/components/error-banner.d.ts +17 -0
- package/dist/components/error-banner.js +52 -0
- package/dist/components/error-banner.js.map +1 -0
- package/dist/components/field.d.ts +64 -0
- package/dist/components/field.js +133 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/form.d.ts +37 -0
- package/dist/components/form.js +103 -0
- package/dist/components/form.js.map +1 -0
- package/dist/components/input.d.ts +17 -0
- package/dist/components/input.js +26 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/kbd.d.ts +11 -0
- package/dist/components/kbd.js +20 -0
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.d.ts +14 -0
- package/dist/components/label.js +28 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/loading-skeleton.d.ts +22 -0
- package/dist/components/loading-skeleton.js +123 -0
- package/dist/components/loading-skeleton.js.map +1 -0
- package/dist/components/markdown.d.ts +44 -0
- package/dist/components/markdown.js +231 -0
- package/dist/components/markdown.js.map +1 -0
- package/dist/components/page-header.d.ts +26 -0
- package/dist/components/page-header.js +53 -0
- package/dist/components/page-header.js.map +1 -0
- package/dist/components/popover.d.ts +29 -0
- package/dist/components/popover.js +74 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.d.ts +22 -0
- package/dist/components/progress.js +49 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +20 -0
- package/dist/components/radio-group.js +29 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/scroll-area.d.ts +25 -0
- package/dist/components/scroll-area.js +39 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/section-card.d.ts +29 -0
- package/dist/components/section-card.js +55 -0
- package/dist/components/section-card.js.map +1 -0
- package/dist/components/segmented.d.ts +27 -0
- package/dist/components/segmented.js +32 -0
- package/dist/components/segmented.js.map +1 -0
- package/dist/components/select.d.ts +62 -0
- package/dist/components/select.js +97 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +19 -0
- package/dist/components/separator.js +23 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/sheet.d.ts +35 -0
- package/dist/components/sheet.js +131 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/skeleton.d.ts +12 -0
- package/dist/components/skeleton.js +22 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/sortable-list.d.ts +67 -0
- package/dist/components/sortable-list.js +206 -0
- package/dist/components/sortable-list.js.map +1 -0
- package/dist/components/spinner.d.ts +29 -0
- package/dist/components/spinner.js +34 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/status-dot.d.ts +26 -0
- package/dist/components/status-dot.js +47 -0
- package/dist/components/status-dot.js.map +1 -0
- package/dist/components/switch.d.ts +21 -0
- package/dist/components/switch.js +21 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/tabs.d.ts +24 -0
- package/dist/components/tabs.js +60 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +19 -0
- package/dist/components/textarea.js +47 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toast.d.ts +47 -0
- package/dist/components/toast.js +106 -0
- package/dist/components/toast.js.map +1 -0
- package/dist/components/toolbar.d.ts +19 -0
- package/dist/components/toolbar.js +45 -0
- package/dist/components/toolbar.js.map +1 -0
- package/dist/components/tooltip.d.ts +28 -0
- package/dist/components/tooltip.js +59 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/core.d.ts +44 -0
- package/dist/core.js +44 -0
- package/dist/data-table.d.ts +9 -0
- package/dist/data-table.js +7 -0
- package/dist/form.d.ts +7 -0
- package/dist/form.js +7 -0
- package/dist/hooks/use-cortena-theme.d.ts +98 -0
- package/dist/hooks/use-cortena-theme.js +145 -0
- package/dist/hooks/use-cortena-theme.js.map +1 -0
- package/dist/index.d.ts +75 -2678
- package/dist/index.js +66 -8598
- package/dist/lib/cn.d.ts +10 -0
- package/dist/lib/cn.js +15 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/render.d.ts +23 -0
- package/dist/lib/render.js +20 -0
- package/dist/lib/render.js.map +1 -0
- package/dist/lib/shakeable.js +39 -0
- package/dist/lib/shakeable.js.map +1 -0
- package/dist/markdown.d.ts +3 -0
- package/dist/markdown.js +3 -0
- package/dist/sortable-list.d.ts +3 -0
- package/dist/sortable-list.js +3 -0
- package/package.json +37 -14
- package/src/a2ui/catalogue.ts +140 -103
- package/src/a2ui/views.tsx +5 -2
- package/src/components/alert.tsx +1 -1
- package/src/components/badge.tsx +1 -1
- package/src/components/button.tsx +1 -1
- package/src/components/chart/chart.tsx +72 -25
- package/src/components/chart/container.tsx +24 -39
- package/src/components/chart/index.tsx +4 -2
- package/src/components/chart/nivo-charts.tsx +41 -13
- package/src/components/chart/nivo-lazy.tsx +52 -0
- package/src/components/chart/recharts-charts.tsx +98 -3
- package/src/components/chart/recharts-lazy.tsx +72 -0
- package/src/components/chart/recharts-parts.tsx +34 -0
- package/src/components/chart/tokens.ts +1 -1
- package/src/components/chart/types.ts +14 -0
- package/src/components/chip.tsx +1 -1
- package/src/components/combobox.tsx +2 -2
- package/src/components/data-table/export.ts +18 -2
- package/src/components/data-table/features.ts +77 -45
- package/src/components/data-table/parts.tsx +15 -0
- package/src/components/data-table/use-data-table.ts +7 -2
- package/src/components/data-table/use-server-source.ts +17 -4
- package/src/components/date-field.tsx +1 -1
- package/src/components/error-banner.tsx +1 -1
- package/src/components/field.tsx +2 -2
- package/src/components/form.tsx +2 -2
- package/src/components/input.tsx +1 -1
- package/src/components/label.tsx +1 -1
- package/src/components/markdown.tsx +5 -4
- package/src/components/sheet.tsx +2 -2
- package/src/components/sortable-list.tsx +2 -2
- package/src/components/textarea.tsx +1 -1
- package/src/components/toast.tsx +1 -1
- package/src/entries/a2ui.ts +11 -0
- package/src/entries/chart.ts +10 -0
- package/src/entries/core.ts +91 -0
- package/src/entries/data-table.ts +9 -0
- package/src/entries/form.ts +24 -0
- package/src/entries/markdown.ts +9 -0
- package/src/entries/sortable-list.ts +13 -0
- package/src/index.ts +32 -98
- package/src/lib/shakeable.ts +33 -0
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import { Popover } from "@base-ui/react/popover";
|
|
6
|
+
//#region src/components/popover.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Popover.
|
|
9
|
+
*
|
|
10
|
+
* `PopoverContent` composes Base UI's Portal + Positioner + Popup so consumers
|
|
11
|
+
* keep writing `<PopoverContent side="bottom" align="start">`; the positioning
|
|
12
|
+
* props are forwarded to the Positioner, which is where Base UI reads them.
|
|
13
|
+
*
|
|
14
|
+
* Radix users: `asChild` on the trigger becomes `render={<Button />}`;
|
|
15
|
+
* `PopoverAnchor` is gone — pass `anchor={ref}` to `PopoverContent` instead.
|
|
16
|
+
*/
|
|
17
|
+
function Popover$1(props) {
|
|
18
|
+
return /* @__PURE__ */ jsx(Popover.Root, { ...props });
|
|
19
|
+
}
|
|
20
|
+
function PopoverTrigger(props) {
|
|
21
|
+
return /* @__PURE__ */ jsx(Popover.Trigger, {
|
|
22
|
+
"data-slot": "popover-trigger",
|
|
23
|
+
...props
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function PopoverClose(props) {
|
|
27
|
+
return /* @__PURE__ */ jsx(Popover.Close, {
|
|
28
|
+
"data-slot": "popover-close",
|
|
29
|
+
...props
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function PopoverTitle({ className, ...props }) {
|
|
33
|
+
return /* @__PURE__ */ jsx(Popover.Title, {
|
|
34
|
+
"data-slot": "popover-title",
|
|
35
|
+
className: cn("text-[length:var(--ds-text-body-sm)] font-semibold text-[color:var(--ds-foreground)]", className),
|
|
36
|
+
...props
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function PopoverDescription({ className, ...props }) {
|
|
40
|
+
return /* @__PURE__ */ jsx(Popover.Description, {
|
|
41
|
+
"data-slot": "popover-description",
|
|
42
|
+
className: cn("text-[length:var(--ds-text-caption-lg)] text-[color:var(--ds-muted-foreground)]", className),
|
|
43
|
+
...props
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function PopoverContent({ className, side = "bottom", align = "center", sideOffset = 4, alignOffset, anchor, collisionBoundary, collisionPadding, collisionAvoidance, sticky, positionMethod, keepMounted, container, ...props }) {
|
|
47
|
+
return /* @__PURE__ */ jsx(Popover.Portal, {
|
|
48
|
+
keepMounted,
|
|
49
|
+
container,
|
|
50
|
+
children: /* @__PURE__ */ jsx(Popover.Positioner, {
|
|
51
|
+
"data-slot": "popover-positioner",
|
|
52
|
+
side,
|
|
53
|
+
align,
|
|
54
|
+
sideOffset,
|
|
55
|
+
alignOffset,
|
|
56
|
+
anchor,
|
|
57
|
+
collisionBoundary,
|
|
58
|
+
collisionPadding,
|
|
59
|
+
collisionAvoidance,
|
|
60
|
+
sticky,
|
|
61
|
+
positionMethod,
|
|
62
|
+
className: "isolate z-50",
|
|
63
|
+
children: /* @__PURE__ */ jsx(Popover.Popup, {
|
|
64
|
+
"data-slot": "popover-content",
|
|
65
|
+
className: cn("w-72 p-4 outline-none", "rounded-[var(--ds-radius-lg)] border border-[var(--ds-border)]", "bg-[var(--ds-popover)] text-[color:var(--ds-popover-foreground)] shadow-[var(--ds-shadow-lg)]", "open:animate-in open:fade-in-0 open:zoom-in-95", "closed:animate-out closed:fade-out-0 closed:zoom-out-95", "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", "duration-[var(--ds-duration-fast)] ease-[var(--ds-ease-out)]", className),
|
|
66
|
+
...props
|
|
67
|
+
})
|
|
68
|
+
})
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
export { Popover$1 as Popover, PopoverClose, PopoverContent, PopoverDescription, PopoverTitle, PopoverTrigger };
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=popover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.js","names":["Popover","PopoverPrimitive"],"sources":["../../src/components/popover.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as PopoverPrimitive } from \"@base-ui/react/popover\";\nimport { cn } from \"@/lib/cn\";\n\n/**\n * Popover.\n *\n * `PopoverContent` composes Base UI's Portal + Positioner + Popup so consumers\n * keep writing `<PopoverContent side=\"bottom\" align=\"start\">`; the positioning\n * props are forwarded to the Positioner, which is where Base UI reads them.\n *\n * Radix users: `asChild` on the trigger becomes `render={<Button />}`;\n * `PopoverAnchor` is gone — pass `anchor={ref}` to `PopoverContent` instead.\n */\nfunction Popover(props: PopoverPrimitive.Root.Props) {\n return <PopoverPrimitive.Root {...props} />;\n}\n\nfunction PopoverTrigger(props: PopoverPrimitive.Trigger.Props) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverClose(props: PopoverPrimitive.Close.Props) {\n return <PopoverPrimitive.Close data-slot=\"popover-close\" {...props} />;\n}\n\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\n return (\n <PopoverPrimitive.Title\n data-slot=\"popover-title\"\n className={cn(\n \"text-[length:var(--ds-text-body-sm)] font-semibold text-[color:var(--ds-foreground)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PopoverDescription({ className, ...props }: PopoverPrimitive.Description.Props) {\n return (\n <PopoverPrimitive.Description\n data-slot=\"popover-description\"\n className={cn(\n \"text-[length:var(--ds-text-caption-lg)] text-[color:var(--ds-muted-foreground)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\ntype PositionerProps = Pick<\n PopoverPrimitive.Positioner.Props,\n | \"side\"\n | \"align\"\n | \"sideOffset\"\n | \"alignOffset\"\n | \"anchor\"\n | \"collisionBoundary\"\n | \"collisionPadding\"\n | \"collisionAvoidance\"\n | \"sticky\"\n | \"positionMethod\"\n>;\n\nexport interface PopoverContentProps extends PopoverPrimitive.Popup.Props, PositionerProps {\n /** Keep the popup mounted in the DOM while hidden. */\n keepMounted?: boolean;\n /** Where to portal the popup; defaults to `<body>`. */\n container?: PopoverPrimitive.Portal.Props[\"container\"];\n}\n\nfunction PopoverContent({\n className,\n side = \"bottom\",\n align = \"center\",\n sideOffset = 4,\n alignOffset,\n anchor,\n collisionBoundary,\n collisionPadding,\n collisionAvoidance,\n sticky,\n positionMethod,\n keepMounted,\n container,\n ...props\n}: PopoverContentProps) {\n return (\n <PopoverPrimitive.Portal keepMounted={keepMounted} container={container}>\n <PopoverPrimitive.Positioner\n data-slot=\"popover-positioner\"\n side={side}\n align={align}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n anchor={anchor}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n collisionAvoidance={collisionAvoidance}\n sticky={sticky}\n positionMethod={positionMethod}\n className=\"isolate z-50\"\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-content\"\n className={cn(\n \"w-72 p-4 outline-none\",\n \"rounded-[var(--ds-radius-lg)] border border-[var(--ds-border)]\",\n \"bg-[var(--ds-popover)] text-[color:var(--ds-popover-foreground)] shadow-[var(--ds-shadow-lg)]\",\n \"open:animate-in open:fade-in-0 open:zoom-in-95\",\n \"closed:animate-out closed:fade-out-0 closed:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n \"duration-[var(--ds-duration-fast)] ease-[var(--ds-ease-out)]\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n );\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverClose,\n PopoverTitle,\n PopoverDescription,\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,SAASA,UAAQ,OAAoC;CACnD,OAAO,oBAACC,QAAiB,MAAlB,EAAuB,GAAI,MAAQ,CAAA;AAC5C;AAEA,SAAS,eAAe,OAAuC;CAC7D,OAAO,oBAACA,QAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;AAEA,SAAS,aAAa,OAAqC;CACzD,OAAO,oBAACA,QAAiB,OAAlB;EAAwB,aAAU;EAAgB,GAAI;CAAQ,CAAA;AACvE;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,SAAuC;CAC3E,OACE,oBAACA,QAAiB,OAAlB;EACE,aAAU;EACV,WAAW,GACT,wFACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAA6C;CACvF,OACE,oBAACA,QAAiB,aAAlB;EACE,aAAU;EACV,WAAW,GACT,mFACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAuBA,SAAS,eAAe,EACtB,WACA,OAAO,UACP,QAAQ,UACR,aAAa,GACb,aACA,QACA,mBACA,kBACA,oBACA,QACA,gBACA,aACA,WACA,GAAG,SACmB;CACtB,OACE,oBAACA,QAAiB,QAAlB;EAAsC;EAAwB;EAC5D,UAAA,oBAACA,QAAiB,YAAlB;GACE,aAAU;GACJ;GACC;GACK;GACC;GACL;GACW;GACD;GACE;GACZ;GACQ;GAChB,WAAU;GAEV,UAAA,oBAACA,QAAiB,OAAlB;IACE,aAAU;IACV,WAAW,GACT,yBACA,kEACA,iGACA,kDACA,2DACA,+JACA,gEACA,SACF;IACA,GAAI;GACL,CAAA;EAC0B,CAAA;CACN,CAAA;AAE7B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Progress } from "@base-ui/react/progress";
|
|
4
|
+
//#region src/components/progress.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Progress.
|
|
7
|
+
*
|
|
8
|
+
* `Progress` renders the Base UI root (a `<div role="progressbar">` carrying
|
|
9
|
+
* `aria-valuenow`) with the track and indicator already inside; Base UI sizes
|
|
10
|
+
* the indicator to `value` as a percentage of `min`..`max`. Put a
|
|
11
|
+
* `ProgressLabel` and `ProgressValue` in `children` for a captioned bar; they
|
|
12
|
+
* render in a row above the track. `value={null}` gives an indeterminate bar.
|
|
13
|
+
*/
|
|
14
|
+
export interface ProgressProps extends React.ComponentProps<typeof Progress.Root> {}
|
|
15
|
+
declare function Progress$1({ className, children, ...props }: ProgressProps): React.JSX.Element;
|
|
16
|
+
declare function ProgressTrack({ className, ...props }: React.ComponentProps<typeof Progress.Track>): React.JSX.Element;
|
|
17
|
+
declare function ProgressIndicator({ className, ...props }: React.ComponentProps<typeof Progress.Indicator>): React.JSX.Element;
|
|
18
|
+
declare function ProgressLabel({ className, ...props }: React.ComponentProps<typeof Progress.Label>): React.JSX.Element;
|
|
19
|
+
declare function ProgressValue({ className, ...props }: React.ComponentProps<typeof Progress.Value>): React.JSX.Element;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { Progress$1 as Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue };
|
|
22
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { Progress } from "@base-ui/react/progress";
|
|
6
|
+
//#region src/components/progress.tsx
|
|
7
|
+
function Progress$1({ className, children, ...props }) {
|
|
8
|
+
return /* @__PURE__ */ jsxs(Progress.Root, {
|
|
9
|
+
"data-slot": "progress",
|
|
10
|
+
className: cn("flex w-full flex-col gap-2", className),
|
|
11
|
+
...props,
|
|
12
|
+
children: [children ? /* @__PURE__ */ jsx("div", {
|
|
13
|
+
className: "flex items-center justify-between gap-2",
|
|
14
|
+
children
|
|
15
|
+
}) : null, /* @__PURE__ */ jsx(ProgressTrack, { children: /* @__PURE__ */ jsx(ProgressIndicator, {}) })]
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function ProgressTrack({ className, ...props }) {
|
|
19
|
+
return /* @__PURE__ */ jsx(Progress.Track, {
|
|
20
|
+
"data-slot": "progress-track",
|
|
21
|
+
className: cn("relative h-2 w-full overflow-hidden rounded-[var(--ds-radius-full)] bg-[var(--ds-border)]", className),
|
|
22
|
+
...props
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function ProgressIndicator({ className, ...props }) {
|
|
26
|
+
return /* @__PURE__ */ jsx(Progress.Indicator, {
|
|
27
|
+
"data-slot": "progress-indicator",
|
|
28
|
+
className: cn("h-full rounded-[var(--ds-radius-full)] bg-[var(--ds-primary)]", "transition-[width] duration-[var(--ds-duration-base)] ease-[var(--ds-ease-out)]", "data-[indeterminate]:w-1/3 data-[indeterminate]:animate-pulse", className),
|
|
29
|
+
...props
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function ProgressLabel({ className, ...props }) {
|
|
33
|
+
return /* @__PURE__ */ jsx(Progress.Label, {
|
|
34
|
+
"data-slot": "progress-label",
|
|
35
|
+
className: cn("text-[length:var(--ds-text-caption-lg)] font-medium text-[color:var(--ds-foreground)]", className),
|
|
36
|
+
...props
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function ProgressValue({ className, ...props }) {
|
|
40
|
+
return /* @__PURE__ */ jsx(Progress.Value, {
|
|
41
|
+
"data-slot": "progress-value",
|
|
42
|
+
className: cn("text-[length:var(--ds-text-caption-lg)] tabular-nums text-[color:var(--ds-muted-foreground)]", className),
|
|
43
|
+
...props
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { Progress$1 as Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","names":["Progress","BaseProgress"],"sources":["../../src/components/progress.tsx"],"sourcesContent":["\"use client\";\n\nimport { Progress as BaseProgress } from \"@base-ui/react/progress\";\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/cn\";\n\n/**\n * Progress.\n *\n * `Progress` renders the Base UI root (a `<div role=\"progressbar\">` carrying\n * `aria-valuenow`) with the track and indicator already inside; Base UI sizes\n * the indicator to `value` as a percentage of `min`..`max`. Put a\n * `ProgressLabel` and `ProgressValue` in `children` for a captioned bar; they\n * render in a row above the track. `value={null}` gives an indeterminate bar.\n */\nexport interface ProgressProps extends React.ComponentProps<typeof BaseProgress.Root> {}\n\nfunction Progress({ className, children, ...props }: ProgressProps) {\n return (\n <BaseProgress.Root data-slot=\"progress\" className={cn(\"flex w-full flex-col gap-2\", className)} {...props}>\n {children ? <div className=\"flex items-center justify-between gap-2\">{children}</div> : null}\n <ProgressTrack>\n <ProgressIndicator />\n </ProgressTrack>\n </BaseProgress.Root>\n );\n}\n\nfunction ProgressTrack({ className, ...props }: React.ComponentProps<typeof BaseProgress.Track>) {\n return (\n <BaseProgress.Track\n data-slot=\"progress-track\"\n className={cn(\n \"relative h-2 w-full overflow-hidden rounded-[var(--ds-radius-full)] bg-[var(--ds-border)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ProgressIndicator({ className, ...props }: React.ComponentProps<typeof BaseProgress.Indicator>) {\n return (\n <BaseProgress.Indicator\n data-slot=\"progress-indicator\"\n className={cn(\n \"h-full rounded-[var(--ds-radius-full)] bg-[var(--ds-primary)]\",\n \"transition-[width] duration-[var(--ds-duration-base)] ease-[var(--ds-ease-out)]\",\n \"data-[indeterminate]:w-1/3 data-[indeterminate]:animate-pulse\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ProgressLabel({ className, ...props }: React.ComponentProps<typeof BaseProgress.Label>) {\n return (\n <BaseProgress.Label\n data-slot=\"progress-label\"\n className={cn(\n \"text-[length:var(--ds-text-caption-lg)] font-medium text-[color:var(--ds-foreground)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ProgressValue({ className, ...props }: React.ComponentProps<typeof BaseProgress.Value>) {\n return (\n <BaseProgress.Value\n data-slot=\"progress-value\"\n className={cn(\n \"text-[length:var(--ds-text-caption-lg)] tabular-nums text-[color:var(--ds-muted-foreground)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue };\n"],"mappings":";;;;;;AAiBA,SAASA,WAAS,EAAE,WAAW,UAAU,GAAG,SAAwB;CAClE,OACE,qBAACC,SAAa,MAAd;EAAmB,aAAU;EAAW,WAAW,GAAG,8BAA8B,SAAS;EAAG,GAAI;EAApG,UAAA,CACG,WAAW,oBAAC,OAAD;GAAK,WAAU;GAA2C;EAAc,CAAA,IAAI,MACxF,oBAAC,eAAD,EAAA,UACE,oBAAC,mBAAD,CAAoB,CAAA,EACP,CAAA,CACE;;AAEvB;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,SAA0D;CAC/F,OACE,oBAACA,SAAa,OAAd;EACE,aAAU;EACV,WAAW,GACT,6FACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,kBAAkB,EAAE,WAAW,GAAG,SAA8D;CACvG,OACE,oBAACA,SAAa,WAAd;EACE,aAAU;EACV,WAAW,GACT,iEACA,mFACA,iEACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,SAA0D;CAC/F,OACE,oBAACA,SAAa,OAAd;EACE,aAAU;EACV,WAAW,GACT,yFACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,SAA0D;CAC/F,OACE,oBAACA,SAAa,OAAd;EACE,aAAU;EACV,WAAW,GACT,gGACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Radio } from "@base-ui/react/radio";
|
|
4
|
+
import { RadioGroup } from "@base-ui/react/radio-group";
|
|
5
|
+
//#region src/components/radio-group.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Radio group.
|
|
8
|
+
*
|
|
9
|
+
* `RadioGroup` owns the value (`value` / `defaultValue` / `onValueChange`) and
|
|
10
|
+
* renders a `<div role="radiogroup">`; each `RadioGroupItem` is a Base UI
|
|
11
|
+
* `Radio.Root` (`<span role="radio">`) with a dot indicator that only mounts
|
|
12
|
+
* while checked. Arrow keys move the selection, as the ARIA pattern requires.
|
|
13
|
+
*/
|
|
14
|
+
export interface RadioGroupProps extends React.ComponentProps<typeof RadioGroup> {}
|
|
15
|
+
declare function RadioGroup$1({ className, ...props }: RadioGroupProps): React.JSX.Element;
|
|
16
|
+
export interface RadioGroupItemProps extends React.ComponentProps<typeof Radio.Root> {}
|
|
17
|
+
declare function RadioGroupItem({ className, ...props }: RadioGroupItemProps): React.JSX.Element;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { RadioGroup$1 as RadioGroup, RadioGroupItem };
|
|
20
|
+
//# sourceMappingURL=radio-group.d.ts.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import { Radio } from "@base-ui/react/radio";
|
|
6
|
+
import { RadioGroup } from "@base-ui/react/radio-group";
|
|
7
|
+
//#region src/components/radio-group.tsx
|
|
8
|
+
function RadioGroup$1({ className, ...props }) {
|
|
9
|
+
return /* @__PURE__ */ jsx(RadioGroup, {
|
|
10
|
+
"data-slot": "radio-group",
|
|
11
|
+
className: cn("grid gap-3", className),
|
|
12
|
+
...props
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function RadioGroupItem({ className, ...props }) {
|
|
16
|
+
return /* @__PURE__ */ jsx(Radio.Root, {
|
|
17
|
+
"data-slot": "radio-group-item",
|
|
18
|
+
className: cn("peer inline-flex aspect-square size-4 shrink-0 items-center justify-center rounded-[var(--ds-radius-full)] border", "border-[var(--ds-input)] bg-[var(--ds-background)] text-[color:var(--ds-primary)]", "transition-[border-color,box-shadow] duration-[var(--ds-duration-fast)] ease-[var(--ds-ease-out)]", "outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--ds-ring)]/40", "data-[checked]:border-[var(--ds-primary)]", "data-[disabled]:pointer-events-none data-[disabled]:opacity-50", "aria-invalid:border-[var(--ds-destructive)] aria-invalid:ring-[3px] aria-invalid:ring-[var(--ds-destructive)]/20", className),
|
|
19
|
+
...props,
|
|
20
|
+
children: /* @__PURE__ */ jsx(Radio.Indicator, {
|
|
21
|
+
"data-slot": "radio-group-indicator",
|
|
22
|
+
className: "block size-2 rounded-[var(--ds-radius-full)] bg-current"
|
|
23
|
+
})
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { RadioGroup$1 as RadioGroup, RadioGroupItem };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=radio-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-group.js","names":["RadioGroup","BaseRadioGroup"],"sources":["../../src/components/radio-group.tsx"],"sourcesContent":["\"use client\";\n\nimport { Radio } from \"@base-ui/react/radio\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/cn\";\n\n/**\n * Radio group.\n *\n * `RadioGroup` owns the value (`value` / `defaultValue` / `onValueChange`) and\n * renders a `<div role=\"radiogroup\">`; each `RadioGroupItem` is a Base UI\n * `Radio.Root` (`<span role=\"radio\">`) with a dot indicator that only mounts\n * while checked. Arrow keys move the selection, as the ARIA pattern requires.\n */\nexport interface RadioGroupProps extends React.ComponentProps<typeof BaseRadioGroup> {}\n\nfunction RadioGroup({ className, ...props }: RadioGroupProps) {\n return <BaseRadioGroup data-slot=\"radio-group\" className={cn(\"grid gap-3\", className)} {...props} />;\n}\n\nexport interface RadioGroupItemProps extends React.ComponentProps<typeof Radio.Root> {}\n\nfunction RadioGroupItem({ className, ...props }: RadioGroupItemProps) {\n return (\n <Radio.Root\n data-slot=\"radio-group-item\"\n className={cn(\n \"peer inline-flex aspect-square size-4 shrink-0 items-center justify-center rounded-[var(--ds-radius-full)] border\",\n \"border-[var(--ds-input)] bg-[var(--ds-background)] text-[color:var(--ds-primary)]\",\n \"transition-[border-color,box-shadow] duration-[var(--ds-duration-fast)] ease-[var(--ds-ease-out)]\",\n \"outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--ds-ring)]/40\",\n \"data-[checked]:border-[var(--ds-primary)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \"aria-invalid:border-[var(--ds-destructive)] aria-invalid:ring-[3px] aria-invalid:ring-[var(--ds-destructive)]/20\",\n className,\n )}\n {...props}\n >\n <Radio.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"block size-2 rounded-[var(--ds-radius-full)] bg-current\"\n />\n </Radio.Root>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":";;;;;;;AAiBA,SAASA,aAAW,EAAE,WAAW,GAAG,SAA0B;CAC5D,OAAO,oBAACC,YAAD;EAAgB,aAAU;EAAc,WAAW,GAAG,cAAc,SAAS;EAAG,GAAI;CAAQ,CAAA;AACrG;AAIA,SAAS,eAAe,EAAE,WAAW,GAAG,SAA8B;CACpE,OACE,oBAAC,MAAM,MAAP;EACE,aAAU;EACV,WAAW,GACT,qHACA,qFACA,qGACA,gFACA,6CACA,kEACA,oHACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,MAAM,WAAP;GACE,aAAU;GACV,WAAU;EACX,CAAA;CACS,CAAA;AAEhB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { ScrollArea } from "@base-ui/react/scroll-area";
|
|
3
|
+
//#region src/components/scroll-area.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* ScrollArea.
|
|
6
|
+
*
|
|
7
|
+
* Base UI positions the scrollbar and thumb itself (absolute inside the root,
|
|
8
|
+
* thumb size in `--scroll-area-thumb-*`); this file only sets the track width,
|
|
9
|
+
* the thumb colour and the hover/scroll reveal. Base UI also unmounts the
|
|
10
|
+
* scrollbar when there is nothing to scroll, so an empty list shows no track.
|
|
11
|
+
*
|
|
12
|
+
* Radix users: the `display: table` wrapper is gone, so `truncate` works
|
|
13
|
+
* inside the viewport without the `[&>div]:!block` override cortenaweb needed.
|
|
14
|
+
* `type="always" | "hover"` is gone too; the scrollbar shows on hover and while
|
|
15
|
+
* scrolling, and `keepMounted` on `ScrollBar` keeps it in the DOM otherwise.
|
|
16
|
+
*/
|
|
17
|
+
export interface ScrollAreaProps extends ScrollArea.Root.Props {
|
|
18
|
+
/** Which scrollbars to render. Defaults to vertical only. */
|
|
19
|
+
orientation?: "vertical" | "horizontal" | "both";
|
|
20
|
+
}
|
|
21
|
+
declare function ScrollArea$1({ className, children, orientation, ...props }: ScrollAreaProps): import("react").JSX.Element;
|
|
22
|
+
declare function ScrollBar({ className, orientation, ...props }: ScrollArea.Scrollbar.Props): import("react").JSX.Element;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { ScrollArea$1 as ScrollArea, ScrollBar };
|
|
25
|
+
//# sourceMappingURL=scroll-area.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { ScrollArea } from "@base-ui/react/scroll-area";
|
|
6
|
+
//#region src/components/scroll-area.tsx
|
|
7
|
+
function ScrollArea$1({ className, children, orientation = "vertical", ...props }) {
|
|
8
|
+
return /* @__PURE__ */ jsxs(ScrollArea.Root, {
|
|
9
|
+
"data-slot": "scroll-area",
|
|
10
|
+
className: cn("relative overflow-hidden", className),
|
|
11
|
+
...props,
|
|
12
|
+
children: [
|
|
13
|
+
/* @__PURE__ */ jsx(ScrollArea.Viewport, {
|
|
14
|
+
"data-slot": "scroll-area-viewport",
|
|
15
|
+
className: "size-full overscroll-contain rounded-[inherit] outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--ds-ring)]/40",
|
|
16
|
+
children
|
|
17
|
+
}),
|
|
18
|
+
orientation !== "horizontal" && /* @__PURE__ */ jsx(ScrollBar, { orientation: "vertical" }),
|
|
19
|
+
orientation !== "vertical" && /* @__PURE__ */ jsx(ScrollBar, { orientation: "horizontal" }),
|
|
20
|
+
/* @__PURE__ */ jsx(ScrollArea.Corner, { "data-slot": "scroll-area-corner" })
|
|
21
|
+
]
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function ScrollBar({ className, orientation = "vertical", ...props }) {
|
|
25
|
+
return /* @__PURE__ */ jsx(ScrollArea.Scrollbar, {
|
|
26
|
+
"data-slot": "scroll-area-scrollbar",
|
|
27
|
+
orientation,
|
|
28
|
+
className: cn("flex touch-none select-none p-px", "opacity-0 transition-opacity duration-[var(--ds-duration-fast)] ease-[var(--ds-ease-out)]", "data-[hovering]:opacity-100 data-[scrolling]:opacity-100", orientation === "vertical" && "w-2.5 flex-col", orientation === "horizontal" && "h-2.5 flex-row", className),
|
|
29
|
+
...props,
|
|
30
|
+
children: /* @__PURE__ */ jsx(ScrollArea.Thumb, {
|
|
31
|
+
"data-slot": "scroll-area-thumb",
|
|
32
|
+
className: cn("relative flex-1 rounded-[var(--ds-radius-full)] bg-[var(--ds-border-strong)]", orientation === "vertical" ? "w-full" : "h-full")
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { ScrollArea$1 as ScrollArea, ScrollBar };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=scroll-area.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-area.js","names":["ScrollArea","ScrollAreaPrimitive"],"sources":["../../src/components/scroll-area.tsx"],"sourcesContent":["\"use client\";\n\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\";\nimport { cn } from \"@/lib/cn\";\n\n/**\n * ScrollArea.\n *\n * Base UI positions the scrollbar and thumb itself (absolute inside the root,\n * thumb size in `--scroll-area-thumb-*`); this file only sets the track width,\n * the thumb colour and the hover/scroll reveal. Base UI also unmounts the\n * scrollbar when there is nothing to scroll, so an empty list shows no track.\n *\n * Radix users: the `display: table` wrapper is gone, so `truncate` works\n * inside the viewport without the `[&>div]:!block` override cortenaweb needed.\n * `type=\"always\" | \"hover\"` is gone too; the scrollbar shows on hover and while\n * scrolling, and `keepMounted` on `ScrollBar` keeps it in the DOM otherwise.\n */\nexport interface ScrollAreaProps extends ScrollAreaPrimitive.Root.Props {\n /** Which scrollbars to render. Defaults to vertical only. */\n orientation?: \"vertical\" | \"horizontal\" | \"both\";\n}\n\nfunction ScrollArea({ className, children, orientation = \"vertical\", ...props }: ScrollAreaProps) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"size-full overscroll-contain rounded-[inherit] outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--ds-ring)]/40\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n {orientation !== \"horizontal\" && <ScrollBar orientation=\"vertical\" />}\n {orientation !== \"vertical\" && <ScrollBar orientation=\"horizontal\" />}\n <ScrollAreaPrimitive.Corner data-slot=\"scroll-area-corner\" />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none p-px\",\n \"opacity-0 transition-opacity duration-[var(--ds-duration-fast)] ease-[var(--ds-ease-out)]\",\n \"data-[hovering]:opacity-100 data-[scrolling]:opacity-100\",\n orientation === \"vertical\" && \"w-2.5 flex-col\",\n orientation === \"horizontal\" && \"h-2.5 flex-row\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className={cn(\n \"relative flex-1 rounded-[var(--ds-radius-full)] bg-[var(--ds-border-strong)]\",\n orientation === \"vertical\" ? \"w-full\" : \"h-full\",\n )}\n />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n"],"mappings":";;;;;;AAuBA,SAASA,aAAW,EAAE,WAAW,UAAU,cAAc,YAAY,GAAG,SAA0B;CAChG,OACE,qBAACC,WAAoB,MAArB;EACE,aAAU;EACV,WAAW,GAAG,4BAA4B,SAAS;EACnD,GAAI;EAHN,UAAA;GAKE,oBAACA,WAAoB,UAArB;IACE,aAAU;IACV,WAAU;IAET;GAC2B,CAAA;GAC7B,gBAAgB,gBAAgB,oBAAC,WAAD,EAAW,aAAY,WAAY,CAAA;GACnE,gBAAgB,cAAc,oBAAC,WAAD,EAAW,aAAY,aAAc,CAAA;GACpE,oBAACA,WAAoB,QAArB,EAA4B,aAAU,qBAAsB,CAAA;EACpC;;AAE9B;AAEA,SAAS,UAAU,EACjB,WACA,cAAc,YACd,GAAG,SACmC;CACtC,OACE,oBAACA,WAAoB,WAArB;EACE,aAAU;EACG;EACb,WAAW,GACT,oCACA,6FACA,4DACA,gBAAgB,cAAc,kBAC9B,gBAAgB,gBAAgB,kBAChC,SACF;EACA,GAAI;EAEJ,UAAA,oBAACA,WAAoB,OAArB;GACE,aAAU;GACV,WAAW,GACT,gFACA,gBAAgB,aAAa,WAAW,QAC1C;EACD,CAAA;CAC4B,CAAA;AAEnC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { CardProps } from "./card.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
//#region src/components/section-card.d.ts
|
|
5
|
+
export interface SectionCardProps extends Omit<CardProps, "title"> {
|
|
6
|
+
title: React.ReactNode;
|
|
7
|
+
description?: React.ReactNode;
|
|
8
|
+
/** Controls for the section, right-aligned in the header row. */
|
|
9
|
+
actions?: React.ReactNode;
|
|
10
|
+
/** Rendered in a CardFooter under the body. */
|
|
11
|
+
footer?: React.ReactNode;
|
|
12
|
+
/** Remove the body padding, for a table or list that fills the card. */
|
|
13
|
+
flush?: boolean;
|
|
14
|
+
/** Class on the body wrapper. */
|
|
15
|
+
bodyClassName?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* SectionCard — a Card with a header row (title, description, actions), a
|
|
19
|
+
* body and an optional footer. It composes the Card parts rather than
|
|
20
|
+
* restyling them, so a SectionCard and a hand-built Card look identical.
|
|
21
|
+
*
|
|
22
|
+
* `render` is Card's and reaches the outer element, so a section card can be
|
|
23
|
+
* the landmark it is named after: `render={<section aria-labelledby={id} />}`
|
|
24
|
+
* with the same `id` on the title, or `render={<aside />}` for a side panel.
|
|
25
|
+
*/
|
|
26
|
+
declare function SectionCard({ title, description, actions, footer, flush, bodyClassName, children, ...props }: SectionCardProps): React.JSX.Element;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { SectionCard };
|
|
29
|
+
//# sourceMappingURL=section-card.d.ts.map
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "./card.js";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/section-card.tsx
|
|
7
|
+
/**
|
|
8
|
+
* SectionCard — a Card with a header row (title, description, actions), a
|
|
9
|
+
* body and an optional footer. It composes the Card parts rather than
|
|
10
|
+
* restyling them, so a SectionCard and a hand-built Card look identical.
|
|
11
|
+
*
|
|
12
|
+
* `render` is Card's and reaches the outer element, so a section card can be
|
|
13
|
+
* the landmark it is named after: `render={<section aria-labelledby={id} />}`
|
|
14
|
+
* with the same `id` on the title, or `render={<aside />}` for a side panel.
|
|
15
|
+
*/
|
|
16
|
+
function SectionCard({ title, description, actions, footer, flush, bodyClassName, children, ...props }) {
|
|
17
|
+
return /* @__PURE__ */ jsxs(Card, {
|
|
18
|
+
"data-slot": "section-card",
|
|
19
|
+
...props,
|
|
20
|
+
children: [
|
|
21
|
+
/* @__PURE__ */ jsxs(CardHeader, {
|
|
22
|
+
"data-slot": "section-card-header",
|
|
23
|
+
className: "flex-row items-start justify-between gap-4 border-b border-[var(--ds-border-subtle)] pb-4",
|
|
24
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
25
|
+
"data-slot": "section-card-heading",
|
|
26
|
+
className: "flex min-w-0 flex-col gap-1",
|
|
27
|
+
children: [/* @__PURE__ */ jsx(CardTitle, {
|
|
28
|
+
"data-slot": "section-card-title",
|
|
29
|
+
children: title
|
|
30
|
+
}), description ? /* @__PURE__ */ jsx(CardDescription, {
|
|
31
|
+
"data-slot": "section-card-description",
|
|
32
|
+
children: description
|
|
33
|
+
}) : null]
|
|
34
|
+
}), actions ? /* @__PURE__ */ jsx("div", {
|
|
35
|
+
"data-slot": "section-card-actions",
|
|
36
|
+
className: "flex shrink-0 flex-wrap items-center justify-end gap-2",
|
|
37
|
+
children: actions
|
|
38
|
+
}) : null]
|
|
39
|
+
}),
|
|
40
|
+
/* @__PURE__ */ jsx(CardContent, {
|
|
41
|
+
"data-slot": "section-card-body",
|
|
42
|
+
className: cn(flush ? "p-0" : "p-5", bodyClassName),
|
|
43
|
+
children
|
|
44
|
+
}),
|
|
45
|
+
footer ? /* @__PURE__ */ jsx(CardFooter, {
|
|
46
|
+
"data-slot": "section-card-footer",
|
|
47
|
+
children: footer
|
|
48
|
+
}) : null
|
|
49
|
+
]
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//#endregion
|
|
53
|
+
export { SectionCard };
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=section-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-card.js","names":[],"sources":["../../src/components/section-card.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n type CardProps,\n} from \"@/components/card\";\nimport { cn } from \"@/lib/cn\";\n\nexport interface SectionCardProps extends Omit<CardProps, \"title\"> {\n title: React.ReactNode;\n description?: React.ReactNode;\n /** Controls for the section, right-aligned in the header row. */\n actions?: React.ReactNode;\n /** Rendered in a CardFooter under the body. */\n footer?: React.ReactNode;\n /** Remove the body padding, for a table or list that fills the card. */\n flush?: boolean;\n /** Class on the body wrapper. */\n bodyClassName?: string;\n}\n\n/**\n * SectionCard — a Card with a header row (title, description, actions), a\n * body and an optional footer. It composes the Card parts rather than\n * restyling them, so a SectionCard and a hand-built Card look identical.\n *\n * `render` is Card's and reaches the outer element, so a section card can be\n * the landmark it is named after: `render={<section aria-labelledby={id} />}`\n * with the same `id` on the title, or `render={<aside />}` for a side panel.\n */\nfunction SectionCard({\n title,\n description,\n actions,\n footer,\n flush,\n bodyClassName,\n children,\n ...props\n}: SectionCardProps) {\n return (\n <Card data-slot=\"section-card\" {...props}>\n <CardHeader\n data-slot=\"section-card-header\"\n className=\"flex-row items-start justify-between gap-4 border-b border-[var(--ds-border-subtle)] pb-4\"\n >\n <div data-slot=\"section-card-heading\" className=\"flex min-w-0 flex-col gap-1\">\n <CardTitle data-slot=\"section-card-title\">{title}</CardTitle>\n {description ? (\n <CardDescription data-slot=\"section-card-description\">{description}</CardDescription>\n ) : null}\n </div>\n {actions ? (\n <div\n data-slot=\"section-card-actions\"\n className=\"flex shrink-0 flex-wrap items-center justify-end gap-2\"\n >\n {actions}\n </div>\n ) : null}\n </CardHeader>\n <CardContent\n data-slot=\"section-card-body\"\n className={cn(flush ? \"p-0\" : \"p-5\", bodyClassName)}\n >\n {children}\n </CardContent>\n {footer ? <CardFooter data-slot=\"section-card-footer\">{footer}</CardFooter> : null}\n </Card>\n );\n}\n\nexport { SectionCard };\n"],"mappings":";;;;;;;;;;;;;;;AAoCA,SAAS,YAAY,EACnB,OACA,aACA,SACA,QACA,OACA,eACA,UACA,GAAG,SACgB;CACnB,OACE,qBAAC,MAAD;EAAM,aAAU;EAAe,GAAI;EAAnC,UAAA;GACE,qBAAC,YAAD;IACE,aAAU;IACV,WAAU;IAFZ,UAAA,CAIE,qBAAC,OAAD;KAAK,aAAU;KAAuB,WAAU;KAAhD,UAAA,CACE,oBAAC,WAAD;MAAW,aAAU;MAAsB,UAAA;KAAiB,CAAA,GAC3D,cACC,oBAAC,iBAAD;MAAiB,aAAU;MAA4B,UAAA;KAA6B,CAAA,IAClF,IACD;IACJ,CAAA,GAAA,UACC,oBAAC,OAAD;KACE,aAAU;KACV,WAAU;KAET,UAAA;IACE,CAAA,IACH,IACM;;GACZ,oBAAC,aAAD;IACE,aAAU;IACV,WAAW,GAAG,QAAQ,QAAQ,OAAO,aAAa;IAEjD;GACU,CAAA;GACZ,SAAS,oBAAC,YAAD;IAAY,aAAU;IAAuB,UAAA;GAAmB,CAAA,IAAI;EAC1E;;AAEV"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/components/segmented.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Segmented control.
|
|
6
|
+
*
|
|
7
|
+
* A single-select row of options exposed as a radiogroup: the same semantics
|
|
8
|
+
* cortenaweb shipped, which screen readers announce as "1 of 3, selected".
|
|
9
|
+
* The active segment lifts onto the raised surface with the small shadow; the
|
|
10
|
+
* others read as muted text until hovered.
|
|
11
|
+
*/
|
|
12
|
+
export interface SegmentedOption<T extends string = string> {
|
|
13
|
+
value: T;
|
|
14
|
+
label: React.ReactNode;
|
|
15
|
+
icon?: React.ReactNode;
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface SegmentedProps<T extends string = string> extends Omit<React.ComponentProps<"div">, "onChange"> {
|
|
19
|
+
value: T;
|
|
20
|
+
onValueChange: (value: T) => void;
|
|
21
|
+
options: readonly SegmentedOption<T>[];
|
|
22
|
+
"aria-label"?: string;
|
|
23
|
+
}
|
|
24
|
+
declare function Segmented<T extends string = string>({ className, value, onValueChange, options, "aria-label": ariaLabel, ...props }: SegmentedProps<T>): React.JSX.Element;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { Segmented };
|
|
27
|
+
//# sourceMappingURL=segmented.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import { cn } from "../lib/cn.js";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/segmented.tsx
|
|
6
|
+
function Segmented({ className, value, onValueChange, options, "aria-label": ariaLabel, ...props }) {
|
|
7
|
+
return /* @__PURE__ */ jsx("div", {
|
|
8
|
+
role: "radiogroup",
|
|
9
|
+
"aria-label": ariaLabel,
|
|
10
|
+
"data-slot": "segmented",
|
|
11
|
+
className: cn("inline-flex gap-0.5 rounded-[var(--ds-radius-md)] border border-[var(--ds-border-subtle)] bg-[var(--ds-muted)] p-1", className),
|
|
12
|
+
...props,
|
|
13
|
+
children: options.map((opt) => {
|
|
14
|
+
const active = opt.value === value;
|
|
15
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
16
|
+
type: "button",
|
|
17
|
+
role: "radio",
|
|
18
|
+
"aria-checked": active,
|
|
19
|
+
disabled: opt.disabled,
|
|
20
|
+
"data-slot": "segmented-item",
|
|
21
|
+
"data-state": active ? "on" : "off",
|
|
22
|
+
onClick: () => onValueChange(opt.value),
|
|
23
|
+
className: cn("inline-flex items-center gap-1.5 rounded-[var(--ds-radius-sm)] px-3 py-1 font-medium", "text-[length:var(--ds-text-caption)]", "transition-[background-color,color,box-shadow] duration-[var(--ds-duration-fast)] ease-[var(--ds-ease-out)]", active ? "bg-[var(--ds-popover)] text-[color:var(--ds-foreground)] shadow-[var(--ds-shadow-sm)]" : "text-[color:var(--ds-muted-foreground)] hover:text-[color:var(--ds-foreground)]", "outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--ds-ring)]/40", "disabled:pointer-events-none disabled:opacity-50", "[&_svg]:pointer-events-none [&_svg]:size-3.5 [&_svg]:shrink-0"),
|
|
24
|
+
children: [opt.icon, opt.label]
|
|
25
|
+
}, opt.value);
|
|
26
|
+
})
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { Segmented };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=segmented.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmented.js","names":[],"sources":["../../src/components/segmented.tsx"],"sourcesContent":["\"use client\";\n\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/cn\";\n\n/**\n * Segmented control.\n *\n * A single-select row of options exposed as a radiogroup: the same semantics\n * cortenaweb shipped, which screen readers announce as \"1 of 3, selected\".\n * The active segment lifts onto the raised surface with the small shadow; the\n * others read as muted text until hovered.\n */\nexport interface SegmentedOption<T extends string = string> {\n value: T;\n label: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedProps<T extends string = string>\n extends Omit<React.ComponentProps<\"div\">, \"onChange\"> {\n value: T;\n onValueChange: (value: T) => void;\n options: readonly SegmentedOption<T>[];\n \"aria-label\"?: string;\n}\n\nfunction Segmented<T extends string = string>({\n className,\n value,\n onValueChange,\n options,\n \"aria-label\": ariaLabel,\n ...props\n}: SegmentedProps<T>) {\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel}\n data-slot=\"segmented\"\n className={cn(\n \"inline-flex gap-0.5 rounded-[var(--ds-radius-md)] border border-[var(--ds-border-subtle)] bg-[var(--ds-muted)] p-1\",\n className,\n )}\n {...props}\n >\n {options.map((opt) => {\n const active = opt.value === value;\n return (\n <button\n key={opt.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={active}\n disabled={opt.disabled}\n data-slot=\"segmented-item\"\n data-state={active ? \"on\" : \"off\"}\n onClick={() => onValueChange(opt.value)}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-[var(--ds-radius-sm)] px-3 py-1 font-medium\",\n \"text-[length:var(--ds-text-caption)]\",\n \"transition-[background-color,color,box-shadow] duration-[var(--ds-duration-fast)] ease-[var(--ds-ease-out)]\",\n active\n ? \"bg-[var(--ds-popover)] text-[color:var(--ds-foreground)] shadow-[var(--ds-shadow-sm)]\"\n : \"text-[color:var(--ds-muted-foreground)] hover:text-[color:var(--ds-foreground)]\",\n \"outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--ds-ring)]/40\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:size-3.5 [&_svg]:shrink-0\",\n )}\n >\n {opt.icon}\n {opt.label}\n </button>\n );\n })}\n </div>\n );\n}\n\nexport { Segmented };\n"],"mappings":";;;;;AA4BA,SAAS,UAAqC,EAC5C,WACA,OACA,eACA,SACA,cAAc,WACd,GAAG,SACiB;CACpB,OACE,oBAAC,OAAD;EACE,MAAK;EACL,cAAY;EACZ,aAAU;EACV,WAAW,GACT,sHACA,SACF;EACA,GAAI;EAEH,UAAA,QAAQ,KAAK,QAAQ;GACpB,MAAM,SAAS,IAAI,UAAU;GAC7B,OACE,qBAAC,UAAD;IAEE,MAAK;IACL,MAAK;IACL,gBAAc;IACd,UAAU,IAAI;IACd,aAAU;IACV,cAAY,SAAS,OAAO;IAC5B,eAAe,cAAc,IAAI,KAAK;IACtC,WAAW,GACT,wFACA,wCACA,+GACA,SACI,0FACA,mFACJ,gFACA,oDACA,+DACF;IAnBF,UAAA,CAqBG,IAAI,MACJ,IAAI,KACC;GAtBD,GAAA,IAAI,KAsBH;EAEZ,CAAC;CACE,CAAA;AAET"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Select } from "@base-ui/react/select";
|
|
3
|
+
//#region src/components/select.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Select.
|
|
6
|
+
*
|
|
7
|
+
* `SelectContent` composes Base UI's Portal + Positioner + Popup so consumers
|
|
8
|
+
* keep writing `<SelectContent side="bottom" align="start">`; positioning
|
|
9
|
+
* props are forwarded to the Positioner, which is where Base UI reads them.
|
|
10
|
+
*
|
|
11
|
+
* Radix users:
|
|
12
|
+
* - `SelectValue` shows the raw value unless the Root is given `items`
|
|
13
|
+
* (`{ [value]: label }` or `[{ value, label }]`) or `itemToStringLabel`;
|
|
14
|
+
* Base UI does not read the label out of an unmounted `SelectItem`.
|
|
15
|
+
* - `onValueChange` receives `(value, eventDetails)`.
|
|
16
|
+
* - `SelectContent` defaults to the dropdown layout; pass
|
|
17
|
+
* `alignItemWithTrigger` for Base UI's native-like overlay of the selected item.
|
|
18
|
+
*
|
|
19
|
+
* ## Typing the value
|
|
20
|
+
*
|
|
21
|
+
* `null` is the cleared / placeholder state, so `onValueChange` always hands
|
|
22
|
+
* back `Value | null`, never bare `Value`. Name the value type on the element
|
|
23
|
+
* to keep that union at `string | null` instead of letting inference widen it:
|
|
24
|
+
*
|
|
25
|
+
* ```tsx
|
|
26
|
+
* const [status, setStatus] = useState("");
|
|
27
|
+
*
|
|
28
|
+
* <Select<string>
|
|
29
|
+
* // "" is not a value any item carries; `|| null` is the placeholder state,
|
|
30
|
+
* // which is what makes SelectValue fall back to its `placeholder`.
|
|
31
|
+
* value={status || null}
|
|
32
|
+
* onValueChange={(next) => setStatus(next ?? "")} // next: string | null
|
|
33
|
+
* >
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* Without the explicit `<string>` the type argument is inferred from `value`,
|
|
37
|
+
* so a `string | null` value widens `Value` and the handler's parameter turns
|
|
38
|
+
* into `string | null | null`. Multi-select narrows too:
|
|
39
|
+
* `<Select<string, true> multiple>` hands back `string[]`, never `null`.
|
|
40
|
+
*
|
|
41
|
+
* `SelectProps` is the same props type, for a wrapper that forwards them.
|
|
42
|
+
*/
|
|
43
|
+
export type SelectProps<Value = string, Multiple extends boolean | undefined = false> = Select.Root.Props<Value, Multiple>;
|
|
44
|
+
declare function Select$1<Value, Multiple extends boolean | undefined = false>(props: SelectProps<Value, Multiple>): import("react").JSX.Element;
|
|
45
|
+
declare function SelectGroup({ className, ...props }: Select.Group.Props): import("react").JSX.Element;
|
|
46
|
+
declare function SelectValue({ className, ...props }: Select.Value.Props): import("react").JSX.Element;
|
|
47
|
+
export interface SelectTriggerProps extends Select.Trigger.Props {
|
|
48
|
+
size?: "sm" | "md";
|
|
49
|
+
}
|
|
50
|
+
declare function SelectTrigger({ className, size, children, ...props }: SelectTriggerProps): import("react").JSX.Element;
|
|
51
|
+
type PositionerProps = Pick<Select.Positioner.Props, "side" | "align" | "sideOffset" | "alignOffset" | "anchor" | "collisionBoundary" | "collisionPadding" | "collisionAvoidance" | "sticky" | "positionMethod" | "alignItemWithTrigger">;
|
|
52
|
+
export interface SelectContentProps extends Select.Popup.Props, PositionerProps {
|
|
53
|
+
/** Where to portal the popup; defaults to `<body>`. */
|
|
54
|
+
container?: Select.Portal.Props["container"];
|
|
55
|
+
}
|
|
56
|
+
declare function SelectContent({ className, children, side, align, sideOffset, alignOffset, anchor, collisionBoundary, collisionPadding, collisionAvoidance, sticky, positionMethod, alignItemWithTrigger, container, ...props }: SelectContentProps): import("react").JSX.Element;
|
|
57
|
+
declare function SelectLabel({ className, ...props }: Select.GroupLabel.Props): import("react").JSX.Element;
|
|
58
|
+
declare function SelectItem({ className, children, ...props }: Select.Item.Props): import("react").JSX.Element;
|
|
59
|
+
declare function SelectSeparator({ className, ...props }: Select.Separator.Props): import("react").JSX.Element;
|
|
60
|
+
//#endregion
|
|
61
|
+
export { Select$1 as Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue };
|
|
62
|
+
//# sourceMappingURL=select.d.ts.map
|