@tedi-design-system/react 18.0.0-rc.16 → 18.0.0-rc.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/_virtual/index.es13.js +2 -2
  2. package/_virtual/index.es14.js +2 -2
  3. package/bundle-stats.html +1 -1
  4. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
  5. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
  6. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  7. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
  8. package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
  9. package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
  10. package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
  11. package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
  12. package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  13. package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
  14. package/external/prop-types/external/react-is/index.cjs.js +1 -1
  15. package/external/prop-types/external/react-is/index.es.js +1 -1
  16. package/external/react-is/index.cjs.js +1 -1
  17. package/external/react-is/index.es.js +1 -1
  18. package/external/toposort/index.cjs.js +1 -1
  19. package/external/toposort/index.es.js +1 -1
  20. package/index.css +1 -1
  21. package/package.json +1 -1
  22. package/src/community/components/accordion/accordion-item/accordion-item.d.ts +3 -0
  23. package/src/community/components/accordion/accordion-item-content/accordion-item-content.d.ts +3 -0
  24. package/src/community/components/accordion/accordion-item-header/accordion-item-header.d.ts +3 -0
  25. package/src/community/components/accordion/accordion.d.ts +3 -0
  26. package/src/tedi/components/buttons/card-button/card-button.cjs.js +1 -0
  27. package/src/tedi/components/buttons/card-button/card-button.d.ts +17 -0
  28. package/src/tedi/components/buttons/card-button/card-button.es.js +26 -0
  29. package/src/tedi/components/buttons/card-button/card-button.module.scss.cjs.js +1 -0
  30. package/src/tedi/components/buttons/card-button/card-button.module.scss.es.js +6 -0
  31. package/src/tedi/components/buttons/card-button/index.d.ts +1 -0
  32. package/src/tedi/components/buttons/collapse-button/collapse-button.cjs.js +1 -0
  33. package/src/tedi/components/buttons/collapse-button/collapse-button.d.ts +61 -0
  34. package/src/tedi/components/buttons/collapse-button/collapse-button.es.js +68 -0
  35. package/src/tedi/components/buttons/collapse-button/collapse-button.module.scss.cjs.js +1 -0
  36. package/src/tedi/components/buttons/collapse-button/collapse-button.module.scss.es.js +17 -0
  37. package/src/tedi/components/content/accordion/accordion-context.cjs.js +1 -0
  38. package/src/tedi/components/content/accordion/accordion-context.d.ts +27 -0
  39. package/src/tedi/components/content/accordion/accordion-context.es.js +6 -0
  40. package/src/tedi/components/content/accordion/accordion-item/accordion-item-context.cjs.js +1 -0
  41. package/src/tedi/components/content/accordion/accordion-item/accordion-item-context.d.ts +24 -0
  42. package/src/tedi/components/content/accordion/accordion-item/accordion-item-context.es.js +11 -0
  43. package/src/tedi/components/content/accordion/accordion-item/accordion-item.cjs.js +1 -0
  44. package/src/tedi/components/content/accordion/accordion-item/accordion-item.d.ts +76 -0
  45. package/src/tedi/components/content/accordion/accordion-item/accordion-item.es.js +70 -0
  46. package/src/tedi/components/content/accordion/accordion-item-content/accordion-item-content.cjs.js +1 -0
  47. package/src/tedi/components/content/accordion/accordion-item-content/accordion-item-content.d.ts +16 -0
  48. package/src/tedi/components/content/accordion/accordion-item-content/accordion-item-content.es.js +31 -0
  49. package/src/tedi/components/content/accordion/accordion-item-header/accordion-item-header.cjs.js +1 -0
  50. package/src/tedi/components/content/accordion/accordion-item-header/accordion-item-header.d.ts +134 -0
  51. package/src/tedi/components/content/accordion/accordion-item-header/accordion-item-header.es.js +127 -0
  52. package/src/tedi/components/content/accordion/accordion.cjs.js +1 -0
  53. package/src/tedi/components/content/accordion/accordion.d.ts +61 -0
  54. package/src/tedi/components/content/accordion/accordion.es.js +52 -0
  55. package/src/tedi/components/content/accordion/accordion.module.scss.cjs.js +1 -0
  56. package/src/tedi/components/content/accordion/accordion.module.scss.es.js +32 -0
  57. package/src/tedi/components/content/accordion/index.d.ts +6 -0
  58. package/src/tedi/index.d.ts +3 -0
  59. package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
  60. package/src/tedi/providers/label-provider/labels-map.es.js +2 -2
  61. package/tedi.cjs.js +1 -1
  62. package/tedi.es.js +301 -283
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tedi-design-system/react",
3
- "version": "18.0.0-rc.16",
3
+ "version": "18.0.0-rc.18",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -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;
@@ -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 i=require("react/jsx-runtime"),l=require("../../../../../external/classnames/index.cjs.js"),m=require("react"),b=require("./card-button.module.scss.cjs.js"),n=m.forwardRef((r,u)=>{const{as:a,children:s,className:d,...t}=r,e=a||"button",c=e==="button";return i.jsx(e,{"data-name":"card-button",...t,...c?{type:t.type??"button"}:{},ref:u,className:l.default(b.default["tedi-card-button"],d),children:s})});n.displayName="CardButton";const o=n;exports.CardButton=o;exports.default=o;
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+ import { PolymorphicComponentPropWithRef } from '../../../helpers/polymorphic/types';
3
+ export interface CardButtonBaseProps {
4
+ /**
5
+ * A single `<Card>` to render as the interactive surface. The host element provides the
6
+ * interaction semantics and applies the hover / active / focus / disabled states to the
7
+ * card and its blocks. Keep it to one card and avoid nested interactive elements.
8
+ */
9
+ children?: React.ReactNode;
10
+ /**
11
+ * Additional class name on the host element.
12
+ */
13
+ className?: string;
14
+ }
15
+ export type CardButtonProps<C extends React.ElementType = 'button'> = PolymorphicComponentPropWithRef<C, CardButtonBaseProps>;
16
+ export declare const CardButton: <C extends React.ElementType = "button">(props: CardButtonProps<C>) => React.ReactElement | null;
17
+ export default CardButton;
@@ -0,0 +1,26 @@
1
+ import { jsx as u } from "react/jsx-runtime";
2
+ import c from "../../../../../external/classnames/index.es.js";
3
+ import { forwardRef as d } from "react";
4
+ import i from "./card-button.module.scss.es.js";
5
+ const n = d(
6
+ (r, s) => {
7
+ const { as: a, children: e, className: m, ...t } = r, o = a || "button";
8
+ return /* @__PURE__ */ u(
9
+ o,
10
+ {
11
+ "data-name": "card-button",
12
+ ...t,
13
+ ...o === "button" ? { type: t.type ?? "button" } : {},
14
+ ref: s,
15
+ className: c(i["tedi-card-button"], m),
16
+ children: e
17
+ }
18
+ );
19
+ }
20
+ );
21
+ n.displayName = "CardButton";
22
+ const y = n;
23
+ export {
24
+ y as CardButton,
25
+ y as default
26
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-card-button":"tedi-card-button-57ad7420"};exports.default=e;
@@ -0,0 +1,6 @@
1
+ const t = {
2
+ "tedi-card-button": "tedi-card-button-57ad7420"
3
+ };
4
+ export {
5
+ t as default
6
+ };
@@ -0,0 +1 @@
1
+ export * from './card-button';
@@ -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,6 @@
1
+ import t from "react";
2
+ const o = t.createContext(null), n = () => t.useContext(o);
3
+ export {
4
+ o as AccordionContext,
5
+ n as useAccordionContext
6
+ };
@@ -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
+ };
@@ -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;
@@ -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;
@@ -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
+ };
@@ -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;