@bigbinary/neeto-atoms 1.0.51 → 1.0.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Alert-bS5M631u.js → Alert-e3-iV-6f.js} +2 -2
- package/dist/{Alert-bS5M631u.js.map → Alert-e3-iV-6f.js.map} +1 -1
- package/dist/{Button-BCWJgHDy.js → Button-DwiKU1ab.js} +24 -3
- package/dist/Button-DwiKU1ab.js.map +1 -0
- package/dist/{Callout-ClNFeMbn.js → Callout-NVYmCwJL.js} +3 -2
- package/dist/{Callout-ClNFeMbn.js.map → Callout-NVYmCwJL.js.map} +1 -1
- package/dist/{DataTable-CHxdhAU2.js → DataTable-DuHFwJj9.js} +47 -9
- package/dist/DataTable-DuHFwJj9.js.map +1 -0
- package/dist/{Empty-DdthjwJz.js → Empty-CfakG-QT.js} +2 -2
- package/dist/{Empty-DdthjwJz.js.map → Empty-CfakG-QT.js.map} +1 -1
- package/dist/{Input-C_aFPEXD.js → Input-Bxs8n6xp.js} +2 -2
- package/dist/Input-Bxs8n6xp.js.map +1 -0
- package/dist/{Kbd-CJOM9x4C.js → Kbd-CAIAs4OO.js} +11 -4
- package/dist/Kbd-CAIAs4OO.js.map +1 -0
- package/dist/{Label-CS8ErCaf.js → Label-Vpj3xsO2.js} +2 -2
- package/dist/{Label-CS8ErCaf.js.map → Label-Vpj3xsO2.js.map} +1 -1
- package/dist/{MultiEmailInput-DhjSEXbS.js → MultiEmailInput-Du1964Ka.js} +2 -2
- package/dist/{MultiEmailInput-DhjSEXbS.js.map → MultiEmailInput-Du1964Ka.js.map} +1 -1
- package/dist/Toastr-tmAtpmwv.js +182 -0
- package/dist/Toastr-tmAtpmwv.js.map +1 -0
- package/dist/cjs/{Alert-_TPuVqa5.js → Alert-Bo3a2nZt.js} +2 -2
- package/dist/cjs/{Alert-_TPuVqa5.js.map → Alert-Bo3a2nZt.js.map} +1 -1
- package/dist/cjs/{Button-BlNtYr1w.js → Button-DiBYVj5m.js} +25 -2
- package/dist/cjs/Button-DiBYVj5m.js.map +1 -0
- package/dist/cjs/{Callout-_XBx1JHL.js → Callout-CYIrflF1.js} +4 -3
- package/dist/cjs/{Callout-_XBx1JHL.js.map → Callout-CYIrflF1.js.map} +1 -1
- package/dist/cjs/{DataTable-CgQRfaIc.js → DataTable-DjQJLAya.js} +47 -9
- package/dist/cjs/DataTable-DjQJLAya.js.map +1 -0
- package/dist/cjs/{Empty-AEIH-jLF.js → Empty-D8g97TNM.js} +2 -2
- package/dist/cjs/{Empty-AEIH-jLF.js.map → Empty-D8g97TNM.js.map} +1 -1
- package/dist/cjs/{Input-BngZja62.js → Input-BQh-GS_w.js} +2 -2
- package/dist/cjs/Input-BQh-GS_w.js.map +1 -0
- package/dist/cjs/{Kbd-D2nELu5m.js → Kbd-BvC3VSNb.js} +11 -4
- package/dist/cjs/Kbd-BvC3VSNb.js.map +1 -0
- package/dist/cjs/{Label-OpNoSl0F.js → Label-DFLFi0tH.js} +2 -2
- package/dist/cjs/{Label-OpNoSl0F.js.map → Label-DFLFi0tH.js.map} +1 -1
- package/dist/cjs/{MultiEmailInput-BZtzoX7D.js → MultiEmailInput-KmN2BSaX.js} +2 -2
- package/dist/cjs/{MultiEmailInput-BZtzoX7D.js.map → MultiEmailInput-KmN2BSaX.js.map} +1 -1
- package/dist/cjs/Toastr-CQ-R8VcZ.js +184 -0
- package/dist/cjs/Toastr-CQ-R8VcZ.js.map +1 -0
- package/dist/cjs/components/Alert.js +2 -2
- package/dist/cjs/components/Button.js +3 -1
- package/dist/cjs/components/Button.js.map +1 -1
- package/dist/cjs/components/Callout.js +3 -2
- package/dist/cjs/components/Callout.js.map +1 -1
- package/dist/cjs/components/DataTable.js +6 -2
- package/dist/cjs/components/DataTable.js.map +1 -1
- package/dist/cjs/components/DropdownMenu.js +34 -72
- package/dist/cjs/components/DropdownMenu.js.map +1 -1
- package/dist/cjs/components/Empty.js +2 -2
- package/dist/cjs/components/Input.js +2 -2
- package/dist/cjs/components/Kbd.js +1 -1
- package/dist/cjs/components/Label.js +2 -2
- package/dist/cjs/components/MultiEmailInput.js +2 -2
- package/dist/cjs/components/Toastr.js +8 -2
- package/dist/cjs/components/Toastr.js.map +1 -1
- package/dist/cjs/components/index.js +19 -16
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/formik/ActionBlock.js +1 -1
- package/dist/cjs/formik/BlockNavigation.js +1 -1
- package/dist/cjs/formik/Button.js +1 -1
- package/dist/cjs/formik/Input.js +2 -2
- package/dist/cjs/formik/MultiEmailInput.js +2 -2
- package/dist/cjs/formik/index.js +4 -4
- package/dist/cjs/{index-Vlwnyfvs.js → index-CPmGpPzg.js} +39 -1
- package/dist/cjs/index-CPmGpPzg.js.map +1 -0
- package/dist/cjs/index.js +15 -14
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/info-DGfDptn1.js +21 -0
- package/dist/cjs/info-DGfDptn1.js.map +1 -0
- package/dist/cjs/primitives/Kbd.js +39 -10
- package/dist/cjs/primitives/Kbd.js.map +1 -1
- package/dist/cjs/primitives/Sonner.js +7 -41
- package/dist/cjs/primitives/Sonner.js.map +1 -1
- package/dist/cjs/primitives/index.js +3 -2
- package/dist/cjs/primitives/index.js.map +1 -1
- package/dist/cjs/{triangle-alert-ZUMRpmzW.js → triangle-alert-CC-cck8p.js} +1 -17
- package/dist/cjs/triangle-alert-CC-cck8p.js.map +1 -0
- package/dist/cjs/{withIconSize-BKUwVY6t.js → withIconSize-C6LP0R7o.js} +5 -1
- package/dist/cjs/withIconSize-C6LP0R7o.js.map +1 -0
- package/dist/components/Alert.js +2 -2
- package/dist/components/Button/Button.d.ts +10 -2
- package/dist/components/Button/index.d.ts +2 -2
- package/dist/components/Button.js +1 -1
- package/dist/components/Callout.js +3 -2
- package/dist/components/Callout.js.map +1 -1
- package/dist/components/DataTable/components/HeaderDescription.d.ts +6 -0
- package/dist/components/DataTable.js +6 -2
- package/dist/components/DataTable.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownBase.d.ts +1 -1
- package/dist/components/DropdownMenu/constants.d.ts +0 -5
- package/dist/components/DropdownMenu/types.d.ts +32 -16
- package/dist/components/DropdownMenu.js +34 -72
- package/dist/components/DropdownMenu.js.map +1 -1
- package/dist/components/Empty.js +2 -2
- package/dist/components/Input/Input.d.ts +7 -4
- package/dist/components/Input.js +2 -2
- package/dist/components/Kbd/Kbd.d.ts +1 -1
- package/dist/components/Kbd.js +1 -1
- package/dist/components/Label.js +2 -2
- package/dist/components/MultiEmailInput/types.d.ts +7 -4
- package/dist/components/MultiEmailInput.js +2 -2
- package/dist/components/Toastr/Toastr.d.ts +3 -1
- package/dist/components/Toastr/ToastrBody.d.ts +12 -0
- package/dist/components/Toastr/utils.d.ts +1 -3
- package/dist/components/Toastr.js +8 -2
- package/dist/components/Toastr.js.map +1 -1
- package/dist/components/Typography/Typography.d.ts +2 -2
- package/dist/components/index.js +16 -15
- package/dist/components/index.js.map +1 -1
- package/dist/formik/ActionBlock.js +1 -1
- package/dist/formik/BlockNavigation.js +1 -1
- package/dist/formik/Button.js +1 -1
- package/dist/formik/Input.js +2 -2
- package/dist/formik/MultiEmailInput.js +2 -2
- package/dist/formik/index.js +4 -4
- package/dist/{index-D_roZz8G.js → index-CDo_esrR.js} +38 -2
- package/dist/index-CDo_esrR.js.map +1 -0
- package/dist/index.css +3 -0
- package/dist/index.js +15 -14
- package/dist/index.js.map +1 -1
- package/dist/info-BlwkmMZr.js +19 -0
- package/dist/info-BlwkmMZr.js.map +1 -0
- package/dist/primitives/Kbd.d.ts +3 -4
- package/dist/primitives/Kbd.js +20 -10
- package/dist/primitives/Kbd.js.map +1 -1
- package/dist/primitives/Sonner.js +4 -38
- package/dist/primitives/Sonner.js.map +1 -1
- package/dist/primitives/index.js +3 -2
- package/dist/primitives/index.js.map +1 -1
- package/dist/shadcn/components/kbd.d.ts +3 -2
- package/dist/{triangle-alert-PXnNWQy_.js → triangle-alert-C434HydH.js} +2 -17
- package/dist/triangle-alert-C434HydH.js.map +1 -0
- package/dist/utils/withIconSize.d.ts +10 -6
- package/dist/{withIconSize-Czt1EelO.js → withIconSize-BonoFXeH.js} +5 -1
- package/dist/withIconSize-BonoFXeH.js.map +1 -0
- package/package.json +1 -1
- package/dist/Button-BCWJgHDy.js.map +0 -1
- package/dist/DataTable-CHxdhAU2.js.map +0 -1
- package/dist/Input-C_aFPEXD.js.map +0 -1
- package/dist/Kbd-CJOM9x4C.js.map +0 -1
- package/dist/Toastr-BimwuEnS.js +0 -95
- package/dist/Toastr-BimwuEnS.js.map +0 -1
- package/dist/cjs/Button-BlNtYr1w.js.map +0 -1
- package/dist/cjs/DataTable-CgQRfaIc.js.map +0 -1
- package/dist/cjs/Input-BngZja62.js.map +0 -1
- package/dist/cjs/Kbd-D2nELu5m.js.map +0 -1
- package/dist/cjs/Toastr-DYWd66L7.js +0 -97
- package/dist/cjs/Toastr-DYWd66L7.js.map +0 -1
- package/dist/cjs/index-Vlwnyfvs.js.map +0 -1
- package/dist/cjs/triangle-alert-ZUMRpmzW.js.map +0 -1
- package/dist/cjs/withIconSize-BKUwVY6t.js.map +0 -1
- package/dist/index-D_roZz8G.js.map +0 -1
- package/dist/triangle-alert-PXnNWQy_.js.map +0 -1
- package/dist/withIconSize-Czt1EelO.js.map +0 -1
package/dist/primitives/index.js
CHANGED
|
@@ -107,7 +107,8 @@ import '../sheet-BIqq9HBB.js';
|
|
|
107
107
|
import '../use-mobile-QbHL72cX.js';
|
|
108
108
|
import '../skeleton-D9P1ZyiS.js';
|
|
109
109
|
import '../tooltip-ChQ9xD1j.js';
|
|
110
|
-
import '../index-
|
|
110
|
+
import '../index-CDo_esrR.js';
|
|
111
111
|
import '../loader-circle-DycHUAWN.js';
|
|
112
|
-
import '../triangle-alert-
|
|
112
|
+
import '../triangle-alert-C434HydH.js';
|
|
113
|
+
import '../info-BlwkmMZr.js';
|
|
113
114
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
declare
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const Kbd: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
|
|
3
|
+
declare const KbdGroup: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
|
|
3
4
|
export { Kbd, KbdGroup };
|
|
@@ -8,21 +8,6 @@ import { c as createLucideIcon } from './createLucideIcon-C8ycilSN.js';
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
const __iconNode$1 = [
|
|
12
|
-
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
13
|
-
["path", { d: "M12 16v-4", key: "1dtifu" }],
|
|
14
|
-
["path", { d: "M12 8h.01", key: "e9boi3" }]
|
|
15
|
-
];
|
|
16
|
-
const Info = createLucideIcon("info", __iconNode$1);
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* @license lucide-react v0.577.0 - ISC
|
|
20
|
-
*
|
|
21
|
-
* This source code is licensed under the ISC license.
|
|
22
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
11
|
const __iconNode = [
|
|
27
12
|
[
|
|
28
13
|
"path",
|
|
@@ -36,5 +21,5 @@ const __iconNode = [
|
|
|
36
21
|
];
|
|
37
22
|
const TriangleAlert = createLucideIcon("triangle-alert", __iconNode);
|
|
38
23
|
|
|
39
|
-
export {
|
|
40
|
-
//# sourceMappingURL=triangle-alert-
|
|
24
|
+
export { TriangleAlert as T };
|
|
25
|
+
//# sourceMappingURL=triangle-alert-C434HydH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triangle-alert-C434HydH.js","sources":["../node_modules/lucide-react/dist/esm/icons/triangle-alert.js"],"sourcesContent":["/**\n * @license lucide-react v0.577.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAM,UAAU,GAAG;AACnB,EAAE;AACF,IAAI,MAAM;AACV,IAAI;AACJ,MAAM,CAAC,EAAE,0EAA0E;AACnF,MAAM,GAAG,EAAE;AACX;AACA,GAAG;AACH,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3C,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC7C,CAAC;AACI,MAAC,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,UAAU;;;;","x_google_ignoreList":[0]}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
export type IconLike = React.ReactNode | React.ComponentType<{
|
|
3
|
+
className?: string;
|
|
4
|
+
}>;
|
|
2
5
|
/**
|
|
3
|
-
* Injects an icon size className
|
|
6
|
+
* Injects an icon size className so shadcn's
|
|
4
7
|
* `[&_svg:not([class*='size-'])]:size-X` guard rules skip it and our
|
|
5
8
|
* variant-aware size wins. Caller-provided classes are preserved via cn().
|
|
6
9
|
*
|
|
7
|
-
* - If `node` is
|
|
8
|
-
*
|
|
9
|
-
* - If `node`
|
|
10
|
-
* so tailwind-merge lets the caller's className win
|
|
10
|
+
* - If `node` is a component reference (e.g. lucide's `Search`), it is
|
|
11
|
+
* instantiated with the size className.
|
|
12
|
+
* - If `node` is a valid React element, it is cloned with the size className
|
|
13
|
+
* prepended so tailwind-merge lets the caller's className win.
|
|
14
|
+
* - Anything else (string, number, fragment, null/undefined) is returned as-is.
|
|
11
15
|
*/
|
|
12
|
-
export declare function withIconSize(node:
|
|
16
|
+
export declare function withIconSize(node: IconLike, sizeClassName: string): React.ReactNode;
|
|
@@ -2,6 +2,10 @@ import React__default from 'react';
|
|
|
2
2
|
import { c as cn } from './utils-BJnb9o5c.js';
|
|
3
3
|
|
|
4
4
|
function withIconSize(node, sizeClassName) {
|
|
5
|
+
if (typeof node === "function") {
|
|
6
|
+
const Component = node;
|
|
7
|
+
return React__default.createElement(Component, { className: sizeClassName });
|
|
8
|
+
}
|
|
5
9
|
if (!React__default.isValidElement(node)) return node;
|
|
6
10
|
const element = node;
|
|
7
11
|
return React__default.cloneElement(element, {
|
|
@@ -10,4 +14,4 @@ function withIconSize(node, sizeClassName) {
|
|
|
10
14
|
}
|
|
11
15
|
|
|
12
16
|
export { withIconSize as w };
|
|
13
|
-
//# sourceMappingURL=withIconSize-
|
|
17
|
+
//# sourceMappingURL=withIconSize-BonoFXeH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withIconSize-BonoFXeH.js","sources":["../src/utils/withIconSize.ts"],"sourcesContent":["import React from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\nexport type IconLike =\n | React.ReactNode\n | React.ComponentType<{ className?: string }>;\n\n/**\n * Injects an icon size className so shadcn's\n * `[&_svg:not([class*='size-'])]:size-X` guard rules skip it and our\n * variant-aware size wins. Caller-provided classes are preserved via cn().\n *\n * - If `node` is a component reference (e.g. lucide's `Search`), it is\n * instantiated with the size className.\n * - If `node` is a valid React element, it is cloned with the size className\n * prepended so tailwind-merge lets the caller's className win.\n * - Anything else (string, number, fragment, null/undefined) is returned as-is.\n */\nexport function withIconSize(\n node: IconLike,\n sizeClassName: string\n): React.ReactNode {\n if (typeof node === \"function\") {\n const Component = node as React.ComponentType<{ className?: string }>;\n return React.createElement(Component, { className: sizeClassName });\n }\n\n if (!React.isValidElement(node)) return node;\n\n const element = node as React.ReactElement<{ className?: string }>;\n\n return React.cloneElement(element, {\n className: cn(sizeClassName, element.props.className),\n });\n}\n"],"names":["React"],"mappings":";;;AAmBO,SAAS,YAAA,CACd,MACA,aAAA,EACiB;AACjB,EAAA,IAAI,OAAO,SAAS,UAAA,EAAY;AAC9B,IAAA,MAAM,SAAA,GAAY,IAAA;AAClB,IAAA,OAAOA,eAAM,aAAA,CAAc,SAAA,EAAW,EAAE,SAAA,EAAW,eAAe,CAAA;AAAA,EACpE;AAEA,EAAA,IAAI,CAACA,cAAA,CAAM,cAAA,CAAe,IAAI,GAAG,OAAO,IAAA;AAExC,EAAA,MAAM,OAAA,GAAU,IAAA;AAEhB,EAAA,OAAOA,cAAA,CAAM,aAAa,OAAA,EAAS;AAAA,IACjC,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,OAAA,CAAQ,MAAM,SAAS;AAAA,GACrD,CAAA;AACH;;;;"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Button-BCWJgHDy.js","sources":["../src/components/Button/constants.ts","../src/components/Button/Button.tsx"],"sourcesContent":["type ButtonSize =\n | \"default\"\n | \"xs\"\n | \"sm\"\n | \"lg\"\n | \"icon\"\n | \"icon-xs\"\n | \"icon-sm\"\n | \"icon-lg\";\n\nexport const ICON_ONLY_SIZE_MAP: Partial<Record<ButtonSize, ButtonSize>> = {\n xs: \"icon-xs\",\n sm: \"icon-sm\",\n default: \"icon\",\n lg: \"icon-lg\",\n};\n\nexport const SPINNER_SIZE_MAP: Record<ButtonSize, string> = {\n xs: \"size-3\",\n sm: \"size-3.5\",\n default: \"size-3.5\",\n lg: \"size-4\",\n icon: \"size-3.5\",\n \"icon-xs\": \"size-3\",\n \"icon-sm\": \"size-3.5\",\n \"icon-lg\": \"size-4\",\n};\n\n// Map NeetoUI tooltip `position` values to Radix side values\nexport const TOOLTIP_SIDE_MAP: Record<\n string,\n \"top\" | \"right\" | \"bottom\" | \"left\"\n> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n \"top-start\": \"top\",\n \"top-end\": \"top\",\n \"bottom-start\": \"bottom\",\n \"bottom-end\": \"bottom\",\n \"left-start\": \"left\",\n \"left-end\": \"left\",\n \"right-start\": \"right\",\n \"right-end\": \"right\",\n};\n","import React, { forwardRef, type ReactNode, type MouseEvent } from \"react\";\n\nimport { Link } from \"react-router-dom\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport { Spinner } from \"src/primitives/Spinner\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\n\nimport {\n ICON_ONLY_SIZE_MAP,\n SPINNER_SIZE_MAP,\n TOOLTIP_SIDE_MAP,\n} from \"./constants\";\n\ntype ButtonVariant =\n | \"default\"\n | \"secondary\"\n | \"destructive\"\n | \"destructive-soft\"\n | \"outline\"\n | \"ghost\"\n | \"link\";\n\ntype ButtonSize =\n | \"default\"\n | \"xs\"\n | \"sm\"\n | \"lg\"\n | \"icon\"\n | \"icon-xs\"\n | \"icon-sm\"\n | \"icon-lg\";\n\ntype IconPosition = \"left\" | \"right\";\n\ntype ButtonType = \"button\" | \"reset\" | \"submit\";\n\ninterface ButtonTooltipProps {\n content?: ReactNode;\n position?: string;\n disabled?: boolean;\n}\n\nexport interface ButtonProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"type\" | \"disabled\" | \"className\" | \"children\" | \"onClick\"\n> {\n /** Visual variant of the button. */\n variant?: ButtonVariant;\n /** Size of the button. */\n size?: ButtonSize;\n /** Text label rendered inside the button. */\n label?: string;\n /** Icon component, element, or class-name string. */\n icon?: IconProp;\n /** Placement of the icon relative to the label. */\n iconPosition?: IconPosition;\n /** Show a loading spinner and prevent clicks. */\n loading?: boolean;\n /** Disable the button. */\n disabled?: boolean;\n /** Click handler. */\n onClick?: (e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;\n /** Internal route (react-router `Link`). */\n to?: string;\n /** External URL (renders an anchor tag). */\n href?: string;\n /** HTML button type attribute. */\n type?: ButtonType;\n /** Stretch the button to fill its container. */\n fullWidth?: boolean;\n /** Additional CSS class names. */\n className?: string;\n /** Props forwarded to a wrapping Tooltip. */\n tooltipProps?: ButtonTooltipProps | null;\n /** Render as a custom element (polymorphic). */\n asChild?: boolean;\n /** Children rendered inside the button (fallback for `label`). */\n children?: ReactNode;\n}\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = \"default\",\n size = \"default\",\n label,\n icon = null,\n iconPosition = \"right\",\n loading = false,\n disabled = false,\n onClick,\n to,\n href,\n type = \"button\",\n fullWidth = false,\n className,\n tooltipProps = null,\n asChild = false,\n children,\n ...otherProps\n },\n ref\n ) => {\n const isIconSize = size.startsWith(\"icon\");\n const renderLabel = isIconSize ? null : label || children;\n const isIconOnly = !renderLabel && !!icon;\n const resolvedSize = isIconOnly ? (ICON_ONLY_SIZE_MAP[size] ?? size) : size;\n\n // --- Loading / disabled state ---\n const isDisabled = disabled || loading;\n\n // --- Click handler ---\n const handleClick = (\n e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => {\n if (loading || disabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n // --- Icon elements ---\n const iconElement = icon ? renderIcon(icon) : null;\n\n // --- Build the inner content ---\n const buttonContent = (\n <>\n {loading && (\n <span className=\"absolute inset-0 flex items-center justify-center\">\n <Spinner\n aria-hidden=\"true\"\n className={SPINNER_SIZE_MAP[resolvedSize]}\n />\n </span>\n )}\n <span\n className={cn(\n \"inline-flex items-center gap-1.5\",\n loading && \"invisible\"\n )}\n >\n {iconPosition === \"left\" && iconElement && (\n <span data-icon=\"inline-start\">{iconElement}</span>\n )}\n {renderLabel && <span>{renderLabel}</span>}\n {iconPosition === \"right\" && iconElement && (\n <span data-icon=\"inline-end\">{iconElement}</span>\n )}\n </span>\n </>\n );\n\n // --- Merged className ---\n const mergedClassName = cn(\n fullWidth && \"w-full\",\n loading && \"relative pointer-events-none\",\n className\n );\n\n // --- Determine render element ---\n let buttonElement: ReactNode;\n\n if (asChild) {\n buttonElement = (\n <PrimitiveButton\n ref={ref}\n asChild\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n {...otherProps}\n >\n {children}\n </PrimitiveButton>\n );\n } else if (!disabled && to) {\n buttonElement = (\n <PrimitiveButton\n asChild\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n {...otherProps}\n >\n <Link\n innerRef={ref as React.Ref<HTMLAnchorElement>}\n to={to}\n onClick={handleClick}\n >\n {buttonContent}\n </Link>\n </PrimitiveButton>\n );\n } else if (!disabled && href) {\n buttonElement = (\n <PrimitiveButton\n asChild\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n {...otherProps}\n >\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n href={href}\n onClick={handleClick}\n >\n {buttonContent}\n </a>\n </PrimitiveButton>\n );\n } else {\n buttonElement = (\n <PrimitiveButton\n ref={ref}\n type={type}\n variant={variant}\n size={resolvedSize}\n className={mergedClassName}\n disabled={isDisabled}\n onClick={handleClick}\n {...otherProps}\n >\n {buttonContent}\n </PrimitiveButton>\n );\n }\n\n // --- Tooltip wrapper ---\n if (tooltipProps) {\n const { content, position, disabled: tooltipDisabled } = tooltipProps;\n\n if (tooltipDisabled || !content) {\n return <>{buttonElement}</>;\n }\n\n const side = position ? TOOLTIP_SIDE_MAP[position] : undefined;\n\n // Wrap disabled buttons in a span so tooltip still triggers\n const triggerContent = isDisabled ? (\n <span className=\"inline-flex\">{buttonElement}</span>\n ) : (\n buttonElement\n );\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{triggerContent}</TooltipTrigger>\n <TooltipContent side={side}>{content}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return <>{buttonElement}</>;\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button };\n"],"names":["PrimitiveButton"],"mappings":"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"}
|