@bigbinary/neeto-atoms 1.0.52 → 1.0.54
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/{DataTable-1-31X8Kf.js → DataTable-DuHFwJj9.js} +2 -2
- package/dist/{DataTable-1-31X8Kf.js.map → DataTable-DuHFwJj9.js.map} +1 -1
- 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/{Label-CS8ErCaf.js → Label-Vpj3xsO2.js} +2 -2
- package/dist/{Label-CS8ErCaf.js.map → Label-Vpj3xsO2.js.map} +1 -1
- package/dist/{Sheet-DVoy6if3.js → Sheet-Bw8GVQPS.js} +7 -3
- package/dist/{Sheet-DVoy6if3.js.map → Sheet-Bw8GVQPS.js.map} +1 -1
- 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/{DataTable-CT2pgEhZ.js → DataTable-DjQJLAya.js} +2 -2
- package/dist/cjs/{DataTable-CT2pgEhZ.js.map → DataTable-DjQJLAya.js.map} +1 -1
- 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/{Label-OpNoSl0F.js → Label-DFLFi0tH.js} +2 -2
- package/dist/cjs/{Label-OpNoSl0F.js.map → Label-DFLFi0tH.js.map} +1 -1
- package/dist/cjs/{Sheet-mJ7pJHrn.js → Sheet-By1W1pFD.js} +7 -3
- package/dist/cjs/{Sheet-mJ7pJHrn.js.map → Sheet-By1W1pFD.js.map} +1 -1
- 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/DataTable.js +2 -2
- 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/Label.js +2 -2
- package/dist/cjs/components/Sheet.js +1 -1
- package/dist/cjs/components/index.js +11 -9
- 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/index.js +1 -1
- package/dist/cjs/index.js +7 -7
- 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/DataTable.js +2 -2
- 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/Label.js +2 -2
- package/dist/components/Sheet.js +1 -1
- package/dist/components/Typography/Typography.d.ts +2 -2
- package/dist/components/index.js +8 -8
- package/dist/formik/ActionBlock.js +1 -1
- package/dist/formik/BlockNavigation.js +1 -1
- package/dist/formik/Button.js +1 -1
- package/dist/formik/index.js +1 -1
- package/dist/index.js +7 -7
- package/package.json +1 -1
- package/dist/Button-BCWJgHDy.js.map +0 -1
- package/dist/cjs/Button-BlNtYr1w.js.map +0 -1
|
@@ -7,7 +7,7 @@ var primitives_Empty = require('./primitives/Empty.js');
|
|
|
7
7
|
var primitives_Tooltip = require('./primitives/Tooltip.js');
|
|
8
8
|
var renderIcon = require('./renderIcon-BRrpZu9a.js');
|
|
9
9
|
var Typography = require('./Typography-BW6xEk10.js');
|
|
10
|
-
var Button = require('./Button-
|
|
10
|
+
var Button = require('./Button-DiBYVj5m.js');
|
|
11
11
|
|
|
12
12
|
function MaybeTooltipButton({
|
|
13
13
|
buttonProps,
|
|
@@ -74,4 +74,4 @@ const Empty = React.forwardRef(
|
|
|
74
74
|
Empty.displayName = "Empty";
|
|
75
75
|
|
|
76
76
|
exports.Empty = Empty;
|
|
77
|
-
//# sourceMappingURL=Empty-
|
|
77
|
+
//# sourceMappingURL=Empty-D8g97TNM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Empty-
|
|
1
|
+
{"version":3,"file":"Empty-D8g97TNM.js","sources":["../../src/components/Empty/Empty.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Empty as PrimitiveEmpty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n} from \"src/primitives/Empty\";\nimport { Button } from \"src/components/Button\";\nimport { Typography } from \"src/components/Typography\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\n\nexport interface EmptyProps extends React.ComponentProps<\"div\"> {\n /** Image URL or JSX for the media area. */\n image?: string | React.ReactNode;\n /** Icon for the media area (rendered inside EmptyMedia with variant=\"icon\"). */\n icon?: IconProp;\n /** Empty state title. */\n title?: string;\n /** Description text or JSX. */\n description?: React.ReactNode;\n /** Additional help text below the description. */\n helpText?: React.ReactNode;\n /** Props forwarded to the primary action Button. */\n primaryButtonProps?: React.ComponentProps<typeof Button>;\n /** Props forwarded to the secondary action Button. */\n secondaryButtonProps?: React.ComponentProps<typeof Button>;\n /** Text displayed between the primary and secondary buttons (e.g., \"or\"). */\n buttonSeparatorText?: string;\n /** Show tooltip on disabled buttons using their label as content. */\n showTooltipWhenButtonDisabled?: boolean;\n /** Additional CSS class names. */\n className?: string;\n}\n\nfunction MaybeTooltipButton({\n buttonProps,\n showTooltipWhenDisabled,\n defaultVariant,\n}: {\n buttonProps: React.ComponentProps<typeof Button>;\n showTooltipWhenDisabled: boolean;\n defaultVariant: \"default\" | \"outline\";\n}) {\n const button = <Button variant={defaultVariant} {...buttonProps} />;\n\n if (showTooltipWhenDisabled && buttonProps.disabled && buttonProps.label) {\n return (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex\">{button}</span>\n </TooltipTrigger>\n <TooltipContent>{buttonProps.label}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n}\n\nconst Empty = forwardRef<HTMLDivElement, EmptyProps>(\n (\n {\n image,\n icon,\n title,\n description,\n helpText,\n primaryButtonProps,\n secondaryButtonProps,\n buttonSeparatorText,\n showTooltipWhenButtonDisabled = false,\n className,\n ...otherProps\n },\n ref\n ) => {\n const hasMedia = image || icon;\n const hasButtons = primaryButtonProps || secondaryButtonProps;\n\n return (\n <PrimitiveEmpty ref={ref} className={cn(className)} {...otherProps}>\n <EmptyHeader>\n {hasMedia && (\n <>\n {image && (\n <EmptyMedia>\n {typeof image === \"string\" ? (\n <img src={image} alt={title ?? \"\"} />\n ) : (\n image\n )}\n </EmptyMedia>\n )}\n {!image && icon && (\n <EmptyMedia variant=\"icon\">{renderIcon(icon)}</EmptyMedia>\n )}\n </>\n )}\n {title && (\n <Typography variant=\"h4\" asChild>\n <EmptyTitle>{title}</EmptyTitle>\n </Typography>\n )}\n {description && (\n <Typography variant=\"body3\" color=\"muted\" asChild>\n <EmptyDescription>{description}</EmptyDescription>\n </Typography>\n )}\n {helpText && (\n <Typography variant=\"body3\" color=\"muted\" asChild>\n <p>{helpText}</p>\n </Typography>\n )}\n </EmptyHeader>\n\n {hasButtons && (\n <EmptyContent>\n <div className=\"flex flex-wrap items-center justify-center gap-2\">\n {primaryButtonProps && (\n <MaybeTooltipButton\n buttonProps={primaryButtonProps}\n showTooltipWhenDisabled={showTooltipWhenButtonDisabled}\n defaultVariant=\"default\"\n />\n )}\n {buttonSeparatorText &&\n primaryButtonProps &&\n secondaryButtonProps && (\n <Typography variant=\"body3\" color=\"muted\" asChild>\n <span>{buttonSeparatorText}</span>\n </Typography>\n )}\n {secondaryButtonProps && (\n <MaybeTooltipButton\n buttonProps={secondaryButtonProps}\n showTooltipWhenDisabled={showTooltipWhenButtonDisabled}\n defaultVariant=\"outline\"\n />\n )}\n </div>\n </EmptyContent>\n )}\n </PrimitiveEmpty>\n );\n }\n);\n\nEmpty.displayName = \"Empty\";\n\nexport { Empty };\n"],"names":["jsx","Button","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","forwardRef","jsxs","PrimitiveEmpty","cn","EmptyHeader","Fragment","EmptyMedia","renderIcon","Typography","EmptyTitle","EmptyDescription","EmptyContent"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ var primitives_Label = require('./primitives/Label.js');
|
|
|
8
8
|
var primitives_Tooltip = require('./primitives/Tooltip.js');
|
|
9
9
|
var createLucideIcon = require('./createLucideIcon-D0tRgV6l.js');
|
|
10
10
|
var Popover = require('./Popover-DuRSsDHz.js');
|
|
11
|
-
var Button = require('./Button-
|
|
11
|
+
var Button = require('./Button-DiBYVj5m.js');
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -86,4 +86,4 @@ const Label = React.forwardRef(
|
|
|
86
86
|
Label.displayName = "Label";
|
|
87
87
|
|
|
88
88
|
exports.Label = Label;
|
|
89
|
-
//# sourceMappingURL=Label-
|
|
89
|
+
//# sourceMappingURL=Label-DFLFi0tH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Label-
|
|
1
|
+
{"version":3,"file":"Label-DFLFi0tH.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":["createLucideIcon","forwardRef","CircleHelpIcon","jsx","cn","renderIcon","jsxs","Popover","Button","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","PrimitiveLabel"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -108,9 +108,13 @@ const Sheet = React.forwardRef(
|
|
|
108
108
|
if (!closeOnEsc) e.preventDefault();
|
|
109
109
|
};
|
|
110
110
|
const handleOpenAutoFocus = (e) => {
|
|
111
|
-
if (initialFocusRef
|
|
111
|
+
if (initialFocusRef) {
|
|
112
112
|
e.preventDefault();
|
|
113
|
-
initialFocusRef.current
|
|
113
|
+
if (initialFocusRef.current) {
|
|
114
|
+
initialFocusRef.current.focus();
|
|
115
|
+
} else {
|
|
116
|
+
requestAnimationFrame(() => initialFocusRef.current?.focus());
|
|
117
|
+
}
|
|
114
118
|
}
|
|
115
119
|
onOpenAutoFocusProp?.(e);
|
|
116
120
|
};
|
|
@@ -157,4 +161,4 @@ Sheet.Title = SheetTitle;
|
|
|
157
161
|
Sheet.Description = SheetDescription;
|
|
158
162
|
|
|
159
163
|
exports.Sheet = Sheet;
|
|
160
|
-
//# sourceMappingURL=Sheet-
|
|
164
|
+
//# sourceMappingURL=Sheet-By1W1pFD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sheet-mJ7pJHrn.js","sources":["../../src/components/Sheet/constants.ts","../../src/components/Sheet/Sheet.tsx"],"sourcesContent":["type SheetSize = \"small\" | \"large\" | \"extraLarge\";\n\n// Uses data-[side] selector to match primitive specificity so tailwind-merge\n// can override the default sm:max-w-sm from the primitive.\nexport const SIZE_CLASS_MAP: Record<SheetSize, string> = {\n small: \"data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\",\n large: \"data-[side=left]:sm:max-w-lg data-[side=right]:sm:max-w-lg\",\n extraLarge: \"data-[side=left]:sm:max-w-2xl data-[side=right]:sm:max-w-2xl\",\n};\n","import React, { forwardRef, type ReactNode, type RefObject } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Sheet as PrimitiveSheet,\n SheetContent as PrimitiveSheetContent,\n SheetDescription as PrimitiveSheetDescription,\n SheetFooter as PrimitiveSheetFooter,\n SheetHeader as PrimitiveSheetHeader,\n SheetTitle as PrimitiveSheetTitle,\n} from \"src/primitives/Sheet\";\n\ntype SheetSize = \"small\" | \"large\" | \"extraLarge\";\n\n/** Radix Sheet.Content props we forward via ...otherProps. */\ntype SheetContentProps = React.ComponentProps<typeof PrimitiveSheetContent>;\n\nexport interface SheetProps extends Omit<\n SheetContentProps,\n | \"children\"\n | \"className\"\n | \"side\"\n | \"showCloseButton\"\n | \"onEscapeKeyDown\"\n | \"onInteractOutside\"\n> {\n /** Size of the sheet. */\n size?: SheetSize;\n /** Whether the sheet is open. */\n isOpen?: boolean;\n /** Callback invoked when the sheet is closed. */\n onClose?: () => void;\n /** Content rendered inside the sheet. */\n children?: ReactNode;\n /** Additional CSS class names applied to the sheet content. */\n className?: string;\n /** Close on pressing the Esc key. */\n closeOnEsc?: boolean;\n /** Show the close button. */\n closeButton?: boolean;\n /** Additional CSS class names applied to the backdrop/overlay. */\n backdropClassName?: string;\n /** Close on clicking outside the sheet. */\n closeOnOutsideClick?: boolean;\n /** Ref of the element to receive focus when the sheet opens. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** Ref of the element to receive focus when the sheet closes. */\n finalFocusRef?: RefObject<HTMLElement | null>;\n /** Which side the sheet slides in from. */\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n /** Radix Dialog `modal` prop — controls modal vs non-modal behaviour. */\n modal?: boolean;\n /** Radix Dialog `defaultOpen` prop. */\n defaultOpen?: boolean;\n}\n\nimport { SIZE_CLASS_MAP } from \"./constants\";\n\ninterface SheetSubcomponentProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst SheetHeader = forwardRef<HTMLDivElement, SheetSubcomponentProps>(\n ({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetHeader\n ref={ref}\n className={cn(className)}\n data-testid=\"sheet-header\"\n {...otherProps}\n >\n {children}\n </PrimitiveSheetHeader>\n )\n);\nSheetHeader.displayName = \"Sheet.Header\";\n\nconst SheetBody = forwardRef<\n HTMLDivElement,\n SheetSubcomponentProps & { hasFooter?: boolean }\n>(({ children, className, hasFooter = true, ...otherProps }, ref) => (\n <div\n ref={ref}\n data-slot=\"sheet-body\"\n data-testid=\"sheet-body\"\n className={cn(\n \"flex flex-1 flex-col items-start justify-start overflow-y-auto px-6\",\n hasFooter && \"pb-0\",\n className\n )}\n {...otherProps}\n >\n {children}\n </div>\n));\nSheetBody.displayName = \"Sheet.Body\";\n\nconst SheetFooter = forwardRef<HTMLDivElement, SheetSubcomponentProps>(\n ({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetFooter\n ref={ref}\n className={cn(\n \"flex flex-row items-center justify-start gap-2\",\n className\n )}\n data-testid=\"sheet-footer\"\n {...otherProps}\n >\n {children}\n </PrimitiveSheetFooter>\n )\n);\nSheetFooter.displayName = \"Sheet.Footer\";\n\nconst SheetTitle = forwardRef<\n HTMLHeadingElement,\n React.ComponentProps<typeof PrimitiveSheetTitle>\n>(({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetTitle\n ref={ref}\n className={cn(\"text-2xl font-semibold\", className)}\n {...otherProps}\n >\n {children}\n </PrimitiveSheetTitle>\n));\nSheetTitle.displayName = \"Sheet.Title\";\n\nconst SheetDescription = forwardRef<\n HTMLParagraphElement,\n React.ComponentProps<typeof PrimitiveSheetDescription>\n>(({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetDescription\n ref={ref}\n className={cn(className)}\n {...otherProps}\n >\n {children}\n </PrimitiveSheetDescription>\n));\nSheetDescription.displayName = \"Sheet.Description\";\n\nconst Sheet = forwardRef<HTMLDivElement, SheetProps>(\n (\n {\n size = \"small\",\n isOpen = false,\n onClose = () => {},\n children,\n className,\n closeOnEsc = true,\n closeButton = true,\n backdropClassName,\n closeOnOutsideClick = true,\n initialFocusRef,\n finalFocusRef,\n side = \"right\",\n modal,\n defaultOpen,\n // Radix content handlers — intercept and merge\n onOpenAutoFocus: onOpenAutoFocusProp,\n onCloseAutoFocus: onCloseAutoFocusProp,\n ...otherProps\n },\n ref\n ) => {\n const handleOpenChange = (open: boolean) => {\n if (!open) onClose();\n };\n\n const handleInteractOutside = (e: Event) => {\n if (!closeOnOutsideClick) e.preventDefault();\n };\n\n const handleEscapeKeyDown = (e: KeyboardEvent) => {\n if (!closeOnEsc) e.preventDefault();\n };\n\n const handleOpenAutoFocus = (e: Event) => {\n if (initialFocusRef?.current) {\n e.preventDefault();\n initialFocusRef.current.focus();\n }\n onOpenAutoFocusProp?.(e);\n };\n\n const handleCloseAutoFocus = (e: Event) => {\n if (finalFocusRef?.current) {\n e.preventDefault();\n finalFocusRef.current.focus();\n }\n onCloseAutoFocusProp?.(e);\n };\n\n return (\n <PrimitiveSheet\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n defaultOpen={defaultOpen}\n >\n <PrimitiveSheetContent\n ref={ref}\n side={side}\n showCloseButton={closeButton}\n overlayClassName={backdropClassName}\n onInteractOutside={handleInteractOutside}\n onEscapeKeyDown={handleEscapeKeyDown}\n onOpenAutoFocus={handleOpenAutoFocus}\n onCloseAutoFocus={handleCloseAutoFocus}\n className={cn(SIZE_CLASS_MAP[size], className)}\n data-testid=\"sheet-wrapper\"\n {...otherProps}\n >\n {children}\n </PrimitiveSheetContent>\n </PrimitiveSheet>\n );\n }\n) as React.ForwardRefExoticComponent<\n SheetProps & React.RefAttributes<HTMLDivElement>\n> & {\n Header: typeof SheetHeader;\n Body: typeof SheetBody;\n Footer: typeof SheetFooter;\n Title: typeof SheetTitle;\n Description: typeof SheetDescription;\n};\n\nSheet.displayName = \"Sheet\";\nSheet.Header = SheetHeader;\nSheet.Body = SheetBody;\nSheet.Footer = SheetFooter;\nSheet.Title = SheetTitle;\nSheet.Description = SheetDescription;\n\nexport { Sheet };\n"],"names":["forwardRef","jsx","PrimitiveSheetHeader","cn","PrimitiveSheetFooter","PrimitiveSheetTitle","PrimitiveSheetDescription","PrimitiveSheet","PrimitiveSheetContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Sheet-By1W1pFD.js","sources":["../../src/components/Sheet/constants.ts","../../src/components/Sheet/Sheet.tsx"],"sourcesContent":["type SheetSize = \"small\" | \"large\" | \"extraLarge\";\n\n// Uses data-[side] selector to match primitive specificity so tailwind-merge\n// can override the default sm:max-w-sm from the primitive.\nexport const SIZE_CLASS_MAP: Record<SheetSize, string> = {\n small: \"data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\",\n large: \"data-[side=left]:sm:max-w-lg data-[side=right]:sm:max-w-lg\",\n extraLarge: \"data-[side=left]:sm:max-w-2xl data-[side=right]:sm:max-w-2xl\",\n};\n","import React, { forwardRef, type ReactNode, type RefObject } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Sheet as PrimitiveSheet,\n SheetContent as PrimitiveSheetContent,\n SheetDescription as PrimitiveSheetDescription,\n SheetFooter as PrimitiveSheetFooter,\n SheetHeader as PrimitiveSheetHeader,\n SheetTitle as PrimitiveSheetTitle,\n} from \"src/primitives/Sheet\";\n\ntype SheetSize = \"small\" | \"large\" | \"extraLarge\";\n\n/** Radix Sheet.Content props we forward via ...otherProps. */\ntype SheetContentProps = React.ComponentProps<typeof PrimitiveSheetContent>;\n\nexport interface SheetProps extends Omit<\n SheetContentProps,\n | \"children\"\n | \"className\"\n | \"side\"\n | \"showCloseButton\"\n | \"onEscapeKeyDown\"\n | \"onInteractOutside\"\n> {\n /** Size of the sheet. */\n size?: SheetSize;\n /** Whether the sheet is open. */\n isOpen?: boolean;\n /** Callback invoked when the sheet is closed. */\n onClose?: () => void;\n /** Content rendered inside the sheet. */\n children?: ReactNode;\n /** Additional CSS class names applied to the sheet content. */\n className?: string;\n /** Close on pressing the Esc key. */\n closeOnEsc?: boolean;\n /** Show the close button. */\n closeButton?: boolean;\n /** Additional CSS class names applied to the backdrop/overlay. */\n backdropClassName?: string;\n /** Close on clicking outside the sheet. */\n closeOnOutsideClick?: boolean;\n /** Ref of the element to receive focus when the sheet opens. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** Ref of the element to receive focus when the sheet closes. */\n finalFocusRef?: RefObject<HTMLElement | null>;\n /** Which side the sheet slides in from. */\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n /** Radix Dialog `modal` prop — controls modal vs non-modal behaviour. */\n modal?: boolean;\n /** Radix Dialog `defaultOpen` prop. */\n defaultOpen?: boolean;\n}\n\nimport { SIZE_CLASS_MAP } from \"./constants\";\n\ninterface SheetSubcomponentProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst SheetHeader = forwardRef<HTMLDivElement, SheetSubcomponentProps>(\n ({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetHeader\n ref={ref}\n className={cn(className)}\n data-testid=\"sheet-header\"\n {...otherProps}\n >\n {children}\n </PrimitiveSheetHeader>\n )\n);\nSheetHeader.displayName = \"Sheet.Header\";\n\nconst SheetBody = forwardRef<\n HTMLDivElement,\n SheetSubcomponentProps & { hasFooter?: boolean }\n>(({ children, className, hasFooter = true, ...otherProps }, ref) => (\n <div\n ref={ref}\n data-slot=\"sheet-body\"\n data-testid=\"sheet-body\"\n className={cn(\n \"flex flex-1 flex-col items-start justify-start overflow-y-auto px-6\",\n hasFooter && \"pb-0\",\n className\n )}\n {...otherProps}\n >\n {children}\n </div>\n));\nSheetBody.displayName = \"Sheet.Body\";\n\nconst SheetFooter = forwardRef<HTMLDivElement, SheetSubcomponentProps>(\n ({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetFooter\n ref={ref}\n className={cn(\n \"flex flex-row items-center justify-start gap-2\",\n className\n )}\n data-testid=\"sheet-footer\"\n {...otherProps}\n >\n {children}\n </PrimitiveSheetFooter>\n )\n);\nSheetFooter.displayName = \"Sheet.Footer\";\n\nconst SheetTitle = forwardRef<\n HTMLHeadingElement,\n React.ComponentProps<typeof PrimitiveSheetTitle>\n>(({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetTitle\n ref={ref}\n className={cn(\"text-2xl font-semibold\", className)}\n {...otherProps}\n >\n {children}\n </PrimitiveSheetTitle>\n));\nSheetTitle.displayName = \"Sheet.Title\";\n\nconst SheetDescription = forwardRef<\n HTMLParagraphElement,\n React.ComponentProps<typeof PrimitiveSheetDescription>\n>(({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetDescription\n ref={ref}\n className={cn(className)}\n {...otherProps}\n >\n {children}\n </PrimitiveSheetDescription>\n));\nSheetDescription.displayName = \"Sheet.Description\";\n\nconst Sheet = forwardRef<HTMLDivElement, SheetProps>(\n (\n {\n size = \"small\",\n isOpen = false,\n onClose = () => {},\n children,\n className,\n closeOnEsc = true,\n closeButton = true,\n backdropClassName,\n closeOnOutsideClick = true,\n initialFocusRef,\n finalFocusRef,\n side = \"right\",\n modal,\n defaultOpen,\n // Radix content handlers — intercept and merge\n onOpenAutoFocus: onOpenAutoFocusProp,\n onCloseAutoFocus: onCloseAutoFocusProp,\n ...otherProps\n },\n ref\n ) => {\n const handleOpenChange = (open: boolean) => {\n if (!open) onClose();\n };\n\n const handleInteractOutside = (e: Event) => {\n if (!closeOnOutsideClick) e.preventDefault();\n };\n\n const handleEscapeKeyDown = (e: KeyboardEvent) => {\n if (!closeOnEsc) e.preventDefault();\n };\n\n const handleOpenAutoFocus = (e: Event) => {\n if (initialFocusRef) {\n e.preventDefault();\n if (initialFocusRef.current) {\n initialFocusRef.current.focus();\n } else {\n requestAnimationFrame(() => initialFocusRef.current?.focus());\n }\n }\n onOpenAutoFocusProp?.(e);\n };\n\n const handleCloseAutoFocus = (e: Event) => {\n if (finalFocusRef?.current) {\n e.preventDefault();\n finalFocusRef.current.focus();\n }\n onCloseAutoFocusProp?.(e);\n };\n\n return (\n <PrimitiveSheet\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n defaultOpen={defaultOpen}\n >\n <PrimitiveSheetContent\n ref={ref}\n side={side}\n showCloseButton={closeButton}\n overlayClassName={backdropClassName}\n onInteractOutside={handleInteractOutside}\n onEscapeKeyDown={handleEscapeKeyDown}\n onOpenAutoFocus={handleOpenAutoFocus}\n onCloseAutoFocus={handleCloseAutoFocus}\n className={cn(SIZE_CLASS_MAP[size], className)}\n data-testid=\"sheet-wrapper\"\n {...otherProps}\n >\n {children}\n </PrimitiveSheetContent>\n </PrimitiveSheet>\n );\n }\n) as React.ForwardRefExoticComponent<\n SheetProps & React.RefAttributes<HTMLDivElement>\n> & {\n Header: typeof SheetHeader;\n Body: typeof SheetBody;\n Footer: typeof SheetFooter;\n Title: typeof SheetTitle;\n Description: typeof SheetDescription;\n};\n\nSheet.displayName = \"Sheet\";\nSheet.Header = SheetHeader;\nSheet.Body = SheetBody;\nSheet.Footer = SheetFooter;\nSheet.Title = SheetTitle;\nSheet.Description = SheetDescription;\n\nexport { Sheet };\n"],"names":["forwardRef","jsx","PrimitiveSheetHeader","cn","PrimitiveSheetFooter","PrimitiveSheetTitle","PrimitiveSheetDescription","PrimitiveSheet","PrimitiveSheetContent"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var Alert = require('../Alert-
|
|
3
|
+
var Alert = require('../Alert-Bo3a2nZt.js');
|
|
4
4
|
require('react/jsx-runtime');
|
|
5
5
|
require('react');
|
|
6
6
|
require('react-i18next');
|
|
@@ -26,7 +26,7 @@ require('../index-lWVw05cs.js');
|
|
|
26
26
|
require('../index-CS_WSHYi.js');
|
|
27
27
|
require('../index-Df-Ffa3s.js');
|
|
28
28
|
require('../index-DcCSSgb7.js');
|
|
29
|
-
require('../Button-
|
|
29
|
+
require('../Button-DiBYVj5m.js');
|
|
30
30
|
require('react-router-dom');
|
|
31
31
|
require('../renderIcon-BRrpZu9a.js');
|
|
32
32
|
require('../primitives/Button.js');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var Button = require('../Button-
|
|
3
|
+
var Button = require('../Button-DiBYVj5m.js');
|
|
4
4
|
require('react/jsx-runtime');
|
|
5
5
|
require('react');
|
|
6
6
|
require('react-router-dom');
|
|
@@ -35,5 +35,7 @@ require('../index-CB9xFokC.js');
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
|
|
38
|
+
exports.BUTTON_SIZES = Button.BUTTON_SIZES;
|
|
39
|
+
exports.BUTTON_VARIANTS = Button.BUTTON_VARIANTS;
|
|
38
40
|
exports.Button = Button.Button;
|
|
39
41
|
//# sourceMappingURL=Button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Button.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var DataTable = require('../DataTable-
|
|
3
|
+
var DataTable = require('../DataTable-DjQJLAya.js');
|
|
4
4
|
require('react/jsx-runtime');
|
|
5
5
|
require('react');
|
|
6
6
|
require('../primitives/Table.js');
|
|
@@ -41,7 +41,7 @@ require('../index-C9ICrOhM.js');
|
|
|
41
41
|
require('../floating-ui.react-dom-B4Aw6O7R.js');
|
|
42
42
|
require('../index-Df-Ffa3s.js');
|
|
43
43
|
require('../index-DoVhdseB.js');
|
|
44
|
-
require('../Button-
|
|
44
|
+
require('../Button-DiBYVj5m.js');
|
|
45
45
|
require('react-router-dom');
|
|
46
46
|
require('../renderIcon-BRrpZu9a.js');
|
|
47
47
|
require('../primitives/Tooltip.js');
|
|
@@ -5,10 +5,11 @@ var React = require('react');
|
|
|
5
5
|
var primitives_DropdownMenu = require('../primitives/DropdownMenu.js');
|
|
6
6
|
var reactI18next = require('react-i18next');
|
|
7
7
|
var utils = require('../utils-BhM0B89p.js');
|
|
8
|
-
var renderIcon = require('../renderIcon-BRrpZu9a.js');
|
|
9
8
|
var primitives_Button = require('../primitives/Button.js');
|
|
10
9
|
var primitives_ButtonGroup = require('../primitives/ButtonGroup.js');
|
|
10
|
+
var Button = require('../Button-DiBYVj5m.js');
|
|
11
11
|
var chevronDown = require('../chevron-down-CPsWSS51.js');
|
|
12
|
+
var renderIcon = require('../renderIcon-BRrpZu9a.js');
|
|
12
13
|
require('../chevron-right-0jNdwX2Q.js');
|
|
13
14
|
require('../createLucideIcon-D0tRgV6l.js');
|
|
14
15
|
require('../check-BQgcDXys.js');
|
|
@@ -36,6 +37,12 @@ require('../button-CMl9rLXi.js');
|
|
|
36
37
|
require('../index-vioSzJOw.js');
|
|
37
38
|
require('../index-DuNgWCXZ.js');
|
|
38
39
|
require('../separator-DSL-aG1J.js');
|
|
40
|
+
require('react-router-dom');
|
|
41
|
+
require('../primitives/Spinner.js');
|
|
42
|
+
require('../loader-circle-Bw7zP2Gn.js');
|
|
43
|
+
require('../primitives/Tooltip.js');
|
|
44
|
+
require('../tooltip-BYCcUMZn.js');
|
|
45
|
+
require('../index-CB9xFokC.js');
|
|
39
46
|
|
|
40
47
|
const SIDE_MAP = {
|
|
41
48
|
top: "top",
|
|
@@ -67,36 +74,11 @@ const ALIGN_MAP = {
|
|
|
67
74
|
"right-end": "end",
|
|
68
75
|
auto: "end"
|
|
69
76
|
};
|
|
70
|
-
const BUTTON_STYLE_MAP = {
|
|
71
|
-
primary: "default",
|
|
72
|
-
secondary: "secondary",
|
|
73
|
-
tertiary: "outline",
|
|
74
|
-
text: "ghost",
|
|
75
|
-
danger: "destructive",
|
|
76
|
-
"danger-text": "ghost",
|
|
77
|
-
link: "link"
|
|
78
|
-
};
|
|
79
|
-
const BUTTON_SIZE_MAP = {
|
|
80
|
-
small: "sm",
|
|
81
|
-
medium: "default",
|
|
82
|
-
large: "lg"
|
|
83
|
-
};
|
|
84
|
-
const MENU_ITEM_STYLE_MAP = {
|
|
85
|
-
default: "default",
|
|
86
|
-
danger: "destructive"
|
|
87
|
-
};
|
|
88
|
-
const CHEVRON_SIZE_MAP = {
|
|
89
|
-
small: "size-3.5",
|
|
90
|
-
medium: "size-4",
|
|
91
|
-
large: "size-4"
|
|
92
|
-
};
|
|
93
77
|
|
|
94
78
|
const SplitTrigger = React.forwardRef(
|
|
95
79
|
({
|
|
96
80
|
label,
|
|
97
81
|
icon,
|
|
98
|
-
buttonStyle,
|
|
99
|
-
buttonSize,
|
|
100
82
|
buttonProps,
|
|
101
83
|
disabled,
|
|
102
84
|
isOpen,
|
|
@@ -106,8 +88,8 @@ const SplitTrigger = React.forwardRef(
|
|
|
106
88
|
...otherProps
|
|
107
89
|
}, ref) => {
|
|
108
90
|
const { t } = reactI18next.useTranslation();
|
|
109
|
-
const variant =
|
|
110
|
-
const size =
|
|
91
|
+
const variant = buttonProps?.variant;
|
|
92
|
+
const size = buttonProps?.size;
|
|
111
93
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
112
94
|
primitives_ButtonGroup.ButtonGroup,
|
|
113
95
|
{
|
|
@@ -115,21 +97,18 @@ const SplitTrigger = React.forwardRef(
|
|
|
115
97
|
className: utils.cn("neeto-ui-action-dropdown", className),
|
|
116
98
|
...otherProps,
|
|
117
99
|
children: [
|
|
118
|
-
/* @__PURE__ */ jsxRuntime.
|
|
119
|
-
|
|
100
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
101
|
+
Button.Button,
|
|
120
102
|
{
|
|
121
103
|
ref: actionButtonRef,
|
|
122
104
|
type: "button",
|
|
123
|
-
|
|
124
|
-
|
|
105
|
+
label,
|
|
106
|
+
icon,
|
|
107
|
+
iconPosition: "left",
|
|
125
108
|
disabled,
|
|
126
|
-
onClick,
|
|
127
|
-
"data-testid": "action-dropdown-btn",
|
|
128
109
|
...buttonProps,
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
label && /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
|
|
132
|
-
]
|
|
110
|
+
onClick,
|
|
111
|
+
"data-testid": "action-dropdown-btn"
|
|
133
112
|
}
|
|
134
113
|
),
|
|
135
114
|
/* @__PURE__ */ jsxRuntime.jsx(primitives_DropdownMenu.DropdownMenuTrigger, { asChild: true, disabled, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -149,7 +128,6 @@ const SplitTrigger = React.forwardRef(
|
|
|
149
128
|
{
|
|
150
129
|
"aria-hidden": "true",
|
|
151
130
|
className: utils.cn(
|
|
152
|
-
CHEVRON_SIZE_MAP[buttonSize],
|
|
153
131
|
"shrink-0 transition-transform duration-200",
|
|
154
132
|
isOpen && "rotate-180"
|
|
155
133
|
)
|
|
@@ -168,8 +146,6 @@ const TriggerButton = React.forwardRef(
|
|
|
168
146
|
({
|
|
169
147
|
label,
|
|
170
148
|
icon,
|
|
171
|
-
buttonStyle,
|
|
172
|
-
buttonSize,
|
|
173
149
|
buttonProps,
|
|
174
150
|
disabled,
|
|
175
151
|
isOpen,
|
|
@@ -177,36 +153,28 @@ const TriggerButton = React.forwardRef(
|
|
|
177
153
|
className,
|
|
178
154
|
...otherProps
|
|
179
155
|
}, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
180
|
-
|
|
156
|
+
Button.Button,
|
|
181
157
|
{
|
|
182
158
|
ref,
|
|
183
159
|
type: "button",
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
160
|
+
label,
|
|
161
|
+
icon,
|
|
162
|
+
iconPosition: "left",
|
|
163
|
+
trailing: /* @__PURE__ */ jsxRuntime.jsx(
|
|
164
|
+
chevronDown.ChevronDown,
|
|
165
|
+
{
|
|
166
|
+
"aria-hidden": "true",
|
|
167
|
+
className: utils.cn(
|
|
168
|
+
"shrink-0 transition-transform duration-200",
|
|
169
|
+
isOpen && "rotate-180"
|
|
170
|
+
)
|
|
171
|
+
}
|
|
191
172
|
),
|
|
192
|
-
|
|
173
|
+
disabled,
|
|
193
174
|
...otherProps,
|
|
194
175
|
...buttonProps,
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
label && /* @__PURE__ */ jsxRuntime.jsx("span", { children: label }),
|
|
198
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
199
|
-
chevronDown.ChevronDown,
|
|
200
|
-
{
|
|
201
|
-
"aria-hidden": "true",
|
|
202
|
-
className: utils.cn(
|
|
203
|
-
CHEVRON_SIZE_MAP[buttonSize],
|
|
204
|
-
"shrink-0 transition-transform duration-200",
|
|
205
|
-
isOpen && "rotate-180"
|
|
206
|
-
)
|
|
207
|
-
}
|
|
208
|
-
)
|
|
209
|
-
] })
|
|
176
|
+
onClick,
|
|
177
|
+
className: utils.cn(className, buttonProps?.className)
|
|
210
178
|
}
|
|
211
179
|
)
|
|
212
180
|
);
|
|
@@ -217,8 +185,6 @@ const DropdownContext = React.createContext({ closeOnSelect: true });
|
|
|
217
185
|
const DropdownBase = ({
|
|
218
186
|
label,
|
|
219
187
|
icon,
|
|
220
|
-
buttonStyle = "primary",
|
|
221
|
-
buttonSize = "medium",
|
|
222
188
|
buttonProps,
|
|
223
189
|
customTarget,
|
|
224
190
|
disabled = false,
|
|
@@ -250,8 +216,6 @@ const DropdownBase = ({
|
|
|
250
216
|
const sharedTriggerProps = {
|
|
251
217
|
label,
|
|
252
218
|
icon,
|
|
253
|
-
buttonStyle,
|
|
254
|
-
buttonSize,
|
|
255
219
|
buttonProps,
|
|
256
220
|
disabled,
|
|
257
221
|
isOpen: open,
|
|
@@ -315,21 +279,19 @@ const MenuItem = React.forwardRef(
|
|
|
315
279
|
children,
|
|
316
280
|
isActive = false,
|
|
317
281
|
isDisabled = false,
|
|
318
|
-
|
|
282
|
+
variant = "default",
|
|
319
283
|
prefix,
|
|
320
284
|
suffix,
|
|
321
285
|
to,
|
|
322
286
|
href,
|
|
323
287
|
className,
|
|
324
288
|
onClick,
|
|
325
|
-
variant: _variant,
|
|
326
289
|
disabled: _disabled,
|
|
327
290
|
asChild: _asChild,
|
|
328
291
|
onSelect: _onSelect,
|
|
329
292
|
...otherProps
|
|
330
293
|
}, ref) => {
|
|
331
294
|
const { closeOnSelect } = React.useContext(DropdownContext);
|
|
332
|
-
const variant = MENU_ITEM_STYLE_MAP[style];
|
|
333
295
|
const linkHref = to ?? href;
|
|
334
296
|
const handleSelect = React.useCallback(
|
|
335
297
|
(e) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenu.js","sources":["../../../src/components/DropdownMenu/constants.ts","../../../src/components/DropdownMenu/SplitTrigger.tsx","../../../src/components/DropdownMenu/TriggerButton.tsx","../../../src/components/DropdownMenu/types.ts","../../../src/components/DropdownMenu/DropdownBase.tsx","../../../src/components/DropdownMenu/Divider.tsx","../../../src/components/DropdownMenu/Label.tsx","../../../src/components/DropdownMenu/Menu.tsx","../../../src/components/DropdownMenu/MenuItem.tsx","../../../src/components/DropdownMenu/SubMenu.tsx","../../../src/components/DropdownMenu/index.tsx"],"sourcesContent":["import type { ButtonSize, ButtonStyle } from \"./types\";\n\nexport 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: \"end\",\n};\n\nexport const BUTTON_STYLE_MAP: Record<\n ButtonStyle,\n \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"\n> = {\n primary: \"default\",\n secondary: \"secondary\",\n tertiary: \"outline\",\n text: \"ghost\",\n danger: \"destructive\",\n \"danger-text\": \"ghost\",\n link: \"link\",\n};\n\nexport const BUTTON_SIZE_MAP: Record<ButtonSize, \"sm\" | \"default\" | \"lg\"> = {\n small: \"sm\",\n medium: \"default\",\n large: \"lg\",\n};\n\nexport const MENU_ITEM_STYLE_MAP: Record<\n \"default\" | \"danger\",\n \"default\" | \"destructive\"\n> = {\n default: \"default\",\n danger: \"destructive\",\n};\n\nexport const CHEVRON_SIZE_MAP: Record<ButtonSize, string> = {\n small: \"size-3.5\",\n medium: \"size-4\",\n large: \"size-4\",\n};\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport { ButtonGroup } from \"src/primitives/ButtonGroup\";\nimport { DropdownMenuTrigger } from \"src/primitives/DropdownMenu\";\n\nimport {\n BUTTON_SIZE_MAP,\n BUTTON_STYLE_MAP,\n CHEVRON_SIZE_MAP,\n} from \"./constants\";\nimport type { BaseTriggerProps } from \"./types\";\n\ninterface SplitTriggerOwnProps extends BaseTriggerProps {\n /** Ref forwarded to the action button (left side). */\n actionButtonRef?: React.Ref<HTMLButtonElement>;\n}\n\n/**\n * Radix injects extra props (aria-expanded, data-state, …) via Slot on the\n * DropdownMenuTrigger child. We capture them with a rest-spread.\n */\ntype SplitTriggerProps = SplitTriggerOwnProps &\n Omit<React.ComponentProps<\"div\">, keyof SplitTriggerOwnProps>;\n\nconst SplitTrigger = forwardRef<HTMLDivElement, SplitTriggerProps>(\n (\n {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n actionButtonRef,\n className,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const variant = BUTTON_STYLE_MAP[buttonStyle];\n const size = BUTTON_SIZE_MAP[buttonSize];\n\n return (\n <ButtonGroup\n ref={ref}\n className={cn(\"neeto-ui-action-dropdown\", className)}\n {...otherProps}\n >\n {/* Action button — fires the primary onClick */}\n <PrimitiveButton\n ref={actionButtonRef}\n type=\"button\"\n variant={variant}\n size={size}\n disabled={disabled}\n onClick={onClick}\n data-testid=\"action-dropdown-btn\"\n {...buttonProps}\n >\n {icon && renderIcon(icon, \"size-4\")}\n {label && <span>{label}</span>}\n </PrimitiveButton>\n\n {/* Chevron trigger — opens the dropdown menu */}\n <DropdownMenuTrigger asChild disabled={disabled}>\n <PrimitiveButton\n type=\"button\"\n variant={variant}\n size={size}\n disabled={disabled}\n aria-label={t(\n \"neetoatoms.dropdownMenu.openMenu\",\n \"Open dropdown menu\"\n )}\n className=\"px-1.5\"\n >\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n CHEVRON_SIZE_MAP[buttonSize],\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </PrimitiveButton>\n </DropdownMenuTrigger>\n </ButtonGroup>\n );\n }\n);\nSplitTrigger.displayName = \"Dropdown.SplitTrigger\";\n\nexport { SplitTrigger };\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { renderIcon } from \"src/lib/renderIcon\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\n\nimport { BUTTON_SIZE_MAP, BUTTON_STYLE_MAP, CHEVRON_SIZE_MAP } from \"./constants\";\nimport type { BaseTriggerProps } from \"./types\";\n\n/**\n * Extra props that Radix's Slot injects when the parent Trigger uses\n * `asChild` (aria-expanded, aria-haspopup, data-state, id, …).\n * We capture them with a rest-spread so they reach the DOM button.\n */\ntype TriggerButtonProps = BaseTriggerProps &\n Omit<React.ComponentProps<\"button\">, keyof BaseTriggerProps>;\n\nconst TriggerButton = forwardRef<HTMLButtonElement, TriggerButtonProps>(\n (\n {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n className,\n ...otherProps\n },\n ref\n ) => (\n <PrimitiveButton\n ref={ref}\n type=\"button\"\n variant={BUTTON_STYLE_MAP[buttonStyle]}\n size={BUTTON_SIZE_MAP[buttonSize]}\n disabled={disabled}\n className={cn(\n buttonStyle === \"danger-text\" &&\n \"text-destructive hover:text-destructive\",\n \"gap-1.5\",\n className\n )}\n onClick={onClick}\n {...otherProps}\n {...buttonProps}\n >\n <span className=\"inline-flex items-center gap-1.5\">\n {icon && renderIcon(icon, \"size-4\")}\n {label && <span>{label}</span>}\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n CHEVRON_SIZE_MAP[buttonSize],\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </span>\n </PrimitiveButton>\n )\n);\nTriggerButton.displayName = \"Dropdown.TriggerButton\";\n\nexport { TriggerButton };\n","import { createContext, type ReactNode, type Ref } from \"react\";\n\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport {\n DropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n} from \"src/primitives/DropdownMenu\";\nimport type { IconProp } from \"src/lib/renderIcon\";\n\nexport type DropdownPosition =\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\nexport type ButtonStyle =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"text\"\n | \"danger\"\n | \"danger-text\"\n | \"link\";\n\nexport type ButtonSize = \"small\" | \"medium\" | \"large\";\n\nexport type MenuItemButtonStyle = \"default\" | \"danger\";\n\nexport interface BaseTriggerProps {\n label?: string;\n icon?: IconProp;\n buttonStyle: ButtonStyle;\n buttonSize: ButtonSize;\n buttonProps?: Omit<\n React.ComponentProps<typeof PrimitiveButton>,\n \"variant\" | \"size\" | \"disabled\"\n >;\n disabled: boolean;\n isOpen: boolean;\n onClick?: (e: React.MouseEvent) => void;\n}\n\nexport interface DropdownProps {\n /** Text label displayed inside the trigger button. */\n label?: string;\n /** Icon rendered inside the trigger button. */\n icon?: IconProp;\n /** Visual style of the trigger button(s). */\n buttonStyle?: ButtonStyle;\n /** Size of the trigger button(s). */\n buttonSize?: ButtonSize;\n /** Extra props forwarded to the trigger button. In split-button mode, forwarded to the action button. */\n buttonProps?: Omit<\n React.ComponentProps<typeof PrimitiveButton>,\n \"variant\" | \"size\" | \"disabled\"\n >;\n /** Custom trigger element. Overrides the default button trigger. */\n customTarget?: ReactNode | ((props: { isOpen: boolean }) => ReactNode);\n /** Whether the dropdown is disabled. */\n disabled?: boolean;\n /** Dropdown menu content. */\n children?: ReactNode;\n /** Position of the dropdown menu relative to the trigger. */\n position?: DropdownPosition;\n /** Whether pressing Escape closes the dropdown. */\n closeOnEsc?: boolean;\n /** Whether selecting an item closes the dropdown. */\n closeOnSelect?: boolean;\n /** Whether clicking outside closes the dropdown. */\n closeOnOutsideClick?: boolean;\n /** Controlled open state. */\n isOpen?: boolean;\n /** Callback fired when the dropdown closes. */\n onClose?: () => void;\n /**\n * Callback fired when the trigger button is clicked.\n * When provided (without `customTarget`), renders a **split-button**:\n * a primary action button (fires `onClick`) paired with a separate\n * chevron that opens the dropdown menu.\n */\n onClick?: (e: React.MouseEvent) => void;\n /** Additional CSS class names for the trigger wrapper. */\n className?: string;\n /** Ref forwarded to the trigger button. In split-button mode, forwarded to the action button. */\n triggerRef?: Ref<HTMLButtonElement>;\n /** Extra props forwarded to the DropdownMenuContent. */\n dropdownProps?: Omit<\n React.ComponentProps<typeof DropdownMenuContent>,\n \"side\" | \"align\"\n >;\n}\n\nexport interface MenuItemProps extends Omit<\n React.ComponentProps<typeof PrimitiveDropdownMenuItem>,\n \"prefix\" | \"style\" | \"onClick\"\n> {\n /** Highlight as active. */\n isActive?: boolean;\n /** Disable the menu item. */\n isDisabled?: boolean;\n /** Visual style of the menu item. */\n style?: MenuItemButtonStyle;\n /** Content rendered before the label. */\n prefix?: ReactNode;\n /** Content rendered after the label. */\n suffix?: ReactNode;\n /** Internal route (renders as anchor). */\n to?: string;\n /** External link (renders as anchor). */\n href?: string;\n /** Callback fired when the item is selected. */\n onClick?: (e: Event) => void;\n /** Children / label text. */\n children?: ReactNode;\n /** Additional CSS class names. */\n className?: string;\n}\n\nexport const DropdownContext = createContext({ closeOnSelect: true });\n","import { useCallback, useState } from \"react\";\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"src/primitives/DropdownMenu\";\n\nimport { ALIGN_MAP, SIDE_MAP } from \"./constants\";\nimport { SplitTrigger } from \"./SplitTrigger\";\nimport { TriggerButton } from \"./TriggerButton\";\nimport { DropdownContext, type DropdownProps } from \"./types\";\n\nconst DropdownBase = ({\n label,\n icon,\n buttonStyle = \"primary\",\n buttonSize = \"medium\",\n buttonProps,\n customTarget,\n disabled = false,\n children,\n position = \"bottom-end\",\n closeOnEsc = true,\n closeOnSelect = true,\n closeOnOutsideClick = true,\n isOpen: isOpenProp,\n onClose,\n onClick,\n className,\n triggerRef,\n dropdownProps,\n}: DropdownProps) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = isOpenProp !== undefined;\n const open = isControlled ? isOpenProp : internalOpen;\n const handleOpenChange = useCallback(\n (isOpen: boolean) => {\n if (!isControlled) setInternalOpen(isOpen);\n if (!isOpen) onClose?.();\n },\n [isControlled, onClose]\n );\n\n const side = SIDE_MAP[position] ?? \"bottom\";\n const align = ALIGN_MAP[position] ?? \"end\";\n\n // Split-button mode: onClick provided without a customTarget.\n const isSplit = !!onClick && !customTarget;\n\n const sharedTriggerProps = {\n label,\n icon,\n buttonStyle,\n buttonSize,\n buttonProps,\n disabled,\n isOpen: open,\n onClick,\n };\n\n const triggerNode = isSplit ? (\n <SplitTrigger\n {...sharedTriggerProps}\n actionButtonRef={triggerRef}\n className={className}\n />\n ) : (\n <DropdownMenuTrigger asChild disabled={disabled} className={className}>\n {customTarget ? (\n typeof customTarget === \"function\" ? (\n customTarget({ isOpen: open })\n ) : (\n customTarget\n )\n ) : (\n <TriggerButton ref={triggerRef} {...sharedTriggerProps} />\n )}\n </DropdownMenuTrigger>\n );\n\n return (\n <DropdownContext.Provider value={{ closeOnSelect }}>\n <DropdownMenu\n open={open}\n onOpenChange={handleOpenChange}\n modal={closeOnOutsideClick}\n >\n {triggerNode}\n <DropdownMenuContent\n side={side}\n align={align}\n onEscapeKeyDown={closeOnEsc ? undefined : e => e.preventDefault()}\n onInteractOutside={\n closeOnOutsideClick ? undefined : e => e.preventDefault()\n }\n {...dropdownProps}\n >\n {children}\n </DropdownMenuContent>\n </DropdownMenu>\n </DropdownContext.Provider>\n );\n};\n\nexport { DropdownBase };\n","import React, { forwardRef } from \"react\";\n\nimport { DropdownMenuSeparator } from \"src/primitives/DropdownMenu\";\n\nconst Divider = forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof DropdownMenuSeparator>\n>((props, ref) => <DropdownMenuSeparator ref={ref} {...props} />);\nDivider.displayName = \"Dropdown.Divider\";\n\nexport { Divider };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { DropdownMenuLabel } from \"src/primitives/DropdownMenu\";\n\ninterface MenuLabelProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Label = forwardRef<HTMLDivElement, MenuLabelProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuLabel ref={ref} className={className} {...otherProps}>\n {children}\n </DropdownMenuLabel>\n )\n);\nLabel.displayName = \"Dropdown.Label\";\n\nexport { Label };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuGroup } from \"src/primitives/DropdownMenu\";\n\ninterface MenuProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuGroup\n ref={ref}\n className={cn(\"flex flex-col\", className)}\n {...otherProps}\n >\n {children}\n </DropdownMenuGroup>\n )\n);\nMenu.displayName = \"Dropdown.Menu\";\n\nexport { Menu };\n","import { forwardRef, useCallback, useContext, useMemo } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuItem as PrimitiveDropdownMenuItem } from \"src/primitives/DropdownMenu\";\n\nimport { MENU_ITEM_STYLE_MAP } from \"./constants\";\nimport { DropdownContext, type MenuItemProps } from \"./types\";\n\nconst MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n (\n {\n children,\n isActive = false,\n isDisabled = false,\n style = \"default\",\n prefix,\n suffix,\n to,\n href,\n className,\n onClick,\n variant: _variant,\n disabled: _disabled,\n asChild: _asChild,\n onSelect: _onSelect,\n ...otherProps\n },\n ref\n ) => {\n const { closeOnSelect } = useContext(DropdownContext);\n const variant = MENU_ITEM_STYLE_MAP[style];\n const linkHref = to ?? href;\n\n const handleSelect = useCallback(\n (e: Event) => {\n if (!closeOnSelect) e.preventDefault();\n onClick?.(e);\n },\n [closeOnSelect, onClick]\n );\n\n const itemContent = useMemo(\n () => (\n <>\n {prefix && (\n <span data-slot=\"menu-item-prefix\" className=\"shrink-0\">\n {prefix}\n </span>\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {suffix && (\n <span\n data-slot=\"menu-item-suffix\"\n className=\"ms-auto shrink-0 text-muted-foreground\"\n >\n {suffix}\n </span>\n )}\n </>\n ),\n [prefix, children, suffix]\n );\n\n return (\n <PrimitiveDropdownMenuItem\n ref={ref}\n variant={variant}\n disabled={isDisabled}\n data-active={isActive || undefined}\n className={cn(\n isActive && \"bg-accent text-accent-foreground\",\n className\n )}\n asChild={!!linkHref}\n onSelect={handleSelect}\n {...otherProps}\n >\n {linkHref ? <a href={linkHref}>{itemContent}</a> : itemContent}\n </PrimitiveDropdownMenuItem>\n );\n }\n);\nMenuItem.displayName = \"Dropdown.MenuItem\";\n\nexport { MenuItem };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport {\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n} from \"src/primitives/DropdownMenu\";\n\ninterface SubMenuProps {\n label?: string;\n icon?: IconProp;\n children?: ReactNode;\n className?: string;\n triggerProps?: Omit<\n React.ComponentProps<typeof DropdownMenuSubTrigger>,\n \"ref\" | \"className\" | \"children\"\n >;\n contentProps?: Omit<\n React.ComponentProps<typeof DropdownMenuSubContent>,\n \"children\"\n >;\n}\n\nconst SubMenu = forwardRef<HTMLDivElement, SubMenuProps>(\n ({ label, icon, children, className, triggerProps, contentProps }, ref) => (\n <DropdownMenuSub>\n <DropdownMenuSubTrigger ref={ref} className={className} {...triggerProps}>\n {icon && <span className=\"shrink-0\">{renderIcon(icon, \"size-4\")}</span>}\n {label && <span>{label}</span>}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent {...contentProps}>\n {children}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n )\n);\nSubMenu.displayName = \"Dropdown.SubMenu\";\n\nexport { SubMenu };\n","import { DropdownBase } from \"./DropdownBase\";\nimport { Divider } from \"./Divider\";\nimport { Label } from \"./Label\";\nimport { Menu } from \"./Menu\";\nimport { MenuItem } from \"./MenuItem\";\nimport { SubMenu } from \"./SubMenu\";\n\nexport type { DropdownProps, DropdownPosition } from \"./types\";\n\ntype DropdownComponent = typeof DropdownBase & {\n displayName?: string;\n Menu: typeof Menu;\n MenuItem: typeof MenuItem;\n Divider: typeof Divider;\n Label: typeof Label;\n SubMenu: typeof SubMenu;\n};\n\nconst DropdownMenu = DropdownBase as DropdownComponent;\nDropdownMenu.displayName = \"DropdownMenu\";\nDropdownMenu.Menu = Menu;\nDropdownMenu.MenuItem = MenuItem;\nDropdownMenu.Divider = Divider;\nDropdownMenu.Label = Label;\nDropdownMenu.SubMenu = SubMenu;\n\nexport { DropdownMenu };\n"],"names":["forwardRef","useTranslation","jsxs","ButtonGroup","cn","PrimitiveButton","renderIcon","jsx","DropdownMenuTrigger","ChevronDown","createContext","useState","useCallback","DropdownMenu","DropdownMenuContent","DropdownMenuSeparator","DropdownMenuLabel","DropdownMenuGroup","useContext","useMemo","Fragment","PrimitiveDropdownMenuItem","DropdownMenuSub","DropdownMenuSubTrigger","DropdownMenuSubContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropdownMenu.js","sources":["../../../src/components/DropdownMenu/constants.ts","../../../src/components/DropdownMenu/SplitTrigger.tsx","../../../src/components/DropdownMenu/TriggerButton.tsx","../../../src/components/DropdownMenu/types.ts","../../../src/components/DropdownMenu/DropdownBase.tsx","../../../src/components/DropdownMenu/Divider.tsx","../../../src/components/DropdownMenu/Label.tsx","../../../src/components/DropdownMenu/Menu.tsx","../../../src/components/DropdownMenu/MenuItem.tsx","../../../src/components/DropdownMenu/SubMenu.tsx","../../../src/components/DropdownMenu/index.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: \"end\",\n};\n\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { Button } from \"src/components/Button\";\nimport { Button as PrimitiveButton } from \"src/primitives/Button\";\nimport { ButtonGroup } from \"src/primitives/ButtonGroup\";\nimport { DropdownMenuTrigger } from \"src/primitives/DropdownMenu\";\n\nimport type { BaseTriggerProps } from \"./types\";\n\ninterface SplitTriggerOwnProps extends BaseTriggerProps {\n /** Ref forwarded to the action button (left side). */\n actionButtonRef?: React.Ref<HTMLButtonElement>;\n}\n\n/**\n * Radix injects extra props (aria-expanded, data-state, …) via Slot on the\n * DropdownMenuTrigger child. We capture them with a rest-spread.\n */\ntype SplitTriggerProps = SplitTriggerOwnProps &\n Omit<React.ComponentProps<\"div\">, keyof SplitTriggerOwnProps>;\n\nconst SplitTrigger = forwardRef<HTMLDivElement, SplitTriggerProps>(\n (\n {\n label,\n icon,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n actionButtonRef,\n className,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const variant = buttonProps?.variant;\n const size = buttonProps?.size;\n\n return (\n <ButtonGroup\n ref={ref}\n className={cn(\"neeto-ui-action-dropdown\", className)}\n {...otherProps}\n >\n {/* Action button — fires the primary onClick */}\n <Button\n ref={actionButtonRef}\n type=\"button\"\n label={label}\n icon={icon}\n iconPosition=\"left\"\n disabled={disabled}\n {...buttonProps}\n onClick={onClick}\n data-testid=\"action-dropdown-btn\"\n />\n\n {/* Chevron trigger — opens the dropdown menu */}\n <DropdownMenuTrigger asChild disabled={disabled}>\n <PrimitiveButton\n type=\"button\"\n variant={variant}\n size={size}\n disabled={disabled}\n aria-label={t(\n \"neetoatoms.dropdownMenu.openMenu\",\n \"Open dropdown menu\"\n )}\n className=\"px-1.5\"\n >\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </PrimitiveButton>\n </DropdownMenuTrigger>\n </ButtonGroup>\n );\n }\n);\nSplitTrigger.displayName = \"Dropdown.SplitTrigger\";\n\nexport { SplitTrigger };\n","import React, { forwardRef } from \"react\";\n\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { Button } from \"src/components/Button\";\n\nimport type { BaseTriggerProps } from \"./types\";\n\n/**\n * Extra props that Radix's Slot injects when the parent Trigger uses\n * `asChild` (aria-expanded, aria-haspopup, data-state, id, …).\n * We capture them with a rest-spread so they reach the DOM button.\n */\ntype TriggerButtonProps = BaseTriggerProps &\n Omit<React.ComponentProps<\"button\">, keyof BaseTriggerProps>;\n\nconst TriggerButton = forwardRef<HTMLButtonElement, TriggerButtonProps>(\n (\n {\n label,\n icon,\n buttonProps,\n disabled,\n isOpen,\n onClick,\n className,\n ...otherProps\n },\n ref\n ) => (\n <Button\n ref={ref}\n type=\"button\"\n label={label}\n icon={icon}\n iconPosition=\"left\"\n trailing={\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n \"shrink-0 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n }\n disabled={disabled}\n {...otherProps}\n {...buttonProps}\n onClick={onClick}\n className={cn(className, buttonProps?.className)}\n />\n )\n);\nTriggerButton.displayName = \"Dropdown.TriggerButton\";\n\nexport { TriggerButton };\n","import { createContext, type ReactNode, type Ref } from \"react\";\n\nimport {\n DropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n} from \"src/primitives/DropdownMenu\";\nimport type { ButtonProps } from \"src/components/Button\";\nimport type { IconProp } from \"src/lib/renderIcon\";\n\nexport type DropdownPosition =\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\n/**\n * Mirrors the primitive `DropdownMenuItem`'s `variant` vocabulary so the\n * wrapper speaks the same language. Keep in sync with Radix primitive.\n */\nexport type MenuItemVariant = \"default\" | \"destructive\";\n\n/**\n * Props forwarded to the trigger button. Sourced from the `Button` wrapper,\n * so consumers can pass `variant`, `size`, `loading`, `tooltipProps`,\n * `fullWidth`, `iconPosition`, etc.\n *\n * The dropdown owns these and so they are excluded:\n * - `label`/`icon`: top-level props on `DropdownMenu`\n * - `trailing`: the chevron\n * - `disabled`: `DropdownMenu`'s own `disabled` prop is authoritative\n * - `onClick`: use `DropdownMenu`'s `onClick` (drives split-button mode)\n * - `to`/`href`: a navigating trigger doesn't open a menu\n * - `asChild`/`children`: use `customTarget` / `label` instead\n */\nexport type DropdownButtonProps = Omit<\n ButtonProps,\n | \"label\"\n | \"icon\"\n | \"trailing\"\n | \"disabled\"\n | \"onClick\"\n | \"to\"\n | \"href\"\n | \"asChild\"\n | \"children\"\n>;\n\nexport interface BaseTriggerProps {\n label?: string;\n icon?: IconProp;\n buttonProps?: DropdownButtonProps;\n disabled: boolean;\n isOpen: boolean;\n onClick?: (e: React.MouseEvent) => void;\n}\n\nexport interface DropdownProps {\n /** Text label displayed inside the trigger button. */\n label?: string;\n /** Icon rendered inside the trigger button. */\n icon?: IconProp;\n /**\n * Props forwarded to the trigger button (variant, size, className,\n * loading, tooltipProps, fullWidth, iconPosition, …). In split-button\n * mode, forwarded to the action button; the chevron half visually mirrors\n * `variant`/`size`. Accepts the full `Button` prop type minus the props\n * the dropdown controls.\n */\n buttonProps?: DropdownButtonProps;\n /** Custom trigger element. Overrides the default button trigger. */\n customTarget?: ReactNode | ((props: { isOpen: boolean }) => ReactNode);\n /** Whether the dropdown is disabled. */\n disabled?: boolean;\n /** Dropdown menu content. */\n children?: ReactNode;\n /** Position of the dropdown menu relative to the trigger. */\n position?: DropdownPosition;\n /** Whether pressing Escape closes the dropdown. */\n closeOnEsc?: boolean;\n /** Whether selecting an item closes the dropdown. */\n closeOnSelect?: boolean;\n /** Whether clicking outside closes the dropdown. */\n closeOnOutsideClick?: boolean;\n /** Controlled open state. */\n isOpen?: boolean;\n /** Callback fired when the dropdown closes. */\n onClose?: () => void;\n /**\n * Callback fired when the trigger button is clicked.\n * When provided (without `customTarget`), renders a **split-button**:\n * a primary action button (fires `onClick`) paired with a separate\n * chevron that opens the dropdown menu.\n */\n onClick?: (e: React.MouseEvent) => void;\n /** Additional CSS class names for the trigger wrapper. */\n className?: string;\n /** Ref forwarded to the trigger button. In split-button mode, forwarded to the action button. */\n triggerRef?: Ref<HTMLButtonElement>;\n /** Extra props forwarded to the DropdownMenuContent. */\n dropdownProps?: Omit<\n React.ComponentProps<typeof DropdownMenuContent>,\n \"side\" | \"align\"\n >;\n}\n\nexport interface MenuItemProps extends Omit<\n React.ComponentProps<typeof PrimitiveDropdownMenuItem>,\n \"prefix\" | \"variant\" | \"onClick\"\n> {\n /** Highlight as active. */\n isActive?: boolean;\n /** Disable the menu item. */\n isDisabled?: boolean;\n /** Visual variant of the menu item. */\n variant?: MenuItemVariant;\n /** Content rendered before the label. */\n prefix?: ReactNode;\n /** Content rendered after the label. */\n suffix?: ReactNode;\n /** Internal route (renders as anchor). */\n to?: string;\n /** External link (renders as anchor). */\n href?: string;\n /** Callback fired when the item is selected. */\n onClick?: (e: Event) => void;\n /** Children / label text. */\n children?: ReactNode;\n /** Additional CSS class names. */\n className?: string;\n}\n\nexport const DropdownContext = createContext({ closeOnSelect: true });\n","import { useCallback, useState } from \"react\";\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"src/primitives/DropdownMenu\";\n\nimport { ALIGN_MAP, SIDE_MAP } from \"./constants\";\nimport { SplitTrigger } from \"./SplitTrigger\";\nimport { TriggerButton } from \"./TriggerButton\";\nimport { DropdownContext, type DropdownProps } from \"./types\";\n\nconst DropdownBase = ({\n label,\n icon,\n buttonProps,\n customTarget,\n disabled = false,\n children,\n position = \"bottom-end\",\n closeOnEsc = true,\n closeOnSelect = true,\n closeOnOutsideClick = true,\n isOpen: isOpenProp,\n onClose,\n onClick,\n className,\n triggerRef,\n dropdownProps,\n}: DropdownProps) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = isOpenProp !== undefined;\n const open = isControlled ? isOpenProp : internalOpen;\n const handleOpenChange = useCallback(\n (isOpen: boolean) => {\n if (!isControlled) setInternalOpen(isOpen);\n if (!isOpen) onClose?.();\n },\n [isControlled, onClose]\n );\n\n const side = SIDE_MAP[position] ?? \"bottom\";\n const align = ALIGN_MAP[position] ?? \"end\";\n\n // Split-button mode: onClick provided without a customTarget.\n const isSplit = !!onClick && !customTarget;\n\n const sharedTriggerProps = {\n label,\n icon,\n buttonProps,\n disabled,\n isOpen: open,\n onClick,\n };\n\n const triggerNode = isSplit ? (\n <SplitTrigger\n {...sharedTriggerProps}\n actionButtonRef={triggerRef}\n className={className}\n />\n ) : (\n <DropdownMenuTrigger asChild disabled={disabled} className={className}>\n {customTarget ? (\n typeof customTarget === \"function\" ? (\n customTarget({ isOpen: open })\n ) : (\n customTarget\n )\n ) : (\n <TriggerButton ref={triggerRef} {...sharedTriggerProps} />\n )}\n </DropdownMenuTrigger>\n );\n\n return (\n <DropdownContext.Provider value={{ closeOnSelect }}>\n <DropdownMenu\n open={open}\n onOpenChange={handleOpenChange}\n modal={closeOnOutsideClick}\n >\n {triggerNode}\n <DropdownMenuContent\n side={side}\n align={align}\n onEscapeKeyDown={closeOnEsc ? undefined : e => e.preventDefault()}\n onInteractOutside={\n closeOnOutsideClick ? undefined : e => e.preventDefault()\n }\n {...dropdownProps}\n >\n {children}\n </DropdownMenuContent>\n </DropdownMenu>\n </DropdownContext.Provider>\n );\n};\n\nexport { DropdownBase };\n","import React, { forwardRef } from \"react\";\n\nimport { DropdownMenuSeparator } from \"src/primitives/DropdownMenu\";\n\nconst Divider = forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof DropdownMenuSeparator>\n>((props, ref) => <DropdownMenuSeparator ref={ref} {...props} />);\nDivider.displayName = \"Dropdown.Divider\";\n\nexport { Divider };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { DropdownMenuLabel } from \"src/primitives/DropdownMenu\";\n\ninterface MenuLabelProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Label = forwardRef<HTMLDivElement, MenuLabelProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuLabel ref={ref} className={className} {...otherProps}>\n {children}\n </DropdownMenuLabel>\n )\n);\nLabel.displayName = \"Dropdown.Label\";\n\nexport { Label };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuGroup } from \"src/primitives/DropdownMenu\";\n\ninterface MenuProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(\n ({ children, className, ...otherProps }, ref) => (\n <DropdownMenuGroup\n ref={ref}\n className={cn(\"flex flex-col\", className)}\n {...otherProps}\n >\n {children}\n </DropdownMenuGroup>\n )\n);\nMenu.displayName = \"Dropdown.Menu\";\n\nexport { Menu };\n","import { forwardRef, useCallback, useContext, useMemo } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { DropdownMenuItem as PrimitiveDropdownMenuItem } from \"src/primitives/DropdownMenu\";\n\nimport { DropdownContext, type MenuItemProps } from \"./types\";\n\nconst MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n (\n {\n children,\n isActive = false,\n isDisabled = false,\n variant = \"default\",\n prefix,\n suffix,\n to,\n href,\n className,\n onClick,\n disabled: _disabled,\n asChild: _asChild,\n onSelect: _onSelect,\n ...otherProps\n },\n ref\n ) => {\n const { closeOnSelect } = useContext(DropdownContext);\n const linkHref = to ?? href;\n\n const handleSelect = useCallback(\n (e: Event) => {\n if (!closeOnSelect) e.preventDefault();\n onClick?.(e);\n },\n [closeOnSelect, onClick]\n );\n\n const itemContent = useMemo(\n () => (\n <>\n {prefix && (\n <span data-slot=\"menu-item-prefix\" className=\"shrink-0\">\n {prefix}\n </span>\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {suffix && (\n <span\n data-slot=\"menu-item-suffix\"\n className=\"ms-auto shrink-0 text-muted-foreground\"\n >\n {suffix}\n </span>\n )}\n </>\n ),\n [prefix, children, suffix]\n );\n\n return (\n <PrimitiveDropdownMenuItem\n ref={ref}\n variant={variant}\n disabled={isDisabled}\n data-active={isActive || undefined}\n className={cn(\n isActive && \"bg-accent text-accent-foreground\",\n className\n )}\n asChild={!!linkHref}\n onSelect={handleSelect}\n {...otherProps}\n >\n {linkHref ? <a href={linkHref}>{itemContent}</a> : itemContent}\n </PrimitiveDropdownMenuItem>\n );\n }\n);\nMenuItem.displayName = \"Dropdown.MenuItem\";\n\nexport { MenuItem };\n","import React, { forwardRef, type ReactNode } from \"react\";\n\nimport { renderIcon, type IconProp } from \"src/lib/renderIcon\";\nimport {\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n} from \"src/primitives/DropdownMenu\";\n\ninterface SubMenuProps {\n label?: string;\n icon?: IconProp;\n children?: ReactNode;\n className?: string;\n triggerProps?: Omit<\n React.ComponentProps<typeof DropdownMenuSubTrigger>,\n \"ref\" | \"className\" | \"children\"\n >;\n contentProps?: Omit<\n React.ComponentProps<typeof DropdownMenuSubContent>,\n \"children\"\n >;\n}\n\nconst SubMenu = forwardRef<HTMLDivElement, SubMenuProps>(\n ({ label, icon, children, className, triggerProps, contentProps }, ref) => (\n <DropdownMenuSub>\n <DropdownMenuSubTrigger ref={ref} className={className} {...triggerProps}>\n {icon && <span className=\"shrink-0\">{renderIcon(icon, \"size-4\")}</span>}\n {label && <span>{label}</span>}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent {...contentProps}>\n {children}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n )\n);\nSubMenu.displayName = \"Dropdown.SubMenu\";\n\nexport { SubMenu };\n","import { DropdownBase } from \"./DropdownBase\";\nimport { Divider } from \"./Divider\";\nimport { Label } from \"./Label\";\nimport { Menu } from \"./Menu\";\nimport { MenuItem } from \"./MenuItem\";\nimport { SubMenu } from \"./SubMenu\";\n\nexport type { DropdownProps, DropdownPosition } from \"./types\";\n\ntype DropdownComponent = typeof DropdownBase & {\n displayName?: string;\n Menu: typeof Menu;\n MenuItem: typeof MenuItem;\n Divider: typeof Divider;\n Label: typeof Label;\n SubMenu: typeof SubMenu;\n};\n\nconst DropdownMenu = DropdownBase as DropdownComponent;\nDropdownMenu.displayName = \"DropdownMenu\";\nDropdownMenu.Menu = Menu;\nDropdownMenu.MenuItem = MenuItem;\nDropdownMenu.Divider = Divider;\nDropdownMenu.Label = Label;\nDropdownMenu.SubMenu = SubMenu;\n\nexport { DropdownMenu };\n"],"names":["forwardRef","useTranslation","jsxs","ButtonGroup","cn","jsx","Button","DropdownMenuTrigger","PrimitiveButton","ChevronDown","createContext","useState","useCallback","DropdownMenu","DropdownMenuContent","DropdownMenuSeparator","DropdownMenuLabel","DropdownMenuGroup","useContext","useMemo","Fragment","PrimitiveDropdownMenuItem","DropdownMenuSub","DropdownMenuSubTrigger","renderIcon","DropdownMenuSubContent"],"mappings":"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"}
|