@bigbinary/neeto-atoms 1.0.54 → 1.0.56
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-e3-iV-6f.js → Alert-CQ7lMpGp.js} +2 -2
- package/dist/{Alert-e3-iV-6f.js.map → Alert-CQ7lMpGp.js.map} +1 -1
- package/dist/{Avatar-CJq2rlgk.js → Avatar-D1hEMHgh.js} +24 -2
- package/dist/Avatar-D1hEMHgh.js.map +1 -0
- package/dist/{Button-DwiKU1ab.js → Button-DV9xCqlc.js} +2 -1
- package/dist/Button-DV9xCqlc.js.map +1 -0
- package/dist/{DataTable-DuHFwJj9.js → DataTable-BTdSpJfs.js} +5 -4
- package/dist/{DataTable-DuHFwJj9.js.map → DataTable-BTdSpJfs.js.map} +1 -1
- package/dist/{Empty-CfakG-QT.js → Empty-Bfido_mq.js} +2 -2
- package/dist/{Empty-CfakG-QT.js.map → Empty-Bfido_mq.js.map} +1 -1
- package/dist/{Label-Vpj3xsO2.js → Label-DndePzSD.js} +2 -2
- package/dist/{Label-Vpj3xsO2.js.map → Label-DndePzSD.js.map} +1 -1
- package/dist/cjs/{Alert-Bo3a2nZt.js → Alert-CxctOMOk.js} +2 -2
- package/dist/cjs/{Alert-Bo3a2nZt.js.map → Alert-CxctOMOk.js.map} +1 -1
- package/dist/cjs/{Avatar-nG7vhAUS.js → Avatar-CHTb5RZ0.js} +24 -2
- package/dist/cjs/Avatar-CHTb5RZ0.js.map +1 -0
- package/dist/cjs/{Button-DiBYVj5m.js → Button-8VH9p9RB.js} +2 -1
- package/dist/cjs/Button-8VH9p9RB.js.map +1 -0
- package/dist/cjs/{DataTable-DjQJLAya.js → DataTable-CCIIXb4B.js} +5 -4
- package/dist/cjs/{DataTable-DjQJLAya.js.map → DataTable-CCIIXb4B.js.map} +1 -1
- package/dist/cjs/{Empty-D8g97TNM.js → Empty-aQaWK0p4.js} +2 -2
- package/dist/cjs/{Empty-D8g97TNM.js.map → Empty-aQaWK0p4.js.map} +1 -1
- package/dist/cjs/{Label-DFLFi0tH.js → Label-vpiQQn2A.js} +2 -2
- package/dist/cjs/{Label-DFLFi0tH.js.map → Label-vpiQQn2A.js.map} +1 -1
- package/dist/cjs/components/Alert.js +2 -2
- package/dist/cjs/components/Avatar.js +1 -1
- package/dist/cjs/components/Button.js +1 -1
- package/dist/cjs/components/DataTable.js +2 -2
- package/dist/cjs/components/DropdownMenu.js +1 -1
- package/dist/cjs/components/Empty.js +2 -2
- package/dist/cjs/components/Label.js +2 -2
- package/dist/cjs/components/index.js +6 -6
- 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 +6 -6
- package/dist/components/Alert.js +2 -2
- package/dist/components/Avatar/Avatar.d.ts +2 -0
- package/dist/components/Avatar/utils.d.ts +2 -0
- package/dist/components/Avatar.js +1 -1
- package/dist/components/Button.js +1 -1
- package/dist/components/DataTable.js +2 -2
- package/dist/components/DropdownMenu.js +1 -1
- package/dist/components/Empty.js +2 -2
- package/dist/components/Label.js +2 -2
- package/dist/components/Typography/Typography.d.ts +2 -2
- package/dist/components/index.js +6 -6
- 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.css +6 -0
- package/dist/index.js +6 -6
- package/dist/primitives/Badge.d.ts +1 -1
- package/dist/shadcn/components/input-group.d.ts +1 -1
- package/package.json +1 -1
- package/dist/Avatar-CJq2rlgk.js.map +0 -1
- package/dist/Button-DwiKU1ab.js.map +0 -1
- package/dist/cjs/Avatar-nG7vhAUS.js.map +0 -1
- package/dist/cjs/Button-DiBYVj5m.js.map +0 -1
|
@@ -5,7 +5,7 @@ import { Empty as Empty$1, EmptyHeader, EmptyMedia, EmptyTitle, EmptyDescription
|
|
|
5
5
|
import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from './primitives/Tooltip.js';
|
|
6
6
|
import { r as renderIcon } from './renderIcon-C6twJSqH.js';
|
|
7
7
|
import { T as Typography } from './Typography-CmILccNh.js';
|
|
8
|
-
import { b as Button } from './Button-
|
|
8
|
+
import { b as Button } from './Button-DV9xCqlc.js';
|
|
9
9
|
|
|
10
10
|
function MaybeTooltipButton({
|
|
11
11
|
buttonProps,
|
|
@@ -72,4 +72,4 @@ const Empty = forwardRef(
|
|
|
72
72
|
Empty.displayName = "Empty";
|
|
73
73
|
|
|
74
74
|
export { Empty as E };
|
|
75
|
-
//# sourceMappingURL=Empty-
|
|
75
|
+
//# sourceMappingURL=Empty-Bfido_mq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Empty-
|
|
1
|
+
{"version":3,"file":"Empty-Bfido_mq.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":["PrimitiveEmpty"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { Label as Label$1 } from './primitives/Label.js';
|
|
|
6
6
|
import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from './primitives/Tooltip.js';
|
|
7
7
|
import { c as createLucideIcon } from './createLucideIcon-C8ycilSN.js';
|
|
8
8
|
import { P as Popover } from './Popover-C1FNlRtU.js';
|
|
9
|
-
import { b as Button } from './Button-
|
|
9
|
+
import { b as Button } from './Button-DV9xCqlc.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* @license lucide-react v0.577.0 - ISC
|
|
@@ -84,4 +84,4 @@ const Label = forwardRef(
|
|
|
84
84
|
Label.displayName = "Label";
|
|
85
85
|
|
|
86
86
|
export { Label as L };
|
|
87
|
-
//# sourceMappingURL=Label-
|
|
87
|
+
//# sourceMappingURL=Label-DndePzSD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Label-
|
|
1
|
+
{"version":3,"file":"Label-DndePzSD.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","PrimitiveLabel"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -5,7 +5,7 @@ var React = require('react');
|
|
|
5
5
|
var reactI18next = require('react-i18next');
|
|
6
6
|
var utils = require('./utils-BhM0B89p.js');
|
|
7
7
|
var primitives_Dialog = require('./primitives/Dialog.js');
|
|
8
|
-
var Button = require('./Button-
|
|
8
|
+
var Button = require('./Button-8VH9p9RB.js');
|
|
9
9
|
|
|
10
10
|
const SIZE_CLASS_MAP = {
|
|
11
11
|
small: "sm:max-w-xs",
|
|
@@ -149,4 +149,4 @@ const Alert = React.forwardRef(
|
|
|
149
149
|
Alert.displayName = "Alert";
|
|
150
150
|
|
|
151
151
|
exports.Alert = Alert;
|
|
152
|
-
//# sourceMappingURL=Alert-
|
|
152
|
+
//# sourceMappingURL=Alert-CxctOMOk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert-Bo3a2nZt.js","sources":["../../src/components/Alert/constants.ts","../../src/components/Alert/Alert.tsx"],"sourcesContent":["import type { AlertSize, AlertStyle } from \"./Alert\";\n\nexport const SIZE_CLASS_MAP: Record<AlertSize, string> = {\n small: \"sm:max-w-xs\",\n medium: \"sm:max-w-sm\",\n large: \"sm:max-w-md\",\n};\n\nexport const STYLE_VARIANT_MAP: Record<AlertStyle, \"destructive\" | \"default\"> =\n {\n danger: \"destructive\",\n warning: \"default\",\n };\n","import {\n forwardRef,\n useId,\n useRef,\n type ReactNode,\n type RefObject,\n} from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"src/primitives/Dialog\";\nimport { Button } from \"src/components/Button\";\n\nimport { SIZE_CLASS_MAP, STYLE_VARIANT_MAP } from \"./constants\";\n\nexport type AlertStyle = \"danger\" | \"warning\";\nexport type AlertSize = \"small\" | \"medium\" | \"large\";\ntype InitialFocusElement = \"submit\" | \"cancel\";\n\n/** Radix Dialog.Content props we forward via ...otherProps. */\ntype DialogContentProps = React.ComponentProps<typeof DialogContent>;\n\nexport interface AlertProps extends Omit<\n DialogContentProps,\n | \"children\"\n | \"role\"\n | \"showCloseButton\"\n | \"className\"\n | \"style\"\n | \"onEscapeKeyDown\"\n | \"onInteractOutside\"\n> {\n /** Size of the alert dialog. */\n size?: AlertSize;\n /** Whether the alert is open. */\n isOpen?: boolean;\n /** Whether the submit action is in progress. */\n isSubmitting?: boolean;\n /** Additional CSS class names applied to the dialog 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 dialog. */\n closeOnOutsideClick?: boolean;\n /** Callback invoked when the alert is closed. */\n onClose?: () => void;\n /** Callback invoked when the submit button is clicked. */\n onSubmit?: () => void;\n /** Title text of the alert. */\n title?: string;\n /** Message content of the alert. */\n message?: ReactNode;\n /** Label for the submit button. */\n submitButtonLabel?: string;\n /** Label for the cancel button. */\n cancelButtonLabel?: string;\n /** Hide the cancel button. */\n hideCancelButton?: boolean;\n /** Visual style of the submit button. */\n style?: AlertStyle;\n /** Ref of the element to receive focus when the alert opens. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** Which built-in button receives focus on open: \"submit\" or \"cancel\". */\n initialFocusElement?: InitialFocusElement;\n /** Radix Dialog `modal` prop — controls modal vs non-modal behaviour. */\n modal?: boolean;\n /** Radix Dialog `defaultOpen` prop. */\n defaultOpen?: boolean;\n}\n\nconst Alert = forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n size = \"medium\",\n isOpen = false,\n isSubmitting = false,\n className,\n closeOnEsc = true,\n closeButton = true,\n backdropClassName,\n closeOnOutsideClick = true,\n onClose = () => {},\n onSubmit = () => {},\n title = \"\",\n message = \"\",\n submitButtonLabel: submitButtonLabelProp,\n cancelButtonLabel: cancelButtonLabelProp,\n hideCancelButton = false,\n style = \"danger\",\n initialFocusRef,\n initialFocusElement,\n modal,\n defaultOpen,\n // Radix content handlers — we intercept and merge\n onOpenAutoFocus: onOpenAutoFocusProp,\n onCloseAutoFocus: onCloseAutoFocusProp,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const submitButtonLabel =\n submitButtonLabelProp ?? t(\"neetoatoms.alert.continue\", \"Continue\");\n const cancelButtonLabel =\n cancelButtonLabelProp ?? t(\"neetoatoms.alert.cancel\", \"Cancel\");\n const baseId = useId();\n const titleId = `alert-title-${baseId}`;\n const messageId = `alert-message-${baseId}`;\n const submitButtonRef = useRef<HTMLButtonElement>(null);\n const cancelButtonRef = useRef<HTMLButtonElement>(null);\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 // Custom focus ref takes highest priority\n if (initialFocusRef?.current) {\n e.preventDefault();\n initialFocusRef.current.focus();\n } else if (initialFocusElement === \"submit\" && submitButtonRef.current) {\n e.preventDefault();\n submitButtonRef.current.focus();\n } else if (initialFocusElement === \"cancel\" && cancelButtonRef.current) {\n e.preventDefault();\n cancelButtonRef.current.focus();\n }\n onOpenAutoFocusProp?.(e);\n };\n\n const handleCloseAutoFocus = (e: Event) => {\n onCloseAutoFocusProp?.(e);\n };\n\n return (\n <Dialog\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n defaultOpen={defaultOpen}\n >\n <DialogContent\n ref={ref}\n role=\"alertdialog\"\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={message ? messageId : undefined}\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=\"alert-box\"\n {...otherProps}\n >\n <DialogHeader>\n <DialogTitle\n id={titleId}\n data-testid=\"alert-title\"\n className=\"text-2xl font-semibold\"\n >\n {title}\n </DialogTitle>\n {message && (\n <DialogDescription id={messageId} data-testid=\"alert-message\">\n {message}\n </DialogDescription>\n )}\n </DialogHeader>\n <DialogFooter>\n {!hideCancelButton && (\n <Button\n ref={cancelButtonRef}\n variant=\"outline\"\n label={cancelButtonLabel}\n onClick={onClose}\n data-testid=\"alert-cancel-button\"\n />\n )}\n <Button\n ref={submitButtonRef}\n variant={STYLE_VARIANT_MAP[style]}\n label={submitButtonLabel}\n loading={isSubmitting}\n disabled={isSubmitting || !isOpen}\n onClick={onSubmit}\n data-testid=\"alert-submit-button\"\n />\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert };\n"],"names":["forwardRef","useTranslation","useId","useRef","jsx","Dialog","jsxs","DialogContent","cn","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Alert-CxctOMOk.js","sources":["../../src/components/Alert/constants.ts","../../src/components/Alert/Alert.tsx"],"sourcesContent":["import type { AlertSize, AlertStyle } from \"./Alert\";\n\nexport const SIZE_CLASS_MAP: Record<AlertSize, string> = {\n small: \"sm:max-w-xs\",\n medium: \"sm:max-w-sm\",\n large: \"sm:max-w-md\",\n};\n\nexport const STYLE_VARIANT_MAP: Record<AlertStyle, \"destructive\" | \"default\"> =\n {\n danger: \"destructive\",\n warning: \"default\",\n };\n","import {\n forwardRef,\n useId,\n useRef,\n type ReactNode,\n type RefObject,\n} from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"src/primitives/Dialog\";\nimport { Button } from \"src/components/Button\";\n\nimport { SIZE_CLASS_MAP, STYLE_VARIANT_MAP } from \"./constants\";\n\nexport type AlertStyle = \"danger\" | \"warning\";\nexport type AlertSize = \"small\" | \"medium\" | \"large\";\ntype InitialFocusElement = \"submit\" | \"cancel\";\n\n/** Radix Dialog.Content props we forward via ...otherProps. */\ntype DialogContentProps = React.ComponentProps<typeof DialogContent>;\n\nexport interface AlertProps extends Omit<\n DialogContentProps,\n | \"children\"\n | \"role\"\n | \"showCloseButton\"\n | \"className\"\n | \"style\"\n | \"onEscapeKeyDown\"\n | \"onInteractOutside\"\n> {\n /** Size of the alert dialog. */\n size?: AlertSize;\n /** Whether the alert is open. */\n isOpen?: boolean;\n /** Whether the submit action is in progress. */\n isSubmitting?: boolean;\n /** Additional CSS class names applied to the dialog 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 dialog. */\n closeOnOutsideClick?: boolean;\n /** Callback invoked when the alert is closed. */\n onClose?: () => void;\n /** Callback invoked when the submit button is clicked. */\n onSubmit?: () => void;\n /** Title text of the alert. */\n title?: string;\n /** Message content of the alert. */\n message?: ReactNode;\n /** Label for the submit button. */\n submitButtonLabel?: string;\n /** Label for the cancel button. */\n cancelButtonLabel?: string;\n /** Hide the cancel button. */\n hideCancelButton?: boolean;\n /** Visual style of the submit button. */\n style?: AlertStyle;\n /** Ref of the element to receive focus when the alert opens. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** Which built-in button receives focus on open: \"submit\" or \"cancel\". */\n initialFocusElement?: InitialFocusElement;\n /** Radix Dialog `modal` prop — controls modal vs non-modal behaviour. */\n modal?: boolean;\n /** Radix Dialog `defaultOpen` prop. */\n defaultOpen?: boolean;\n}\n\nconst Alert = forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n size = \"medium\",\n isOpen = false,\n isSubmitting = false,\n className,\n closeOnEsc = true,\n closeButton = true,\n backdropClassName,\n closeOnOutsideClick = true,\n onClose = () => {},\n onSubmit = () => {},\n title = \"\",\n message = \"\",\n submitButtonLabel: submitButtonLabelProp,\n cancelButtonLabel: cancelButtonLabelProp,\n hideCancelButton = false,\n style = \"danger\",\n initialFocusRef,\n initialFocusElement,\n modal,\n defaultOpen,\n // Radix content handlers — we intercept and merge\n onOpenAutoFocus: onOpenAutoFocusProp,\n onCloseAutoFocus: onCloseAutoFocusProp,\n ...otherProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const submitButtonLabel =\n submitButtonLabelProp ?? t(\"neetoatoms.alert.continue\", \"Continue\");\n const cancelButtonLabel =\n cancelButtonLabelProp ?? t(\"neetoatoms.alert.cancel\", \"Cancel\");\n const baseId = useId();\n const titleId = `alert-title-${baseId}`;\n const messageId = `alert-message-${baseId}`;\n const submitButtonRef = useRef<HTMLButtonElement>(null);\n const cancelButtonRef = useRef<HTMLButtonElement>(null);\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 // Custom focus ref takes highest priority\n if (initialFocusRef?.current) {\n e.preventDefault();\n initialFocusRef.current.focus();\n } else if (initialFocusElement === \"submit\" && submitButtonRef.current) {\n e.preventDefault();\n submitButtonRef.current.focus();\n } else if (initialFocusElement === \"cancel\" && cancelButtonRef.current) {\n e.preventDefault();\n cancelButtonRef.current.focus();\n }\n onOpenAutoFocusProp?.(e);\n };\n\n const handleCloseAutoFocus = (e: Event) => {\n onCloseAutoFocusProp?.(e);\n };\n\n return (\n <Dialog\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n defaultOpen={defaultOpen}\n >\n <DialogContent\n ref={ref}\n role=\"alertdialog\"\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={message ? messageId : undefined}\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=\"alert-box\"\n {...otherProps}\n >\n <DialogHeader>\n <DialogTitle\n id={titleId}\n data-testid=\"alert-title\"\n className=\"text-2xl font-semibold\"\n >\n {title}\n </DialogTitle>\n {message && (\n <DialogDescription id={messageId} data-testid=\"alert-message\">\n {message}\n </DialogDescription>\n )}\n </DialogHeader>\n <DialogFooter>\n {!hideCancelButton && (\n <Button\n ref={cancelButtonRef}\n variant=\"outline\"\n label={cancelButtonLabel}\n onClick={onClose}\n data-testid=\"alert-cancel-button\"\n />\n )}\n <Button\n ref={submitButtonRef}\n variant={STYLE_VARIANT_MAP[style]}\n label={submitButtonLabel}\n loading={isSubmitting}\n disabled={isSubmitting || !isOpen}\n onClick={onSubmit}\n data-testid=\"alert-submit-button\"\n />\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert };\n"],"names":["forwardRef","useTranslation","useId","useRef","jsx","Dialog","jsxs","DialogContent","cn","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button"],"mappings":"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"}
|
|
@@ -24,6 +24,26 @@ function getInitials(name) {
|
|
|
24
24
|
if (!name) return "";
|
|
25
25
|
return name.split(/\s+/).slice(0, 2).map((word) => word.charAt(0).toUpperCase()).join("");
|
|
26
26
|
}
|
|
27
|
+
function cyrb53(str, seed = 0) {
|
|
28
|
+
let h1 = 3735928559 ^ seed;
|
|
29
|
+
let h2 = 1103547991 ^ seed;
|
|
30
|
+
for (let i = 0; i < str.length; i++) {
|
|
31
|
+
const ch = str.charCodeAt(i);
|
|
32
|
+
h1 = Math.imul(h1 ^ ch, 2654435761);
|
|
33
|
+
h2 = Math.imul(h2 ^ ch, 1597334677);
|
|
34
|
+
}
|
|
35
|
+
h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507) ^ Math.imul(h2 ^ h2 >>> 13, 3266489909);
|
|
36
|
+
h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507) ^ Math.imul(h1 ^ h1 >>> 13, 3266489909);
|
|
37
|
+
return 4294967296 * (2097151 & h2) + (h1 >>> 0);
|
|
38
|
+
}
|
|
39
|
+
function getAvatarColorStyle(seed) {
|
|
40
|
+
if (!seed) return void 0;
|
|
41
|
+
const hue = cyrb53(seed) % 360;
|
|
42
|
+
return {
|
|
43
|
+
backgroundColor: `oklch(var(--avatar-l) var(--avatar-c) ${hue})`,
|
|
44
|
+
color: "var(--avatar-fg)"
|
|
45
|
+
};
|
|
46
|
+
}
|
|
27
47
|
|
|
28
48
|
const Avatar = React.forwardRef(
|
|
29
49
|
({
|
|
@@ -38,6 +58,8 @@ const Avatar = React.forwardRef(
|
|
|
38
58
|
const initials = getInitials(user?.name);
|
|
39
59
|
const isXl = size === "xl";
|
|
40
60
|
const primitiveSize = isXl ? "lg" : size;
|
|
61
|
+
const seed = user?.id != null ? String(user.id) : user?.email?.trim().toLowerCase() || user?.name;
|
|
62
|
+
const fallbackStyle = user?.imageUrl ? void 0 : getAvatarColorStyle(seed);
|
|
41
63
|
const avatarElement = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
42
64
|
primitives_Avatar.Avatar,
|
|
43
65
|
{
|
|
@@ -47,7 +69,7 @@ const Avatar = React.forwardRef(
|
|
|
47
69
|
...otherProps,
|
|
48
70
|
children: [
|
|
49
71
|
user?.imageUrl && /* @__PURE__ */ jsxRuntime.jsx(primitives_Avatar.AvatarImage, { src: user.imageUrl, alt: user?.name ?? "" }),
|
|
50
|
-
/* @__PURE__ */ jsxRuntime.jsx(primitives_Avatar.AvatarFallback, { children: initials }),
|
|
72
|
+
/* @__PURE__ */ jsxRuntime.jsx(primitives_Avatar.AvatarFallback, { style: fallbackStyle, children: initials }),
|
|
51
73
|
status && /* @__PURE__ */ jsxRuntime.jsx(primitives_Avatar.AvatarBadge, { className: utils.cn(STATUS_COLOR_MAP[status]) })
|
|
52
74
|
]
|
|
53
75
|
}
|
|
@@ -70,4 +92,4 @@ const AvatarNamespace = Object.assign(Avatar, {
|
|
|
70
92
|
});
|
|
71
93
|
|
|
72
94
|
exports.AvatarNamespace = AvatarNamespace;
|
|
73
|
-
//# sourceMappingURL=Avatar-
|
|
95
|
+
//# sourceMappingURL=Avatar-CHTb5RZ0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar-CHTb5RZ0.js","sources":["../../src/components/Avatar/constants.ts","../../src/components/Avatar/utils.ts","../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["export const STATUS_COLOR_MAP: Record<string, string> = {\n online: \"bg-emerald-500 dark:bg-emerald-400\",\n idle: \"bg-amber-500 dark:bg-amber-400\",\n offline: \"bg-gray-400 dark:bg-gray-500\",\n};\n\nexport const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n auto: \"bottom\",\n};\n\nexport const XL_CLASSES =\n \"data-[size=lg]:size-16 [&>[data-slot=avatar-badge]]:size-4 [&>[data-slot=avatar-fallback]]:text-lg\";\n","import type { CSSProperties } from \"react\";\n\nexport function getInitials(name?: string): string {\n if (!name) return \"\";\n\n return name\n .split(/\\s+/)\n .slice(0, 2)\n .map(word => word.charAt(0).toUpperCase())\n .join(\"\");\n}\n\nfunction cyrb53(str: string, seed = 0): number {\n let h1 = 0xdeadbeef ^ seed;\n let h2 = 0x41c6ce57 ^ seed;\n for (let i = 0; i < str.length; i++) {\n const ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 =\n Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^\n Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 =\n Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^\n Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\n\nexport function getAvatarColorStyle(seed?: string): CSSProperties | undefined {\n if (!seed) return undefined;\n\n const hue = cyrb53(seed) % 360;\n\n return {\n backgroundColor: `oklch(var(--avatar-l) var(--avatar-c) ${hue})`,\n color: \"var(--avatar-fg)\",\n };\n}\n","import React, { forwardRef } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Avatar as PrimitiveAvatar,\n AvatarImage,\n AvatarFallback,\n AvatarBadge,\n AvatarGroup,\n AvatarGroupCount,\n} from \"src/primitives/Avatar\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\n\nimport { STATUS_COLOR_MAP, SIDE_MAP, XL_CLASSES } from \"./constants\";\nimport { getAvatarColorStyle, getInitials } from \"./utils\";\n\ntype AvatarSize = \"sm\" | \"default\" | \"lg\" | \"xl\";\n\ninterface AvatarTooltipProps {\n /** Tooltip content. Defaults to user.name if showTooltip is true. */\n content?: React.ReactNode;\n /** Tooltip position. */\n position?: string;\n}\n\nexport interface AvatarProps extends Omit<\n React.ComponentProps<typeof PrimitiveAvatar>,\n \"size\"\n> {\n /** User data for the avatar. */\n user?: {\n id?: string | number;\n name?: string;\n email?: string;\n imageUrl?: string;\n };\n /** Status indicator displayed as a colored badge. */\n status?: \"online\" | \"idle\" | \"offline\" | null;\n /** Show the user's name in a tooltip on hover. */\n showTooltip?: boolean;\n /** Tooltip configuration. Overrides showTooltip content. */\n tooltipProps?: AvatarTooltipProps;\n /** Size of the avatar. */\n size?: AvatarSize;\n /** Additional CSS class names. */\n className?: string;\n}\n\nconst Avatar = forwardRef<HTMLSpanElement, AvatarProps>(\n (\n {\n user,\n status,\n showTooltip = false,\n tooltipProps,\n size = \"default\",\n className,\n ...otherProps\n },\n ref\n ) => {\n const initials = getInitials(user?.name);\n const isXl = size === \"xl\";\n const primitiveSize = isXl ? \"lg\" : size;\n const seed =\n user?.id != null\n ? String(user.id)\n : user?.email?.trim().toLowerCase() || user?.name;\n const fallbackStyle = user?.imageUrl\n ? undefined\n : getAvatarColorStyle(seed);\n\n const avatarElement = (\n <PrimitiveAvatar\n ref={ref}\n size={primitiveSize}\n className={cn(isXl && XL_CLASSES, className)}\n {...otherProps}\n >\n {user?.imageUrl && (\n <AvatarImage src={user.imageUrl} alt={user?.name ?? \"\"} />\n )}\n <AvatarFallback style={fallbackStyle}>{initials}</AvatarFallback>\n {status && <AvatarBadge className={cn(STATUS_COLOR_MAP[status])} />}\n </PrimitiveAvatar>\n );\n\n const tooltipContent =\n tooltipProps?.content ?? (showTooltip ? user?.name : null);\n\n if (tooltipContent) {\n const side = SIDE_MAP[tooltipProps?.position ?? \"auto\"] ?? \"bottom\";\n\n return (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex\">{avatarElement}</span>\n </TooltipTrigger>\n <TooltipContent side={side}>{tooltipContent}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return avatarElement;\n }\n);\n\nAvatar.displayName = \"Avatar\";\n\nconst AvatarNamespace = Object.assign(Avatar, {\n Group: AvatarGroup,\n GroupCount: AvatarGroupCount,\n});\n\nexport { AvatarNamespace as Avatar };\n"],"names":["forwardRef","jsxs","PrimitiveAvatar","cn","AvatarImage","jsx","AvatarFallback","AvatarBadge","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","AvatarGroup","AvatarGroupCount"],"mappings":"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"}
|
|
@@ -120,6 +120,7 @@ const Button = React.forwardRef(
|
|
|
120
120
|
const mergedClassName = utils.cn(
|
|
121
121
|
fullWidth && "w-full",
|
|
122
122
|
loading && "relative pointer-events-none",
|
|
123
|
+
variant === "link" && "[table_&]:max-w-full [table_&]:whitespace-normal",
|
|
123
124
|
className
|
|
124
125
|
);
|
|
125
126
|
let buttonElement;
|
|
@@ -215,4 +216,4 @@ Button.displayName = "Button";
|
|
|
215
216
|
exports.BUTTON_SIZES = BUTTON_SIZES;
|
|
216
217
|
exports.BUTTON_VARIANTS = BUTTON_VARIANTS;
|
|
217
218
|
exports.Button = Button;
|
|
218
|
-
//# sourceMappingURL=Button-
|
|
219
|
+
//# sourceMappingURL=Button-8VH9p9RB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button-8VH9p9RB.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\nexport const BUTTON_VARIANTS = [\n \"default\",\n \"secondary\",\n \"destructive\",\n \"destructive-soft\",\n \"outline\",\n \"ghost\",\n \"link\",\n] as const;\n\nexport const BUTTON_SIZES = [\n \"default\",\n \"xs\",\n \"sm\",\n \"lg\",\n \"icon\",\n \"icon-xs\",\n \"icon-sm\",\n \"icon-lg\",\n] as const;\n\nexport type ButtonVariant = (typeof BUTTON_VARIANTS)[number];\nexport type ButtonSize = (typeof BUTTON_SIZES)[number];\n\ntype IconPosition = \"left\" | \"right\";\n\ntype ButtonType = \"button\" | \"reset\" | \"submit\";\n\ninterface ButtonTooltipProps {\n content?: ReactNode;\n position?: string;\n disabled?: boolean;\n}\n\nexport interface ButtonProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"type\" | \"disabled\" | \"className\" | \"children\" | \"onClick\"\n> {\n /** Visual variant of the button. */\n variant?: ButtonVariant;\n /** Size of the button. */\n size?: ButtonSize;\n /** Text label rendered inside the button. */\n label?: string;\n /** Icon component, element, or class-name string. */\n icon?: IconProp;\n /** Placement of the icon relative to the label. */\n iconPosition?: IconPosition;\n /** Show a loading spinner and prevent clicks. */\n loading?: boolean;\n /** Disable the button. */\n disabled?: boolean;\n /** Click handler. */\n onClick?: (e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;\n /** Internal route (react-router `Link`). */\n to?: string;\n /** External URL (renders an anchor tag). */\n href?: string;\n /** HTML button type attribute. */\n type?: ButtonType;\n /** Stretch the button to fill its container. */\n fullWidth?: boolean;\n /** Additional CSS class names. */\n className?: string;\n /** Props forwarded to a wrapping Tooltip. */\n tooltipProps?: ButtonTooltipProps | null;\n /** Render as a custom element (polymorphic). */\n asChild?: boolean;\n /**\n * Content rendered after the label and any right-side icon (e.g., a trailing\n * chevron, badge, or shortcut indicator). Auto-wrapped with\n * `data-icon=\"inline-end\"` so the button's compact end-padding kicks in.\n */\n trailing?: ReactNode;\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 trailing,\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 {trailing && <span data-icon=\"inline-end\">{trailing}</span>}\n </span>\n </>\n );\n\n // --- Merged className ---\n const mergedClassName = cn(\n fullWidth && \"w-full\",\n loading && \"relative pointer-events-none\",\n variant === \"link\" && \"[table_&]:max-w-full [table_&]:whitespace-normal\",\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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"}
|
|
@@ -11,7 +11,7 @@ var createLucideIcon = require('./createLucideIcon-D0tRgV6l.js');
|
|
|
11
11
|
var primitives_Button = require('./primitives/Button.js');
|
|
12
12
|
var primitives_Pagination = require('./primitives/Pagination.js');
|
|
13
13
|
var primitives_DropdownMenu = require('./primitives/DropdownMenu.js');
|
|
14
|
-
var Button = require('./Button-
|
|
14
|
+
var Button = require('./Button-8VH9p9RB.js');
|
|
15
15
|
var ellipsis = require('./ellipsis-4aubOI2n.js');
|
|
16
16
|
var check = require('./check-BQgcDXys.js');
|
|
17
17
|
var Popover = require('./Popover-DuRSsDHz.js');
|
|
@@ -3805,7 +3805,7 @@ const DataTablePagination = ({
|
|
|
3805
3805
|
}) => {
|
|
3806
3806
|
if (pageCount <= 1) return null;
|
|
3807
3807
|
const pages = getPageNumbers(currentPage, pageCount);
|
|
3808
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-end
|
|
3808
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-end pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(primitives_Pagination.Pagination, { className: "mx-0 w-auto justify-end", children: /* @__PURE__ */ jsxRuntime.jsxs(primitives_Pagination.PaginationContent, { children: [
|
|
3809
3809
|
/* @__PURE__ */ jsxRuntime.jsx(primitives_Pagination.PaginationItem, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3810
3810
|
primitives_Pagination.PaginationPrevious,
|
|
3811
3811
|
{
|
|
@@ -4140,7 +4140,7 @@ const DataTable = ({
|
|
|
4140
4140
|
const allColumns = React.useMemo(() => {
|
|
4141
4141
|
const cols = enableColumnResize ? columns.map((col) => ({
|
|
4142
4142
|
...col,
|
|
4143
|
-
minSize: col.minSize ?? col.size ?? 150
|
|
4143
|
+
minSize: col.minSize ?? Math.min(150, col.size ?? 150)
|
|
4144
4144
|
})) : columns;
|
|
4145
4145
|
if (selectionColumn) {
|
|
4146
4146
|
return [selectionColumn, ...cols];
|
|
@@ -4386,6 +4386,7 @@ const DataTable = ({
|
|
|
4386
4386
|
primitives_Table.TableCell,
|
|
4387
4387
|
{
|
|
4388
4388
|
className: utils.cn(
|
|
4389
|
+
"whitespace-normal break-words",
|
|
4389
4390
|
isSelCell && "!pe-2",
|
|
4390
4391
|
isPinned && "sticky z-10 bg-background transition-colors group-hover:bg-muted group-data-[state=selected]:bg-row-selected",
|
|
4391
4392
|
cell.column.id === lastLeftPinnedId && "after:pointer-events-none after:absolute after:inset-y-0 after:-right-2 after:w-2 after:bg-gradient-to-r after:from-black/6 after:to-transparent after:opacity-0 after:transition-opacity after:duration-200 after:content-[''] group-data-[scrolled-start]/scroll:after:opacity-100 dark:after:from-white/6",
|
|
@@ -4433,4 +4434,4 @@ exports.useColumnVisibility = useColumnVisibility;
|
|
|
4433
4434
|
exports.useTablePagination = useTablePagination;
|
|
4434
4435
|
exports.useTableSelection = useTableSelection;
|
|
4435
4436
|
exports.useTableSort = useTableSort;
|
|
4436
|
-
//# sourceMappingURL=DataTable-
|
|
4437
|
+
//# sourceMappingURL=DataTable-CCIIXb4B.js.map
|