@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.
- package/bundle-stats.html +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
- package/external/prop-types/external/react-is/index.cjs.js +1 -1
- package/external/prop-types/external/react-is/index.es.js +1 -1
- package/index.css +1 -1
- package/package.json +1 -1
- package/src/community/components/layout/footer/footer.d.ts +6 -0
- package/src/tedi/components/buttons/collapse/collapse.cjs.js +1 -1
- package/src/tedi/components/buttons/collapse/collapse.es.js +8 -7
- package/src/tedi/components/layout/footer/footer-body/footer-body.cjs.js +1 -0
- package/src/tedi/components/layout/footer/footer-body/footer-body.d.ts +30 -0
- package/src/tedi/components/layout/footer/footer-body/footer-body.es.js +28 -0
- package/src/tedi/components/layout/footer/footer-bottom/footer-bottom.cjs.js +1 -0
- package/src/tedi/components/layout/footer/footer-bottom/footer-bottom.d.ts +23 -0
- package/src/tedi/components/layout/footer/footer-bottom/footer-bottom.es.js +25 -0
- package/src/tedi/components/layout/footer/footer-context.cjs.js +1 -0
- package/src/tedi/components/layout/footer/footer-context.d.ts +23 -0
- package/src/tedi/components/layout/footer/footer-context.es.js +7 -0
- package/src/tedi/components/layout/footer/footer-section/footer-section.cjs.js +1 -0
- package/src/tedi/components/layout/footer/footer-section/footer-section.d.ts +48 -0
- package/src/tedi/components/layout/footer/footer-section/footer-section.es.js +65 -0
- package/src/tedi/components/layout/footer/footer-side/footer-side.cjs.js +1 -0
- package/src/tedi/components/layout/footer/footer-side/footer-side.d.ts +36 -0
- package/src/tedi/components/layout/footer/footer-side/footer-side.es.js +34 -0
- package/src/tedi/components/layout/footer/footer.cjs.js +1 -0
- package/src/tedi/components/layout/footer/footer.d.ts +56 -0
- package/src/tedi/components/layout/footer/footer.es.js +64 -0
- package/src/tedi/components/layout/footer/footer.module.scss.cjs.js +1 -0
- package/src/tedi/components/layout/footer/footer.module.scss.es.js +31 -0
- package/src/tedi/components/layout/footer/index.d.ts +5 -0
- package/src/tedi/index.d.ts +1 -0
- package/tedi.cjs.js +1 -1
- package/tedi.es.js +87 -77
package/package.json
CHANGED
|
@@ -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"),
|
|
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
|
|
1
|
+
import { jsx as t, jsxs as h } from "react/jsx-runtime";
|
|
2
2
|
import n from "../../../../../external/classnames/index.es.js";
|
|
3
|
-
import
|
|
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] =
|
|
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 =
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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 @@
|
|
|
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
|
+
};
|