@donotdev/components 0.0.10 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/atomic/Accordion/index.d.ts +2 -16
  2. package/dist/atomic/Accordion/index.d.ts.map +1 -1
  3. package/dist/atomic/Accordion/index.js +4 -25
  4. package/dist/atomic/Alert/index.d.ts.map +1 -1
  5. package/dist/atomic/Alert/index.js +1 -1
  6. package/dist/atomic/Button/index.js +6 -3
  7. package/dist/atomic/Calendar/index.js +1 -1
  8. package/dist/atomic/CallToAction/index.d.ts.map +1 -1
  9. package/dist/atomic/CallToAction/index.js +1 -1
  10. package/dist/atomic/Collapsible/index.d.ts +12 -16
  11. package/dist/atomic/Collapsible/index.d.ts.map +1 -1
  12. package/dist/atomic/Collapsible/index.js +24 -24
  13. package/dist/atomic/Combobox/index.d.ts +9 -47
  14. package/dist/atomic/Combobox/index.d.ts.map +1 -1
  15. package/dist/atomic/Combobox/index.js +135 -87
  16. package/dist/atomic/Dialog/index.d.ts.map +1 -1
  17. package/dist/atomic/Dialog/index.js +1 -1
  18. package/dist/atomic/DropdownMenu/index.js +1 -1
  19. package/dist/atomic/Input/index.d.ts +1 -1
  20. package/dist/atomic/Input/index.d.ts.map +1 -1
  21. package/dist/atomic/Input/index.js +6 -22
  22. package/dist/atomic/Label/FloatingLabel.d.ts +31 -0
  23. package/dist/atomic/Label/FloatingLabel.d.ts.map +1 -0
  24. package/dist/atomic/Label/FloatingLabel.js +34 -0
  25. package/dist/atomic/Label/index.d.ts +5 -1
  26. package/dist/atomic/Label/index.d.ts.map +1 -1
  27. package/dist/atomic/Label/index.js +8 -2
  28. package/dist/atomic/PasswordInput/index.d.ts +9 -10
  29. package/dist/atomic/PasswordInput/index.d.ts.map +1 -1
  30. package/dist/atomic/PasswordInput/index.js +10 -30
  31. package/dist/atomic/Section/index.d.ts +25 -1
  32. package/dist/atomic/Section/index.d.ts.map +1 -1
  33. package/dist/atomic/Section/index.js +22 -4
  34. package/dist/atomic/Select/index.d.ts +3 -1
  35. package/dist/atomic/Select/index.d.ts.map +1 -1
  36. package/dist/atomic/Select/index.js +13 -24
  37. package/dist/atomic/Skeleton/index.d.ts.map +1 -1
  38. package/dist/atomic/Skeleton/index.js +6 -3
  39. package/dist/atomic/Switch/index.d.ts +18 -4
  40. package/dist/atomic/Switch/index.d.ts.map +1 -1
  41. package/dist/atomic/Switch/index.js +25 -6
  42. package/dist/atomic/Table/index.d.ts +17 -7
  43. package/dist/atomic/Table/index.d.ts.map +1 -1
  44. package/dist/atomic/Table/index.js +13 -3
  45. package/dist/atomic/Tooltip/index.d.ts.map +1 -1
  46. package/dist/atomic/Tooltip/index.js +6 -2
  47. package/dist/atomic/VideoPlayer/index.d.ts.map +1 -1
  48. package/dist/atomic/index.d.ts +2 -3
  49. package/dist/atomic/index.d.ts.map +1 -1
  50. package/dist/atomic/index.js +1 -2
  51. package/dist/hooks/useIntersectionObserver.js +3 -1
  52. package/dist/index.js +4 -4
  53. package/dist/styles/index.css +495 -81
  54. package/package.json +1 -1
  55. package/dist/atomic/Combobox/ComboboxPrimitive.d.ts +0 -18
  56. package/dist/atomic/Combobox/ComboboxPrimitive.d.ts.map +0 -1
  57. package/dist/atomic/Combobox/ComboboxPrimitive.js +0 -14
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // packages/components/src/atomic/PasswordInput/index.tsx
3
3
  /**
4
4
  * @fileoverview PasswordInput component
@@ -9,25 +9,26 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
9
9
  * @author AMBROISE PARK Consulting
10
10
  */
11
11
  import { Eye, EyeOff } from 'lucide-react';
12
- import { useState, useId, } from 'react';
12
+ import { useState, useId } from 'react';
13
13
  import { cn } from '../../utils/helpers';
14
- import Button, { BUTTON_VARIANT } from '../Button';
15
- import Label from '../Label';
14
+ import { FloatingLabel } from '../Label';
16
15
  import './PasswordInput.css';
17
16
  /**
18
17
  * PasswordInput Component
19
18
  *
20
19
  * A password input field with show/hide toggle functionality.
21
20
  * Features industry-standard UX patterns:
22
- * - Eye icon toggle (show/hide password)
23
- * - Keyboard accessibility (Enter to toggle)
21
+ * - Eye icon toggle (show/hide password) - ALWAYS at end, cannot be overridden
24
22
  * - Smooth icon transitions
25
23
  * - Mobile-friendly touch targets
26
24
  * - Screen reader support
27
25
  * - ARIA labels and descriptions
28
26
  *
27
+ * Opinionated: Eye icon is ALWAYS positioned at end with inline styles.
28
+ * If you need different behavior, create your own component.
29
+ *
29
30
  * @component
30
- * @version 0.0.1
31
+ * @version 0.0.2
31
32
  * @since 0.0.1
32
33
  * @author AMBROISE PARK Consulting
33
34
  * @example
@@ -36,13 +37,12 @@ import './PasswordInput.css';
36
37
  * value={password}
37
38
  * onChange={setPassword}
38
39
  * placeholder="Enter password"
39
- * showToggle={true}
40
40
  * />
41
41
  * ```
42
42
  * @param {PasswordInputProps} props - The props for the password input
43
43
  * @returns {JSX.Element} The rendered password input
44
44
  */
45
- const PasswordInput = ({ className, showToggle = true, toggleButton, visible: controlledVisible, onVisibilityChange, label, value, onFocus, onBlur, ...props }) => {
45
+ const PasswordInput = ({ className, visible: controlledVisible, onVisibilityChange, label, value, onFocus, onBlur, required, ...props }) => {
46
46
  const id = useId();
47
47
  const [internalVisible, setInternalVisible] = useState(false);
48
48
  // Use controlled or internal state
@@ -55,26 +55,6 @@ const PasswordInput = ({ className, showToggle = true, toggleButton, visible: co
55
55
  }
56
56
  onVisibilityChange?.(newVisible);
57
57
  };
58
- const handleKeyDown = (e) => {
59
- if (e.key === 'Enter' && showToggle) {
60
- e.preventDefault();
61
- toggleVisibility();
62
- }
63
- };
64
- return (_jsxs("div", { className: "dndev-relative", children: [hasLabel && (_jsx(Label, { htmlFor: id, style: {
65
- position: 'absolute',
66
- left: 'var(--gap-md)',
67
- top: 'calc(-1 * var(--font-size-xs) / 2 - 1px)',
68
- fontSize: 'var(--font-size-xs)',
69
- fontWeight: 500,
70
- color: props.disabled
71
- ? 'var(--muted-foreground)'
72
- : 'var(--foreground)',
73
- pointerEvents: 'none',
74
- zIndex: 1,
75
- backgroundColor: 'var(--background)',
76
- padding: '0 var(--gap-xs)',
77
- lineHeight: 1,
78
- }, children: label })), _jsx("input", { id: id, type: isVisible ? 'text' : 'password', value: value, className: cn('dndev-input', showToggle && 'dndev-password-input-with-toggle', className), onKeyDown: handleKeyDown, onFocus: onFocus, onBlur: onBlur, ...props }), showToggle && (_jsx(Button, { type: "button", variant: BUTTON_VARIANT.GHOST, className: "dndev-password-toggle-button", onClick: toggleVisibility, "aria-label": isVisible ? 'Hide password' : 'Show password', "aria-describedby": props['aria-describedby'], tabIndex: -1, children: toggleButton || (_jsx(_Fragment, { children: isVisible ? (_jsx(EyeOff, { className: "dndev-size-md dndev-password-toggle-icon" })) : (_jsx(Eye, { className: "dndev-size-md dndev-password-toggle-icon" })) })) }))] }));
58
+ return (_jsxs("div", { className: "dndev-relative", children: [hasLabel && (_jsx(FloatingLabel, { htmlFor: id, disabled: props.disabled, required: required, children: label })), _jsx("input", { id: id, type: isVisible ? 'text' : 'password', value: value, className: cn('dndev-input', 'dndev-password-input-with-toggle', className), onFocus: onFocus, onBlur: onBlur, required: required, ...props }), _jsx("button", { type: "button", className: "dndev-password-toggle-button", onClick: toggleVisibility, "aria-label": isVisible ? 'Hide password' : 'Show password', "aria-describedby": props['aria-describedby'], tabIndex: -1, children: isVisible ? (_jsx(EyeOff, { className: "dndev-size-md dndev-password-toggle-icon" })) : (_jsx(Eye, { className: "dndev-size-md dndev-password-toggle-icon" })) })] }));
79
59
  };
80
60
  export default PasswordInput;
@@ -18,9 +18,15 @@
18
18
  * <Card />
19
19
  * <Card />
20
20
  * </Section>
21
+ *
22
+ * // Collapsible section
23
+ * <Section title="Details" collapsible defaultOpen={false}>
24
+ * <Card />
25
+ * <Card />
26
+ * </Section>
21
27
  * ```
22
28
  *
23
- * @version 0.0.4
29
+ * @version 0.0.5
24
30
  * @since 0.0.1
25
31
  * @author AMBROISE PARK Consulting
26
32
  */
@@ -61,6 +67,24 @@ interface SectionOwnProps {
61
67
  * @default 'medium'
62
68
  */
63
69
  gridGap?: 'none' | 'tight' | 'medium' | 'large';
70
+ /**
71
+ * Whether the section is collapsible
72
+ * @default false
73
+ */
74
+ collapsible?: boolean;
75
+ /**
76
+ * Controlled open state (when collapsible)
77
+ */
78
+ open?: boolean;
79
+ /**
80
+ * Callback when open state changes (when collapsible)
81
+ */
82
+ onOpenChange?: (open: boolean) => void;
83
+ /**
84
+ * Default open state (uncontrolled, when collapsible)
85
+ * @default false
86
+ */
87
+ defaultOpen?: boolean;
64
88
  }
65
89
  /**
66
90
  * Polymorphic Section props
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Section/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAa,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAIpD,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,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IAE7D;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAEnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;CACjD;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,8HAmDZ,CAAC;AAIF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Section/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAa,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AASpD,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,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IAE7D;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAEnC;;;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"}
@@ -20,18 +20,27 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
20
20
  * <Card />
21
21
  * <Card />
22
22
  * </Section>
23
+ *
24
+ * // Collapsible section
25
+ * <Section title="Details" collapsible defaultOpen={false}>
26
+ * <Card />
27
+ * <Card />
28
+ * </Section>
23
29
  * ```
24
30
  *
25
- * @version 0.0.4
31
+ * @version 0.0.5
26
32
  * @since 0.0.1
27
33
  * @author AMBROISE PARK Consulting
28
34
  */
29
- import { createElement, forwardRef, } from 'react';
35
+ import { createElement, forwardRef, useState, } from 'react';
36
+ import { Plus, Minus } from 'lucide-react';
30
37
  import { GAP_VARIANT } from '../../styles/componentConstants';
31
38
  import { cn } from '../../utils/helpers';
32
39
  import Grid, {} from '../Grid';
33
40
  import Separator, { SEPARATOR_VARIANT } from '../Separator';
34
41
  import Text from '../Text';
42
+ import Stack from '../Stack';
43
+ import CollapsiblePrimitive, { CollapsibleTrigger, CollapsibleContent, } from '../Collapsible/CollapsiblePrimitive';
35
44
  import './Section.css';
36
45
  /**
37
46
  * Minimal layout section with title, optional separator, and tone backgrounds.
@@ -46,9 +55,18 @@ import './Section.css';
46
55
  * </Section>
47
56
  * ```
48
57
  */
49
- const Section = forwardRef(function Section({ as = 'section', children, title, separator = false, tone = 'base', align: textAlign = 'center', gridCols, gridGap, className, ...props }, ref) {
58
+ const Section = forwardRef(function Section({ as = 'section', children, title, separator = false, tone = 'base', align: textAlign = 'center', gridCols, gridGap, collapsible = false, open, onOpenChange, defaultOpen = false, className, ...props }, ref) {
50
59
  const Component = as;
60
+ const [internalOpen, setInternalOpen] = useState(() => collapsible ? defaultOpen : false);
61
+ const isControlled = collapsible && open !== undefined;
62
+ const isOpen = isControlled ? open : internalOpen;
63
+ const handleOpenChange = isControlled ? onOpenChange : setInternalOpen;
51
64
  const content = gridCols ? (_jsx(Grid, { cols: gridCols, gap: gridGap || GAP_VARIANT.MEDIUM, children: children })) : (children);
65
+ const titleElement = title &&
66
+ (collapsible ? (_jsx(CollapsibleTrigger, { asChild: true, children: _jsxs(Stack, { as: "div", direction: "row", align: "center", justify: "between", className: "dndev-section-title-trigger", children: [_jsx(Text, { as: "div", level: "h2", className: "dndev-section-title", children: title }), isOpen ? (_jsx(Minus, { className: "dndev-section-icon", "aria-hidden": "true" })) : (_jsx(Plus, { className: "dndev-section-icon", "aria-hidden": "true" }))] }) })) : (_jsx(Text, { as: "div", level: "h2", className: "dndev-section-title", children: title })));
67
+ const sectionContent = collapsible ? (_jsxs(CollapsiblePrimitive, { ...(isControlled
68
+ ? { open: isOpen, onOpenChange: handleOpenChange }
69
+ : { defaultOpen: defaultOpen, onOpenChange: handleOpenChange }), children: [titleElement, _jsx(CollapsibleContent, { className: "dndev-collapsible-content", children: content })] })) : (_jsxs(_Fragment, { children: [titleElement, content] }));
52
70
  return createElement(Component, {
53
71
  ref,
54
72
  'aria-label': props['aria-label'],
@@ -56,7 +74,7 @@ const Section = forwardRef(function Section({ as = 'section', children, title, s
56
74
  'data-tone': tone,
57
75
  'data-text-align': textAlign,
58
76
  ...props,
59
- }, _jsxs(_Fragment, { children: [separator && _jsx(Separator, { variant: SEPARATOR_VARIANT.ACCENT }), _jsxs("div", { className: "dndev-section-content", children: [title && (_jsx(Text, { as: "div", level: "h2", className: "dndev-section-title", children: title })), content] })] }));
77
+ }, _jsxs(_Fragment, { children: [separator && _jsx(Separator, { variant: SEPARATOR_VARIANT.ACCENT }), _jsx("div", { className: "dndev-section-content", children: sectionContent })] }));
60
78
  });
61
79
  Section.displayName = 'Section';
62
80
  export default Section;
@@ -25,6 +25,8 @@ export interface SelectProps extends Omit<ComponentProps<typeof SelectRootPrimit
25
25
  isLoading?: boolean;
26
26
  /** Label for floating label - automatically floats when both label and placeholder are provided */
27
27
  label?: string;
28
+ /** Whether the field is required - shows asterisk indicator */
29
+ required?: boolean;
28
30
  }
29
31
  /**
30
32
  * Accessible select component built on Radix UI primitives.
@@ -46,6 +48,6 @@ export interface SelectProps extends Omit<ComponentProps<typeof SelectRootPrimit
46
48
  * @param {SelectProps} props - The props for the select
47
49
  * @returns {JSX.Element} The rendered select
48
50
  */
49
- declare const Select: ({ value, onValueChange, placeholder, options, trigger, disabled, isLoading, defaultValue, label, ...props }: SelectProps) => import("react/jsx-runtime").JSX.Element;
51
+ declare const Select: ({ value, onValueChange, placeholder, options, trigger, disabled, isLoading, defaultValue, label, required, ...props }: SelectProps) => import("react/jsx-runtime").JSX.Element;
50
52
  export default Select;
51
53
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Select/index.tsx"],"names":[],"mappings":"AAgBA,OAAO,mBAON,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,mBAAmB,CAAC,EAC1C,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;CAChB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,QAAA,MAAM,MAAM,GAAI,6GAWb,WAAW,4CAiIb,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Select/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,mBAON,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,mBAAmB,CAAC,EAC1C,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,4CAoHb,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -12,7 +12,8 @@ import * as SelectRadix from '@radix-ui/react-select';
12
12
  import { Check, ChevronDown } from 'lucide-react';
13
13
  import { useState, useId } from 'react';
14
14
  import { cn } from '../../utils/helpers';
15
- import Label from '../Label';
15
+ import { FloatingLabel } from '../Label';
16
+ import ScrollArea from '../ScrollArea';
16
17
  import SelectRootPrimitive, { SelectTriggerPrimitive, SelectValuePrimitive, SelectContentPrimitive, SelectItemPrimitive, SelectLabelPrimitive, SelectSeparatorPrimitive, } from './SelectPrimitive';
17
18
  import './Select.css';
18
19
  /**
@@ -35,31 +36,19 @@ import './Select.css';
35
36
  * @param {SelectProps} props - The props for the select
36
37
  * @returns {JSX.Element} The rendered select
37
38
  */
38
- const Select = ({ value, onValueChange, placeholder = 'Select an option...', options = [], trigger, disabled, isLoading, defaultValue, label, ...props }) => {
39
+ const Select = ({ value, onValueChange, placeholder = 'Select an option...', options = [], trigger, disabled, isLoading, defaultValue, label, required, ...props }) => {
39
40
  const id = useId();
40
41
  const [isOpen, setIsOpen] = useState(false);
41
42
  const hasLabel = !!label;
42
- const customTrigger = trigger ? (_jsx(SelectTriggerPrimitive, { asChild: true, disabled: disabled, className: "dndev-input dndev-select-trigger", children: trigger })) : (_jsxs("div", { className: "dndev-relative", children: [hasLabel && (_jsx(Label, { htmlFor: id, style: {
43
- position: 'absolute',
44
- left: 'var(--gap-md)',
45
- top: 'calc(-1 * var(--font-size-xs) / 2 - 1px)',
46
- fontSize: 'var(--font-size-xs)',
47
- fontWeight: 500,
48
- color: disabled ? 'var(--muted-foreground)' : 'var(--foreground)',
49
- pointerEvents: 'none',
50
- zIndex: 1,
51
- backgroundColor: 'var(--background)',
52
- padding: '0 var(--gap-xs)',
53
- lineHeight: 1,
54
- }, children: label })), _jsxs(SelectTriggerPrimitive, { id: id, className: "dndev-input dndev-select-trigger", disabled: disabled, 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, {}) })] })] }));
55
- return (_jsxs(SelectRootPrimitive, { value: value, onValueChange: onValueChange, defaultValue: defaultValue, disabled: disabled, onOpenChange: setIsOpen, ...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: options.map((option) => {
56
- if (option.value === '__label__') {
57
- return (_jsx(SelectLabelPrimitive, { className: "dndev-menu-label", children: option.label }, option.label));
58
- }
59
- if (option.value === '__separator__') {
60
- return (_jsx(SelectSeparatorPrimitive, { className: "dndev-menu-separator" }, "separator"));
61
- }
62
- return (_jsxs(SelectItemPrimitive, { value: option.value, disabled: option.disabled, className: "dndev-interactive", "data-role": "menu-item", children: [option.content ? (option.content) : (_jsx(_Fragment, { children: _jsxs(SelectRadix.ItemText, { children: [_jsx("span", { children: option.label }), option.description && (_jsx("span", { className: "dndev-select-item-description", children: option.description }))] }) })), _jsx(SelectRadix.ItemIndicator, { className: "dndev-dropdown-menu-checkmark dndev-dropdown-menu-trailing", children: _jsx(Check, {}) })] }, option.value));
63
- }) }) }) })] }));
43
+ const customTrigger = trigger ? (_jsx(SelectTriggerPrimitive, { asChild: true, disabled: disabled, className: "dndev-input dndev-select-trigger", children: trigger })) : (_jsxs("div", { className: "dndev-relative", children: [hasLabel && (_jsx(FloatingLabel, { htmlFor: id, disabled: disabled, required: required, children: label })), _jsxs(SelectTriggerPrimitive, { id: id, className: "dndev-input dndev-select-trigger", disabled: disabled, 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
+ return (_jsxs(SelectRootPrimitive, { value: value, onValueChange: onValueChange, defaultValue: defaultValue, disabled: disabled, onOpenChange: setIsOpen, ...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) => {
45
+ if (option.value === '__label__') {
46
+ return (_jsx(SelectLabelPrimitive, { className: "dndev-menu-label", children: option.label }, option.label));
47
+ }
48
+ if (option.value === '__separator__') {
49
+ return (_jsx(SelectSeparatorPrimitive, { className: "dndev-menu-separator" }, "separator"));
50
+ }
51
+ return (_jsxs(SelectItemPrimitive, { value: option.value, disabled: option.disabled, className: "dndev-interactive", "data-role": "menu-item", children: [option.content ? (option.content) : (_jsx(_Fragment, { children: _jsxs(SelectRadix.ItemText, { children: [_jsx("span", { children: option.label }), option.description && (_jsx("span", { className: "dndev-select-item-description", children: option.description }))] }) })), _jsx(SelectRadix.ItemIndicator, { className: "dndev-dropdown-menu-checkmark dndev-dropdown-menu-trailing", children: _jsx(Check, {}) })] }, option.value));
52
+ }) }) }) }) })] }));
64
53
  };
65
54
  export default Select;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Skeleton/index.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACzE,wBAAwB;IACxB,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAChD,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC9E,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAuBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAiB,EACjB,IAAe,EACf,KAAK,EACL,MAAM,EACN,KAAS,EACT,YAAY,EAAE,SAA6B,EAC3C,GAAG,KAAK,EACT,EAAE,aAAa,2CA8Cf;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Skeleton/index.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACzE,wBAAwB;IACxB,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAChD,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC9E,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAuBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAiB,EACjB,IAAe,EACf,KAAK,EACL,MAAM,EACN,KAAS,EACT,YAAY,EAAE,SAA6B,EAC3C,GAAG,KAAK,EACT,EAAE,aAAa,2CAiDf;AAED,eAAe,QAAQ,CAAC"}
@@ -11,16 +11,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  import { cn } from '../../utils/helpers';
12
12
  const sizePresets = {
13
13
  text: { height: 'var(--gap-md)', width: '100%' },
14
- heading: { height: 'var(--icon-touch)', width: '75%' },
14
+ heading: { height: 'var(--icon-touch)', width: '100%' },
15
15
  avatar: {
16
16
  height: 'var(--icon-touch)',
17
17
  width: 'var(--icon-touch)',
18
18
  borderRadius: 'var(--radius-full)',
19
19
  },
20
- button: { height: 'var(--icon-touch)', width: '6rem' },
20
+ button: { height: 'var(--icon-touch)', width: '100%' },
21
21
  card: { height: '8rem', width: '100%' },
22
22
  image: { height: '12rem', width: '100%' },
23
- custom: {},
23
+ custom: { width: '100%' },
24
24
  };
25
25
  const animationClasses = {
26
26
  pulse: 'dndev-skeleton-pulse',
@@ -56,10 +56,13 @@ function Skeleton({ className, variant = 'pulse', size = 'custom', width, height
56
56
  const animationClass = animationClasses[variant];
57
57
  const style = {
58
58
  ...sizeStyles,
59
+ // Width: explicit width prop overrides preset, otherwise use preset (defaults to 100%)
59
60
  ...(width && { width: typeof width === 'number' ? `${width}px` : width }),
61
+ // Height: explicit height prop overrides preset
60
62
  ...(height && {
61
63
  height: typeof height === 'number' ? `${height}px` : height,
62
64
  }),
65
+ // User-provided style overrides everything
63
66
  ...props.style,
64
67
  };
65
68
  if (lines > 1) {
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * @fileoverview Switch component
3
3
  * @description Accessible switch component built on Radix UI primitives with semantic color variants.
4
+ * Supports optional labels for binary choices (e.g., Manual/Automatic).
4
5
  *
5
- * @version 0.0.1
6
+ * @version 0.0.2
6
7
  * @since 0.0.1
7
8
  * @author AMBROISE PARK Consulting
8
9
  */
@@ -14,21 +15,34 @@ import './Switch.css';
14
15
  export interface SwitchProps extends ComponentProps<typeof SwitchPrimitives.Root> {
15
16
  /** Semantic color variant */
16
17
  variant?: ControlVariant;
18
+ /** Label for unchecked state (e.g., "Manual") */
19
+ uncheckedLabel?: string;
20
+ /** Label for checked state (e.g., "Automatic") */
21
+ checkedLabel?: string;
17
22
  }
18
23
  /**
19
24
  * Accessible switch control with semantic color variants.
20
- * Supports smooth animations and full state management.
25
+ * Supports optional labels for binary choices with automatic active/inactive styling.
21
26
  *
22
27
  * @component
23
28
  * @example
24
29
  * ```tsx
30
+ * // Simple switch without labels
25
31
  * <Switch checked={enabled} onCheckedChange={setEnabled} variant="success" />
26
- * <Switch checked={dangerous} variant="destructive" />
32
+ *
33
+ * // Switch with labels (Manual/Automatic)
34
+ * <Switch
35
+ * checked={isAutomatic}
36
+ * onCheckedChange={setIsAutomatic}
37
+ * uncheckedLabel="Manual"
38
+ * checkedLabel="Automatic"
39
+ * variant="muted"
40
+ * />
27
41
  * ```
28
42
  * @param {SwitchProps} props - The props for the switch
29
43
  * @returns {JSX.Element} The rendered switch
30
44
  */
31
- declare const Switch: ({ className, variant, ...props }: SwitchProps) => import("react/jsx-runtime").JSX.Element;
45
+ declare const Switch: ({ className, variant, uncheckedLabel, checkedLabel, checked, ...props }: SwitchProps) => import("react/jsx-runtime").JSX.Element;
32
46
  export default Switch;
33
47
  export { SwitchPrimitive, CONTROL_VARIANT as SWITCH_VARIANT };
34
48
  export type { ControlVariant as SwitchVariant };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Switch/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,gBAAgB,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,WAAY,SAAQ,cAAc,CACjD,OAAO,gBAAgB,CAAC,IAAI,CAC7B;IACC,6BAA6B;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAoBD;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,MAAM,GAAI,kCAAkC,WAAW,4CAY5D,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,eAAe,IAAI,cAAc,EAAE,CAAC;AAC9D,YAAY,EAAE,cAAc,IAAI,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Switch/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,gBAAgB,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,WAAY,SAAQ,cAAc,CACjD,OAAO,gBAAgB,CAAC,IAAI,CAC7B;IACC,6BAA6B;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAoBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,QAAA,MAAM,MAAM,GAAI,yEAOb,WAAW,4CAyCb,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,eAAe,IAAI,cAAc,EAAE,CAAC;AAC9D,YAAY,EAAE,cAAc,IAAI,aAAa,EAAE,CAAC"}
@@ -1,10 +1,11 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // packages/components/src/atomic/Switch/index.tsx
3
3
  /**
4
4
  * @fileoverview Switch component
5
5
  * @description Accessible switch component built on Radix UI primitives with semantic color variants.
6
+ * Supports optional labels for binary choices (e.g., Manual/Automatic).
6
7
  *
7
- * @version 0.0.1
8
+ * @version 0.0.2
8
9
  * @since 0.0.1
9
10
  * @author AMBROISE PARK Consulting
10
11
  */
@@ -34,20 +35,38 @@ const switchVariants = cva('dndev-switch', {
34
35
  });
35
36
  /**
36
37
  * Accessible switch control with semantic color variants.
37
- * Supports smooth animations and full state management.
38
+ * Supports optional labels for binary choices with automatic active/inactive styling.
38
39
  *
39
40
  * @component
40
41
  * @example
41
42
  * ```tsx
43
+ * // Simple switch without labels
42
44
  * <Switch checked={enabled} onCheckedChange={setEnabled} variant="success" />
43
- * <Switch checked={dangerous} variant="destructive" />
45
+ *
46
+ * // Switch with labels (Manual/Automatic)
47
+ * <Switch
48
+ * checked={isAutomatic}
49
+ * onCheckedChange={setIsAutomatic}
50
+ * uncheckedLabel="Manual"
51
+ * checkedLabel="Automatic"
52
+ * variant="muted"
53
+ * />
44
54
  * ```
45
55
  * @param {SwitchProps} props - The props for the switch
46
56
  * @returns {JSX.Element} The rendered switch
47
57
  */
48
- const Switch = ({ className, variant, ...props }) => {
58
+ const Switch = ({ className, variant, uncheckedLabel, checkedLabel, checked, ...props }) => {
49
59
  const variantAttrs = getVariantDataAttrs({ variant });
50
- return (_jsx(SwitchPrimitives.Root, { className: cn(switchVariants({ variant }), className), ...variantAttrs, ...props, children: _jsx(SwitchPrimitives.Thumb, { className: cn('dndev-switch-thumb') }) }));
60
+ const hasLabels = uncheckedLabel || checkedLabel;
61
+ const switchElement = (_jsx(SwitchPrimitives.Root, { className: cn(switchVariants({ variant }), className), ...variantAttrs, checked: checked, ...props, children: _jsx(SwitchPrimitives.Thumb, { className: cn('dndev-switch-thumb') }) }));
62
+ // If no labels, return just the switch
63
+ if (!hasLabels) {
64
+ return switchElement;
65
+ }
66
+ // With labels: render [uncheckedLabel] [Switch] [checkedLabel]
67
+ // Add data-checked attribute to container for CSS styling
68
+ const isChecked = checked ?? false;
69
+ return (_jsxs("div", { className: "dndev-switch-with-labels", "data-checked": isChecked ? 'true' : 'false', children: [uncheckedLabel && (_jsx("span", { className: "dndev-switch-label dndev-switch-label-unchecked", children: uncheckedLabel })), switchElement, checkedLabel && (_jsx("span", { className: "dndev-switch-label dndev-switch-label-checked", children: checkedLabel }))] }));
51
70
  };
52
71
  export default Switch;
53
72
  export { SwitchPrimitive, CONTROL_VARIANT as SWITCH_VARIANT };
@@ -3,9 +3,10 @@ import './Table.css';
3
3
  /**
4
4
  * Table column configuration
5
5
  *
6
- * LAYOUT EXCEPTION: The `width` property is a layout control, not a styling prop.
7
- * Similar to Grid's `cols`, column width defines the structural layout of data,
8
- * not superficial styling. This exception is documented in architecture docs.
6
+ * LAYOUT EXCEPTIONS:
7
+ * - `width`: Layout control for structural column layout (not styling)
8
+ * - `render`: Render prop pattern for custom cell content (modern children pattern)
9
+ * This is the preferred way to handle dynamic cell content vs nested component composition.
9
10
  *
10
11
  * @version 0.0.1
11
12
  * @since 0.0.1
@@ -13,10 +14,16 @@ import './Table.css';
13
14
  */
14
15
  export interface TableColumn<T = any> {
15
16
  key: string;
16
- title: string;
17
+ /** Column header - can be a string or ReactNode (e.g., Button, icon) */
18
+ title: string | ReactNode;
17
19
  dataIndex?: keyof T;
18
20
  sortable?: boolean;
19
21
  filterable?: boolean;
22
+ /**
23
+ * Render prop for custom cell content - RENDER PROP EXCEPTION
24
+ * Modern pattern for dynamic content generation. Preferred over nested component composition.
25
+ * Allows rendering custom components (buttons, inputs, etc.) within table cells.
26
+ */
20
27
  render?: (value: any, record: T, index: number) => ReactNode;
21
28
  /**
22
29
  * Column width - LAYOUT EXCEPTION
@@ -26,9 +33,10 @@ export interface TableColumn<T = any> {
26
33
  width?: string | number;
27
34
  /**
28
35
  * Text alignment - LAYOUT CONTROL
29
- * Semantic alignment for data presentation (left for text, right for numbers).
36
+ * Semantic alignment for data presentation (start for text, end for numbers).
37
+ * Uses logical alignment for RTL support.
30
38
  */
31
- align?: 'left' | 'center' | 'right';
39
+ align?: 'start' | 'center' | 'end';
32
40
  }
33
41
  /**
34
42
  * Data table component props
@@ -56,6 +64,8 @@ export interface DataTableProps<T = any> {
56
64
  pageSize?: number;
57
65
  /** Loading state */
58
66
  loading?: boolean;
67
+ /** Excel-like grid lines (borders on all cells) */
68
+ gridLines?: boolean;
59
69
  /** Callback when sorting changes */
60
70
  onSort?: (column: string, direction: 'asc' | 'desc') => void;
61
71
  /** Callback when selection changes */
@@ -98,7 +108,7 @@ declare function TableCaption({ className, ...props }: HTMLAttributes<HTMLTableC
98
108
  * @param {DataTableProps} props - The props for the data table
99
109
  * @returns {ReactNode} The rendered data table
100
110
  */
101
- declare const DataTable: <T = any>({ data, columns, sortable, selectable, searchable, filterable, pagination, pageSize, loading, onSort, onSelect, onSearch, onFilter, className, }: DataTableProps<T>) => ReactNode;
111
+ declare const DataTable: <T = any>({ data, columns, sortable, selectable, searchable, filterable, pagination, pageSize, loading, gridLines, onSort, onSelect, onSearch, onFilter, className, }: DataTableProps<T>) => ReactNode;
102
112
  export default Table;
103
113
  export { TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, DataTable, };
104
114
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Table/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Table/index.tsx"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ import Checkbox from '../Checkbox';
16
16
  import Input from '../Input';
17
17
  import Skeleton from '../Skeleton';
18
18
  import Stack from '../Stack';
19
+ import Text from '../Text';
19
20
  import './Table.css';
20
21
  /**
21
22
  * Basic Table wrapper component.
@@ -65,7 +66,7 @@ function TableCaption({ className, ...props }) {
65
66
  * @param {DataTableProps} props - The props for the data table
66
67
  * @returns {ReactNode} The rendered data table
67
68
  */
68
- const DataTable = ({ data, columns, sortable = true, selectable = false, searchable = true, filterable = false, pagination = true, pageSize = 10, loading = false, onSort, onSelect, onSearch, onFilter, className, }) => {
69
+ const DataTable = ({ data, columns, sortable = true, selectable = false, searchable = true, filterable = false, pagination = true, pageSize = 10, loading = false, gridLines = false, onSort, onSelect, onSearch, onFilter, className, }) => {
69
70
  const [sortColumn, setSortColumn] = useState('');
70
71
  const [sortDirection, setSortDirection] = useState('asc');
71
72
  const [searchQuery, setSearchQuery] = useState('');
@@ -129,8 +130,17 @@ const DataTable = ({ data, columns, sortable = true, selectable = false, searcha
129
130
  if (loading) {
130
131
  return (_jsxs(Stack, { gap: "medium", children: [_jsxs(Stack, { direction: "row", align: "center", justify: "between", children: [_jsx(Skeleton, { className: "dndev-h-touch dndev-w-16" }), _jsx(Skeleton, { className: "dndev-h-touch dndev-w-8" })] }), _jsx(Stack, { gap: "tight", children: Array.from({ length: 5 }, (_, i) => (_jsx(Skeleton, { className: "dndev-w-full dndev-h-touch" }, i))) })] }));
131
132
  }
132
- return (_jsxs(Stack, { gap: "medium", children: [(searchable || filterable) && (_jsxs(Stack, { direction: "row", align: "center", justify: "between", 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" })] })), filterable && (_jsx(Button, { variant: BUTTON_VARIANT.OUTLINE, icon: Filter, children: "Filters" }))] })), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [selectable && (_jsx(TableHead, { className: "dndev-w-touch", children: _jsx(Checkbox, { checked: selectedRows.length === paginatedData.length &&
133
- paginatedData.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: () => column.sortable && handleSort(column.key), children: _jsxs(Stack, { direction: "row", align: "center", gap: "tight", children: [column.title, column.sortable &&
133
+ return (_jsxs(Stack, { gap: "medium", children: [(searchable || filterable) && (_jsxs(Stack, { direction: "row", align: "center", justify: "between", 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" })] })), filterable && (_jsx(Button, { variant: BUTTON_VARIANT.OUTLINE, icon: Filter, children: "Filters" }))] })), _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 === paginatedData.length &&
134
+ paginatedData.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) => {
135
+ // Only sort if clicking on header, not on interactive elements (buttons, inputs, etc.)
136
+ if (column.sortable) {
137
+ const target = e.target;
138
+ const isInteractive = target.closest('button, input, a, [role="button"]');
139
+ if (!isInteractive) {
140
+ handleSort(column.key);
141
+ }
142
+ }
143
+ }, children: _jsxs(Stack, { direction: "row", align: "center", gap: "tight", children: [typeof column.title === 'string' ? (_jsx(Text, { level: "body", style: { paddingInline: 'var(--gap-sm)' }, children: column.title })) : (column.title), column.sortable &&
134
144
  sortColumn === column.key &&
135
145
  (sortDirection === 'asc' ? (_jsx(ChevronUp, { className: "dndev-size-md" })) : (_jsx(ChevronDown, { className: "dndev-size-md" })))] }) }, column.key)))] }) }), _jsx(TableBody, { children: paginatedData.map((row, index) => (_jsxs(TableRow, { children: [selectable && (_jsx(TableCell, { children: _jsx(Checkbox, { checked: selectedRows.includes(row), onCheckedChange: (checked) => handleSelectRow(row, !!checked), "aria-label": `Select row ${index + 1}` }) })), columns.map((column) => (_jsx(TableCell, { "data-align": column.align, children: column.render
136
146
  ? column.render(column.dataIndex ? row[column.dataIndex] : null, row, index)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Tooltip/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,OAAyB,EAGvB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,KAAK,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,uEAAuE;IACvE,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAsBD;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,OAAO,GAAI,6DAOd,YAAY,4CAuDd,CAAC;AAEF,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Tooltip/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,OAAyB,EAGvB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,KAAK,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,uEAAuE;IACvE,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AA4BD;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,OAAO,GAAI,6DAOd,YAAY,4CA0Dd,CAAC;AAEF,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -27,8 +27,12 @@ function hasVisibleLabel(element) {
27
27
  if (!(label instanceof HTMLElement))
28
28
  return false;
29
29
  // Modern browsers: use checkVisibility() - avoids forced reflow
30
- if ('checkVisibility' in label && typeof label.checkVisibility === 'function') {
31
- return label.checkVisibility({ checkOpacity: true, checkVisibilityCSS: true });
30
+ if ('checkVisibility' in label &&
31
+ typeof label.checkVisibility === 'function') {
32
+ return label.checkVisibility({
33
+ checkOpacity: true,
34
+ checkVisibilityCSS: true,
35
+ });
32
36
  }
33
37
  // Fallback: check if element is in DOM and not display:none
34
38
  // offsetParent is null for hidden elements (still forces reflow but only in older browsers)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/VideoPlayer/index.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,qFAAqF;IACrF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA+JD,QAAA,MAAM,WAAW,GAAI,sGAWlB,gBAAgB,4CAwJlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/VideoPlayer/index.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,qFAAqF;IACrF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA4JD,QAAA,MAAM,WAAW,GAAI,sGAWlB,gBAAgB,4CAwJlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -47,7 +47,6 @@ export { default as Collapsible } from './Collapsible';
47
47
  export * from './Collapsible/CollapsiblePrimitive';
48
48
  export type { CollapsibleProps } from './Collapsible';
49
49
  export { default as Combobox, COMBOBOX_VARIANT } from './Combobox';
50
- export * from './Combobox/ComboboxPrimitive';
51
50
  export type { ComboboxProps, ComboboxOption, ComboboxVariant, } from './Combobox';
52
51
  export { default as Command } from './Command';
53
52
  export type { CommandProps, CommandItem, CommandGroup } from './Command';
@@ -79,9 +78,9 @@ export { default as InfiniteScroll } from './InfiniteScroll';
79
78
  export type { InfiniteScrollProps } from './InfiniteScroll';
80
79
  export { default as Input } from './Input';
81
80
  export type { InputProps } from './Input';
82
- export { default as Label } from './Label';
81
+ export { default as Label, FloatingLabel } from './Label';
83
82
  export * from './Label/LabelPrimitive';
84
- export type { LabelProps } from './Label';
83
+ export type { LabelProps, FloatingLabelProps } from './Label';
85
84
  export { default as List } from './List';
86
85
  export type { ListProps, ListItem } from './List';
87
86
  export { default as NavigationMenu } from './NavigationMenu';