@bigbinary/neeto-atoms 1.0.30 → 1.0.32

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 (116) hide show
  1. package/dist/Button-DSvnInaL.js.map +1 -1
  2. package/dist/{Calendar-C4fe-WIS.js → Calendar-gPWbQa_c.js} +2 -2
  3. package/dist/{Calendar-C4fe-WIS.js.map → Calendar-gPWbQa_c.js.map} +1 -1
  4. package/dist/{DatePicker-C5DROLCX.js → DatePicker-B7SYjsog.js} +2 -2
  5. package/dist/{DatePicker-C5DROLCX.js.map → DatePicker-B7SYjsog.js.map} +1 -1
  6. package/dist/{Label-CryFO2yq.js → Label-DAFESZOG.js} +2 -2
  7. package/dist/{Label-CryFO2yq.js.map → Label-DAFESZOG.js.map} +1 -1
  8. package/dist/{Popover-dib6elwS.js → Popover-Dmq-xK_a.js} +4 -3
  9. package/dist/Popover-Dmq-xK_a.js.map +1 -0
  10. package/dist/{button-Dn5ffsMK.js → button-D6uWDFCs.js} +3 -2
  11. package/dist/button-D6uWDFCs.js.map +1 -0
  12. package/dist/cjs/Button-BniJ4TT_.js.map +1 -1
  13. package/dist/cjs/{Calendar-RRA-wKOF.js → Calendar-jVF8fRaS.js} +2 -2
  14. package/dist/cjs/{Calendar-RRA-wKOF.js.map → Calendar-jVF8fRaS.js.map} +1 -1
  15. package/dist/cjs/{DatePicker-aFQ4yEf1.js → DatePicker-C0BwxIh8.js} +2 -2
  16. package/dist/cjs/{DatePicker-aFQ4yEf1.js.map → DatePicker-C0BwxIh8.js.map} +1 -1
  17. package/dist/cjs/{Label-BHFmdHwe.js → Label-B7FbeB5i.js} +2 -2
  18. package/dist/cjs/{Label-BHFmdHwe.js.map → Label-B7FbeB5i.js.map} +1 -1
  19. package/dist/cjs/{Popover-B1d4URJl.js → Popover-DRT0YYzK.js} +4 -3
  20. package/dist/cjs/Popover-DRT0YYzK.js.map +1 -0
  21. package/dist/cjs/{button-CKlGvVqQ.js → button--P7-oIJb.js} +3 -2
  22. package/dist/cjs/button--P7-oIJb.js.map +1 -0
  23. package/dist/cjs/components/Alert.js +2 -2
  24. package/dist/cjs/components/Button.js +1 -1
  25. package/dist/cjs/components/ColorPicker.js +1 -1
  26. package/dist/cjs/components/DataTable.js +1 -1
  27. package/dist/cjs/components/DatePicker.js +3 -3
  28. package/dist/cjs/components/Dialog.js +2 -2
  29. package/dist/cjs/components/DropdownMenu.js +1 -1
  30. package/dist/cjs/components/Empty.js +1 -1
  31. package/dist/cjs/components/Input.js +2 -2
  32. package/dist/cjs/components/Label.js +5 -4
  33. package/dist/cjs/components/Label.js.map +1 -1
  34. package/dist/cjs/components/Pagination.js +1 -1
  35. package/dist/cjs/components/Popover.js +4 -2
  36. package/dist/cjs/components/Popover.js.map +1 -1
  37. package/dist/cjs/components/Select.js +2 -2
  38. package/dist/cjs/components/Sheet.js +2 -2
  39. package/dist/cjs/components/TimePicker.js +1 -1
  40. package/dist/cjs/components/index.js +8 -8
  41. package/dist/cjs/{dialog-3nRssoAl.js → dialog-CWSpiRjk.js} +2 -2
  42. package/dist/cjs/{dialog-3nRssoAl.js.map → dialog-CWSpiRjk.js.map} +1 -1
  43. package/dist/cjs/formik/ActionBlock.js +1 -1
  44. package/dist/cjs/formik/BlockNavigation.js +2 -2
  45. package/dist/cjs/formik/Button.js +1 -1
  46. package/dist/cjs/formik/Input.js +2 -2
  47. package/dist/cjs/formik/Select.js +2 -2
  48. package/dist/cjs/formik/index.js +3 -3
  49. package/dist/cjs/index.js +8 -8
  50. package/dist/cjs/{input-group-DRgJde06.js → input-group-CFZl_aQS.js} +2 -2
  51. package/dist/cjs/{input-group-DRgJde06.js.map → input-group-CFZl_aQS.js.map} +1 -1
  52. package/dist/cjs/primitives/AlertDialog.js +1 -1
  53. package/dist/cjs/primitives/Button.js +1 -1
  54. package/dist/cjs/primitives/Calendar.js +2 -2
  55. package/dist/cjs/primitives/Carousel.js +1 -1
  56. package/dist/cjs/primitives/Combobox.js +2 -2
  57. package/dist/cjs/primitives/Command.js +3 -3
  58. package/dist/cjs/primitives/Dialog.js +2 -2
  59. package/dist/cjs/primitives/InputGroup.js +2 -2
  60. package/dist/cjs/primitives/Pagination.js +1 -1
  61. package/dist/cjs/primitives/Sheet.js +2 -2
  62. package/dist/cjs/primitives/Sidebar.js +2 -2
  63. package/dist/cjs/primitives/index.js +5 -5
  64. package/dist/cjs/{sheet-BG5iB_da.js → sheet-BZt84aab.js} +2 -2
  65. package/dist/cjs/{sheet-BG5iB_da.js.map → sheet-BZt84aab.js.map} +1 -1
  66. package/dist/components/Alert.js +2 -2
  67. package/dist/components/Button/Button.d.ts +1 -1
  68. package/dist/components/Button.js +1 -1
  69. package/dist/components/ColorPicker.js +1 -1
  70. package/dist/components/DataTable.js +1 -1
  71. package/dist/components/DatePicker.js +3 -3
  72. package/dist/components/Dialog.js +2 -2
  73. package/dist/components/DropdownMenu.js +1 -1
  74. package/dist/components/Empty.js +1 -1
  75. package/dist/components/Input.js +2 -2
  76. package/dist/components/Label.js +5 -4
  77. package/dist/components/Label.js.map +1 -1
  78. package/dist/components/Pagination.js +1 -1
  79. package/dist/components/Popover.js +4 -2
  80. package/dist/components/Popover.js.map +1 -1
  81. package/dist/components/Select.js +2 -2
  82. package/dist/components/Sheet.js +2 -2
  83. package/dist/components/TimePicker.js +1 -1
  84. package/dist/components/index.js +8 -8
  85. package/dist/{dialog-C6LY-ud7.js → dialog-DK71SlsS.js} +2 -2
  86. package/dist/{dialog-C6LY-ud7.js.map → dialog-DK71SlsS.js.map} +1 -1
  87. package/dist/formik/ActionBlock.js +1 -1
  88. package/dist/formik/BlockNavigation.js +2 -2
  89. package/dist/formik/Button.js +1 -1
  90. package/dist/formik/Input.js +2 -2
  91. package/dist/formik/Select.js +2 -2
  92. package/dist/formik/index.js +3 -3
  93. package/dist/index.js +8 -8
  94. package/dist/{input-group-DxqtSMEV.js → input-group-C_qKMibX.js} +2 -2
  95. package/dist/{input-group-DxqtSMEV.js.map → input-group-C_qKMibX.js.map} +1 -1
  96. package/dist/primitives/AlertDialog.js +1 -1
  97. package/dist/primitives/Button.d.ts +1 -1
  98. package/dist/primitives/Button.js +2 -2
  99. package/dist/primitives/Calendar.js +2 -2
  100. package/dist/primitives/Carousel.js +1 -1
  101. package/dist/primitives/Combobox.js +2 -2
  102. package/dist/primitives/Command.js +3 -3
  103. package/dist/primitives/Dialog.js +2 -2
  104. package/dist/primitives/InputGroup.js +2 -2
  105. package/dist/primitives/Pagination.js +1 -1
  106. package/dist/primitives/Sheet.js +2 -2
  107. package/dist/primitives/Sidebar.js +2 -2
  108. package/dist/primitives/index.js +5 -5
  109. package/dist/shadcn/components/button.d.ts +2 -2
  110. package/dist/{sheet-BbO8NwBJ.js → sheet-DVTG6X82.js} +2 -2
  111. package/dist/{sheet-BbO8NwBJ.js.map → sheet-DVTG6X82.js.map} +1 -1
  112. package/package.json +1 -1
  113. package/dist/Popover-dib6elwS.js.map +0 -1
  114. package/dist/button-Dn5ffsMK.js.map +0 -1
  115. package/dist/cjs/Popover-B1d4URJl.js.map +0 -1
  116. package/dist/cjs/button-CKlGvVqQ.js.map +0 -1
@@ -4,7 +4,7 @@ import { c as cn } from './utils-DdHUxIdC.js';
4
4
  import { r as renderIcon } from './renderIcon-tlvMyboj.js';
5
5
  import { Label as Label$1 } from './primitives/Label.js';
6
6
  import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from './primitives/Tooltip.js';
7
- import { P as Popover } from './Popover-dib6elwS.js';
7
+ import { P as Popover } from './Popover-Dmq-xK_a.js';
8
8
  import { B as Button } from './Button-DSvnInaL.js';
9
9
  import { c as createLucideIcon } from './createLucideIcon-C8ycilSN.js';
10
10
 
@@ -55,4 +55,4 @@ const Label = forwardRef(({ required, helpIconProps, className, children, ...oth
55
55
  Label.displayName = "Label";
56
56
 
57
57
  export { Label as L };
58
- //# sourceMappingURL=Label-CryFO2yq.js.map
58
+ //# sourceMappingURL=Label-DAFESZOG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Label-CryFO2yq.js","sources":["../node_modules/lucide-react/dist/esm/icons/circle-question-mark.js","../src/components/Label/constants.ts","../src/components/Label/Label.tsx"],"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 [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\", key: \"1u773s\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst CircleQuestionMark = createLucideIcon(\"circle-question-mark\", __iconNode);\n\nexport { __iconNode, CircleQuestionMark as default };\n//# sourceMappingURL=circle-question-mark.js.map\n","export const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n auto: \"top\",\n};\n","import React, { forwardRef } from \"react\";\n\nimport { CircleHelpIcon } from \"lucide-react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport { Label as PrimitiveLabel } from \"src/primitives/Label\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\nimport { Popover } from \"src/components/Popover\";\nimport { Button, type ButtonProps } from \"src/components/Button\";\n\nimport { SIDE_MAP } from \"./constants\";\n\ninterface HelpIconTooltipProps {\n /** Tooltip content. */\n content?: React.ReactNode;\n /** Tooltip position. */\n position?: string;\n}\n\ninterface HelpIconPopoverProps {\n /** Popover title. */\n title?: React.ReactNode;\n /** Popover description. */\n description?: React.ReactNode;\n /** Props for an optional help link button inside the popover. */\n helpLinkProps?: ButtonProps;\n}\n\ninterface HelpIconProps {\n /** Click handler on the help icon. */\n onClick?: () => void;\n /** Custom icon. Defaults to CircleHelpIcon. */\n icon?: IconProp;\n /** Show a tooltip on hover. */\n tooltipProps?: HelpIconTooltipProps;\n /** Show a popover on hover with title, description, and optional link. */\n popoverProps?: HelpIconPopoverProps;\n /** Additional class name for the help icon. */\n className?: string;\n}\n\nexport interface LabelProps extends React.ComponentProps<\n typeof PrimitiveLabel\n> {\n /** Shows a red asterisk after the label text. */\n required?: boolean;\n /** Props for the help icon (tooltip or popover mode). */\n helpIconProps?: HelpIconProps;\n /** Additional CSS class names. */\n className?: string;\n}\n\nconst Label = forwardRef<HTMLLabelElement, LabelProps>(\n ({ required, helpIconProps, className, children, ...otherProps }, ref) => {\n const helpIcon = helpIconProps?.icon ?? CircleHelpIcon;\n\n const iconElement = (\n <span\n className={cn(\n \"inline-flex cursor-help text-muted-foreground transition-colors hover:text-foreground\",\n helpIconProps?.onClick && \"cursor-pointer\",\n helpIconProps?.className\n )}\n onClick={helpIconProps?.onClick}\n >\n {renderIcon(helpIcon, \"size-3.5\")}\n </span>\n );\n\n const renderHelpIcon = () => {\n if (!helpIconProps) return null;\n\n // Popover mode\n if (helpIconProps.popoverProps) {\n const { title, description, helpLinkProps } =\n helpIconProps.popoverProps;\n\n return (\n <Popover trigger={iconElement}>\n {title && <Popover.Title>{title}</Popover.Title>}\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {helpLinkProps && (\n <Button\n variant=\"link\"\n size=\"sm\"\n className=\"mt-1 h-auto self-start p-0\"\n {...helpLinkProps}\n href={helpLinkProps.href}\n />\n )}\n </Popover>\n );\n }\n\n // Tooltip mode\n if (helpIconProps.tooltipProps?.content) {\n const side =\n SIDE_MAP[helpIconProps.tooltipProps.position ?? \"auto\"] ?? \"top\";\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{iconElement}</TooltipTrigger>\n <TooltipContent side={side}>\n {helpIconProps.tooltipProps.content}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n // Icon only (with optional onClick)\n return iconElement;\n };\n\n return (\n <PrimitiveLabel ref={ref} className={cn(className)} {...otherProps}>\n {children}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n {renderHelpIcon()}\n </PrimitiveLabel>\n );\n }\n);\n\nLabel.displayName = \"Label\";\n\nexport { Label };\n"],"names":["CircleHelpIcon","_jsx","_jsxs","PrimitiveLabel"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"Label-DAFESZOG.js","sources":["../node_modules/lucide-react/dist/esm/icons/circle-question-mark.js","../src/components/Label/constants.ts","../src/components/Label/Label.tsx"],"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 [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\", key: \"1u773s\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst CircleQuestionMark = createLucideIcon(\"circle-question-mark\", __iconNode);\n\nexport { __iconNode, CircleQuestionMark as default };\n//# sourceMappingURL=circle-question-mark.js.map\n","export const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n auto: \"top\",\n};\n","import React, { forwardRef } from \"react\";\n\nimport { CircleHelpIcon } from \"lucide-react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport { Label as PrimitiveLabel } from \"src/primitives/Label\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\nimport { Popover } from \"src/components/Popover\";\nimport { Button, type ButtonProps } from \"src/components/Button\";\n\nimport { SIDE_MAP } from \"./constants\";\n\ninterface HelpIconTooltipProps {\n /** Tooltip content. */\n content?: React.ReactNode;\n /** Tooltip position. */\n position?: string;\n}\n\ninterface HelpIconPopoverProps {\n /** Popover title. */\n title?: React.ReactNode;\n /** Popover description. */\n description?: React.ReactNode;\n /** Props for an optional help link button inside the popover. */\n helpLinkProps?: ButtonProps;\n}\n\ninterface HelpIconProps {\n /** Click handler on the help icon. */\n onClick?: () => void;\n /** Custom icon. Defaults to CircleHelpIcon. */\n icon?: IconProp;\n /** Show a tooltip on hover. */\n tooltipProps?: HelpIconTooltipProps;\n /** Show a popover on hover with title, description, and optional link. */\n popoverProps?: HelpIconPopoverProps;\n /** Additional class name for the help icon. */\n className?: string;\n}\n\nexport interface LabelProps extends React.ComponentProps<\n typeof PrimitiveLabel\n> {\n /** Shows a red asterisk after the label text. */\n required?: boolean;\n /** Props for the help icon (tooltip or popover mode). */\n helpIconProps?: HelpIconProps;\n /** Additional CSS class names. */\n className?: string;\n}\n\nconst Label = forwardRef<HTMLLabelElement, LabelProps>(\n ({ required, helpIconProps, className, children, ...otherProps }, ref) => {\n const helpIcon = helpIconProps?.icon ?? CircleHelpIcon;\n\n const iconElement = (\n <span\n className={cn(\n \"inline-flex cursor-help text-muted-foreground transition-colors hover:text-foreground\",\n helpIconProps?.onClick && \"cursor-pointer\",\n helpIconProps?.className\n )}\n onClick={helpIconProps?.onClick}\n >\n {renderIcon(helpIcon, \"size-3.5\")}\n </span>\n );\n\n const renderHelpIcon = () => {\n if (!helpIconProps) return null;\n\n // Popover mode\n if (helpIconProps.popoverProps) {\n const { title, description, helpLinkProps } =\n helpIconProps.popoverProps;\n\n return (\n <Popover trigger={iconElement}>\n {title && <Popover.Title>{title}</Popover.Title>}\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {helpLinkProps && (\n <Button\n variant=\"link\"\n size=\"sm\"\n className=\"mt-1 h-auto self-start p-0\"\n {...helpLinkProps}\n href={helpLinkProps.href}\n />\n )}\n </Popover>\n );\n }\n\n // Tooltip mode\n if (helpIconProps.tooltipProps?.content) {\n const side =\n SIDE_MAP[helpIconProps.tooltipProps.position ?? \"auto\"] ?? \"top\";\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{iconElement}</TooltipTrigger>\n <TooltipContent side={side}>\n {helpIconProps.tooltipProps.content}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n // Icon only (with optional onClick)\n return iconElement;\n };\n\n return (\n <PrimitiveLabel ref={ref} className={cn(className)} {...otherProps}>\n {children}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n {renderHelpIcon()}\n </PrimitiveLabel>\n );\n }\n);\n\nLabel.displayName = \"Label\";\n\nexport { Label };\n"],"names":["CircleHelpIcon","_jsx","_jsxs","PrimitiveLabel"],"mappings":"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","x_google_ignoreList":[0]}
@@ -2,6 +2,7 @@ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import React__default, { forwardRef, useState, useCallback, useEffect } from 'react';
3
3
  import { c as cva } from './index-D7Zy7P05.js';
4
4
  import { c as cn } from './utils-DdHUxIdC.js';
5
+ import { T as Typography } from './Typography-ClPJbLjP.js';
5
6
  import { HoverCard, HoverCardTrigger, HoverCardContent } from './primitives/HoverCard.js';
6
7
 
7
8
  const SIDE_MAP = {
@@ -35,7 +36,7 @@ const ALIGN_MAP = {
35
36
  auto: "center",
36
37
  };
37
38
 
38
- const popoverVariants = cva("flex flex-col gap-2.5", {
39
+ const popoverVariants = cva("flex flex-col gap-2 p-4", {
39
40
  variants: {
40
41
  variant: {
41
42
  default: "",
@@ -46,7 +47,7 @@ const popoverVariants = cva("flex flex-col gap-2.5", {
46
47
  variant: "default",
47
48
  },
48
49
  });
49
- const Title = forwardRef(({ children, className, ...otherProps }, ref) => (jsx("div", { ref: ref, "data-slot": "popover-title", className: cn("text-sm font-semibold", className), ...otherProps, children: children })));
50
+ const Title = forwardRef(({ children, className, ...otherProps }, ref) => (jsx(Typography, { variant: "body2", weight: "semibold", color: "inherit", asChild: true, children: jsx("div", { ref: ref, "data-slot": "popover-title", className: className, ...otherProps, children: children }) })));
50
51
  Title.displayName = "Popover.Title";
51
52
  const Popover = forwardRef(({ children, trigger, variant = "default", disabled = false, position = "auto", className, open: openProp, onOpenChange: onOpenChangeProp, hideAfter = -1, defaultOpen, openDelay = 200, closeDelay = 200,
52
53
  // Radix HoverCardContent props forwarded
@@ -80,4 +81,4 @@ Popover.displayName = "Popover";
80
81
  Popover.Title = Title;
81
82
 
82
83
  export { Popover as P };
83
- //# sourceMappingURL=Popover-dib6elwS.js.map
84
+ //# sourceMappingURL=Popover-Dmq-xK_a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover-Dmq-xK_a.js","sources":["../src/components/Popover/constants.ts","../src/components/Popover/Popover.tsx"],"sourcesContent":["export const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\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 auto: \"bottom\",\n};\n\nexport const ALIGN_MAP: Record<string, \"start\" | \"center\" | \"end\"> = {\n top: \"center\",\n bottom: \"center\",\n left: \"center\",\n right: \"center\",\n \"top-start\": \"start\",\n \"top-end\": \"end\",\n \"bottom-start\": \"start\",\n \"bottom-end\": \"end\",\n \"left-start\": \"start\",\n \"left-end\": \"end\",\n \"right-start\": \"start\",\n \"right-end\": \"end\",\n auto: \"center\",\n};\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useState,\n type ReactNode,\n} from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { Typography } from \"src/components/Typography\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"src/primitives/HoverCard\";\n\ntype PopoverPosition =\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left-start\"\n | \"left-end\"\n | \"right-start\"\n | \"right-end\"\n | \"auto\";\n\nconst popoverVariants = cva(\"flex flex-col gap-2 p-4\", {\n variants: {\n variant: {\n default: \"\",\n primary: \"bg-primary text-primary-foreground ring-0 shadow-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n\ntype PopoverVariant = NonNullable<\n VariantProps<typeof popoverVariants>[\"variant\"]\n>;\n\n/** Radix HoverCard.Content props we forward via ...otherProps. */\ntype HoverCardContentProps = React.ComponentProps<typeof HoverCardContent>;\n\nexport interface PopoverProps extends Omit<\n HoverCardContentProps,\n \"children\" | \"className\" | \"side\" | \"align\"\n> {\n /** Content rendered inside the popover. */\n children?: ReactNode;\n /** The trigger element that opens the popover on hover. */\n trigger?: ReactNode;\n /** Color variant of the popover. */\n variant?: PopoverVariant;\n /** Disable the popover. */\n disabled?: boolean;\n /** Placement of the popover relative to the trigger. */\n position?: PopoverPosition;\n /** Additional CSS class names for the popover content. */\n className?: string;\n /** Whether the popover is open (controlled). */\n open?: boolean;\n /** Callback when open state changes. */\n onOpenChange?: (open: boolean) => void;\n /** Auto-hide after N milliseconds. Use -1 to disable. */\n hideAfter?: number;\n /** Radix HoverCard `defaultOpen` prop. */\n defaultOpen?: boolean;\n /** Delay in ms before the popover opens on hover. */\n openDelay?: number;\n /** Delay in ms before the popover closes after hover leaves. */\n closeDelay?: number;\n}\n\nimport { SIDE_MAP, ALIGN_MAP } from \"./constants\";\n\ninterface PopoverTitleProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Title = forwardRef<HTMLDivElement, PopoverTitleProps>(\n ({ children, className, ...otherProps }, ref) => (\n <Typography variant=\"body2\" weight=\"semibold\" color=\"inherit\" asChild>\n <div\n ref={ref}\n data-slot=\"popover-title\"\n className={className}\n {...otherProps}\n >\n {children}\n </div>\n </Typography>\n )\n);\nTitle.displayName = \"Popover.Title\";\n\nconst Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n children,\n trigger,\n variant = \"default\",\n disabled = false,\n position = \"auto\",\n className,\n open: openProp,\n onOpenChange: onOpenChangeProp,\n hideAfter = -1,\n defaultOpen,\n openDelay = 200,\n closeDelay = 200,\n // Radix HoverCardContent props forwarded\n ...contentProps\n },\n ref\n ) => {\n // Internal state for uncontrolled mode + hideAfter\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = openProp !== undefined;\n const open = isControlled ? openProp : internalOpen;\n\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChangeProp?.(next);\n },\n [isControlled, onOpenChangeProp]\n );\n\n // Auto-hide after hideAfter ms\n useEffect(() => {\n if (!open || hideAfter <= 0) return;\n const timer = setTimeout(() => handleOpenChange(false), hideAfter);\n return () => clearTimeout(timer);\n }, [open, hideAfter, handleOpenChange]);\n\n if (disabled) {\n return <>{trigger}</>;\n }\n\n const side = SIDE_MAP[position] ?? \"bottom\";\n const align = ALIGN_MAP[position] ?? \"center\";\n\n // Wrap non-element trigger in a span\n const triggerElement = React.isValidElement(trigger) ? (\n trigger\n ) : (\n <span>{trigger}</span>\n );\n\n return (\n <HoverCard\n open={open}\n onOpenChange={handleOpenChange}\n defaultOpen={defaultOpen}\n openDelay={openDelay}\n closeDelay={closeDelay}\n >\n <HoverCardTrigger asChild>{triggerElement}</HoverCardTrigger>\n <HoverCardContent\n ref={ref}\n side={side}\n align={align}\n className={cn(popoverVariants({ variant }), className)}\n {...contentProps}\n >\n {children}\n </HoverCardContent>\n </HoverCard>\n );\n }\n) as React.ForwardRefExoticComponent<\n PopoverProps & React.RefAttributes<HTMLDivElement>\n> & {\n Title: typeof Title;\n};\n\nPopover.displayName = \"Popover\";\nPopover.Title = Title;\n\nexport { Popover };\n"],"names":["_jsx","_Fragment","React","_jsxs"],"mappings":"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"}
@@ -11,7 +11,8 @@ const buttonVariants = cva("group/button inline-flex shrink-0 items-center justi
11
11
  outline: "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
12
12
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
13
13
  ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
14
- destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
14
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:border-destructive focus-visible:ring-destructive/40 dark:bg-destructive dark:hover:bg-destructive/90 dark:focus-visible:ring-destructive/40",
15
+ "destructive-soft": "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
15
16
  link: "text-primary underline underline-offset-4 decoration-primary/40 hover:decoration-primary",
16
17
  },
17
18
  size: {
@@ -44,4 +45,4 @@ const Button = React.forwardRef(({ className, variant = "default", size = "defau
44
45
  Button.displayName = "Button";
45
46
 
46
47
  export { Button as B, buttonVariants as b };
47
- //# sourceMappingURL=button-Dn5ffsMK.js.map
48
+ //# sourceMappingURL=button-D6uWDFCs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-D6uWDFCs.js","sources":["../src/shadcn/components/button.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"src/shadcn/lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:border-destructive focus-visible:ring-destructive/40 dark:bg-destructive dark:hover:bg-destructive/90 dark:focus-visible:ring-destructive/40\",\n \"destructive-soft\":\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline underline-offset-4 decoration-primary/40 hover:decoration-primary\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pe-3 has-data-[icon=inline-start]:ps-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n compoundVariants: [\n {\n variant: \"link\",\n size: [\"default\", \"xs\", \"sm\", \"lg\"],\n className:\n \"h-auto border-0 px-0 has-data-[icon=inline-end]:pe-0 has-data-[icon=inline-start]:ps-0\",\n },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }\n>(({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}, ref) => {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n})\n\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"],"names":["Slot.Root","_jsx"],"mappings":";;;;;;AAMA,MAAM,cAAc,GAAG,GAAG,CACxB,wkBAAwkB,EACxkB;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,4DAA4D;AACrE,YAAA,OAAO,EACL,iLAAiL;AACnL,YAAA,SAAS,EACP,iIAAiI;AACnI,YAAA,KAAK,EACH,kHAAkH;AACpH,YAAA,WAAW,EACT,+NAA+N;AACjO,YAAA,kBAAkB,EAChB,6NAA6N;AAC/N,YAAA,IAAI,EAAE,0FAA0F;AACjG,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EACL,sFAAsF;AACxF,YAAA,EAAE,EAAE,+MAA+M;AACnN,YAAA,EAAE,EAAE,yNAAyN;AAC7N,YAAA,EAAE,EAAE,sFAAsF;AAC1F,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EACP,yHAAyH;AAC3H,YAAA,SAAS,EACP,oFAAoF;AACtF,YAAA,SAAS,EAAE,QAAQ;AACpB,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA;AACE,YAAA,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACnC,YAAA,SAAS,EACP,wFAAwF;AAC3F,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACF,CAAA;AAGH,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAM7B,CAAC,EACD,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,OAAO,GAAG,KAAK,EACf,GAAG,KAAK,EACT,EAAE,GAAG,KAAI;AACR,IAAA,MAAM,IAAI,GAAG,OAAO,GAAGA,IAAS,GAAG,QAAQ;AAE3C,IAAA,QACEC,GAAA,CAAC,IAAI,EAAA,EACH,GAAG,EAAE,GAAG,EAAA,WAAA,EACE,QAAQ,EAAA,cAAA,EACJ,OAAO,EAAA,WAAA,EACV,IAAI,EACf,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,EAAA,GACvD,KAAK,EAAA,CACT;AAEN,CAAC;AAED,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button-BniJ4TT_.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 | \"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 {\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":["forwardRef","renderIcon","_jsxs","_Fragment","_jsx","Spinner","cn","PrimitiveButton","Link","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent"],"mappings":"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"}
1
+ {"version":3,"file":"Button-BniJ4TT_.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 {\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":["forwardRef","renderIcon","_jsxs","_Fragment","_jsx","Spinner","cn","PrimitiveButton","Link","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var utils = require('./utils-CTr7wn5d.js');
6
- var button = require('./button-CKlGvVqQ.js');
6
+ var button = require('./button--P7-oIJb.js');
7
7
  var chevronLeft = require('./chevron-left-BldoOh5p.js');
8
8
  var chevronRight = require('./chevron-right-0jNdwX2Q.js');
9
9
  var chevronDown = require('./chevron-down-CPsWSS51.js');
@@ -8063,4 +8063,4 @@ exports.startOfISOWeek = startOfISOWeek;
8063
8063
  exports.startOfWeek = startOfWeek;
8064
8064
  exports.toDate = toDate;
8065
8065
  exports.warnOrThrowProtectedError = warnOrThrowProtectedError;
8066
- //# sourceMappingURL=Calendar-RRA-wKOF.js.map
8066
+ //# sourceMappingURL=Calendar-jVF8fRaS.js.map