luan-ui 0.6.2 → 0.8.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 (81) hide show
  1. package/dist/components/accordion/accordion.d.ts +1 -1
  2. package/dist/components/accordion/accordion.js +2 -2
  3. package/dist/components/accordion/accordion.js.map +1 -1
  4. package/dist/components/alert/alert.d.ts +1 -1
  5. package/dist/components/alert/alert.js +3 -3
  6. package/dist/components/alert/alert.js.map +1 -1
  7. package/dist/components/alert-dialog/alert-dialog.d.ts +1 -1
  8. package/dist/components/alert-dialog/alert-dialog.js +4 -4
  9. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  10. package/dist/components/autocomplete/autocomplete.d.ts +69 -0
  11. package/dist/components/autocomplete/autocomplete.js +50 -0
  12. package/dist/components/autocomplete/autocomplete.js.map +1 -0
  13. package/dist/components/avatar/avatar-group.js +1 -1
  14. package/dist/components/avatar/avatar-group.js.map +1 -1
  15. package/dist/components/avatar/avatar.js +2 -2
  16. package/dist/components/avatar/avatar.js.map +1 -1
  17. package/dist/components/badge/badge.js +4 -4
  18. package/dist/components/badge/badge.js.map +1 -1
  19. package/dist/components/button/button.js +3 -3
  20. package/dist/components/button/button.js.map +1 -1
  21. package/dist/components/card/card.js +3 -3
  22. package/dist/components/card/card.js.map +1 -1
  23. package/dist/components/checkbox/checkbox.js +2 -2
  24. package/dist/components/checkbox/checkbox.js.map +1 -1
  25. package/dist/components/combobox/combobox.d.ts +68 -0
  26. package/dist/components/combobox/combobox.js +49 -0
  27. package/dist/components/combobox/combobox.js.map +1 -0
  28. package/dist/components/dialog/dialog.js +3 -3
  29. package/dist/components/dialog/dialog.js.map +1 -1
  30. package/dist/components/drawer/drawer.d.ts +16 -13
  31. package/dist/components/drawer/drawer.js +15 -34
  32. package/dist/components/drawer/drawer.js.map +1 -1
  33. package/dist/components/dropdown-menu/dropdown-menu.d.ts +1 -1
  34. package/dist/components/dropdown-menu/dropdown-menu.js +8 -8
  35. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  36. package/dist/components/form-helper/form-helper.js +4 -4
  37. package/dist/components/form-helper/form-helper.js.map +1 -1
  38. package/dist/components/input/input.js +3 -3
  39. package/dist/components/input/input.js.map +1 -1
  40. package/dist/components/label/label.js +1 -1
  41. package/dist/components/label/label.js.map +1 -1
  42. package/dist/components/pagination/pagination.d.ts +1 -1
  43. package/dist/components/pagination/pagination.js +5 -5
  44. package/dist/components/pagination/pagination.js.map +1 -1
  45. package/dist/components/popover/popover.d.ts +1 -1
  46. package/dist/components/popover/popover.js +2 -2
  47. package/dist/components/popover/popover.js.map +1 -1
  48. package/dist/components/progress/progress.js +1 -1
  49. package/dist/components/progress/progress.js.map +1 -1
  50. package/dist/components/radio-group/radio-group.js +1 -1
  51. package/dist/components/radio-group/radio-group.js.map +1 -1
  52. package/dist/components/select/select.d.ts +1 -1
  53. package/dist/components/select/select.js +5 -5
  54. package/dist/components/select/select.js.map +1 -1
  55. package/dist/components/skeleton/skeleton.js +1 -1
  56. package/dist/components/skeleton/skeleton.js.map +1 -1
  57. package/dist/components/slider/slider.js +2 -2
  58. package/dist/components/slider/slider.js.map +1 -1
  59. package/dist/components/switch/switch.js +5 -5
  60. package/dist/components/switch/switch.js.map +1 -1
  61. package/dist/components/table/table.d.ts +1 -1
  62. package/dist/components/table/table.js +5 -5
  63. package/dist/components/table/table.js.map +1 -1
  64. package/dist/components/tabs/tabs.d.ts +1 -1
  65. package/dist/components/tabs/tabs.js +4 -4
  66. package/dist/components/tabs/tabs.js.map +1 -1
  67. package/dist/components/text-area/text-area.js +3 -3
  68. package/dist/components/text-area/text-area.js.map +1 -1
  69. package/dist/components/toast/toast.d.ts +1 -1
  70. package/dist/components/toast/toast.js +2 -2
  71. package/dist/components/toast/toast.js.map +1 -1
  72. package/dist/components/tooltip/tooltip.d.ts +1 -1
  73. package/dist/components/tooltip/tooltip.js +2 -2
  74. package/dist/components/tooltip/tooltip.js.map +1 -1
  75. package/dist/index.d.ts +4 -0
  76. package/dist/index.js +2 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/styles/index.css +43 -0
  79. package/dist/utilities/pagination/get-truncated-elements.js +4 -4
  80. package/dist/utilities/pagination/get-truncated-elements.js.map +1 -1
  81. package/package.json +16 -16
@@ -3,13 +3,13 @@ import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
3
3
  import { cn } from "../../utilities/cn/cn";
4
4
  const Tabs = TabsPrimitive.Root;
5
5
  function TabsList({ className, ref, ...props }) {
6
- return (_jsx(TabsPrimitive.List, { ref: ref, className: cn("inline-flex h-10 items-center justify-center gap-2 bg-gray-100 px-1 text-gray-700", className), ...props }));
6
+ return (_jsx(TabsPrimitive.List, { ref: ref, className: cn("inline-flex h-10 items-center justify-center gap-2 bg-surface-muted px-1 text-text-secondary", className), ...props }));
7
7
  }
8
8
  function TabsTrigger({ className, ref, ...props }) {
9
- return (_jsx(TabsPrimitive.Tab, { ref: ref, className: cn("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 font-medium text-sm transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-700 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-active:bg-white data-active:shadow-sm", className), ...props }));
9
+ return (_jsx(TabsPrimitive.Tab, { ref: ref, className: cn("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 font-medium text-sm transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-active:bg-surface data-active:shadow-sm", className), ...props }));
10
10
  }
11
11
  function TabsContent({ className, ref, ...props }) {
12
- return (_jsx(TabsPrimitive.Panel, { ref: ref, className: cn("mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-700 focus-visible:ring-offset-2", className), ...props }));
12
+ return (_jsx(TabsPrimitive.Panel, { ref: ref, className: cn("mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2", className), ...props }));
13
13
  }
14
- export { Tabs, TabsList, TabsTrigger, TabsContent };
14
+ export { Tabs, TabsContent, TabsList, TabsTrigger };
15
15
  //# sourceMappingURL=tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sourceRoot":"/","sources":["components/tabs/tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAGtC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AAIhC,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAiB;IAC5D,OAAO,CACN,KAAC,aAAa,CAAC,IAAI,IAClB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,mFAAmF,EACnF,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAID,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAoB;IAClE,OAAO,CACN,KAAC,aAAa,CAAC,GAAG,IACjB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,yTAAyT,EACzT,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAID,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAoB;IAClE,OAAO,CACN,KAAC,aAAa,CAAC,KAAK,IACnB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,8GAA8G,EAC9G,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\nimport { cn } from \"@utilities/cn/cn\";\nimport type { ComponentProps } from \"react\";\n\nconst Tabs = TabsPrimitive.Root;\n\nexport type TabsListProps = ComponentProps<typeof TabsPrimitive.List>;\n\nfunction TabsList({ className, ref, ...props }: TabsListProps) {\n\treturn (\n\t\t<TabsPrimitive.List\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex h-10 items-center justify-center gap-2 bg-gray-100 px-1 text-gray-700\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport type TabsTriggerProps = ComponentProps<typeof TabsPrimitive.Tab>;\n\nfunction TabsTrigger({ className, ref, ...props }: TabsTriggerProps) {\n\treturn (\n\t\t<TabsPrimitive.Tab\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 font-medium text-sm transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-700 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-active:bg-white data-active:shadow-sm\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport type TabsContentProps = ComponentProps<typeof TabsPrimitive.Panel>;\n\nfunction TabsContent({ className, ref, ...props }: TabsContentProps) {\n\treturn (\n\t\t<TabsPrimitive.Panel\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-700 focus-visible:ring-offset-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"]}
1
+ {"version":3,"file":"tabs.js","sourceRoot":"/","sources":["components/tabs/tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAGtC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AAIhC,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAiB;IAC5D,OAAO,CACN,KAAC,aAAa,CAAC,IAAI,IAClB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,8FAA8F,EAC9F,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAID,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAoB;IAClE,OAAO,CACN,KAAC,aAAa,CAAC,GAAG,IACjB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,6TAA6T,EAC7T,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAID,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAoB;IAClE,OAAO,CACN,KAAC,aAAa,CAAC,KAAK,IACnB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,gHAAgH,EAChH,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\nimport { cn } from \"@utilities/cn/cn\";\nimport type { ComponentProps } from \"react\";\n\nconst Tabs = TabsPrimitive.Root;\n\nexport type TabsListProps = ComponentProps<typeof TabsPrimitive.List>;\n\nfunction TabsList({ className, ref, ...props }: TabsListProps) {\n\treturn (\n\t\t<TabsPrimitive.List\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex h-10 items-center justify-center gap-2 bg-surface-muted px-1 text-text-secondary\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport type TabsTriggerProps = ComponentProps<typeof TabsPrimitive.Tab>;\n\nfunction TabsTrigger({ className, ref, ...props }: TabsTriggerProps) {\n\treturn (\n\t\t<TabsPrimitive.Tab\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 font-medium text-sm transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-active:bg-surface data-active:shadow-sm\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport type TabsContentProps = ComponentProps<typeof TabsPrimitive.Panel>;\n\nfunction TabsContent({ className, ref, ...props }: TabsContentProps) {\n\treturn (\n\t\t<TabsPrimitive.Panel\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger };\n"]}
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { getVariants } from "../../utilities/responsive/responsive";
3
3
  const textAreaStyles = getVariants({
4
- base: "w-full rounded-md border border-gray-300 p-2 focus-visible:outline focus-visible:outline-gray-800",
4
+ base: "w-full rounded-md border border-border-input p-2 focus-visible:outline focus-visible:outline-primary-hover",
5
5
  variants: {
6
6
  error: {
7
- true: "border-red-600",
7
+ true: "border-error",
8
8
  },
9
9
  disabled: {
10
10
  true: "disabled:cursor-not-allowed disabled:opacity-50",
@@ -14,7 +14,7 @@ const textAreaStyles = getVariants({
14
14
  {
15
15
  error: true,
16
16
  disabled: true,
17
- className: "border-gray-400 disabled:cursor-not-allowed disabled:opacity-50",
17
+ className: "border-border-input disabled:cursor-not-allowed disabled:opacity-50",
18
18
  },
19
19
  ],
20
20
  });
@@ -1 +1 @@
1
- {"version":3,"file":"text-area.js","sourceRoot":"/","sources":["components/text-area/text-area.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAO/D,MAAM,cAAc,GAAG,WAAW,CAAC;IAClC,IAAI,EAAE,mGAAmG;IACzG,QAAQ,EAAE;QACT,KAAK,EAAE;YACN,IAAI,EAAE,gBAAgB;SACtB;QACD,QAAQ,EAAE;YACT,IAAI,EAAE,iDAAiD;SACvD;KACD;IACD,gBAAgB,EAAE;QACjB;YACC,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI;YACd,SAAS,EACR,iEAAiE;SAClE;KACD;CACD,CAAC,CAAC;AAEH,MAAM,UAAU,QAAQ,CAAC,EACxB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACO;IACf,OAAO,CACN,mBACC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,cAAc,CAAC;YACzB,SAAS;YACT,KAAK;YACL,QAAQ;SACR,CAAC,EACF,QAAQ,EAAE,QAAQ,KACd,KAAK,GACR,CACF,CAAC;AACH,CAAC","sourcesContent":["import { getVariants } from \"@utilities/responsive/responsive\";\nimport type { ComponentProps } from \"react\";\n\nexport type TextareaProps = ComponentProps<\"textarea\"> & {\n\terror?: boolean;\n};\n\nconst textAreaStyles = getVariants({\n\tbase: \"w-full rounded-md border border-gray-300 p-2 focus-visible:outline focus-visible:outline-gray-800\",\n\tvariants: {\n\t\terror: {\n\t\t\ttrue: \"border-red-600\",\n\t\t},\n\t\tdisabled: {\n\t\t\ttrue: \"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t},\n\t},\n\tcompoundVariants: [\n\t\t{\n\t\t\terror: true,\n\t\t\tdisabled: true,\n\t\t\tclassName:\n\t\t\t\t\"border-gray-400 disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t},\n\t],\n});\n\nexport function Textarea({\n\tclassName,\n\terror,\n\tdisabled,\n\tref,\n\t...props\n}: TextareaProps) {\n\treturn (\n\t\t<textarea\n\t\t\tref={ref}\n\t\t\tclassName={textAreaStyles({\n\t\t\t\tclassName,\n\t\t\t\terror,\n\t\t\t\tdisabled,\n\t\t\t})}\n\t\t\tdisabled={disabled}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n"]}
1
+ {"version":3,"file":"text-area.js","sourceRoot":"/","sources":["components/text-area/text-area.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAO/D,MAAM,cAAc,GAAG,WAAW,CAAC;IAClC,IAAI,EAAE,4GAA4G;IAClH,QAAQ,EAAE;QACT,KAAK,EAAE;YACN,IAAI,EAAE,cAAc;SACpB;QACD,QAAQ,EAAE;YACT,IAAI,EAAE,iDAAiD;SACvD;KACD;IACD,gBAAgB,EAAE;QACjB;YACC,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI;YACd,SAAS,EACR,qEAAqE;SACtE;KACD;CACD,CAAC,CAAC;AAEH,MAAM,UAAU,QAAQ,CAAC,EACxB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACO;IACf,OAAO,CACN,mBACC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,cAAc,CAAC;YACzB,SAAS;YACT,KAAK;YACL,QAAQ;SACR,CAAC,EACF,QAAQ,EAAE,QAAQ,KACd,KAAK,GACR,CACF,CAAC;AACH,CAAC","sourcesContent":["import { getVariants } from \"@utilities/responsive/responsive\";\nimport type { ComponentProps } from \"react\";\n\nexport type TextareaProps = ComponentProps<\"textarea\"> & {\n\terror?: boolean;\n};\n\nconst textAreaStyles = getVariants({\n\tbase: \"w-full rounded-md border border-border-input p-2 focus-visible:outline focus-visible:outline-primary-hover\",\n\tvariants: {\n\t\terror: {\n\t\t\ttrue: \"border-error\",\n\t\t},\n\t\tdisabled: {\n\t\t\ttrue: \"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t},\n\t},\n\tcompoundVariants: [\n\t\t{\n\t\t\terror: true,\n\t\t\tdisabled: true,\n\t\t\tclassName:\n\t\t\t\t\"border-border-input disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t},\n\t],\n});\n\nexport function Textarea({\n\tclassName,\n\terror,\n\tdisabled,\n\tref,\n\t...props\n}: TextareaProps) {\n\treturn (\n\t\t<textarea\n\t\t\tref={ref}\n\t\t\tclassName={textAreaStyles({\n\t\t\t\tclassName,\n\t\t\t\terror,\n\t\t\t\tdisabled,\n\t\t\t})}\n\t\t\tdisabled={disabled}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n"]}
@@ -24,4 +24,4 @@ declare function toast(toast: Omit<ToastProps, "id">): string | number;
24
24
  declare const Toaster: import("react").ForwardRefExoticComponent<ToasterProps & import("react").RefAttributes<HTMLElement>>;
25
25
  /** A fully custom toast built on top of sonner. */
26
26
  declare function Toast({ title, description, button, id, ref }: ToastProps): import("react/jsx-runtime").JSX.Element;
27
- export { toast, Toast, Toaster };
27
+ export { Toast, Toaster, toast };
@@ -21,10 +21,10 @@ function toast(toast) {
21
21
  const Toaster = SonnerToaster;
22
22
  /** A fully custom toast built on top of sonner. */
23
23
  function Toast({ title, description, button, id, ref }) {
24
- return (_jsxs("div", { className: "flex w-full items-center gap-4 rounded-lg bg-white p-4 shadow-lg ring-1 ring-black/5 md:max-w-96", ref: ref, children: [_jsx("div", { className: "flex flex-1 items-center", children: _jsxs("div", { className: "w-full gap-1", children: [_jsx("p", { className: "font-medium text-gray-900 text-sm", children: title }), _jsx("p", { className: "text-gray-500 text-sm", children: description })] }) }), _jsx("div", { className: "shrink-0 rounded-md font-medium text-sm", children: _jsx(Button, { size: "small", type: "button", variant: "secondary", onClick: () => {
24
+ return (_jsxs("div", { className: "flex w-full items-center gap-4 rounded-lg bg-surface p-4 shadow-lg ring-1 ring-black/5 md:max-w-96", ref: ref, children: [_jsx("div", { className: "flex flex-1 items-center", children: _jsxs("div", { className: "w-full gap-1", children: [_jsx("p", { className: "font-medium text-sm text-text", children: title }), _jsx("p", { className: "text-sm text-text-muted", children: description })] }) }), _jsx("div", { className: "shrink-0 rounded-md font-medium text-sm", children: _jsx(Button, { size: "small", type: "button", variant: "secondary", onClick: () => {
25
25
  button.onClick();
26
26
  sonnerToast.dismiss(id);
27
27
  }, children: button.label }) })] }));
28
28
  }
29
- export { toast, Toast, Toaster };
29
+ export { Toast, Toaster, toast };
30
30
  //# sourceMappingURL=toast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","sourceRoot":"/","sources":["components/toast/toast.tsx"],"names":[],"mappings":";AACA,OAAO,EACN,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,WAAW,GAEpB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAa1C;;;;;;;;;GASG;AACH,SAAS,KAAK,CAAC,KAA6B;IAC3C,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,CAAC;IAC9D,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CACjC,KAAC,KAAK,IACL,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;YACP,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;SACvB,KACG,YAAY,GACf,CACF,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,aAAa,CAAC;AAE9B,mDAAmD;AACnD,SAAS,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAc;IACjE,OAAO,CACN,eACC,SAAS,EAAC,kGAAkG,EAC5G,GAAG,EAAE,GAAG,aAER,cAAK,SAAS,EAAC,0BAA0B,YACxC,eAAK,SAAS,EAAC,cAAc,aAC5B,YAAG,SAAS,EAAC,mCAAmC,YAAE,KAAK,GAAK,EAC5D,YAAG,SAAS,EAAC,uBAAuB,YAAE,WAAW,GAAK,IACjD,GACD,EACN,cAAK,SAAS,EAAC,yCAAyC,YACvD,KAAC,MAAM,IACN,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,GAAG,EAAE;wBACb,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACzB,CAAC,YAEA,MAAM,CAAC,KAAK,GACL,GACJ,IACD,CACN,CAAC;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC","sourcesContent":["import type { Ref } from \"react\";\nimport {\n\tToaster as SonnerToaster,\n\ttoast as sonnerToast,\n\ttype ToasterProps,\n} from \"sonner\";\nimport { Button } from \"../button/button\";\n\nexport type ToastProps = {\n\tid: string | number;\n\ttitle: string;\n\tdescription: string;\n\tbutton: {\n\t\tlabel: string;\n\t\tonClick: () => void;\n\t};\n\tref?: Ref<HTMLDivElement>;\n} & Omit<ToasterProps, \"id\">;\n\n/**\n * Creates a custom toast notification using the sonner toast library\n * @param toast - The toast configuration object without an ID\n * @param toast.title - The title text to display in the toast\n * @param toast.description - The description text to display in the toast\n * @param toast.button - Configuration for the toast's action button\n * @param toast.button.label - The text label for the action button\n * @param toast.button.onClick - Click handler function for the action button\n * @returns A unique identifier for the created toast\n */\nfunction toast(toast: Omit<ToastProps, \"id\">) {\n\tconst { title, description, button, ...toastOptions } = toast;\n\treturn sonnerToast.custom((id) => (\n\t\t<Toast\n\t\t\tid={id}\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tbutton={{\n\t\t\t\tlabel: button.label,\n\t\t\t\tonClick: button.onClick,\n\t\t\t}}\n\t\t\t{...toastOptions}\n\t\t/>\n\t));\n}\n\nconst Toaster = SonnerToaster;\n\n/** A fully custom toast built on top of sonner. */\nfunction Toast({ title, description, button, id, ref }: ToastProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName=\"flex w-full items-center gap-4 rounded-lg bg-white p-4 shadow-lg ring-1 ring-black/5 md:max-w-96\"\n\t\t\tref={ref}\n\t\t>\n\t\t\t<div className=\"flex flex-1 items-center\">\n\t\t\t\t<div className=\"w-full gap-1\">\n\t\t\t\t\t<p className=\"font-medium text-gray-900 text-sm\">{title}</p>\n\t\t\t\t\t<p className=\"text-gray-500 text-sm\">{description}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"shrink-0 rounded-md font-medium text-sm\">\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tbutton.onClick();\n\t\t\t\t\t\tsonnerToast.dismiss(id);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{button.label}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport { toast, Toast, Toaster };\n"]}
1
+ {"version":3,"file":"toast.js","sourceRoot":"/","sources":["components/toast/toast.tsx"],"names":[],"mappings":";AACA,OAAO,EACN,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,WAAW,GAEpB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAa1C;;;;;;;;;GASG;AACH,SAAS,KAAK,CAAC,KAA6B;IAC3C,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,CAAC;IAC9D,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CACjC,KAAC,KAAK,IACL,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE;YACP,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;SACvB,KACG,YAAY,GACf,CACF,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,aAAa,CAAC;AAE9B,mDAAmD;AACnD,SAAS,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAc;IACjE,OAAO,CACN,eACC,SAAS,EAAC,oGAAoG,EAC9G,GAAG,EAAE,GAAG,aAER,cAAK,SAAS,EAAC,0BAA0B,YACxC,eAAK,SAAS,EAAC,cAAc,aAC5B,YAAG,SAAS,EAAC,+BAA+B,YAAE,KAAK,GAAK,EACxD,YAAG,SAAS,EAAC,yBAAyB,YAAE,WAAW,GAAK,IACnD,GACD,EACN,cAAK,SAAS,EAAC,yCAAyC,YACvD,KAAC,MAAM,IACN,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,GAAG,EAAE;wBACb,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACzB,CAAC,YAEA,MAAM,CAAC,KAAK,GACL,GACJ,IACD,CACN,CAAC;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC","sourcesContent":["import type { Ref } from \"react\";\nimport {\n\tToaster as SonnerToaster,\n\ttoast as sonnerToast,\n\ttype ToasterProps,\n} from \"sonner\";\nimport { Button } from \"../button/button\";\n\nexport type ToastProps = {\n\tid: string | number;\n\ttitle: string;\n\tdescription: string;\n\tbutton: {\n\t\tlabel: string;\n\t\tonClick: () => void;\n\t};\n\tref?: Ref<HTMLDivElement>;\n} & Omit<ToasterProps, \"id\">;\n\n/**\n * Creates a custom toast notification using the sonner toast library\n * @param toast - The toast configuration object without an ID\n * @param toast.title - The title text to display in the toast\n * @param toast.description - The description text to display in the toast\n * @param toast.button - Configuration for the toast's action button\n * @param toast.button.label - The text label for the action button\n * @param toast.button.onClick - Click handler function for the action button\n * @returns A unique identifier for the created toast\n */\nfunction toast(toast: Omit<ToastProps, \"id\">) {\n\tconst { title, description, button, ...toastOptions } = toast;\n\treturn sonnerToast.custom((id) => (\n\t\t<Toast\n\t\t\tid={id}\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tbutton={{\n\t\t\t\tlabel: button.label,\n\t\t\t\tonClick: button.onClick,\n\t\t\t}}\n\t\t\t{...toastOptions}\n\t\t/>\n\t));\n}\n\nconst Toaster = SonnerToaster;\n\n/** A fully custom toast built on top of sonner. */\nfunction Toast({ title, description, button, id, ref }: ToastProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName=\"flex w-full items-center gap-4 rounded-lg bg-surface p-4 shadow-lg ring-1 ring-black/5 md:max-w-96\"\n\t\t\tref={ref}\n\t\t>\n\t\t\t<div className=\"flex flex-1 items-center\">\n\t\t\t\t<div className=\"w-full gap-1\">\n\t\t\t\t\t<p className=\"font-medium text-sm text-text\">{title}</p>\n\t\t\t\t\t<p className=\"text-sm text-text-muted\">{description}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"shrink-0 rounded-md font-medium text-sm\">\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tbutton.onClick();\n\t\t\t\t\t\tsonnerToast.dismiss(id);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{button.label}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport { Toast, Toaster, toast };\n"]}
@@ -41,4 +41,4 @@ export type TooltipContentProps = ComponentProps<typeof TooltipPrimitive.Popup>
41
41
  showArrow?: boolean;
42
42
  };
43
43
  declare function TooltipContent({ className, children, ref, ...props }: TooltipContentProps): import("react/jsx-runtime").JSX.Element;
44
- export { Tooltip, TooltipTrigger, TooltipContent };
44
+ export { Tooltip, TooltipContent, TooltipTrigger };
@@ -43,7 +43,7 @@ function TooltipTrigger({ render, children, ref, ...props }) {
43
43
  }
44
44
  function TooltipContent({ className, children, ref, ...props }) {
45
45
  const { showArrow, side, sideOffset } = useTooltipContext();
46
- return (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Positioner, { side: side, sideOffset: sideOffset ?? 10, children: _jsxs(TooltipPrimitive.Popup, { className: cn("relative z-50 w-fit max-w-72 rounded-md bg-gray-700 p-2 text-sm text-white shadow-md", className), ...props, ref: ref, children: [children, showArrow && (_jsx(TooltipPrimitive.Arrow, { className: "data-[side=bottom]:-top-1.25 data-[side=left]:-right-1.25 data-[side=top]:-bottom-1.25 data-[side=right]:-left-1.25", children: _jsx("div", { className: "h-2.5 w-2.5 rotate-45 bg-gray-700" }) }))] }) }) }));
46
+ return (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Positioner, { side: side, sideOffset: sideOffset ?? 10, children: _jsxs(TooltipPrimitive.Popup, { className: cn("relative z-50 w-fit max-w-72 rounded-md bg-primary p-2 text-on-primary text-sm shadow-md", className), ...props, ref: ref, children: [children, showArrow && (_jsx(TooltipPrimitive.Arrow, { className: "data-[side=bottom]:-top-1.25 data-[side=left]:-right-1.25 data-[side=top]:-bottom-1.25 data-[side=right]:-left-1.25", children: _jsx("div", { className: "h-2.5 w-2.5 rotate-45 bg-primary" }) }))] }) }) }));
47
47
  }
48
- export { Tooltip, TooltipTrigger, TooltipContent };
48
+ export { Tooltip, TooltipContent, TooltipTrigger };
49
49
  //# sourceMappingURL=tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sourceRoot":"/","sources":["components/tooltip/tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAY3D,MAAM,cAAc,GAAG,aAAa,CAAiC,SAAS,CAAC,CAAC;AAEhF,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAaF;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,OAAO,CAAC,EAChB,QAAQ,EACR,SAAS,GAAG,IAAI,EAChB,IAAI,EACJ,UAAU,GAAG,EAAE,EACf,aAAa,GAAG,GAAG,EACnB,GAAG,KAAK,EACM;IACd,MAAM,YAAY,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,CAAC;QACN,SAAS;QACT,IAAI;QACJ,UAAU;KACV,CAAC,EACF,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAC7B,CAAC;IACF,OAAO,CACN,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC3C,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa,YAC9C,KAAC,gBAAgB,CAAC,IAAI,OAAK,KAAK,YAAG,QAAQ,GAAyB,GACzC,GACH,CAC1B,CAAC;AACH,CAAC;AAYD,SAAS,cAAc,CAAC,EACvB,MAAM,EACN,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACa;IACrB,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,CACN,KAAC,gBAAgB,CAAC,OAAO,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAM,KAAK,YAC3D,QAAQ,GACiB,CAC3B,CAAC;IACH,CAAC;IACD,OAAO,CACN,KAAC,gBAAgB,CAAC,OAAO,IAAC,GAAG,EAAE,GAAG,KAAM,KAAK,YAC3C,QAAQ,GACiB,CAC3B,CAAC;AACH,CAAC;AAYD,SAAS,cAAc,CAAC,EACvB,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACa;IACrB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC5D,OAAO,CACN,KAAC,gBAAgB,CAAC,MAAM,cACvB,KAAC,gBAAgB,CAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,IAAI,EAAE,YACpE,MAAC,gBAAgB,CAAC,KAAK,IACtB,SAAS,EAAE,EAAE,CACZ,sFAAsF,EACtF,SAAS,CACT,KACG,KAAK,EACT,GAAG,EAAE,GAAG,aAEP,QAAQ,EACR,SAAS,IAAI,CACb,KAAC,gBAAgB,CAAC,KAAK,IAAC,SAAS,EAAC,qHAAqH,YACtJ,cAAK,SAAS,EAAC,mCAAmC,GAAG,GAC7B,CACzB,IACuB,GACI,GACL,CAC1B,CAAC;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\";\nimport { cn } from \"@utilities/cn/cn\";\nimport type { ComponentProps } from \"react\";\nimport { createContext, useContext, useMemo } from \"react\";\n\n/**\n * Tooltip Context\n */\n\ntype TooltipContextType = {\n\tshowArrow?: boolean;\n\tside?: \"top\" | \"right\" | \"bottom\" | \"left\";\n\tsideOffset?: number;\n};\n\nconst TooltipContext = createContext<TooltipContextType | undefined>(undefined);\n\nconst useTooltipContext = () => {\n\tconst context = useContext(TooltipContext);\n\tif (!context) {\n\t\tthrow new Error(\"Tooltip components must be used within a TooltipProvider\");\n\t}\n\treturn context;\n};\n\n/**\n * Tooltip\n */\n\nexport type TooltipProps = ComponentProps<typeof TooltipPrimitive.Root> & {\n\tshowArrow?: boolean;\n\tside?: \"top\" | \"right\" | \"bottom\" | \"left\";\n\tsideOffset?: number;\n\tdelayDuration?: number;\n};\n\n/**\n * A tooltip component built on top of Base UI's tooltip primitive.\n *\n * @param {TooltipProps} props - The props for the Tooltip component\n * @param {boolean} [props.showArrow=true] - Whether to show the arrow pointing to the trigger\n * @param {\"top\" | \"right\" | \"bottom\" | \"left\"} [props.side] - The preferred side to show the tooltip\n * @param {number} [props.sideOffset=10] - Distance between the anchor and the popup\n * @param {number} [props.delayDuration=600] - How long to wait before opening the tooltip (in ms)\n *\n * @example\n * ```tsx\n * <Tooltip>\n * <TooltipTrigger>Hover me</TooltipTrigger>\n * <TooltipContent>Tooltip content</TooltipContent>\n * </Tooltip>\n * ```\n */\nfunction Tooltip({\n\tchildren,\n\tshowArrow = true,\n\tside,\n\tsideOffset = 10,\n\tdelayDuration = 600,\n\t...props\n}: TooltipProps) {\n\tconst contextValue = useMemo(\n\t\t() => ({\n\t\t\tshowArrow,\n\t\t\tside,\n\t\t\tsideOffset,\n\t\t}),\n\t\t[showArrow, side, sideOffset],\n\t);\n\treturn (\n\t\t<TooltipContext.Provider value={contextValue}>\n\t\t\t<TooltipPrimitive.Provider delay={delayDuration}>\n\t\t\t\t<TooltipPrimitive.Root {...props}>{children}</TooltipPrimitive.Root>\n\t\t\t</TooltipPrimitive.Provider>\n\t\t</TooltipContext.Provider>\n\t);\n}\n\n/**\n * Tooltip Trigger\n */\n\nexport type TooltipTriggerProps = ComponentProps<\n\ttypeof TooltipPrimitive.Trigger\n> & {\n\trender?: React.ReactElement;\n};\n\nfunction TooltipTrigger({\n\trender,\n\tchildren,\n\tref,\n\t...props\n}: TooltipTriggerProps) {\n\tif (render) {\n\t\treturn (\n\t\t\t<TooltipPrimitive.Trigger ref={ref} render={render} {...props}>\n\t\t\t\t{children}\n\t\t\t</TooltipPrimitive.Trigger>\n\t\t);\n\t}\n\treturn (\n\t\t<TooltipPrimitive.Trigger ref={ref} {...props}>\n\t\t\t{children}\n\t\t</TooltipPrimitive.Trigger>\n\t);\n}\n\n/**\n * Tooltip Content\n */\n\nexport type TooltipContentProps = ComponentProps<\n\ttypeof TooltipPrimitive.Popup\n> & {\n\tshowArrow?: boolean;\n};\n\nfunction TooltipContent({\n\tclassName,\n\tchildren,\n\tref,\n\t...props\n}: TooltipContentProps) {\n\tconst { showArrow, side, sideOffset } = useTooltipContext();\n\treturn (\n\t\t<TooltipPrimitive.Portal>\n\t\t\t<TooltipPrimitive.Positioner side={side} sideOffset={sideOffset ?? 10}>\n\t\t\t\t<TooltipPrimitive.Popup\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"relative z-50 w-fit max-w-72 rounded-md bg-gray-700 p-2 text-sm text-white shadow-md\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t\tref={ref}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t\t{showArrow && (\n\t\t\t\t\t\t<TooltipPrimitive.Arrow className=\"data-[side=bottom]:-top-1.25 data-[side=left]:-right-1.25 data-[side=top]:-bottom-1.25 data-[side=right]:-left-1.25\">\n\t\t\t\t\t\t\t<div className=\"h-2.5 w-2.5 rotate-45 bg-gray-700\" />\n\t\t\t\t\t\t</TooltipPrimitive.Arrow>\n\t\t\t\t\t)}\n\t\t\t\t</TooltipPrimitive.Popup>\n\t\t\t</TooltipPrimitive.Positioner>\n\t\t</TooltipPrimitive.Portal>\n\t);\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent };\n"]}
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"/","sources":["components/tooltip/tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAY3D,MAAM,cAAc,GAAG,aAAa,CAAiC,SAAS,CAAC,CAAC;AAEhF,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAaF;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,OAAO,CAAC,EAChB,QAAQ,EACR,SAAS,GAAG,IAAI,EAChB,IAAI,EACJ,UAAU,GAAG,EAAE,EACf,aAAa,GAAG,GAAG,EACnB,GAAG,KAAK,EACM;IACd,MAAM,YAAY,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,CAAC;QACN,SAAS;QACT,IAAI;QACJ,UAAU;KACV,CAAC,EACF,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAC7B,CAAC;IACF,OAAO,CACN,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC3C,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa,YAC9C,KAAC,gBAAgB,CAAC,IAAI,OAAK,KAAK,YAAG,QAAQ,GAAyB,GACzC,GACH,CAC1B,CAAC;AACH,CAAC;AAYD,SAAS,cAAc,CAAC,EACvB,MAAM,EACN,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACa;IACrB,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,CACN,KAAC,gBAAgB,CAAC,OAAO,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAM,KAAK,YAC3D,QAAQ,GACiB,CAC3B,CAAC;IACH,CAAC;IACD,OAAO,CACN,KAAC,gBAAgB,CAAC,OAAO,IAAC,GAAG,EAAE,GAAG,KAAM,KAAK,YAC3C,QAAQ,GACiB,CAC3B,CAAC;AACH,CAAC;AAYD,SAAS,cAAc,CAAC,EACvB,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACa;IACrB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC5D,OAAO,CACN,KAAC,gBAAgB,CAAC,MAAM,cACvB,KAAC,gBAAgB,CAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,IAAI,EAAE,YACpE,MAAC,gBAAgB,CAAC,KAAK,IACtB,SAAS,EAAE,EAAE,CACZ,0FAA0F,EAC1F,SAAS,CACT,KACG,KAAK,EACT,GAAG,EAAE,GAAG,aAEP,QAAQ,EACR,SAAS,IAAI,CACb,KAAC,gBAAgB,CAAC,KAAK,IAAC,SAAS,EAAC,qHAAqH,YACtJ,cAAK,SAAS,EAAC,kCAAkC,GAAG,GAC5B,CACzB,IACuB,GACI,GACL,CAC1B,CAAC;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\";\nimport { cn } from \"@utilities/cn/cn\";\nimport type { ComponentProps } from \"react\";\nimport { createContext, useContext, useMemo } from \"react\";\n\n/**\n * Tooltip Context\n */\n\ntype TooltipContextType = {\n\tshowArrow?: boolean;\n\tside?: \"top\" | \"right\" | \"bottom\" | \"left\";\n\tsideOffset?: number;\n};\n\nconst TooltipContext = createContext<TooltipContextType | undefined>(undefined);\n\nconst useTooltipContext = () => {\n\tconst context = useContext(TooltipContext);\n\tif (!context) {\n\t\tthrow new Error(\"Tooltip components must be used within a TooltipProvider\");\n\t}\n\treturn context;\n};\n\n/**\n * Tooltip\n */\n\nexport type TooltipProps = ComponentProps<typeof TooltipPrimitive.Root> & {\n\tshowArrow?: boolean;\n\tside?: \"top\" | \"right\" | \"bottom\" | \"left\";\n\tsideOffset?: number;\n\tdelayDuration?: number;\n};\n\n/**\n * A tooltip component built on top of Base UI's tooltip primitive.\n *\n * @param {TooltipProps} props - The props for the Tooltip component\n * @param {boolean} [props.showArrow=true] - Whether to show the arrow pointing to the trigger\n * @param {\"top\" | \"right\" | \"bottom\" | \"left\"} [props.side] - The preferred side to show the tooltip\n * @param {number} [props.sideOffset=10] - Distance between the anchor and the popup\n * @param {number} [props.delayDuration=600] - How long to wait before opening the tooltip (in ms)\n *\n * @example\n * ```tsx\n * <Tooltip>\n * <TooltipTrigger>Hover me</TooltipTrigger>\n * <TooltipContent>Tooltip content</TooltipContent>\n * </Tooltip>\n * ```\n */\nfunction Tooltip({\n\tchildren,\n\tshowArrow = true,\n\tside,\n\tsideOffset = 10,\n\tdelayDuration = 600,\n\t...props\n}: TooltipProps) {\n\tconst contextValue = useMemo(\n\t\t() => ({\n\t\t\tshowArrow,\n\t\t\tside,\n\t\t\tsideOffset,\n\t\t}),\n\t\t[showArrow, side, sideOffset],\n\t);\n\treturn (\n\t\t<TooltipContext.Provider value={contextValue}>\n\t\t\t<TooltipPrimitive.Provider delay={delayDuration}>\n\t\t\t\t<TooltipPrimitive.Root {...props}>{children}</TooltipPrimitive.Root>\n\t\t\t</TooltipPrimitive.Provider>\n\t\t</TooltipContext.Provider>\n\t);\n}\n\n/**\n * Tooltip Trigger\n */\n\nexport type TooltipTriggerProps = ComponentProps<\n\ttypeof TooltipPrimitive.Trigger\n> & {\n\trender?: React.ReactElement;\n};\n\nfunction TooltipTrigger({\n\trender,\n\tchildren,\n\tref,\n\t...props\n}: TooltipTriggerProps) {\n\tif (render) {\n\t\treturn (\n\t\t\t<TooltipPrimitive.Trigger ref={ref} render={render} {...props}>\n\t\t\t\t{children}\n\t\t\t</TooltipPrimitive.Trigger>\n\t\t);\n\t}\n\treturn (\n\t\t<TooltipPrimitive.Trigger ref={ref} {...props}>\n\t\t\t{children}\n\t\t</TooltipPrimitive.Trigger>\n\t);\n}\n\n/**\n * Tooltip Content\n */\n\nexport type TooltipContentProps = ComponentProps<\n\ttypeof TooltipPrimitive.Popup\n> & {\n\tshowArrow?: boolean;\n};\n\nfunction TooltipContent({\n\tclassName,\n\tchildren,\n\tref,\n\t...props\n}: TooltipContentProps) {\n\tconst { showArrow, side, sideOffset } = useTooltipContext();\n\treturn (\n\t\t<TooltipPrimitive.Portal>\n\t\t\t<TooltipPrimitive.Positioner side={side} sideOffset={sideOffset ?? 10}>\n\t\t\t\t<TooltipPrimitive.Popup\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"relative z-50 w-fit max-w-72 rounded-md bg-primary p-2 text-on-primary text-sm shadow-md\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t\tref={ref}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t\t{showArrow && (\n\t\t\t\t\t\t<TooltipPrimitive.Arrow className=\"data-[side=bottom]:-top-1.25 data-[side=left]:-right-1.25 data-[side=top]:-bottom-1.25 data-[side=right]:-left-1.25\">\n\t\t\t\t\t\t\t<div className=\"h-2.5 w-2.5 rotate-45 bg-primary\" />\n\t\t\t\t\t\t</TooltipPrimitive.Arrow>\n\t\t\t\t\t)}\n\t\t\t\t</TooltipPrimitive.Popup>\n\t\t\t</TooltipPrimitive.Positioner>\n\t\t</TooltipPrimitive.Portal>\n\t);\n}\n\nexport { Tooltip, TooltipContent, TooltipTrigger };\n"]}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,8 @@ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from ".
3
3
  export type { AlertDescriptionProps, AlertProps, AlertTitleProps, } from "./components/alert/alert";
4
4
  export { Alert, AlertDescription, AlertTitle } from "./components/alert/alert";
5
5
  export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, } from "./components/alert-dialog/alert-dialog";
6
+ export type { AutocompleteClearProps, AutocompleteContentProps, AutocompleteEmptyProps, AutocompleteGroupLabelProps, AutocompleteInputGroupProps, AutocompleteInputProps, AutocompleteItemProps, AutocompleteListProps, AutocompleteProps, AutocompleteSeparatorProps, AutocompleteTriggerProps, } from "./components/autocomplete/autocomplete";
7
+ export { Autocomplete, AutocompleteClear, AutocompleteContent, AutocompleteEmpty, AutocompleteGroup, AutocompleteGroupLabel, AutocompleteInput, AutocompleteInputGroup, AutocompleteItem, AutocompleteList, AutocompleteSeparator, AutocompleteTrigger, } from "./components/autocomplete/autocomplete";
6
8
  export { Avatar, AvatarFallback, AvatarImage } from "./components/avatar/avatar";
7
9
  export type { AvatarGroupProps } from "./components/avatar/avatar-group";
8
10
  export { AvatarGroup } from "./components/avatar/avatar-group";
@@ -14,6 +16,8 @@ export type { CardContentProps, CardFooterProps, CardHeaderProps, CardProps, } f
14
16
  export { Card, CardContent, CardFooter, CardHeader, } from "./components/card/card";
15
17
  export type { CheckboxProps } from "./components/checkbox/checkbox";
16
18
  export { Checkbox } from "./components/checkbox/checkbox";
19
+ export type { ComboboxClearProps, ComboboxContentProps, ComboboxEmptyProps, ComboboxGroupLabelProps, ComboboxInputGroupProps, ComboboxInputProps, ComboboxItemProps, ComboboxListProps, ComboboxProps, ComboboxSeparatorProps, ComboboxTriggerProps, } from "./components/combobox/combobox";
20
+ export { Combobox, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxInputGroup, ComboboxItem, ComboboxList, ComboboxSeparator, ComboboxTrigger, } from "./components/combobox/combobox";
17
21
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "./components/dialog/dialog";
18
22
  export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from "./components/drawer/drawer";
19
23
  export { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "./components/dropdown-menu/dropdown-menu";
package/dist/index.js CHANGED
@@ -1,12 +1,14 @@
1
1
  export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "./components/accordion/accordion";
2
2
  export { Alert, AlertDescription, AlertTitle } from "./components/alert/alert";
3
3
  export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, } from "./components/alert-dialog/alert-dialog";
4
+ export { Autocomplete, AutocompleteClear, AutocompleteContent, AutocompleteEmpty, AutocompleteGroup, AutocompleteGroupLabel, AutocompleteInput, AutocompleteInputGroup, AutocompleteItem, AutocompleteList, AutocompleteSeparator, AutocompleteTrigger, } from "./components/autocomplete/autocomplete";
4
5
  export { Avatar, AvatarFallback, AvatarImage } from "./components/avatar/avatar";
5
6
  export { AvatarGroup } from "./components/avatar/avatar-group";
6
7
  export { Badge } from "./components/badge/badge";
7
8
  export { Button } from "./components/button/button";
8
9
  export { Card, CardContent, CardFooter, CardHeader, } from "./components/card/card";
9
10
  export { Checkbox } from "./components/checkbox/checkbox";
11
+ export { Combobox, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxInputGroup, ComboboxItem, ComboboxList, ComboboxSeparator, ComboboxTrigger, } from "./components/combobox/combobox";
10
12
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "./components/dialog/dialog";
11
13
  export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from "./components/drawer/drawer";
12
14
  export { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "./components/dropdown-menu/dropdown-menu";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,gBAAgB,GAChB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAOnD,OAAO,EACN,IAAI,EACJ,WAAW,EACX,UAAU,EACV,UAAU,GACV,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,GACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,GACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAKhD,OAAO,EACN,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,GACd,MAAM,mCAAmC,CAAC;AAK3C,OAAO,EACN,OAAO,EACP,aAAa,EACb,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,GACd,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EACN,UAAU,EACV,cAAc,GACd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACN,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,WAAW,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EACN,KAAK,EACL,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,EACX,SAAS,EACT,WAAW,EACX,QAAQ,GACR,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,WAAW,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EACN,OAAO,EACP,cAAc,EACd,cAAc,GACd,MAAM,6BAA6B,CAAC","sourcesContent":["export type {\n\tAccordionContentProps,\n\tAccordionItemProps,\n\tAccordionProps,\n\tAccordionTriggerProps,\n} from \"@components/accordion/accordion\";\nexport {\n\tAccordion,\n\tAccordionContent,\n\tAccordionItem,\n\tAccordionTrigger,\n} from \"@components/accordion/accordion\";\nexport type {\n\tAlertDescriptionProps,\n\tAlertProps,\n\tAlertTitleProps,\n} from \"@components/alert/alert\";\nexport { Alert, AlertDescription, AlertTitle } from \"@components/alert/alert\";\nexport {\n\tAlertDialog,\n\tAlertDialogAction,\n\tAlertDialogCancel,\n\tAlertDialogContent,\n\tAlertDialogDescription,\n\tAlertDialogOverlay,\n\tAlertDialogTitle,\n\tAlertDialogTrigger,\n} from \"@components/alert-dialog/alert-dialog\";\nexport { Avatar, AvatarFallback, AvatarImage } from \"@components/avatar/avatar\";\nexport type { AvatarGroupProps } from \"@components/avatar/avatar-group\";\nexport { AvatarGroup } from \"@components/avatar/avatar-group\";\nexport type { BadgeProps } from \"@components/badge/badge\";\nexport { Badge } from \"@components/badge/badge\";\nexport type { ButtonProps } from \"@components/button/button\";\nexport { Button } from \"@components/button/button\";\nexport type {\n\tCardContentProps,\n\tCardFooterProps,\n\tCardHeaderProps,\n\tCardProps,\n} from \"@components/card/card\";\nexport {\n\tCard,\n\tCardContent,\n\tCardFooter,\n\tCardHeader,\n} from \"@components/card/card\";\nexport type { CheckboxProps } from \"@components/checkbox/checkbox\";\nexport { Checkbox } from \"@components/checkbox/checkbox\";\nexport {\n\tDialog,\n\tDialogClose,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogTitle,\n\tDialogTrigger,\n} from \"@components/dialog/dialog\";\nexport {\n\tDrawer,\n\tDrawerClose,\n\tDrawerContent,\n\tDrawerDescription,\n\tDrawerFooter,\n\tDrawerHeader,\n\tDrawerTitle,\n\tDrawerTrigger,\n} from \"@components/drawer/drawer\";\nexport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuLabel,\n\tDropdownMenuPortal,\n\tDropdownMenuRadioGroup,\n\tDropdownMenuRadioItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuShortcut,\n\tDropdownMenuSub,\n\tDropdownMenuSubContent,\n\tDropdownMenuSubTrigger,\n\tDropdownMenuTrigger,\n} from \"@components/dropdown-menu/dropdown-menu\";\nexport type { InputProps } from \"@components/input/input\";\nexport { Input } from \"@components/input/input\";\nexport type { LabelProps } from \"@components/label/label\";\nexport { Label } from \"@components/label/label\";\nexport type {\n\tPaginationItemProps,\n\tPaginationProps,\n} from \"@components/pagination/pagination\";\nexport {\n\tPagination,\n\tPaginationItem,\n\tPaginationNext,\n\tPaginationPrev,\n} from \"@components/pagination/pagination\";\nexport type {\n\tPopoverContentProps,\n\tPopoverProps,\n} from \"@components/popover/popover\";\nexport {\n\tPopover,\n\tPopoverAnchor,\n\tPopoverClose,\n\tPopoverContent,\n\tPopoverPortal,\n\tPopoverTrigger,\n} from \"@components/popover/popover\";\nexport type { ProgressProps } from \"@components/progress/progress\";\nexport { Progress } from \"@components/progress/progress\";\nexport {\n\tRadioGroup,\n\tRadioGroupItem,\n} from \"@components/radio-group/radio-group\";\nexport {\n\tSelect,\n\tSelectContent,\n\tSelectGroup,\n\tSelectItem,\n\tSelectLabel,\n\tSelectSeparator,\n\tSelectTrigger,\n\tSelectValue,\n} from \"@components/select/select\";\nexport { Skeleton } from \"@components/skeleton/skeleton\";\nexport type { SliderProps } from \"@components/slider/slider\";\nexport { Slider } from \"@components/slider/slider\";\nexport type { SwitchProps } from \"@components/switch/switch\";\nexport { Switch } from \"@components/switch/switch\";\nexport {\n\tTable,\n\tTableBody,\n\tTableCaption,\n\tTableCell,\n\tTableFooter,\n\tTableHead,\n\tTableHeader,\n\tTableRow,\n} from \"@components/table/table\";\nexport {\n\tTabs,\n\tTabsContent,\n\tTabsList,\n\tTabsTrigger,\n} from \"@components/tabs/tabs\";\nexport type { TextareaProps } from \"@components/text-area/text-area\";\nexport { Textarea } from \"@components/text-area/text-area\";\nexport type { ToastProps } from \"@components/toast/toast\";\nexport { Toast, Toaster, toast } from \"@components/toast/toast\";\nexport type { TooltipProps } from \"@components/tooltip/tooltip\";\nexport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipTrigger,\n} from \"@components/tooltip/tooltip\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"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","sourcesContent":["export type {\n\tAccordionContentProps,\n\tAccordionItemProps,\n\tAccordionProps,\n\tAccordionTriggerProps,\n} from \"@components/accordion/accordion\";\nexport {\n\tAccordion,\n\tAccordionContent,\n\tAccordionItem,\n\tAccordionTrigger,\n} from \"@components/accordion/accordion\";\nexport type {\n\tAlertDescriptionProps,\n\tAlertProps,\n\tAlertTitleProps,\n} from \"@components/alert/alert\";\nexport { Alert, AlertDescription, AlertTitle } from \"@components/alert/alert\";\nexport {\n\tAlertDialog,\n\tAlertDialogAction,\n\tAlertDialogCancel,\n\tAlertDialogContent,\n\tAlertDialogDescription,\n\tAlertDialogOverlay,\n\tAlertDialogTitle,\n\tAlertDialogTrigger,\n} from \"@components/alert-dialog/alert-dialog\";\nexport type {\n\tAutocompleteClearProps,\n\tAutocompleteContentProps,\n\tAutocompleteEmptyProps,\n\tAutocompleteGroupLabelProps,\n\tAutocompleteInputGroupProps,\n\tAutocompleteInputProps,\n\tAutocompleteItemProps,\n\tAutocompleteListProps,\n\tAutocompleteProps,\n\tAutocompleteSeparatorProps,\n\tAutocompleteTriggerProps,\n} from \"@components/autocomplete/autocomplete\";\nexport {\n\tAutocomplete,\n\tAutocompleteClear,\n\tAutocompleteContent,\n\tAutocompleteEmpty,\n\tAutocompleteGroup,\n\tAutocompleteGroupLabel,\n\tAutocompleteInput,\n\tAutocompleteInputGroup,\n\tAutocompleteItem,\n\tAutocompleteList,\n\tAutocompleteSeparator,\n\tAutocompleteTrigger,\n} from \"@components/autocomplete/autocomplete\";\nexport { Avatar, AvatarFallback, AvatarImage } from \"@components/avatar/avatar\";\nexport type { AvatarGroupProps } from \"@components/avatar/avatar-group\";\nexport { AvatarGroup } from \"@components/avatar/avatar-group\";\nexport type { BadgeProps } from \"@components/badge/badge\";\nexport { Badge } from \"@components/badge/badge\";\nexport type { ButtonProps } from \"@components/button/button\";\nexport { Button } from \"@components/button/button\";\nexport type {\n\tCardContentProps,\n\tCardFooterProps,\n\tCardHeaderProps,\n\tCardProps,\n} from \"@components/card/card\";\nexport {\n\tCard,\n\tCardContent,\n\tCardFooter,\n\tCardHeader,\n} from \"@components/card/card\";\nexport type { CheckboxProps } from \"@components/checkbox/checkbox\";\nexport { Checkbox } from \"@components/checkbox/checkbox\";\nexport type {\n\tComboboxClearProps,\n\tComboboxContentProps,\n\tComboboxEmptyProps,\n\tComboboxGroupLabelProps,\n\tComboboxInputGroupProps,\n\tComboboxInputProps,\n\tComboboxItemProps,\n\tComboboxListProps,\n\tComboboxProps,\n\tComboboxSeparatorProps,\n\tComboboxTriggerProps,\n} from \"@components/combobox/combobox\";\nexport {\n\tCombobox,\n\tComboboxClear,\n\tComboboxContent,\n\tComboboxEmpty,\n\tComboboxGroup,\n\tComboboxGroupLabel,\n\tComboboxInput,\n\tComboboxInputGroup,\n\tComboboxItem,\n\tComboboxList,\n\tComboboxSeparator,\n\tComboboxTrigger,\n} from \"@components/combobox/combobox\";\nexport {\n\tDialog,\n\tDialogClose,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogTitle,\n\tDialogTrigger,\n} from \"@components/dialog/dialog\";\nexport {\n\tDrawer,\n\tDrawerClose,\n\tDrawerContent,\n\tDrawerDescription,\n\tDrawerFooter,\n\tDrawerHeader,\n\tDrawerTitle,\n\tDrawerTrigger,\n} from \"@components/drawer/drawer\";\nexport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuLabel,\n\tDropdownMenuPortal,\n\tDropdownMenuRadioGroup,\n\tDropdownMenuRadioItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuShortcut,\n\tDropdownMenuSub,\n\tDropdownMenuSubContent,\n\tDropdownMenuSubTrigger,\n\tDropdownMenuTrigger,\n} from \"@components/dropdown-menu/dropdown-menu\";\nexport type { InputProps } from \"@components/input/input\";\nexport { Input } from \"@components/input/input\";\nexport type { LabelProps } from \"@components/label/label\";\nexport { Label } from \"@components/label/label\";\nexport type {\n\tPaginationItemProps,\n\tPaginationProps,\n} from \"@components/pagination/pagination\";\nexport {\n\tPagination,\n\tPaginationItem,\n\tPaginationNext,\n\tPaginationPrev,\n} from \"@components/pagination/pagination\";\nexport type {\n\tPopoverContentProps,\n\tPopoverProps,\n} from \"@components/popover/popover\";\nexport {\n\tPopover,\n\tPopoverAnchor,\n\tPopoverClose,\n\tPopoverContent,\n\tPopoverPortal,\n\tPopoverTrigger,\n} from \"@components/popover/popover\";\nexport type { ProgressProps } from \"@components/progress/progress\";\nexport { Progress } from \"@components/progress/progress\";\nexport {\n\tRadioGroup,\n\tRadioGroupItem,\n} from \"@components/radio-group/radio-group\";\nexport {\n\tSelect,\n\tSelectContent,\n\tSelectGroup,\n\tSelectItem,\n\tSelectLabel,\n\tSelectSeparator,\n\tSelectTrigger,\n\tSelectValue,\n} from \"@components/select/select\";\nexport { Skeleton } from \"@components/skeleton/skeleton\";\nexport type { SliderProps } from \"@components/slider/slider\";\nexport { Slider } from \"@components/slider/slider\";\nexport type { SwitchProps } from \"@components/switch/switch\";\nexport { Switch } from \"@components/switch/switch\";\nexport {\n\tTable,\n\tTableBody,\n\tTableCaption,\n\tTableCell,\n\tTableFooter,\n\tTableHead,\n\tTableHeader,\n\tTableRow,\n} from \"@components/table/table\";\nexport {\n\tTabs,\n\tTabsContent,\n\tTabsList,\n\tTabsTrigger,\n} from \"@components/tabs/tabs\";\nexport type { TextareaProps } from \"@components/text-area/text-area\";\nexport { Textarea } from \"@components/text-area/text-area\";\nexport type { ToastProps } from \"@components/toast/toast\";\nexport { Toast, Toaster, toast } from \"@components/toast/toast\";\nexport type { TooltipProps } from \"@components/tooltip/tooltip\";\nexport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipTrigger,\n} from \"@components/tooltip/tooltip\";\n"]}
@@ -5,6 +5,49 @@
5
5
  @source "../utilities";
6
6
 
7
7
  @theme {
8
+ /* ─── Brand / Primary ─── */
9
+ --color-primary: #374151;
10
+ --color-primary-hover: #1f2937;
11
+ --color-primary-active: #111827;
12
+ --color-on-primary: #ffffff;
13
+
14
+ /* ─── Destructive ─── */
15
+ --color-destructive: #ef4444;
16
+ --color-destructive-hover: #dc2626;
17
+ --color-destructive-active: #b91c1c;
18
+
19
+ /* ─── Error ─── */
20
+ --color-error: #dc2626;
21
+
22
+ /* ─── Surfaces ─── */
23
+ --color-surface: #ffffff;
24
+ --color-surface-subtle: #f9fafb;
25
+ --color-surface-muted: #f3f4f6;
26
+ --color-overlay: oklch(0 0 0 / 50%);
27
+
28
+ /* ─── Borders & Separators ─── */
29
+ --color-border: #e5e7eb;
30
+ --color-border-input: #9ca3af;
31
+ --color-separator: #e5e7eb;
32
+
33
+ /* ─── Text ─── */
34
+ --color-text: #111827;
35
+ --color-text-secondary: #374151;
36
+ --color-text-muted: #6b7280;
37
+ --color-text-disabled: #d1d5db;
38
+ --color-text-placeholder: #9ca3af;
39
+
40
+ /* ─── Interactive States ─── */
41
+ --color-highlight: #374151;
42
+ --color-on-highlight: #ffffff;
43
+ --color-focus-ring: #374151;
44
+ --color-skeleton: #e5e7eb;
45
+
46
+ /* ─── Misc ─── */
47
+ --color-indicator: #6b7280;
48
+ --color-disabled-bg: #9ca3af;
49
+
50
+ /* ─── Animations ─── */
8
51
  --animate-accordion-up: accordion-up 350ms ease;
9
52
  --animate-accordion-down: accordion-down 350ms ease;
10
53
  --animate-fade-in: fade-in 350ms ease;
@@ -40,7 +40,7 @@ export const getTruncatedElements = ({ page, children, }) => {
40
40
  }
41
41
  }
42
42
  if (paginationItems.length > 4) {
43
- result.push(_jsx("span", { className: "flex h-10 w-10 items-center justify-center text-gray-500", children: "..." }, "end-ellipsis"));
43
+ result.push(_jsx("span", { className: "flex h-10 w-10 items-center justify-center text-text-muted", children: "..." }, "end-ellipsis"));
44
44
  // Show last page
45
45
  const lastItem = paginationItems[paginationItems.length - 1];
46
46
  if (lastItem) {
@@ -55,7 +55,7 @@ export const getTruncatedElements = ({ page, children, }) => {
55
55
  if (firstItem) {
56
56
  result.push(_jsx(PaginationItem, { index: 1, children: firstItem.props.children }, "pagination-item-1"));
57
57
  }
58
- result.push(_jsx("span", { className: "flex h-10 w-10 items-center justify-center text-gray-500", children: "..." }, "start-ellipsis"));
58
+ result.push(_jsx("span", { className: "flex h-10 w-10 items-center justify-center text-text-muted", children: "..." }, "start-ellipsis"));
59
59
  // Show last 4 pages
60
60
  for (let i = paginationItems.length - 4; i < paginationItems.length; i++) {
61
61
  const item = paginationItems[i];
@@ -71,7 +71,7 @@ export const getTruncatedElements = ({ page, children, }) => {
71
71
  if (firstItem) {
72
72
  result.push(_jsx(PaginationItem, { index: 1, children: firstItem.props.children }, "pagination-item-1"));
73
73
  }
74
- result.push(_jsx("span", { className: "flex h-10 w-10 items-center justify-center text-gray-500", children: "..." }, "start-ellipsis"));
74
+ result.push(_jsx("span", { className: "flex h-10 w-10 items-center justify-center text-text-muted", children: "..." }, "start-ellipsis"));
75
75
  // Show 5 pages with current page in middle
76
76
  for (let i = page - 2; i <= page + 2; i++) {
77
77
  if (i > 1 && i < paginationItems.length) {
@@ -81,7 +81,7 @@ export const getTruncatedElements = ({ page, children, }) => {
81
81
  }
82
82
  }
83
83
  }
84
- result.push(_jsx("span", { className: "flex h-10 w-10 items-center justify-center text-gray-500", children: "..." }, "end-ellipsis"));
84
+ result.push(_jsx("span", { className: "flex h-10 w-10 items-center justify-center text-text-muted", children: "..." }, "end-ellipsis"));
85
85
  const lastItem = paginationItems[paginationItems.length - 1];
86
86
  if (lastItem) {
87
87
  result.push(_jsx(PaginationItem, { index: paginationItems.length, children: lastItem.props.children }, `pagination-item-${paginationItems.length}`));
@@ -1 +1 @@
1
- {"version":3,"file":"get-truncated-elements.js","sourceRoot":"/","sources":["utilities/pagination/get-truncated-elements.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n\tPaginationItem,\n\ttype PaginationItemProps,\n} from \"@components/pagination/pagination\";\nimport {\n\tChildren,\n\tisValidElement,\n\ttype ReactElement,\n\ttype ReactNode,\n} from \"react\";\n\ntype TruncatedElementsOptions = {\n\tpage: number;\n\tchildren: ReactNode;\n};\n\nexport const getTruncatedElements = ({\n\tpage,\n\tchildren,\n}: TruncatedElementsOptions) => {\n\tconst elements = Children.toArray(children);\n\tconst paginationItems = elements.filter(\n\t\t(el): el is ReactElement<PaginationItemProps> =>\n\t\t\tisValidElement(el) && el.type === PaginationItem,\n\t);\n\n\tif (paginationItems.length <= 7) {\n\t\treturn elements.map((element, index) => {\n\t\t\tif (isValidElement(element) && element.type === PaginationItem) {\n\t\t\t\tconst pageNumber =\n\t\t\t\t\telements\n\t\t\t\t\t\t.slice(0, index)\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t(el): el is ReactElement<PaginationItemProps> =>\n\t\t\t\t\t\t\t\tisValidElement(el) && el.type === PaginationItem,\n\t\t\t\t\t\t).length + 1;\n\t\t\t\tconst elementProps = element as ReactElement<PaginationItemProps>;\n\t\t\t\treturn (\n\t\t\t\t\t<PaginationItem\n\t\t\t\t\t\tkey={`pagination-item-${pageNumber}`}\n\t\t\t\t\t\tindex={pageNumber}\n\t\t\t\t\t>\n\t\t\t\t\t\t{elementProps.props.children}\n\t\t\t\t\t</PaginationItem>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn element;\n\t\t});\n\t}\n\n\tconst result: ReactNode[] = [];\n\tlet currentIndex = 0;\n\n\t// Add non-PaginationItem elements at the start\n\twhile (currentIndex < elements.length) {\n\t\tconst element = elements[currentIndex];\n\t\tif (\n\t\t\t!isValidElement(element) ||\n\t\t\t(isValidElement(element) && element.type !== PaginationItem)\n\t\t) {\n\t\t\tresult.push(element);\n\t\t\tcurrentIndex++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Always show first 4 pages when in that range\n\tif (page <= 4) {\n\t\t// Show first 4 pages\n\t\tfor (let i = 0; i < 4; i++) {\n\t\t\tconst item = paginationItems[i];\n\t\t\tif (item) {\n\t\t\t\tresult.push(\n\t\t\t\t\t<PaginationItem key={`pagination-item-${i + 1}`} index={i + 1}>\n\t\t\t\t\t\t{item.props.children}\n\t\t\t\t\t</PaginationItem>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (paginationItems.length > 4) {\n\t\t\tresult.push(\n\t\t\t\t<span\n\t\t\t\t\tkey=\"end-ellipsis\"\n\t\t\t\t\tclassName=\"flex h-10 w-10 items-center justify-center text-gray-500\"\n\t\t\t\t>\n\t\t\t\t\t...\n\t\t\t\t</span>,\n\t\t\t);\n\t\t\t// Show last page\n\t\t\tconst lastItem = paginationItems[paginationItems.length - 1];\n\t\t\tif (lastItem) {\n\t\t\t\tresult.push(\n\t\t\t\t\t<PaginationItem\n\t\t\t\t\t\tkey={`pagination-item-${paginationItems.length}`}\n\t\t\t\t\t\tindex={paginationItems.length}\n\t\t\t\t\t>\n\t\t\t\t\t\t{lastItem.props.children}\n\t\t\t\t\t</PaginationItem>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\t// Always show last 4 pages when in that range\n\telse if (page > paginationItems.length - 4) {\n\t\t// Show first page\n\t\tconst firstItem = paginationItems[0];\n\t\tif (firstItem) {\n\t\t\tresult.push(\n\t\t\t\t<PaginationItem key=\"pagination-item-1\" index={1}>\n\t\t\t\t\t{firstItem.props.children}\n\t\t\t\t</PaginationItem>,\n\t\t\t);\n\t\t}\n\t\tresult.push(\n\t\t\t<span\n\t\t\t\tkey=\"start-ellipsis\"\n\t\t\t\tclassName=\"flex h-10 w-10 items-center justify-center text-gray-500\"\n\t\t\t>\n\t\t\t\t...\n\t\t\t</span>,\n\t\t);\n\t\t// Show last 4 pages\n\t\tfor (let i = paginationItems.length - 4; i < paginationItems.length; i++) {\n\t\t\tconst item = paginationItems[i];\n\t\t\tif (item) {\n\t\t\t\tresult.push(\n\t\t\t\t\t<PaginationItem key={`pagination-item-${i + 1}`} index={i + 1}>\n\t\t\t\t\t\t{item.props.children}\n\t\t\t\t\t</PaginationItem>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\t// Show truncated view for middle pages\n\telse {\n\t\t// Show first page\n\t\tconst firstItem = paginationItems[0];\n\t\tif (firstItem) {\n\t\t\tresult.push(\n\t\t\t\t<PaginationItem key=\"pagination-item-1\" index={1}>\n\t\t\t\t\t{firstItem.props.children}\n\t\t\t\t</PaginationItem>,\n\t\t\t);\n\t\t}\n\n\t\tresult.push(\n\t\t\t<span\n\t\t\t\tkey=\"start-ellipsis\"\n\t\t\t\tclassName=\"flex h-10 w-10 items-center justify-center text-gray-500\"\n\t\t\t>\n\t\t\t\t...\n\t\t\t</span>,\n\t\t);\n\n\t\t// Show 5 pages with current page in middle\n\t\tfor (let i = page - 2; i <= page + 2; i++) {\n\t\t\tif (i > 1 && i < paginationItems.length) {\n\t\t\t\tconst item = paginationItems[i - 1];\n\t\t\t\tif (item) {\n\t\t\t\t\tresult.push(\n\t\t\t\t\t\t<PaginationItem key={`pagination-item-${i}`} index={i}>\n\t\t\t\t\t\t\t{item.props.children}\n\t\t\t\t\t\t</PaginationItem>,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tresult.push(\n\t\t\t<span\n\t\t\t\tkey=\"end-ellipsis\"\n\t\t\t\tclassName=\"flex h-10 w-10 items-center justify-center text-gray-500\"\n\t\t\t>\n\t\t\t\t...\n\t\t\t</span>,\n\t\t);\n\n\t\tconst lastItem = paginationItems[paginationItems.length - 1];\n\t\tif (lastItem) {\n\t\t\tresult.push(\n\t\t\t\t<PaginationItem\n\t\t\t\t\tkey={`pagination-item-${paginationItems.length}`}\n\t\t\t\t\tindex={paginationItems.length}\n\t\t\t\t>\n\t\t\t\t\t{lastItem.props.children}\n\t\t\t\t</PaginationItem>,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Add remaining non-PaginationItem elements\n\twhile (currentIndex < elements.length) {\n\t\tconst element = elements[currentIndex];\n\t\tif (\n\t\t\t!isValidElement(element) ||\n\t\t\t(isValidElement(element) && element.type !== PaginationItem)\n\t\t) {\n\t\t\tresult.push(element);\n\t\t}\n\t\tcurrentIndex++;\n\t}\n\n\treturn result;\n};\n"]}
1
+ {"version":3,"file":"get-truncated-elements.js","sourceRoot":"/","sources":["utilities/pagination/get-truncated-elements.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n\tPaginationItem,\n\ttype PaginationItemProps,\n} from \"@components/pagination/pagination\";\nimport {\n\tChildren,\n\tisValidElement,\n\ttype ReactElement,\n\ttype ReactNode,\n} from \"react\";\n\ntype TruncatedElementsOptions = {\n\tpage: number;\n\tchildren: ReactNode;\n};\n\nexport const getTruncatedElements = ({\n\tpage,\n\tchildren,\n}: TruncatedElementsOptions) => {\n\tconst elements = Children.toArray(children);\n\tconst paginationItems = elements.filter(\n\t\t(el): el is ReactElement<PaginationItemProps> =>\n\t\t\tisValidElement(el) && el.type === PaginationItem,\n\t);\n\n\tif (paginationItems.length <= 7) {\n\t\treturn elements.map((element, index) => {\n\t\t\tif (isValidElement(element) && element.type === PaginationItem) {\n\t\t\t\tconst pageNumber =\n\t\t\t\t\telements\n\t\t\t\t\t\t.slice(0, index)\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t(el): el is ReactElement<PaginationItemProps> =>\n\t\t\t\t\t\t\t\tisValidElement(el) && el.type === PaginationItem,\n\t\t\t\t\t\t).length + 1;\n\t\t\t\tconst elementProps = element as ReactElement<PaginationItemProps>;\n\t\t\t\treturn (\n\t\t\t\t\t<PaginationItem\n\t\t\t\t\t\tkey={`pagination-item-${pageNumber}`}\n\t\t\t\t\t\tindex={pageNumber}\n\t\t\t\t\t>\n\t\t\t\t\t\t{elementProps.props.children}\n\t\t\t\t\t</PaginationItem>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn element;\n\t\t});\n\t}\n\n\tconst result: ReactNode[] = [];\n\tlet currentIndex = 0;\n\n\t// Add non-PaginationItem elements at the start\n\twhile (currentIndex < elements.length) {\n\t\tconst element = elements[currentIndex];\n\t\tif (\n\t\t\t!isValidElement(element) ||\n\t\t\t(isValidElement(element) && element.type !== PaginationItem)\n\t\t) {\n\t\t\tresult.push(element);\n\t\t\tcurrentIndex++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Always show first 4 pages when in that range\n\tif (page <= 4) {\n\t\t// Show first 4 pages\n\t\tfor (let i = 0; i < 4; i++) {\n\t\t\tconst item = paginationItems[i];\n\t\t\tif (item) {\n\t\t\t\tresult.push(\n\t\t\t\t\t<PaginationItem key={`pagination-item-${i + 1}`} index={i + 1}>\n\t\t\t\t\t\t{item.props.children}\n\t\t\t\t\t</PaginationItem>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (paginationItems.length > 4) {\n\t\t\tresult.push(\n\t\t\t\t<span\n\t\t\t\t\tkey=\"end-ellipsis\"\n\t\t\t\t\tclassName=\"flex h-10 w-10 items-center justify-center text-text-muted\"\n\t\t\t\t>\n\t\t\t\t\t...\n\t\t\t\t</span>,\n\t\t\t);\n\t\t\t// Show last page\n\t\t\tconst lastItem = paginationItems[paginationItems.length - 1];\n\t\t\tif (lastItem) {\n\t\t\t\tresult.push(\n\t\t\t\t\t<PaginationItem\n\t\t\t\t\t\tkey={`pagination-item-${paginationItems.length}`}\n\t\t\t\t\t\tindex={paginationItems.length}\n\t\t\t\t\t>\n\t\t\t\t\t\t{lastItem.props.children}\n\t\t\t\t\t</PaginationItem>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\t// Always show last 4 pages when in that range\n\telse if (page > paginationItems.length - 4) {\n\t\t// Show first page\n\t\tconst firstItem = paginationItems[0];\n\t\tif (firstItem) {\n\t\t\tresult.push(\n\t\t\t\t<PaginationItem key=\"pagination-item-1\" index={1}>\n\t\t\t\t\t{firstItem.props.children}\n\t\t\t\t</PaginationItem>,\n\t\t\t);\n\t\t}\n\t\tresult.push(\n\t\t\t<span\n\t\t\t\tkey=\"start-ellipsis\"\n\t\t\t\tclassName=\"flex h-10 w-10 items-center justify-center text-text-muted\"\n\t\t\t>\n\t\t\t\t...\n\t\t\t</span>,\n\t\t);\n\t\t// Show last 4 pages\n\t\tfor (let i = paginationItems.length - 4; i < paginationItems.length; i++) {\n\t\t\tconst item = paginationItems[i];\n\t\t\tif (item) {\n\t\t\t\tresult.push(\n\t\t\t\t\t<PaginationItem key={`pagination-item-${i + 1}`} index={i + 1}>\n\t\t\t\t\t\t{item.props.children}\n\t\t\t\t\t</PaginationItem>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\t// Show truncated view for middle pages\n\telse {\n\t\t// Show first page\n\t\tconst firstItem = paginationItems[0];\n\t\tif (firstItem) {\n\t\t\tresult.push(\n\t\t\t\t<PaginationItem key=\"pagination-item-1\" index={1}>\n\t\t\t\t\t{firstItem.props.children}\n\t\t\t\t</PaginationItem>,\n\t\t\t);\n\t\t}\n\n\t\tresult.push(\n\t\t\t<span\n\t\t\t\tkey=\"start-ellipsis\"\n\t\t\t\tclassName=\"flex h-10 w-10 items-center justify-center text-text-muted\"\n\t\t\t>\n\t\t\t\t...\n\t\t\t</span>,\n\t\t);\n\n\t\t// Show 5 pages with current page in middle\n\t\tfor (let i = page - 2; i <= page + 2; i++) {\n\t\t\tif (i > 1 && i < paginationItems.length) {\n\t\t\t\tconst item = paginationItems[i - 1];\n\t\t\t\tif (item) {\n\t\t\t\t\tresult.push(\n\t\t\t\t\t\t<PaginationItem key={`pagination-item-${i}`} index={i}>\n\t\t\t\t\t\t\t{item.props.children}\n\t\t\t\t\t\t</PaginationItem>,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tresult.push(\n\t\t\t<span\n\t\t\t\tkey=\"end-ellipsis\"\n\t\t\t\tclassName=\"flex h-10 w-10 items-center justify-center text-text-muted\"\n\t\t\t>\n\t\t\t\t...\n\t\t\t</span>,\n\t\t);\n\n\t\tconst lastItem = paginationItems[paginationItems.length - 1];\n\t\tif (lastItem) {\n\t\t\tresult.push(\n\t\t\t\t<PaginationItem\n\t\t\t\t\tkey={`pagination-item-${paginationItems.length}`}\n\t\t\t\t\tindex={paginationItems.length}\n\t\t\t\t>\n\t\t\t\t\t{lastItem.props.children}\n\t\t\t\t</PaginationItem>,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Add remaining non-PaginationItem elements\n\twhile (currentIndex < elements.length) {\n\t\tconst element = elements[currentIndex];\n\t\tif (\n\t\t\t!isValidElement(element) ||\n\t\t\t(isValidElement(element) && element.type !== PaginationItem)\n\t\t) {\n\t\t\tresult.push(element);\n\t\t}\n\t\tcurrentIndex++;\n\t}\n\n\treturn result;\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "luan-ui",
3
- "version": "0.6.2",
3
+ "version": "0.8.0",
4
4
  "description": "A UI library for React",
5
5
  "author": "benebene84 <benedikt.sperl@gmail.com> (https://github.com/benebene84)",
6
6
  "main": "/dist/index.js",
@@ -33,37 +33,37 @@
33
33
  },
34
34
  "homepage": "https://github.com/benebene84/luan-ui#readme",
35
35
  "devDependencies": {
36
- "@biomejs/biome": "2.4.4",
36
+ "@biomejs/biome": "2.4.7",
37
37
  "@chromatic-com/storybook": "^5.0.1",
38
- "@storybook/addon-docs": "^10.2.10",
39
- "@storybook/addon-onboarding": "^10.2.10",
40
- "@storybook/react-vite": "^10.2.10",
41
- "@tailwindcss/postcss": "^4.2.0",
42
- "@tailwindcss/vite": "^4.2.0",
38
+ "@storybook/addon-docs": "^10.2.19",
39
+ "@storybook/addon-onboarding": "^10.2.19",
40
+ "@storybook/react-vite": "^10.2.19",
41
+ "@tailwindcss/postcss": "^4.2.1",
42
+ "@tailwindcss/vite": "^4.2.1",
43
43
  "@testing-library/dom": "^10.4.1",
44
44
  "@testing-library/jest-dom": "^6.9.1",
45
45
  "@testing-library/react": "^16.3.2",
46
46
  "@testing-library/user-event": "^14.6.1",
47
- "@types/node": "^25.3.0",
47
+ "@types/node": "^25.5.0",
48
48
  "@types/react": "^19.2.14",
49
49
  "@types/react-dom": "^19.2.3",
50
- "@vitejs/plugin-react": "^5.1.4",
51
- "jsdom": "^28.1.0",
52
- "lefthook": "^2.1.1",
50
+ "@vitejs/plugin-react": "^6.0.1",
51
+ "jsdom": "^29.0.0",
52
+ "lefthook": "^2.1.4",
53
53
  "responsive-class-variants": "^1.3.2",
54
- "storybook": "^10.2.10",
55
- "tailwindcss": "^4.2.0",
54
+ "storybook": "^10.2.19",
55
+ "tailwindcss": "^4.2.1",
56
56
  "tsc-alias": "^1.8.16",
57
57
  "typescript": "^5.9.3",
58
- "vite": "^7.3.1",
59
- "vitest": "^4.0.18"
58
+ "vite": "^8.0.0",
59
+ "vitest": "^4.1.0"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "react": "^19.0.0",
63
63
  "react-dom": "^19.0.0"
64
64
  },
65
65
  "dependencies": {
66
- "@base-ui/react": "^1.2.0",
66
+ "@base-ui/react": "^1.3.0",
67
67
  "@radix-ui/react-icons": "^1.3.2",
68
68
  "clsx": "^2.1.1",
69
69
  "sonner": "^2.0.7",