@almach/ui 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/dist/.tsbuildinfo +1 -0
- package/dist/components/alert.d.ts +33 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +54 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/avatar.d.ts +15 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +33 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +10 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +24 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +15 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +47 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar.d.ts +4 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +73 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +30 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +54 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.d.ts +21 -0
- package/dist/components/carousel.d.ts.map +1 -0
- package/dist/components/carousel.js +149 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/checkbox.d.ts +7 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +9 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/collapsible.d.ts +7 -0
- package/dist/components/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible.js +19 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.d.ts +11 -0
- package/dist/components/combobox.d.ts.map +1 -0
- package/dist/components/combobox.js +10 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command.d.ts +85 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +46 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/dialog.d.ts +36 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +37 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/drawer.d.ts +34 -0
- package/dist/components/drawer.d.ts.map +1 -0
- package/dist/components/drawer.js +36 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +30 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +46 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/group.d.ts +26 -0
- package/dist/components/group.d.ts.map +1 -0
- package/dist/components/group.js +13 -0
- package/dist/components/group.js.map +1 -0
- package/dist/components/input.d.ts +34 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +156 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/label.d.ts +7 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +9 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/layered-card.d.ts +13 -0
- package/dist/components/layered-card.d.ts.map +1 -0
- package/dist/components/layered-card.js +13 -0
- package/dist/components/layered-card.js.map +1 -0
- package/dist/components/modal.d.ts +36 -0
- package/dist/components/modal.d.ts.map +1 -0
- package/dist/components/modal.js +72 -0
- package/dist/components/modal.js.map +1 -0
- package/dist/components/progress.d.ts +5 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +11 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio.d.ts +11 -0
- package/dist/components/radio.d.ts.map +1 -0
- package/dist/components/radio.js +17 -0
- package/dist/components/radio.js.map +1 -0
- package/dist/components/select.d.ts +41 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +49 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +5 -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/skeleton.d.ts +6 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +7 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/switch.d.ts +11 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +44 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +36 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +77 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +18 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +63 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/tag-input.d.ts +14 -0
- package/dist/components/tag-input.d.ts.map +1 -0
- package/dist/components/tag-input.js +53 -0
- package/dist/components/tag-input.js.map +1 -0
- package/dist/components/textarea.d.ts +7 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +9 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toast.d.ts +19 -0
- package/dist/components/toast.d.ts.map +1 -0
- package/dist/components/toast.js +51 -0
- package/dist/components/toast.js.map +1 -0
- package/dist/components/toaster.d.ts +2 -0
- package/dist/components/toaster.d.ts.map +1 -0
- package/dist/components/toaster.js +11 -0
- package/dist/components/toaster.js.map +1 -0
- package/dist/components/tooltip.d.ts +9 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +17 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/hooks/use-copy-to-clipboard.d.ts +8 -0
- package/dist/hooks/use-copy-to-clipboard.d.ts.map +1 -0
- package/dist/hooks/use-copy-to-clipboard.js +23 -0
- package/dist/hooks/use-copy-to-clipboard.js.map +1 -0
- package/dist/hooks/use-media-query.d.ts +7 -0
- package/dist/hooks/use-media-query.d.ts.map +1 -0
- package/dist/hooks/use-media-query.js +21 -0
- package/dist/hooks/use-media-query.js.map +1 -0
- package/dist/hooks/use-toast.d.ts +45 -0
- package/dist/hooks/use-toast.d.ts.map +1 -0
- package/dist/hooks/use-toast.js +102 -0
- package/dist/hooks/use-toast.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/package.json +74 -0
- package/src/styles/globals.css +241 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare function DropdownMenuLabel({ className, inset, ...props }: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
|
|
4
|
+
inset?: boolean;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function DropdownMenuSeparator({ className, ...props }: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function DropdownMenuShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare const DropdownMenu: React.FC<DropdownMenuPrimitive.DropdownMenuProps> & {
|
|
9
|
+
Trigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
10
|
+
Portal: React.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
|
|
11
|
+
Sub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
|
|
12
|
+
RadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
Group: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
Content: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
15
|
+
SubTrigger: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
16
|
+
inset?: boolean;
|
|
17
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
SubContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
19
|
+
Item: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
20
|
+
inset?: boolean;
|
|
21
|
+
destructive?: boolean;
|
|
22
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
+
CheckboxItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
24
|
+
RadioItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
25
|
+
Label: typeof DropdownMenuLabel;
|
|
26
|
+
Separator: typeof DropdownMenuSeparator;
|
|
27
|
+
Shortcut: typeof DropdownMenuShortcut;
|
|
28
|
+
};
|
|
29
|
+
export { DropdownMenu };
|
|
30
|
+
//# sourceMappingURL=dropdown-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../src/components/dropdown-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,qBAAqB,MAAM,+BAA+B,CAAC;AAEvE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuI/B,iBAAS,iBAAiB,CAAC,EAC1B,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,wBAAwB,CAAC,OAAO,qBAAqB,CAAC,KAAK,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,2CAW1F;AAED,iBAAS,qBAAqB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,wBAAwB,CAAC,OAAO,qBAAqB,CAAC,SAAS,CAAC,2CAOxE;AAED,iBAAS,oBAAoB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,2CAO3F;AAGD,QAAA,MAAM,YAAY;;;;;;;;gBAvKmE,OAAO;;;;gBA+Db,OAAO;sBAAgB,OAAO;;;;;;;CAuH3G,CAAC;AAEH,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
3
|
+
import { Check, ChevronRight, Circle } from "lucide-react";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { cn } from "@almach/utils";
|
|
6
|
+
/* ── Sub-components ────────────────────────────────────────────────────── */
|
|
7
|
+
const DropdownMenuSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => (_jsxs(DropdownMenuPrimitive.SubTrigger, { ref: ref, className: cn("flex cursor-default select-none items-center gap-2 rounded-lg px-2 py-1.5 text-sm outline-none", "focus:bg-accent data-[state=open]:bg-accent", inset && "pl-8", className), ...props, children: [children, _jsx(ChevronRight, { className: "ml-auto h-4 w-4" })] })));
|
|
8
|
+
DropdownMenuSubTrigger.displayName = "DropdownMenu.SubTrigger";
|
|
9
|
+
const DropdownMenuSubContent = React.forwardRef(({ className, ...props }, ref) => (_jsx(DropdownMenuPrimitive.SubContent, { ref: ref, className: cn("z-50 min-w-[8rem] overflow-hidden rounded-xl border bg-popover p-1.5 text-popover-foreground shadow-lg", "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", className), ...props })));
|
|
10
|
+
DropdownMenuSubContent.displayName = "DropdownMenu.SubContent";
|
|
11
|
+
const DropdownMenuContent = React.forwardRef(({ className, sideOffset = 6, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Portal, { children: _jsx(DropdownMenuPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: cn("z-50 min-w-[8rem] overflow-hidden rounded-xl border bg-popover p-1.5 text-popover-foreground shadow-xl", "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", className), ...props }) })));
|
|
12
|
+
DropdownMenuContent.displayName = "DropdownMenu.Content";
|
|
13
|
+
const DropdownMenuItem = React.forwardRef(({ className, inset, destructive, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Item, { ref: ref, className: cn("relative flex cursor-default select-none items-center gap-2 rounded-lg px-2 py-1.5 text-sm outline-none transition-colors", "focus:bg-accent focus:text-accent-foreground", "data-[disabled]:pointer-events-none data-[disabled]:opacity-50", inset && "pl-8", destructive && "text-destructive focus:bg-destructive/10 focus:text-destructive", "[&_svg]:size-4 [&_svg]:shrink-0", className), ...props })));
|
|
14
|
+
DropdownMenuItem.displayName = "DropdownMenu.Item";
|
|
15
|
+
const DropdownMenuCheckboxItem = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(DropdownMenuPrimitive.CheckboxItem, { ref: ref, className: cn("relative flex cursor-default select-none items-center rounded-lg py-1.5 pl-8 pr-2 text-sm outline-none transition-colors", "focus:bg-accent focus:text-accent-foreground", "data-[disabled]:pointer-events-none data-[disabled]:opacity-50"), ...props, children: [_jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(Check, { className: "h-4 w-4" }) }) }), children] })));
|
|
16
|
+
DropdownMenuCheckboxItem.displayName = "DropdownMenu.CheckboxItem";
|
|
17
|
+
const DropdownMenuRadioItem = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(DropdownMenuPrimitive.RadioItem, { ref: ref, className: cn("relative flex cursor-default select-none items-center rounded-lg py-1.5 pl-8 pr-2 text-sm outline-none transition-colors", "focus:bg-accent focus:text-accent-foreground", "data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className), ...props, children: [_jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(Circle, { className: "h-2 w-2 fill-current" }) }) }), children] })));
|
|
18
|
+
DropdownMenuRadioItem.displayName = "DropdownMenu.RadioItem";
|
|
19
|
+
function DropdownMenuLabel({ className, inset, ...props }) {
|
|
20
|
+
return (_jsx(DropdownMenuPrimitive.Label, { className: cn("px-2 py-1 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", inset && "pl-8", className), ...props }));
|
|
21
|
+
}
|
|
22
|
+
function DropdownMenuSeparator({ className, ...props }) {
|
|
23
|
+
return (_jsx(DropdownMenuPrimitive.Separator, { className: cn("-mx-1.5 my-1 h-px bg-border", className), ...props }));
|
|
24
|
+
}
|
|
25
|
+
function DropdownMenuShortcut({ className, ...props }) {
|
|
26
|
+
return (_jsx("span", { className: cn("ml-auto text-xs tracking-widest opacity-50", className), ...props }));
|
|
27
|
+
}
|
|
28
|
+
/* ── Compound export ───────────────────────────────────────────────────── */
|
|
29
|
+
const DropdownMenu = Object.assign(DropdownMenuPrimitive.Root, {
|
|
30
|
+
Trigger: DropdownMenuPrimitive.Trigger,
|
|
31
|
+
Portal: DropdownMenuPrimitive.Portal,
|
|
32
|
+
Sub: DropdownMenuPrimitive.Sub,
|
|
33
|
+
RadioGroup: DropdownMenuPrimitive.RadioGroup,
|
|
34
|
+
Group: DropdownMenuPrimitive.Group,
|
|
35
|
+
Content: DropdownMenuContent,
|
|
36
|
+
SubTrigger: DropdownMenuSubTrigger,
|
|
37
|
+
SubContent: DropdownMenuSubContent,
|
|
38
|
+
Item: DropdownMenuItem,
|
|
39
|
+
CheckboxItem: DropdownMenuCheckboxItem,
|
|
40
|
+
RadioItem: DropdownMenuRadioItem,
|
|
41
|
+
Label: DropdownMenuLabel,
|
|
42
|
+
Separator: DropdownMenuSeparator,
|
|
43
|
+
Shortcut: DropdownMenuShortcut,
|
|
44
|
+
});
|
|
45
|
+
export { DropdownMenu };
|
|
46
|
+
//# 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,26 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface GroupProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/** Small label shown above the group */
|
|
4
|
+
label?: string;
|
|
5
|
+
/** Helper text shown below the group */
|
|
6
|
+
hint?: string;
|
|
7
|
+
}
|
|
8
|
+
declare function GroupRoot({ label, hint, className, children, ...props }: GroupProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
interface GroupRowProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
10
|
+
/** Left-side primary label */
|
|
11
|
+
label?: string;
|
|
12
|
+
/** Left-side secondary text under label */
|
|
13
|
+
description?: string;
|
|
14
|
+
/** Associates label with a form control */
|
|
15
|
+
htmlFor?: string;
|
|
16
|
+
/** Marks the field as required (adds red asterisk) */
|
|
17
|
+
required?: boolean;
|
|
18
|
+
/** Right-side element: form control, toggle, arrow, badge, etc. */
|
|
19
|
+
action?: React.ReactNode;
|
|
20
|
+
}
|
|
21
|
+
declare function GroupRow({ label, description, htmlFor, required, action, children, className, onClick, ...props }: GroupRowProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export declare const Group: typeof GroupRoot & {
|
|
23
|
+
Row: typeof GroupRow;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/components/group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,UAAU,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAChE,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,iBAAS,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAgB5E;AAGD,UAAU,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACnE,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED,iBAAS,QAAQ,CAAC,EACjB,KAAK,EACL,WAAW,EACX,OAAO,EACP,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACR,EAAE,aAAa,2CAiDf;AAGD,eAAO,MAAM,KAAK;;CAEhB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "@almach/utils";
|
|
3
|
+
function GroupRoot({ label, hint, className, children, ...props }) {
|
|
4
|
+
return (_jsxs("div", { className: cn("space-y-1.5", className), ...props, children: [label && (_jsx("p", { className: "px-1 text-xs font-medium uppercase tracking-wider text-muted-foreground", children: label })), _jsx("div", { className: "overflow-hidden rounded-xl border bg-card divide-y", children: children }), hint && (_jsx("p", { className: "px-1 text-xs text-muted-foreground", children: hint }))] }));
|
|
5
|
+
}
|
|
6
|
+
function GroupRow({ label, description, htmlFor, required, action, children, className, onClick, ...props }) {
|
|
7
|
+
return (_jsxs("div", { className: cn("flex items-center gap-3 px-4 py-3 bg-card transition-colors", onClick && "cursor-pointer hover:bg-accent/50", className), onClick: onClick, ...props, children: [label ? (_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("label", { htmlFor: htmlFor, className: cn("text-sm font-medium leading-none", htmlFor && "cursor-pointer"), children: [label, required && (_jsx("span", { className: "ml-1 text-destructive", "aria-hidden": true, children: "*" }))] }), description && (_jsx("p", { className: "mt-0.5 text-xs leading-relaxed text-muted-foreground", children: description }))] })) : (_jsx("div", { className: "min-w-0 flex-1 text-sm", children: children })), label && children && (_jsx("div", { className: "shrink-0", children: children })), action && (_jsx("div", { className: "shrink-0 text-muted-foreground", children: action }))] }));
|
|
8
|
+
}
|
|
9
|
+
/* ── Compound export ──────────────────────────────────────────────────────── */
|
|
10
|
+
export const Group = Object.assign(GroupRoot, {
|
|
11
|
+
Row: GroupRow,
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/components/group.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAUnC,SAAS,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAc;IAC5E,OAAO,CACN,eAAK,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,KAAM,KAAK,aACrD,KAAK,IAAI,CACT,YAAG,SAAS,EAAC,yEAAyE,YACpF,KAAK,GACH,CACJ,EACD,cAAK,SAAS,EAAC,oDAAoD,YACjE,QAAQ,GACJ,EACL,IAAI,IAAI,CACR,YAAG,SAAS,EAAC,oCAAoC,YAAE,IAAI,GAAK,CAC5D,IACI,CACN,CAAC;AACH,CAAC;AAgBD,SAAS,QAAQ,CAAC,EACjB,KAAK,EACL,WAAW,EACX,OAAO,EACP,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACO;IACf,OAAO,CACN,eACC,SAAS,EAAE,EAAE,CACZ,6DAA6D,EAC7D,OAAO,IAAI,mCAAmC,EAC9C,SAAS,CACT,EACD,OAAO,EAAE,OAAO,KACZ,KAAK,aAGR,KAAK,CAAC,CAAC,CAAC,CACR,eAAK,SAAS,EAAC,gBAAgB,aAC9B,iBACC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CACZ,kCAAkC,EAClC,OAAO,IAAI,gBAAgB,CAC3B,aAEA,KAAK,EACL,QAAQ,IAAI,CACZ,eAAM,SAAS,EAAC,uBAAuB,uCAEhC,CACP,IACM,EACP,WAAW,IAAI,CACf,YAAG,SAAS,EAAC,sDAAsD,YACjE,WAAW,GACT,CACJ,IACI,CACN,CAAC,CAAC,CAAC,CACH,cAAK,SAAS,EAAC,wBAAwB,YAAE,QAAQ,GAAO,CACxD,EAGA,KAAK,IAAI,QAAQ,IAAI,CACrB,cAAK,SAAS,EAAC,UAAU,YAAE,QAAQ,GAAO,CAC1C,EAGA,MAAM,IAAI,CACV,cAAK,SAAS,EAAC,gCAAgC,YAAE,MAAM,GAAO,CAC9D,IACI,CACN,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;IAC7C,GAAG,EAAE,QAAQ;CACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
3
|
+
leftElement?: React.ReactNode;
|
|
4
|
+
rightElement?: React.ReactNode;
|
|
5
|
+
error?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface InputDateProps {
|
|
8
|
+
id?: string;
|
|
9
|
+
value?: Date;
|
|
10
|
+
onChange?: (date: Date | undefined) => void;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
error?: boolean;
|
|
13
|
+
/** Show calendar picker button inside the input */
|
|
14
|
+
withCalendar?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Date format controlling segment order and separator.
|
|
17
|
+
* Tokens: MM (month), DD (day), YYYY (year).
|
|
18
|
+
* @example "MM/DD/YYYY" | "DD/MM/YYYY" | "YYYY-MM-DD" | "DD-MM-YYYY"
|
|
19
|
+
* @default "MM/DD/YYYY"
|
|
20
|
+
*/
|
|
21
|
+
format?: string;
|
|
22
|
+
className?: string;
|
|
23
|
+
}
|
|
24
|
+
declare function InputDate({ id, value, onChange, disabled, error, withCalendar, format, className, }: InputDateProps): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
declare namespace InputDate {
|
|
26
|
+
var displayName: string;
|
|
27
|
+
}
|
|
28
|
+
declare const InputCompound: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>> & {
|
|
29
|
+
Date: typeof InputDate;
|
|
30
|
+
};
|
|
31
|
+
export { InputCompound as Input };
|
|
32
|
+
export declare const DateInput: typeof InputDate;
|
|
33
|
+
export type { InputDateProps as DateInputProps };
|
|
34
|
+
//# sourceMappingURL=input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;IAC9E,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AA0CD,MAAM,WAAW,cAAc;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mDAAmD;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AA4BD,iBAAS,SAAS,CAAC,EAClB,EAAE,EACF,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,YAAoB,EACpB,MAAqB,EACrB,SAAS,GACT,EAAE,cAAc,2CA6LhB;kBAtMQ,SAAS;;;AA0MlB,QAAA,MAAM,aAAa;;CAA4C,CAAC;AAEhE,OAAO,EAAE,aAAa,IAAI,KAAK,EAAE,CAAC;AAGlC,eAAO,MAAM,SAAS,kBAAY,CAAC;AACnC,YAAY,EAAE,cAAc,IAAI,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
4
|
+
import { CalendarIcon } from "lucide-react";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { cn } from "@almach/utils";
|
|
7
|
+
import { Calendar } from "./calendar";
|
|
8
|
+
const Input = React.forwardRef(({ className, type, leftElement, rightElement, error, ...props }, ref) => {
|
|
9
|
+
return (_jsxs("div", { className: "relative flex items-center w-full", children: [leftElement && (_jsx("div", { className: "pointer-events-none absolute left-3 flex items-center text-muted-foreground [&_svg]:size-4", children: leftElement })), _jsx("input", { type: type, className: cn("flex h-9 w-full rounded-lg border border-input bg-background text-sm", "transition-all duration-150", "placeholder:text-muted-foreground", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ring-offset-background", "disabled:cursor-not-allowed disabled:opacity-50", "file:border-0 file:bg-transparent file:text-sm file:font-medium", leftElement ? "pl-9 pr-3" : "px-3", rightElement ? "pr-9" : "", !leftElement && !rightElement && "px-3", error && "border-destructive focus-visible:ring-destructive", className), ref: ref, "aria-invalid": error, ...props }), rightElement && (_jsx("div", { className: "absolute right-3 flex items-center text-muted-foreground [&_svg]:size-4", children: rightElement }))] }));
|
|
10
|
+
});
|
|
11
|
+
Input.displayName = "Input";
|
|
12
|
+
const SEG_LIMITS = {
|
|
13
|
+
month: { min: 1, max: 12, len: 2 },
|
|
14
|
+
day: { min: 1, max: 31, len: 2 },
|
|
15
|
+
year: { min: 1900, max: 2100, len: 4 },
|
|
16
|
+
};
|
|
17
|
+
/** Supported tokens: MM, DD, YYYY. Separator = first non-token char. */
|
|
18
|
+
function parseFormat(fmt) {
|
|
19
|
+
const sep = fmt.replace(/MM|DD|YYYY/g, "")[0] ?? "/";
|
|
20
|
+
const order = fmt.split(sep).map((p) => p === "MM" ? "month" : p === "DD" ? "day" : "year");
|
|
21
|
+
return { order, sep };
|
|
22
|
+
}
|
|
23
|
+
function dateToSegments(date) {
|
|
24
|
+
return {
|
|
25
|
+
month: String(date.getMonth() + 1).padStart(2, "0"),
|
|
26
|
+
day: String(date.getDate()).padStart(2, "0"),
|
|
27
|
+
year: String(date.getFullYear()),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const SEG_PLACEHOLDER = { month: "MM", day: "DD", year: "YYYY" };
|
|
31
|
+
function InputDate({ id, value, onChange, disabled, error, withCalendar = false, format = "MM/DD/YYYY", className, }) {
|
|
32
|
+
const { order: SEG_ORDER, sep } = React.useMemo(() => parseFormat(format), [format]);
|
|
33
|
+
const [seg, setSeg] = React.useState(() => value && !isNaN(value.getTime())
|
|
34
|
+
? dateToSegments(value)
|
|
35
|
+
: { month: "", day: "", year: "" });
|
|
36
|
+
const [active, setActive] = React.useState(null);
|
|
37
|
+
const [calOpen, setCalOpen] = React.useState(false);
|
|
38
|
+
const refs = {
|
|
39
|
+
month: React.useRef(null),
|
|
40
|
+
day: React.useRef(null),
|
|
41
|
+
year: React.useRef(null),
|
|
42
|
+
};
|
|
43
|
+
React.useEffect(() => {
|
|
44
|
+
if (!value) {
|
|
45
|
+
setSeg({ month: "", day: "", year: "" });
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (isNaN(value.getTime()))
|
|
49
|
+
return;
|
|
50
|
+
const next = dateToSegments(value);
|
|
51
|
+
setSeg((prev) => prev.month === next.month && prev.day === next.day && prev.year === next.year
|
|
52
|
+
? prev : next);
|
|
53
|
+
}, [value]);
|
|
54
|
+
const emit = (next) => {
|
|
55
|
+
const m = parseInt(next.month, 10);
|
|
56
|
+
const d = parseInt(next.day, 10);
|
|
57
|
+
const y = parseInt(next.year, 10);
|
|
58
|
+
if (m && d && y && next.year.length === 4) {
|
|
59
|
+
const date = new Date(y, m - 1, d);
|
|
60
|
+
if (!isNaN(date.getTime()) && date.getMonth() === m - 1) {
|
|
61
|
+
onChange?.(date);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
onChange?.(undefined);
|
|
66
|
+
};
|
|
67
|
+
const focus = (key) => refs[key].current?.focus();
|
|
68
|
+
const focusNext = (key) => { const n = SEG_ORDER[SEG_ORDER.indexOf(key) + 1]; if (n)
|
|
69
|
+
focus(n); };
|
|
70
|
+
const focusPrev = (key) => { const p = SEG_ORDER[SEG_ORDER.indexOf(key) - 1]; if (p)
|
|
71
|
+
focus(p); };
|
|
72
|
+
// When format changes, move focus to first segment
|
|
73
|
+
React.useEffect(() => { focus(SEG_ORDER[0]); }, [format]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
74
|
+
const handleKeyDown = (key, e) => {
|
|
75
|
+
const { min, max, len } = SEG_LIMITS[key];
|
|
76
|
+
if (e.key === "ArrowUp" || e.key === "ArrowDown") {
|
|
77
|
+
e.preventDefault();
|
|
78
|
+
const cur = parseInt(seg[key], 10) || min;
|
|
79
|
+
const next = String(Math.min(Math.max(cur + (e.key === "ArrowUp" ? 1 : -1), min), max)).padStart(len, "0");
|
|
80
|
+
const nextSeg = { ...seg, [key]: next };
|
|
81
|
+
setSeg(nextSeg);
|
|
82
|
+
emit(nextSeg);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (e.key === "ArrowLeft") {
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
focusPrev(key);
|
|
88
|
+
}
|
|
89
|
+
if (e.key === "ArrowRight" || e.key === sep) {
|
|
90
|
+
e.preventDefault();
|
|
91
|
+
focusNext(key);
|
|
92
|
+
}
|
|
93
|
+
if (e.key === "Backspace" && !seg[key])
|
|
94
|
+
focusPrev(key);
|
|
95
|
+
};
|
|
96
|
+
const handleChange = (key, raw) => {
|
|
97
|
+
const { min, max, len } = SEG_LIMITS[key];
|
|
98
|
+
const digits = raw.replace(/\D/g, "").slice(-len);
|
|
99
|
+
let val = digits;
|
|
100
|
+
if (digits.length === len) {
|
|
101
|
+
const n = parseInt(digits, 10);
|
|
102
|
+
if (n > max)
|
|
103
|
+
val = String(max).padStart(len, "0");
|
|
104
|
+
else if (n < min)
|
|
105
|
+
val = String(min).padStart(len, "0");
|
|
106
|
+
}
|
|
107
|
+
const nextSeg = { ...seg, [key]: val };
|
|
108
|
+
setSeg(nextSeg);
|
|
109
|
+
emit(nextSeg);
|
|
110
|
+
const shouldAdvance = val.length === len ||
|
|
111
|
+
(key === "month" && parseInt(val, 10) > 1 && val.length === 1) ||
|
|
112
|
+
(key === "day" && parseInt(val, 10) > 3 && val.length === 1);
|
|
113
|
+
if (shouldAdvance)
|
|
114
|
+
focusNext(key);
|
|
115
|
+
};
|
|
116
|
+
const handleCalendarSelect = (date) => {
|
|
117
|
+
if (date) {
|
|
118
|
+
setSeg(dateToSegments(date));
|
|
119
|
+
onChange?.(date);
|
|
120
|
+
}
|
|
121
|
+
setCalOpen(false);
|
|
122
|
+
};
|
|
123
|
+
const calValue = (() => {
|
|
124
|
+
const m = parseInt(seg.month, 10), d = parseInt(seg.day, 10), y = parseInt(seg.year, 10);
|
|
125
|
+
if (m && d && y && seg.year.length === 4) {
|
|
126
|
+
const dt = new Date(y, m - 1, d);
|
|
127
|
+
if (!isNaN(dt.getTime()) && dt.getMonth() === m - 1)
|
|
128
|
+
return dt;
|
|
129
|
+
}
|
|
130
|
+
return undefined;
|
|
131
|
+
})();
|
|
132
|
+
const segClass = (key) => cn("bg-transparent text-center outline-none tabular-nums caret-transparent select-none", "rounded transition-colors duration-100", "placeholder:text-muted-foreground/50", key === "year" ? "w-[3.2rem]" : "w-8", active === key && "bg-primary/10 text-primary");
|
|
133
|
+
const mkProps = (key, ph) => ({
|
|
134
|
+
ref: refs[key],
|
|
135
|
+
type: "text",
|
|
136
|
+
value: seg[key],
|
|
137
|
+
placeholder: ph,
|
|
138
|
+
maxLength: SEG_LIMITS[key].len,
|
|
139
|
+
disabled,
|
|
140
|
+
inputMode: "numeric",
|
|
141
|
+
"aria-label": key,
|
|
142
|
+
className: segClass(key),
|
|
143
|
+
onChange: (e) => handleChange(key, e.target.value),
|
|
144
|
+
onKeyDown: (e) => handleKeyDown(key, e),
|
|
145
|
+
onFocus: () => setActive(key),
|
|
146
|
+
onBlur: () => setActive(null),
|
|
147
|
+
});
|
|
148
|
+
return (_jsxs("div", { id: id, role: "group", "aria-label": "Date input", className: cn("flex h-9 w-full items-center rounded-lg border border-input bg-background px-3 text-sm", "ring-offset-background transition-all duration-150", "focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2", error && "border-destructive focus-within:ring-destructive", disabled && "cursor-not-allowed opacity-50", className), onClick: () => !active && focus(SEG_ORDER[0]), children: [SEG_ORDER.map((key, i) => (_jsxs(React.Fragment, { children: [i > 0 && (_jsx("span", { className: "mx-0.5 select-none text-muted-foreground/40", "aria-hidden": "true", children: sep })), _jsx("input", { ...mkProps(key, SEG_PLACEHOLDER[key]) })] }, key))), withCalendar && (_jsxs(PopoverPrimitive.Root, { open: calOpen, onOpenChange: setCalOpen, children: [_jsx(PopoverPrimitive.Trigger, { asChild: true, children: _jsx("button", { type: "button", disabled: disabled, "aria-label": "Open calendar", "aria-haspopup": "dialog", "aria-expanded": calOpen, className: cn("ml-auto flex items-center justify-center rounded-md p-0.5", "text-muted-foreground transition-colors", "hover:bg-accent hover:text-foreground", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:pointer-events-none"), children: _jsx(CalendarIcon, { className: "h-4 w-4", "aria-hidden": "true" }) }) }), _jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { align: "end", sideOffset: 6, className: cn("z-50 overflow-hidden rounded-xl border bg-popover shadow-xl", "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"), children: _jsx(Calendar, { mode: "single", selected: calValue, onSelect: handleCalendarSelect, defaultMonth: calValue ?? new Date(), initialFocus: true }) }) })] }))] }));
|
|
149
|
+
}
|
|
150
|
+
InputDate.displayName = "Input.Date";
|
|
151
|
+
/* ── Compound export ──────────────────────────────────────────────────────── */
|
|
152
|
+
const InputCompound = Object.assign(Input, { Date: InputDate });
|
|
153
|
+
export { InputCompound as Input };
|
|
154
|
+
// Backward-compat alias
|
|
155
|
+
export const DateInput = InputDate;
|
|
156
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare const Label: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & {
|
|
4
|
+
required?: boolean;
|
|
5
|
+
} & React.RefAttributes<HTMLLabelElement>>;
|
|
6
|
+
export { Label };
|
|
7
|
+
//# 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,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,KAAK;eAGE,OAAO;0CAmBlB,CAAC;AAIH,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { cn } from "@almach/utils";
|
|
6
|
+
const Label = React.forwardRef(({ className, required, children, ...props }, ref) => (_jsxs(LabelPrimitive.Root, { ref: ref, className: cn("text-sm font-medium leading-none tracking-tight", "peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className), ...props, children: [children, required && (_jsx("span", { className: "ml-0.5 text-destructive", "aria-hidden": "true", children: "*" }))] })));
|
|
7
|
+
Label.displayName = LabelPrimitive.Root.displayName;
|
|
8
|
+
export { Label };
|
|
9
|
+
//# 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,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAK5B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACvD,MAAC,cAAc,CAAC,IAAI,IACnB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,iDAAiD,EACjD,2DAA2D,EAC3D,SAAS,CACT,KACG,KAAK,aAER,QAAQ,EACR,QAAQ,IAAI,CACZ,eAAM,SAAS,EAAC,yBAAyB,iBAAa,MAAM,kBAErD,CACP,IACoB,CACtB,CAAC,CAAC;AAEH,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated Use `Card.Layers`, `Card.LayerHeader`, `Card.LayerBody`, and `Card.LayerRow`
|
|
3
|
+
* from `@almach/ui` instead. LayeredCard has been merged into the Card component.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* import { Card } from "@almach/ui";
|
|
7
|
+
* <Card.Layers>
|
|
8
|
+
* <Card.LayerHeader>Settings</Card.LayerHeader>
|
|
9
|
+
* <Card.LayerRow action={<Switch />}>Notifications</Card.LayerRow>
|
|
10
|
+
* </Card.Layers>
|
|
11
|
+
*/
|
|
12
|
+
export { Card as LayeredCard } from "./card";
|
|
13
|
+
//# sourceMappingURL=layered-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layered-card.d.ts","sourceRoot":"","sources":["../../src/components/layered-card.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated Use `Card.Layers`, `Card.LayerHeader`, `Card.LayerBody`, and `Card.LayerRow`
|
|
3
|
+
* from `@almach/ui` instead. LayeredCard has been merged into the Card component.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* import { Card } from "@almach/ui";
|
|
7
|
+
* <Card.Layers>
|
|
8
|
+
* <Card.LayerHeader>Settings</Card.LayerHeader>
|
|
9
|
+
* <Card.LayerRow action={<Switch />}>Notifications</Card.LayerRow>
|
|
10
|
+
* </Card.Layers>
|
|
11
|
+
*/
|
|
12
|
+
export { Card as LayeredCard } from "./card";
|
|
13
|
+
//# sourceMappingURL=layered-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layered-card.js","sourceRoot":"","sources":["../../src/components/layered-card.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface ModalRootProps {
|
|
3
|
+
open?: boolean;
|
|
4
|
+
onOpenChange?: (open: boolean) => void;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}
|
|
7
|
+
declare function ModalRoot({ open, onOpenChange, children }: ModalRootProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
interface ModalTriggerProps {
|
|
9
|
+
asChild?: boolean;
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
}
|
|
12
|
+
declare function ModalTrigger({ asChild, children }: ModalTriggerProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
interface ModalContentProps {
|
|
14
|
+
className?: string;
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
}
|
|
17
|
+
declare function ModalContent({ className, children }: ModalContentProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
declare function ModalHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
declare function ModalFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
interface ModalCloseProps {
|
|
21
|
+
asChild?: boolean;
|
|
22
|
+
children: React.ReactNode;
|
|
23
|
+
className?: string;
|
|
24
|
+
}
|
|
25
|
+
declare function ModalClose({ asChild, children, className }: ModalCloseProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
declare const Modal: typeof ModalRoot & {
|
|
27
|
+
Trigger: typeof ModalTrigger;
|
|
28
|
+
Content: typeof ModalContent;
|
|
29
|
+
Header: typeof ModalHeader;
|
|
30
|
+
Footer: typeof ModalFooter;
|
|
31
|
+
Title: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
|
|
32
|
+
Description: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
|
|
33
|
+
Close: typeof ModalClose;
|
|
34
|
+
};
|
|
35
|
+
export { Modal };
|
|
36
|
+
//# sourceMappingURL=modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/components/modal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,UAAU,cAAc;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,iBAAS,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAalE;AAGD,UAAU,iBAAiB;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,iBAAS,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAI7D;AAGD,UAAU,iBAAiB;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAK/D;AAGD,iBAAS,WAAW,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,2CAItC;AAGD,iBAAS,WAAW,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,2CAItC;AA2BD,UAAU,eAAe;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,iBAAS,UAAU,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,eAAe,2CAWpE;AAGD,QAAA,MAAM,KAAK;;;;;;;;CAQT,CAAC;AAEH,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { useIsMobile } from "../hooks/use-media-query";
|
|
5
|
+
import { Dialog } from "./dialog";
|
|
6
|
+
import { Drawer } from "./drawer";
|
|
7
|
+
/* ── Context ─────────────────────────────────────────────────────────────── */
|
|
8
|
+
const ModalCtx = React.createContext(false);
|
|
9
|
+
const useModal = () => React.useContext(ModalCtx);
|
|
10
|
+
function ModalRoot({ open, onOpenChange, children }) {
|
|
11
|
+
const isMobile = useIsMobile();
|
|
12
|
+
const Root = isMobile ? Drawer : Dialog;
|
|
13
|
+
return (_jsx(ModalCtx.Provider, { value: isMobile, children: _jsx(Root, { ...(open !== undefined && { open }), ...(onOpenChange !== undefined && { onOpenChange }), children: children }) }));
|
|
14
|
+
}
|
|
15
|
+
function ModalTrigger({ asChild, children }) {
|
|
16
|
+
const isMobile = useModal();
|
|
17
|
+
const Trigger = isMobile ? Drawer.Trigger : Dialog.Trigger;
|
|
18
|
+
return _jsx(Trigger, { ...(asChild !== undefined && { asChild }), children: children });
|
|
19
|
+
}
|
|
20
|
+
function ModalContent({ className, children }) {
|
|
21
|
+
const isMobile = useModal();
|
|
22
|
+
if (isMobile)
|
|
23
|
+
return _jsx(Drawer.Content, { className: className, children: children });
|
|
24
|
+
return _jsx(Dialog.Content, { className: className, children: children });
|
|
25
|
+
}
|
|
26
|
+
/* ── Header ──────────────────────────────────────────────────────────────── */
|
|
27
|
+
function ModalHeader({ className, ...props }) {
|
|
28
|
+
const isMobile = useModal();
|
|
29
|
+
if (isMobile)
|
|
30
|
+
return _jsx(Drawer.Header, { className: className, ...props });
|
|
31
|
+
return _jsx(Dialog.Header, { className: className, ...props });
|
|
32
|
+
}
|
|
33
|
+
/* ── Footer ──────────────────────────────────────────────────────────────── */
|
|
34
|
+
function ModalFooter({ className, ...props }) {
|
|
35
|
+
const isMobile = useModal();
|
|
36
|
+
if (isMobile)
|
|
37
|
+
return _jsx(Drawer.Footer, { className: className, ...props });
|
|
38
|
+
return _jsx(Dialog.Footer, { className: className, ...props });
|
|
39
|
+
}
|
|
40
|
+
/* ── Title ───────────────────────────────────────────────────────────────── */
|
|
41
|
+
const ModalTitle = React.forwardRef(({ className, ...props }, ref) => {
|
|
42
|
+
const isMobile = useModal();
|
|
43
|
+
if (isMobile)
|
|
44
|
+
return _jsx(Drawer.Title, { ref: ref, className: className, ...props });
|
|
45
|
+
return _jsx(Dialog.Title, { ref: ref, className: className, ...props });
|
|
46
|
+
});
|
|
47
|
+
ModalTitle.displayName = "Modal.Title";
|
|
48
|
+
/* ── Description ─────────────────────────────────────────────────────────── */
|
|
49
|
+
const ModalDescription = React.forwardRef(({ className, ...props }, ref) => {
|
|
50
|
+
const isMobile = useModal();
|
|
51
|
+
if (isMobile)
|
|
52
|
+
return _jsx(Drawer.Description, { ref: ref, className: className, ...props });
|
|
53
|
+
return _jsx(Dialog.Description, { ref: ref, className: className, ...props });
|
|
54
|
+
});
|
|
55
|
+
ModalDescription.displayName = "Modal.Description";
|
|
56
|
+
function ModalClose({ asChild, children, className }) {
|
|
57
|
+
const isMobile = useModal();
|
|
58
|
+
const Close = isMobile ? Drawer.Close : Dialog.Close;
|
|
59
|
+
return (_jsx(Close, { ...(asChild !== undefined && { asChild }), ...(className !== undefined && { className }), children: children }));
|
|
60
|
+
}
|
|
61
|
+
/* ── Compound export ─────────────────────────────────────────────────────── */
|
|
62
|
+
const Modal = Object.assign(ModalRoot, {
|
|
63
|
+
Trigger: ModalTrigger,
|
|
64
|
+
Content: ModalContent,
|
|
65
|
+
Header: ModalHeader,
|
|
66
|
+
Footer: ModalFooter,
|
|
67
|
+
Title: ModalTitle,
|
|
68
|
+
Description: ModalDescription,
|
|
69
|
+
Close: ModalClose,
|
|
70
|
+
});
|
|
71
|
+
export { Modal };
|
|
72
|
+
//# sourceMappingURL=modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.js","sourceRoot":"","sources":["../../src/components/modal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare const Progress: React.ForwardRefExoticComponent<Omit<ProgressPrimitive.ProgressProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
export { Progress };
|
|
5
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/components/progress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,QAAQ,2JAqBZ,CAAC;AAGH,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "@almach/utils";
|
|
5
|
+
const Progress = React.forwardRef(({ className, value, ...props }, ref) => (_jsx(ProgressPrimitive.Root, { ref: ref, className: cn("relative h-1.5 w-full overflow-hidden rounded-full", className), style: { backgroundColor: "hsl(var(--secondary))" }, ...props, children: _jsx(ProgressPrimitive.Indicator, { className: "h-full w-full flex-1 rounded-full transition-transform duration-500 ease-out", style: {
|
|
6
|
+
transform: `translateX(-${100 - (value ?? 0)}%)`,
|
|
7
|
+
backgroundColor: "hsl(var(--foreground))",
|
|
8
|
+
} }) })));
|
|
9
|
+
Progress.displayName = ProgressPrimitive.Root.displayName;
|
|
10
|
+
export { Progress };
|
|
11
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/components/progress.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAG/B,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1C,KAAC,iBAAiB,CAAC,IAAI,IACtB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,oDAAoD,EACpD,SAAS,CACT,EACD,KAAK,EAAE,EAAE,eAAe,EAAE,uBAAuB,EAAE,KAC/C,KAAK,YAET,KAAC,iBAAiB,CAAC,SAAS,IAC3B,SAAS,EAAC,8EAA8E,EACxF,KAAK,EAAE;YACN,SAAS,EAAE,eAAe,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI;YAChD,eAAe,EAAE,wBAAwB;SACzC,GACA,GACsB,CACzB,CAAC,CAAC;AACH,QAAQ,CAAC,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
interface RadioItemProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {
|
|
4
|
+
label?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const Radio: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>> & {
|
|
8
|
+
Item: React.ForwardRefExoticComponent<RadioItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=radio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../src/components/radio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkB/B,UAAU,cACT,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAmDD,eAAO,MAAM,KAAK;;CAEhB,CAAC"}
|