luan-ui 0.5.3 → 0.6.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 (102) hide show
  1. package/README.md +7 -3
  2. package/dist/components/accordion/accordion.d.ts +14 -15
  3. package/dist/components/accordion/accordion.js +11 -9
  4. package/dist/components/accordion/accordion.js.map +1 -1
  5. package/dist/components/alert/alert.d.ts +19 -18
  6. package/dist/components/alert/alert.js +34 -14
  7. package/dist/components/alert/alert.js.map +1 -1
  8. package/dist/components/alert-dialog/alert-dialog.d.ts +14 -9
  9. package/dist/components/alert-dialog/alert-dialog.js +21 -15
  10. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  11. package/dist/components/avatar/avatar-group.d.ts +3 -2
  12. package/dist/components/avatar/avatar-group.js +4 -4
  13. package/dist/components/avatar/avatar-group.js.map +1 -1
  14. package/dist/components/avatar/avatar.d.ts +8 -4
  15. package/dist/components/avatar/avatar.js +10 -8
  16. package/dist/components/avatar/avatar.js.map +1 -1
  17. package/dist/components/badge/badge.d.ts +12 -5
  18. package/dist/components/badge/badge.js +18 -7
  19. package/dist/components/badge/badge.js.map +1 -1
  20. package/dist/components/button/button.d.ts +24 -18
  21. package/dist/components/button/button.js +30 -15
  22. package/dist/components/button/button.js.map +1 -1
  23. package/dist/components/card/card.d.ts +32 -19
  24. package/dist/components/card/card.js +51 -19
  25. package/dist/components/card/card.js.map +1 -1
  26. package/dist/components/checkbox/checkbox.d.ts +6 -7
  27. package/dist/components/checkbox/checkbox.js +6 -8
  28. package/dist/components/checkbox/checkbox.js.map +1 -1
  29. package/dist/components/dialog/dialog.d.ts +16 -9
  30. package/dist/components/dialog/dialog.js +23 -18
  31. package/dist/components/dialog/dialog.js.map +1 -1
  32. package/dist/components/drawer/drawer.d.ts +19 -9
  33. package/dist/components/drawer/drawer.js +31 -25
  34. package/dist/components/drawer/drawer.js.map +1 -1
  35. package/dist/components/dropdown-menu/dropdown-menu.d.ts +30 -21
  36. package/dist/components/dropdown-menu/dropdown-menu.js +35 -30
  37. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  38. package/dist/components/form-field/form-field.d.ts +4 -8
  39. package/dist/components/form-field/form-field.js +3 -4
  40. package/dist/components/form-field/form-field.js.map +1 -1
  41. package/dist/components/form-helper/form-helper.d.ts +4 -6
  42. package/dist/components/form-helper/form-helper.js +2 -3
  43. package/dist/components/form-helper/form-helper.js.map +1 -1
  44. package/dist/components/icon/icon.d.ts +9 -15
  45. package/dist/components/icon/icon.js +20 -19
  46. package/dist/components/icon/icon.js.map +1 -1
  47. package/dist/components/input/input.d.ts +4 -4
  48. package/dist/components/input/input.js +2 -4
  49. package/dist/components/input/input.js.map +1 -1
  50. package/dist/components/label/label.d.ts +3 -4
  51. package/dist/components/label/label.js +5 -6
  52. package/dist/components/label/label.js.map +1 -1
  53. package/dist/components/pagination/pagination.d.ts +25 -21
  54. package/dist/components/pagination/pagination.js +30 -19
  55. package/dist/components/pagination/pagination.js.map +1 -1
  56. package/dist/components/popover/popover.d.ts +30 -14
  57. package/dist/components/popover/popover.js +30 -22
  58. package/dist/components/popover/popover.js.map +1 -1
  59. package/dist/components/progress/progress.d.ts +4 -6
  60. package/dist/components/progress/progress.js +4 -6
  61. package/dist/components/progress/progress.js.map +1 -1
  62. package/dist/components/radio-group/radio-group.d.ts +8 -7
  63. package/dist/components/radio-group/radio-group.js +8 -35
  64. package/dist/components/radio-group/radio-group.js.map +1 -1
  65. package/dist/components/select/select.d.ts +26 -15
  66. package/dist/components/select/select.js +28 -50
  67. package/dist/components/select/select.js.map +1 -1
  68. package/dist/components/skeleton/skeleton.d.ts +3 -1
  69. package/dist/components/skeleton/skeleton.js +3 -6
  70. package/dist/components/skeleton/skeleton.js.map +1 -1
  71. package/dist/components/slider/slider.d.ts +7 -14
  72. package/dist/components/slider/slider.js +23 -13
  73. package/dist/components/slider/slider.js.map +1 -1
  74. package/dist/components/switch/switch.d.ts +7 -7
  75. package/dist/components/switch/switch.js +8 -10
  76. package/dist/components/switch/switch.js.map +1 -1
  77. package/dist/components/table/table.d.ts +17 -8
  78. package/dist/components/table/table.js +24 -41
  79. package/dist/components/table/table.js.map +1 -1
  80. package/dist/components/tabs/tabs.d.ts +9 -5
  81. package/dist/components/tabs/tabs.js +10 -8
  82. package/dist/components/tabs/tabs.js.map +1 -1
  83. package/dist/components/text-area/text-area.d.ts +3 -5
  84. package/dist/components/text-area/text-area.js +2 -4
  85. package/dist/components/text-area/text-area.js.map +1 -1
  86. package/dist/components/toast/toast.d.ts +4 -10
  87. package/dist/components/toast/toast.js +4 -7
  88. package/dist/components/toast/toast.js.map +1 -1
  89. package/dist/components/tooltip/tooltip.d.ts +18 -9
  90. package/dist/components/tooltip/tooltip.js +21 -20
  91. package/dist/components/tooltip/tooltip.js.map +1 -1
  92. package/dist/index.d.ts +2 -2
  93. package/dist/index.js +2 -2
  94. package/dist/index.js.map +1 -1
  95. package/dist/styles/index.css +2 -2
  96. package/dist/utilities/merge-refs/merge-refs.d.ts +2 -2
  97. package/dist/utilities/merge-refs/merge-refs.js +1 -1
  98. package/dist/utilities/merge-refs/merge-refs.js.map +1 -1
  99. package/package.json +71 -72
  100. package/dist/components/slot/slot.d.ts +0 -13
  101. package/dist/components/slot/slot.js +0 -70
  102. package/dist/components/slot/slot.js.map +0 -1
@@ -1,7 +1,5 @@
1
- import { type ComponentPropsWithoutRef } from "react";
2
- export type TextareaProps = ComponentPropsWithoutRef<"textarea"> & {
1
+ import type { ComponentProps } from "react";
2
+ export type TextareaProps = ComponentProps<"textarea"> & {
3
3
  error?: boolean;
4
4
  };
5
- export declare const Textarea: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "ref"> & {
6
- error?: boolean;
7
- } & import("react").RefAttributes<HTMLTextAreaElement>>;
5
+ export declare function Textarea({ className, error, disabled, ref, ...props }: TextareaProps): import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { getVariants } from "../../utilities/responsive/responsive";
3
- import { forwardRef } from "react";
4
3
  const textAreaStyles = getVariants({
5
4
  base: "w-full rounded-md border border-gray-300 p-2 focus-visible:outline focus-visible:outline-gray-800",
6
5
  variants: {
@@ -19,12 +18,11 @@ const textAreaStyles = getVariants({
19
18
  },
20
19
  ],
21
20
  });
22
- export const Textarea = forwardRef(({ className, error, disabled, ...props }, ref) => {
21
+ export function Textarea({ className, error, disabled, ref, ...props }) {
23
22
  return (_jsx("textarea", { ref: ref, className: textAreaStyles({
24
23
  className,
25
24
  error,
26
25
  disabled,
27
26
  }), disabled: disabled, ...props }));
28
- });
29
- Textarea.displayName = "Textarea";
27
+ }
30
28
  //# sourceMappingURL=text-area.js.map
@@ -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;AAC/D,OAAO,EAAiC,UAAU,EAAE,MAAM,OAAO,CAAC;AAMlE,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,CAAC,MAAM,QAAQ,GAAG,UAAU,CACjC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACjD,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,CACD,CAAC;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC","sourcesContent":["import { getVariants } from \"@utilities/responsive/responsive\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\n\nexport type TextareaProps = ComponentPropsWithoutRef<\"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 const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n\t({ className, error, disabled, ...props }, ref) => {\n\t\treturn (\n\t\t\t<textarea\n\t\t\t\tref={ref}\n\t\t\t\tclassName={textAreaStyles({\n\t\t\t\t\tclassName,\n\t\t\t\t\terror,\n\t\t\t\t\tdisabled,\n\t\t\t\t})}\n\t\t\t\tdisabled={disabled}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nTextarea.displayName = \"Textarea\";\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,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,3 +1,4 @@
1
+ import type { Ref } from "react";
1
2
  import { type ToasterProps } from "sonner";
2
3
  export type ToastProps = {
3
4
  id: string | number;
@@ -7,6 +8,7 @@ export type ToastProps = {
7
8
  label: string;
8
9
  onClick: () => void;
9
10
  };
11
+ ref?: Ref<HTMLDivElement>;
10
12
  } & Omit<ToasterProps, "id">;
11
13
  /**
12
14
  * Creates a custom toast notification using the sonner toast library
@@ -18,16 +20,8 @@ export type ToastProps = {
18
20
  * @param toast.button.onClick - Click handler function for the action button
19
21
  * @returns A unique identifier for the created toast
20
22
  */
21
- declare const toast: (toast: Omit<ToastProps, "id">) => string | number;
23
+ declare function toast(toast: Omit<ToastProps, "id">): string | number;
22
24
  declare const Toaster: import("react").ForwardRefExoticComponent<ToasterProps & import("react").RefAttributes<HTMLElement>>;
23
25
  /** A fully custom toast built on top of sonner. */
24
- declare const Toast: import("react").ForwardRefExoticComponent<{
25
- id: string | number;
26
- title: string;
27
- description: string;
28
- button: {
29
- label: string;
30
- onClick: () => void;
31
- };
32
- } & Omit<ToasterProps, "id"> & import("react").RefAttributes<HTMLDivElement>>;
26
+ declare function Toast({ title, description, button, id, ref }: ToastProps): import("react/jsx-runtime").JSX.Element;
33
27
  export { toast, Toast, Toaster };
@@ -1,5 +1,4 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { forwardRef } from "react";
3
2
  import { Toaster as SonnerToaster, toast as sonnerToast, } from "sonner";
4
3
  import { Button } from "../button/button";
5
4
  /**
@@ -12,22 +11,20 @@ import { Button } from "../button/button";
12
11
  * @param toast.button.onClick - Click handler function for the action button
13
12
  * @returns A unique identifier for the created toast
14
13
  */
15
- const toast = (toast) => {
14
+ function toast(toast) {
16
15
  const { title, description, button, ...toastOptions } = toast;
17
16
  return sonnerToast.custom((id) => (_jsx(Toast, { id: id, title: title, description: description, button: {
18
17
  label: button.label,
19
18
  onClick: button.onClick,
20
19
  }, ...toastOptions })));
21
- };
20
+ }
22
21
  const Toaster = SonnerToaster;
23
- Toaster.displayName = "Toaster";
24
22
  /** A fully custom toast built on top of sonner. */
25
- const Toast = forwardRef(({ title, description, button, id }, ref) => {
23
+ function Toast({ title, description, button, id, ref }) {
26
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: () => {
27
25
  button.onClick();
28
26
  sonnerToast.dismiss(id);
29
27
  }, children: button.label }) })] }));
30
- });
31
- Toast.displayName = "Toast";
28
+ }
32
29
  export { toast, Toast, Toaster };
33
30
  //# sourceMappingURL=toast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","sourceRoot":"/","sources":["components/toast/toast.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EACN,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,WAAW,GAEpB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAY1C;;;;;;;;;GASG;AACH,MAAM,KAAK,GAAG,CAAC,KAA6B,EAAE,EAAE;IAC/C,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,CAAC;AAEF,MAAM,OAAO,GAAG,aAAa,CAAC;AAE9B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;AAEhC,mDAAmD;AACnD,MAAM,KAAK,GAAG,UAAU,CACvB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;IAC3C,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,CACD,CAAC;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC","sourcesContent":["import { forwardRef } 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} & 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 */\nconst 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\nToaster.displayName = \"Toaster\";\n\n/** A fully custom toast built on top of sonner. */\nconst Toast = forwardRef<HTMLDivElement, ToastProps>(\n\t({ title, description, button, id }, ref) => {\n\t\treturn (\n\t\t\t<div\n\t\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\t\tref={ref}\n\t\t\t>\n\t\t\t\t<div className=\"flex flex-1 items-center\">\n\t\t\t\t\t<div className=\"w-full gap-1\">\n\t\t\t\t\t\t<p className=\"font-medium text-gray-900 text-sm\">{title}</p>\n\t\t\t\t\t\t<p className=\"text-gray-500 text-sm\">{description}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"shrink-0 rounded-md font-medium text-sm\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tbutton.onClick();\n\t\t\t\t\t\t\tsonnerToast.dismiss(id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{button.label}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nToast.displayName = \"Toast\";\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,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,17 +1,22 @@
1
- import { Tooltip as RadixTooltip } from "radix-ui";
1
+ import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
2
+ import type { ComponentProps } from "react";
2
3
  /**
3
4
  * Tooltip
4
5
  */
5
- export type TooltipProps = React.ComponentProps<typeof RadixTooltip.Root> & {
6
+ export type TooltipProps = ComponentProps<typeof TooltipPrimitive.Root> & {
6
7
  showArrow?: boolean;
7
- side?: RadixTooltip.TooltipContentProps["side"];
8
+ side?: "top" | "right" | "bottom" | "left";
9
+ sideOffset?: number;
10
+ delayDuration?: number;
8
11
  };
9
12
  /**
10
- * A tooltip component built on top of Radix UI's tooltip primitive.
13
+ * A tooltip component built on top of Base UI's tooltip primitive.
11
14
  *
12
15
  * @param {TooltipProps} props - The props for the Tooltip component
13
16
  * @param {boolean} [props.showArrow=true] - Whether to show the arrow pointing to the trigger
14
- * @param {RadixTooltip.TooltipContentProps["side"]} [props.side] - The preferred side to show the tooltip
17
+ * @param {"top" | "right" | "bottom" | "left"} [props.side] - The preferred side to show the tooltip
18
+ * @param {number} [props.sideOffset=10] - Distance between the anchor and the popup
19
+ * @param {number} [props.delayDuration=600] - How long to wait before opening the tooltip (in ms)
15
20
  *
16
21
  * @example
17
22
  * ```tsx
@@ -21,15 +26,19 @@ export type TooltipProps = React.ComponentProps<typeof RadixTooltip.Root> & {
21
26
  * </Tooltip>
22
27
  * ```
23
28
  */
24
- declare const Tooltip: ({ children, showArrow, side, ...props }: TooltipProps) => import("react/jsx-runtime").JSX.Element;
29
+ declare function Tooltip({ children, showArrow, side, sideOffset, delayDuration, ...props }: TooltipProps): import("react/jsx-runtime").JSX.Element;
25
30
  /**
26
31
  * Tooltip Trigger
27
32
  */
28
- declare const TooltipTrigger: import("react").ForwardRefExoticComponent<RadixTooltip.TooltipTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
33
+ export type TooltipTriggerProps = ComponentProps<typeof TooltipPrimitive.Trigger> & {
34
+ render?: React.ReactElement;
35
+ };
36
+ declare function TooltipTrigger({ render, children, ref, ...props }: TooltipTriggerProps): import("react/jsx-runtime").JSX.Element;
29
37
  /**
30
38
  * Tooltip Content
31
39
  */
32
- declare const TooltipContent: import("react").ForwardRefExoticComponent<Omit<RadixTooltip.TooltipContentProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
40
+ export type TooltipContentProps = ComponentProps<typeof TooltipPrimitive.Popup> & {
33
41
  showArrow?: boolean;
34
- } & import("react").RefAttributes<HTMLDivElement>>;
42
+ };
43
+ declare function TooltipContent({ className, children, ref, ...props }: TooltipContentProps): import("react/jsx-runtime").JSX.Element;
35
44
  export { Tooltip, TooltipTrigger, TooltipContent };
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
2
3
  import { cn } from "../../utilities/cn/cn";
3
- import { Tooltip as RadixTooltip } from "radix-ui";
4
- import { createContext, forwardRef, useContext, useMemo } from "react";
4
+ import { createContext, useContext, useMemo } from "react";
5
5
  const TooltipContext = createContext(undefined);
6
6
  const useTooltipContext = () => {
7
7
  const context = useContext(TooltipContext);
@@ -11,11 +11,13 @@ const useTooltipContext = () => {
11
11
  return context;
12
12
  };
13
13
  /**
14
- * A tooltip component built on top of Radix UI's tooltip primitive.
14
+ * A tooltip component built on top of Base UI's tooltip primitive.
15
15
  *
16
16
  * @param {TooltipProps} props - The props for the Tooltip component
17
17
  * @param {boolean} [props.showArrow=true] - Whether to show the arrow pointing to the trigger
18
- * @param {RadixTooltip.TooltipContentProps["side"]} [props.side] - The preferred side to show the tooltip
18
+ * @param {"top" | "right" | "bottom" | "left"} [props.side] - The preferred side to show the tooltip
19
+ * @param {number} [props.sideOffset=10] - Distance between the anchor and the popup
20
+ * @param {number} [props.delayDuration=600] - How long to wait before opening the tooltip (in ms)
19
21
  *
20
22
  * @example
21
23
  * ```tsx
@@ -25,24 +27,23 @@ const useTooltipContext = () => {
25
27
  * </Tooltip>
26
28
  * ```
27
29
  */
28
- const Tooltip = ({ children, showArrow = true, side, ...props }) => {
30
+ function Tooltip({ children, showArrow = true, side, sideOffset = 10, delayDuration = 600, ...props }) {
29
31
  const contextValue = useMemo(() => ({
30
32
  showArrow,
31
33
  side,
32
- }), [showArrow, side]);
33
- return (_jsx(TooltipContext.Provider, { value: contextValue, children: _jsx(RadixTooltip.Provider, { children: _jsx(RadixTooltip.Root, { ...props, children: children }) }) }));
34
- };
35
- /**
36
- * Tooltip Trigger
37
- */
38
- const TooltipTrigger = RadixTooltip.Trigger;
39
- /**
40
- * Tooltip Content
41
- */
42
- const TooltipContent = forwardRef(({ className, sideOffset = 4, children, ...props }, ref) => {
43
- const { showArrow, side } = useTooltipContext();
44
- return (_jsxs(RadixTooltip.Content, { className: cn("relative z-50 w-fit max-w-72 rounded-md bg-gray-700 p-2 text-sm text-white shadow-md", className), sideOffset: sideOffset, side: side, ...props, ref: ref, children: [children, showArrow && _jsx(RadixTooltip.Arrow, { className: "fill-gray-700" })] }));
45
- });
46
- TooltipContent.displayName = RadixTooltip.Content.displayName;
34
+ sideOffset,
35
+ }), [showArrow, side, sideOffset]);
36
+ return (_jsx(TooltipContext.Provider, { value: contextValue, children: _jsx(TooltipPrimitive.Provider, { delay: delayDuration, children: _jsx(TooltipPrimitive.Root, { ...props, children: children }) }) }));
37
+ }
38
+ function TooltipTrigger({ render, children, ref, ...props }) {
39
+ if (render) {
40
+ return (_jsx(TooltipPrimitive.Trigger, { ref: ref, render: render, ...props, children: children }));
41
+ }
42
+ return (_jsx(TooltipPrimitive.Trigger, { ref: ref, ...props, children: children }));
43
+ }
44
+ function TooltipContent({ className, children, ref, ...props }) {
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" }) }))] }) }) }));
47
+ }
47
48
  export { Tooltip, TooltipTrigger, TooltipContent };
48
49
  //# sourceMappingURL=tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sourceRoot":"/","sources":["components/tooltip/tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAWvE,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;AAWF;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,GAAG,CAAC,EAChB,QAAQ,EACR,SAAS,GAAG,IAAI,EAChB,IAAI,EACJ,GAAG,KAAK,EACM,EAAE,EAAE;IAClB,MAAM,YAAY,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,CAAC;QACN,SAAS;QACT,IAAI;KACJ,CAAC,EACF,CAAC,SAAS,EAAE,IAAI,CAAC,CACjB,CAAC;IACF,OAAO,CACN,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC3C,KAAC,YAAY,CAAC,QAAQ,cACrB,KAAC,YAAY,CAAC,IAAI,OAAK,KAAK,YAAG,QAAQ,GAAqB,GACrC,GACC,CAC1B,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AAEH,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC;AAE5C;;GAEG;AAEH,MAAM,cAAc,GAAG,UAAU,CAK/B,CAAC,EAAE,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC5D,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAChD,OAAO,CACN,MAAC,YAAY,CAAC,OAAO,IACpB,SAAS,EAAE,EAAE,CACZ,sFAAsF,EACtF,SAAS,CACT,EACD,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,KACN,KAAK,EACT,GAAG,EAAE,GAAG,aAEP,QAAQ,EACR,SAAS,IAAI,KAAC,YAAY,CAAC,KAAK,IAAC,SAAS,EAAC,eAAe,GAAG,IACxC,CACvB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,cAAc,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import { cn } from \"@utilities/cn/cn\";\nimport { Tooltip as RadixTooltip } from \"radix-ui\";\nimport { createContext, forwardRef, useContext, useMemo } from \"react\";\n\n/**\n * Tooltip Context\n */\n\ntype TooltipContextType = {\n\tshowArrow?: boolean;\n\tside?: RadixTooltip.TooltipContentProps[\"side\"];\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 = React.ComponentProps<typeof RadixTooltip.Root> & {\n\tshowArrow?: boolean;\n\tside?: RadixTooltip.TooltipContentProps[\"side\"];\n};\n\n/**\n * A tooltip component built on top of Radix 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 {RadixTooltip.TooltipContentProps[\"side\"]} [props.side] - The preferred side to show the tooltip\n *\n * @example\n * ```tsx\n * <Tooltip>\n * <TooltipTrigger>Hover me</TooltipTrigger>\n * <TooltipContent>Tooltip content</TooltipContent>\n * </Tooltip>\n * ```\n */\nconst Tooltip = ({\n\tchildren,\n\tshowArrow = true,\n\tside,\n\t...props\n}: TooltipProps) => {\n\tconst contextValue = useMemo(\n\t\t() => ({\n\t\t\tshowArrow,\n\t\t\tside,\n\t\t}),\n\t\t[showArrow, side],\n\t);\n\treturn (\n\t\t<TooltipContext.Provider value={contextValue}>\n\t\t\t<RadixTooltip.Provider>\n\t\t\t\t<RadixTooltip.Root {...props}>{children}</RadixTooltip.Root>\n\t\t\t</RadixTooltip.Provider>\n\t\t</TooltipContext.Provider>\n\t);\n};\n\n/**\n * Tooltip Trigger\n */\n\nconst TooltipTrigger = RadixTooltip.Trigger;\n\n/**\n * Tooltip Content\n */\n\nconst TooltipContent = forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof RadixTooltip.Content> & {\n\t\tshowArrow?: boolean;\n\t}\n>(({ className, sideOffset = 4, children, ...props }, ref) => {\n\tconst { showArrow, side } = useTooltipContext();\n\treturn (\n\t\t<RadixTooltip.Content\n\t\t\tclassName={cn(\n\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\tclassName,\n\t\t\t)}\n\t\t\tsideOffset={sideOffset}\n\t\t\tside={side}\n\t\t\t{...props}\n\t\t\tref={ref}\n\t\t>\n\t\t\t{children}\n\t\t\t{showArrow && <RadixTooltip.Arrow className=\"fill-gray-700\" />}\n\t\t</RadixTooltip.Content>\n\t);\n});\n\nTooltipContent.displayName = RadixTooltip.Content.displayName;\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,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"]}
package/dist/index.d.ts CHANGED
@@ -28,7 +28,7 @@ export { Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, Po
28
28
  export type { ProgressProps } from "./components/progress/progress";
29
29
  export { Progress } from "./components/progress/progress";
30
30
  export { RadioGroup, RadioGroupItem, } from "./components/radio-group/radio-group";
31
- export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, } from "./components/select/select";
31
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, } from "./components/select/select";
32
32
  export { Skeleton } from "./components/skeleton/skeleton";
33
33
  export type { SliderProps } from "./components/slider/slider";
34
34
  export { Slider } from "./components/slider/slider";
@@ -39,6 +39,6 @@ export { Tabs, TabsContent, TabsList, TabsTrigger, } from "./components/tabs/tab
39
39
  export type { TextareaProps } from "./components/text-area/text-area";
40
40
  export { Textarea } from "./components/text-area/text-area";
41
41
  export type { ToastProps } from "./components/toast/toast";
42
- export { Toast, Toaster, toast, } from "./components/toast/toast";
42
+ export { Toast, Toaster, toast } from "./components/toast/toast";
43
43
  export type { TooltipProps } from "./components/tooltip/tooltip";
44
44
  export { Tooltip, TooltipContent, TooltipTrigger, } from "./components/tooltip/tooltip";
package/dist/index.js CHANGED
@@ -16,13 +16,13 @@ export { Pagination, PaginationItem, PaginationNext, PaginationPrev, } from "./c
16
16
  export { Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, } from "./components/popover/popover";
17
17
  export { Progress } from "./components/progress/progress";
18
18
  export { RadioGroup, RadioGroupItem, } from "./components/radio-group/radio-group";
19
- export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, } from "./components/select/select";
19
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, } from "./components/select/select";
20
20
  export { Skeleton } from "./components/skeleton/skeleton";
21
21
  export { Slider } from "./components/slider/slider";
22
22
  export { Switch } from "./components/switch/switch";
23
23
  export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, } from "./components/table/table";
24
24
  export { Tabs, TabsContent, TabsList, TabsTrigger, } from "./components/tabs/tabs";
25
25
  export { Textarea } from "./components/text-area/text-area";
26
- export { Toast, Toaster, toast, } from "./components/toast/toast";
26
+ export { Toast, Toaster, toast } from "./components/toast/toast";
27
27
  export { Tooltip, TooltipContent, TooltipTrigger, } from "./components/tooltip/tooltip";
28
28
  //# sourceMappingURL=index.js.map
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,sBAAsB,EACtB,oBAAoB,EACpB,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,EACN,KAAK,EACL,OAAO,EACP,KAAK,GACL,MAAM,yBAAyB,CAAC;AAEjC,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\tSelectScrollDownButton,\n\tSelectScrollUpButton,\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 {\n\tToast,\n\tToaster,\n\ttoast,\n} 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":"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"]}
@@ -21,7 +21,7 @@
21
21
 
22
22
  @keyframes accordion-up {
23
23
  from {
24
- height: var(--radix-accordion-content-height);
24
+ height: var(--accordion-panel-height);
25
25
  }
26
26
  to {
27
27
  height: 0;
@@ -33,7 +33,7 @@
33
33
  height: 0;
34
34
  }
35
35
  to {
36
- height: var(--radix-accordion-content-height);
36
+ height: var(--accordion-panel-height);
37
37
  }
38
38
  }
39
39
 
@@ -1,2 +1,2 @@
1
- import type { RefObject } from "react";
2
- export declare const mergeRefs: <T>(...refs: (RefObject<T> | ((node: T) => void) | null)[]) => (node: T) => void;
1
+ import type { Ref, RefCallback } from "react";
2
+ export declare const mergeRefs: <T>(...refs: (Ref<T> | undefined)[]) => RefCallback<T>;
@@ -5,7 +5,7 @@ export const mergeRefs = (...refs) => {
5
5
  continue;
6
6
  if (typeof ref === "function")
7
7
  ref(node);
8
- else if (ref)
8
+ else if (ref && typeof ref === "object" && "current" in ref)
9
9
  ref.current = node;
10
10
  }
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"merge-refs.js","sourceRoot":"/","sources":["utilities/merge-refs/merge-refs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,CACxB,GAAG,IAAmD,EACrD,EAAE;IACH,OAAO,CAAC,IAAO,EAAE,EAAE;QAClB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,OAAO,GAAG,KAAK,UAAU;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;iBACpC,IAAI,GAAG;gBAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QAClC,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC","sourcesContent":["import type { RefObject } from \"react\";\n\nexport const mergeRefs = <T>(\n\t...refs: (RefObject<T> | ((node: T) => void) | null)[]\n) => {\n\treturn (node: T) => {\n\t\tfor (const ref of refs) {\n\t\t\tif (!ref) continue;\n\t\t\tif (typeof ref === \"function\") ref(node);\n\t\t\telse if (ref) ref.current = node;\n\t\t}\n\t};\n};\n"]}
1
+ {"version":3,"file":"merge-refs.js","sourceRoot":"/","sources":["utilities/merge-refs/merge-refs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,CACxB,GAAG,IAA4B,EACd,EAAE;IACnB,OAAO,CAAC,IAAO,EAAE,EAAE;QAClB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,OAAO,GAAG,KAAK,UAAU;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;iBACpC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,IAAI,GAAG;gBACzD,GAA2B,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9C,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC","sourcesContent":["import type { Ref, RefCallback, RefObject } from \"react\";\n\nexport const mergeRefs = <T>(\n\t...refs: (Ref<T> | undefined)[]\n): RefCallback<T> => {\n\treturn (node: T) => {\n\t\tfor (const ref of refs) {\n\t\t\tif (!ref) continue;\n\t\t\tif (typeof ref === \"function\") ref(node);\n\t\t\telse if (ref && typeof ref === \"object\" && \"current\" in ref)\n\t\t\t\t(ref as RefObject<T | null>).current = node;\n\t\t}\n\t};\n};\n"]}
package/package.json CHANGED
@@ -1,74 +1,73 @@
1
1
  {
2
- "name": "luan-ui",
3
- "version": "0.5.3",
4
- "description": "A UI library for React",
5
- "author": "benebene84 <benedikt.sperl@gmail.com> (https://github.com/benebene84)",
6
- "main": "/dist/index.js",
7
- "type": "module",
8
- "types": "./dist/index.d.ts",
9
- "files": [
10
- "dist",
11
- "README.md",
12
- "LICENSE"
13
- ],
14
- "scripts": {
15
- "build": "node --experimental-strip-types scripts/build.ts",
16
- "dev": "storybook dev -p 6006",
17
- "build-storybook": "storybook build",
18
- "check": "biome check",
19
- "fix": "biome check --write",
20
- "fix:unsafe": "biome check --write --unsafe",
21
- "lint": "biome lint",
22
- "format": "biome format --write",
23
- "test": "vitest",
24
- "test:ci": "vitest --run"
25
- },
26
- "repository": {
27
- "type": "git",
28
- "url": "git+https://github.com/benebene84/luan-ui.git"
29
- },
30
- "license": "MIT",
31
- "bugs": {
32
- "url": "https://github.com/benebene84/luan-ui/issues"
33
- },
34
- "homepage": "https://github.com/benebene84/luan-ui#readme",
35
- "devDependencies": {
36
- "@biomejs/biome": "2.3.5",
37
- "@chromatic-com/storybook": "^4.1.2",
38
- "@storybook/addon-docs": "^10.0.7",
39
- "@storybook/addon-onboarding": "^10.0.7",
40
- "@storybook/react-vite": "^10.0.7",
41
- "@tailwindcss/postcss": "^4.1.17",
42
- "@tailwindcss/vite": "^4.1.17",
43
- "@testing-library/dom": "^10.4.1",
44
- "@testing-library/jest-dom": "^6.9.1",
45
- "@testing-library/react": "^16.3.0",
46
- "@testing-library/user-event": "^14.6.1",
47
- "@types/node": "^24.10.1",
48
- "@types/react": "^19.2.5",
49
- "@types/react-dom": "^19.2.3",
50
- "@vitejs/plugin-react": "^5.1.1",
51
- "jsdom": "^27.2.0",
52
- "lefthook": "^2.0.4",
53
- "responsive-class-variants": "^1.2.3",
54
- "storybook": "^10.0.7",
55
- "tailwindcss": "^4.1.17",
56
- "tsc-alias": "^1.8.16",
57
- "typescript": "^5.9.3",
58
- "vite": "^7.2.2",
59
- "vitest": "^4.0.9"
60
- },
61
- "peerDependencies": {
62
- "react": "^18.0.0 || ^19.0.0",
63
- "react-dom": "^18.0.0 || ^19.0.0"
64
- },
65
- "dependencies": {
66
- "@radix-ui/react-compose-refs": "^1.1.2",
67
- "@radix-ui/react-icons": "^1.3.2",
68
- "clsx": "^2.1.1",
69
- "radix-ui": "^1.4.3",
70
- "sonner": "^2.0.7",
71
- "tailwind-merge": "^3.4.0"
72
- },
73
- "packageManager": "pnpm@9.14.2"
2
+ "name": "luan-ui",
3
+ "version": "0.6.0",
4
+ "description": "A UI library for React",
5
+ "author": "benebene84 <benedikt.sperl@gmail.com> (https://github.com/benebene84)",
6
+ "main": "/dist/index.js",
7
+ "type": "module",
8
+ "types": "./dist/index.d.ts",
9
+ "files": [
10
+ "dist",
11
+ "README.md",
12
+ "LICENSE"
13
+ ],
14
+ "scripts": {
15
+ "build": "node --experimental-strip-types scripts/build.ts",
16
+ "dev": "storybook dev -p 6006",
17
+ "build-storybook": "storybook build",
18
+ "check": "biome check",
19
+ "fix": "biome check --write",
20
+ "fix:unsafe": "biome check --write --unsafe",
21
+ "lint": "biome lint",
22
+ "format": "biome format --write",
23
+ "test": "vitest",
24
+ "test:ci": "vitest --run"
25
+ },
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/benebene84/luan-ui.git"
29
+ },
30
+ "license": "MIT",
31
+ "bugs": {
32
+ "url": "https://github.com/benebene84/luan-ui/issues"
33
+ },
34
+ "homepage": "https://github.com/benebene84/luan-ui#readme",
35
+ "devDependencies": {
36
+ "@biomejs/biome": "2.3.9",
37
+ "@chromatic-com/storybook": "^4.1.3",
38
+ "@storybook/addon-docs": "^10.1.9",
39
+ "@storybook/addon-onboarding": "^10.1.9",
40
+ "@storybook/react-vite": "^10.1.9",
41
+ "@tailwindcss/postcss": "^4.1.18",
42
+ "@tailwindcss/vite": "^4.1.18",
43
+ "@testing-library/dom": "^10.4.1",
44
+ "@testing-library/jest-dom": "^6.9.1",
45
+ "@testing-library/react": "^16.3.1",
46
+ "@testing-library/user-event": "^14.6.1",
47
+ "@types/node": "^25.0.2",
48
+ "@types/react": "^19.2.7",
49
+ "@types/react-dom": "^19.2.3",
50
+ "@vitejs/plugin-react": "^5.1.2",
51
+ "jsdom": "^27.3.0",
52
+ "lefthook": "^2.0.12",
53
+ "responsive-class-variants": "^1.2.3",
54
+ "storybook": "^10.1.9",
55
+ "tailwindcss": "^4.1.18",
56
+ "tsc-alias": "^1.8.16",
57
+ "typescript": "^5.9.3",
58
+ "vite": "^7.3.0",
59
+ "vitest": "^4.0.15"
60
+ },
61
+ "peerDependencies": {
62
+ "react": "^19.0.0",
63
+ "react-dom": "^19.0.0"
64
+ },
65
+ "dependencies": {
66
+ "@base-ui/react": "^1.0.0",
67
+ "@radix-ui/react-icons": "^1.3.2",
68
+ "clsx": "^2.1.1",
69
+ "sonner": "^2.0.7",
70
+ "tailwind-merge": "^3.4.0"
71
+ },
72
+ "packageManager": "pnpm@10.26.2"
74
73
  }
@@ -1,13 +0,0 @@
1
- import * as React from "react";
2
- interface SlotProps {
3
- children?: React.ReactNode;
4
- }
5
- declare const Slot: React.ForwardRefExoticComponent<SlotProps & React.RefAttributes<unknown>>;
6
- type SlottableProps = {
7
- child: React.ReactNode;
8
- children: (child: React.ReactNode) => React.JSX.Element;
9
- };
10
- declare const Slottable: ({ child, children }: SlottableProps) => React.JSX.Element;
11
- declare const Root: React.ForwardRefExoticComponent<SlotProps & React.RefAttributes<unknown>>;
12
- export { Root, Slot, Slottable };
13
- export type { SlotProps };