@donotdev/components 0.0.2 → 0.0.4

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 (53) hide show
  1. package/dist/atomic/Button/index.d.ts.map +1 -1
  2. package/dist/atomic/Button/index.js +3 -2
  3. package/dist/atomic/CallToAction/index.d.ts +7 -1
  4. package/dist/atomic/CallToAction/index.d.ts.map +1 -1
  5. package/dist/atomic/CallToAction/index.js +5 -3
  6. package/dist/atomic/Card/index.d.ts +62 -6
  7. package/dist/atomic/Card/index.d.ts.map +1 -1
  8. package/dist/atomic/Card/index.js +69 -21
  9. package/dist/atomic/Command/index.d.ts.map +1 -1
  10. package/dist/atomic/Command/index.js +3 -1
  11. package/dist/atomic/CommandDialog/index.d.ts.map +1 -1
  12. package/dist/atomic/CopyToClipboard/index.d.ts.map +1 -1
  13. package/dist/atomic/DropdownMenu/index.d.ts.map +1 -1
  14. package/dist/atomic/DualCard/index.d.ts +22 -24
  15. package/dist/atomic/DualCard/index.d.ts.map +1 -1
  16. package/dist/atomic/DualCard/index.js +7 -45
  17. package/dist/atomic/Grid/index.d.ts +25 -20
  18. package/dist/atomic/Grid/index.d.ts.map +1 -1
  19. package/dist/atomic/Grid/index.js +26 -16
  20. package/dist/atomic/HeroSection/index.d.ts +10 -46
  21. package/dist/atomic/HeroSection/index.d.ts.map +1 -1
  22. package/dist/atomic/HeroSection/index.js +7 -22
  23. package/dist/atomic/Input/index.d.ts.map +1 -1
  24. package/dist/atomic/Input/index.js +4 -0
  25. package/dist/atomic/List/index.d.ts +6 -1
  26. package/dist/atomic/List/index.d.ts.map +1 -1
  27. package/dist/atomic/List/index.js +8 -4
  28. package/dist/atomic/NavigationMenu/index.d.ts +1 -1
  29. package/dist/atomic/NavigationMenu/index.d.ts.map +1 -1
  30. package/dist/atomic/Popover/index.d.ts +24 -2
  31. package/dist/atomic/Popover/index.d.ts.map +1 -1
  32. package/dist/atomic/Popover/index.js +9 -0
  33. package/dist/atomic/RadioGroup/index.d.ts +4 -2
  34. package/dist/atomic/RadioGroup/index.d.ts.map +1 -1
  35. package/dist/atomic/RadioGroup/index.js +4 -5
  36. package/dist/atomic/Section/index.d.ts +33 -14
  37. package/dist/atomic/Section/index.d.ts.map +1 -1
  38. package/dist/atomic/Section/index.js +25 -12
  39. package/dist/atomic/Table/index.d.ts +2 -2
  40. package/dist/atomic/Tooltip/index.d.ts +6 -1
  41. package/dist/atomic/Tooltip/index.d.ts.map +1 -1
  42. package/dist/atomic/Tooltip/index.js +19 -2
  43. package/dist/atomic/VideoPlayer/index.d.ts.map +1 -1
  44. package/dist/atomic/VideoPlayer/index.js +15 -5
  45. package/dist/atomic/index.d.ts +3 -3
  46. package/dist/atomic/index.d.ts.map +1 -1
  47. package/dist/atomic/index.js +1 -1
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.js +4 -4
  50. package/dist/styles/index.css +358 -232
  51. package/dist/types.d.ts +2 -2
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +1 -1
@@ -1,33 +1,34 @@
1
1
  // packages/components/src/atomic/Grid/index.tsx
2
2
  /**
3
3
  * @fileoverview Grid component
4
- * @description Polymorphic CSS Grid layout primitive.
5
- * Replaces redundant `div className="dndev-grid ..."` usage.
4
+ * @description Polymorphic CSS Grid layout primitive with responsive columns.
6
5
  *
7
6
  * @example
8
7
  * ```tsx
9
- * // Simple 3-column grid (default div)
8
+ * // Fixed 3-column grid
10
9
  * <Grid cols={3} gap="medium">
11
10
  * <Card />
12
11
  * <Card />
13
12
  * <Card />
14
13
  * </Grid>
15
14
  *
16
- * // Semantic section with grid layout
17
- * <Grid as="section" cols={2} aria-label="Features">
18
- * <FeatureCard />
19
- * <FeatureCard />
15
+ * // Responsive grid: [mobile, tablet, laptop, desktop]
16
+ * // 1 col on mobile/tablet, 2 on laptop, 3 on desktop
17
+ * <Grid cols={[1, 1, 2, 3]} gap="medium">
18
+ * <Card />
19
+ * <Card />
20
+ * <Card />
20
21
  * </Grid>
21
22
  *
22
23
  * // Named grid areas
23
- * <Grid as="header" areas="left center right" templateColumns="1fr auto 1fr">
24
- * <GridArea name="left">{leftContent}</GridArea>
25
- * <GridArea name="center">{centerContent}</GridArea>
26
- * <GridArea name="right">{rightContent}</GridArea>
24
+ * <Grid areas="left center right" templateColumns="1fr auto 1fr">
25
+ * <GridArea name="left">{left}</GridArea>
26
+ * <GridArea name="center">{center}</GridArea>
27
+ * <GridArea name="right">{right}</GridArea>
27
28
  * </Grid>
28
29
  * ```
29
30
  *
30
- * @version 0.0.1
31
+ * @version 0.0.4
31
32
  * @since 0.0.1
32
33
  * @author AMBROISE PARK Consulting
33
34
  */
@@ -41,13 +42,22 @@ import './Grid.css';
41
42
  * Polymorphic CSS Grid layout primitive.
42
43
  * Can render as any HTML element while maintaining grid layout.
43
44
  */
44
- const Grid = forwardRef(({ as = 'div', cols = 1, gap = GAP_VARIANT.MEDIUM, align = 'stretch', justify = 'stretch', minColWidth, areas, templateColumns, className, style, children, ...props }, ref) => {
45
+ const Grid = forwardRef(({ as = 'div', cols = 1, gap = GAP_VARIANT.MEDIUM, align = 'stretch', justify = 'stretch', areas, templateColumns, className, style, children, ...props }, ref) => {
45
46
  const Component = as;
47
+ // Parse cols into responsive values
48
+ const isResponsive = Array.isArray(cols);
49
+ const [colsMobile, colsTablet, colsLaptop, colsDesktop] = isResponsive
50
+ ? cols
51
+ : [cols, cols, cols, cols];
46
52
  const customStyle = {
47
53
  display: 'grid',
48
54
  width: '100%',
55
+ // Set CSS custom properties for responsive columns
56
+ '--grid-cols-mobile': colsMobile,
57
+ '--grid-cols-tablet': colsTablet,
58
+ '--grid-cols-laptop': colsLaptop,
59
+ '--grid-cols-desktop': colsDesktop,
49
60
  ...style,
50
- ...(minColWidth ? { '--min-col-width': minColWidth } : {}),
51
61
  ...(areas
52
62
  ? {
53
63
  gridTemplateAreas: areas.trim().startsWith('"')
@@ -55,15 +65,15 @@ const Grid = forwardRef(({ as = 'div', cols = 1, gap = GAP_VARIANT.MEDIUM, align
55
65
  : `"${areas}"`,
56
66
  }
57
67
  : {}),
58
- ...(templateColumns ? { gridTemplateColumns: templateColumns } : {}),
68
+ ...(templateColumns && { gridTemplateColumns: templateColumns }),
59
69
  };
60
70
  return createElement(Component, {
61
71
  ref,
62
72
  className: cn('dndev-grid-component', className),
63
- 'data-cols': areas ? undefined : cols,
64
73
  'data-gap': gap,
65
74
  'data-align': align,
66
75
  'data-justify': justify,
76
+ 'data-responsive': isResponsive ? 'true' : undefined,
67
77
  style: customStyle,
68
78
  ...props,
69
79
  }, children);
@@ -1,79 +1,43 @@
1
1
  /**
2
2
  * @fileoverview Hero Section Component
3
- * @description Simple hero section with title, subtitle, and optional children.
4
- * Content width is automatically constrained by PageContainer's --content-width variable.
5
- * Use utility class `dndev-max-w-none` to bypass width constraints.
3
+ * @description Punchy hero section with gradient title, subtitle, and optional children.
4
+ * Title always renders as h1 with maximum impact. Users who need different sizing make their own.
6
5
  *
7
6
  * **Polymorphic Component**: Can render as `section`, `header`, or `div` based on semantic needs.
8
- * Defaults to `section` for semantic HTML. Use `header` for page headers with hero content.
9
7
  *
10
8
  * @example
11
9
  * ```tsx
12
- * // Standard hero section (default)
13
10
  * <HeroSection
14
11
  * title="Build Faster"
15
12
  * subtitle="The ultimate framework"
16
13
  * badge="New v2.0"
17
- * variant="primary"
18
14
  * >
19
15
  * <Button>Get Started</Button>
20
16
  * </HeroSection>
21
17
  * ```
22
18
  *
23
- * @example
24
- * ```tsx
25
- * // Page header with hero content
26
- * <HeroSection
27
- * as="header"
28
- * title="Welcome"
29
- * subtitle="Get started today"
30
- * fullHeight
31
- * />
32
- * ```
33
- *
34
- * @version 0.0.2
19
+ * @version 0.0.4
35
20
  * @since 0.0.1
36
21
  * @author AMBROISE PARK Consulting
37
22
  */
38
23
  import { type VariantProps } from 'class-variance-authority';
39
24
  import { type ElementType, type ComponentPropsWithRef, type ReactNode } from 'react';
25
+ import './HeroSection.css';
40
26
  declare const heroSectionVariants: (props?: ({
41
27
  variant?: "primary" | "accent" | "subtle" | null | undefined;
42
28
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
43
- /**
44
- * HeroSection-specific props (content and styling directives)
45
- */
46
29
  interface HeroSectionOwnProps extends VariantProps<typeof heroSectionVariants> {
47
- /**
48
- * Element type to render as
49
- * @default 'section'
50
- * @example 'section' - Standard hero section (default)
51
- * @example 'header' - Page header with hero content
52
- * @example 'div' - Generic container when semantic meaning not needed
53
- */
30
+ /** Element type to render as @default 'section' */
54
31
  as?: 'section' | 'header' | 'div';
55
32
  /** Badge text */
56
33
  badge?: string;
57
- /** Hero title */
58
- title?: string;
59
- /**
60
- * Mobile-specific hero title (shown below 1024px)
61
- * If provided, 'title' becomes desktop-only
62
- */
63
- mobileTitle?: string;
64
- /** Hero subtitle */
65
- subtitle?: string;
66
- /**
67
- * Mobile-specific hero subtitle (shown below 1024px)
68
- * If provided, 'subtitle' becomes desktop-only
69
- */
70
- mobileSubtitle?: string;
34
+ /** Hero title (renders as h1 with gradient) - string or ReactNode for Trans */
35
+ title?: string | ReactNode;
36
+ /** Hero subtitle - string or ReactNode for Trans */
37
+ subtitle?: string | ReactNode;
71
38
  /** Full viewport height */
72
39
  fullHeight?: boolean;
73
- /**
74
- * Content alignment
75
- * @default 'center'
76
- */
40
+ /** Content alignment @default 'center' */
77
41
  align?: 'start' | 'center' | 'end';
78
42
  /** Content */
79
43
  children?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/HeroSection/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAOf,QAAA,MAAM,mBAAmB;;8EAWvB,CAAC;AAEH;;GAEG;AACH,UAAU,mBAAoB,SAAQ,YAAY,CAAC,OAAO,mBAAmB,CAAC;IAC5E;;;;;;OAMG;IACH,EAAE,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;IAElC,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAEnC,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,IAC5D,mBAAmB,GACjB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,mBAAmB,CAAC,CAAC;AAE9D,QAAA,MAAM,WAAW,kIAkGhB,CAAC;AAIF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/HeroSection/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAOf,OAAO,mBAAmB,CAAC;AAE3B,QAAA,MAAM,mBAAmB;;8EAWvB,CAAC;AAEH,UAAU,mBAAoB,SAAQ,YAAY,CAAC,OAAO,mBAAmB,CAAC;IAC5E,mDAAmD;IACnD,EAAE,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,2BAA2B;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,IAC5D,mBAAmB,GACjB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,mBAAmB,CAAC,CAAC;AAE9D,QAAA,MAAM,WAAW,kIA6DhB,CAAC;AAIF,eAAe,WAAW,CAAC"}
@@ -2,38 +2,23 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // packages/components/src/atomic/HeroSection/index.tsx
3
3
  /**
4
4
  * @fileoverview Hero Section Component
5
- * @description Simple hero section with title, subtitle, and optional children.
6
- * Content width is automatically constrained by PageContainer's --content-width variable.
7
- * Use utility class `dndev-max-w-none` to bypass width constraints.
5
+ * @description Punchy hero section with gradient title, subtitle, and optional children.
6
+ * Title always renders as h1 with maximum impact. Users who need different sizing make their own.
8
7
  *
9
8
  * **Polymorphic Component**: Can render as `section`, `header`, or `div` based on semantic needs.
10
- * Defaults to `section` for semantic HTML. Use `header` for page headers with hero content.
11
9
  *
12
10
  * @example
13
11
  * ```tsx
14
- * // Standard hero section (default)
15
12
  * <HeroSection
16
13
  * title="Build Faster"
17
14
  * subtitle="The ultimate framework"
18
15
  * badge="New v2.0"
19
- * variant="primary"
20
16
  * >
21
17
  * <Button>Get Started</Button>
22
18
  * </HeroSection>
23
19
  * ```
24
20
  *
25
- * @example
26
- * ```tsx
27
- * // Page header with hero content
28
- * <HeroSection
29
- * as="header"
30
- * title="Welcome"
31
- * subtitle="Get started today"
32
- * fullHeight
33
- * />
34
- * ```
35
- *
36
- * @version 0.0.2
21
+ * @version 0.0.4
37
22
  * @since 0.0.1
38
23
  * @author AMBROISE PARK Consulting
39
24
  */
@@ -43,6 +28,7 @@ import { cn } from '../../utils/helpers';
43
28
  import Badge, { BADGE_VARIANT } from '../Badge';
44
29
  import Stack from '../Stack';
45
30
  import Text from '../Text';
31
+ import './HeroSection.css';
46
32
  const heroSectionVariants = cva('', {
47
33
  variants: {
48
34
  variant: {
@@ -55,9 +41,8 @@ const heroSectionVariants = cva('', {
55
41
  variant: 'primary',
56
42
  },
57
43
  });
58
- const HeroSection = forwardRef(function HeroSection({ as = 'section', badge, title, mobileTitle, subtitle, mobileSubtitle, variant, fullHeight = false, align = 'center', children, className, ...props }, ref) {
59
- const Component = as;
60
- return createElement(Component, {
44
+ const HeroSection = forwardRef(function HeroSection({ as = 'section', badge, title, subtitle, variant, fullHeight = false, align = 'center', children, className, ...props }, ref) {
45
+ return createElement(as, {
61
46
  ref,
62
47
  className: cn('dndev-hero-section', className),
63
48
  'data-text-align': align,
@@ -71,7 +56,7 @@ const HeroSection = forwardRef(function HeroSection({ as = 'section', badge, tit
71
56
  ...props.style,
72
57
  },
73
58
  ...props,
74
- }, _jsxs(Stack, { gap: "medium", children: [badge && _jsx(Badge, { variant: BADGE_VARIANT.ACCENT, children: badge }), title && (_jsx(Text, { as: "h1", level: "h1", className: cn('dndev-hero-title', mobileTitle && 'dndev-desktop-only'), "data-gradient-text": variant === 'subtle' ? undefined : variant || 'primary', children: title })), mobileTitle && (_jsx(Text, { as: "h1", level: "h1", className: "dndev-hero-title dndev-mobile-only", "data-gradient-text": variant === 'subtle' ? undefined : variant || 'primary', children: mobileTitle })), subtitle && (_jsx(Text, { as: "p", level: "body", className: cn('dndev-hero-subtitle', mobileSubtitle && 'dndev-desktop-only'), children: subtitle })), mobileSubtitle && (_jsx(Text, { as: "p", level: "body", className: "dndev-hero-subtitle dndev-mobile-only", children: mobileSubtitle })), children] }));
59
+ }, _jsxs(Stack, { gap: "medium", children: [badge && _jsx(Badge, { variant: BADGE_VARIANT.ACCENT, children: badge }), title && (_jsx(Text, { as: "h1", level: "h1", className: "dndev-hero-title", "data-gradient-text": variant === 'subtle' ? undefined : variant || 'primary', children: title })), subtitle && (_jsx(Text, { as: "p", level: "body", className: "dndev-hero-subtitle", children: subtitle })), children] }));
75
60
  });
76
61
  HeroSection.displayName = 'HeroSection';
77
62
  export default HeroSection;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Input/index.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,UAAW,SAAQ,mBAAmB,CAAC,gBAAgB,CAAC;IACvE,gDAAgD;IAChD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,KAAK,GAAI,6EAUZ,UAAU,4CAwEZ,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Input/index.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,UAAW,SAAQ,mBAAmB,CAAC,gBAAgB,CAAC;IACvE,gDAAgD;IAChD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,KAAK,GAAI,6EAUZ,UAAU,4CA4EZ,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -57,6 +57,10 @@ const Input = ({ className, type, icon, iconEnd = false, label, value, onFocus,
57
57
  backgroundColor: 'var(--background)',
58
58
  padding: '0 var(--gap-xs)',
59
59
  lineHeight: 1,
60
+ maxWidth: 'calc(100% - var(--gap-md) * 2)',
61
+ overflow: 'hidden',
62
+ textOverflow: 'ellipsis',
63
+ whiteSpace: 'nowrap',
60
64
  }, children: label })), inputElement, hasIcon && (_jsx("div", { className: cn('dndev-input-icon', isLeading && 'dndev-input-icon-leading', isTrailing && 'dndev-input-icon-trailing'), children: _jsx(Icon, { icon: icon, className: "dndev-size-md", ariaHidden: true }) }))] }));
61
65
  };
62
66
  export default Input;
@@ -14,6 +14,11 @@ export interface ListProps extends HTMLAttributes<HTMLUListElement | HTMLOListEl
14
14
  items?: (string | ReactNode | ListItem)[];
15
15
  /** Whether to render as ordered list (numbers) */
16
16
  ordered?: boolean;
17
+ /**
18
+ * Default icon for all string items.
19
+ * Individual ListItem.icon takes precedence.
20
+ */
21
+ icon?: ReactNode;
17
22
  /**
18
23
  * Spacing between items
19
24
  * @default 'none'
@@ -53,7 +58,7 @@ export interface ListProps extends HTMLAttributes<HTMLUListElement | HTMLOListEl
53
58
  * @param {ListProps} props - The props for the list
54
59
  * @returns {JSX.Element} The rendered list component
55
60
  */
56
- declare const List: ({ items, ordered, gap, density, className, ...props }: ListProps) => import("react/jsx-runtime").JSX.Element;
61
+ declare const List: ({ items, ordered, icon, gap, density, className, ...props }: ListProps) => import("react/jsx-runtime").JSX.Element;
57
62
  export { GAP_VARIANT };
58
63
  export type GapVariant = (typeof GAP_VARIANT)[keyof typeof GAP_VARIANT];
59
64
  export default List;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/List/index.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,YAAY,CAAC;AAEpB,MAAM,WAAW,QAAQ;IACvB,uCAAuC;IACvC,OAAO,EAAE,SAAS,CAAC;IACnB,gCAAgC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAU,SAAQ,cAAc,CAC/C,gBAAgB,GAAG,gBAAgB,CACpC;IACC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;IAC1C,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;IACxD,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,QAAA,MAAM,IAAI,GAAI,uDAOX,SAAS,4CA2CX,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAExE,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/List/index.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,YAAY,CAAC;AAEpB,MAAM,WAAW,QAAQ;IACvB,uCAAuC;IACvC,OAAO,EAAE,SAAS,CAAC;IACnB,gCAAgC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAU,SAAQ,cAAc,CAC/C,gBAAgB,GAAG,gBAAgB,CACpC;IACC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;IAC1C,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;IACxD,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,QAAA,MAAM,IAAI,GAAI,6DAQX,SAAS,4CAoDX,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAExE,eAAe,IAAI,CAAC"}
@@ -33,20 +33,24 @@ import './List.css';
33
33
  * @param {ListProps} props - The props for the list
34
34
  * @returns {JSX.Element} The rendered list component
35
35
  */
36
- const List = ({ items = [], ordered = false, gap = GAP_VARIANT.NONE, density = 'default', className, ...props }) => {
36
+ const List = ({ items = [], ordered = false, icon, gap = GAP_VARIANT.NONE, density = 'default', className, ...props }) => {
37
37
  const Component = ordered ? 'ol' : 'ul';
38
38
  return (_jsx(Component, { className: cn('dndev-list', className), "data-ordered": ordered ? 'true' : undefined, "data-gap": gap, "data-density": density, ...props, children: items.map((item, index) => {
39
- // Handle different item formats
39
+ // Handle string/number - apply container icon if provided
40
40
  if (typeof item === 'string' || typeof item === 'number') {
41
+ if (icon) {
42
+ return (_jsxs("li", { className: "dndev-list-item", children: [_jsx("span", { className: "dndev-list-item-icon", children: icon }), _jsx("span", { className: "dndev-list-item-content", children: item })] }, index));
43
+ }
41
44
  return (_jsx("li", { className: "dndev-list-item", children: item }, index));
42
45
  }
43
46
  // Handle ReactNode (JSX elements)
44
47
  if (!item || typeof item !== 'object' || !('content' in item)) {
45
48
  return (_jsx("li", { className: "dndev-list-item", children: item }, index));
46
49
  }
47
- // Handle ListItem object
50
+ // Handle ListItem object - item icon takes precedence over container icon
48
51
  const listItem = item;
49
- return (_jsxs("li", { className: cn('dndev-list-item', listItem.className), children: [listItem.icon && (_jsx("span", { className: "dndev-list-item-icon", children: listItem.icon })), _jsx("span", { className: "dndev-list-item-content", children: listItem.content })] }, index));
52
+ const itemIcon = listItem.icon ?? icon;
53
+ return (_jsxs("li", { className: cn('dndev-list-item', listItem.className), children: [itemIcon && (_jsx("span", { className: "dndev-list-item-icon", children: itemIcon })), _jsx("span", { className: "dndev-list-item-content", children: listItem.content })] }, index));
50
54
  }) }));
51
55
  };
52
56
  export { GAP_VARIANT };
@@ -2,7 +2,7 @@
2
2
  * @fileoverview NavigationMenu component
3
3
  * @description Props-based navigation menu component built on Radix UI primitives
4
4
  *
5
- * @version 0.0.2
5
+ * @version 0.0.3
6
6
  * @since 0.0.1
7
7
  * @author AMBROISE PARK Consulting
8
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/NavigationMenu/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,uBAON,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAE1D,OAAO,sBAAsB,CAAC;AAG9B,UAAU,kBAAkB;IAC1B,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAChC,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,gDAAgD;IAChD,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,UAAU,mBAAoB,SAAQ,IAAI,CACxC,cAAc,CAAC,OAAO,uBAAuB,CAAC,EAC9C,UAAU,CACX;IACC,+BAA+B;IAC/B,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;IACjD,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,aAAa,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,QAAA,MAAM,cAAc,GAAI,4EAQrB,mBAAmB,4CAqOrB,CAAC;AAEF,eAAe,cAAc,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/NavigationMenu/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,uBAON,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAE1D,OAAO,sBAAsB,CAAC;AAE9B,UAAU,kBAAkB;IAC1B,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAChC,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,gDAAgD;IAChD,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,UAAU,mBAAoB,SAAQ,IAAI,CACxC,cAAc,CAAC,OAAO,uBAAuB,CAAC,EAC9C,UAAU,CACX;IACC,+BAA+B;IAC/B,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;IACjD,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,aAAa,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,QAAA,MAAM,cAAc,GAAI,4EAQrB,mBAAmB,4CAqOrB,CAAC;AAEF,eAAe,cAAc,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC"}
@@ -7,6 +7,15 @@
7
7
  * @author AMBROISE PARK Consulting
8
8
  */
9
9
  import { type FloatingVariant } from '../../utils/constants';
10
+ /**
11
+ * Popover subcomponents for advanced usage
12
+ */
13
+ declare const PopoverRoot: import("react").FC<import("@radix-ui/react-popover").PopoverProps>;
14
+ declare const PopoverTriggerComponent: import("react").ForwardRefExoticComponent<import("@radix-ui/react-popover").PopoverTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
15
+ 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>>> & {
16
+ onCloseAutoFocus?: (event: Event) => void;
17
+ onInteractOutside?: (event: Event) => void;
18
+ }) => import("react/jsx-runtime").JSX.Element;
10
19
  import type { ReactNode } from 'react';
11
20
  /**
12
21
  * Popover variant constants - re-exported from shared FLOATING_VARIANT
@@ -61,6 +70,19 @@ export interface PopoverProps {
61
70
  * @param {PopoverProps} props - The props for the popover
62
71
  * @returns {JSX.Element} The rendered popover
63
72
  */
64
- declare const Popover: ({ trigger, children, open, onOpenChange, align, side, sideOffset, variant, className, modal, onInteractOutside, }: PopoverProps) => import("react/jsx-runtime").JSX.Element;
65
- export default Popover;
73
+ declare const Popover: {
74
+ ({ trigger, children, open, onOpenChange, align, side, sideOffset, variant, className, modal, onInteractOutside, }: PopoverProps): import("react/jsx-runtime").JSX.Element;
75
+ Root: import("react").FC<import("@radix-ui/react-popover").PopoverProps>;
76
+ Trigger: import("react").ForwardRefExoticComponent<import("@radix-ui/react-popover").PopoverTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
77
+ Content: ({ className, align, side, sideOffset, onCloseAutoFocus, onInteractOutside, ...props }: import("react").ComponentProps<import("react").ForwardRefExoticComponent<import("@radix-ui/react-popover").PopoverContentProps & import("react").RefAttributes<HTMLDivElement>>> & {
78
+ onCloseAutoFocus?: (event: Event) => void;
79
+ onInteractOutside?: (event: Event) => void;
80
+ }) => import("react/jsx-runtime").JSX.Element;
81
+ };
82
+ declare const _default: typeof Popover & {
83
+ Root: typeof PopoverRoot;
84
+ Trigger: typeof PopoverTriggerComponent;
85
+ Content: typeof PopoverContentComponent;
86
+ };
87
+ export default _default;
66
88
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Popover/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO/E,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,GAAI,mHAYd,YAAY,4CAkBd,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Popover/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO/E;;GAEG;AACH,QAAA,MAAM,WAAW,oEAAmB,CAAC;AACrC,QAAA,MAAM,uBAAuB,qJAAiB,CAAC;AAC/C,QAAA,MAAM,uBAAuB;oBAK1B,CAAA;qBAA6C,CAAC;6CALH,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;;;;wBAzDZ,CAAA;yBAA6C,CAAC;;CA2EhD,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"}
@@ -11,6 +11,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  import { FLOATING_VARIANT } from '../../utils/constants';
12
12
  import { cn, getVariantDataAttrs } from '../../utils/helpers';
13
13
  import PopoverPrimitive, { PopoverTrigger, PopoverContent, } from './PopoverPrimitive';
14
+ /**
15
+ * Popover subcomponents for advanced usage
16
+ */
17
+ const PopoverRoot = PopoverPrimitive;
18
+ const PopoverTriggerComponent = PopoverTrigger;
19
+ const PopoverContentComponent = PopoverContent;
14
20
  /**
15
21
  * Popover variant constants - re-exported from shared FLOATING_VARIANT
16
22
  * Matches .dndev-floating CSS class
@@ -35,4 +41,7 @@ const Popover = ({ trigger, children, open, onOpenChange, align = 'start', side
35
41
  const variantAttrs = getVariantDataAttrs({ variant });
36
42
  return (_jsxs(PopoverPrimitive, { open: open, onOpenChange: onOpenChange, modal: modal, children: [trigger && _jsx(PopoverTrigger, { asChild: true, children: trigger }), _jsx(PopoverContent, { align: align, side: side, sideOffset: sideOffset, className: cn('dndev-floating', className), ...variantAttrs, onInteractOutside: onInteractOutside, children: children })] }));
37
43
  };
44
+ Popover.Root = PopoverRoot;
45
+ Popover.Trigger = PopoverTriggerComponent;
46
+ Popover.Content = PopoverContentComponent;
38
47
  export default Popover;
@@ -3,7 +3,7 @@
3
3
  * @description Accessible radio group component built on Radix UI primitives with semantic color variants.
4
4
  * Provides props-based API for 90% use cases with items prop.
5
5
  *
6
- * @version 0.0.1
6
+ * @version 0.0.3
7
7
  * @since 0.0.1
8
8
  * @author AMBROISE PARK Consulting
9
9
  */
@@ -16,6 +16,8 @@ export interface RadioGroupProps extends Omit<RadioGroupRootProps, 'children'> {
16
16
  variant?: ControlVariant;
17
17
  /** List of radio options (alternative to children) */
18
18
  items?: RadioOption[];
19
+ /** Grid columns (if provided, uses Grid layout instead of Stack) */
20
+ gridCols?: 1 | 2 | 3 | 4 | 5 | 6 | 10 | 12 | 'auto-fit' | 'auto-fill';
19
21
  /** Custom content to render (for power users) */
20
22
  children?: ReactNode;
21
23
  }
@@ -38,7 +40,7 @@ export interface RadioGroupProps extends Omit<RadioGroupRootProps, 'children'> {
38
40
  * @param {RadioGroupProps} props - The props for the radio group
39
41
  * @returns {JSX.Element} The rendered radio group
40
42
  */
41
- declare const RadioGroup: ({ variant, className, items, children, ...props }: RadioGroupProps) => import("react/jsx-runtime").JSX.Element;
43
+ declare const RadioGroup: ({ variant, className, items, gridCols, children, ...props }: RadioGroupProps) => import("react/jsx-runtime").JSX.Element;
42
44
  export default RadioGroup;
43
45
  export { CONTROL_VARIANT as RADIOGROUP_VARIANT };
44
46
  export type { RadioOption, ControlVariant as RadioGroupVariant };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/RadioGroup/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAA4B,EAI1B,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,kBAAkB,CAAC;AAoB1B,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC;IAC5E,6BAA6B;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,sDAAsD;IACtD,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,QAAA,MAAM,UAAU,GAAI,mDAMjB,eAAe,4CAmCjB,CAAC;AAEF,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,cAAc,IAAI,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/RadioGroup/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAA4B,EAI1B,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,kBAAkB,CAAC;AAoB1B,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC;IAC5E,6BAA6B;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,sDAAsD;IACtD,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,UAAU,GAAG,WAAW,CAAC;IACtE,iDAAiD;IACjD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,QAAA,MAAM,UAAU,GAAI,6DAOjB,eAAe,4CAyBjB,CAAC;AAEF,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,cAAc,IAAI,iBAAiB,EAAE,CAAC"}
@@ -5,7 +5,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  * @description Accessible radio group component built on Radix UI primitives with semantic color variants.
6
6
  * Provides props-based API for 90% use cases with items prop.
7
7
  *
8
- * @version 0.0.1
8
+ * @version 0.0.3
9
9
  * @since 0.0.1
10
10
  * @author AMBROISE PARK Consulting
11
11
  */
@@ -13,9 +13,8 @@ import RadioGroupPrimitive, { RadioGroupRootPrimitive, RadioGroupItemPrimitive,
13
13
  import { cva } from 'class-variance-authority';
14
14
  import { cn, getVariantDataAttrs } from '../../utils/helpers';
15
15
  import { CONTROL_VARIANT } from '../../utils/constants';
16
- import Stack from '../Stack';
17
16
  import './RadioGroup.css';
18
- const radioGroupVariants = cva('dndev-radio-group', {
17
+ const radioGroupVariants = cva('dndev-radio-group dndev-control-group', {
19
18
  variants: {
20
19
  variant: {
21
20
  [CONTROL_VARIANT.DEFAULT]: '',
@@ -51,9 +50,9 @@ const radioGroupVariants = cva('dndev-radio-group', {
51
50
  * @param {RadioGroupProps} props - The props for the radio group
52
51
  * @returns {JSX.Element} The rendered radio group
53
52
  */
54
- const RadioGroup = ({ variant, className, items = [], children, ...props }) => {
53
+ const RadioGroup = ({ variant, className, items = [], gridCols, children, ...props }) => {
55
54
  const variantAttrs = getVariantDataAttrs({ variant });
56
- return (_jsxs(RadioGroupRootPrimitive, { className: cn(radioGroupVariants({ variant }), className), ...variantAttrs, ...props, children: [children, items.length > 0 && (_jsx(Stack, { gap: "tight", children: items.map((option) => (_jsxs(Stack, { as: "label", direction: "row", align: "center", gap: "tight", className: "dndev-text-base", children: [_jsx(RadioGroupItemPrimitive, { value: option.value, className: "dndev-control dndev-size-md", ...variantAttrs, children: _jsx(RadioGroupIndicatorPrimitive, {}) }), _jsx("span", { children: option.label })] }, option.value))) }))] }));
55
+ return (_jsxs(RadioGroupRootPrimitive, { className: cn(radioGroupVariants({ variant }), className), "data-cols": gridCols, ...variantAttrs, ...props, children: [children, items.map((option) => (_jsxs("label", { children: [_jsx(RadioGroupItemPrimitive, { value: option.value, className: "dndev-control dndev-size-md", ...variantAttrs, children: _jsx(RadioGroupIndicatorPrimitive, {}) }), _jsx("span", { children: option.label })] }, option.value)))] }));
57
56
  };
58
57
  export default RadioGroup;
59
58
  export { CONTROL_VARIANT as RADIOGROUP_VARIANT };
@@ -1,22 +1,32 @@
1
1
  /**
2
2
  * @fileoverview Section component
3
- * @description Minimal layout section with title, optional separator, and grid.
3
+ * @description Minimal layout section with title, optional separator, and tone backgrounds.
4
4
  * Content width is automatically constrained by PageContainer's --content-width variable.
5
5
  *
6
6
  * @example
7
7
  * ```tsx
8
+ * // Fixed 3 columns
8
9
  * <Section title="Features" gridCols={3}>
9
- * <Card title="Feature 1" />
10
- * <Card title="Feature 2" />
11
- * <Card title="Feature 3" />
10
+ * <Card />
11
+ * <Card />
12
+ * <Card />
13
+ * </Section>
14
+ *
15
+ * // Responsive: [mobile, tablet, laptop, desktop]
16
+ * <Section title="Features" gridCols={[1, 1, 2, 3]}>
17
+ * <Card />
18
+ * <Card />
19
+ * <Card />
12
20
  * </Section>
13
21
  * ```
14
22
  *
15
- * @version 0.0.2
23
+ * @version 0.0.4
16
24
  * @since 0.0.1
17
25
  * @author AMBROISE PARK Consulting
18
26
  */
19
27
  import { type ElementType, type ComponentPropsWithRef, type ReactNode } from 'react';
28
+ import { type ResponsiveCols } from '../Grid';
29
+ import './Section.css';
20
30
  /**
21
31
  * Section-specific props
22
32
  */
@@ -34,29 +44,38 @@ interface SectionOwnProps {
34
44
  separator?: boolean;
35
45
  /** Tone system for visual rhythm */
36
46
  tone?: 'base' | 'muted' | 'elevated' | 'contrast' | 'accent';
37
- /** Grid columns (1-4) */
38
- gridCols?: 1 | 2 | 3 | 4;
39
- /** Grid gap size */
40
- gridGap?: 'none' | 'tight' | 'medium' | 'large';
41
47
  /**
42
- * Content alignment
48
+ * Content alignment (text alignment)
43
49
  * @default 'center'
44
50
  */
45
51
  align?: 'start' | 'center' | 'end';
52
+ /**
53
+ * Grid columns - fixed or responsive
54
+ * When provided, wraps children in Grid
55
+ * @example 3 - always 3 columns
56
+ * @example [1, 1, 2, 3] - responsive: 1 mobile/tablet, 2 laptop, 3 desktop
57
+ */
58
+ gridCols?: number | ResponsiveCols;
59
+ /**
60
+ * Grid gap size
61
+ * @default 'medium'
62
+ */
63
+ gridGap?: 'none' | 'tight' | 'medium' | 'large';
46
64
  }
47
65
  /**
48
66
  * Polymorphic Section props
49
67
  */
50
68
  export type SectionProps<T extends ElementType = 'section'> = SectionOwnProps & Omit<ComponentPropsWithRef<T>, keyof SectionOwnProps>;
51
69
  /**
52
- * Minimal layout section with title, optional separator, and grid.
70
+ * Minimal layout section with title, optional separator, and tone backgrounds.
53
71
  *
54
72
  * @component
55
73
  * @example
56
74
  * ```tsx
57
- * <Section title="Features" gridCols={3}>
58
- * <Card title="Feature 1" />
59
- * <Card title="Feature 2" />
75
+ * <Section title="Features" gridCols={[1, 1, 2, 3]}>
76
+ * <Card />
77
+ * <Card />
78
+ * <Card />
60
79
  * </Section>
61
80
  * ```
62
81
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/Section/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAMf;;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,yBAAyB;IACzB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEzB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAEhD;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;CACpC;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;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,OAAO,8HA6CZ,CAAC;AAIF,eAAe,OAAO,CAAC"}
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"}