@tedi-design-system/react 18.0.0-rc.15 → 18.0.0-rc.17
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/_virtual/index.es13.js +2 -2
- package/_virtual/index.es14.js +2 -2
- package/bundle-stats.html +1 -1
- package/external/react-is/index.cjs.js +1 -1
- package/external/react-is/index.es.js +1 -1
- package/external/toposort/index.cjs.js +1 -1
- package/external/toposort/index.es.js +1 -1
- package/index.css +1 -1
- package/package.json +1 -1
- package/src/community/components/accordion/accordion-item/accordion-item.d.ts +3 -0
- package/src/community/components/accordion/accordion-item-content/accordion-item-content.d.ts +3 -0
- package/src/community/components/accordion/accordion-item-header/accordion-item-header.d.ts +3 -0
- package/src/community/components/accordion/accordion.d.ts +3 -0
- package/src/tedi/components/buttons/collapse-button/collapse-button.cjs.js +1 -0
- package/src/tedi/components/buttons/collapse-button/collapse-button.d.ts +61 -0
- package/src/tedi/components/buttons/collapse-button/collapse-button.es.js +68 -0
- package/src/tedi/components/buttons/collapse-button/collapse-button.module.scss.cjs.js +1 -0
- package/src/tedi/components/buttons/collapse-button/collapse-button.module.scss.es.js +17 -0
- package/src/tedi/components/content/accordion/accordion-context.cjs.js +1 -0
- package/src/tedi/components/content/accordion/accordion-context.d.ts +27 -0
- package/src/tedi/components/content/accordion/accordion-context.es.js +6 -0
- package/src/tedi/components/content/accordion/accordion-item/accordion-item-context.cjs.js +1 -0
- package/src/tedi/components/content/accordion/accordion-item/accordion-item-context.d.ts +24 -0
- package/src/tedi/components/content/accordion/accordion-item/accordion-item-context.es.js +11 -0
- package/src/tedi/components/content/accordion/accordion-item/accordion-item.cjs.js +1 -0
- package/src/tedi/components/content/accordion/accordion-item/accordion-item.d.ts +76 -0
- package/src/tedi/components/content/accordion/accordion-item/accordion-item.es.js +70 -0
- package/src/tedi/components/content/accordion/accordion-item-content/accordion-item-content.cjs.js +1 -0
- package/src/tedi/components/content/accordion/accordion-item-content/accordion-item-content.d.ts +16 -0
- package/src/tedi/components/content/accordion/accordion-item-content/accordion-item-content.es.js +31 -0
- package/src/tedi/components/content/accordion/accordion-item-header/accordion-item-header.cjs.js +1 -0
- package/src/tedi/components/content/accordion/accordion-item-header/accordion-item-header.d.ts +134 -0
- package/src/tedi/components/content/accordion/accordion-item-header/accordion-item-header.es.js +127 -0
- package/src/tedi/components/content/accordion/accordion.cjs.js +1 -0
- package/src/tedi/components/content/accordion/accordion.d.ts +61 -0
- package/src/tedi/components/content/accordion/accordion.es.js +52 -0
- package/src/tedi/components/content/accordion/accordion.module.scss.cjs.js +1 -0
- package/src/tedi/components/content/accordion/accordion.module.scss.es.js +32 -0
- package/src/tedi/components/content/accordion/index.d.ts +6 -0
- package/src/tedi/components/form/time-field/time-field-helpers.cjs.js +1 -1
- package/src/tedi/components/form/time-field/time-field-helpers.d.ts +1 -1
- package/src/tedi/components/form/time-field/time-field-helpers.es.js +1 -1
- package/src/tedi/components/form/time-field/time-field.cjs.js +1 -1
- package/src/tedi/components/form/time-field/time-field.d.ts +23 -1
- package/src/tedi/components/form/time-field/time-field.es.js +126 -94
- package/src/tedi/components/form/time-field/time-picker-modal/time-picker-modal.cjs.js +1 -0
- package/src/tedi/components/form/time-field/time-picker-modal/time-picker-modal.d.ts +30 -0
- package/src/tedi/components/form/time-field/time-picker-modal/time-picker-modal.es.js +59 -0
- package/src/tedi/components/form/time-field/time-picker-modal/time-picker-modal.module.scss.cjs.js +1 -0
- package/src/tedi/components/form/time-field/time-picker-modal/time-picker-modal.module.scss.es.js +10 -0
- package/src/tedi/components/form/time-picker/components/time-grid/time-grid.cjs.js +1 -1
- package/src/tedi/components/form/time-picker/components/time-grid/time-grid.d.ts +5 -1
- package/src/tedi/components/form/time-picker/components/time-grid/time-grid.es.js +47 -64
- package/src/tedi/components/form/time-picker/components/time-wheel/time-wheel.cjs.js +1 -1
- package/src/tedi/components/form/time-picker/components/time-wheel/time-wheel.es.js +1 -1
- package/src/tedi/components/form/time-picker/time-picker.module.scss.cjs.js +1 -1
- package/src/tedi/components/form/time-picker/time-picker.module.scss.es.js +1 -2
- package/src/tedi/index.d.ts +2 -0
- package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
- package/src/tedi/providers/label-provider/labels-map.d.ts +21 -0
- package/src/tedi/providers/label-provider/labels-map.es.js +23 -2
- package/tedi.cjs.js +1 -1
- package/tedi.es.js +299 -283
package/package.json
CHANGED
|
@@ -32,5 +32,8 @@ export interface IAccordionItemContext {
|
|
|
32
32
|
id: string;
|
|
33
33
|
}
|
|
34
34
|
export declare const AccordionItemContext: React.Context<IAccordionItemContext>;
|
|
35
|
+
/**
|
|
36
|
+
* @deprecated Use `<Accordion.Item>` from the TEDI-Ready Accordion (`@tedi-design-system/react/tedi`) instead.
|
|
37
|
+
*/
|
|
35
38
|
export declare const AccordionItem: (props: AccordionItemProps) => JSX.Element;
|
|
36
39
|
export default AccordionItem;
|
package/src/community/components/accordion/accordion-item-content/accordion-item-content.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { CardContentProps } from '../../card';
|
|
2
2
|
export type AccordionItemContentProps = CardContentProps;
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Use `<Accordion.Item.Content>` from the TEDI-Ready Accordion (`@tedi-design-system/react/tedi`) instead.
|
|
5
|
+
*/
|
|
3
6
|
export declare const AccordionItemContent: (props: AccordionItemContentProps) => JSX.Element;
|
|
4
7
|
export default AccordionItemContent;
|
|
@@ -15,5 +15,8 @@ export interface AccordionItemHeaderProps extends Omit<CardHeaderProps, 'id' | '
|
|
|
15
15
|
*/
|
|
16
16
|
background?: 'primary' | 'white/primary' | 'muted/primary' | CardHeaderBackground;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated Use `<Accordion.Item.Header>` from the TEDI-Ready Accordion (`@tedi-design-system/react/tedi`) instead.
|
|
20
|
+
*/
|
|
18
21
|
export declare const AccordionItemHeader: (props: AccordionItemHeaderProps) => JSX.Element;
|
|
19
22
|
export default AccordionItemHeader;
|
|
@@ -34,5 +34,8 @@ export interface IAccordionContext {
|
|
|
34
34
|
onToggle: (id: string) => void;
|
|
35
35
|
}
|
|
36
36
|
export declare const AccordionContext: React.Context<IAccordionContext>;
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Use the TEDI-Ready `Accordion` from `@tedi-design-system/react/tedi` instead.
|
|
39
|
+
*/
|
|
37
40
|
export declare const Accordion: (props: AccordionProps) => JSX.Element;
|
|
38
41
|
export default Accordion;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),L=require("../../../../../external/classnames/index.cjs.js"),T=require("react"),c=require("../../base/icon/icon.cjs.js"),e=require("./collapse-button.module.scss.cjs.js"),z=require("../../../providers/label-provider/use-labels.cjs.js"),p=T.forwardRef((b,m)=>{const{open:a,onOpenChange:s,openText:_,closeText:x,hideText:t=!1,arrowType:o="default",size:y="default",inverted:h=!1,underline:j=!0,className:N,onClick:n,"aria-label":d,...q}=b,{getLabel:u}=z.useLabels(),i=a?x??u("close"):_??u("open"),C=t?d??i:d,v=r=>{n==null||n(r),!r.defaultPrevented&&(s==null||s(!a))},B=L.default(e.default["tedi-collapse-button"],{[e.default["tedi-collapse-button--open"]]:a,[e.default["tedi-collapse-button--small"]]:y==="small",[e.default["tedi-collapse-button--inverted"]]:h&&o!=="secondary",[e.default["tedi-collapse-button--icon-only"]]:t,[e.default["tedi-collapse-button--neutral"]]:t&&o!=="secondary",[e.default["tedi-collapse-button--secondary"]]:t&&o==="secondary",[e.default["tedi-collapse-button--no-underline"]]:!t&&!j},N);return l.jsxs("button",{ref:m,type:"button",...q,className:B,onClick:v,"aria-expanded":a,"aria-label":C,children:[!t&&l.jsx("span",{className:e.default["tedi-collapse-button__text"],children:i}),t?o==="secondary"?l.jsx("span",{className:e.default["tedi-collapse-button__icon-wrapper"],children:l.jsx(c.Icon,{className:e.default["tedi-collapse-button__icon"],name:"expand_more",color:"inherit",filled:!0,size:24})}):l.jsx(c.Icon,{className:e.default["tedi-collapse-button__icon"],name:"expand_more",color:"inherit",filled:!0,size:24}):l.jsx("span",{className:e.default["tedi-collapse-button__icon-pad"],children:l.jsx(c.Icon,{className:e.default["tedi-collapse-button__icon"],name:"expand_more",color:"inherit",size:16})})]})});p.displayName="CollapseButton";const f=p;exports.CollapseButton=f;exports.default=f;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type CollapseButtonArrowType = 'default' | 'secondary';
|
|
3
|
+
export type CollapseButtonSize = 'default' | 'small';
|
|
4
|
+
export interface CollapseButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'onChange' | 'children'> {
|
|
5
|
+
/**
|
|
6
|
+
* Current open state. Bind alongside `onOpenChange` to keep in sync.
|
|
7
|
+
*/
|
|
8
|
+
open: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Called when the user toggles the button. Receives the next open state.
|
|
11
|
+
* Standard native `onClick` still fires too; if it calls `preventDefault`
|
|
12
|
+
* the toggle is suppressed.
|
|
13
|
+
*/
|
|
14
|
+
onOpenChange?: (next: boolean) => void;
|
|
15
|
+
/**
|
|
16
|
+
* Label shown when collapsed. Rendered literally — translate at the call
|
|
17
|
+
* site if needed. When omitted, falls back to the `LabelProvider`'s
|
|
18
|
+
* translated `'open'` label.
|
|
19
|
+
*/
|
|
20
|
+
openText?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Label shown when expanded. Rendered literally — translate at the call
|
|
23
|
+
* site if needed. When omitted, falls back to the `LabelProvider`'s
|
|
24
|
+
* translated `'close'` label.
|
|
25
|
+
*/
|
|
26
|
+
closeText?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Hide the label and render the chevron only.
|
|
29
|
+
* @default false
|
|
30
|
+
*/
|
|
31
|
+
hideText?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Chevron style. Only takes effect with `hideText` (icon-only mode).
|
|
34
|
+
* @default default
|
|
35
|
+
*/
|
|
36
|
+
arrowType?: CollapseButtonArrowType;
|
|
37
|
+
/**
|
|
38
|
+
* Visual size.
|
|
39
|
+
* @default default
|
|
40
|
+
*/
|
|
41
|
+
size?: CollapseButtonSize;
|
|
42
|
+
/**
|
|
43
|
+
* Light text and icon for placement on a dark / brand background. Ignored
|
|
44
|
+
* when `arrowType` is `secondary` (no inverted form in the design).
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
inverted?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Underline the text label. Set `false` in contexts where the chevron is
|
|
50
|
+
* the sole affordance (e.g. inside an accordion header). Has no effect in
|
|
51
|
+
* icon-only mode.
|
|
52
|
+
* @default true
|
|
53
|
+
*/
|
|
54
|
+
underline?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Accessible label. Required when `hideText` is `true`.
|
|
57
|
+
*/
|
|
58
|
+
'aria-label'?: string;
|
|
59
|
+
}
|
|
60
|
+
export declare const CollapseButton: React.ForwardRefExoticComponent<CollapseButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
61
|
+
export default CollapseButton;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsxs as v, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import w from "../../../../../external/classnames/index.es.js";
|
|
3
|
+
import B from "react";
|
|
4
|
+
import { Icon as r } from "../../base/icon/icon.es.js";
|
|
5
|
+
import e from "./collapse-button.module.scss.es.js";
|
|
6
|
+
import { useLabels as j } from "../../../providers/label-provider/use-labels.es.js";
|
|
7
|
+
const u = B.forwardRef((m, b) => {
|
|
8
|
+
const {
|
|
9
|
+
open: l,
|
|
10
|
+
onOpenChange: s,
|
|
11
|
+
openText: f,
|
|
12
|
+
closeText: _,
|
|
13
|
+
hideText: t = !1,
|
|
14
|
+
arrowType: a = "default",
|
|
15
|
+
size: x = "default",
|
|
16
|
+
inverted: y = !1,
|
|
17
|
+
underline: N = !0,
|
|
18
|
+
className: h,
|
|
19
|
+
onClick: n,
|
|
20
|
+
"aria-label": i,
|
|
21
|
+
...C
|
|
22
|
+
} = m, { getLabel: c } = j(), d = l ? _ ?? c("close") : f ?? c("open"), z = t ? i ?? d : i, L = (p) => {
|
|
23
|
+
n == null || n(p), !p.defaultPrevented && (s == null || s(!l));
|
|
24
|
+
}, T = w(
|
|
25
|
+
e["tedi-collapse-button"],
|
|
26
|
+
{
|
|
27
|
+
[e["tedi-collapse-button--open"]]: l,
|
|
28
|
+
[e["tedi-collapse-button--small"]]: x === "small",
|
|
29
|
+
[e["tedi-collapse-button--inverted"]]: y && a !== "secondary",
|
|
30
|
+
[e["tedi-collapse-button--icon-only"]]: t,
|
|
31
|
+
[e["tedi-collapse-button--neutral"]]: t && a !== "secondary",
|
|
32
|
+
[e["tedi-collapse-button--secondary"]]: t && a === "secondary",
|
|
33
|
+
[e["tedi-collapse-button--no-underline"]]: !t && !N
|
|
34
|
+
},
|
|
35
|
+
h
|
|
36
|
+
);
|
|
37
|
+
return /* @__PURE__ */ v(
|
|
38
|
+
"button",
|
|
39
|
+
{
|
|
40
|
+
ref: b,
|
|
41
|
+
type: "button",
|
|
42
|
+
...C,
|
|
43
|
+
className: T,
|
|
44
|
+
onClick: L,
|
|
45
|
+
"aria-expanded": l,
|
|
46
|
+
"aria-label": z,
|
|
47
|
+
children: [
|
|
48
|
+
!t && /* @__PURE__ */ o("span", { className: e["tedi-collapse-button__text"], children: d }),
|
|
49
|
+
t ? a === "secondary" ? /* @__PURE__ */ o("span", { className: e["tedi-collapse-button__icon-wrapper"], children: /* @__PURE__ */ o(
|
|
50
|
+
r,
|
|
51
|
+
{
|
|
52
|
+
className: e["tedi-collapse-button__icon"],
|
|
53
|
+
name: "expand_more",
|
|
54
|
+
color: "inherit",
|
|
55
|
+
filled: !0,
|
|
56
|
+
size: 24
|
|
57
|
+
}
|
|
58
|
+
) }) : /* @__PURE__ */ o(r, { className: e["tedi-collapse-button__icon"], name: "expand_more", color: "inherit", filled: !0, size: 24 }) : /* @__PURE__ */ o("span", { className: e["tedi-collapse-button__icon-pad"], children: /* @__PURE__ */ o(r, { className: e["tedi-collapse-button__icon"], name: "expand_more", color: "inherit", size: 16 }) })
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
u.displayName = "CollapseButton";
|
|
64
|
+
const q = u;
|
|
65
|
+
export {
|
|
66
|
+
q as CollapseButton,
|
|
67
|
+
q as default
|
|
68
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t={"tedi-collapse-button":"tedi-collapse-button-ae05875b","tedi-collapse-button__text":"tedi-collapse-button__text-6763f718","tedi-collapse-button--no-underline":"tedi-collapse-button--no-underline-26e3e8f3","tedi-collapse-button__icon":"tedi-collapse-button__icon-343170a2","tedi-collapse-button__icon-pad":"tedi-collapse-button__icon-pad-352e26ef","tedi-collapse-button__icon-wrapper":"tedi-collapse-button__icon-wrapper-8eda7a8b","tedi-collapse-button--open":"tedi-collapse-button--open-2f66bdca","tedi-collapse-button--small":"tedi-collapse-button--small-2e823f5a","tedi-collapse-button--icon-only":"tedi-collapse-button--icon-only-65e88949","tedi-collapse-button--neutral":"tedi-collapse-button--neutral-16b6a760","tedi-collapse-button--secondary":"tedi-collapse-button--secondary-f3a0b2c7","tedi-collapse-button--inverted":"tedi-collapse-button--inverted-288a9527"};exports.default=t;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const t = {
|
|
2
|
+
"tedi-collapse-button": "tedi-collapse-button-ae05875b",
|
|
3
|
+
"tedi-collapse-button__text": "tedi-collapse-button__text-6763f718",
|
|
4
|
+
"tedi-collapse-button--no-underline": "tedi-collapse-button--no-underline-26e3e8f3",
|
|
5
|
+
"tedi-collapse-button__icon": "tedi-collapse-button__icon-343170a2",
|
|
6
|
+
"tedi-collapse-button__icon-pad": "tedi-collapse-button__icon-pad-352e26ef",
|
|
7
|
+
"tedi-collapse-button__icon-wrapper": "tedi-collapse-button__icon-wrapper-8eda7a8b",
|
|
8
|
+
"tedi-collapse-button--open": "tedi-collapse-button--open-2f66bdca",
|
|
9
|
+
"tedi-collapse-button--small": "tedi-collapse-button--small-2e823f5a",
|
|
10
|
+
"tedi-collapse-button--icon-only": "tedi-collapse-button--icon-only-65e88949",
|
|
11
|
+
"tedi-collapse-button--neutral": "tedi-collapse-button--neutral-16b6a760",
|
|
12
|
+
"tedi-collapse-button--secondary": "tedi-collapse-button--secondary-f3a0b2c7",
|
|
13
|
+
"tedi-collapse-button--inverted": "tedi-collapse-button--inverted-288a9527"
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
t as default
|
|
17
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),e=t.createContext(null),o=()=>t.useContext(e);exports.AccordionContext=e;exports.useAccordionContext=o;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface AccordionContextValue {
|
|
3
|
+
/**
|
|
4
|
+
* Whether the accordion allows multiple items to be expanded at the same time.
|
|
5
|
+
*/
|
|
6
|
+
allowMultiple: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Group-level default for items' initial expanded state. Items use this value
|
|
9
|
+
* when they don't specify their own `defaultExpanded`. Per-item overrides
|
|
10
|
+
* (including explicit `false`) take precedence.
|
|
11
|
+
*/
|
|
12
|
+
defaultExpanded: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Called by an AccordionItem after it has updated its expanded state to `true`.
|
|
15
|
+
* In single-expand mode the Accordion will collapse all other registered items.
|
|
16
|
+
*/
|
|
17
|
+
notifyExpanded: (id: string) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Allows AccordionItem to register itself so that the Accordion can collapse it
|
|
20
|
+
* when another item is expanded (single-expand mode).
|
|
21
|
+
*
|
|
22
|
+
* Returns an unregister callback.
|
|
23
|
+
*/
|
|
24
|
+
register: (id: string, setExpanded: (value: boolean) => void) => () => void;
|
|
25
|
+
}
|
|
26
|
+
export declare const AccordionContext: React.Context<AccordionContextValue | null>;
|
|
27
|
+
export declare const useAccordionContext: () => AccordionContextValue | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),o=t.createContext(null),r=n=>{const e=t.useContext(o);if(!e)throw new Error(`<${n}> must be rendered inside an <Accordion.Item>.`);return e};exports.AccordionItemContext=o;exports.useAccordionItemContext=r;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Context exposed by `AccordionItem` to its `Header` and `Content` sub-components.
|
|
4
|
+
*
|
|
5
|
+
* The item owns the expanded state, the shared layout flags (`showIconCard`, `selected`)
|
|
6
|
+
* and the ARIA wiring (`headerId`, `contentId`). Header and content only render
|
|
7
|
+
* appearance and project user content.
|
|
8
|
+
*/
|
|
9
|
+
export interface AccordionItemContextValue {
|
|
10
|
+
/** ID of the element acting as the header trigger (used for `aria-labelledby` on content). */
|
|
11
|
+
headerId: string;
|
|
12
|
+
/** ID of the content panel (used for `aria-controls` on the trigger). */
|
|
13
|
+
contentId: string;
|
|
14
|
+
/** Whether the item is currently expanded. */
|
|
15
|
+
expanded: boolean;
|
|
16
|
+
/** Toggles the expanded state. No-op when the item is disabled. */
|
|
17
|
+
toggle: () => void;
|
|
18
|
+
/** Whether the icon-card layout is active for this item. */
|
|
19
|
+
showIconCard: boolean;
|
|
20
|
+
/** Whether the item is disabled (header is non-interactive, state can't be toggled by user). */
|
|
21
|
+
disabled: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare const AccordionItemContext: React.Context<AccordionItemContextValue | null>;
|
|
24
|
+
export declare const useAccordionItemContext: (componentName: string) => AccordionItemContextValue;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import e from "react";
|
|
2
|
+
const n = e.createContext(null), c = (o) => {
|
|
3
|
+
const t = e.useContext(n);
|
|
4
|
+
if (!t)
|
|
5
|
+
throw new Error(`<${o}> must be rendered inside an <Accordion.Item>.`);
|
|
6
|
+
return t;
|
|
7
|
+
};
|
|
8
|
+
export {
|
|
9
|
+
n as AccordionItemContext,
|
|
10
|
+
c as useAccordionItemContext
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const x=require("react/jsx-runtime"),N=require("../../../../../../external/classnames/index.cjs.js"),a=require("react"),i=require("../accordion.module.scss.cjs.js"),O=require("../accordion-context.cjs.js"),S=require("../accordion-item-content/accordion-item-content.cjs.js"),$=require("../accordion-item-header/accordion-item-header.cjs.js"),L=require("./accordion-item-context.cjs.js"),R=u=>typeof u.expanded=="boolean",E=u=>{const{children:A,id:r,defaultExpanded:b,expanded:f,onToggle:t,showIconCard:l=!1,selected:q=!1,iconCard:v,disabled:d=!1,openOnHashMatch:p=!1}=u,j=a.useId(),c=r??j,h=`${c}-header`,I=`${c}-content`,e=O.useAccordionContext(),y=b??(e==null?void 0:e.defaultExpanded)??!1,o=R(u),[H,m]=a.useState(y),s=o?f:H;a.useEffect(()=>{if(!e)return;const n=C=>{o?t==null||t(C):m(C)};return e.register(c,n)},[e,c,o,t]);const _=a.useCallback(()=>{if(d)return;const n=!s;o||m(n),t==null||t(n),n&&(e==null||e.notifyExpanded(c))},[e,c,o,d,s,t]);a.useEffect(()=>{if(!p||!r||d||typeof window>"u")return;const n=()=>{window.location.hash===`#${r}`&&(o?f||t==null||t(!0):m(!0),e==null||e.notifyExpanded(r))};return n(),window.addEventListener("hashchange",n),()=>window.removeEventListener("hashchange",n)},[p,r,d,o,f,t]);const M=a.useMemo(()=>({headerId:h,contentId:I,expanded:s,toggle:_,showIconCard:l,disabled:d}),[h,I,s,_,l,d]),P=N.default(i.default["tedi-accordion__item"],{[i.default["tedi-accordion__item--selected"]]:q,[i.default["tedi-accordion__item--expanded"]]:s,[i.default["tedi-accordion__item--disabled"]]:d,[i.default["tedi-accordion__item--with-icon-card"]]:l});return x.jsx(L.AccordionItemContext.Provider,{value:M,children:x.jsxs("div",{"data-name":"accordion-item","data-testid":"tedi-accordion-item",className:P,children:[l&&x.jsx("span",{"data-name":"accordion-icon-card",className:i.default["tedi-accordion__icon-card"],children:v}),A]})})};E.displayName="AccordionItem";const w=Object.assign(E,{Header:$.AccordionItemHeader,Content:S.AccordionItemContent});exports.AccordionItem=w;exports.default=w;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface AccordionItemProps {
|
|
3
|
+
/**
|
|
4
|
+
* Inner content. Must include `Accordion.Item.Header` and `Accordion.Item.Content`.
|
|
5
|
+
*/
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Stable id used for the header/content ARIA wiring. Auto-generated if omitted.
|
|
9
|
+
*/
|
|
10
|
+
id?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Whether the accordion item is expanded initially (uncontrolled).
|
|
13
|
+
* Does not control the expanded state after initialization.
|
|
14
|
+
*
|
|
15
|
+
* When omitted, falls back to the parent `Accordion`'s `defaultExpanded` (or `false`).
|
|
16
|
+
* Pass an explicit boolean to override the group default — including `false` to
|
|
17
|
+
* keep an individual item collapsed when the group default is `true`.
|
|
18
|
+
* @default false
|
|
19
|
+
*/
|
|
20
|
+
defaultExpanded?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Controlled expanded state. When provided the item operates in controlled mode
|
|
23
|
+
* and `onToggle` should be used to react to user-driven toggles.
|
|
24
|
+
*/
|
|
25
|
+
expanded?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Called whenever the user toggles the item. Receives the next expanded state.
|
|
28
|
+
*/
|
|
29
|
+
onToggle?: (expanded: boolean) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Enables the icon-card layout variant. Affects both header and content styling,
|
|
32
|
+
* which is why it lives on the item.
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
showIconCard?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Marks the accordion item as selected (applies a visual 'selected' state).
|
|
38
|
+
* @default false
|
|
39
|
+
*/
|
|
40
|
+
selected?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Icon card content rendered as a sibling of the header/content (only when `showIconCard` is true).
|
|
43
|
+
*/
|
|
44
|
+
iconCard?: React.ReactNode;
|
|
45
|
+
/**
|
|
46
|
+
* Disables the item — the header trigger becomes non-interactive (`disabled`) and the
|
|
47
|
+
* item's expanded state can no longer be toggled by user interaction. The current
|
|
48
|
+
* state is preserved (e.g. a disabled item that's `defaultExpanded` stays open).
|
|
49
|
+
* @default false
|
|
50
|
+
*/
|
|
51
|
+
disabled?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* When `true`, the item auto-expands if `window.location.hash` matches its `id`
|
|
54
|
+
* (e.g. `https://example.com/page#my-item`). Also re-runs on `hashchange`, so
|
|
55
|
+
* navigating between in-page links updates which item is open.
|
|
56
|
+
*
|
|
57
|
+
* Requires an explicit `id` prop — the auto-generated React id isn't stable enough
|
|
58
|
+
* for deep-linking. No-op when `id` is omitted.
|
|
59
|
+
* @default false
|
|
60
|
+
*/
|
|
61
|
+
openOnHashMatch?: boolean;
|
|
62
|
+
}
|
|
63
|
+
export declare const AccordionItem: {
|
|
64
|
+
(props: AccordionItemProps): JSX.Element;
|
|
65
|
+
displayName: string;
|
|
66
|
+
} & {
|
|
67
|
+
Header: {
|
|
68
|
+
(props: import('../accordion-item-header/accordion-item-header').AccordionItemHeaderProps): JSX.Element;
|
|
69
|
+
displayName: string;
|
|
70
|
+
};
|
|
71
|
+
Content: {
|
|
72
|
+
(props: import('../accordion-item-content/accordion-item-content').AccordionItemContentProps): JSX.Element;
|
|
73
|
+
displayName: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
export default AccordionItem;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx as E, jsxs as M } from "react/jsx-runtime";
|
|
2
|
+
import $ from "../../../../../../external/classnames/index.es.js";
|
|
3
|
+
import i from "react";
|
|
4
|
+
import r from "../accordion.module.scss.es.js";
|
|
5
|
+
import { useAccordionContext as L } from "../accordion-context.es.js";
|
|
6
|
+
import { AccordionItemContent as O } from "../accordion-item-content/accordion-item-content.es.js";
|
|
7
|
+
import { AccordionItemHeader as k } from "../accordion-item-header/accordion-item-header.es.js";
|
|
8
|
+
import { AccordionItemContext as D } from "./accordion-item-context.es.js";
|
|
9
|
+
const F = (m) => typeof m.expanded == "boolean", w = (m) => {
|
|
10
|
+
const {
|
|
11
|
+
children: C,
|
|
12
|
+
id: c,
|
|
13
|
+
defaultExpanded: A,
|
|
14
|
+
expanded: l,
|
|
15
|
+
onToggle: t,
|
|
16
|
+
showIconCard: f = !1,
|
|
17
|
+
selected: b = !1,
|
|
18
|
+
iconCard: v,
|
|
19
|
+
disabled: d = !1,
|
|
20
|
+
openOnHashMatch: u = !1
|
|
21
|
+
} = m, y = i.useId(), a = c ?? y, x = `${a}-header`, h = `${a}-content`, e = L(), H = A ?? (e == null ? void 0 : e.defaultExpanded) ?? !1, o = F(m), [N, p] = i.useState(H), s = o ? l : N;
|
|
22
|
+
i.useEffect(() => {
|
|
23
|
+
if (!e) return;
|
|
24
|
+
const n = (_) => {
|
|
25
|
+
o ? t == null || t(_) : p(_);
|
|
26
|
+
};
|
|
27
|
+
return e.register(a, n);
|
|
28
|
+
}, [e, a, o, t]);
|
|
29
|
+
const I = i.useCallback(() => {
|
|
30
|
+
if (d) return;
|
|
31
|
+
const n = !s;
|
|
32
|
+
o || p(n), t == null || t(n), n && (e == null || e.notifyExpanded(a));
|
|
33
|
+
}, [e, a, o, d, s, t]);
|
|
34
|
+
i.useEffect(() => {
|
|
35
|
+
if (!u || !c || d || typeof window > "u") return;
|
|
36
|
+
const n = () => {
|
|
37
|
+
window.location.hash === `#${c}` && (o ? l || t == null || t(!0) : p(!0), e == null || e.notifyExpanded(c));
|
|
38
|
+
};
|
|
39
|
+
return n(), window.addEventListener("hashchange", n), () => window.removeEventListener("hashchange", n);
|
|
40
|
+
}, [u, c, d, o, l, t]);
|
|
41
|
+
const P = i.useMemo(
|
|
42
|
+
() => ({
|
|
43
|
+
headerId: x,
|
|
44
|
+
contentId: h,
|
|
45
|
+
expanded: s,
|
|
46
|
+
toggle: I,
|
|
47
|
+
showIconCard: f,
|
|
48
|
+
disabled: d
|
|
49
|
+
}),
|
|
50
|
+
[x, h, s, I, f, d]
|
|
51
|
+
), j = $(r["tedi-accordion__item"], {
|
|
52
|
+
[r["tedi-accordion__item--selected"]]: b,
|
|
53
|
+
[r["tedi-accordion__item--expanded"]]: s,
|
|
54
|
+
[r["tedi-accordion__item--disabled"]]: d,
|
|
55
|
+
[r["tedi-accordion__item--with-icon-card"]]: f
|
|
56
|
+
});
|
|
57
|
+
return /* @__PURE__ */ E(D.Provider, { value: P, children: /* @__PURE__ */ M("div", { "data-name": "accordion-item", "data-testid": "tedi-accordion-item", className: j, children: [
|
|
58
|
+
f && /* @__PURE__ */ E("span", { "data-name": "accordion-icon-card", className: r["tedi-accordion__icon-card"], children: v }),
|
|
59
|
+
C
|
|
60
|
+
] }) });
|
|
61
|
+
};
|
|
62
|
+
w.displayName = "AccordionItem";
|
|
63
|
+
const K = Object.assign(w, {
|
|
64
|
+
Header: k,
|
|
65
|
+
Content: O
|
|
66
|
+
});
|
|
67
|
+
export {
|
|
68
|
+
K as AccordionItem,
|
|
69
|
+
K as default
|
|
70
|
+
};
|
package/src/tedi/components/content/accordion/accordion-item-content/accordion-item-content.cjs.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),u=require("../../../../../../external/classnames/index.cjs.js"),t=require("../accordion.module.scss.cjs.js"),m=require("../accordion-item/accordion-item-context.cjs.js"),n=c=>{const{children:i,contentClass:d}=c,{headerId:r,contentId:a,expanded:e,showIconCard:s}=m.useAccordionItemContext("Accordion.Item.Content"),l=u.default(t.default["tedi-accordion-item-content"],{[t.default["tedi-accordion-item-content--with-icon-card"]]:s},d);return o.jsx("div",{"data-name":"accordion-item-content",id:a,className:l,role:e?"region":void 0,"aria-labelledby":r,"aria-hidden":!e,inert:e?void 0:"",children:o.jsx("div",{className:t.default["tedi-accordion-item-content__inner"],children:i})})};n.displayName="AccordionItemContent";exports.AccordionItemContent=n;exports.default=n;
|
package/src/tedi/components/content/accordion/accordion-item-content/accordion-item-content.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface AccordionItemContentProps {
|
|
3
|
+
/**
|
|
4
|
+
* Collapsible content.
|
|
5
|
+
*/
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Custom CSS class for the accordion content.
|
|
9
|
+
*/
|
|
10
|
+
contentClass?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const AccordionItemContent: {
|
|
13
|
+
(props: AccordionItemContentProps): JSX.Element;
|
|
14
|
+
displayName: string;
|
|
15
|
+
};
|
|
16
|
+
export default AccordionItemContent;
|
package/src/tedi/components/content/accordion/accordion-item-content/accordion-item-content.es.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import m from "../../../../../../external/classnames/index.es.js";
|
|
3
|
+
import t from "../accordion.module.scss.es.js";
|
|
4
|
+
import { useAccordionItemContext as l } from "../accordion-item/accordion-item-context.es.js";
|
|
5
|
+
const h = (n) => {
|
|
6
|
+
const { children: i, contentClass: c } = n, { headerId: d, contentId: r, expanded: o, showIconCard: a } = l("Accordion.Item.Content"), s = m(
|
|
7
|
+
t["tedi-accordion-item-content"],
|
|
8
|
+
{
|
|
9
|
+
[t["tedi-accordion-item-content--with-icon-card"]]: a
|
|
10
|
+
},
|
|
11
|
+
c
|
|
12
|
+
);
|
|
13
|
+
return /* @__PURE__ */ e(
|
|
14
|
+
"div",
|
|
15
|
+
{
|
|
16
|
+
"data-name": "accordion-item-content",
|
|
17
|
+
id: r,
|
|
18
|
+
className: s,
|
|
19
|
+
role: o ? "region" : void 0,
|
|
20
|
+
"aria-labelledby": d,
|
|
21
|
+
"aria-hidden": !o,
|
|
22
|
+
inert: o ? void 0 : "",
|
|
23
|
+
children: /* @__PURE__ */ e("div", { className: t["tedi-accordion-item-content__inner"], children: i })
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
};
|
|
27
|
+
h.displayName = "AccordionItemContent";
|
|
28
|
+
export {
|
|
29
|
+
h as AccordionItemContent,
|
|
30
|
+
h as default
|
|
31
|
+
};
|
package/src/tedi/components/content/accordion/accordion-item-header/accordion-item-header.cjs.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),i=require("../../../../../../external/classnames/index.cjs.js"),G=require("../../../base/icon/icon.cjs.js"),v=require("../../../base/typography/text/text.cjs.js"),J=require("../../../buttons/collapse-button/collapse-button.cjs.js"),e=require("../accordion.module.scss.cjs.js"),K=require("../accordion-item/accordion-item-context.cjs.js"),Q=require("../../../../providers/label-provider/use-labels.cjs.js"),c=I=>{const{headerClickable:o=!0,titleLayout:T="hug",openText:s,closeText:l,showExpandLabel:a=!0,showDefaultExpandAction:u=!0,expandActionPosition:h="end",expandActionArrowType:w="default",expandActionSize:C,expandActionInverted:N=!1,expandActionUnderline:q=!1,headerClass:y,title:r,beforeTitle:E,afterTitle:L,startAction:H,endAction:S,startDescription:m,endDescription:z,headingLevel:x}=I,{headerId:p,contentId:f,expanded:n,toggle:_,showIconCard:B,disabled:d}=K.useAccordionItemContext("Accordion.Item.Header"),{getLabel:g}=Q.useLabels(),D=s??g("open"),O=l??g("close"),k=n?O:D,M=u&&h==="start",P=u&&h==="end",F=C??(a?"default":"small"),R=i.default(e.default["tedi-accordion-item-header"],{[e.default["tedi-accordion-item-header--hoverable"]]:o&&!d,[e.default["tedi-accordion-item-header--expanded"]]:n,[e.default["tedi-accordion-item-header--with-icon-card"]]:B,[e.default["tedi-accordion-item-header--disabled"]]:d},y),U=()=>t.jsx(G.Icon,{name:"expand_more",color:"inherit",size:16,className:i.default(e.default["tedi-accordion-item-header__icon"],{[e.default["tedi-accordion-item-header__icon--expanded"]]:n,[e.default["tedi-accordion-item-header__icon--no-label"]]:!a})}),b=()=>o?t.jsxs("span",{className:i.default(e.default["tedi-accordion-item-header__expand-indicator"],{[e.default["tedi-accordion-item-header__expand-indicator--with-label"]]:a}),children:[t.jsx(v.Text,{element:"span",modifiers:"normal",children:a?k:null}),U()]}):t.jsx(J.CollapseButton,{open:n,onOpenChange:()=>_(),openText:s,closeText:l,hideText:!a,arrowType:w,size:F,inverted:N,underline:q,disabled:d,"aria-controls":f,"aria-disabled":d||void 0,tabIndex:d?-1:void 0}),A=t.jsxs(t.Fragment,{children:[t.jsxs("span",{className:e.default["tedi-accordion-item-header__start"],children:[H,E,t.jsxs("span",{className:i.default(e.default["tedi-accordion-item-header__title"],{[e.default["tedi-accordion-item-header__title--grow"]]:T==="fill",[e.default["tedi-accordion-item-header__title--with-description"]]:m}),children:[t.jsxs("span",{className:e.default["tedi-accordion-item-header__title-main"],children:[M&&b(),r!=null&&t.jsx(v.Text,{element:"span",color:"secondary",modifiers:"normal",children:r})]}),m]}),L]}),z,P&&b(),S]}),j=o?t.jsx("button",{type:"button",id:p,className:e.default["tedi-accordion-item-header__trigger"],onClick:_,disabled:d,"aria-expanded":n,"aria-controls":f,children:A}):t.jsx("div",{id:p,className:e.default["tedi-accordion-item-header__trigger"],children:A}),W=(()=>{if(!x)return j;const $=`h${x}`;return t.jsx($,{className:e.default["tedi-accordion-item-header__heading-wrapper"],children:j})})();return t.jsx("div",{"data-name":"accordion-item-header",className:R,children:W})};c.displayName="AccordionItemHeader";exports.AccordionItemHeader=c;exports.default=c;
|
package/src/tedi/components/content/accordion/accordion-item-header/accordion-item-header.d.ts
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { CollapseButtonArrowType, CollapseButtonSize } from '../../../buttons/collapse-button/collapse-button';
|
|
3
|
+
export type AccordionItemHeaderTitleLayout = 'hug' | 'fill';
|
|
4
|
+
export type AccordionItemHeaderExpandActionPosition = 'start' | 'end';
|
|
5
|
+
export type AccordionItemHeaderHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
6
|
+
export interface AccordionItemHeaderProps {
|
|
7
|
+
/**
|
|
8
|
+
* If false, disables header toggling and enables using interactive elements in the
|
|
9
|
+
* accordion header. The default expand action is still rendered alongside it unless
|
|
10
|
+
* `showDefaultExpandAction` is also set to `false`.
|
|
11
|
+
* @default true
|
|
12
|
+
*/
|
|
13
|
+
headerClickable?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Sets how the accordion title stretches horizontally.
|
|
16
|
+
*
|
|
17
|
+
* `hug` — wraps tightly around content.
|
|
18
|
+
*
|
|
19
|
+
* `fill` — expands to available space and pushes trailing elements to the end.
|
|
20
|
+
* @default hug
|
|
21
|
+
*/
|
|
22
|
+
titleLayout?: AccordionItemHeaderTitleLayout;
|
|
23
|
+
/**
|
|
24
|
+
* Text shown when the accordion is collapsed. Rendered literally —
|
|
25
|
+
* translate at the call site if needed. When omitted, falls back to the
|
|
26
|
+
* `LabelProvider`'s translated `'open'` label.
|
|
27
|
+
*/
|
|
28
|
+
openText?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Text shown when the accordion is expanded. Rendered literally —
|
|
31
|
+
* translate at the call site if needed. When omitted, falls back to the
|
|
32
|
+
* `LabelProvider`'s translated `'close'` label.
|
|
33
|
+
*/
|
|
34
|
+
closeText?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Controls whether the expand/collapse label is shown.
|
|
37
|
+
* @default true
|
|
38
|
+
*/
|
|
39
|
+
showExpandLabel?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Controls whether the default expand/collapse action is shown.
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
44
|
+
showDefaultExpandAction?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Position of the expand action relative to the header content.
|
|
47
|
+
* @default end
|
|
48
|
+
*/
|
|
49
|
+
expandActionPosition?: AccordionItemHeaderExpandActionPosition;
|
|
50
|
+
/**
|
|
51
|
+
* Chevron style of the default expand action.
|
|
52
|
+
* Only effective when `headerClickable` is `false` (otherwise the
|
|
53
|
+
* default expand action isn't a `CollapseButton`) and `showExpandLabel`
|
|
54
|
+
* is `false` (only icon-only mode honours `arrowType` — see the
|
|
55
|
+
* `CollapseButton` docs).
|
|
56
|
+
* @default 'default'
|
|
57
|
+
*/
|
|
58
|
+
expandActionArrowType?: CollapseButtonArrowType;
|
|
59
|
+
/**
|
|
60
|
+
* Visual size of the default expand action. Only effective when
|
|
61
|
+
* `headerClickable` is `false`.
|
|
62
|
+
*
|
|
63
|
+
* When omitted, the size is derived from `showExpandLabel`:
|
|
64
|
+
* - `showExpandLabel === true` → `'default'`
|
|
65
|
+
* - `showExpandLabel === false` → `'small'` (icon-only mode reads
|
|
66
|
+
* better at the smaller chevron size).
|
|
67
|
+
*
|
|
68
|
+
* Pass an explicit value to override the derived default.
|
|
69
|
+
*/
|
|
70
|
+
expandActionSize?: CollapseButtonSize;
|
|
71
|
+
/**
|
|
72
|
+
* Use the inverted (light-on-dark) palette for the default expand
|
|
73
|
+
* action, for placement on a dark or brand background. Only effective
|
|
74
|
+
* when `headerClickable` is `false`.
|
|
75
|
+
* @default false
|
|
76
|
+
*/
|
|
77
|
+
expandActionInverted?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Whether the default expand action's label is underlined. Defaults to
|
|
80
|
+
* `false` so the chevron stays the sole affordance — an underlined
|
|
81
|
+
* label inside the accordion header reads as a stray link. Set to
|
|
82
|
+
* `true` for contexts that want link-style styling. Only effective
|
|
83
|
+
* when `headerClickable` is `false` and the expand action is not in
|
|
84
|
+
* icon-only mode (i.e. `showExpandLabel` is `true`).
|
|
85
|
+
* @default false
|
|
86
|
+
*/
|
|
87
|
+
expandActionUnderline?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Custom CSS class for the accordion header.
|
|
90
|
+
*/
|
|
91
|
+
headerClass?: string;
|
|
92
|
+
/**
|
|
93
|
+
* The accordion title content. Renders inside the header's title slot.
|
|
94
|
+
* Use a string for plain text, or a node for richer content.
|
|
95
|
+
*/
|
|
96
|
+
title?: React.ReactNode;
|
|
97
|
+
/**
|
|
98
|
+
* Custom content rendered before the title.
|
|
99
|
+
*/
|
|
100
|
+
beforeTitle?: React.ReactNode;
|
|
101
|
+
/**
|
|
102
|
+
* Custom content rendered after the title.
|
|
103
|
+
*/
|
|
104
|
+
afterTitle?: React.ReactNode;
|
|
105
|
+
/**
|
|
106
|
+
* Custom action elements rendered at the start of the header.
|
|
107
|
+
*/
|
|
108
|
+
startAction?: React.ReactNode;
|
|
109
|
+
/**
|
|
110
|
+
* Custom action elements rendered at the end of the header.
|
|
111
|
+
*/
|
|
112
|
+
endAction?: React.ReactNode;
|
|
113
|
+
/**
|
|
114
|
+
* Custom description content rendered below the title (start of the header).
|
|
115
|
+
*/
|
|
116
|
+
startDescription?: React.ReactNode;
|
|
117
|
+
/**
|
|
118
|
+
* Custom description content rendered at the end of the header.
|
|
119
|
+
*/
|
|
120
|
+
endDescription?: React.ReactNode;
|
|
121
|
+
/**
|
|
122
|
+
* When set, wraps the header trigger in a semantic `<h1>`–`<h6>` element
|
|
123
|
+
* following the WAI-ARIA Accordion Pattern. Improves accessibility for
|
|
124
|
+
* documents with a heading hierarchy (FAQ pages, docs). The wrapper uses
|
|
125
|
+
* `display: contents` so it doesn't affect the visual layout — it only adds
|
|
126
|
+
* semantic information for assistive technologies and TOC tools.
|
|
127
|
+
*/
|
|
128
|
+
headingLevel?: AccordionItemHeaderHeadingLevel;
|
|
129
|
+
}
|
|
130
|
+
export declare const AccordionItemHeader: {
|
|
131
|
+
(props: AccordionItemHeaderProps): JSX.Element;
|
|
132
|
+
displayName: string;
|
|
133
|
+
};
|
|
134
|
+
export default AccordionItemHeader;
|