@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.
- package/dist/atomic/Button/index.d.ts.map +1 -1
- package/dist/atomic/Button/index.js +3 -2
- package/dist/atomic/CallToAction/index.d.ts +7 -1
- package/dist/atomic/CallToAction/index.d.ts.map +1 -1
- package/dist/atomic/CallToAction/index.js +5 -3
- package/dist/atomic/Card/index.d.ts +62 -6
- package/dist/atomic/Card/index.d.ts.map +1 -1
- package/dist/atomic/Card/index.js +69 -21
- package/dist/atomic/Command/index.d.ts.map +1 -1
- package/dist/atomic/Command/index.js +3 -1
- package/dist/atomic/CommandDialog/index.d.ts.map +1 -1
- package/dist/atomic/CopyToClipboard/index.d.ts.map +1 -1
- package/dist/atomic/DropdownMenu/index.d.ts.map +1 -1
- package/dist/atomic/DualCard/index.d.ts +22 -24
- package/dist/atomic/DualCard/index.d.ts.map +1 -1
- package/dist/atomic/DualCard/index.js +7 -45
- package/dist/atomic/Grid/index.d.ts +25 -20
- package/dist/atomic/Grid/index.d.ts.map +1 -1
- package/dist/atomic/Grid/index.js +26 -16
- package/dist/atomic/HeroSection/index.d.ts +10 -46
- package/dist/atomic/HeroSection/index.d.ts.map +1 -1
- package/dist/atomic/HeroSection/index.js +7 -22
- package/dist/atomic/Input/index.d.ts.map +1 -1
- package/dist/atomic/Input/index.js +4 -0
- package/dist/atomic/List/index.d.ts +6 -1
- package/dist/atomic/List/index.d.ts.map +1 -1
- package/dist/atomic/List/index.js +8 -4
- package/dist/atomic/NavigationMenu/index.d.ts +1 -1
- package/dist/atomic/NavigationMenu/index.d.ts.map +1 -1
- package/dist/atomic/Popover/index.d.ts +24 -2
- package/dist/atomic/Popover/index.d.ts.map +1 -1
- package/dist/atomic/Popover/index.js +9 -0
- package/dist/atomic/RadioGroup/index.d.ts +4 -2
- package/dist/atomic/RadioGroup/index.d.ts.map +1 -1
- package/dist/atomic/RadioGroup/index.js +4 -5
- package/dist/atomic/Section/index.d.ts +33 -14
- package/dist/atomic/Section/index.d.ts.map +1 -1
- package/dist/atomic/Section/index.js +25 -12
- package/dist/atomic/Table/index.d.ts +2 -2
- package/dist/atomic/Tooltip/index.d.ts +6 -1
- package/dist/atomic/Tooltip/index.d.ts.map +1 -1
- package/dist/atomic/Tooltip/index.js +19 -2
- package/dist/atomic/VideoPlayer/index.d.ts.map +1 -1
- package/dist/atomic/VideoPlayer/index.js +15 -5
- package/dist/atomic/index.d.ts +3 -3
- package/dist/atomic/index.d.ts.map +1 -1
- package/dist/atomic/index.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -4
- package/dist/styles/index.css +358 -232
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- 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
|
-
* //
|
|
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
|
-
* //
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* <
|
|
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
|
|
24
|
-
* <GridArea name="left">{
|
|
25
|
-
* <GridArea name="center">{
|
|
26
|
-
* <GridArea name="right">{
|
|
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.
|
|
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',
|
|
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
|
|
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
|
|
4
|
-
*
|
|
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
|
-
* @
|
|
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
|
-
|
|
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
|
|
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
|
|
6
|
-
*
|
|
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
|
-
* @
|
|
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,
|
|
59
|
-
|
|
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:
|
|
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,
|
|
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,
|
|
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
|
|
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
|
-
|
|
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 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic/NavigationMenu/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;
|
|
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:
|
|
65
|
-
|
|
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,
|
|
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.
|
|
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;
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
10
|
-
* <Card
|
|
11
|
-
* <Card
|
|
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.
|
|
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
|
|
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
|
|
59
|
-
* <Card
|
|
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
|
|
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"}
|