@tedi-design-system/react 18.0.0-rc.11 → 18.0.0-rc.12

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 (42) hide show
  1. package/bundle-stats.html +1 -1
  2. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
  3. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
  4. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  5. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
  6. package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
  7. package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
  8. package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
  9. package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
  10. package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  11. package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
  12. package/external/prop-types/external/react-is/index.cjs.js +1 -1
  13. package/external/prop-types/external/react-is/index.es.js +1 -1
  14. package/index.css +1 -1
  15. package/package.json +1 -1
  16. package/src/community/components/layout/footer/footer.d.ts +6 -0
  17. package/src/tedi/components/buttons/collapse/collapse.cjs.js +1 -1
  18. package/src/tedi/components/buttons/collapse/collapse.es.js +8 -7
  19. package/src/tedi/components/layout/footer/footer-body/footer-body.cjs.js +1 -0
  20. package/src/tedi/components/layout/footer/footer-body/footer-body.d.ts +30 -0
  21. package/src/tedi/components/layout/footer/footer-body/footer-body.es.js +28 -0
  22. package/src/tedi/components/layout/footer/footer-bottom/footer-bottom.cjs.js +1 -0
  23. package/src/tedi/components/layout/footer/footer-bottom/footer-bottom.d.ts +23 -0
  24. package/src/tedi/components/layout/footer/footer-bottom/footer-bottom.es.js +25 -0
  25. package/src/tedi/components/layout/footer/footer-context.cjs.js +1 -0
  26. package/src/tedi/components/layout/footer/footer-context.d.ts +23 -0
  27. package/src/tedi/components/layout/footer/footer-context.es.js +7 -0
  28. package/src/tedi/components/layout/footer/footer-section/footer-section.cjs.js +1 -0
  29. package/src/tedi/components/layout/footer/footer-section/footer-section.d.ts +48 -0
  30. package/src/tedi/components/layout/footer/footer-section/footer-section.es.js +65 -0
  31. package/src/tedi/components/layout/footer/footer-side/footer-side.cjs.js +1 -0
  32. package/src/tedi/components/layout/footer/footer-side/footer-side.d.ts +36 -0
  33. package/src/tedi/components/layout/footer/footer-side/footer-side.es.js +34 -0
  34. package/src/tedi/components/layout/footer/footer.cjs.js +1 -0
  35. package/src/tedi/components/layout/footer/footer.d.ts +56 -0
  36. package/src/tedi/components/layout/footer/footer.es.js +64 -0
  37. package/src/tedi/components/layout/footer/footer.module.scss.cjs.js +1 -0
  38. package/src/tedi/components/layout/footer/footer.module.scss.es.js +31 -0
  39. package/src/tedi/components/layout/footer/index.d.ts +5 -0
  40. package/src/tedi/index.d.ts +1 -0
  41. package/tedi.cjs.js +1 -1
  42. package/tedi.es.js +87 -77
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tedi-design-system/react",
3
- "version": "18.0.0-rc.11",
3
+ "version": "18.0.0-rc.12",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -8,6 +8,9 @@ export type FooterCategory = {
8
8
  heading: React.ReactNode;
9
9
  icon?: string | IconProps;
10
10
  };
11
+ /**
12
+ * @deprecated Use `Footer` from `@tedi-design-system/react/tedi` instead.
13
+ */
11
14
  export type FooterProps = {
12
15
  /**
13
16
  * Footer Categorys
@@ -30,5 +33,8 @@ export type FooterProps = {
30
33
  */
31
34
  bottomElement?: React.ReactNode;
32
35
  };
36
+ /**
37
+ * @deprecated Use `Footer` from `@tedi-design-system/react/tedi` instead.
38
+ */
33
39
  export declare const Footer: (props: FooterProps) => JSX.Element;
34
40
  export default Footer;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),n=require("../../../../../external/classnames/index.cjs.js"),_=require("react"),H=require("../../../../../external/react-animate-height/dist/esm/index.cjs.js"),J=require("../../../providers/printing-provider/printing-provider.cjs.js"),Q=require("../../base/icon/icon.cjs.js"),U=require("../../base/typography/text/text.cjs.js"),V=require("../../misc/print/print.cjs.js"),e=require("./collapse.module.scss.cjs.js"),W=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),X=require("../../../providers/label-provider/use-labels.cjs.js"),N=require("../../layout/grid/row.cjs.js"),i=require("../../layout/grid/col.cjs.js"),P=x=>{const{getCurrentBreakpointProps:k}=W.useBreakpointProps(x.defaultServerBreakpoint),{getLabel:h}=X.useLabels(),{id:r,children:w,className:O,openText:j=h("open"),closeText:y=h("close"),hideCollapseText:$=!1,title:d,titleRowProps:S,defaultOpen:B,open:c,onToggle:u,arrowType:s="default",size:o="default",underline:M=!0,toggleLabel:g,iconOnly:R=!1,controlsId:v,inverted:T=!1,...L}=k(x),b=v!==void 0,p=`${r}__trigger`,f=`${r}__content`,D=`${r}__animate`,[C,E]=_.useState(()=>B),m=J.usePrint(),a=_.useMemo(()=>m||(c!==void 0?c:C),[m,c,C]),z=R===!0&&!d,K=T&&s!=="secondary",A=n.default(e.default["tedi-collapse"],o==="small"&&e.default["tedi-collapse--small"],a&&e.default["tedi-collapse--is-open"],z&&e.default["tedi-collapse--icon-only"],K&&e.default["tedi-collapse--inverted"],e.default[`tedi-collapse--arrow-${s}`],O),q=()=>{const l=!a;E(l),u==null||u(l)},F=l=>{(l.key==="Enter"||l.key===" ")&&!l.repeat&&(l.preventDefault(),q())},G=g||(a?y:j),I=_.useMemo(()=>t.jsx("div",{id:f,role:"region","aria-labelledby":p,className:e.default["tedi-collapse__content"],children:w}),[w,f,p]);return t.jsxs("div",{"data-name":"collapse",...L,className:A,children:[t.jsx("button",{id:p,type:"button","data-name":"collapse-trigger",className:e.default["tedi-collapse__title"],"aria-label":G,"aria-expanded":a,"aria-controls":b?v:f,onKeyDown:F,onClick:q,children:t.jsxs(N.Row,{justifyContent:"between",alignItems:"center",wrap:"nowrap",...S,element:"span",children:[d&&t.jsx(i.Col,{"aria-hidden":"true",children:d}),t.jsx(i.Col,{width:"auto",children:t.jsxs(N.Row,{element:"span",alignItems:"center",gutter:0,wrap:"nowrap",children:[t.jsx(V.Print,{visibility:"hide",children:t.jsx(i.Col,{width:"auto",className:n.default({"visually-hidden":$}),children:t.jsx(U.Text,{element:"span",className:n.default(e.default["tedi-collapse__text"],{[e.default["tedi-collapse__text--underline"]]:M}),children:a?y:j})})}),t.jsx(i.Col,{width:"auto",children:t.jsx("div",{className:n.default(e.default["tedi-collapse__icon-wrapper"],e.default[`tedi-collapse__icon-wrapper--${s}`],o==="small"&&e.default["tedi-collapse__icon-wrapper--small"]),children:t.jsx(Q.Icon,{className:n.default(e.default["tedi-collapse__icon"],e.default[`tedi-collapse__icon--${s}`],o==="small"&&e.default["tedi-collapse__icon--small"]),name:"expand_more",size:o==="small"||s==="secondary"?18:24})})})]})})]})}),!b&&(m?I:t.jsx(H.default,{id:D,duration:300,height:a?"auto":0,"data-testid":"collapse-inner",children:I}))]})};exports.Collapse=P;exports.default=P;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),s=require("../../../../../external/classnames/index.cjs.js"),_=require("react"),H=require("../../../../../external/react-animate-height/dist/esm/index.cjs.js"),J=require("../../../providers/printing-provider/printing-provider.cjs.js"),Q=require("../../base/icon/icon.cjs.js"),U=require("../../base/typography/text/text.cjs.js"),V=require("../../misc/print/print.cjs.js"),e=require("./collapse.module.scss.cjs.js"),W=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),X=require("../../../providers/label-provider/use-labels.cjs.js"),N=require("../../layout/grid/row.cjs.js"),i=require("../../layout/grid/col.cjs.js"),P=x=>{const{getCurrentBreakpointProps:k}=W.useBreakpointProps(x.defaultServerBreakpoint),{getLabel:h}=X.useLabels(),{id:r,children:w,className:O,openText:j=h("open"),closeText:y=h("close"),hideCollapseText:$=!1,title:d,titleRowProps:S,defaultOpen:B,open:c,onToggle:u,arrowType:n="default",size:o="default",underline:M=!0,toggleLabel:g,iconOnly:R=!1,controlsId:v,inverted:T=!1,...L}=k(x),b=v!==void 0,p=`${r}__trigger`,f=`${r}__content`,D=`${r}__animate`,[C,E]=_.useState(()=>B),m=J.usePrint(),a=_.useMemo(()=>m||(c!==void 0?c:C),[m,c,C]),z=R===!0&&!d,K=T&&n!=="secondary",A=s.default(e.default["tedi-collapse"],o==="small"&&e.default["tedi-collapse--small"],a&&e.default["tedi-collapse--is-open"],z&&e.default["tedi-collapse--icon-only"],K&&e.default["tedi-collapse--inverted"],e.default[`tedi-collapse--arrow-${n}`],O),q=()=>{const l=!a;E(l),u==null||u(l)},F=l=>{(l.key==="Enter"||l.key===" ")&&!l.repeat&&(l.preventDefault(),q())},G=g||(a?y:j),I=_.useMemo(()=>t.jsx("div",{id:f,role:"region","aria-labelledby":p,className:e.default["tedi-collapse__content"],children:w}),[w,f,p]);return t.jsxs("div",{"data-name":"collapse",...L,className:A,children:[t.jsx("button",{id:p,type:"button","data-name":"collapse-trigger",className:e.default["tedi-collapse__title"],"aria-label":G,"aria-expanded":a,"aria-controls":b?v:f,onKeyDown:F,onClick:q,children:t.jsxs(N.Row,{justifyContent:"between",alignItems:"center",wrap:"nowrap",...S,element:"span",children:[d&&t.jsx(i.Col,{"aria-hidden":"true",children:d}),t.jsx(i.Col,{width:"auto",children:t.jsxs(N.Row,{element:"span",alignItems:"center",gutter:0,wrap:"nowrap",children:[t.jsx(V.Print,{visibility:"hide",children:t.jsx(i.Col,{width:"auto",className:s.default({"visually-hidden":$}),children:t.jsx(U.Text,{element:"span",className:s.default(e.default["tedi-collapse__text"],{[e.default["tedi-collapse__text--underline"]]:M}),children:a?y:j})})}),t.jsx(i.Col,{width:"auto",children:t.jsx("div",{className:s.default(e.default["tedi-collapse__icon-wrapper"],e.default[`tedi-collapse__icon-wrapper--${n}`],o==="small"&&e.default["tedi-collapse__icon-wrapper--small"]),children:t.jsx(Q.Icon,{className:s.default(e.default["tedi-collapse__icon"],e.default[`tedi-collapse__icon--${n}`],o==="small"&&e.default["tedi-collapse__icon--small"]),name:"expand_more",color:"inherit",size:o==="small"||n==="secondary"?18:24})})})]})})]})}),!b&&(m?I:t.jsx(H.default,{id:D,duration:300,height:a?"auto":0,"data-testid":"collapse-inner",children:I}))]})};exports.Collapse=P;exports.default=P;
@@ -1,6 +1,6 @@
1
- import { jsx as t, jsxs as f } from "react/jsx-runtime";
1
+ import { jsx as t, jsxs as h } from "react/jsx-runtime";
2
2
  import n from "../../../../../external/classnames/index.es.js";
3
- import h from "react";
3
+ import f from "react";
4
4
  import G from "../../../../../external/react-animate-height/dist/esm/index.es.js";
5
5
  import { usePrint as J } from "../../../providers/printing-provider/printing-provider.es.js";
6
6
  import { Icon as Q } from "../../base/icon/icon.es.js";
@@ -32,7 +32,7 @@ const pe = (w) => {
32
32
  controlsId: C,
33
33
  inverted: L = !1,
34
34
  ...M
35
- } = $(w), I = C !== void 0, m = `${r}__trigger`, u = `${r}__content`, R = `${r}__animate`, [N, z] = h.useState(() => j), _ = J(), o = h.useMemo(
35
+ } = $(w), I = C !== void 0, m = `${r}__trigger`, u = `${r}__content`, R = `${r}__animate`, [N, z] = f.useState(() => j), _ = J(), o = f.useMemo(
36
36
  () => _ || (d !== void 0 ? d : N),
37
37
  [_, d, N]
38
38
  ), K = E === !0 && !c, A = L && a !== "secondary", H = n(
@@ -48,11 +48,11 @@ const pe = (w) => {
48
48
  z(l), p == null || p(l);
49
49
  }, q = (l) => {
50
50
  (l.key === "Enter" || l.key === " ") && !l.repeat && (l.preventDefault(), k());
51
- }, F = b || (o ? x : v), O = h.useMemo(
51
+ }, F = b || (o ? x : v), O = f.useMemo(
52
52
  () => /* @__PURE__ */ t("div", { id: u, role: "region", "aria-labelledby": m, className: e["tedi-collapse__content"], children: g }),
53
53
  [g, u, m]
54
54
  );
55
- return /* @__PURE__ */ f("div", { "data-name": "collapse", ...M, className: H, children: [
55
+ return /* @__PURE__ */ h("div", { "data-name": "collapse", ...M, className: H, children: [
56
56
  /* @__PURE__ */ t(
57
57
  "button",
58
58
  {
@@ -65,9 +65,9 @@ const pe = (w) => {
65
65
  "aria-controls": I ? C : u,
66
66
  onKeyDown: q,
67
67
  onClick: k,
68
- children: /* @__PURE__ */ f(P, { justifyContent: "between", alignItems: "center", wrap: "nowrap", ...T, element: "span", children: [
68
+ children: /* @__PURE__ */ h(P, { justifyContent: "between", alignItems: "center", wrap: "nowrap", ...T, element: "span", children: [
69
69
  c && /* @__PURE__ */ t(s, { "aria-hidden": "true", children: c }),
70
- /* @__PURE__ */ t(s, { width: "auto", children: /* @__PURE__ */ f(P, { element: "span", alignItems: "center", gutter: 0, wrap: "nowrap", children: [
70
+ /* @__PURE__ */ t(s, { width: "auto", children: /* @__PURE__ */ h(P, { element: "span", alignItems: "center", gutter: 0, wrap: "nowrap", children: [
71
71
  /* @__PURE__ */ t(V, { visibility: "hide", children: /* @__PURE__ */ t(s, { width: "auto", className: n({ "visually-hidden": S }), children: /* @__PURE__ */ t(
72
72
  U,
73
73
  {
@@ -95,6 +95,7 @@ const pe = (w) => {
95
95
  i === "small" && e["tedi-collapse__icon--small"]
96
96
  ),
97
97
  name: "expand_more",
98
+ color: "inherit",
98
99
  size: i === "small" || a === "secondary" ? 18 : 24
99
100
  }
100
101
  )
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("react/jsx-runtime"),m=require("../../../../../../external/classnames/index.cjs.js"),p=require("react"),o=require("../footer.module.scss.cjs.js"),B=require("../footer-context.cjs.js"),b=require("../../../../helpers/hooks/use-breakpoint-props.cjs.js"),s=require("../../../../helpers/hooks/use-breakpoint.cjs.js"),t=r=>{const{getCurrentBreakpointProps:u}=b.useBreakpointProps(r.defaultServerBreakpoint),{children:a,className:d,columns:e}=u(r),l=s.useBreakpoint(),{mobileBreakpoint:c}=p.useContext(B.FooterContext),i=s.isBreakpointBelow(l,c),n=!i&&typeof e=="number"&&e>0;return f.jsx("div",{"data-name":"footer-body",className:m.default(o.default["tedi-footer-body"],{[o.default["tedi-footer-body--mobile"]]:i,[o.default["tedi-footer-body--grid"]]:n},d),style:n?{gridTemplateColumns:`repeat(${e}, minmax(0, 1fr))`}:void 0,children:a})};t.displayName="Footer.Body";exports.FooterBody=t;exports.default=t;
@@ -0,0 +1,30 @@
1
+ import { ReactNode } from 'react';
2
+ import { BreakpointSupport } from '../../../../helpers';
3
+ type FooterBodyBreakpointProps = {
4
+ /**
5
+ * Number of equal-width columns laid out per row, controllable per breakpoint via the
6
+ * `sm`/`md`/`lg`/`xl`/`xxl` keys. The keys are **mobile-first** — a value applies at that
7
+ * breakpoint and up — so raise the count as the viewport widens
8
+ * (e.g. `columns={2} md={{ columns: 3 }} lg={{ columns: 4 }}`). When set, the body uses a CSS grid
9
+ * of `columns` equal tracks; when omitted, columns are content-sized and spread with
10
+ * `space-between` (the default). Ignored below the footer's `mobileBreakpoint`, where the body
11
+ * always stacks into a single column.
12
+ */
13
+ columns?: number;
14
+ };
15
+ export interface FooterBodyProps extends BreakpointSupport<FooterBodyBreakpointProps> {
16
+ /**
17
+ * `<Footer.Section>` children. Other nodes render verbatim but won't pick up the
18
+ * mobile-collapse behaviour.
19
+ */
20
+ children: ReactNode;
21
+ /**
22
+ * Additional class name.
23
+ */
24
+ className?: string;
25
+ }
26
+ export declare const FooterBody: {
27
+ (props: FooterBodyProps): JSX.Element;
28
+ displayName: string;
29
+ };
30
+ export default FooterBody;
@@ -0,0 +1,28 @@
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ import l from "../../../../../../external/classnames/index.es.js";
3
+ import { useContext as f } from "react";
4
+ import e from "../footer.module.scss.es.js";
5
+ import { FooterContext as c } from "../footer-context.es.js";
6
+ import { useBreakpointProps as u } from "../../../../helpers/hooks/use-breakpoint-props.es.js";
7
+ import { useBreakpoint as y, isBreakpointBelow as b } from "../../../../helpers/hooks/use-breakpoint.es.js";
8
+ const B = (t) => {
9
+ const { getCurrentBreakpointProps: s } = u(t.defaultServerBreakpoint), { children: m, className: a, columns: o } = s(t), n = y(), { mobileBreakpoint: d } = f(c), r = b(n, d), i = !r && typeof o == "number" && o > 0;
10
+ return /* @__PURE__ */ p(
11
+ "div",
12
+ {
13
+ "data-name": "footer-body",
14
+ className: l(
15
+ e["tedi-footer-body"],
16
+ { [e["tedi-footer-body--mobile"]]: r, [e["tedi-footer-body--grid"]]: i },
17
+ a
18
+ ),
19
+ style: i ? { gridTemplateColumns: `repeat(${o}, minmax(0, 1fr))` } : void 0,
20
+ children: m
21
+ }
22
+ );
23
+ };
24
+ B.displayName = "Footer.Body";
25
+ export {
26
+ B as FooterBody,
27
+ B as default
28
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),p=require("../../../../../../external/classnames/index.cjs.js"),o=require("react"),r=require("../footer.module.scss.cjs.js"),x=require("../footer-context.cjs.js"),d=require("../../../../helpers/hooks/use-breakpoint.cjs.js"),s=({children:a,separator:u=!1,className:m})=>{const c=d.useBreakpoint(),{mobileBreakpoint:f,maxWidth:n}=o.useContext(x.FooterContext),b=d.isBreakpointBelow(c,f),i=u?o.Children.toArray(a).filter(e=>o.isValidElement(e)||e):null;return t.jsx("div",{"data-name":"footer-bottom",className:p.default(r.default["tedi-footer-bottom"],{[r.default["tedi-footer-bottom--mobile"]]:b},m),children:t.jsx("div",{className:r.default["tedi-footer-bottom__inner"],style:n!==void 0?{maxWidth:n}:void 0,children:i?i.map((e,l)=>t.jsxs(o.Fragment,{children:[e,l<i.length-1&&t.jsx("span",{className:r.default["tedi-footer-bottom__dot"],"aria-hidden":"true"})]},l)):a})})};s.displayName="Footer.Bottom";exports.FooterBottom=s;exports.default=s;
@@ -0,0 +1,23 @@
1
+ import { ReactNode } from 'react';
2
+ export interface FooterBottomProps {
3
+ /**
4
+ * Bottom-row content — typically a sequence of `<Link>` elements. On mobile the gap shrinks
5
+ * and items wrap to multiple lines.
6
+ */
7
+ children: ReactNode;
8
+ /**
9
+ * Insert a small dot between items (matches the Figma "with separator" bottom variant). When
10
+ * `false`, items are spaced only by the flex `gap`.
11
+ * @default false
12
+ */
13
+ separator?: boolean;
14
+ /**
15
+ * Additional class name on the bottom strip.
16
+ */
17
+ className?: string;
18
+ }
19
+ export declare const FooterBottom: {
20
+ ({ children, separator, className }: FooterBottomProps): JSX.Element;
21
+ displayName: string;
22
+ };
23
+ export default FooterBottom;
@@ -0,0 +1,25 @@
1
+ import { jsx as r, jsxs as p } from "react/jsx-runtime";
2
+ import c from "../../../../../../external/classnames/index.es.js";
3
+ import { useContext as b, Children as u, isValidElement as B, Fragment as h } from "react";
4
+ import t from "../footer.module.scss.es.js";
5
+ import { FooterContext as x } from "../footer-context.es.js";
6
+ import { useBreakpoint as N, isBreakpointBelow as k } from "../../../../helpers/hooks/use-breakpoint.es.js";
7
+ const v = ({ children: i, separator: a = !1, className: n }) => {
8
+ const l = N(), { mobileBreakpoint: d, maxWidth: m } = b(x), f = k(l, d), e = a ? u.toArray(i).filter((o) => B(o) || o) : null;
9
+ return /* @__PURE__ */ r(
10
+ "div",
11
+ {
12
+ "data-name": "footer-bottom",
13
+ className: c(t["tedi-footer-bottom"], { [t["tedi-footer-bottom--mobile"]]: f }, n),
14
+ children: /* @__PURE__ */ r("div", { className: t["tedi-footer-bottom__inner"], style: m !== void 0 ? { maxWidth: m } : void 0, children: e ? e.map((o, s) => /* @__PURE__ */ p(h, { children: [
15
+ o,
16
+ s < e.length - 1 && /* @__PURE__ */ r("span", { className: t["tedi-footer-bottom__dot"], "aria-hidden": "true" })
17
+ ] }, s)) : i })
18
+ }
19
+ );
20
+ };
21
+ v.displayName = "Footer.Bottom";
22
+ export {
23
+ v as FooterBottom,
24
+ v as default
25
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=e.createContext({mobileBreakpoint:"sm"});exports.FooterContext=t;
@@ -0,0 +1,23 @@
1
+ import { Breakpoint } from '../../../helpers';
2
+ export interface FooterContextValue {
3
+ /**
4
+ * Viewport breakpoint at and below which every Footer subcomponent
5
+ * (`Footer.Body`, `Footer.Bottom`, `Footer.Side`, `Footer.Section`)
6
+ * switches to its stacked mobile layout — accordion sections, stacked
7
+ * sides, wrapped bottom strip.
8
+ *
9
+ * Set on `<Footer mobileBreakpoint="…">`. Subcomponents read from this
10
+ * context so all five sites agree on the threshold; without it they'd
11
+ * each hardcode their own value and drift apart on intermediate
12
+ * viewports (e.g. tablet 600–760px).
13
+ */
14
+ mobileBreakpoint: Breakpoint;
15
+ /**
16
+ * Optional cap for the inner content width (the column row and the bottom
17
+ * strip's content), centered inside the full-bleed backgrounds. Set on
18
+ * `<Footer maxWidth="…">`; subcomponents read it so the body row and the
19
+ * bottom strip align to the same width.
20
+ */
21
+ maxWidth?: number | string;
22
+ }
23
+ export declare const FooterContext: import('react').Context<FooterContextValue>;
@@ -0,0 +1,7 @@
1
+ import { createContext as o } from "react";
2
+ const e = o({
3
+ mobileBreakpoint: "sm"
4
+ });
5
+ export {
6
+ e as FooterContext
7
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),d=require("../../../../../../external/classnames/index.cjs.js"),u=require("react"),g=require("../../../base/icon/icon.cjs.js"),q=require("../../../base/typography/heading/heading.cjs.js"),b=require("../../../buttons/collapse/collapse.cjs.js"),t=require("../footer.module.scss.cjs.js"),v=require("../footer-context.cjs.js"),s=require("../../../../helpers/hooks/use-breakpoint.cjs.js"),i=({heading:o,icon:n,collapsible:f=!1,defaultOpen:p=!1,iconBreakpoint:m="lg",children:r,className:_})=>{const l=s.useBreakpoint(),{mobileBreakpoint:x}=u.useContext(v.FooterContext),c=s.isBreakpointBelow(l,x),j=s.isBreakpointBelow(l,m),a=f&&c,h=u.useId();return e.jsxs("div",{"data-name":"footer-section",className:d.default(t.default["tedi-footer-section"],{[t.default["tedi-footer-section--collapsible"]]:a},_),children:[n&&!j&&e.jsx("span",{className:t.default["tedi-footer-section__icon"],children:e.jsx(g.Icon,{name:n,color:"white",size:24})}),e.jsx("div",{className:d.default(t.default["tedi-footer-section__container"],{[t.default["tedi-footer-section__container--mobile"]]:c}),children:a?e.jsx(b.Collapse,{id:`tedi-footer-section-${h}`,title:e.jsx(q.Heading,{element:"h6",color:"white",children:o}),size:"small",inverted:!0,hideCollapseText:!0,defaultOpen:p,toggleLabel:typeof o=="string"?o:void 0,className:t.default["tedi-footer-section__collapse"],titleRowProps:{gutter:0},children:e.jsx("div",{className:t.default["tedi-footer-section__content-inner"],children:r})}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{className:t.default["tedi-footer-section__heading"],children:o}),e.jsx("div",{className:t.default["tedi-footer-section__content"],children:r})]})})]})};i.displayName="Footer.Section";exports.FooterSection=i;exports.default=i;
@@ -0,0 +1,48 @@
1
+ import { ReactNode } from 'react';
2
+ import { Breakpoint } from '../../../../helpers';
3
+ export interface FooterSectionProps {
4
+ /**
5
+ * Section heading text. Rendered as `<strong>` on desktop or as the trigger label of a
6
+ * `<Collapse>` on mobile (when `collapsible` is true).
7
+ */
8
+ heading: ReactNode;
9
+ /**
10
+ * Optional Material Symbols icon name shown in a circular tinted background next to
11
+ * the heading on desktop. Automatically hidden below the `lg` breakpoint to save space.
12
+ */
13
+ icon?: string;
14
+ /**
15
+ * When `true`, the section's link list collapses into an accordion below the
16
+ * footer's `mobileBreakpoint` (`sm` by default) — the heading turns into a
17
+ * toggle button (wired via the shared `<Collapse>` component for keyboard,
18
+ * focus, and aria-expanded handling). Desktop layout is unaffected.
19
+ * @default false
20
+ */
21
+ collapsible?: boolean;
22
+ /**
23
+ * Initial open state of the collapse — only relevant when `collapsible` is true and the
24
+ * viewport is below the footer's mobile breakpoint.
25
+ * @default false
26
+ */
27
+ defaultOpen?: boolean;
28
+ /**
29
+ * Viewport breakpoint at and below which the section's icon is hidden to save
30
+ * horizontal space. Separate from the footer-wide `mobileBreakpoint` because
31
+ * icons are typically dropped one tier earlier than the layout flips.
32
+ * @default lg
33
+ */
34
+ iconBreakpoint?: Breakpoint;
35
+ /**
36
+ * Section content — typically a sequence of `<Link>` elements.
37
+ */
38
+ children: ReactNode;
39
+ /**
40
+ * Additional class name on the section root.
41
+ */
42
+ className?: string;
43
+ }
44
+ export declare const FooterSection: {
45
+ ({ heading, icon, collapsible, defaultOpen, iconBreakpoint, children, className, }: FooterSectionProps): JSX.Element;
46
+ displayName: string;
47
+ };
48
+ export default FooterSection;
@@ -0,0 +1,65 @@
1
+ import { jsxs as c, jsx as o, Fragment as b } from "react/jsx-runtime";
2
+ import a from "../../../../../../external/classnames/index.es.js";
3
+ import { useContext as g, useId as v } from "react";
4
+ import { Icon as x } from "../../../base/icon/icon.es.js";
5
+ import { Heading as C } from "../../../base/typography/heading/heading.es.js";
6
+ import { Collapse as k } from "../../../buttons/collapse/collapse.es.js";
7
+ import e from "../footer.module.scss.es.js";
8
+ import { FooterContext as w } from "../footer-context.es.js";
9
+ import { useBreakpoint as y, isBreakpointBelow as m } from "../../../../helpers/hooks/use-breakpoint.es.js";
10
+ const B = ({
11
+ heading: t,
12
+ icon: i,
13
+ collapsible: d = !1,
14
+ defaultOpen: p = !1,
15
+ iconBreakpoint: f = "lg",
16
+ children: s,
17
+ className: _
18
+ }) => {
19
+ const r = y(), { mobileBreakpoint: h } = g(w), n = m(r, h), N = m(r, f), l = d && n, u = v();
20
+ return /* @__PURE__ */ c(
21
+ "div",
22
+ {
23
+ "data-name": "footer-section",
24
+ className: a(
25
+ e["tedi-footer-section"],
26
+ { [e["tedi-footer-section--collapsible"]]: l },
27
+ _
28
+ ),
29
+ children: [
30
+ i && !N && /* @__PURE__ */ o("span", { className: e["tedi-footer-section__icon"], children: /* @__PURE__ */ o(x, { name: i, color: "white", size: 24 }) }),
31
+ /* @__PURE__ */ o(
32
+ "div",
33
+ {
34
+ className: a(e["tedi-footer-section__container"], {
35
+ [e["tedi-footer-section__container--mobile"]]: n
36
+ }),
37
+ children: l ? /* @__PURE__ */ o(
38
+ k,
39
+ {
40
+ id: `tedi-footer-section-${u}`,
41
+ title: /* @__PURE__ */ o(C, { element: "h6", color: "white", children: t }),
42
+ size: "small",
43
+ inverted: !0,
44
+ hideCollapseText: !0,
45
+ defaultOpen: p,
46
+ toggleLabel: typeof t == "string" ? t : void 0,
47
+ className: e["tedi-footer-section__collapse"],
48
+ titleRowProps: { gutter: 0 },
49
+ children: /* @__PURE__ */ o("div", { className: e["tedi-footer-section__content-inner"], children: s })
50
+ }
51
+ ) : /* @__PURE__ */ c(b, { children: [
52
+ /* @__PURE__ */ o("strong", { className: e["tedi-footer-section__heading"], children: t }),
53
+ /* @__PURE__ */ o("div", { className: e["tedi-footer-section__content"], children: s })
54
+ ] })
55
+ }
56
+ )
57
+ ]
58
+ }
59
+ );
60
+ };
61
+ B.displayName = "Footer.Section";
62
+ export {
63
+ B as FooterSection,
64
+ B as default
65
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const p=require("react/jsx-runtime"),f=require("../../../../../../external/classnames/index.cjs.js"),m=require("react"),e=require("../footer.module.scss.cjs.js"),k=require("../footer-context.cjs.js"),B=require("../../../../helpers/hooks/use-breakpoint-props.cjs.js"),r=require("../../../../helpers/hooks/use-breakpoint.cjs.js"),t=o=>{const{getCurrentBreakpointProps:i}=B.useBreakpointProps(o.defaultServerBreakpoint),s=r.useBreakpoint(),{mobileBreakpoint:n}=m.useContext(k.FooterContext),a=r.isBreakpointBelow(s,n),{placement:u="start",position:d="center",children:c,className:l}=i(o,{placement:"start",position:"center"});return p.jsx("div",{"data-name":"footer-side",className:f.default(e.default["tedi-footer-side"],e.default[`tedi-footer-side--${u}`],e.default[`tedi-footer-side--vertical-${d}`],{[e.default["tedi-footer-side--mobile"]]:a},l),children:c})};t.displayName="Footer.Side";exports.FooterSide=t;exports.default=t;
@@ -0,0 +1,36 @@
1
+ import { ReactNode } from 'react';
2
+ import { BreakpointSupport } from '../../../../helpers';
3
+ export type FooterSidePlacement = 'start' | 'end';
4
+ export type FooterSidePosition = 'start' | 'center' | 'end';
5
+ export interface FooterSideBaseProps {
6
+ /**
7
+ * Where the side slot sits relative to `<Footer.Body>`. `'start'` renders before the body
8
+ * (left on LTR, and first — above the sections — once the footer stacks on mobile); `'end'`
9
+ * renders after the body (right on LTR, and last — below the sections — when stacked).
10
+ *
11
+ * Accepts breakpoint props, so the logo can sit on the side on desktop and drop to the bottom
12
+ * on mobile — e.g. `placement="end" sm={{ placement: 'start' }}` keeps the logo on the left
13
+ * from `sm` up and moves it to the last position once the footer collapses to its stacked layout.
14
+ * @default start
15
+ */
16
+ placement?: FooterSidePlacement;
17
+ /**
18
+ * Vertical alignment of the contents inside the side slot. Accepts breakpoint props.
19
+ * @default center
20
+ */
21
+ position?: FooterSidePosition;
22
+ /**
23
+ * Side content — typically a `<img>` logo.
24
+ */
25
+ children: ReactNode;
26
+ /**
27
+ * Additional class name on the side wrapper.
28
+ */
29
+ className?: string;
30
+ }
31
+ export type FooterSideProps = BreakpointSupport<FooterSideBaseProps>;
32
+ export declare const FooterSide: {
33
+ (props: FooterSideProps): JSX.Element;
34
+ displayName: string;
35
+ };
36
+ export default FooterSide;
@@ -0,0 +1,34 @@
1
+ import { jsx as d } from "react/jsx-runtime";
2
+ import c from "../../../../../../external/classnames/index.es.js";
3
+ import { useContext as l } from "react";
4
+ import e from "../footer.module.scss.es.js";
5
+ import { FooterContext as f } from "../footer-context.es.js";
6
+ import { useBreakpointProps as k } from "../../../../helpers/hooks/use-breakpoint-props.es.js";
7
+ import { useBreakpoint as u, isBreakpointBelow as B } from "../../../../helpers/hooks/use-breakpoint.es.js";
8
+ const b = (o) => {
9
+ const { getCurrentBreakpointProps: t } = k(o.defaultServerBreakpoint), r = u(), { mobileBreakpoint: i } = l(f), s = B(r, i), {
10
+ placement: a = "start",
11
+ position: n = "center",
12
+ children: m,
13
+ className: p
14
+ } = t(o, { placement: "start", position: "center" });
15
+ return /* @__PURE__ */ d(
16
+ "div",
17
+ {
18
+ "data-name": "footer-side",
19
+ className: c(
20
+ e["tedi-footer-side"],
21
+ e[`tedi-footer-side--${a}`],
22
+ e[`tedi-footer-side--vertical-${n}`],
23
+ { [e["tedi-footer-side--mobile"]]: s },
24
+ p
25
+ ),
26
+ children: m
27
+ }
28
+ );
29
+ };
30
+ b.displayName = "Footer.Side";
31
+ export {
32
+ b as FooterSide,
33
+ b as default
34
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),p=require("../../../../../external/classnames/index.cjs.js"),l=require("react"),n=require("./footer.module.scss.cjs.js"),B=require("./footer-body/footer-body.cjs.js"),q=require("./footer-bottom/footer-bottom.cjs.js"),g=require("./footer-context.cjs.js"),k=require("./footer-section/footer-section.cjs.js"),F=require("./footer-side/footer-side.cjs.js"),m=require("../../../helpers/hooks/use-breakpoint.cjs.js"),P=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),o=({children:y,className:v,mobileBreakpoint:s="sm",maxWidth:t})=>{const S=m.useBreakpoint(),_=m.isBreakpointBelow(S,s),{getCurrentBreakpointProps:j}=P.useBreakpointProps(),x=l.useMemo(()=>({mobileBreakpoint:s,maxWidth:t}),[s,t]),c=[],d=[];let u=null,f=null;const i=[];return l.Children.forEach(y,e=>{if(!l.isValidElement(e)){e!=null&&e!==!1&&i.push(e);return}const a=e.type;if(a===F.FooterSide){const{placement:b="start"}=j(e.props);(b==="end"?d:c).push(e);return}if(a===B.FooterBody){u=e;return}if(a===q.FooterBottom){f=e;return}i.push(e)}),r.jsx(g.FooterContext.Provider,{value:x,children:r.jsxs("footer",{"data-name":"footer",className:p.default(n.default["tedi-footer"],v),children:[r.jsxs("div",{className:p.default(n.default["tedi-footer__container"],{[n.default["tedi-footer__container--mobile"]]:_}),style:t!==void 0?{maxWidth:t,marginInline:"auto"}:void 0,children:[c,u!==null&&r.jsx("div",{className:n.default["tedi-footer__center"],children:u}),i,d]}),f]})})};o.Side=F.FooterSide;o.Body=B.FooterBody;o.Section=k.FooterSection;o.Bottom=q.FooterBottom;o.displayName="Footer";exports.Footer=o;exports.default=o;
@@ -0,0 +1,56 @@
1
+ import { ReactNode } from 'react';
2
+ import { Breakpoint } from '../../../helpers';
3
+ import { FooterSideProps } from './footer-side/footer-side';
4
+ export interface FooterProps {
5
+ /**
6
+ * `<Footer.Side>`, `<Footer.Body>` (with `<Footer.Section>` children), and `<Footer.Bottom>` slots.
7
+ *
8
+ * Recognised arrangement:
9
+ * 1. Zero or more `<Footer.Side placement="start">` elements (logos on the left).
10
+ * 2. Exactly one `<Footer.Body>`.
11
+ * 3. Zero or more `<Footer.Side placement="end">` elements (logos on the right).
12
+ * 4. Optional `<Footer.Bottom>` rendered below the main row as a strip with separator dots.
13
+ *
14
+ * Other nodes are rendered verbatim where the consumer placed them.
15
+ */
16
+ children: ReactNode;
17
+ /**
18
+ * Viewport breakpoint at and below which the footer switches to its stacked
19
+ * mobile layout — sections collapse into accordions, sides stack, the bottom
20
+ * strip wraps. Propagated to every Footer subcomponent via context so they
21
+ * agree on the threshold.
22
+ * @default sm
23
+ */
24
+ mobileBreakpoint?: Breakpoint;
25
+ /**
26
+ * Caps the inner content — the column row and the bottom strip's content — to a maximum width
27
+ * and centers it, while the dark backgrounds stay full-bleed. Pass any CSS length (e.g. `1280`,
28
+ * `'1280px'`, `'80rem'`). Omit to let the content fill the full width (with the 40px padding).
29
+ */
30
+ maxWidth?: number | string;
31
+ /**
32
+ * Additional class name on the `<footer>` root.
33
+ */
34
+ className?: string;
35
+ }
36
+ export declare const Footer: {
37
+ ({ children, className, mobileBreakpoint, maxWidth }: FooterProps): JSX.Element;
38
+ Side: {
39
+ (props: FooterSideProps): JSX.Element;
40
+ displayName: string;
41
+ };
42
+ Body: {
43
+ (props: import('./footer-body/footer-body').FooterBodyProps): JSX.Element;
44
+ displayName: string;
45
+ };
46
+ Section: {
47
+ ({ heading, icon, collapsible, defaultOpen, iconBreakpoint, children, className, }: import('./footer-section/footer-section').FooterSectionProps): JSX.Element;
48
+ displayName: string;
49
+ };
50
+ Bottom: {
51
+ ({ children, separator, className }: import('./footer-bottom/footer-bottom').FooterBottomProps): JSX.Element;
52
+ displayName: string;
53
+ };
54
+ displayName: string;
55
+ };
56
+ export default Footer;
@@ -0,0 +1,64 @@
1
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
2
+ import c from "../../../../../external/classnames/index.es.js";
3
+ import { useMemo as k, Children as C, isValidElement as P } from "react";
4
+ import r from "./footer.module.scss.es.js";
5
+ import { FooterBody as d } from "./footer-body/footer-body.es.js";
6
+ import { FooterBottom as y } from "./footer-bottom/footer-bottom.es.js";
7
+ import { FooterContext as j } from "./footer-context.es.js";
8
+ import { FooterSection as x } from "./footer-section/footer-section.es.js";
9
+ import { FooterSide as v } from "./footer-side/footer-side.es.js";
10
+ import { useBreakpoint as E, isBreakpointBelow as M } from "../../../helpers/hooks/use-breakpoint.es.js";
11
+ import { useBreakpointProps as V } from "../../../helpers/hooks/use-breakpoint-props.es.js";
12
+ const t = ({ children: B, className: F, mobileBreakpoint: n = "sm", maxWidth: e }) => {
13
+ const _ = E(), N = M(_, n), { getCurrentBreakpointProps: S } = V(), b = k(
14
+ () => ({ mobileBreakpoint: n, maxWidth: e }),
15
+ [n, e]
16
+ ), a = [], p = [];
17
+ let s = null, f = null;
18
+ const i = [];
19
+ return C.forEach(B, (o) => {
20
+ if (!P(o)) {
21
+ o != null && o !== !1 && i.push(o);
22
+ return;
23
+ }
24
+ const m = o.type;
25
+ if (m === v) {
26
+ const { placement: g = "start" } = S(o.props);
27
+ (g === "end" ? p : a).push(o);
28
+ return;
29
+ }
30
+ if (m === d) {
31
+ s = o;
32
+ return;
33
+ }
34
+ if (m === y) {
35
+ f = o;
36
+ return;
37
+ }
38
+ i.push(o);
39
+ }), /* @__PURE__ */ l(j.Provider, { value: b, children: /* @__PURE__ */ u("footer", { "data-name": "footer", className: c(r["tedi-footer"], F), children: [
40
+ /* @__PURE__ */ u(
41
+ "div",
42
+ {
43
+ className: c(r["tedi-footer__container"], { [r["tedi-footer__container--mobile"]]: N }),
44
+ style: e !== void 0 ? { maxWidth: e, marginInline: "auto" } : void 0,
45
+ children: [
46
+ a,
47
+ s !== null && /* @__PURE__ */ l("div", { className: r["tedi-footer__center"], children: s }),
48
+ i,
49
+ p
50
+ ]
51
+ }
52
+ ),
53
+ f
54
+ ] }) });
55
+ };
56
+ t.Side = v;
57
+ t.Body = d;
58
+ t.Section = x;
59
+ t.Bottom = y;
60
+ t.displayName = "Footer";
61
+ export {
62
+ t as Footer,
63
+ t as default
64
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-footer":"tedi-footer-f088bd56","tedi-footer__container":"tedi-footer__container-ee64c062","tedi-footer__container--mobile":"tedi-footer__container--mobile-20a477c0","tedi-footer__center":"tedi-footer__center-25181d1f","tedi-footer-body":"tedi-footer-body-21881fd3","tedi-footer-body--grid":"tedi-footer-body--grid-a3777db4","tedi-footer-body--mobile":"tedi-footer-body--mobile-3310507d","tedi-footer-section":"tedi-footer-section-5b630c85","tedi-footer-section--collapsible":"tedi-footer-section--collapsible-8adbd143","tedi-footer-section__icon":"tedi-footer-section__icon-9c09e5d8","tedi-footer-section__container":"tedi-footer-section__container-3527098d","tedi-footer-section__container--mobile":"tedi-footer-section__container--mobile-a2563a40","tedi-footer-section__content":"tedi-footer-section__content-b2dc3f8b","tedi-footer-section__content-inner":"tedi-footer-section__content-inner-edb818fc","tedi-footer-section__heading":"tedi-footer-section__heading-fef39ed8","tedi-footer-section__collapse":"tedi-footer-section__collapse-ef9ed5bc","tedi-footer-side":"tedi-footer-side-f51f8e61","tedi-footer-side--vertical-start":"tedi-footer-side--vertical-start-50a9b280","tedi-footer-side--vertical-end":"tedi-footer-side--vertical-end-0da54b78","tedi-footer-side--start":"tedi-footer-side--start-4d4d7a07","tedi-footer-side--end":"tedi-footer-side--end-f24367c3","tedi-footer-side--mobile":"tedi-footer-side--mobile-31b9b02e","tedi-footer-bottom":"tedi-footer-bottom-f3128374","tedi-footer-bottom__inner":"tedi-footer-bottom__inner-9d79617c","tedi-footer-bottom--mobile":"tedi-footer-bottom--mobile-6510a7e3","tedi-footer-bottom__dot":"tedi-footer-bottom__dot-a7f48402"};exports.default=e;
@@ -0,0 +1,31 @@
1
+ const e = {
2
+ "tedi-footer": "tedi-footer-f088bd56",
3
+ "tedi-footer__container": "tedi-footer__container-ee64c062",
4
+ "tedi-footer__container--mobile": "tedi-footer__container--mobile-20a477c0",
5
+ "tedi-footer__center": "tedi-footer__center-25181d1f",
6
+ "tedi-footer-body": "tedi-footer-body-21881fd3",
7
+ "tedi-footer-body--grid": "tedi-footer-body--grid-a3777db4",
8
+ "tedi-footer-body--mobile": "tedi-footer-body--mobile-3310507d",
9
+ "tedi-footer-section": "tedi-footer-section-5b630c85",
10
+ "tedi-footer-section--collapsible": "tedi-footer-section--collapsible-8adbd143",
11
+ "tedi-footer-section__icon": "tedi-footer-section__icon-9c09e5d8",
12
+ "tedi-footer-section__container": "tedi-footer-section__container-3527098d",
13
+ "tedi-footer-section__container--mobile": "tedi-footer-section__container--mobile-a2563a40",
14
+ "tedi-footer-section__content": "tedi-footer-section__content-b2dc3f8b",
15
+ "tedi-footer-section__content-inner": "tedi-footer-section__content-inner-edb818fc",
16
+ "tedi-footer-section__heading": "tedi-footer-section__heading-fef39ed8",
17
+ "tedi-footer-section__collapse": "tedi-footer-section__collapse-ef9ed5bc",
18
+ "tedi-footer-side": "tedi-footer-side-f51f8e61",
19
+ "tedi-footer-side--vertical-start": "tedi-footer-side--vertical-start-50a9b280",
20
+ "tedi-footer-side--vertical-end": "tedi-footer-side--vertical-end-0da54b78",
21
+ "tedi-footer-side--start": "tedi-footer-side--start-4d4d7a07",
22
+ "tedi-footer-side--end": "tedi-footer-side--end-f24367c3",
23
+ "tedi-footer-side--mobile": "tedi-footer-side--mobile-31b9b02e",
24
+ "tedi-footer-bottom": "tedi-footer-bottom-f3128374",
25
+ "tedi-footer-bottom__inner": "tedi-footer-bottom__inner-9d79617c",
26
+ "tedi-footer-bottom--mobile": "tedi-footer-bottom--mobile-6510a7e3",
27
+ "tedi-footer-bottom__dot": "tedi-footer-bottom__dot-a7f48402"
28
+ };
29
+ export {
30
+ e as default
31
+ };
@@ -0,0 +1,5 @@
1
+ export * from './footer';
2
+ export * from './footer-body/footer-body';
3
+ export * from './footer-bottom/footer-bottom';
4
+ export * from './footer-section/footer-section';
5
+ export * from './footer-side/footer-side';