@donotdev/components 0.0.16 → 0.0.18
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/advanced/Bento/Bento.d.ts +1 -1
- package/dist/advanced/Bento/Bento.js +1 -1
- package/dist/advanced/Code/CodeContent.d.ts.map +1 -1
- package/dist/advanced/Code/CodeContent.js +23 -6
- package/dist/advanced/Code/CodeSkeleton.js +4 -4
- package/dist/advanced/ImageGallery/ImageGallery.d.ts.map +1 -1
- package/dist/advanced/ImageGallery/ImageGallery.js +11 -5
- package/dist/advanced/JsonViewer/JsonViewer.d.ts +1 -1
- package/dist/advanced/JsonViewer/JsonViewer.d.ts.map +1 -1
- package/dist/advanced/JsonViewer/JsonViewer.js +9 -3
- package/dist/atomic/ActionButton/index.js +2 -2
- package/dist/atomic/ActionButton/useAction.d.ts.map +1 -1
- package/dist/atomic/ActionButton/useAction.js +18 -5
- package/dist/atomic/Alert/index.d.ts +1 -1
- package/dist/atomic/Alert/index.d.ts.map +1 -1
- package/dist/atomic/Alert/index.js +1 -1
- package/dist/atomic/Badge/index.d.ts +1 -1
- package/dist/atomic/Button/index.d.ts +2 -2
- package/dist/atomic/Button/index.d.ts.map +1 -1
- package/dist/atomic/CallToAction/index.d.ts +2 -1
- package/dist/atomic/CallToAction/index.d.ts.map +1 -1
- package/dist/atomic/CallToAction/index.js +2 -1
- package/dist/atomic/Combobox/index.d.ts.map +1 -1
- package/dist/atomic/Combobox/index.js +3 -3
- package/dist/atomic/CopyToClipboard/index.d.ts.map +1 -1
- package/dist/atomic/CopyToClipboard/index.js +20 -4
- package/dist/atomic/Dialog/index.js +1 -1
- package/dist/atomic/DropdownMenu/DropdownMenuPrimitive.d.ts.map +1 -1
- package/dist/atomic/DropdownMenu/DropdownMenuPrimitive.js +5 -21
- package/dist/atomic/DropdownMenu/index.d.ts.map +1 -1
- package/dist/atomic/DropdownMenu/index.js +7 -17
- package/dist/atomic/Grid/GridArea.d.ts +2 -2
- package/dist/atomic/Grid/GridArea.js +2 -2
- package/dist/atomic/Grid/index.d.ts +39 -22
- package/dist/atomic/Grid/index.d.ts.map +1 -1
- package/dist/atomic/Grid/index.js +56 -27
- package/dist/atomic/HeroSection/index.d.ts +3 -0
- package/dist/atomic/HeroSection/index.d.ts.map +1 -1
- package/dist/atomic/HeroSection/index.js +5 -2
- package/dist/atomic/HoverCard/HoverCardPrimitive.d.ts.map +1 -1
- package/dist/atomic/HoverCard/HoverCardPrimitive.js +1 -1
- package/dist/atomic/HoverCard/index.d.ts +19 -4
- package/dist/atomic/HoverCard/index.d.ts.map +1 -1
- package/dist/atomic/HoverCard/index.js +24 -5
- package/dist/atomic/Icons/Icon.d.ts.map +1 -1
- package/dist/atomic/Icons/Icon.js +11 -10
- package/dist/atomic/InfiniteScroll/index.d.ts +4 -2
- package/dist/atomic/InfiniteScroll/index.d.ts.map +1 -1
- package/dist/atomic/InfiniteScroll/index.js +2 -2
- package/dist/atomic/Pagination/index.js +1 -1
- package/dist/atomic/Popover/PopoverPrimitive.d.ts +1 -1
- package/dist/atomic/Popover/PopoverPrimitive.d.ts.map +1 -1
- package/dist/atomic/Popover/PopoverPrimitive.js +2 -2
- package/dist/atomic/Popover/index.d.ts +2 -2
- package/dist/atomic/Popover/index.d.ts.map +1 -1
- package/dist/atomic/Rating/index.d.ts +1 -1
- package/dist/atomic/Rating/index.d.ts.map +1 -1
- package/dist/atomic/Section/index.d.ts +9 -6
- package/dist/atomic/Section/index.d.ts.map +1 -1
- package/dist/atomic/Section/index.js +3 -2
- package/dist/atomic/Select/index.d.ts.map +1 -1
- package/dist/atomic/Select/index.js +2 -3
- package/dist/atomic/Stack/index.d.ts +2 -2
- package/dist/atomic/Stack/index.js +2 -2
- package/dist/atomic/Stepper/index.d.ts +5 -1
- package/dist/atomic/Stepper/index.d.ts.map +1 -1
- package/dist/atomic/Stepper/index.js +9 -6
- package/dist/atomic/Table/index.d.ts +27 -5
- package/dist/atomic/Table/index.d.ts.map +1 -1
- package/dist/atomic/Table/index.js +55 -6
- package/dist/atomic/Tabs/index.d.ts +1 -1
- package/dist/atomic/Tag/index.d.ts +1 -1
- package/dist/atomic/Text/index.d.ts +2 -0
- package/dist/atomic/Text/index.d.ts.map +1 -1
- package/dist/atomic/Text/index.js +2 -1
- package/dist/atomic/Toaster/ToastPrimitive.d.ts +1 -1
- package/dist/atomic/Toaster/ToastPrimitive.d.ts.map +1 -1
- package/dist/atomic/Toaster/ToastPrimitive.js +1 -13
- package/dist/atomic/Toggle/index.d.ts +1 -1
- package/dist/atomic/index.d.ts +1 -1
- package/dist/atomic/index.d.ts.map +1 -1
- package/dist/hooks/useToast.d.ts.map +1 -1
- package/dist/hooks/useToast.js +18 -3
- package/dist/hooks/useViewportVisibility.d.ts.map +1 -1
- package/dist/hooks/useViewportVisibility.js +10 -12
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/styles/index.css +259 -96
- package/dist/types.d.ts +1 -1
- package/dist/utils/constants.d.ts +13 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +12 -0
- package/dist/utils/intersectionObserver.d.ts.map +1 -1
- package/dist/utils/intersectionObserver.js +1 -11
- package/dist/utils/variants.d.ts +1 -1
- package/package.json +3 -3
|
@@ -10,7 +10,7 @@ import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
|
10
10
|
import type { ComponentProps } from 'react';
|
|
11
11
|
declare const Popover: import("react").FC<PopoverPrimitive.PopoverProps>;
|
|
12
12
|
declare const PopoverTrigger: import("react").ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
13
|
-
declare const PopoverContent: ({ className, align, side, sideOffset, onCloseAutoFocus, onInteractOutside, ...props }: ComponentProps<typeof PopoverPrimitive.Content> & {
|
|
13
|
+
declare const PopoverContent: ({ className, align, side, sideOffset, collisionPadding, onCloseAutoFocus, onInteractOutside, ...props }: ComponentProps<typeof PopoverPrimitive.Content> & {
|
|
14
14
|
onCloseAutoFocus?: (event: Event) => void;
|
|
15
15
|
onInteractOutside?: (event: Event) => void;
|
|
16
16
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverPrimitive.d.ts","sourceRoot":"","sources":["../../../src/atomic/Popover/PopoverPrimitive.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAI5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,QAAA,MAAM,OAAO,mDAAwB,CAAC;AAEtC,QAAA,MAAM,cAAc,oIAA2B,CAAC;AAEhD,QAAA,MAAM,cAAc,GAAI,
|
|
1
|
+
{"version":3,"file":"PopoverPrimitive.d.ts","sourceRoot":"","sources":["../../../src/atomic/Popover/PopoverPrimitive.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAI5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,QAAA,MAAM,OAAO,mDAAwB,CAAC;AAEtC,QAAA,MAAM,cAAc,oIAA2B,CAAC;AAEhD,QAAA,MAAM,cAAc,GAAI,yGASrB,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG;IACnD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC5C,4CA2BA,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -12,8 +12,8 @@ import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
|
12
12
|
import { cn } from '../../utils/helpers';
|
|
13
13
|
const Popover = PopoverPrimitive.Root;
|
|
14
14
|
const PopoverTrigger = PopoverPrimitive.Trigger;
|
|
15
|
-
const PopoverContent = ({ className, align = 'start', side = 'bottom', sideOffset = 4, onCloseAutoFocus, onInteractOutside, ...props }) => {
|
|
16
|
-
return (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { align: align, side: side, sideOffset: sideOffset, onCloseAutoFocus: onCloseAutoFocus, onInteractOutside: onInteractOutside
|
|
15
|
+
const PopoverContent = ({ className, align = 'start', side = 'bottom', sideOffset = 4, collisionPadding = 8, onCloseAutoFocus, onInteractOutside, ...props }) => {
|
|
16
|
+
return (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { align: align, side: side, sideOffset: sideOffset, collisionPadding: collisionPadding, onCloseAutoFocus: onCloseAutoFocus, onInteractOutside: onInteractOutside
|
|
17
17
|
? (e) => {
|
|
18
18
|
const target = e.target;
|
|
19
19
|
const content = e.currentTarget;
|
|
@@ -4,7 +4,7 @@ import { type FloatingVariant } from '../../utils/constants';
|
|
|
4
4
|
*/
|
|
5
5
|
declare const PopoverRoot: import("react").FC<import("@radix-ui/react-popover").PopoverProps>;
|
|
6
6
|
declare const PopoverTriggerComponent: import("react").ForwardRefExoticComponent<import("@radix-ui/react-popover").PopoverTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
7
|
-
declare const PopoverContentComponent: ({ className, align, side, sideOffset, onCloseAutoFocus, onInteractOutside, ...props }: import("react").ComponentProps<import("react").ForwardRefExoticComponent<import("@radix-ui/react-popover").PopoverContentProps & import("react").RefAttributes<HTMLDivElement>>> & {
|
|
7
|
+
declare const PopoverContentComponent: ({ className, align, side, sideOffset, collisionPadding, onCloseAutoFocus, onInteractOutside, ...props }: import("react").ComponentProps<import("react").ForwardRefExoticComponent<import("@radix-ui/react-popover").PopoverContentProps & import("react").RefAttributes<HTMLDivElement>>> & {
|
|
8
8
|
onCloseAutoFocus?: (event: Event) => void;
|
|
9
9
|
onInteractOutside?: (event: Event) => void;
|
|
10
10
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -66,7 +66,7 @@ declare const Popover: {
|
|
|
66
66
|
({ trigger, children, open, onOpenChange, align, side, sideOffset, variant, className, modal, onInteractOutside, }: PopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
67
67
|
Root: import("react").FC<import("@radix-ui/react-popover").PopoverProps>;
|
|
68
68
|
Trigger: import("react").ForwardRefExoticComponent<import("@radix-ui/react-popover").PopoverTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
69
|
-
Content: ({ className, align, side, sideOffset, onCloseAutoFocus, onInteractOutside, ...props }: import("react").ComponentProps<import("react").ForwardRefExoticComponent<import("@radix-ui/react-popover").PopoverContentProps & import("react").RefAttributes<HTMLDivElement>>> & {
|
|
69
|
+
Content: ({ className, align, side, sideOffset, collisionPadding, onCloseAutoFocus, onInteractOutside, ...props }: import("react").ComponentProps<import("react").ForwardRefExoticComponent<import("@radix-ui/react-popover").PopoverContentProps & import("react").RefAttributes<HTMLDivElement>>> & {
|
|
70
70
|
onCloseAutoFocus?: (event: Event) => void;
|
|
71
71
|
onInteractOutside?: (event: Event) => void;
|
|
72
72
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Popover/index.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG/E;;GAEG;AACH,QAAA,MAAM,WAAW,oEAAmB,CAAC;AACrC,QAAA,MAAM,uBAAuB,qJAAiB,CAAC;AAC/C,QAAA,MAAM,uBAAuB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Popover/index.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG/E;;GAEG;AACH,QAAA,MAAM,WAAW,oEAAmB,CAAC;AACrC,QAAA,MAAM,uBAAuB,qJAAiB,CAAC;AAC/C,QAAA,MAAM,uBAAuB;oBAKL,CAAC;qBAA6C,CAAC;6CALzB,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;CAAmB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,2BAA2B;IAC3B,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,OAAO;wHAYV,YAAY;;;;wBAzDS,CAAC;yBAA6C,CAAC;;CA2EtE,CAAC;wBAMwB,OAAO,OAAO,GAAG;IACzC,IAAI,EAAE,OAAO,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,uBAAuB,CAAC;IACxC,OAAO,EAAE,OAAO,uBAAuB,CAAC;CACzC;AAJD,wBAIE"}
|
|
@@ -3,7 +3,7 @@ import { CONTROL_VARIANT, type ControlVariant } from '../../utils/constants';
|
|
|
3
3
|
import './Rating.css';
|
|
4
4
|
import type { HTMLAttributes } from 'react';
|
|
5
5
|
declare const ratingVariants: (props?: ({
|
|
6
|
-
variant?: "default" | "
|
|
6
|
+
variant?: "default" | "primary" | "destructive" | "warning" | "success" | "muted" | "secondary" | "accent" | null | undefined;
|
|
7
7
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
8
|
export interface RatingProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>, VariantProps<typeof ratingVariants> {
|
|
9
9
|
/** Current rating value (1-5, supports decimals for display) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Rating/index.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG7E,OAAO,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,OAAO,CAAC;AAE3D,QAAA,MAAM,cAAc;;8EAgBlB,CAAC;AAEH,MAAM,WAAW,WACf,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Rating/index.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG7E,OAAO,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,OAAO,CAAC;AAE3D,QAAA,MAAM,cAAc;;8EAgBlB,CAAC;AAEH,MAAM,WAAW,WACf,SACE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,EAChD,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,2BAA2B;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAiBD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,MAAM,GAAI,gHAWb,WAAW,4CAkHb,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,eAAe,IAAI,cAAc,EAAE,CAAC;AAC7D,YAAY,EAAE,cAAc,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ElementType, type ComponentPropsWithRef, type ReactNode } from 'react';
|
|
2
|
-
import { type
|
|
2
|
+
import { type Tone } from '../../utils/constants';
|
|
3
|
+
import { type GridCols } from '../Grid';
|
|
3
4
|
import './Section.css';
|
|
4
5
|
/**
|
|
5
6
|
* Section-specific props
|
|
@@ -17,19 +18,21 @@ interface SectionOwnProps {
|
|
|
17
18
|
/** Show separator above section @default false */
|
|
18
19
|
separator?: boolean;
|
|
19
20
|
/** Tone system for visual rhythm */
|
|
20
|
-
tone?:
|
|
21
|
+
tone?: Tone;
|
|
21
22
|
/**
|
|
22
23
|
* Content alignment (text alignment)
|
|
23
24
|
* @default 'center'
|
|
24
25
|
*/
|
|
25
26
|
align?: 'start' | 'center' | 'end';
|
|
26
27
|
/**
|
|
27
|
-
* Grid columns - fixed or
|
|
28
|
+
* Grid columns - fixed, responsive, or custom template
|
|
28
29
|
* When provided, wraps children in Grid
|
|
29
|
-
* @example 3 - always 3 columns
|
|
30
|
-
* @example
|
|
30
|
+
* @example 3 - always 3 equal columns
|
|
31
|
+
* @example "1fr 3fr" - custom column template
|
|
32
|
+
* @example [1, 1, 2, 3] - responsive equal: 1 mobile/tablet, 2 laptop, 3 desktop
|
|
33
|
+
* @example ["1fr", "1fr", "1fr 3fr", "1fr 3fr"] - responsive template
|
|
31
34
|
*/
|
|
32
|
-
gridCols?:
|
|
35
|
+
gridCols?: GridCols;
|
|
33
36
|
/**
|
|
34
37
|
* Grid gap size
|
|
35
38
|
* @default 'medium'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Section/index.tsx"],"names":[],"mappings":"AAoCA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Section/index.tsx"],"names":[],"mappings":"AAoCA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAOxD,OAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK9C,OAAO,eAAe,CAAC;AAEvB;;GAEG;AACH,UAAU,eAAe;IACvB;;;OAGG;IACH,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAEtD,sBAAsB;IACtB,QAAQ,EAAE,SAAS,CAAC;IAEpB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,oCAAoC;IACpC,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEnC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAEhD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEvC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,IAAI,eAAe,GAC3E,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,eAAe,CAAC,CAAC;AAExD;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,OAAO,8HAmGZ,CAAC;AAIF,eAAe,OAAO,CAAC"}
|
|
@@ -8,7 +8,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
8
8
|
* @example
|
|
9
9
|
* ```tsx
|
|
10
10
|
* // Fixed 3 columns
|
|
11
|
-
* <Section title="Features" gridCols={3}>
|
|
11
|
+
* <Section title="Features" gridCols={[1,1,3,3]}>
|
|
12
12
|
* <Card />
|
|
13
13
|
* <Card />
|
|
14
14
|
* <Card />
|
|
@@ -35,6 +35,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
35
35
|
import { CirclePlus, CircleMinus } from 'lucide-react';
|
|
36
36
|
import { createElement, forwardRef, useState, } from 'react';
|
|
37
37
|
import { GAP_VARIANT } from '../../styles/componentConstants';
|
|
38
|
+
import { TONE } from '../../utils/constants';
|
|
38
39
|
import { cn } from '../../utils/helpers';
|
|
39
40
|
import { CollapsiblePrimitive, CollapsibleTrigger, CollapsibleContent, } from '../Collapsible/CollapsiblePrimitive';
|
|
40
41
|
import Grid, {} from '../Grid';
|
|
@@ -55,7 +56,7 @@ import './Section.css';
|
|
|
55
56
|
* </Section>
|
|
56
57
|
* ```
|
|
57
58
|
*/
|
|
58
|
-
const Section = forwardRef(function Section({ as = 'section', children, title, separator = false, tone =
|
|
59
|
+
const Section = forwardRef(function Section({ as = 'section', children, title, separator = false, tone = TONE.GHOST, align: textAlign = 'center', gridCols, gridGap, collapsible = false, open, onOpenChange, defaultOpen = false, className, ...props }, ref) {
|
|
59
60
|
const Component = as;
|
|
60
61
|
const [internalOpen, setInternalOpen] = useState(() => collapsible ? defaultOpen : false);
|
|
61
62
|
const isControlled = collapsible && open !== undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Select/index.tsx"],"names":[],"mappings":"AAkBA,OAAO,EACL,eAAe,EAOhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CACvC,cAAc,CAAC,OAAO,eAAe,CAAC,EACtC,UAAU,CACX;IACC,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mGAAmG;IACnG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,QAAA,MAAM,MAAM,GAAI,uHAYb,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Select/index.tsx"],"names":[],"mappings":"AAkBA,OAAO,EACL,eAAe,EAOhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CACvC,cAAc,CAAC,OAAO,eAAe,CAAC,EACtC,UAAU,CACX;IACC,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mGAAmG;IACnG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,QAAA,MAAM,MAAM,GAAI,uHAYb,WAAW,4CAuHb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -10,7 +10,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
10
10
|
*/
|
|
11
11
|
import * as SelectRadix from '@radix-ui/react-select';
|
|
12
12
|
import { Check, ChevronDown } from 'lucide-react';
|
|
13
|
-
import {
|
|
13
|
+
import { useId } from 'react';
|
|
14
14
|
import { cn } from '../../utils/helpers';
|
|
15
15
|
import { FloatingLabel } from '../Label';
|
|
16
16
|
import ScrollArea from '../ScrollArea';
|
|
@@ -38,11 +38,10 @@ import './Select.css';
|
|
|
38
38
|
*/
|
|
39
39
|
const Select = ({ value, onValueChange, placeholder = 'Select an option...', options = [], trigger, disabled, isLoading, defaultValue, label, required, ...props }) => {
|
|
40
40
|
const id = useId();
|
|
41
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
42
41
|
const hasLabel = !!label;
|
|
43
42
|
const triggerElement = (_jsxs(SelectTriggerPrimitive, { id: id, className: "dndev-input dndev-select-trigger", disabled: disabled, "data-bare": hasLabel || undefined, children: [isLoading ? (_jsxs("div", { className: "dndev-select-loading-container", children: [_jsx("div", { className: "dndev-animate-spin dndev-select-loading-spinner" }), _jsx("span", { children: "Loading..." })] })) : (_jsx(SelectValuePrimitive, { placeholder: placeholder })), _jsx(SelectRadix.Icon, { asChild: true, children: _jsx(ChevronDown, {}) })] }));
|
|
44
43
|
const customTrigger = trigger ? (_jsx(SelectTriggerPrimitive, { asChild: true, disabled: disabled, className: "dndev-input dndev-select-trigger", children: trigger })) : hasLabel ? (_jsx(FloatingLabel, { htmlFor: id, label: label, disabled: disabled, required: required, children: triggerElement })) : (triggerElement);
|
|
45
|
-
return (_jsxs(SelectPrimitive, { value: value, onValueChange: onValueChange, defaultValue: defaultValue, disabled: disabled,
|
|
44
|
+
return (_jsxs(SelectPrimitive, { value: value, onValueChange: onValueChange, defaultValue: defaultValue, disabled: disabled, ...props, children: [customTrigger, _jsx(SelectRadix.Portal, { children: _jsx(SelectContentPrimitive, { className: "dndev-floating dndev-menu-content dndev-z-tooltip dndev-select-content", position: "popper", side: "bottom", sideOffset: 4, align: "start", "data-glow": "blank", children: _jsx(SelectRadix.Viewport, { children: _jsx(ScrollArea, { className: "dndev-menu-scroll-area", end: true, children: options.map((option) => {
|
|
46
45
|
if (option.value === '__label__') {
|
|
47
46
|
return (_jsx(SelectLabelPrimitive, { className: "dndev-menu-label", children: option.label }, option.label));
|
|
48
47
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @example
|
|
7
7
|
* ```tsx
|
|
8
8
|
* // Vertical stack (default div)
|
|
9
|
-
* <Stack
|
|
9
|
+
* <Stack>
|
|
10
10
|
* <Label>Email</Label>
|
|
11
11
|
* <Input />
|
|
12
12
|
* </Stack>
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* </Stack>
|
|
25
25
|
*
|
|
26
26
|
* // Centered, fit-content width with start-aligned items
|
|
27
|
-
* <Stack
|
|
27
|
+
* <Stack align="start" width="fit" centered>
|
|
28
28
|
* <Label>Item 1</Label>
|
|
29
29
|
* <Label>Item 2</Label>
|
|
30
30
|
* </Stack>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @example
|
|
8
8
|
* ```tsx
|
|
9
9
|
* // Vertical stack (default div)
|
|
10
|
-
* <Stack
|
|
10
|
+
* <Stack>
|
|
11
11
|
* <Label>Email</Label>
|
|
12
12
|
* <Input />
|
|
13
13
|
* </Stack>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* </Stack>
|
|
26
26
|
*
|
|
27
27
|
* // Centered, fit-content width with start-aligned items
|
|
28
|
-
* <Stack
|
|
28
|
+
* <Stack align="start" width="fit" centered>
|
|
29
29
|
* <Label>Item 1</Label>
|
|
30
30
|
* <Label>Item 2</Label>
|
|
31
31
|
* </Stack>
|
|
@@ -20,7 +20,7 @@ export interface StepperStep {
|
|
|
20
20
|
content: ReactNode;
|
|
21
21
|
}
|
|
22
22
|
declare const stepperVariants: (props?: ({
|
|
23
|
-
variant?: "default" | "
|
|
23
|
+
variant?: "default" | "primary" | "destructive" | "warning" | "success" | "muted" | "secondary" | "accent" | null | undefined;
|
|
24
24
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
25
25
|
export type StepperVariant = VariantProps<typeof stepperVariants>['variant'];
|
|
26
26
|
export interface StepperProps extends VariantProps<typeof stepperVariants> {
|
|
@@ -44,6 +44,10 @@ export interface StepperProps extends VariantProps<typeof stepperVariants> {
|
|
|
44
44
|
className?: string;
|
|
45
45
|
/** Callback when step changes */
|
|
46
46
|
onStepChange?: (stepIndex: number) => void;
|
|
47
|
+
/** Controlled active step (0-based). When set, Stepper is controlled. */
|
|
48
|
+
activeStep?: number;
|
|
49
|
+
/** Show primary Next / secondary Previous buttons below the card (default: false) */
|
|
50
|
+
showPrimaryNavigation?: boolean;
|
|
47
51
|
}
|
|
48
52
|
/**
|
|
49
53
|
* Reusable stepper component for step-by-step workflows.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Stepper/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AASlE,OAAO,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mBAAmB;IACnB,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,QAAA,MAAM,eAAe;;8EAgBnB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC;AAE7E,MAAM,WAAW,YAAa,SAAQ,YAAY,CAAC,OAAO,eAAe,CAAC;IACxE,gCAAgC;IAChC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Stepper/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AASlE,OAAO,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mBAAmB;IACnB,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,QAAA,MAAM,eAAe;;8EAgBnB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC;AAE7E,MAAM,WAAW,YAAa,SAAQ,YAAY,CAAC,OAAO,eAAe,CAAC;IACxE,gCAAgC;IAChC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,YAAY,CAyK/C,CAAC;AAEF,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -51,16 +51,19 @@ const stepperVariants = cva('', {
|
|
|
51
51
|
* @param {StepperProps} props - The props for the stepper
|
|
52
52
|
* @returns {JSX.Element | null} The rendered stepper
|
|
53
53
|
*/
|
|
54
|
-
export const Stepper = ({ steps, defaultStep = 0, showStepNumbers = true, showNavigation = false, showStepInfo = false, previousLabel = 'Previous', nextLabel = 'Next', stepInfoTemplate = (current, total) => `Step ${current} of ${total}`, variant, className, onStepChange, }) => {
|
|
55
|
-
const [
|
|
54
|
+
export const Stepper = ({ steps, defaultStep = 0, showStepNumbers = true, showNavigation = false, showStepInfo = false, previousLabel = 'Previous', nextLabel = 'Next', stepInfoTemplate = (current, total) => `Step ${current} of ${total}`, variant, className, onStepChange, activeStep: controlledStep, showPrimaryNavigation = false, }) => {
|
|
55
|
+
const [internalStep, setInternalStep] = useState(defaultStep);
|
|
56
56
|
const containerRef = useRef(null);
|
|
57
57
|
const variantAttrs = getVariantDataAttrs({ variant });
|
|
58
|
+
const isControlled = controlledStep !== undefined;
|
|
59
|
+
const activeStep = isControlled ? controlledStep : internalStep;
|
|
58
60
|
const handleStepChange = useCallback((newStep) => {
|
|
59
61
|
if (newStep >= 0 && newStep < steps.length) {
|
|
60
|
-
|
|
62
|
+
if (!isControlled)
|
|
63
|
+
setInternalStep(newStep);
|
|
61
64
|
onStepChange?.(newStep);
|
|
62
65
|
}
|
|
63
|
-
}, [steps.length, onStepChange]);
|
|
66
|
+
}, [steps.length, onStepChange, isControlled]);
|
|
64
67
|
// Keyboard navigation - only when Stepper is focused (standard pattern)
|
|
65
68
|
const handleKeyDown = useCallback((e) => {
|
|
66
69
|
if (e.key === 'ArrowLeft') {
|
|
@@ -79,7 +82,7 @@ export const Stepper = ({ steps, defaultStep = 0, showStepNumbers = true, showNa
|
|
|
79
82
|
if (!currentStep) {
|
|
80
83
|
return null;
|
|
81
84
|
}
|
|
82
|
-
return (_jsxs(Stack, { ref: containerRef,
|
|
85
|
+
return (_jsxs(Stack, { ref: containerRef, className: cn('dndev-stepper-container', className), onKeyDown: handleKeyDown, tabIndex: 0, role: "region", "aria-label": "Stepper navigation", children: [_jsxs("div", { className: "dndev-stepper-nav", children: [showNavigation && (_jsx("button", { onClick: () => handleStepChange(activeStep - 1), disabled: isFirstStep, className: "dndev-interactive", "data-role": "stepper-nav-arrow", "aria-label": previousLabel, ...variantAttrs, children: _jsx(ChevronLeft, {}) })), steps.map((step, index) => (_jsxs("div", { className: "dndev-stepper-nav-item", children: [_jsx("button", { onClick: () => handleStepChange(index), className: "dndev-interactive", "data-role": "stepper-button", "data-state": index === activeStep
|
|
83
86
|
? 'active'
|
|
84
87
|
: index < activeStep
|
|
85
88
|
? 'completed'
|
|
@@ -91,7 +94,7 @@ export const Stepper = ({ steps, defaultStep = 0, showStepNumbers = true, showNa
|
|
|
91
94
|
typeof currentStep.icon.props === 'object' &&
|
|
92
95
|
'icon' in currentStep.icon.props
|
|
93
96
|
? currentStep.icon.props.icon
|
|
94
|
-
: currentStep.icon, title: currentStep.title, content: currentStep.content }), showStepInfo && (_jsx("div", { className: "dndev-stepper-info", children: stepInfoTemplate(activeStep + 1, steps.length) }))] }));
|
|
97
|
+
: currentStep.icon, title: currentStep.title, content: currentStep.content }), showStepInfo && (_jsx("div", { className: "dndev-stepper-info", children: stepInfoTemplate(activeStep + 1, steps.length) })), showPrimaryNavigation && (_jsxs("div", { className: "dndev-stepper-actions", children: [_jsx(Button, { variant: BUTTON_VARIANT.SECONDARY, onClick: () => handleStepChange(activeStep - 1), disabled: isFirstStep, "aria-label": previousLabel, children: previousLabel }), _jsx(Button, { variant: BUTTON_VARIANT.PRIMARY, onClick: () => handleStepChange(activeStep + 1), disabled: isLastStep, "aria-label": nextLabel, children: nextLabel })] }))] }));
|
|
95
98
|
};
|
|
96
99
|
export default Stepper;
|
|
97
100
|
export { stepperVariants };
|
|
@@ -12,7 +12,7 @@ import './Table.css';
|
|
|
12
12
|
* @since 0.0.1
|
|
13
13
|
* @author AMBROISE PARK Consulting
|
|
14
14
|
*/
|
|
15
|
-
export interface TableColumn<T =
|
|
15
|
+
export interface TableColumn<T = unknown> {
|
|
16
16
|
key: string;
|
|
17
17
|
/** Column header - can be a string or ReactNode (e.g., Button, icon) */
|
|
18
18
|
title: string | ReactNode;
|
|
@@ -25,7 +25,7 @@ export interface TableColumn<T = any> {
|
|
|
25
25
|
* Modern pattern for dynamic content generation. Preferred over nested component composition.
|
|
26
26
|
* Allows rendering custom components (buttons, inputs, etc.) within table cells.
|
|
27
27
|
*/
|
|
28
|
-
render?: (value:
|
|
28
|
+
render?: (value: unknown, record: T, index: number) => ReactNode;
|
|
29
29
|
/**
|
|
30
30
|
* Column width - LAYOUT EXCEPTION
|
|
31
31
|
* Controls structural data presentation, not styling.
|
|
@@ -46,7 +46,7 @@ export interface TableColumn<T = any> {
|
|
|
46
46
|
* @since 0.0.1
|
|
47
47
|
* @author AMBROISE PARK Consulting
|
|
48
48
|
*/
|
|
49
|
-
export interface DataTableProps<T =
|
|
49
|
+
export interface DataTableProps<T = unknown> {
|
|
50
50
|
/** Data array */
|
|
51
51
|
data: T[];
|
|
52
52
|
/** Column definitions */
|
|
@@ -91,6 +91,26 @@ export interface DataTableProps<T = any> {
|
|
|
91
91
|
onRowClick?: (row: T) => void;
|
|
92
92
|
/** Additional CSS classes */
|
|
93
93
|
className?: string;
|
|
94
|
+
/**
|
|
95
|
+
* Enable export functionality (CSV download button)
|
|
96
|
+
* @default false
|
|
97
|
+
*/
|
|
98
|
+
exportable?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Custom filename for export (without extension)
|
|
101
|
+
* @default 'export'
|
|
102
|
+
*/
|
|
103
|
+
exportFilename?: string;
|
|
104
|
+
/**
|
|
105
|
+
* Callback when export is triggered. If provided, handles export externally.
|
|
106
|
+
* Receives the processed (filtered/sorted) data array.
|
|
107
|
+
*/
|
|
108
|
+
onExport?: (data: T[]) => void;
|
|
109
|
+
/**
|
|
110
|
+
* Label for the export button
|
|
111
|
+
* @default 'Export'
|
|
112
|
+
*/
|
|
113
|
+
exportLabel?: string;
|
|
94
114
|
}
|
|
95
115
|
/**
|
|
96
116
|
* Basic Table wrapper component.
|
|
@@ -105,7 +125,7 @@ declare function TableHead({ className, ...props }: HTMLAttributes<HTMLTableCell
|
|
|
105
125
|
declare function TableCell({ className, ...props }: HTMLAttributes<HTMLTableCellElement>): import("react/jsx-runtime").JSX.Element;
|
|
106
126
|
declare function TableCaption({ className, ...props }: HTMLAttributes<HTMLTableCaptionElement>): import("react/jsx-runtime").JSX.Element;
|
|
107
127
|
/**
|
|
108
|
-
* High-level DataTable component with built-in sorting, filtering, search, and
|
|
128
|
+
* High-level DataTable component with built-in sorting, filtering, search, pagination, and export.
|
|
109
129
|
*
|
|
110
130
|
* @component
|
|
111
131
|
* @example
|
|
@@ -118,12 +138,14 @@ declare function TableCaption({ className, ...props }: HTMLAttributes<HTMLTableC
|
|
|
118
138
|
* ]}
|
|
119
139
|
* searchable
|
|
120
140
|
* pagination
|
|
141
|
+
* exportable
|
|
142
|
+
* exportFilename="users-export"
|
|
121
143
|
* />
|
|
122
144
|
* ```
|
|
123
145
|
* @param {DataTableProps} props - The props for the data table
|
|
124
146
|
* @returns {ReactNode} The rendered data table
|
|
125
147
|
*/
|
|
126
|
-
declare const DataTable: <T =
|
|
148
|
+
declare const DataTable: <T = unknown>({ data, columns, sortable, selectable, searchable, pagination, currentPage: currentPageProp, pageSize: pageSizeProp, total: totalProp, onPageChange, onPageSizeChange, showingLabel, paginationPreviousLabel, paginationNextLabel, paginationItemsPerPagePlaceholder, loading, gridLines, onSort, onSelect, onSearch, onRowClick, className, exportable, exportFilename, onExport, exportLabel, }: DataTableProps<T>) => ReactNode;
|
|
127
149
|
export default Table;
|
|
128
150
|
export { TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, DataTable, };
|
|
129
151
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Table/index.tsx"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,cAAc,EAEpB,MAAM,OAAO,CAAC;AAUf,OAAO,aAAa,CAAC;AAErB;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Table/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
// packages/components/src/atomic/Table/index.tsx
|
|
3
3
|
/**
|
|
4
4
|
* @fileoverview Table component
|
|
5
|
-
* @description Enhanced table with sorting, filtering, and
|
|
5
|
+
* @description Enhanced table with sorting, filtering, selection, and export
|
|
6
6
|
*
|
|
7
|
-
* @version 0.0.
|
|
7
|
+
* @version 0.0.2
|
|
8
8
|
* @since 0.0.1
|
|
9
9
|
* @author AMBROISE PARK Consulting
|
|
10
10
|
*/
|
|
11
|
-
import { ChevronUp, ChevronDown, Search } from 'lucide-react';
|
|
11
|
+
import { ChevronUp, ChevronDown, Search, Download } from 'lucide-react';
|
|
12
12
|
import { useState, useMemo, } from 'react';
|
|
13
13
|
import { cn } from '../../utils/helpers';
|
|
14
14
|
import Button, { BUTTON_VARIANT } from '../Button';
|
|
@@ -49,7 +49,7 @@ function TableCaption({ className, ...props }) {
|
|
|
49
49
|
}
|
|
50
50
|
// Enhanced DataTable component
|
|
51
51
|
/**
|
|
52
|
-
* High-level DataTable component with built-in sorting, filtering, search, and
|
|
52
|
+
* High-level DataTable component with built-in sorting, filtering, search, pagination, and export.
|
|
53
53
|
*
|
|
54
54
|
* @component
|
|
55
55
|
* @example
|
|
@@ -62,12 +62,14 @@ function TableCaption({ className, ...props }) {
|
|
|
62
62
|
* ]}
|
|
63
63
|
* searchable
|
|
64
64
|
* pagination
|
|
65
|
+
* exportable
|
|
66
|
+
* exportFilename="users-export"
|
|
65
67
|
* />
|
|
66
68
|
* ```
|
|
67
69
|
* @param {DataTableProps} props - The props for the data table
|
|
68
70
|
* @returns {ReactNode} The rendered data table
|
|
69
71
|
*/
|
|
70
|
-
const DataTable = ({ data, columns, sortable = true, selectable = false, searchable = true, pagination = true, currentPage: currentPageProp, pageSize: pageSizeProp, total: totalProp, onPageChange, onPageSizeChange, showingLabel, paginationPreviousLabel, paginationNextLabel, paginationItemsPerPagePlaceholder, loading = false, gridLines = false, onSort, onSelect, onSearch, onRowClick, className, }) => {
|
|
72
|
+
const DataTable = ({ data, columns, sortable = true, selectable = false, searchable = true, pagination = true, currentPage: currentPageProp, pageSize: pageSizeProp, total: totalProp, onPageChange, onPageSizeChange, showingLabel, paginationPreviousLabel, paginationNextLabel, paginationItemsPerPagePlaceholder, loading = false, gridLines = false, onSort, onSelect, onSearch, onRowClick, className, exportable = false, exportFilename = 'export', onExport, exportLabel = 'Export', }) => {
|
|
71
73
|
const [sortColumn, setSortColumn] = useState('');
|
|
72
74
|
const [sortDirection, setSortDirection] = useState('asc');
|
|
73
75
|
const [searchQuery, setSearchQuery] = useState('');
|
|
@@ -162,11 +164,58 @@ const DataTable = ({ data, columns, sortable = true, selectable = false, searcha
|
|
|
162
164
|
setSearchQuery(query);
|
|
163
165
|
onSearch?.(query);
|
|
164
166
|
};
|
|
167
|
+
/**
|
|
168
|
+
* Export processed data to CSV
|
|
169
|
+
* Uses the current filtered/sorted data, respecting column definitions
|
|
170
|
+
*/
|
|
171
|
+
const handleExport = () => {
|
|
172
|
+
// If custom handler provided, delegate to it
|
|
173
|
+
if (onExport) {
|
|
174
|
+
onExport(processedData);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
// Get column headers (only data columns, not render-only columns)
|
|
178
|
+
const dataColumns = columns.filter((col) => col.dataIndex);
|
|
179
|
+
const headers = dataColumns
|
|
180
|
+
.map((col) => {
|
|
181
|
+
// Extract string title, handle ReactNode titles
|
|
182
|
+
const title = col.title;
|
|
183
|
+
return typeof title === 'string' ? title : col.key;
|
|
184
|
+
})
|
|
185
|
+
.join(',');
|
|
186
|
+
// Build CSV rows
|
|
187
|
+
const rows = processedData.map((row) => dataColumns
|
|
188
|
+
.map((col) => {
|
|
189
|
+
const value = col.dataIndex ? row[col.dataIndex] : '';
|
|
190
|
+
// Escape quotes and wrap in quotes if contains comma, quote, or newline
|
|
191
|
+
const stringValue = String(value ?? '');
|
|
192
|
+
if (stringValue.includes(',') ||
|
|
193
|
+
stringValue.includes('"') ||
|
|
194
|
+
stringValue.includes('\n')) {
|
|
195
|
+
return `"${stringValue.replace(/"/g, '""')}"`;
|
|
196
|
+
}
|
|
197
|
+
return stringValue;
|
|
198
|
+
})
|
|
199
|
+
.join(','));
|
|
200
|
+
// Combine headers and rows
|
|
201
|
+
const csv = [headers, ...rows].join('\n');
|
|
202
|
+
// Create and trigger download
|
|
203
|
+
const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
|
|
204
|
+
const url = URL.createObjectURL(blob);
|
|
205
|
+
const link = document.createElement('a');
|
|
206
|
+
link.setAttribute('href', url);
|
|
207
|
+
link.setAttribute('download', `${exportFilename}.csv`);
|
|
208
|
+
link.style.visibility = 'hidden';
|
|
209
|
+
document.body.appendChild(link);
|
|
210
|
+
link.click();
|
|
211
|
+
document.body.removeChild(link);
|
|
212
|
+
URL.revokeObjectURL(url);
|
|
213
|
+
};
|
|
165
214
|
// Industry standard pattern: When loading, pass empty rows to render actual structure
|
|
166
215
|
// Component will detect empty data and render skeleton bars in cells
|
|
167
216
|
const skeletonRows = Array.from({ length: 3 }, () => ({}));
|
|
168
217
|
const finalDisplayData = loading ? skeletonRows : displayData;
|
|
169
|
-
return (_jsxs(Stack, { gap: "
|
|
218
|
+
return (_jsxs(Stack, { children: [(searchable || exportable) && (_jsxs(Stack, { direction: "row", align: "center", gap: "tight", children: [searchable && (_jsxs(Stack, { direction: "row", align: "center", className: "dndev-relative dndev-flex-1 dndev-table-search-container", children: [_jsx(Search, { className: "dndev-table-search-icon" }), _jsx(Input, { placeholder: "Search...", value: searchQuery, onChange: (e) => handleSearch(e.target.value), className: "dndev-table-search-input" })] })), exportable && (_jsx(Button, { variant: "outline", icon: Download, onClick: handleExport, disabled: loading || processedData.length === 0, display: "compact", "aria-label": exportLabel, children: exportLabel }))] })), _jsxs(Table, { className: cn(gridLines && 'dndev-table-grid'), children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [selectable && (_jsx(TableHead, { className: "dndev-w-touch", children: _jsx(Checkbox, { checked: selectedRows.length === displayData.length &&
|
|
170
219
|
displayData.length > 0, onCheckedChange: handleSelectAll, "aria-label": "Select all rows" }) })), columns.map((column) => (_jsx(TableHead, { className: cn(column.sortable && 'dndev-cursor-pointer'), "data-sortable": column.sortable, "data-align": column.align, style: { width: column.width }, onClick: (e) => {
|
|
171
220
|
// Only sort if clicking on header, not on interactive elements (buttons, inputs, etc.)
|
|
172
221
|
if (column.sortable) {
|
|
@@ -25,7 +25,7 @@ export interface TabItem {
|
|
|
25
25
|
forceMount?: boolean;
|
|
26
26
|
}
|
|
27
27
|
declare const tabsVariants: (props?: ({
|
|
28
|
-
variant?: "default" | "
|
|
28
|
+
variant?: "default" | "primary" | "destructive" | "warning" | "success" | "muted" | "secondary" | "accent" | null | undefined;
|
|
29
29
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
30
30
|
export type TabsVariant = VariantProps<typeof tabsVariants>['variant'];
|
|
31
31
|
export interface TabsProps extends Omit<ComponentProps<typeof TabsPrimitive>, 'children'>, VariantProps<typeof tabsVariants> {
|
|
@@ -15,7 +15,7 @@ export declare const TAG_VARIANT: {
|
|
|
15
15
|
readonly ACCENT: "accent";
|
|
16
16
|
};
|
|
17
17
|
declare const tagVariants: (props?: ({
|
|
18
|
-
variant?: "default" | "
|
|
18
|
+
variant?: "default" | "outline" | "accent" | null | undefined;
|
|
19
19
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
20
20
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
21
21
|
export interface TagProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'onClick'>, VariantProps<typeof tagVariants> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Text/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;CAGf,CAAC;AAEX;;GAEG;AACH,UAAU,YAAY;IACpB;;;;;;;;;;OAUG;IACH,EAAE,CAAC,EACC,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,GAAG,GACH,MAAM,GACN,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,OAAO,GACP,MAAM,GACN,QAAQ,GACR,IAAI,CAAC;IAET,wBAAwB;IACxB,QAAQ,EAAE,SAAS,CAAC;IAEpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;IAE3D;;;;;;;OAOG;IACH,KAAK,CAAC,EACF,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,MAAM,GACN,OAAO,GACP,SAAS,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Text/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;CAGf,CAAC;AAEX;;GAEG;AACH,UAAU,YAAY;IACpB;;;;;;;;;;OAUG;IACH,EAAE,CAAC,EACC,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,GAAG,GACH,MAAM,GACN,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,OAAO,GACP,MAAM,GACN,QAAQ,GACR,IAAI,CAAC;IAET,wBAAwB;IACxB,QAAQ,EAAE,SAAS,CAAC;IAEpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;IAE3D;;;;;;;OAOG;IACH,KAAK,CAAC,EACF,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,MAAM,GACN,OAAO,GACP,SAAS,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IAEnD,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,WAAW,GAAG,KAAK,IAAI,YAAY,GACjE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,YAAY,CAAC,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,QAAA,MAAM,IAAI,uHAuDR,CAAC;AAIH,eAAe,IAAI,CAAC;AACpB,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -79,7 +79,7 @@ export const TEXT_VARIANT = {
|
|
|
79
79
|
* @param {TextProps} props - The props for the text
|
|
80
80
|
* @returns {JSX.Element} The rendered text component
|
|
81
81
|
*/
|
|
82
|
-
const Text = forwardRef(function Text({ as = 'div', children, variant = TEXT_VARIANT.DEFAULT, level, align, weight, className, ...props }, ref) {
|
|
82
|
+
const Text = forwardRef(function Text({ as = 'div', children, variant = TEXT_VARIANT.DEFAULT, level, align, weight, italic, className, ...props }, ref) {
|
|
83
83
|
const Component = as;
|
|
84
84
|
const variantAttrs = getVariantDataAttrs({ variant });
|
|
85
85
|
// Auto-map as prop to level if level not explicitly provided
|
|
@@ -99,6 +99,7 @@ const Text = forwardRef(function Text({ as = 'div', children, variant = TEXT_VAR
|
|
|
99
99
|
className: cn('dndev-text-base', className),
|
|
100
100
|
'data-text-align': align || undefined,
|
|
101
101
|
'data-font-weight': weight || undefined,
|
|
102
|
+
'data-italic': italic || undefined,
|
|
102
103
|
...variantAttrs,
|
|
103
104
|
...levelAttrs,
|
|
104
105
|
...props,
|
|
@@ -13,7 +13,7 @@ import type { ComponentProps, ReactElement } from 'react';
|
|
|
13
13
|
declare const ToastProvider: import("react").FC<ToastPrimitives.ToastProviderProps>;
|
|
14
14
|
declare function ToastViewport({ className, ...props }: ComponentProps<typeof ToastPrimitives.Viewport>): import("react/jsx-runtime").JSX.Element;
|
|
15
15
|
declare const toastVariants: (props?: ({
|
|
16
|
-
variant?: "default" | "
|
|
16
|
+
variant?: "default" | "error" | "warning" | "info" | "success" | null | undefined;
|
|
17
17
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
18
18
|
interface ToastProps extends ComponentProps<typeof ToastPrimitives.Root>, VariantProps<typeof toastVariants> {
|
|
19
19
|
toastType?: ToastType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToastPrimitive.d.ts","sourceRoot":"","sources":["../../../src/atomic/Toaster/ToastPrimitive.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1D,QAAA,MAAM,aAAa,wDAA2B,CAAC;AAE/C,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,QAAQ,CAAC,2CAOjD;AAED,QAAA,MAAM,aAAa;;8EAajB,CAAC;AAEH,UAAU,UACR,SACE,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,EAC3C,YAAY,CAAC,OAAO,aAAa,CAAC;IACpC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,KAAK,kBAAkB,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;AAE3D,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CA6BrE;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,2CAQ/C;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"ToastPrimitive.d.ts","sourceRoot":"","sources":["../../../src/atomic/Toaster/ToastPrimitive.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1D,QAAA,MAAM,aAAa,wDAA2B,CAAC;AAE/C,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,QAAQ,CAAC,2CAOjD;AAED,QAAA,MAAM,aAAa;;8EAajB,CAAC;AAEH,UAAU,UACR,SACE,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,EAC3C,YAAY,CAAC,OAAO,aAAa,CAAC;IACpC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,KAAK,kBAAkB,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;AAE3D,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CA6BrE;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,2CAQ/C;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAU9C;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAO9C;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC,2CAOpD;AAED,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,CAAC;AACnC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,WAAW,GACZ,CAAC"}
|
|
@@ -56,19 +56,7 @@ function ToastAction({ className, ...props }) {
|
|
|
56
56
|
return (_jsx(ToastPrimitives.Action, { className: cn(className), "data-role": "toast-action", ...props }));
|
|
57
57
|
}
|
|
58
58
|
function ToastClose({ className, ...props }) {
|
|
59
|
-
return (_jsx(ToastPrimitives.Close, { className: cn('dndev-toast-close', className), "toast-close": "",
|
|
60
|
-
if (props.onClick) {
|
|
61
|
-
props.onClick(e);
|
|
62
|
-
}
|
|
63
|
-
// Ensure onOpenChange gets triggered properly
|
|
64
|
-
const toast = e.currentTarget.closest('[role="status"]');
|
|
65
|
-
if (toast) {
|
|
66
|
-
const rootComponent = toast;
|
|
67
|
-
if (typeof rootComponent.onOpenChange === 'function') {
|
|
68
|
-
rootComponent.onOpenChange(false);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}, ...props, children: _jsx(X, { className: "dndev-size-md" }) }));
|
|
59
|
+
return (_jsx(ToastPrimitives.Close, { className: cn('dndev-toast-close', className), "toast-close": "", ...props, children: _jsx(X, { className: "dndev-size-md" }) }));
|
|
72
60
|
}
|
|
73
61
|
function ToastTitle({ className, ...props }) {
|
|
74
62
|
return (_jsx(ToastPrimitives.Title, { className: cn('dndev-toast-title', className), ...props }));
|
|
@@ -10,7 +10,7 @@ import { type VariantProps } from 'class-variance-authority';
|
|
|
10
10
|
import { TogglePrimitive } from './TogglePrimitive';
|
|
11
11
|
import type { ComponentPropsWithoutRef } from 'react';
|
|
12
12
|
declare const toggleVariants: (props?: ({
|
|
13
|
-
variant?: "default" | "
|
|
13
|
+
variant?: "default" | "outline" | "primary" | "destructive" | "warning" | "success" | "muted" | "secondary" | "accent" | null | undefined;
|
|
14
14
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
15
15
|
export interface ToggleProps extends ComponentPropsWithoutRef<typeof TogglePrimitive>, VariantProps<typeof toggleVariants> {
|
|
16
16
|
}
|