@brokenrubik/ui 0.0.0-stage → 0.1.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 +264 -2
- package/dist/components/accordion.d.ts +13 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +25 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +21 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +46 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +24 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +42 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/avatar.d.ts +27 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +53 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +21 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +40 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +18 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +39 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar.d.ts +13 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +68 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +15 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +31 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/checkbox.d.ts +6 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +12 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/command.d.ts +24 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +41 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/date-picker.d.ts +24 -0
- package/dist/components/date-picker.d.ts.map +1 -0
- package/dist/components/date-picker.js +18 -0
- package/dist/components/date-picker.js.map +1 -0
- package/dist/components/dialog.d.ts +23 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +45 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +34 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +61 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/empty-state.d.ts +13 -0
- package/dist/components/empty-state.d.ts.map +1 -0
- package/dist/components/empty-state.js +25 -0
- package/dist/components/empty-state.js.map +1 -0
- package/dist/components/field.d.ts +24 -0
- package/dist/components/field.d.ts.map +1 -0
- package/dist/components/field.js +34 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/input.d.ts +17 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +18 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/kbd.d.ts +14 -0
- package/dist/components/kbd.d.ts.map +1 -0
- package/dist/components/kbd.js +31 -0
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.d.ts +6 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +11 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/pagination.d.ts +18 -0
- package/dist/components/pagination.d.ts.map +1 -0
- package/dist/components/pagination.js +33 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/popover.d.ts +12 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +29 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.d.ts +17 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +26 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +7 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +14 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/select.d.ts +20 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +46 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +6 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +11 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/sheet.d.ts +19 -0
- package/dist/components/sheet.d.ts.map +1 -0
- package/dist/components/sheet.js +47 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/skeleton.d.ts +5 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +9 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/sonner.d.ts +13 -0
- package/dist/components/sonner.d.ts.map +1 -0
- package/dist/components/sonner.js +40 -0
- package/dist/components/sonner.js.map +1 -0
- package/dist/components/switch.d.ts +6 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +11 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/tabs.d.ts +13 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +24 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +5 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +10 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toggle-group.d.ts +11 -0
- package/dist/components/toggle-group.d.ts.map +1 -0
- package/dist/components/toggle-group.js +18 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/tooltip.d.ts +13 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +24 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/tone.d.ts +8 -0
- package/dist/lib/tone.d.ts.map +1 -0
- package/dist/lib/tone.js +14 -0
- package/dist/lib/tone.js.map +1 -0
- package/dist/lib/utils.d.ts +20 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +40 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/styles/base.css +37 -0
- package/dist/styles/fonts.css +16 -0
- package/dist/styles/styles.css +14 -0
- package/dist/styles/theme.css +170 -0
- package/dist/styles/tokens.css +228 -0
- package/docs/design-handoff.md +112 -0
- package/docs/figma-vs-tailwind.md +135 -0
- package/docs/visual-testing.md +156 -0
- package/package.json +96 -4
- package/src/components/accordion.tsx +66 -0
- package/src/components/alert-dialog.tsx +139 -0
- package/src/components/alert.tsx +87 -0
- package/src/components/avatar.tsx +105 -0
- package/src/components/badge.tsx +63 -0
- package/src/components/button.tsx +70 -0
- package/src/components/calendar.tsx +131 -0
- package/src/components/card.tsx +72 -0
- package/src/components/checkbox.tsx +31 -0
- package/src/components/command.tsx +149 -0
- package/src/components/date-picker.tsx +86 -0
- package/src/components/dialog.tsx +126 -0
- package/src/components/dropdown-menu.tsx +225 -0
- package/src/components/empty-state.tsx +63 -0
- package/src/components/field.tsx +79 -0
- package/src/components/input.tsx +49 -0
- package/src/components/kbd.tsx +48 -0
- package/src/components/label.tsx +22 -0
- package/src/components/pagination.tsx +94 -0
- package/src/components/popover.tsx +65 -0
- package/src/components/progress.tsx +52 -0
- package/src/components/radio-group.tsx +42 -0
- package/src/components/select.tsx +167 -0
- package/src/components/separator.tsx +29 -0
- package/src/components/sheet.tsx +112 -0
- package/src/components/skeleton.tsx +16 -0
- package/src/components/sonner.tsx +58 -0
- package/src/components/switch.tsx +27 -0
- package/src/components/tabs.tsx +56 -0
- package/src/components/textarea.tsx +17 -0
- package/src/components/toggle-group.tsx +42 -0
- package/src/components/tooltip.tsx +55 -0
- package/src/index.ts +35 -0
- package/src/lib/tone.ts +16 -0
- package/src/lib/utils.ts +46 -0
- package/src/styles/base.css +37 -0
- package/src/styles/fonts.css +16 -0
- package/src/styles/styles.css +14 -0
- package/src/styles/theme.css +170 -0
- package/src/styles/tokens.css +228 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { DropdownMenu as DropdownMenuPrimitive } from 'radix-ui';
|
|
5
|
+
import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';
|
|
6
|
+
import { cn } from '../lib/utils.js';
|
|
7
|
+
/**
|
|
8
|
+
* Figma: Components · Base › Dropdown Menu (2084:92) and Menu Item (2007:58).
|
|
9
|
+
* Panel: popover, 6 px radius, 4 px padding, Shadow/md. Item: 32 px, 8 px padding,
|
|
10
|
+
* 5 px radius, Body/Default; hover = accent. Label: Body/Small Medium, muted.
|
|
11
|
+
* Shortcut: Label/Caption, muted. Separator: 1 px border with 4 px around it.
|
|
12
|
+
*/
|
|
13
|
+
const menuItemClassName = "relative flex h-8 cursor-default select-none items-center gap-2 rounded-sm px-2 text-body text-foreground outline-hidden focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground";
|
|
14
|
+
const menuContentClassName = 'z-50 min-w-[220px] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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';
|
|
15
|
+
function DropdownMenu(props) {
|
|
16
|
+
return _jsx(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
|
|
17
|
+
}
|
|
18
|
+
function DropdownMenuPortal(props) {
|
|
19
|
+
return _jsx(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
|
|
20
|
+
}
|
|
21
|
+
function DropdownMenuTrigger(props) {
|
|
22
|
+
return _jsx(DropdownMenuPrimitive.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
|
|
23
|
+
}
|
|
24
|
+
function DropdownMenuContent({ className, sideOffset = 4, ...props }) {
|
|
25
|
+
return (_jsx(DropdownMenuPrimitive.Portal, { children: _jsx(DropdownMenuPrimitive.Content, { "data-slot": "dropdown-menu-content", sideOffset: sideOffset, className: cn(menuContentClassName, 'max-h-(--radix-dropdown-menu-content-available-height) origin-(--radix-dropdown-menu-content-transform-origin) overflow-y-auto', className), ...props }) }));
|
|
26
|
+
}
|
|
27
|
+
function DropdownMenuGroup(props) {
|
|
28
|
+
return _jsx(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
29
|
+
}
|
|
30
|
+
function DropdownMenuItem({ className, inset, variant = 'default', ...props }) {
|
|
31
|
+
return (_jsx(DropdownMenuPrimitive.Item, { "data-slot": "dropdown-menu-item", "data-inset": inset, "data-variant": variant, className: cn(menuItemClassName, 'data-[variant=destructive]:text-destructive-strong data-[variant=destructive]:focus:bg-destructive-tint data-[variant=destructive]:focus:text-destructive-strong data-[variant=destructive]:*:[svg]:!text-destructive-strong', className), ...props }));
|
|
32
|
+
}
|
|
33
|
+
function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
|
|
34
|
+
return (_jsxs(DropdownMenuPrimitive.CheckboxItem, { "data-slot": "dropdown-menu-checkbox-item", className: cn(menuItemClassName, 'pl-8', className), checked: checked, ...props, children: [_jsx("span", { className: "pointer-events-none absolute left-2 flex size-4 items-center justify-center", children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(CheckIcon, { className: "size-4 !text-foreground" }) }) }), children] }));
|
|
35
|
+
}
|
|
36
|
+
function DropdownMenuRadioGroup(props) {
|
|
37
|
+
return _jsx(DropdownMenuPrimitive.RadioGroup, { "data-slot": "dropdown-menu-radio-group", ...props });
|
|
38
|
+
}
|
|
39
|
+
function DropdownMenuRadioItem({ className, children, ...props }) {
|
|
40
|
+
return (_jsxs(DropdownMenuPrimitive.RadioItem, { "data-slot": "dropdown-menu-radio-item", className: cn(menuItemClassName, 'pl-8', className), ...props, children: [_jsx("span", { className: "pointer-events-none absolute left-2 flex size-4 items-center justify-center", children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(CircleIcon, { className: "size-2 fill-current !text-foreground" }) }) }), children] }));
|
|
41
|
+
}
|
|
42
|
+
function DropdownMenuLabel({ className, inset, ...props }) {
|
|
43
|
+
return (_jsx(DropdownMenuPrimitive.Label, { "data-slot": "dropdown-menu-label", "data-inset": inset, className: cn('px-2 py-1.5 text-body-sm font-medium text-muted-foreground data-[inset]:pl-8', className), ...props }));
|
|
44
|
+
}
|
|
45
|
+
function DropdownMenuSeparator({ className, ...props }) {
|
|
46
|
+
return (_jsx(DropdownMenuPrimitive.Separator, { "data-slot": "dropdown-menu-separator", className: cn('my-1 h-px bg-border', className), ...props }));
|
|
47
|
+
}
|
|
48
|
+
function DropdownMenuShortcut({ className, ...props }) {
|
|
49
|
+
return (_jsx("span", { "data-slot": "dropdown-menu-shortcut", className: cn('ml-auto text-caption text-muted-foreground', className), ...props }));
|
|
50
|
+
}
|
|
51
|
+
function DropdownMenuSub(props) {
|
|
52
|
+
return _jsx(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
|
|
53
|
+
}
|
|
54
|
+
function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
|
|
55
|
+
return (_jsxs(DropdownMenuPrimitive.SubTrigger, { "data-slot": "dropdown-menu-sub-trigger", "data-inset": inset, className: cn(menuItemClassName, 'data-[state=open]:bg-accent data-[state=open]:text-accent-foreground', className), ...props, children: [children, _jsx(ChevronRightIcon, { className: "ml-auto size-4" })] }));
|
|
56
|
+
}
|
|
57
|
+
function DropdownMenuSubContent({ className, ...props }) {
|
|
58
|
+
return (_jsx(DropdownMenuPrimitive.SubContent, { "data-slot": "dropdown-menu-sub-content", className: cn(menuContentClassName, 'origin-(--radix-dropdown-menu-content-transform-origin)', className), ...props }));
|
|
59
|
+
}
|
|
60
|
+
export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, menuItemClassName, menuContentClassName, };
|
|
61
|
+
//# sourceMappingURL=dropdown-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-menu.js","sourceRoot":"","sources":["../../src/components/dropdown-menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Figma: Components · Base › Empty State (2085:215), custom. Bordered box, 40/24 px
|
|
4
|
+
* padding, centered: a 40 px muted icon tile, title (Heading/Card), description, action
|
|
5
|
+
* (usually <Button size="sm">).
|
|
6
|
+
*/
|
|
7
|
+
declare function EmptyState({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
|
8
|
+
declare function EmptyStateIcon({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
|
9
|
+
declare function EmptyStateTitle({ className, ...props }: React.ComponentProps<'h3'>): React.JSX.Element;
|
|
10
|
+
declare function EmptyStateDescription({ className, ...props }: React.ComponentProps<'p'>): React.JSX.Element;
|
|
11
|
+
declare function EmptyStateActions({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
|
12
|
+
export { EmptyState, EmptyStateIcon, EmptyStateTitle, EmptyStateDescription, EmptyStateActions };
|
|
13
|
+
//# sourceMappingURL=empty-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../src/components/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;GAIG;AACH,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAY3E;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAI3E;AAED,iBAAS,qBAAqB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQhF;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ9E;AAED,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { cn } from '../lib/utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* Figma: Components · Base › Empty State (2085:215), custom. Bordered box, 40/24 px
|
|
6
|
+
* padding, centered: a 40 px muted icon tile, title (Heading/Card), description, action
|
|
7
|
+
* (usually <Button size="sm">).
|
|
8
|
+
*/
|
|
9
|
+
function EmptyState({ className, ...props }) {
|
|
10
|
+
return (_jsx("div", { "data-slot": "empty-state", className: cn('flex w-full flex-col items-center justify-center gap-3 rounded-lg border border-border px-6 py-10 text-center', className), ...props }));
|
|
11
|
+
}
|
|
12
|
+
function EmptyStateIcon({ className, ...props }) {
|
|
13
|
+
return (_jsx("div", { "data-slot": "empty-state-icon", "aria-hidden": true, className: cn("flex size-10 items-center justify-center rounded-lg bg-muted text-muted-foreground [&_svg:not([class*='size-'])]:size-5", className), ...props }));
|
|
14
|
+
}
|
|
15
|
+
function EmptyStateTitle({ className, ...props }) {
|
|
16
|
+
return (_jsx("h3", { "data-slot": "empty-state-title", className: cn('text-card-title text-foreground', className), ...props }));
|
|
17
|
+
}
|
|
18
|
+
function EmptyStateDescription({ className, ...props }) {
|
|
19
|
+
return (_jsx("p", { "data-slot": "empty-state-description", className: cn('max-w-sm text-body text-muted-foreground', className), ...props }));
|
|
20
|
+
}
|
|
21
|
+
function EmptyStateActions({ className, ...props }) {
|
|
22
|
+
return (_jsx("div", { "data-slot": "empty-state-actions", className: cn('flex items-center justify-center gap-2', className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
export { EmptyState, EmptyStateIcon, EmptyStateTitle, EmptyStateDescription, EmptyStateActions };
|
|
25
|
+
//# sourceMappingURL=empty-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-state.js","sourceRoot":"","sources":["../../src/components/empty-state.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC;;;;GAIG;AACH,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,+GAA+G,EAC/G,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IAC1E,OAAO,CACL,2BACY,kBAAkB,uBAE5B,SAAS,EAAE,EAAE,CACX,yHAAyH,EACzH,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IAC1E,OAAO,CACL,0BAAc,mBAAmB,EAAC,SAAS,EAAE,EAAE,CAAC,iCAAiC,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAC7G,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA6B;IAC/E,OAAO,CACL,yBACY,yBAAyB,EACnC,SAAS,EAAE,EAAE,CAAC,0CAA0C,EAAE,SAAS,CAAC,KAChE,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IAC7E,OAAO,CACL,2BACY,qBAAqB,EAC/B,SAAS,EAAE,EAAE,CAAC,wCAAwC,EAAE,SAAS,CAAC,KAC9D,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Label } from './label.js';
|
|
3
|
+
/**
|
|
4
|
+
* Figma: Components · Base › Form Field (2083:229), code FormItem / FormLabel /
|
|
5
|
+
* FormDescription / FormMessage. Label (Body/Small Medium) · control · helper (Body/Small),
|
|
6
|
+
* 6 px apart. Not tied to a form library: pass `invalid` / `disabled` and wire the control
|
|
7
|
+
* with `aria-invalid` (the control turns its border red). FieldError replaces the helper.
|
|
8
|
+
*
|
|
9
|
+
* <Field invalid={!!error}>
|
|
10
|
+
* <FieldLabel htmlFor="name">Project name</FieldLabel>
|
|
11
|
+
* <Input id="name" aria-invalid={!!error} aria-describedby="name-help" />
|
|
12
|
+
* {error ? <FieldError id="name-help">{error}</FieldError>
|
|
13
|
+
* : <FieldDescription id="name-help">Shown on the sidebar.</FieldDescription>}
|
|
14
|
+
* </Field>
|
|
15
|
+
*/
|
|
16
|
+
declare function Field({ className, invalid, disabled, ...props }: React.ComponentProps<'div'> & {
|
|
17
|
+
invalid?: boolean;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
}): React.JSX.Element;
|
|
20
|
+
declare function FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>): React.JSX.Element;
|
|
21
|
+
declare function FieldDescription({ className, ...props }: React.ComponentProps<'p'>): React.JSX.Element;
|
|
22
|
+
declare function FieldError({ className, children, ...props }: React.ComponentProps<'p'>): React.JSX.Element | null;
|
|
23
|
+
export { Field, FieldLabel, FieldDescription, FieldError };
|
|
24
|
+
//# sourceMappingURL=field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/components/field.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;;;;;;;;;GAYG;AACH,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,qBAczE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,qBAQ9E;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAW3E;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,4BAY/E;AAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { cn } from '../lib/utils.js';
|
|
5
|
+
import { Label } from './label.js';
|
|
6
|
+
/**
|
|
7
|
+
* Figma: Components · Base › Form Field (2083:229), code FormItem / FormLabel /
|
|
8
|
+
* FormDescription / FormMessage. Label (Body/Small Medium) · control · helper (Body/Small),
|
|
9
|
+
* 6 px apart. Not tied to a form library: pass `invalid` / `disabled` and wire the control
|
|
10
|
+
* with `aria-invalid` (the control turns its border red). FieldError replaces the helper.
|
|
11
|
+
*
|
|
12
|
+
* <Field invalid={!!error}>
|
|
13
|
+
* <FieldLabel htmlFor="name">Project name</FieldLabel>
|
|
14
|
+
* <Input id="name" aria-invalid={!!error} aria-describedby="name-help" />
|
|
15
|
+
* {error ? <FieldError id="name-help">{error}</FieldError>
|
|
16
|
+
* : <FieldDescription id="name-help">Shown on the sidebar.</FieldDescription>}
|
|
17
|
+
* </Field>
|
|
18
|
+
*/
|
|
19
|
+
function Field({ className, invalid, disabled, ...props }) {
|
|
20
|
+
return (_jsx("div", { role: "group", "data-slot": "field", "data-invalid": invalid || undefined, "data-disabled": disabled || undefined, className: cn('group/field flex w-full flex-col gap-1.5 data-[disabled]:[&_[data-slot=input]]:opacity-50', className), ...props }));
|
|
21
|
+
}
|
|
22
|
+
function FieldLabel({ className, ...props }) {
|
|
23
|
+
return (_jsx(Label, { "data-slot": "field-label", className: cn('group-data-[disabled]/field:text-muted-foreground', className), ...props }));
|
|
24
|
+
}
|
|
25
|
+
function FieldDescription({ className, ...props }) {
|
|
26
|
+
return (_jsx("p", { "data-slot": "field-description", className: cn('text-body-sm text-muted-foreground group-data-[invalid]/field:text-destructive-strong', className), ...props }));
|
|
27
|
+
}
|
|
28
|
+
function FieldError({ className, children, ...props }) {
|
|
29
|
+
if (!children)
|
|
30
|
+
return null;
|
|
31
|
+
return (_jsx("p", { "data-slot": "field-error", role: "alert", className: cn('text-body-sm text-destructive-strong', className), ...props, children: children }));
|
|
32
|
+
}
|
|
33
|
+
export { Field, FieldLabel, FieldDescription, FieldError };
|
|
34
|
+
//# sourceMappingURL=field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/components/field.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;;;;;;;;;GAYG;AACH,SAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACgE;IACxE,OAAO,CACL,cACE,IAAI,EAAC,OAAO,eACF,OAAO,kBACH,OAAO,IAAI,SAAS,mBACnB,QAAQ,IAAI,SAAS,EACpC,SAAS,EAAE,EAAE,CACX,2FAA2F,EAC3F,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAsC;IAC7E,OAAO,CACL,KAAC,KAAK,iBACM,aAAa,EACvB,SAAS,EAAE,EAAE,CAAC,mDAAmD,EAAE,SAAS,CAAC,KACzE,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA6B;IAC1E,OAAO,CACL,yBACY,mBAAmB,EAC7B,SAAS,EAAE,EAAE,CACX,uFAAuF,EACvF,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAA6B;IAC9E,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,CACL,yBACY,aAAa,EACvB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,EAAE,CAAC,sCAAsC,EAAE,SAAS,CAAC,KAC5D,KAAK,YAER,QAAQ,GACP,CACL,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The shared look of text controls (Input, Select trigger, Date Picker, Textarea).
|
|
4
|
+
* Figma: 32 px, 6 px radius, `input` border (3:1), Shadow/xs, Body/Default; Focus = 1.5 px
|
|
5
|
+
* `ring` border; Disabled = 50 % opacity; Error = `destructive` border.
|
|
6
|
+
*/
|
|
7
|
+
declare const controlClassName = "w-full min-w-0 rounded-md border border-input bg-background text-body text-foreground shadow-xs transition-[color,border-color,box-shadow] outline-none placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground focus-visible:border-ring focus-visible:ring-[0.5px] focus-visible:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20";
|
|
8
|
+
type InputProps = React.ComponentProps<'input'> & {
|
|
9
|
+
/** An icon before the text (16 px, muted), as Figma's Input "Show icon". */
|
|
10
|
+
startIcon?: React.ReactNode;
|
|
11
|
+
/** Classes for the wrapper that holds the icon (only with startIcon). */
|
|
12
|
+
wrapperClassName?: string;
|
|
13
|
+
};
|
|
14
|
+
/** Figma: Components · Base › Input (2007:32). */
|
|
15
|
+
declare function Input({ className, type, startIcon, wrapperClassName, ...props }: InputProps): React.JSX.Element;
|
|
16
|
+
export { Input, controlClassName, type InputProps };
|
|
17
|
+
//# sourceMappingURL=input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;GAIG;AACH,QAAA,MAAM,gBAAgB,gdACyb,CAAC;AAEhd,KAAK,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG;IAChD,4EAA4E;IAC5E,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,kDAAkD;AAClD,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,qBA0BpF;AAED,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { cn } from '../lib/utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* The shared look of text controls (Input, Select trigger, Date Picker, Textarea).
|
|
6
|
+
* Figma: 32 px, 6 px radius, `input` border (3:1), Shadow/xs, Body/Default; Focus = 1.5 px
|
|
7
|
+
* `ring` border; Disabled = 50 % opacity; Error = `destructive` border.
|
|
8
|
+
*/
|
|
9
|
+
const controlClassName = 'w-full min-w-0 rounded-md border border-input bg-background text-body text-foreground shadow-xs transition-[color,border-color,box-shadow] outline-none placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground focus-visible:border-ring focus-visible:ring-[0.5px] focus-visible:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20';
|
|
10
|
+
/** Figma: Components · Base › Input (2007:32). */
|
|
11
|
+
function Input({ className, type, startIcon, wrapperClassName, ...props }) {
|
|
12
|
+
const input = (_jsx("input", { type: type, "data-slot": "input", className: cn(controlClassName, 'h-8 px-2.5 py-1 file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-body file:font-medium', startIcon && 'pl-[34px]', className), ...props }));
|
|
13
|
+
if (!startIcon)
|
|
14
|
+
return input;
|
|
15
|
+
return (_jsxs("div", { "data-slot": "input-wrapper", className: cn('relative w-full', wrapperClassName), children: [_jsx("span", { "aria-hidden": true, className: "pointer-events-none absolute inset-y-0 left-[11px] flex items-center text-muted-foreground [&_svg]:size-4", children: startIcon }), input] }));
|
|
16
|
+
}
|
|
17
|
+
export { Input, controlClassName };
|
|
18
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC;;;;GAIG;AACH,MAAM,gBAAgB,GACpB,6cAA6c,CAAC;AAShd,kDAAkD;AAClD,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,KAAK,EAAc;IACnF,MAAM,KAAK,GAAG,CACZ,gBACE,IAAI,EAAE,IAAI,eACA,OAAO,EACjB,SAAS,EAAE,EAAE,CACX,gBAAgB,EAChB,6GAA6G,EAC7G,SAAS,IAAI,WAAW,EACxB,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;IACF,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,OAAO,CACL,4BAAe,eAAe,EAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,aAC/E,oCAEE,SAAS,EAAC,2GAA2G,YAEpH,SAAS,GACL,EACN,KAAK,IACF,CACP,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAmB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
|
+
/**
|
|
4
|
+
* Figma: Components · Base › Key Chip (2006:69), code `<Kbd>` (custom).
|
|
5
|
+
* highlight: the lime square of a space key (20 px / 5 px radius or 24 px / 6 px radius).
|
|
6
|
+
* muted: a keyboard hint or ID in Mono/Small on muted (20 px, 4 px radius).
|
|
7
|
+
*/
|
|
8
|
+
declare const kbdVariants: (props?: ({
|
|
9
|
+
variant?: "highlight" | "muted" | null | undefined;
|
|
10
|
+
size?: 20 | 24 | null | undefined;
|
|
11
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
12
|
+
declare function Kbd({ className, variant, size, ...props }: React.ComponentProps<'kbd'> & VariantProps<typeof kbdVariants>): React.JSX.Element;
|
|
13
|
+
export { Kbd, kbdVariants };
|
|
14
|
+
//# sourceMappingURL=kbd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kbd.d.ts","sourceRoot":"","sources":["../../src/components/kbd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE;;;;GAIG;AACH,QAAA,MAAM,WAAW;;;8EAmBhB,CAAC;AAEF,iBAAS,GAAG,CAAC,EACX,SAAS,EACT,OAAiB,EACjB,IAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,qBAShE;AAED,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { cn } from '../lib/utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Figma: Components · Base › Key Chip (2006:69), code `<Kbd>` (custom).
|
|
7
|
+
* highlight: the lime square of a space key (20 px / 5 px radius or 24 px / 6 px radius).
|
|
8
|
+
* muted: a keyboard hint or ID in Mono/Small on muted (20 px, 4 px radius).
|
|
9
|
+
*/
|
|
10
|
+
const kbdVariants = cva('inline-flex shrink-0 select-none items-center justify-center whitespace-nowrap', {
|
|
11
|
+
variants: {
|
|
12
|
+
variant: {
|
|
13
|
+
highlight: 'bg-highlight font-sans font-semibold tracking-[0.15px] text-highlight-foreground',
|
|
14
|
+
muted: 'h-5 min-w-5 rounded-xs bg-muted px-1.5 font-mono text-mono-sm text-muted-foreground',
|
|
15
|
+
},
|
|
16
|
+
size: {
|
|
17
|
+
20: '',
|
|
18
|
+
24: '',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
compoundVariants: [
|
|
22
|
+
{ variant: 'highlight', size: 20, className: 'size-5 rounded-sm text-[8.4px] leading-none' },
|
|
23
|
+
{ variant: 'highlight', size: 24, className: 'size-6 rounded-md text-[10px] leading-none' },
|
|
24
|
+
],
|
|
25
|
+
defaultVariants: { variant: 'muted', size: 20 },
|
|
26
|
+
});
|
|
27
|
+
function Kbd({ className, variant = 'muted', size = 20, ...props }) {
|
|
28
|
+
return (_jsx("kbd", { "data-slot": "kbd", "data-variant": variant, className: cn(kbdVariants({ variant, size }), className), ...props }));
|
|
29
|
+
}
|
|
30
|
+
export { Kbd, kbdVariants };
|
|
31
|
+
//# sourceMappingURL=kbd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kbd.js","sourceRoot":"","sources":["../../src/components/kbd.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC;;;;GAIG;AACH,MAAM,WAAW,GAAG,GAAG,CACrB,gFAAgF,EAChF;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,SAAS,EAAE,kFAAkF;YAC7F,KAAK,EAAE,qFAAqF;SAC7F;QACD,IAAI,EAAE;YACJ,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;SACP;KACF;IACD,gBAAgB,EAAE;QAChB,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,6CAA6C,EAAE;QAC5F,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,4CAA4C,EAAE;KAC5F;IACD,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;CAChD,CACF,CAAC;AAEF,SAAS,GAAG,CAAC,EACX,SAAS,EACT,OAAO,GAAG,OAAO,EACjB,IAAI,GAAG,EAAE,EACT,GAAG,KAAK,EACuD;IAC/D,OAAO,CACL,2BACY,KAAK,kBACD,OAAO,EACrB,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KACpD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Label as LabelPrimitive } from 'radix-ui';
|
|
3
|
+
/** Figma: Form Field label, Body/Small Medium. */
|
|
4
|
+
declare function Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): React.JSX.Element;
|
|
5
|
+
export { Label };
|
|
6
|
+
//# sourceMappingURL=label.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AAInD,kDAAkD;AAClD,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,qBAWvF;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Label as LabelPrimitive } from 'radix-ui';
|
|
5
|
+
import { cn } from '../lib/utils.js';
|
|
6
|
+
/** Figma: Form Field label, Body/Small Medium. */
|
|
7
|
+
function Label({ className, ...props }) {
|
|
8
|
+
return (_jsx(LabelPrimitive.Root, { "data-slot": "label", className: cn('flex select-none items-center gap-2 text-body-sm font-medium text-foreground group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:text-muted-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-50', className), ...props }));
|
|
9
|
+
}
|
|
10
|
+
export { Label };
|
|
11
|
+
//# sourceMappingURL=label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,kDAAkD;AAClD,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAoD;IACtF,OAAO,CACL,KAAC,cAAc,CAAC,IAAI,iBACR,OAAO,EACjB,SAAS,EAAE,EAAE,CACX,wOAAwO,EACxO,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Figma: Components · Base › Pagination (2085:245) and Pagination Item (2085:244).
|
|
4
|
+
* 32 px squares, 6 px radius, Body/Default; active = bordered on background + Medium.
|
|
5
|
+
* Items are links: pass href (or asChild with the router's Link).
|
|
6
|
+
*/
|
|
7
|
+
declare function Pagination({ className, ...props }: React.ComponentProps<'nav'>): React.JSX.Element;
|
|
8
|
+
declare function PaginationContent({ className, ...props }: React.ComponentProps<'ul'>): React.JSX.Element;
|
|
9
|
+
declare function PaginationItem(props: React.ComponentProps<'li'>): React.JSX.Element;
|
|
10
|
+
type PaginationLinkProps = {
|
|
11
|
+
isActive?: boolean;
|
|
12
|
+
} & React.ComponentProps<'a'>;
|
|
13
|
+
declare function PaginationLink({ className, isActive, ...props }: PaginationLinkProps): React.JSX.Element;
|
|
14
|
+
declare function PaginationPrevious({ className, children, ...props }: React.ComponentProps<typeof PaginationLink>): React.JSX.Element;
|
|
15
|
+
declare function PaginationNext({ className, children, ...props }: React.ComponentProps<typeof PaginationLink>): React.JSX.Element;
|
|
16
|
+
declare function PaginationEllipsis({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
|
|
17
|
+
export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, };
|
|
18
|
+
//# sourceMappingURL=pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B;;;;GAIG;AACH,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAUvE;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAE7E;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAExD;AAED,KAAK,mBAAmB,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAE9E,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,qBAc7E;AAED,iBAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAqB,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,qBAWtH;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,QAAiB,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,qBAO9G;AAED,iBAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAYhF;AAED,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,kBAAkB,GACnB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from 'lucide-react';
|
|
4
|
+
import { cn } from '../lib/utils.js';
|
|
5
|
+
import { buttonVariants } from './button.js';
|
|
6
|
+
/**
|
|
7
|
+
* Figma: Components · Base › Pagination (2085:245) and Pagination Item (2085:244).
|
|
8
|
+
* 32 px squares, 6 px radius, Body/Default; active = bordered on background + Medium.
|
|
9
|
+
* Items are links: pass href (or asChild with the router's Link).
|
|
10
|
+
*/
|
|
11
|
+
function Pagination({ className, ...props }) {
|
|
12
|
+
return (_jsx("nav", { role: "navigation", "aria-label": "pagination", "data-slot": "pagination", className: cn('mx-auto flex w-full justify-center', className), ...props }));
|
|
13
|
+
}
|
|
14
|
+
function PaginationContent({ className, ...props }) {
|
|
15
|
+
return _jsx("ul", { "data-slot": "pagination-content", className: cn('flex items-center gap-1', className), ...props });
|
|
16
|
+
}
|
|
17
|
+
function PaginationItem(props) {
|
|
18
|
+
return _jsx("li", { "data-slot": "pagination-item", ...props });
|
|
19
|
+
}
|
|
20
|
+
function PaginationLink({ className, isActive, ...props }) {
|
|
21
|
+
return (_jsx("a", { "aria-current": isActive ? 'page' : undefined, "data-slot": "pagination-link", "data-active": isActive, className: cn(buttonVariants({ variant: isActive ? 'outline' : 'ghost' }), 'size-8 rounded-md px-0 font-normal data-[active=true]:font-medium data-[active=true]:shadow-none', className), ...props }));
|
|
22
|
+
}
|
|
23
|
+
function PaginationPrevious({ className, children = 'Previous', ...props }) {
|
|
24
|
+
return (_jsxs(PaginationLink, { "aria-label": "Go to previous page", className: cn('w-auto gap-1 px-2.5', className), ...props, children: [_jsx(ChevronLeftIcon, {}), _jsx("span", { children: children })] }));
|
|
25
|
+
}
|
|
26
|
+
function PaginationNext({ className, children = 'Next', ...props }) {
|
|
27
|
+
return (_jsxs(PaginationLink, { "aria-label": "Go to next page", className: cn('w-auto gap-1 px-2.5', className), ...props, children: [_jsx("span", { children: children }), _jsx(ChevronRightIcon, {})] }));
|
|
28
|
+
}
|
|
29
|
+
function PaginationEllipsis({ className, ...props }) {
|
|
30
|
+
return (_jsxs("span", { "aria-hidden": true, "data-slot": "pagination-ellipsis", className: cn('flex size-8 items-center justify-center text-muted-foreground', className), ...props, children: [_jsx(MoreHorizontalIcon, { className: "size-4" }), _jsx("span", { className: "sr-only", children: "More pages" })] }));
|
|
31
|
+
}
|
|
32
|
+
export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, };
|
|
33
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;GAIG;AACH,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,cACE,IAAI,EAAC,YAAY,gBACN,YAAY,eACb,YAAY,EACtB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,KAC1D,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IAC5E,OAAO,0BAAc,oBAAoB,EAAC,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAC/G,CAAC;AAED,SAAS,cAAc,CAAC,KAAiC;IACvD,OAAO,0BAAc,iBAAiB,KAAK,KAAK,GAAI,CAAC;AACvD,CAAC;AAID,SAAS,cAAc,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAuB;IAC5E,OAAO,CACL,4BACgB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,eACjC,iBAAiB,iBACd,QAAQ,EACrB,SAAS,EAAE,EAAE,CACX,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAC3D,kGAAkG,EAClG,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,GAAG,UAAU,EAAE,GAAG,KAAK,EAA+C;IACrH,OAAO,CACL,MAAC,cAAc,kBACF,qBAAqB,EAChC,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,KAC3C,KAAK,aAET,KAAC,eAAe,KAAG,EACnB,yBAAO,QAAQ,GAAQ,IACR,CAClB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,SAAS,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,KAAK,EAA+C;IAC7G,OAAO,CACL,MAAC,cAAc,kBAAY,iBAAiB,EAAC,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,KAAM,KAAK,aACrG,yBAAO,QAAQ,GAAQ,EACvB,KAAC,gBAAgB,KAAG,IACL,CAClB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAgC;IAC/E,OAAO,CACL,kDAEY,qBAAqB,EAC/B,SAAS,EAAE,EAAE,CAAC,+DAA+D,EAAE,SAAS,CAAC,KACrF,KAAK,aAET,KAAC,kBAAkB,IAAC,SAAS,EAAC,QAAQ,GAAG,EACzC,eAAM,SAAS,EAAC,SAAS,2BAAkB,IACtC,CACR,CAAC;AACJ,CAAC;AAED,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,kBAAkB,GACnB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Popover as PopoverPrimitive } from 'radix-ui';
|
|
3
|
+
/** Figma: Components · Base › Popover (2084:117). 300 px, 16 px padding, 8 px radius, Shadow/md. */
|
|
4
|
+
declare function Popover(props: React.ComponentProps<typeof PopoverPrimitive.Root>): React.JSX.Element;
|
|
5
|
+
declare function PopoverTrigger(props: React.ComponentProps<typeof PopoverPrimitive.Trigger>): React.JSX.Element;
|
|
6
|
+
declare function PopoverAnchor(props: React.ComponentProps<typeof PopoverPrimitive.Anchor>): React.JSX.Element;
|
|
7
|
+
declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof PopoverPrimitive.Content>): React.JSX.Element;
|
|
8
|
+
declare function PopoverHeader({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
|
9
|
+
declare function PopoverTitle({ className, ...props }: React.ComponentProps<'h2'>): React.JSX.Element;
|
|
10
|
+
declare function PopoverDescription({ className, ...props }: React.ComponentProps<'p'>): React.JSX.Element;
|
|
11
|
+
export { Popover, PopoverTrigger, PopoverAnchor, PopoverContent, PopoverHeader, PopoverTitle, PopoverDescription, };
|
|
12
|
+
//# sourceMappingURL=popover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIvD,oGAAoG;AACpG,iBAAS,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,qBAEzE;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,qBAEnF;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,qBAEjF;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,KAAgB,EAChB,UAAc,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,qBAevD;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAE1E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAExE;AAED,iBAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAI7E;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,kBAAkB,GACnB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Popover as PopoverPrimitive } from 'radix-ui';
|
|
5
|
+
import { cn } from '../lib/utils.js';
|
|
6
|
+
/** Figma: Components · Base › Popover (2084:117). 300 px, 16 px padding, 8 px radius, Shadow/md. */
|
|
7
|
+
function Popover(props) {
|
|
8
|
+
return _jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
|
|
9
|
+
}
|
|
10
|
+
function PopoverTrigger(props) {
|
|
11
|
+
return _jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
12
|
+
}
|
|
13
|
+
function PopoverAnchor(props) {
|
|
14
|
+
return _jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
|
|
15
|
+
}
|
|
16
|
+
function PopoverContent({ className, align = 'center', sideOffset = 4, ...props }) {
|
|
17
|
+
return (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn('z-50 flex w-[300px] origin-(--radix-popover-content-transform-origin) flex-col gap-3 rounded-lg border border-border bg-popover p-4 text-body text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=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', className), ...props }) }));
|
|
18
|
+
}
|
|
19
|
+
function PopoverHeader({ className, ...props }) {
|
|
20
|
+
return _jsx("div", { "data-slot": "popover-header", className: cn('flex flex-col gap-1', className), ...props });
|
|
21
|
+
}
|
|
22
|
+
function PopoverTitle({ className, ...props }) {
|
|
23
|
+
return _jsx("h2", { "data-slot": "popover-title", className: cn('text-card-title', className), ...props });
|
|
24
|
+
}
|
|
25
|
+
function PopoverDescription({ className, ...props }) {
|
|
26
|
+
return (_jsx("p", { "data-slot": "popover-description", className: cn('text-body text-muted-foreground', className), ...props }));
|
|
27
|
+
}
|
|
28
|
+
export { Popover, PopoverTrigger, PopoverAnchor, PopoverContent, PopoverHeader, PopoverTitle, PopoverDescription, };
|
|
29
|
+
//# sourceMappingURL=popover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.js","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,oGAAoG;AACpG,SAAS,OAAO,CAAC,KAAyD;IACxE,OAAO,KAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,KAAK,KAAK,GAAI,CAAC;AAClE,CAAC;AAED,SAAS,cAAc,CAAC,KAA4D;IAClF,OAAO,KAAC,gBAAgB,CAAC,OAAO,iBAAW,iBAAiB,KAAK,KAAK,GAAI,CAAC;AAC7E,CAAC;AAED,SAAS,aAAa,CAAC,KAA2D;IAChF,OAAO,KAAC,gBAAgB,CAAC,MAAM,iBAAW,gBAAgB,KAAK,KAAK,GAAI,CAAC;AAC3E,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,KAAK,GAAG,QAAQ,EAChB,UAAU,GAAG,CAAC,EACd,GAAG,KAAK,EAC8C;IACtD,OAAO,CACL,KAAC,gBAAgB,CAAC,MAAM,cACtB,KAAC,gBAAgB,CAAC,OAAO,iBACb,iBAAiB,EAC3B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACX,+gBAA+gB,EAC/gB,SAAS,CACV,KACG,KAAK,GACT,GACsB,CAC3B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACzE,OAAO,2BAAe,gBAAgB,EAAC,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AACxG,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACvE,OAAO,0BAAc,eAAe,EAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAClG,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA6B;IAC5E,OAAO,CACL,yBAAa,qBAAqB,EAAC,SAAS,EAAE,EAAE,CAAC,iCAAiC,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAC9G,CAAC;AACJ,CAAC;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,kBAAkB,GACnB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
|
+
import { Progress as ProgressPrimitive } from 'radix-ui';
|
|
4
|
+
/** Figma: Components · Base › Progress (2085:210). 8 px muted track, full radius, toned bar. */
|
|
5
|
+
declare const progressIndicatorVariants: (props?: ({
|
|
6
|
+
tone?: "destructive" | "primary" | "success" | "warning" | null | undefined;
|
|
7
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
|
+
type ProgressTone = NonNullable<VariantProps<typeof progressIndicatorVariants>['tone']>;
|
|
9
|
+
type ProgressProps = React.ComponentProps<typeof ProgressPrimitive.Root> & {
|
|
10
|
+
/** Figma "Tone". Default `primary`. */
|
|
11
|
+
tone?: ProgressTone | null;
|
|
12
|
+
/** Same as `tone` (shadcn-style name). */
|
|
13
|
+
variant?: ProgressTone | null;
|
|
14
|
+
};
|
|
15
|
+
declare function Progress({ className, value, tone: toneProp, variant, ...props }: ProgressProps): React.JSX.Element;
|
|
16
|
+
export { Progress, progressIndicatorVariants, type ProgressProps, type ProgressTone };
|
|
17
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/components/progress.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAKzD,gGAAgG;AAChG,QAAA,MAAM,yBAAyB;;8EAU7B,CAAC;AAEH,KAAK,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAExF,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG;IACzE,uCAAuC;IACvC,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,qBAkBvF;AAED,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { Progress as ProgressPrimitive } from 'radix-ui';
|
|
6
|
+
import { resolveTone } from '../lib/tone.js';
|
|
7
|
+
import { cn } from '../lib/utils.js';
|
|
8
|
+
/** Figma: Components · Base › Progress (2085:210). 8 px muted track, full radius, toned bar. */
|
|
9
|
+
const progressIndicatorVariants = cva('h-full w-full flex-1 rounded-full transition-transform', {
|
|
10
|
+
variants: {
|
|
11
|
+
tone: {
|
|
12
|
+
primary: 'bg-primary',
|
|
13
|
+
success: 'bg-success',
|
|
14
|
+
warning: 'bg-warning',
|
|
15
|
+
destructive: 'bg-destructive',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
defaultVariants: { tone: 'primary' },
|
|
19
|
+
});
|
|
20
|
+
function Progress({ className, value, tone: toneProp, variant, ...props }) {
|
|
21
|
+
const tone = resolveTone(toneProp, variant, {}, 'primary');
|
|
22
|
+
const pct = Math.min(100, Math.max(0, value ?? 0));
|
|
23
|
+
return (_jsx(ProgressPrimitive.Root, { "data-slot": "progress", value: value, className: cn('relative h-2 w-full overflow-hidden rounded-full bg-muted', className), ...props, children: _jsx(ProgressPrimitive.Indicator, { "data-slot": "progress-indicator", "data-tone": tone, className: progressIndicatorVariants({ tone }), style: { transform: `translateX(-${100 - pct}%)` } }) }));
|
|
24
|
+
}
|
|
25
|
+
export { Progress, progressIndicatorVariants };
|
|
26
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/components/progress.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,gGAAgG;AAChG,MAAM,yBAAyB,GAAG,GAAG,CAAC,wDAAwD,EAAE;IAC9F,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,gBAAgB;SAC9B;KACF;IACD,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;CACrC,CAAC,CAAC;AAWH,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAAiB;IACtF,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,CACL,KAAC,iBAAiB,CAAC,IAAI,iBACX,UAAU,EACpB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,2DAA2D,EAAE,SAAS,CAAC,KACjF,KAAK,YAET,KAAC,iBAAiB,CAAC,SAAS,iBAChB,oBAAoB,eACnB,IAAI,EACf,SAAS,EAAE,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,EAC9C,KAAK,EAAE,EAAE,SAAS,EAAE,eAAe,GAAG,GAAG,GAAG,IAAI,EAAE,GAClD,GACqB,CAC1B,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAyC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { RadioGroup as RadioGroupPrimitive } from 'radix-ui';
|
|
3
|
+
/** Figma: Components · Base › Radio (2083:207). 16 px ring; checked = violet ring + 8 px dot. */
|
|
4
|
+
declare function RadioGroup({ className, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Root>): React.JSX.Element;
|
|
5
|
+
declare function RadioGroupItem({ className, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Item>): React.JSX.Element;
|
|
6
|
+
export { RadioGroup, RadioGroupItem };
|
|
7
|
+
//# sourceMappingURL=radio-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/components/radio-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAI7D,iGAAiG;AACjG,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,qBAQjG;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,qBAkBvD;AAED,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { RadioGroup as RadioGroupPrimitive } from 'radix-ui';
|
|
5
|
+
import { cn } from '../lib/utils.js';
|
|
6
|
+
/** Figma: Components · Base › Radio (2083:207). 16 px ring; checked = violet ring + 8 px dot. */
|
|
7
|
+
function RadioGroup({ className, ...props }) {
|
|
8
|
+
return (_jsx(RadioGroupPrimitive.Root, { "data-slot": "radio-group", className: cn('grid gap-3', className), ...props }));
|
|
9
|
+
}
|
|
10
|
+
function RadioGroupItem({ className, ...props }) {
|
|
11
|
+
return (_jsx(RadioGroupPrimitive.Item, { "data-slot": "radio-group-item", className: cn('peer aspect-square size-4 shrink-0 rounded-full border border-input bg-background shadow-xs transition-[border-color,box-shadow] outline-none focus-visible:ring-3 focus-visible:ring-ring/40 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive data-[state=checked]:border-primary', className), ...props, children: _jsx(RadioGroupPrimitive.Indicator, { "data-slot": "radio-group-indicator", className: "flex items-center justify-center", children: _jsx("span", { className: "size-2 rounded-full bg-primary" }) }) }));
|
|
12
|
+
}
|
|
13
|
+
export { RadioGroup, RadioGroupItem };
|
|
14
|
+
//# sourceMappingURL=radio-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../src/components/radio-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,iGAAiG;AACjG,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAyD;IAChG,OAAO,CACL,KAAC,mBAAmB,CAAC,IAAI,iBACb,aAAa,EACvB,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,KAClC,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EAC8C;IACtD,OAAO,CACL,KAAC,mBAAmB,CAAC,IAAI,iBACb,kBAAkB,EAC5B,SAAS,EAAE,EAAE,CACX,mTAAmT,EACnT,SAAS,CACV,KACG,KAAK,YAET,KAAC,mBAAmB,CAAC,SAAS,iBAClB,uBAAuB,EACjC,SAAS,EAAC,kCAAkC,YAE5C,eAAM,SAAS,EAAC,gCAAgC,GAAG,GACrB,GACP,CAC5B,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Select as SelectPrimitive } from 'radix-ui';
|
|
3
|
+
/**
|
|
4
|
+
* Figma: Components · Base › Select (2083:40). The trigger looks like Input (32 px,
|
|
5
|
+
* `input` border, ring on focus) with a muted chevron; the list is a Dropdown Menu panel.
|
|
6
|
+
*/
|
|
7
|
+
declare function Select(props: React.ComponentProps<typeof SelectPrimitive.Root>): React.JSX.Element;
|
|
8
|
+
declare function SelectGroup(props: React.ComponentProps<typeof SelectPrimitive.Group>): React.JSX.Element;
|
|
9
|
+
declare function SelectValue(props: React.ComponentProps<typeof SelectPrimitive.Value>): React.JSX.Element;
|
|
10
|
+
declare function SelectTrigger({ className, size, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
|
|
11
|
+
size?: 'sm' | 'default';
|
|
12
|
+
}): React.JSX.Element;
|
|
13
|
+
declare function SelectContent({ className, children, position, align, ...props }: React.ComponentProps<typeof SelectPrimitive.Content>): React.JSX.Element;
|
|
14
|
+
declare function SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>): React.JSX.Element;
|
|
15
|
+
declare function SelectItem({ className, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Item>): React.JSX.Element;
|
|
16
|
+
declare function SelectSeparator({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Separator>): React.JSX.Element;
|
|
17
|
+
declare function SelectScrollUpButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>): React.JSX.Element;
|
|
18
|
+
declare function SelectScrollDownButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>): React.JSX.Element;
|
|
19
|
+
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
|
|
20
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAOrD;;;GAGG;AACH,iBAAS,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,qBAEvE;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,qBAE7E;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,qBAE7E;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,IAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CAAE,qBAkBpF;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,QAAmB,EACnB,KAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,qBA6BtD;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,qBAQ/F;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,qBAevG;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,qBAQvG;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,qBAU7D;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,gBAAgB,CAAC,qBAU/D;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAC"}
|