@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.
Files changed (147) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/components/alert.d.ts +33 -0
  3. package/dist/components/alert.d.ts.map +1 -0
  4. package/dist/components/alert.js +54 -0
  5. package/dist/components/alert.js.map +1 -0
  6. package/dist/components/avatar.d.ts +15 -0
  7. package/dist/components/avatar.d.ts.map +1 -0
  8. package/dist/components/avatar.js +33 -0
  9. package/dist/components/avatar.js.map +1 -0
  10. package/dist/components/badge.d.ts +10 -0
  11. package/dist/components/badge.d.ts.map +1 -0
  12. package/dist/components/badge.js +24 -0
  13. package/dist/components/badge.js.map +1 -0
  14. package/dist/components/button.d.ts +15 -0
  15. package/dist/components/button.d.ts.map +1 -0
  16. package/dist/components/button.js +47 -0
  17. package/dist/components/button.js.map +1 -0
  18. package/dist/components/calendar.d.ts +4 -0
  19. package/dist/components/calendar.d.ts.map +1 -0
  20. package/dist/components/calendar.js +73 -0
  21. package/dist/components/calendar.js.map +1 -0
  22. package/dist/components/card.d.ts +30 -0
  23. package/dist/components/card.d.ts.map +1 -0
  24. package/dist/components/card.js +54 -0
  25. package/dist/components/card.js.map +1 -0
  26. package/dist/components/carousel.d.ts +21 -0
  27. package/dist/components/carousel.d.ts.map +1 -0
  28. package/dist/components/carousel.js +149 -0
  29. package/dist/components/carousel.js.map +1 -0
  30. package/dist/components/checkbox.d.ts +7 -0
  31. package/dist/components/checkbox.d.ts.map +1 -0
  32. package/dist/components/checkbox.js +9 -0
  33. package/dist/components/checkbox.js.map +1 -0
  34. package/dist/components/collapsible.d.ts +7 -0
  35. package/dist/components/collapsible.d.ts.map +1 -0
  36. package/dist/components/collapsible.js +19 -0
  37. package/dist/components/collapsible.js.map +1 -0
  38. package/dist/components/combobox.d.ts +11 -0
  39. package/dist/components/combobox.d.ts.map +1 -0
  40. package/dist/components/combobox.js +10 -0
  41. package/dist/components/combobox.js.map +1 -0
  42. package/dist/components/command.d.ts +85 -0
  43. package/dist/components/command.d.ts.map +1 -0
  44. package/dist/components/command.js +46 -0
  45. package/dist/components/command.js.map +1 -0
  46. package/dist/components/dialog.d.ts +36 -0
  47. package/dist/components/dialog.d.ts.map +1 -0
  48. package/dist/components/dialog.js +37 -0
  49. package/dist/components/dialog.js.map +1 -0
  50. package/dist/components/drawer.d.ts +34 -0
  51. package/dist/components/drawer.d.ts.map +1 -0
  52. package/dist/components/drawer.js +36 -0
  53. package/dist/components/drawer.js.map +1 -0
  54. package/dist/components/dropdown-menu.d.ts +30 -0
  55. package/dist/components/dropdown-menu.d.ts.map +1 -0
  56. package/dist/components/dropdown-menu.js +46 -0
  57. package/dist/components/dropdown-menu.js.map +1 -0
  58. package/dist/components/group.d.ts +26 -0
  59. package/dist/components/group.d.ts.map +1 -0
  60. package/dist/components/group.js +13 -0
  61. package/dist/components/group.js.map +1 -0
  62. package/dist/components/input.d.ts +34 -0
  63. package/dist/components/input.d.ts.map +1 -0
  64. package/dist/components/input.js +156 -0
  65. package/dist/components/input.js.map +1 -0
  66. package/dist/components/label.d.ts +7 -0
  67. package/dist/components/label.d.ts.map +1 -0
  68. package/dist/components/label.js +9 -0
  69. package/dist/components/label.js.map +1 -0
  70. package/dist/components/layered-card.d.ts +13 -0
  71. package/dist/components/layered-card.d.ts.map +1 -0
  72. package/dist/components/layered-card.js +13 -0
  73. package/dist/components/layered-card.js.map +1 -0
  74. package/dist/components/modal.d.ts +36 -0
  75. package/dist/components/modal.d.ts.map +1 -0
  76. package/dist/components/modal.js +72 -0
  77. package/dist/components/modal.js.map +1 -0
  78. package/dist/components/progress.d.ts +5 -0
  79. package/dist/components/progress.d.ts.map +1 -0
  80. package/dist/components/progress.js +11 -0
  81. package/dist/components/progress.js.map +1 -0
  82. package/dist/components/radio.d.ts +11 -0
  83. package/dist/components/radio.d.ts.map +1 -0
  84. package/dist/components/radio.js +17 -0
  85. package/dist/components/radio.js.map +1 -0
  86. package/dist/components/select.d.ts +41 -0
  87. package/dist/components/select.d.ts.map +1 -0
  88. package/dist/components/select.js +49 -0
  89. package/dist/components/select.js.map +1 -0
  90. package/dist/components/separator.d.ts +5 -0
  91. package/dist/components/separator.d.ts.map +1 -0
  92. package/dist/components/separator.js +11 -0
  93. package/dist/components/separator.js.map +1 -0
  94. package/dist/components/skeleton.d.ts +6 -0
  95. package/dist/components/skeleton.d.ts.map +1 -0
  96. package/dist/components/skeleton.js +7 -0
  97. package/dist/components/skeleton.js.map +1 -0
  98. package/dist/components/switch.d.ts +11 -0
  99. package/dist/components/switch.d.ts.map +1 -0
  100. package/dist/components/switch.js +44 -0
  101. package/dist/components/switch.js.map +1 -0
  102. package/dist/components/table.d.ts +36 -0
  103. package/dist/components/table.d.ts.map +1 -0
  104. package/dist/components/table.js +77 -0
  105. package/dist/components/table.js.map +1 -0
  106. package/dist/components/tabs.d.ts +18 -0
  107. package/dist/components/tabs.d.ts.map +1 -0
  108. package/dist/components/tabs.js +63 -0
  109. package/dist/components/tabs.js.map +1 -0
  110. package/dist/components/tag-input.d.ts +14 -0
  111. package/dist/components/tag-input.d.ts.map +1 -0
  112. package/dist/components/tag-input.js +53 -0
  113. package/dist/components/tag-input.js.map +1 -0
  114. package/dist/components/textarea.d.ts +7 -0
  115. package/dist/components/textarea.d.ts.map +1 -0
  116. package/dist/components/textarea.js +9 -0
  117. package/dist/components/textarea.js.map +1 -0
  118. package/dist/components/toast.d.ts +19 -0
  119. package/dist/components/toast.d.ts.map +1 -0
  120. package/dist/components/toast.js +51 -0
  121. package/dist/components/toast.js.map +1 -0
  122. package/dist/components/toaster.d.ts +2 -0
  123. package/dist/components/toaster.d.ts.map +1 -0
  124. package/dist/components/toaster.js +11 -0
  125. package/dist/components/toaster.js.map +1 -0
  126. package/dist/components/tooltip.d.ts +9 -0
  127. package/dist/components/tooltip.d.ts.map +1 -0
  128. package/dist/components/tooltip.js +17 -0
  129. package/dist/components/tooltip.js.map +1 -0
  130. package/dist/hooks/use-copy-to-clipboard.d.ts +8 -0
  131. package/dist/hooks/use-copy-to-clipboard.d.ts.map +1 -0
  132. package/dist/hooks/use-copy-to-clipboard.js +23 -0
  133. package/dist/hooks/use-copy-to-clipboard.js.map +1 -0
  134. package/dist/hooks/use-media-query.d.ts +7 -0
  135. package/dist/hooks/use-media-query.d.ts.map +1 -0
  136. package/dist/hooks/use-media-query.js +21 -0
  137. package/dist/hooks/use-media-query.js.map +1 -0
  138. package/dist/hooks/use-toast.d.ts +45 -0
  139. package/dist/hooks/use-toast.d.ts.map +1 -0
  140. package/dist/hooks/use-toast.js +102 -0
  141. package/dist/hooks/use-toast.js.map +1 -0
  142. package/dist/index.d.ts +46 -0
  143. package/dist/index.d.ts.map +1 -0
  144. package/dist/index.js +36 -0
  145. package/dist/index.js.map +1 -0
  146. package/package.json +74 -0
  147. package/src/styles/globals.css +241 -0
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "@almach/utils";
4
+ const Textarea = React.forwardRef(({ className, error, ...props }, ref) => {
5
+ return (_jsx("textarea", { className: cn("flex min-h-[80px] w-full rounded-lg border border-input bg-background px-3 py-2 text-sm", "transition-all duration-150 ring-offset-background", "placeholder:text-muted-foreground", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", "disabled:cursor-not-allowed disabled:opacity-50", "resize-y", error && "border-destructive focus-visible:ring-destructive", className), ref: ref, "aria-invalid": error, ...props }));
6
+ });
7
+ Textarea.displayName = "Textarea";
8
+ export { Textarea };
9
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../src/components/textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAOnC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAChC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACvC,OAAO,CACN,mBACC,SAAS,EAAE,EAAE,CACZ,yFAAyF,EACzF,oDAAoD,EACpD,mCAAmC,EACnC,qGAAqG,EACrG,iDAAiD,EACjD,UAAU,EACV,KAAK,IAAI,mDAAmD,EAC5D,SAAS,CACT,EACD,GAAG,EAAE,GAAG,kBACM,KAAK,KACf,KAAK,GACR,CACF,CAAC;AACH,CAAC,CACD,CAAC;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import * as ToastPrimitives from "@radix-ui/react-toast";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ import * as React from "react";
4
+ declare const ToastProvider: React.FC<ToastPrimitives.ToastProviderProps>;
5
+ declare const ToastViewport: React.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastViewportProps & React.RefAttributes<HTMLOListElement>, "ref"> & React.RefAttributes<HTMLOListElement>>;
6
+ export type ToastVariant = "default" | "destructive" | "success";
7
+ declare const toastVariants: (props?: ({
8
+ variant?: "default" | "destructive" | "success" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
+ export interface ToastProps extends React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root>, VariantProps<typeof toastVariants> {
11
+ }
12
+ declare const Toast: React.ForwardRefExoticComponent<ToastProps & React.RefAttributes<HTMLLIElement>>;
13
+ declare const ToastAction: React.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastActionProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
14
+ declare const ToastClose: React.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastCloseProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
15
+ declare const ToastTitle: React.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastTitleProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
+ declare const ToastDescription: React.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastDescriptionProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
17
+ type ToastActionElement = React.ReactElement<typeof ToastAction>;
18
+ export { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, type ToastActionElement, };
19
+ //# sourceMappingURL=toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../src/components/toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,QAAA,MAAM,aAAa,8CAA2B,CAAC;AAE/C,QAAA,MAAM,aAAa,kKAYjB,CAAC;AAIH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;AAEjE,QAAA,MAAM,aAAa;;8EAyBlB,CAAC;AASF,MAAM,WAAW,UAChB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,EACnE,YAAY,CAAC,OAAO,aAAa,CAAC;CAAI;AAEvC,QAAA,MAAM,KAAK,kFAYT,CAAC;AAIH,QAAA,MAAM,WAAW,kKAef,CAAC;AAIH,QAAA,MAAM,UAAU,iKAoBd,CAAC;AAIH,QAAA,MAAM,UAAU,2JASd,CAAC;AAGH,QAAA,MAAM,gBAAgB,iKASpB,CAAC;AAIH,KAAK,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;AAEjE,OAAO,EACN,KAAK,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,aAAa,EACb,KAAK,kBAAkB,GACvB,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as ToastPrimitives from "@radix-ui/react-toast";
3
+ import { cva } from "class-variance-authority";
4
+ import { CircleCheck, CircleX, Info, X } from "lucide-react";
5
+ import * as React from "react";
6
+ import { cn } from "@almach/utils";
7
+ /* ── Provider & Viewport ──────────────────────────────────────────────────── */
8
+ const ToastProvider = ToastPrimitives.Provider;
9
+ const ToastViewport = React.forwardRef(({ className, ...props }, ref) => (_jsx(ToastPrimitives.Viewport, { ref: ref, className: cn("fixed bottom-4 right-4 z-[100] flex max-h-screen w-full max-w-sm flex-col gap-2 p-1", className), ...props })));
10
+ ToastViewport.displayName = ToastPrimitives.Viewport.displayName;
11
+ const toastVariants = cva([
12
+ "group pointer-events-auto relative flex w-full items-start gap-3",
13
+ "overflow-hidden rounded-2xl border bg-background p-4 shadow-lg",
14
+ "transition-all",
15
+ // enter
16
+ "data-[state=open]:animate-in data-[state=open]:slide-in-from-bottom-4 data-[state=open]:fade-in-0",
17
+ // exit
18
+ "data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right-full data-[state=closed]:fade-out-80",
19
+ // swipe
20
+ "data-[swipe=cancel]:translate-x-0 data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)]",
21
+ "data-[swipe=move]:transition-none data-[swipe=end]:animate-out data-[swipe=end]:slide-out-to-right-full",
22
+ ], {
23
+ variants: {
24
+ variant: {
25
+ default: "border-border",
26
+ destructive: "border-destructive/20 bg-destructive/[0.03]",
27
+ success: "border-success/20 bg-success/[0.03]",
28
+ },
29
+ },
30
+ defaultVariants: { variant: "default" },
31
+ });
32
+ const iconMap = {
33
+ default: _jsx(Info, { className: "mt-0.5 h-4 w-4 shrink-0 text-muted-foreground" }),
34
+ destructive: _jsx(CircleX, { className: "mt-0.5 h-4 w-4 shrink-0 text-destructive" }),
35
+ success: _jsx(CircleCheck, { className: "mt-0.5 h-4 w-4 shrink-0 text-success" }),
36
+ };
37
+ const Toast = React.forwardRef(({ className, variant = "default", children, ...props }, ref) => (_jsxs(ToastPrimitives.Root, { ref: ref, className: cn(toastVariants({ variant }), className), ...props, children: [iconMap[variant ?? "default"], _jsx("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: children })] })));
38
+ Toast.displayName = ToastPrimitives.Root.displayName;
39
+ /* ── Action ───────────────────────────────────────────────────────────────── */
40
+ const ToastAction = React.forwardRef(({ className, ...props }, ref) => (_jsx(ToastPrimitives.Action, { ref: ref, className: cn("mt-1 inline-flex h-7 shrink-0 items-center justify-center rounded-md border px-3 text-xs font-medium", "transition-colors hover:bg-secondary", "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", "disabled:pointer-events-none disabled:opacity-50", className), ...props })));
41
+ ToastAction.displayName = ToastPrimitives.Action.displayName;
42
+ /* ── Close ────────────────────────────────────────────────────────────────── */
43
+ const ToastClose = React.forwardRef(({ className, ...props }, ref) => (_jsx(ToastPrimitives.Close, { ref: ref, className: cn("absolute right-2.5 top-2.5 flex h-6 w-6 items-center justify-center rounded-lg", "text-muted-foreground/40 transition-colors", "hover:text-foreground hover:bg-muted", "focus:outline-none focus:ring-2 focus:ring-ring", "opacity-0 group-hover:opacity-100", className), "toast-close": "", "aria-label": "Dismiss", ...props, children: _jsx(X, { className: "h-3 w-3" }) })));
44
+ ToastClose.displayName = ToastPrimitives.Close.displayName;
45
+ /* ── Title & Description ──────────────────────────────────────────────────── */
46
+ const ToastTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(ToastPrimitives.Title, { ref: ref, className: cn("text-sm font-semibold leading-tight", className), ...props })));
47
+ ToastTitle.displayName = ToastPrimitives.Title.displayName;
48
+ const ToastDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(ToastPrimitives.Description, { ref: ref, className: cn("text-sm text-muted-foreground leading-snug", className), ...props })));
49
+ ToastDescription.displayName = ToastPrimitives.Description.displayName;
50
+ export { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, };
51
+ //# sourceMappingURL=toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.js","sourceRoot":"","sources":["../../src/components/toast.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function Toaster(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=toaster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toaster.d.ts","sourceRoot":"","sources":["../../src/components/toaster.tsx"],"names":[],"mappings":"AAYA,wBAAgB,OAAO,4CAsBtB"}
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Toast, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, } from "./toast";
4
+ import { useToast } from "../hooks/use-toast";
5
+ export function Toaster() {
6
+ const { toasts } = useToast();
7
+ return (_jsxs(ToastProvider, { children: [toasts.map(function ({ id, title, description, action, ...props }) {
8
+ return (_jsxs(Toast, { ...props, children: [_jsxs("div", { className: "flex flex-col gap-1 min-w-0 flex-1", children: [title && _jsx(ToastTitle, { children: title }), description && (_jsx(ToastDescription, { children: description }))] }), action, _jsx(ToastClose, {})] }, id));
9
+ }), _jsx(ToastViewport, {})] }));
10
+ }
11
+ //# sourceMappingURL=toaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toaster.js","sourceRoot":"","sources":["../../src/components/toaster.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACN,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,UAAU,OAAO;IACtB,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE9B,OAAO,CACN,MAAC,aAAa,eACZ,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE;gBACjE,OAAO,CACN,MAAC,KAAK,OAAc,KAAK,aACxB,eAAK,SAAS,EAAC,oCAAoC,aACjD,KAAK,IAAI,KAAC,UAAU,cAAE,KAAK,GAAc,EACzC,WAAW,IAAI,CACf,KAAC,gBAAgB,cAAE,WAAW,GAAoB,CAClD,IACI,EACL,MAAM,EACP,KAAC,UAAU,KAAG,KARH,EAAE,CASN,CACR,CAAC;YACH,CAAC,CAAC,EACF,KAAC,aAAa,KAAG,IACF,CAChB,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
2
+ import * as React from "react";
3
+ declare const Tooltip: React.FC<TooltipPrimitive.TooltipProps> & {
4
+ Provider: React.FC<TooltipPrimitive.TooltipProviderProps>;
5
+ Trigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
6
+ Content: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ };
8
+ export { Tooltip };
9
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiC/B,QAAA,MAAM,OAAO;;;;CAIX,CAAC;AAEH,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
3
+ import * as React from "react";
4
+ import { cn } from "@almach/utils";
5
+ /* ── Sub-components ────────────────────────────────────────────────────── */
6
+ const TooltipProvider = TooltipPrimitive.Provider;
7
+ const TooltipTrigger = TooltipPrimitive.Trigger;
8
+ const TooltipContent = React.forwardRef(({ className, sideOffset = 6, ...props }, ref) => (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: cn("z-50 max-w-xs rounded-lg bg-foreground px-3 py-1.5", "text-xs font-medium text-background leading-snug", "shadow-md select-none", "animate-in fade-in-0 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 }) })));
9
+ TooltipContent.displayName = "Tooltip.Content";
10
+ /* ── Compound export ───────────────────────────────────────────────────── */
11
+ const Tooltip = Object.assign(TooltipPrimitive.Root, {
12
+ Provider: TooltipProvider,
13
+ Trigger: TooltipTrigger,
14
+ Content: TooltipContent,
15
+ });
16
+ export { Tooltip };
17
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnC,8EAA8E;AAC9E,MAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAClD,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAEhD,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAGrC,CAAC,EAAE,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACnD,KAAC,gBAAgB,CAAC,MAAM,cACvB,KAAC,gBAAgB,CAAC,OAAO,IACxB,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACZ,oDAAoD,EACpD,kDAAkD,EAClD,uBAAuB,EACvB,iCAAiC,EACjC,gGAAgG,EAChG,+EAA+E,EAC/E,+EAA+E,EAC/E,SAAS,CACT,KACG,KAAK,GACR,GACuB,CAC1B,CAAC,CAAC;AACH,cAAc,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAE/C,8EAA8E;AAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;IACpD,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,cAAc;IACvB,OAAO,EAAE,cAAc;CACvB,CAAC,CAAC;AAEH,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hook to copy text to clipboard with a reset delay.
3
+ */
4
+ export declare function useCopyToClipboard(resetDelay?: number): {
5
+ copy: (text: string) => Promise<boolean>;
6
+ copied: boolean;
7
+ };
8
+ //# sourceMappingURL=use-copy-to-clipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-copy-to-clipboard.d.ts","sourceRoot":"","sources":["../../src/hooks/use-copy-to-clipboard.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,SAAO;iBAGxB,MAAM;;EAajC"}
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { useState } from "react";
3
+ /**
4
+ * Hook to copy text to clipboard with a reset delay.
5
+ */
6
+ export function useCopyToClipboard(resetDelay = 2000) {
7
+ const [copied, setCopied] = useState(false);
8
+ const copy = async (text) => {
9
+ if (!navigator.clipboard)
10
+ return false;
11
+ try {
12
+ await navigator.clipboard.writeText(text);
13
+ setCopied(true);
14
+ setTimeout(() => setCopied(false), resetDelay);
15
+ return true;
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ };
21
+ return { copy, copied };
22
+ }
23
+ //# sourceMappingURL=use-copy-to-clipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-copy-to-clipboard.js","sourceRoot":"","sources":["../../src/hooks/use-copy-to-clipboard.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAU,GAAG,IAAI;IAClD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,IAAI,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QAClC,IAAI,CAAC,SAAS,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1C,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Hook to check if a media query matches.
3
+ * SSR-safe: returns false during server rendering.
4
+ */
5
+ export declare function useMediaQuery(query: string): boolean;
6
+ export declare function useIsMobile(): boolean;
7
+ //# sourceMappingURL=use-media-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-media-query.d.ts","sourceRoot":"","sources":["../../src/hooks/use-media-query.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAapD;AAED,wBAAgB,WAAW,YAE1B"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { useEffect, useState } from "react";
3
+ /**
4
+ * Hook to check if a media query matches.
5
+ * SSR-safe: returns false during server rendering.
6
+ */
7
+ export function useMediaQuery(query) {
8
+ const [matches, setMatches] = useState(false);
9
+ useEffect(() => {
10
+ const media = window.matchMedia(query);
11
+ setMatches(media.matches);
12
+ const listener = (event) => setMatches(event.matches);
13
+ media.addEventListener("change", listener);
14
+ return () => media.removeEventListener("change", listener);
15
+ }, [query]);
16
+ return matches;
17
+ }
18
+ export function useIsMobile() {
19
+ return useMediaQuery("(max-width: 768px)");
20
+ }
21
+ //# sourceMappingURL=use-media-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-media-query.js","sourceRoot":"","sources":["../../src/hooks/use-media-query.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE1B,MAAM,QAAQ,GAAG,CAAC,KAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3E,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,45 @@
1
+ import * as React from "react";
2
+ import type { ToastProps } from "../components/toast";
3
+ type ToasterToast = ToastProps & {
4
+ id: string;
5
+ title?: React.ReactNode;
6
+ description?: React.ReactNode;
7
+ action?: React.ReactElement;
8
+ };
9
+ declare const actionTypes: {
10
+ readonly ADD_TOAST: "ADD_TOAST";
11
+ readonly UPDATE_TOAST: "UPDATE_TOAST";
12
+ readonly DISMISS_TOAST: "DISMISS_TOAST";
13
+ readonly REMOVE_TOAST: "REMOVE_TOAST";
14
+ };
15
+ type ActionType = typeof actionTypes;
16
+ type Action = {
17
+ type: ActionType["ADD_TOAST"];
18
+ toast: ToasterToast;
19
+ } | {
20
+ type: ActionType["UPDATE_TOAST"];
21
+ toast: Partial<ToasterToast>;
22
+ } | {
23
+ type: ActionType["DISMISS_TOAST"];
24
+ toastId?: ToasterToast["id"];
25
+ } | {
26
+ type: ActionType["REMOVE_TOAST"];
27
+ toastId?: ToasterToast["id"];
28
+ };
29
+ interface State {
30
+ toasts: ToasterToast[];
31
+ }
32
+ export declare const reducer: (state: State, action: Action) => State;
33
+ type Toast = Omit<ToasterToast, "id">;
34
+ declare function toast({ ...props }: Toast): {
35
+ id: string;
36
+ dismiss: () => void;
37
+ update: (props: ToasterToast) => void;
38
+ };
39
+ declare function useToast(): {
40
+ toast: typeof toast;
41
+ dismiss: (toastId?: string) => void;
42
+ toasts: ToasterToast[];
43
+ };
44
+ export { toast, useToast };
45
+ //# sourceMappingURL=use-toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast.d.ts","sourceRoot":"","sources":["../../src/hooks/use-toast.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,KAAK,YAAY,GAAG,UAAU,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;CAC7B,CAAC;AAEF,QAAA,MAAM,WAAW;;;;;CAKP,CAAC;AAQX,KAAK,UAAU,GAAG,OAAO,WAAW,CAAC;AACrC,KAAK,MAAM,GACP;IAAE,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAEvE,UAAU,KAAK;IACb,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAaD,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,EAAE,QAAQ,MAAM,KAAG,KAmCtD,CAAC;AAUF,KAAK,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAEtC,iBAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK;;;oBAET,YAAY;EAiBpC;AAED,iBAAS,QAAQ;;wBAcO,MAAM;YAhGpB,YAAY,EAAE;EAkGvB;AAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,102 @@
1
+ "use client";
2
+ // Adapted from https://github.com/shadcn-ui/ui
3
+ import * as React from "react";
4
+ const TOAST_LIMIT = 5;
5
+ const TOAST_REMOVE_DELAY = 4000;
6
+ const actionTypes = {
7
+ ADD_TOAST: "ADD_TOAST",
8
+ UPDATE_TOAST: "UPDATE_TOAST",
9
+ DISMISS_TOAST: "DISMISS_TOAST",
10
+ REMOVE_TOAST: "REMOVE_TOAST",
11
+ };
12
+ let count = 0;
13
+ function genId() {
14
+ count = (count + 1) % Number.MAX_SAFE_INTEGER;
15
+ return count.toString();
16
+ }
17
+ const toastTimeouts = new Map();
18
+ const addToRemoveQueue = (toastId) => {
19
+ if (toastTimeouts.has(toastId))
20
+ return;
21
+ const timeout = setTimeout(() => {
22
+ toastTimeouts.delete(toastId);
23
+ dispatch({ type: "REMOVE_TOAST", toastId });
24
+ }, TOAST_REMOVE_DELAY);
25
+ toastTimeouts.set(toastId, timeout);
26
+ };
27
+ export const reducer = (state, action) => {
28
+ switch (action.type) {
29
+ case "ADD_TOAST":
30
+ return {
31
+ ...state,
32
+ toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),
33
+ };
34
+ case "UPDATE_TOAST":
35
+ return {
36
+ ...state,
37
+ toasts: state.toasts.map((t) => t.id === action.toast.id ? { ...t, ...action.toast } : t),
38
+ };
39
+ case "DISMISS_TOAST": {
40
+ const { toastId } = action;
41
+ if (toastId) {
42
+ addToRemoveQueue(toastId);
43
+ }
44
+ else {
45
+ state.toasts.forEach((toast) => addToRemoveQueue(toast.id));
46
+ }
47
+ return {
48
+ ...state,
49
+ toasts: state.toasts.map((t) => t.id === toastId || toastId === undefined ? { ...t, open: false } : t),
50
+ };
51
+ }
52
+ case "REMOVE_TOAST":
53
+ if (action.toastId === undefined)
54
+ return { ...state, toasts: [] };
55
+ return {
56
+ ...state,
57
+ toasts: state.toasts.filter((t) => t.id !== action.toastId),
58
+ };
59
+ }
60
+ };
61
+ const listeners = [];
62
+ let memoryState = { toasts: [] };
63
+ function dispatch(action) {
64
+ memoryState = reducer(memoryState, action);
65
+ listeners.forEach((listener) => listener(memoryState));
66
+ }
67
+ function toast({ ...props }) {
68
+ const id = genId();
69
+ const update = (props) => dispatch({ type: "UPDATE_TOAST", toast: { ...props, id } });
70
+ const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
71
+ dispatch({
72
+ type: "ADD_TOAST",
73
+ toast: {
74
+ ...props,
75
+ id,
76
+ open: true,
77
+ onOpenChange: (open) => {
78
+ if (!open)
79
+ dismiss();
80
+ },
81
+ },
82
+ });
83
+ return { id, dismiss, update };
84
+ }
85
+ function useToast() {
86
+ const [state, setState] = React.useState(memoryState);
87
+ React.useEffect(() => {
88
+ listeners.push(setState);
89
+ return () => {
90
+ const index = listeners.indexOf(setState);
91
+ if (index > -1)
92
+ listeners.splice(index, 1);
93
+ };
94
+ }, []);
95
+ return {
96
+ ...state,
97
+ toast,
98
+ dismiss: (toastId) => dispatch({ type: "DISMISS_TOAST", ...(toastId !== undefined && { toastId }) }),
99
+ };
100
+ }
101
+ export { toast, useToast };
102
+ //# sourceMappingURL=use-toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast.js","sourceRoot":"","sources":["../../src/hooks/use-toast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ export { Alert } from "./components/alert";
2
+ export type { AlertVariant } from "./components/alert";
3
+ export { Avatar, avatarVariants } from "./components/avatar";
4
+ export type { AvatarProps } from "./components/avatar";
5
+ export { Badge, badgeVariants } from "./components/badge";
6
+ export type { BadgeProps } from "./components/badge";
7
+ export { Button, buttonVariants } from "./components/button";
8
+ export type { ButtonProps } from "./components/button";
9
+ export { Calendar } from "./components/calendar";
10
+ export type { CalendarProps } from "./components/calendar";
11
+ export { Card } from "./components/card";
12
+ export { Carousel } from "./components/carousel";
13
+ export { Checkbox } from "./components/checkbox";
14
+ export { Collapsible } from "./components/collapsible";
15
+ export { Command } from "./components/command";
16
+ export { Dialog } from "./components/dialog";
17
+ export { Drawer } from "./components/drawer";
18
+ export { DropdownMenu } from "./components/dropdown-menu";
19
+ export { Group } from "./components/group";
20
+ export { Input, DateInput } from "./components/input";
21
+ export type { InputProps, DateInputProps } from "./components/input";
22
+ export { Label } from "./components/label";
23
+ export { Modal } from "./components/modal";
24
+ export { Progress } from "./components/progress";
25
+ export { Radio } from "./components/radio";
26
+ export { Select } from "./components/select";
27
+ export type { SelectSearchableOption, SelectSearchableProps } from "./components/select";
28
+ export { Separator } from "./components/separator";
29
+ export { Skeleton } from "./components/skeleton";
30
+ export { Switch } from "./components/switch";
31
+ export type { SwitchProps } from "./components/switch";
32
+ export { Table } from "./components/table";
33
+ export type { ColumnDef } from "./components/table";
34
+ export { Tabs, tabsListVariants, tabsTriggerVariants } from "./components/tabs";
35
+ export { TagInput } from "./components/tag-input";
36
+ export type { TagInputProps } from "./components/tag-input";
37
+ export { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, } from "./components/toast";
38
+ export type { ToastProps, ToastActionElement } from "./components/toast";
39
+ export { Toaster } from "./components/toaster";
40
+ export { Textarea } from "./components/textarea";
41
+ export type { TextareaProps } from "./components/textarea";
42
+ export { Tooltip } from "./components/tooltip";
43
+ export { toast, useToast } from "./hooks/use-toast";
44
+ export { useMediaQuery, useIsMobile } from "./hooks/use-media-query";
45
+ export { useCopyToClipboard } from "./hooks/use-copy-to-clipboard";
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC7D,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC7D,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEzF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EACN,KAAK,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,aAAa,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEzE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,36 @@
1
+ /* ─── Components ──────────────────────────────────────────────────────────── */
2
+ export { Alert } from "./components/alert";
3
+ export { Avatar, avatarVariants } from "./components/avatar";
4
+ export { Badge, badgeVariants } from "./components/badge";
5
+ export { Button, buttonVariants } from "./components/button";
6
+ export { Calendar } from "./components/calendar";
7
+ export { Card } from "./components/card";
8
+ export { Carousel } from "./components/carousel";
9
+ export { Checkbox } from "./components/checkbox";
10
+ export { Collapsible } from "./components/collapsible";
11
+ export { Command } from "./components/command";
12
+ export { Dialog } from "./components/dialog";
13
+ export { Drawer } from "./components/drawer";
14
+ export { DropdownMenu } from "./components/dropdown-menu";
15
+ export { Group } from "./components/group";
16
+ export { Input, DateInput } from "./components/input";
17
+ export { Label } from "./components/label";
18
+ export { Modal } from "./components/modal";
19
+ export { Progress } from "./components/progress";
20
+ export { Radio } from "./components/radio";
21
+ export { Select } from "./components/select";
22
+ export { Separator } from "./components/separator";
23
+ export { Skeleton } from "./components/skeleton";
24
+ export { Switch } from "./components/switch";
25
+ export { Table } from "./components/table";
26
+ export { Tabs, tabsListVariants, tabsTriggerVariants } from "./components/tabs";
27
+ export { TagInput } from "./components/tag-input";
28
+ export { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, } from "./components/toast";
29
+ export { Toaster } from "./components/toaster";
30
+ export { Textarea } from "./components/textarea";
31
+ export { Tooltip } from "./components/tooltip";
32
+ /* ─── Hooks ───────────────────────────────────────────────────────────────── */
33
+ export { toast, useToast } from "./hooks/use-toast";
34
+ export { useMediaQuery, useIsMobile } from "./hooks/use-media-query";
35
+ export { useCopyToClipboard } from "./hooks/use-copy-to-clipboard";
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,OAAO,EACN,KAAK,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,aAAa,GACb,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,iFAAiF;AACjF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "@almach/ui",
3
+ "version": "0.1.0",
4
+ "description": "Modern, accessible UI components built on Radix UI and Tailwind CSS",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./styles": "./src/styles/globals.css"
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "src/styles"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc -p tsconfig.build.json",
22
+ "dev": "tsc -p tsconfig.build.json --watch",
23
+ "typecheck": "tsc --noEmit",
24
+ "clean": "rm -rf dist *.tsbuildinfo"
25
+ },
26
+ "peerDependencies": {
27
+ "react": "^18.0.0 || ^19.0.0",
28
+ "react-dom": "^18.0.0 || ^19.0.0"
29
+ },
30
+ "dependencies": {
31
+ "@almach/utils": "workspace:*",
32
+ "@radix-ui/react-accordion": "^1.2.3",
33
+ "@radix-ui/react-alert-dialog": "^1.1.6",
34
+ "@radix-ui/react-avatar": "^1.1.3",
35
+ "@radix-ui/react-checkbox": "^1.1.4",
36
+ "@radix-ui/react-collapsible": "^1.1.12",
37
+ "@radix-ui/react-dialog": "^1.1.6",
38
+ "@radix-ui/react-dropdown-menu": "^2.1.6",
39
+ "@radix-ui/react-label": "^2.1.2",
40
+ "@radix-ui/react-popover": "^1.1.6",
41
+ "@radix-ui/react-progress": "^1.1.2",
42
+ "@radix-ui/react-radio-group": "^1.2.3",
43
+ "@radix-ui/react-scroll-area": "^1.2.3",
44
+ "@radix-ui/react-select": "^2.1.6",
45
+ "@radix-ui/react-separator": "^1.1.2",
46
+ "@radix-ui/react-slot": "^1.2.0",
47
+ "@radix-ui/react-switch": "^1.1.3",
48
+ "@radix-ui/react-tabs": "^1.1.3",
49
+ "@radix-ui/react-toast": "^1.2.6",
50
+ "@radix-ui/react-tooltip": "^1.1.8",
51
+ "@tanstack/react-table": "^8.21.3",
52
+ "class-variance-authority": "^0.7.1",
53
+ "cmdk": "^1.1.1",
54
+ "date-fns": "^4.1.0",
55
+ "embla-carousel-autoplay": "^8.6.0",
56
+ "embla-carousel-react": "^8.6.0",
57
+ "lucide-react": "^0.479.0",
58
+ "react-day-picker": "^9.14.0",
59
+ "vaul": "^1.1.2"
60
+ },
61
+ "devDependencies": {
62
+ "@types/react": "^19.0.7",
63
+ "@types/react-dom": "^19.0.3",
64
+ "typescript": "^5.7.3"
65
+ },
66
+ "publishConfig": {
67
+ "access": "public"
68
+ },
69
+ "repository": {
70
+ "type": "git",
71
+ "url": "https://github.com/almach-lab/base",
72
+ "directory": "packages/ui"
73
+ }
74
+ }