@dnanpm/ui-components 0.0.4 → 0.1.0
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/README.md +14 -17
- package/dist/components/Accordion/Accordion.cjs +26 -0
- package/dist/components/Accordion/Accordion.cjs.map +1 -0
- package/dist/components/Accordion/Accordion.css +19 -0
- package/dist/components/Accordion/Accordion.d.ts +3 -0
- package/dist/components/Accordion/Accordion.d.ts.map +1 -0
- package/dist/components/Accordion/Accordion.js +26 -0
- package/dist/components/Accordion/Accordion.js.map +1 -0
- package/dist/components/Accordion/Accordion.module.css.cjs +12 -0
- package/dist/components/Accordion/Accordion.module.css.cjs.map +1 -0
- package/dist/components/Accordion/Accordion.module.css.js +12 -0
- package/dist/components/Accordion/Accordion.module.css.js.map +1 -0
- package/dist/components/Accordion/Accordion.types.d.ts +21 -0
- package/dist/components/Accordion/Accordion.types.d.ts.map +1 -0
- package/dist/components/Accordion/Accordion.utils.cjs +8 -0
- package/dist/components/Accordion/Accordion.utils.cjs.map +1 -0
- package/dist/components/Accordion/Accordion.utils.d.ts +8 -0
- package/dist/components/Accordion/Accordion.utils.d.ts.map +1 -0
- package/dist/components/Accordion/Accordion.utils.js +8 -0
- package/dist/components/Accordion/Accordion.utils.js.map +1 -0
- package/dist/components/Accordion/index.d.ts +3 -0
- package/dist/components/Accordion/index.d.ts.map +1 -0
- package/dist/components/AccordionItem/AccordionItem.cjs +57 -0
- package/dist/components/AccordionItem/AccordionItem.cjs.map +1 -0
- package/dist/components/AccordionItem/AccordionItem.css +128 -0
- package/dist/components/AccordionItem/AccordionItem.d.ts +3 -0
- package/dist/components/AccordionItem/AccordionItem.d.ts.map +1 -0
- package/dist/components/AccordionItem/AccordionItem.js +57 -0
- package/dist/components/AccordionItem/AccordionItem.js.map +1 -0
- package/dist/components/AccordionItem/AccordionItem.module.css.cjs +17 -0
- package/dist/components/AccordionItem/AccordionItem.module.css.cjs.map +1 -0
- package/dist/components/AccordionItem/AccordionItem.module.css.js +18 -0
- package/dist/components/AccordionItem/AccordionItem.module.css.js.map +1 -0
- package/dist/components/AccordionItem/AccordionItem.types.d.ts +32 -0
- package/dist/components/AccordionItem/AccordionItem.types.d.ts.map +1 -0
- package/dist/components/AccordionItem/index.d.ts +3 -0
- package/dist/components/AccordionItem/index.d.ts.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.cjs +73 -0
- package/dist/components/Breadcrumb/Breadcrumb.cjs.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.css +72 -0
- package/dist/components/Breadcrumb/Breadcrumb.d.ts +3 -0
- package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.js +73 -0
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +25 -0
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js +25 -0
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.types.d.ts +46 -0
- package/dist/components/Breadcrumb/Breadcrumb.types.d.ts.map +1 -0
- package/dist/components/Breadcrumb/index.d.ts +3 -0
- package/dist/components/Breadcrumb/index.d.ts.map +1 -0
- package/dist/components/Label/Label.cjs +20 -0
- package/dist/components/Label/Label.cjs.map +1 -0
- package/dist/components/Label/Label.css +40 -0
- package/dist/components/Label/Label.d.ts +3 -0
- package/dist/components/Label/Label.d.ts.map +1 -0
- package/dist/components/Label/Label.js +20 -0
- package/dist/components/Label/Label.js.map +1 -0
- package/dist/components/Label/Label.module.css.cjs +16 -0
- package/dist/components/Label/Label.module.css.cjs.map +1 -0
- package/dist/components/Label/Label.module.css.js +16 -0
- package/dist/components/Label/Label.module.css.js.map +1 -0
- package/dist/components/Label/Label.types.d.ts +28 -0
- package/dist/components/Label/Label.types.d.ts.map +1 -0
- package/dist/components/Label/index.d.ts +3 -0
- package/dist/components/Label/index.d.ts.map +1 -0
- package/dist/components/Notification/Notification.cjs +58 -0
- package/dist/components/Notification/Notification.cjs.map +1 -0
- package/dist/components/Notification/Notification.css +91 -0
- package/dist/components/Notification/Notification.d.ts +3 -0
- package/dist/components/Notification/Notification.d.ts.map +1 -0
- package/dist/components/Notification/Notification.js +58 -0
- package/dist/components/Notification/Notification.js.map +1 -0
- package/dist/components/Notification/Notification.module.css.cjs +24 -0
- package/dist/components/Notification/Notification.module.css.cjs.map +1 -0
- package/dist/components/Notification/Notification.module.css.js +24 -0
- package/dist/components/Notification/Notification.module.css.js.map +1 -0
- package/dist/components/Notification/Notification.types.d.ts +40 -0
- package/dist/components/Notification/Notification.types.d.ts.map +1 -0
- package/dist/components/Notification/index.d.ts +3 -0
- package/dist/components/Notification/index.d.ts.map +1 -0
- package/dist/font-definitions.css +61 -0
- package/dist/index.cjs +13 -94
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +12 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -93
- package/dist/index.js.map +1 -1
- package/dist/styles/utils/elevation.css +28 -0
- package/dist/styles/utils/elevation.module.css.cjs +10 -0
- package/dist/styles/utils/elevation.module.css.cjs.map +1 -0
- package/dist/styles/utils/elevation.module.css.js +10 -0
- package/dist/styles/utils/elevation.module.css.js.map +1 -0
- package/dist/styles/utils/focus.css +59 -0
- package/dist/styles/utils/focus.module.css.cjs +16 -0
- package/dist/styles/utils/focus.module.css.cjs.map +1 -0
- package/dist/styles/utils/focus.module.css.js +16 -0
- package/dist/styles/utils/focus.module.css.js.map +1 -0
- package/dist/styles/utils/text-decoration.css +7 -0
- package/dist/styles/utils/text-decoration.module.css.cjs +10 -0
- package/dist/styles/utils/text-decoration.module.css.cjs.map +1 -0
- package/dist/styles/utils/text-decoration.module.css.js +10 -0
- package/dist/styles/utils/text-decoration.module.css.js.map +1 -0
- package/dist/styles.css +50 -119
- package/dist/utils/cn/cn.cjs +8 -0
- package/dist/utils/cn/cn.cjs.map +1 -0
- package/dist/utils/cn/cn.d.ts +16 -0
- package/dist/utils/cn/cn.d.ts.map +1 -0
- package/dist/utils/cn/cn.js +8 -0
- package/dist/utils/cn/cn.js.map +1 -0
- package/dist/utils/cn/index.d.ts +3 -0
- package/dist/utils/cn/index.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +16 -5
- package/dist/components/Box/Box.d.ts +0 -24
- package/dist/components/Box/Box.d.ts.map +0 -1
- package/dist/components/Box/Box.types.d.ts +0 -24
- package/dist/components/Box/Box.types.d.ts.map +0 -1
- package/dist/components/Box/index.d.ts +0 -3
- package/dist/components/Box/index.d.ts.map +0 -1
- package/dist/components/Button/Button.d.ts +0 -3
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.types.d.ts +0 -51
- package/dist/components/Button/Button.types.d.ts.map +0 -1
- package/dist/components/Button/index.d.ts +0 -3
- package/dist/components/Button/index.d.ts.map +0 -1
- package/dist/components/index.d.ts +0 -3
- package/dist/components/index.d.ts.map +0 -1
- package/dist/utils/cn.d.ts +0 -6
- package/dist/utils/cn.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# DNA UI Components
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/@dnanpm/ui-components)
|
|
4
4
|
|
|
5
5
|
> ⚠️ **Under Heavy Development** — This package is actively being developed. Breaking changes may occur between minor versions during the 0.x release cycle.
|
|
6
6
|
|
|
@@ -12,6 +12,7 @@ React component library for the DNA Design System. Built with TypeScript, CSS Mo
|
|
|
12
12
|
## Features
|
|
13
13
|
|
|
14
14
|
- Accessible, responsive, and customizable components
|
|
15
|
+
- Canonical DNA component APIs with swappable internal implementations
|
|
15
16
|
- Built with TypeScript and CSS Modules
|
|
16
17
|
- Themed with design tokens from `@dnanpm/design-tokens`
|
|
17
18
|
- Supports server-side rendering and tree-shaking
|
|
@@ -28,27 +29,23 @@ pnpm add @dnanpm/ui-components @dnanpm/design-tokens
|
|
|
28
29
|
## Usage
|
|
29
30
|
|
|
30
31
|
```tsx
|
|
31
|
-
import {
|
|
32
|
+
import { Breadcrumb } from '@dnanpm/ui-components';
|
|
32
33
|
import '@dnanpm/ui-components/styles.css';
|
|
33
34
|
|
|
35
|
+
const items = [
|
|
36
|
+
{ label: 'Home', href: '/' },
|
|
37
|
+
{ label: 'Products', href: '/products' },
|
|
38
|
+
{ label: 'Mobile Plans', href: '/products/mobile' },
|
|
39
|
+
];
|
|
40
|
+
|
|
34
41
|
function App() {
|
|
35
|
-
return
|
|
36
|
-
<div>
|
|
37
|
-
<Button variant="primary">Primary Button</Button>
|
|
38
|
-
<Button variant="secondary" size="small">
|
|
39
|
-
Small Secondary
|
|
40
|
-
</Button>
|
|
41
|
-
<Button loading>Processing...</Button>
|
|
42
|
-
|
|
43
|
-
<Box elevation="high">
|
|
44
|
-
<h2>Elevated Content</h2>
|
|
45
|
-
</Box>
|
|
46
|
-
</div>
|
|
47
|
-
);
|
|
42
|
+
return <Breadcrumb items={items} />;
|
|
48
43
|
}
|
|
49
44
|
```
|
|
50
45
|
|
|
51
|
-
|
|
46
|
+
## Implementation Model
|
|
47
|
+
|
|
48
|
+
Components are written as plain React, with `forwardRef`, CSS Modules, and BEM naming. Design tokens are available as CSS custom properties: `var(--colors-primitive-pink-500)`, `var(--spacing-ui-md)`, etc.
|
|
52
49
|
|
|
53
50
|
### Tree-shaking
|
|
54
51
|
|
|
@@ -56,7 +53,7 @@ This package uses selective exports to optimize bundle sizes. Import only what y
|
|
|
56
53
|
|
|
57
54
|
```tsx
|
|
58
55
|
// ✅ Good: Named imports (tree-shakeable)
|
|
59
|
-
import {
|
|
56
|
+
import { Breadcrumb } from '@dnanpm/ui-components';
|
|
60
57
|
|
|
61
58
|
// ❌ Avoid: Wildcard imports (larger bundle)
|
|
62
59
|
import * as UI from '@dnanpm/ui-components';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const Accordion_utils = require("./Accordion.utils.cjs");
|
|
6
|
+
const Accordion_module = require("./Accordion.module.css.cjs");
|
|
7
|
+
const cn = require("../../utils/cn/cn.cjs");
|
|
8
|
+
const Accordion = react.forwardRef(function Accordion2({ variant = "box", autoCollapsible = false, children, className, ...props }, ref) {
|
|
9
|
+
const groupName = react.useId();
|
|
10
|
+
const contextValue = react.useMemo(
|
|
11
|
+
() => ({ variant, groupName: autoCollapsible ? groupName : void 0 }),
|
|
12
|
+
[variant, autoCollapsible, groupName]
|
|
13
|
+
);
|
|
14
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Accordion_utils.AccordionContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15
|
+
"div",
|
|
16
|
+
{
|
|
17
|
+
ref,
|
|
18
|
+
className: cn.cn(Accordion_module.default.accordion, Accordion_module.default[`accordion--${variant}`], className),
|
|
19
|
+
...props,
|
|
20
|
+
children
|
|
21
|
+
}
|
|
22
|
+
) });
|
|
23
|
+
});
|
|
24
|
+
Accordion.displayName = "Accordion";
|
|
25
|
+
exports.Accordion = Accordion;
|
|
26
|
+
//# sourceMappingURL=Accordion.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.cjs","sources":["../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import { forwardRef, useId, useMemo } from 'react';\nimport { cn } from '../../utils/cn';\nimport { AccordionContext } from './Accordion.utils';\nimport styles from './Accordion.module.css';\nimport type { AccordionProps } from './Accordion.types';\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(\n { variant = 'box', autoCollapsible = false, children, className, ...props },\n ref,\n) {\n const groupName = useId();\n const contextValue = useMemo(\n () => ({ variant, groupName: autoCollapsible ? groupName : undefined }),\n [variant, autoCollapsible, groupName],\n );\n\n return (\n <AccordionContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(styles.accordion, styles[`accordion--${variant}`], className)}\n {...props}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n});\n\nAccordion.displayName = 'Accordion';\n"],"names":["forwardRef","Accordion","useId","useMemo","jsx","AccordionContext","cn","styles"],"mappings":";;;;;;;AAMO,MAAM,YAAYA,MAAAA,WAA2C,SAASC,WACzE,EAAE,UAAU,OAAO,kBAAkB,OAAO,UAAU,WAAW,GAAG,MAAA,GACpE,KACF;AACE,QAAM,YAAYC,MAAAA,MAAA;AAClB,QAAM,eAAeC,MAAAA;AAAAA,IACjB,OAAO,EAAE,SAAS,WAAW,kBAAkB,YAAY,OAAA;AAAA,IAC3D,CAAC,SAAS,iBAAiB,SAAS;AAAA,EAAA;AAGxC,SACIC,2BAAAA,IAACC,gBAAAA,iBAAiB,UAAjB,EAA0B,OAAO,cAC9B,UAAAD,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA,WAAWE,GAAAA,GAAGC,iBAAAA,QAAO,WAAWA,iBAAAA,QAAO,cAAc,OAAO,EAAE,GAAG,SAAS;AAAA,MACzE,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA,GAET;AAER,CAAC;AAED,UAAU,cAAc;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
@layer dna-design-system {/**
|
|
2
|
+
* Accordion Component Styles
|
|
3
|
+
*
|
|
4
|
+
* Layout wrapper that spaces AccordionItem children evenly.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
._accordion_oi7d7_7 {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
._accordion--box_oi7d7_12 {
|
|
13
|
+
gap: var(--spacing-ui-md);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
._accordion--panel_oi7d7_16 {
|
|
17
|
+
gap: 0;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../../src/components/Accordion/Accordion.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,eAAO,MAAM,SAAS,2GAqBpB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useId, useMemo } from "react";
|
|
3
|
+
import { AccordionContext } from "./Accordion.utils.js";
|
|
4
|
+
import styles from "./Accordion.module.css.js";
|
|
5
|
+
import { cn } from "../../utils/cn/cn.js";
|
|
6
|
+
const Accordion = forwardRef(function Accordion2({ variant = "box", autoCollapsible = false, children, className, ...props }, ref) {
|
|
7
|
+
const groupName = useId();
|
|
8
|
+
const contextValue = useMemo(
|
|
9
|
+
() => ({ variant, groupName: autoCollapsible ? groupName : void 0 }),
|
|
10
|
+
[variant, autoCollapsible, groupName]
|
|
11
|
+
);
|
|
12
|
+
return /* @__PURE__ */ jsx(AccordionContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
13
|
+
"div",
|
|
14
|
+
{
|
|
15
|
+
ref,
|
|
16
|
+
className: cn(styles.accordion, styles[`accordion--${variant}`], className),
|
|
17
|
+
...props,
|
|
18
|
+
children
|
|
19
|
+
}
|
|
20
|
+
) });
|
|
21
|
+
});
|
|
22
|
+
Accordion.displayName = "Accordion";
|
|
23
|
+
export {
|
|
24
|
+
Accordion
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=Accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.js","sources":["../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import { forwardRef, useId, useMemo } from 'react';\nimport { cn } from '../../utils/cn';\nimport { AccordionContext } from './Accordion.utils';\nimport styles from './Accordion.module.css';\nimport type { AccordionProps } from './Accordion.types';\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(\n { variant = 'box', autoCollapsible = false, children, className, ...props },\n ref,\n) {\n const groupName = useId();\n const contextValue = useMemo(\n () => ({ variant, groupName: autoCollapsible ? groupName : undefined }),\n [variant, autoCollapsible, groupName],\n );\n\n return (\n <AccordionContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(styles.accordion, styles[`accordion--${variant}`], className)}\n {...props}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n});\n\nAccordion.displayName = 'Accordion';\n"],"names":["Accordion"],"mappings":";;;;;AAMO,MAAM,YAAY,WAA2C,SAASA,WACzE,EAAE,UAAU,OAAO,kBAAkB,OAAO,UAAU,WAAW,GAAG,MAAA,GACpE,KACF;AACE,QAAM,YAAY,MAAA;AAClB,QAAM,eAAe;AAAA,IACjB,OAAO,EAAE,SAAS,WAAW,kBAAkB,YAAY,OAAA;AAAA,IAC3D,CAAC,SAAS,iBAAiB,SAAS;AAAA,EAAA;AAGxC,SACI,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,cAC9B,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA,WAAW,GAAG,OAAO,WAAW,OAAO,cAAc,OAAO,EAAE,GAAG,SAAS;AAAA,MACzE,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA,GAET;AAER,CAAC;AAED,UAAU,cAAc;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require('./Accordion.css');
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
4
|
+
const accordion = "_accordion_oi7d7_7";
|
|
5
|
+
const styles = {
|
|
6
|
+
accordion,
|
|
7
|
+
"accordion--box": "_accordion--box_oi7d7_12",
|
|
8
|
+
"accordion--panel": "_accordion--panel_oi7d7_16"
|
|
9
|
+
};
|
|
10
|
+
exports.accordion = accordion;
|
|
11
|
+
exports.default = styles;
|
|
12
|
+
//# sourceMappingURL=Accordion.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import './Accordion.css';
|
|
2
|
+
const accordion = "_accordion_oi7d7_7";
|
|
3
|
+
const styles = {
|
|
4
|
+
accordion,
|
|
5
|
+
"accordion--box": "_accordion--box_oi7d7_12",
|
|
6
|
+
"accordion--panel": "_accordion--panel_oi7d7_16"
|
|
7
|
+
};
|
|
8
|
+
export {
|
|
9
|
+
accordion,
|
|
10
|
+
styles as default
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=Accordion.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
export interface AccordionProps extends ComponentPropsWithoutRef<'div'> {
|
|
3
|
+
/**
|
|
4
|
+
* Visual style variant that controls spacing between items.
|
|
5
|
+
* - `box`: 16px gap between items
|
|
6
|
+
* - `panel`: no gap between items (items stack flush)
|
|
7
|
+
* @default 'box'
|
|
8
|
+
*/
|
|
9
|
+
readonly variant?: 'box' | 'panel';
|
|
10
|
+
/**
|
|
11
|
+
* When true, only one AccordionItem can be open at a time.
|
|
12
|
+
* Uses the native `<details>` `name` attribute to create an exclusive group.
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
readonly autoCollapsible?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* AccordionItem elements to render within the accordion group.
|
|
18
|
+
*/
|
|
19
|
+
readonly children: ReactNode;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Accordion.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.types.d.ts","sourceRoot":"","sources":["../../../src/components/Accordion/Accordion.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjE,MAAM,WAAW,cAAe,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IACnE;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAChC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const AccordionContext = react.createContext({ variant: "box" });
|
|
5
|
+
const useAccordionContext = () => react.useContext(AccordionContext);
|
|
6
|
+
exports.AccordionContext = AccordionContext;
|
|
7
|
+
exports.useAccordionContext = useAccordionContext;
|
|
8
|
+
//# sourceMappingURL=Accordion.utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.utils.cjs","sources":["../../../src/components/Accordion/Accordion.utils.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\ninterface AccordionContextValue {\n variant: 'box' | 'panel';\n groupName?: string;\n}\n\nexport const AccordionContext = createContext<AccordionContextValue>({ variant: 'box' });\n\nexport const useAccordionContext = () => useContext(AccordionContext);\n"],"names":["createContext","useContext"],"mappings":";;;AAOO,MAAM,mBAAmBA,MAAAA,cAAqC,EAAE,SAAS,OAAO;AAEhF,MAAM,sBAAsB,MAAMC,MAAAA,WAAW,gBAAgB;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface AccordionContextValue {
|
|
2
|
+
variant: 'box' | 'panel';
|
|
3
|
+
groupName?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare const AccordionContext: import('react').Context<AccordionContextValue>;
|
|
6
|
+
export declare const useAccordionContext: () => AccordionContextValue;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=Accordion.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.utils.d.ts","sourceRoot":"","sources":["../../../src/components/Accordion/Accordion.utils.ts"],"names":[],"mappings":"AAEA,UAAU,qBAAqB;IAC3B,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,gBAAgB,gDAA2D,CAAC;AAEzF,eAAO,MAAM,mBAAmB,6BAAqC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
const AccordionContext = createContext({ variant: "box" });
|
|
3
|
+
const useAccordionContext = () => useContext(AccordionContext);
|
|
4
|
+
export {
|
|
5
|
+
AccordionContext,
|
|
6
|
+
useAccordionContext
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=Accordion.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.utils.js","sources":["../../../src/components/Accordion/Accordion.utils.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\ninterface AccordionContextValue {\n variant: 'box' | 'panel';\n groupName?: string;\n}\n\nexport const AccordionContext = createContext<AccordionContextValue>({ variant: 'box' });\n\nexport const useAccordionContext = () => useContext(AccordionContext);\n"],"names":[],"mappings":";AAOO,MAAM,mBAAmB,cAAqC,EAAE,SAAS,OAAO;AAEhF,MAAM,sBAAsB,MAAM,WAAW,gBAAgB;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Accordion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const icons = require("@dnanpm/icons");
|
|
6
|
+
const Accordion_utils = require("../Accordion/Accordion.utils.cjs");
|
|
7
|
+
const elevation_module = require("../../styles/utils/elevation.module.css.cjs");
|
|
8
|
+
const focus_module = require("../../styles/utils/focus.module.css.cjs");
|
|
9
|
+
const AccordionItem_module = require("./AccordionItem.module.css.cjs");
|
|
10
|
+
const cn = require("../../utils/cn/cn.cjs");
|
|
11
|
+
const AccordionItem = react.forwardRef(
|
|
12
|
+
function AccordionItem2({ label, variant: variantProp, image, imageSize, children, className, name, ...props }, ref) {
|
|
13
|
+
const { variant: contextVariant, groupName } = Accordion_utils.useAccordionContext();
|
|
14
|
+
const variant = variantProp ?? contextVariant;
|
|
15
|
+
const resolvedImageSize = image ? imageSize ?? "md" : void 0;
|
|
16
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17
|
+
"details",
|
|
18
|
+
{
|
|
19
|
+
ref,
|
|
20
|
+
className: cn.cn(
|
|
21
|
+
AccordionItem_module["accordion-item"],
|
|
22
|
+
AccordionItem_module[`accordion-item--${variant}`],
|
|
23
|
+
variant === "box" && elevation_module.default.elevationLow,
|
|
24
|
+
className
|
|
25
|
+
),
|
|
26
|
+
...props,
|
|
27
|
+
name: groupName ?? name,
|
|
28
|
+
children: [
|
|
29
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
30
|
+
"summary",
|
|
31
|
+
{
|
|
32
|
+
className: cn.cn(AccordionItem_module["accordion-item__summary"], focus_module.default.focusableInset),
|
|
33
|
+
children: [
|
|
34
|
+
image && /* @__PURE__ */ jsxRuntime.jsx(
|
|
35
|
+
"span",
|
|
36
|
+
{
|
|
37
|
+
className: cn.cn(
|
|
38
|
+
AccordionItem_module["accordion-item__image"],
|
|
39
|
+
resolvedImageSize && AccordionItem_module[`accordion-item__image--${resolvedImageSize}`]
|
|
40
|
+
),
|
|
41
|
+
children: image
|
|
42
|
+
}
|
|
43
|
+
),
|
|
44
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: AccordionItem_module["accordion-item__label"], children: label }),
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.ChevronDown, { className: AccordionItem_module["accordion-item__chevron"], "aria-hidden": "true" })
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
),
|
|
49
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: AccordionItem_module["accordion-item__content"], children })
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
);
|
|
55
|
+
AccordionItem.displayName = "AccordionItem";
|
|
56
|
+
exports.AccordionItem = AccordionItem;
|
|
57
|
+
//# sourceMappingURL=AccordionItem.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccordionItem.cjs","sources":["../../../src/components/AccordionItem/AccordionItem.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { ChevronDown } from '@dnanpm/icons';\nimport { cn } from '../../utils/cn';\nimport { useAccordionContext } from '../Accordion/Accordion.utils';\nimport elevationStyles from '../../styles/utils/elevation.module.css';\nimport focusStyles from '../../styles/utils/focus.module.css';\nimport styles from './AccordionItem.module.css';\nimport type { AccordionItemProps } from './AccordionItem.types';\n\nexport const AccordionItem = forwardRef<HTMLDetailsElement, AccordionItemProps>(\n function AccordionItem(\n { label, variant: variantProp, image, imageSize, children, className, name, ...props },\n ref,\n ) {\n const { variant: contextVariant, groupName } = useAccordionContext();\n const variant = variantProp ?? contextVariant;\n const resolvedImageSize = image ? (imageSize ?? 'md') : undefined;\n\n return (\n <details\n ref={ref}\n className={cn(\n styles['accordion-item'],\n styles[`accordion-item--${variant}`],\n variant === 'box' && elevationStyles.elevationLow,\n className,\n )}\n {...props}\n name={groupName ?? name}\n >\n <summary\n className={cn(styles['accordion-item__summary'], focusStyles.focusableInset)}\n >\n {image && (\n <span\n className={cn(\n styles['accordion-item__image'],\n resolvedImageSize &&\n styles[`accordion-item__image--${resolvedImageSize}`],\n )}\n >\n {image}\n </span>\n )}\n <span className={styles['accordion-item__label']}>{label}</span>\n <ChevronDown className={styles['accordion-item__chevron']} aria-hidden=\"true\" />\n </summary>\n <div className={styles['accordion-item__content']}>{children}</div>\n </details>\n );\n },\n);\n\nAccordionItem.displayName = 'AccordionItem';\n"],"names":["forwardRef","AccordionItem","useAccordionContext","jsxs","cn","styles","elevationStyles","focusStyles","jsx","ChevronDown"],"mappings":";;;;;;;;;;AASO,MAAM,gBAAgBA,MAAAA;AAAAA,EACzB,SAASC,eACL,EAAE,OAAO,SAAS,aAAa,OAAO,WAAW,UAAU,WAAW,MAAM,GAAG,MAAA,GAC/E,KACF;AACE,UAAM,EAAE,SAAS,gBAAgB,UAAA,IAAcC,gBAAAA,oBAAA;AAC/C,UAAM,UAAU,eAAe;AAC/B,UAAM,oBAAoB,QAAS,aAAa,OAAQ;AAExD,WACIC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG;AAAA,QACA,WAAWC,GAAAA;AAAAA,UACPC,qBAAO,gBAAgB;AAAA,UACvBA,qBAAO,mBAAmB,OAAO,EAAE;AAAA,UACnC,YAAY,SAASC,iBAAAA,QAAgB;AAAA,UACrC;AAAA,QAAA;AAAA,QAEH,GAAG;AAAA,QACJ,MAAM,aAAa;AAAA,QAEnB,UAAA;AAAA,UAAAH,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACG,WAAWC,GAAAA,GAAGC,qBAAO,yBAAyB,GAAGE,aAAAA,QAAY,cAAc;AAAA,cAE1E,UAAA;AAAA,gBAAA,SACGC,2BAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,WAAWJ,GAAAA;AAAAA,sBACPC,qBAAO,uBAAuB;AAAA,sBAC9B,qBACIA,qBAAO,0BAA0B,iBAAiB,EAAE;AAAA,oBAAA;AAAA,oBAG3D,UAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,+CAGR,QAAA,EAAK,WAAWA,qBAAO,uBAAuB,GAAI,UAAA,OAAM;AAAA,+CACxDI,MAAAA,aAAA,EAAY,WAAWJ,qBAAO,yBAAyB,GAAG,eAAY,OAAA,CAAO;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,yCAEjF,OAAA,EAAI,WAAWA,qBAAO,yBAAyB,GAAI,SAAA,CAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGzE;AACJ;AAEA,cAAc,cAAc;;"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
@layer dna-design-system {/**
|
|
2
|
+
* AccordionItem Component Styles
|
|
3
|
+
*
|
|
4
|
+
* Uses native <details> element for expand/collapse behavior.
|
|
5
|
+
* Two variants: box (elevated card) and panel (flat bordered).
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/* === Box variant === */
|
|
9
|
+
|
|
10
|
+
._accordion-item--box_1724u_10 {
|
|
11
|
+
background: var(--colors-semantic-surface-base);
|
|
12
|
+
color: var(--colors-semantic-foreground-default);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* === Panel variant === */
|
|
16
|
+
/* Inherits text color from parent context intentionally */
|
|
17
|
+
|
|
18
|
+
._accordion-item--panel_1724u_18 {
|
|
19
|
+
border-bottom: var(--borderwidth-semantic-xs) solid var(--colors-semantic-border-neutral-mid);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* === Summary (clickable header) === */
|
|
23
|
+
|
|
24
|
+
._accordion-item__summary_1724u_24 {
|
|
25
|
+
display: flex;
|
|
26
|
+
align-items: center;
|
|
27
|
+
gap: var(--spacing-ui-lg);
|
|
28
|
+
padding: var(--spacing-ui-md) var(--spacing-ui-lg);
|
|
29
|
+
cursor: pointer;
|
|
30
|
+
list-style: none;
|
|
31
|
+
user-select: none;
|
|
32
|
+
border-radius: var(--radius-semantic-md);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Remove default marker in all browsers */
|
|
36
|
+
._accordion-item__summary_1724u_24::-webkit-details-marker,
|
|
37
|
+
._accordion-item__summary_1724u_24::marker {
|
|
38
|
+
display: none;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* === Image === */
|
|
42
|
+
|
|
43
|
+
._accordion-item__image_1724u_43 {
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
justify-content: center;
|
|
47
|
+
flex: 0 0 auto;
|
|
48
|
+
overflow: hidden;
|
|
49
|
+
|
|
50
|
+
& > img,
|
|
51
|
+
& > svg {
|
|
52
|
+
max-width: 100%;
|
|
53
|
+
max-height: 100%;
|
|
54
|
+
display: block;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* === Image size variants === */
|
|
59
|
+
|
|
60
|
+
._accordion-item__image--sm_1724u_60 {
|
|
61
|
+
width: 1.5rem;
|
|
62
|
+
height: 1.5rem;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
._accordion-item__image--md_1724u_65 {
|
|
66
|
+
width: 2.5rem;
|
|
67
|
+
height: 2.5rem;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
._accordion-item__image--lg_1724u_70 {
|
|
71
|
+
width: 5rem;
|
|
72
|
+
height: 5rem;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* === Label === */
|
|
76
|
+
|
|
77
|
+
._accordion-item__label_1724u_77 {
|
|
78
|
+
flex: 1 1 auto;
|
|
79
|
+
min-width: 0;
|
|
80
|
+
font-weight: 700;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* === Chevron icon === */
|
|
84
|
+
|
|
85
|
+
._accordion-item__chevron_1724u_85 {
|
|
86
|
+
flex: 0 0 auto;
|
|
87
|
+
width: 1.5rem;
|
|
88
|
+
height: 1.5rem;
|
|
89
|
+
transition: transform 0.2s ease-in-out;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
._accordion-item_1724u_10[open] > ._accordion-item__summary_1724u_24 ._accordion-item__chevron_1724u_85 {
|
|
93
|
+
transform: rotate(180deg);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* === Content area === */
|
|
97
|
+
|
|
98
|
+
._accordion-item__content_1724u_98 {
|
|
99
|
+
padding: 0 var(--spacing-ui-lg) var(--spacing-ui-lg);
|
|
100
|
+
|
|
101
|
+
& > *:last-child {
|
|
102
|
+
margin-bottom: 0;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* === Animation === */
|
|
107
|
+
._accordion-item_1724u_10::details-content {
|
|
108
|
+
display: block;
|
|
109
|
+
block-size: 0;
|
|
110
|
+
opacity: 0;
|
|
111
|
+
overflow: hidden;
|
|
112
|
+
@supports (interpolate-size: allow-keywords) {
|
|
113
|
+
transition-property: block-size, content-visibility, opacity;
|
|
114
|
+
transition-duration: 0.2s;
|
|
115
|
+
transition-timing-function: ease-in-out;
|
|
116
|
+
transition-behavior: allow-discrete;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
._accordion-item_1724u_10[open]::details-content {
|
|
120
|
+
/* Fallback for browsers that don't support calc-size() function */
|
|
121
|
+
block-size: auto;
|
|
122
|
+
opacity: 1;
|
|
123
|
+
@supports (interpolate-size: allow-keywords) {
|
|
124
|
+
/* calc-size() function allows transition to height: auto; */
|
|
125
|
+
block-size: calc-size(auto, size);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccordionItem.d.ts","sourceRoot":"","sources":["../../../src/components/AccordionItem/AccordionItem.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,eAAO,MAAM,aAAa,mHA0CzB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { ChevronDown } from "@dnanpm/icons";
|
|
4
|
+
import { useAccordionContext } from "../Accordion/Accordion.utils.js";
|
|
5
|
+
import elevationStyles from "../../styles/utils/elevation.module.css.js";
|
|
6
|
+
import focusStyles from "../../styles/utils/focus.module.css.js";
|
|
7
|
+
import styles from "./AccordionItem.module.css.js";
|
|
8
|
+
import { cn } from "../../utils/cn/cn.js";
|
|
9
|
+
const AccordionItem = forwardRef(
|
|
10
|
+
function AccordionItem2({ label, variant: variantProp, image, imageSize, children, className, name, ...props }, ref) {
|
|
11
|
+
const { variant: contextVariant, groupName } = useAccordionContext();
|
|
12
|
+
const variant = variantProp ?? contextVariant;
|
|
13
|
+
const resolvedImageSize = image ? imageSize ?? "md" : void 0;
|
|
14
|
+
return /* @__PURE__ */ jsxs(
|
|
15
|
+
"details",
|
|
16
|
+
{
|
|
17
|
+
ref,
|
|
18
|
+
className: cn(
|
|
19
|
+
styles["accordion-item"],
|
|
20
|
+
styles[`accordion-item--${variant}`],
|
|
21
|
+
variant === "box" && elevationStyles.elevationLow,
|
|
22
|
+
className
|
|
23
|
+
),
|
|
24
|
+
...props,
|
|
25
|
+
name: groupName ?? name,
|
|
26
|
+
children: [
|
|
27
|
+
/* @__PURE__ */ jsxs(
|
|
28
|
+
"summary",
|
|
29
|
+
{
|
|
30
|
+
className: cn(styles["accordion-item__summary"], focusStyles.focusableInset),
|
|
31
|
+
children: [
|
|
32
|
+
image && /* @__PURE__ */ jsx(
|
|
33
|
+
"span",
|
|
34
|
+
{
|
|
35
|
+
className: cn(
|
|
36
|
+
styles["accordion-item__image"],
|
|
37
|
+
resolvedImageSize && styles[`accordion-item__image--${resolvedImageSize}`]
|
|
38
|
+
),
|
|
39
|
+
children: image
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
/* @__PURE__ */ jsx("span", { className: styles["accordion-item__label"], children: label }),
|
|
43
|
+
/* @__PURE__ */ jsx(ChevronDown, { className: styles["accordion-item__chevron"], "aria-hidden": "true" })
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
),
|
|
47
|
+
/* @__PURE__ */ jsx("div", { className: styles["accordion-item__content"], children })
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
AccordionItem.displayName = "AccordionItem";
|
|
54
|
+
export {
|
|
55
|
+
AccordionItem
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=AccordionItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccordionItem.js","sources":["../../../src/components/AccordionItem/AccordionItem.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { ChevronDown } from '@dnanpm/icons';\nimport { cn } from '../../utils/cn';\nimport { useAccordionContext } from '../Accordion/Accordion.utils';\nimport elevationStyles from '../../styles/utils/elevation.module.css';\nimport focusStyles from '../../styles/utils/focus.module.css';\nimport styles from './AccordionItem.module.css';\nimport type { AccordionItemProps } from './AccordionItem.types';\n\nexport const AccordionItem = forwardRef<HTMLDetailsElement, AccordionItemProps>(\n function AccordionItem(\n { label, variant: variantProp, image, imageSize, children, className, name, ...props },\n ref,\n ) {\n const { variant: contextVariant, groupName } = useAccordionContext();\n const variant = variantProp ?? contextVariant;\n const resolvedImageSize = image ? (imageSize ?? 'md') : undefined;\n\n return (\n <details\n ref={ref}\n className={cn(\n styles['accordion-item'],\n styles[`accordion-item--${variant}`],\n variant === 'box' && elevationStyles.elevationLow,\n className,\n )}\n {...props}\n name={groupName ?? name}\n >\n <summary\n className={cn(styles['accordion-item__summary'], focusStyles.focusableInset)}\n >\n {image && (\n <span\n className={cn(\n styles['accordion-item__image'],\n resolvedImageSize &&\n styles[`accordion-item__image--${resolvedImageSize}`],\n )}\n >\n {image}\n </span>\n )}\n <span className={styles['accordion-item__label']}>{label}</span>\n <ChevronDown className={styles['accordion-item__chevron']} aria-hidden=\"true\" />\n </summary>\n <div className={styles['accordion-item__content']}>{children}</div>\n </details>\n );\n },\n);\n\nAccordionItem.displayName = 'AccordionItem';\n"],"names":["AccordionItem"],"mappings":";;;;;;;;AASO,MAAM,gBAAgB;AAAA,EACzB,SAASA,eACL,EAAE,OAAO,SAAS,aAAa,OAAO,WAAW,UAAU,WAAW,MAAM,GAAG,MAAA,GAC/E,KACF;AACE,UAAM,EAAE,SAAS,gBAAgB,UAAA,IAAc,oBAAA;AAC/C,UAAM,UAAU,eAAe;AAC/B,UAAM,oBAAoB,QAAS,aAAa,OAAQ;AAExD,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QACG;AAAA,QACA,WAAW;AAAA,UACP,OAAO,gBAAgB;AAAA,UACvB,OAAO,mBAAmB,OAAO,EAAE;AAAA,UACnC,YAAY,SAAS,gBAAgB;AAAA,UACrC;AAAA,QAAA;AAAA,QAEH,GAAG;AAAA,QACJ,MAAM,aAAa;AAAA,QAEnB,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,WAAW,GAAG,OAAO,yBAAyB,GAAG,YAAY,cAAc;AAAA,cAE1E,UAAA;AAAA,gBAAA,SACG;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,WAAW;AAAA,sBACP,OAAO,uBAAuB;AAAA,sBAC9B,qBACI,OAAO,0BAA0B,iBAAiB,EAAE;AAAA,oBAAA;AAAA,oBAG3D,UAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,oCAGR,QAAA,EAAK,WAAW,OAAO,uBAAuB,GAAI,UAAA,OAAM;AAAA,oCACxD,aAAA,EAAY,WAAW,OAAO,yBAAyB,GAAG,eAAY,OAAA,CAAO;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,8BAEjF,OAAA,EAAI,WAAW,OAAO,yBAAyB,GAAI,SAAA,CAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGzE;AACJ;AAEA,cAAc,cAAc;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require('./AccordionItem.css');
|
|
2
|
+
"use strict";
|
|
3
|
+
const styles = {
|
|
4
|
+
"accordion-item--box": "_accordion-item--box_1724u_10",
|
|
5
|
+
"accordion-item--panel": "_accordion-item--panel_1724u_18",
|
|
6
|
+
"accordion-item__summary": "_accordion-item__summary_1724u_24",
|
|
7
|
+
"accordion-item__image": "_accordion-item__image_1724u_43",
|
|
8
|
+
"accordion-item__image--sm": "_accordion-item__image--sm_1724u_60",
|
|
9
|
+
"accordion-item__image--md": "_accordion-item__image--md_1724u_65",
|
|
10
|
+
"accordion-item__image--lg": "_accordion-item__image--lg_1724u_70",
|
|
11
|
+
"accordion-item__label": "_accordion-item__label_1724u_77",
|
|
12
|
+
"accordion-item__chevron": "_accordion-item__chevron_1724u_85",
|
|
13
|
+
"accordion-item": "_accordion-item_1724u_10",
|
|
14
|
+
"accordion-item__content": "_accordion-item__content_1724u_98"
|
|
15
|
+
};
|
|
16
|
+
module.exports = styles;
|
|
17
|
+
//# sourceMappingURL=AccordionItem.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccordionItem.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import './AccordionItem.css';
|
|
2
|
+
const styles = {
|
|
3
|
+
"accordion-item--box": "_accordion-item--box_1724u_10",
|
|
4
|
+
"accordion-item--panel": "_accordion-item--panel_1724u_18",
|
|
5
|
+
"accordion-item__summary": "_accordion-item__summary_1724u_24",
|
|
6
|
+
"accordion-item__image": "_accordion-item__image_1724u_43",
|
|
7
|
+
"accordion-item__image--sm": "_accordion-item__image--sm_1724u_60",
|
|
8
|
+
"accordion-item__image--md": "_accordion-item__image--md_1724u_65",
|
|
9
|
+
"accordion-item__image--lg": "_accordion-item__image--lg_1724u_70",
|
|
10
|
+
"accordion-item__label": "_accordion-item__label_1724u_77",
|
|
11
|
+
"accordion-item__chevron": "_accordion-item__chevron_1724u_85",
|
|
12
|
+
"accordion-item": "_accordion-item_1724u_10",
|
|
13
|
+
"accordion-item__content": "_accordion-item__content_1724u_98"
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
styles as default
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=AccordionItem.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccordionItem.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
export type ImageSize = 'sm' | 'md' | 'lg';
|
|
3
|
+
export interface AccordionItemProps extends ComponentPropsWithoutRef<'details'> {
|
|
4
|
+
/**
|
|
5
|
+
* The visible label text displayed in the summary row.
|
|
6
|
+
*/
|
|
7
|
+
readonly label: string;
|
|
8
|
+
/**
|
|
9
|
+
* Visual style variant.
|
|
10
|
+
* - `box`: elevated card with rounded corners and full border
|
|
11
|
+
* - `panel`: flat style with bottom border only
|
|
12
|
+
* @default 'box'
|
|
13
|
+
*/
|
|
14
|
+
readonly variant?: 'box' | 'panel';
|
|
15
|
+
/**
|
|
16
|
+
* Optional image or icon element rendered before the label in the summary row.
|
|
17
|
+
*/
|
|
18
|
+
readonly image?: ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* Size of the square image area in the summary row.
|
|
21
|
+
* Defaults to `md` when `image` is provided and `imageSize` is not set.
|
|
22
|
+
* - `sm`: 24×24 px
|
|
23
|
+
* - `md`: 40×40 px
|
|
24
|
+
* - `lg`: 80×80 px
|
|
25
|
+
*/
|
|
26
|
+
readonly imageSize?: ImageSize;
|
|
27
|
+
/**
|
|
28
|
+
* The expandable content area. Can contain any React elements.
|
|
29
|
+
*/
|
|
30
|
+
readonly children: ReactNode;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=AccordionItem.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccordionItem.types.d.ts","sourceRoot":"","sources":["../../../src/components/AccordionItem/AccordionItem.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjE,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,WAAW,kBAAmB,SAAQ,wBAAwB,CAAC,SAAS,CAAC;IAC3E;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IACnC;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AccordionItem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC"}
|