@tedi-design-system/react 18.0.0-rc.21 → 18.0.0-rc.23
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/index.css +1 -1
- package/package.json +1 -1
- package/src/tedi/components/content/label/label.cjs.js +1 -1
- package/src/tedi/components/content/label/label.es.js +10 -10
- package/src/tedi/components/content/label/label.module.scss.cjs.js +1 -1
- package/src/tedi/components/content/label/label.module.scss.es.js +2 -1
- package/src/tedi/components/form/file-dropzone/file-dropzone.cjs.js +1 -1
- package/src/tedi/components/form/file-dropzone/file-dropzone.d.ts +29 -3
- package/src/tedi/components/form/file-dropzone/file-dropzone.es.js +90 -68
- package/src/tedi/components/form/file-dropzone/file-dropzone.module.scss.cjs.js +1 -1
- package/src/tedi/components/form/file-dropzone/file-dropzone.module.scss.es.js +2 -2
- package/src/tedi/components/form/file-upload/file-upload.d.ts +9 -0
- package/src/tedi/components/misc/attachment/attachment.cjs.js +1 -0
- package/src/tedi/components/misc/attachment/attachment.d.ts +61 -0
- package/src/tedi/components/misc/attachment/attachment.es.js +92 -0
- package/src/tedi/components/misc/attachment/attachment.module.scss.cjs.js +1 -0
- package/src/tedi/components/misc/attachment/attachment.module.scss.es.js +19 -0
- package/src/tedi/components/misc/attachment/index.d.ts +1 -0
- package/src/tedi/components/navigation/tabs/tabs-list/tabs-list.cjs.js +1 -1
- package/src/tedi/components/navigation/tabs/tabs-list/tabs-list.d.ts +4 -0
- package/src/tedi/components/navigation/tabs/tabs-list/tabs-list.es.js +70 -68
- package/src/tedi/helpers/hooks/use-file-upload.d.ts +43 -0
- package/src/tedi/index.d.ts +1 -0
- package/tedi.cjs.js +1 -1
- package/tedi.es.js +223 -221
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),h=require("../../../../../external/classnames/index.cjs.js"),j=require("react"),x=require("../../buttons/info-button/info-button.cjs.js"),l=require("../../overlays/tooltip/tooltip.cjs.js"),t=require("./label.module.scss.cjs.js"),B=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),g=require("../../../providers/label-provider/use-labels.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),h=require("../../../../../external/classnames/index.cjs.js"),j=require("react"),x=require("../../buttons/info-button/info-button.cjs.js"),l=require("../../overlays/tooltip/tooltip.cjs.js"),t=require("./label.module.scss.cjs.js"),B=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),g=require("../../../providers/label-provider/use-labels.cjs.js"),o=j.forwardRef((r,s)=>{const{getCurrentBreakpointProps:n}=B.useBreakpointProps(r.defaultServerBreakpoint),{as:d="label",children:u,className:c,isBold:b,isSmall:a,required:f,tooltip:i,...p}=n(r),{getLabel:m}=g.useLabels(),q=h.default(t.default["tedi-label"],b&&t.default["tedi-label--bold"],a&&t.default["tedi-label--small"],c);return e.jsxs(d,{ref:s,className:q,...p,children:[u,f&&e.jsx("span",{className:t.default["tedi-label__required"],"aria-hidden":"true",children:"*"}),i&&e.jsx("span",{"aria-hidden":"true",className:t.default["tedi-label__info"],children:e.jsxs(l.Tooltip,{children:[e.jsx(l.Tooltip.Trigger,{children:e.jsx(x.InfoButton,{isSmall:a,"aria-label":m("infoButton.moreInformation")})}),e.jsx(l.Tooltip.Content,{children:i})]})})]})});o.displayName="Label";exports.Label=o;
|
|
@@ -5,33 +5,33 @@ import { InfoButton as g } from "../../buttons/info-button/info-button.es.js";
|
|
|
5
5
|
import { Tooltip as l } from "../../overlays/tooltip/tooltip.es.js";
|
|
6
6
|
import r from "./label.module.scss.es.js";
|
|
7
7
|
import { useBreakpointProps as L } from "../../../helpers/hooks/use-breakpoint-props.es.js";
|
|
8
|
-
import { useLabels as
|
|
9
|
-
const
|
|
8
|
+
import { useLabels as _ } from "../../../providers/label-provider/use-labels.es.js";
|
|
9
|
+
const k = N((o, s) => {
|
|
10
10
|
const { getCurrentBreakpointProps: n } = L(o.defaultServerBreakpoint), {
|
|
11
11
|
as: m = "label",
|
|
12
12
|
children: d,
|
|
13
|
-
className:
|
|
14
|
-
isBold:
|
|
13
|
+
className: c,
|
|
14
|
+
isBold: p,
|
|
15
15
|
isSmall: t,
|
|
16
16
|
required: f,
|
|
17
17
|
tooltip: a,
|
|
18
18
|
...b
|
|
19
|
-
} = n(o), { getLabel: u } =
|
|
19
|
+
} = n(o), { getLabel: u } = _(), h = B(
|
|
20
20
|
r["tedi-label"],
|
|
21
|
-
|
|
21
|
+
p && r["tedi-label--bold"],
|
|
22
22
|
t && r["tedi-label--small"],
|
|
23
|
-
|
|
23
|
+
c
|
|
24
24
|
);
|
|
25
25
|
return /* @__PURE__ */ i(m, { ref: s, className: h, ...b, children: [
|
|
26
26
|
d,
|
|
27
27
|
f && /* @__PURE__ */ e("span", { className: r["tedi-label__required"], "aria-hidden": "true", children: "*" }),
|
|
28
|
-
a && /* @__PURE__ */ e("span", { "aria-hidden": "true", children: /* @__PURE__ */ i(l, { children: [
|
|
28
|
+
a && /* @__PURE__ */ e("span", { "aria-hidden": "true", className: r["tedi-label__info"], children: /* @__PURE__ */ i(l, { children: [
|
|
29
29
|
/* @__PURE__ */ e(l.Trigger, { children: /* @__PURE__ */ e(g, { isSmall: t, "aria-label": u("infoButton.moreInformation") }) }),
|
|
30
30
|
/* @__PURE__ */ e(l.Content, { children: a })
|
|
31
31
|
] }) })
|
|
32
32
|
] });
|
|
33
33
|
});
|
|
34
|
-
|
|
34
|
+
k.displayName = "Label";
|
|
35
35
|
export {
|
|
36
|
-
|
|
36
|
+
k as Label
|
|
37
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-label":"tedi-label-473ab627","tedi-label--small":"tedi-label--small-20e328dc","tedi-label--bold":"tedi-label--bold-9d758835","tedi-label__required":"tedi-label__required-414e3f9d"};exports.default=e;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-label":"tedi-label-473ab627","tedi-label--small":"tedi-label--small-20e328dc","tedi-label--bold":"tedi-label--bold-9d758835","tedi-label__required":"tedi-label__required-414e3f9d","tedi-label__info":"tedi-label__info-c9df19b4"};exports.default=e;
|
|
@@ -2,7 +2,8 @@ const e = {
|
|
|
2
2
|
"tedi-label": "tedi-label-473ab627",
|
|
3
3
|
"tedi-label--small": "tedi-label--small-20e328dc",
|
|
4
4
|
"tedi-label--bold": "tedi-label--bold-9d758835",
|
|
5
|
-
"tedi-label__required": "tedi-label__required-414e3f9d"
|
|
5
|
+
"tedi-label__required": "tedi-label__required-414e3f9d",
|
|
6
|
+
"tedi-label__info": "tedi-label__info-c9df19b4"
|
|
6
7
|
};
|
|
7
8
|
export {
|
|
8
9
|
e as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),L=require("../../../../../external/classnames/index.cjs.js"),N=require("../../../../../external/react-dropzone/dist/es/index.cjs.js"),D=require("../../../helpers/hooks/use-file-upload.cjs.js"),$=require("../../base/icon/icon.cjs.js"),I=require("../../buttons/button/button.cjs.js"),S=require("../../misc/attachment/attachment.cjs.js"),f=require("../feedback-text/feedback-text.cjs.js"),T=require("../form-label/form-label.cjs.js"),n=require("./file-dropzone.module.scss.cjs.js"),k=require("../../../providers/label-provider/use-labels.cjs.js"),p=require("../../content/list/list.cjs.js"),P=s=>{const{getLabel:d}=k.useLabels(),{label:x=d("file-dropzone.label"),className:b,disabled:o=!1,helper:i,id:m,attachmentProps:c,...z}=s,{innerFiles:r,uploadErrorHelper:a,onFileChange:g,onFileRemove:j}=D.useFileUpload(s),{getRootProps:v,getInputProps:h,isDragActive:y}=N.useDropzone({disabled:o,accept:s.accept?{"application/*":[s.accept]}:void 0,multiple:s.multiple,maxSize:s.maxSize?s.maxSize*1024**2:void 0,onDrop:t=>{if(o)return;g({target:{files:t}})}}),F=L.default(n.default["tedi-file-dropzone"],{[n.default["tedi-file-dropzone--disabled"]]:o},{[n.default["tedi-file-dropzone--invalid"]]:((a==null?void 0:a.type)||(i==null?void 0:i.type))==="error"},{[n.default["tedi-file-dropzone--valid"]]:((a==null?void 0:a.type)||(i==null?void 0:i.type))==="valid"},{[n.default["tedi-file-dropzone--drop-over"]]:y},b),u=i?(i==null?void 0:i.id)??`${m}-helper`:void 0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{...v({tabIndex:o?-1:0,"aria-disabled":o,"aria-describedby":u}),className:F,children:[e.jsx("input",{...h(),disabled:o}),e.jsx("div",{className:n.default["tedi-file-dropzone__label-wrapper"],children:e.jsx(T.FormLabel,{...z,id:m,label:e.jsxs(e.Fragment,{children:[e.jsx($.Icon,{color:o?"tertiary":"secondary",size:24,name:"attach_file",display:"inline",className:n.default["tedi-file-dropzone__label-icon"]}),x]}),className:n.default["tedi-file-dropzone__label"]})})]}),i?e.jsx(f.FeedbackText,{...i,id:u}):a?e.jsx(f.FeedbackText,{...a,id:u}):null,!!r.length&&e.jsx(p.List,{className:n.default["tedi-file-dropzone__file-list"],style:"none","aria-label":d("file-dropzone.selected-files"),children:r.map(t=>{const l=typeof c=="function"?c(t):c,{actions:q,..._}=l??{};return e.jsx(p.List.Item,{className:n.default["tedi-file-dropzone__file-list-item"],children:e.jsx(S.Attachment,{..._,name:t.name??"",isValid:t.isValid??(l==null?void 0:l.isValid),isLoading:t.isLoading??(l==null?void 0:l.isLoading),actions:e.jsxs(e.Fragment,{children:[q,e.jsx(I.Button,{visualType:"neutral",icon:"delete",onClick:()=>j(t),children:`${d("remove")} ${t.name??""}`})]})})},t.id??`${t.name??"file"}-${t.size??""}-${t.lastModified??""}`)})}),e.jsx("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:r.length===0?d("file-dropzone.no-file"):d("file-dropzone.files-selected",r.length)})]})};exports.FileDropzone=P;
|
|
@@ -1,12 +1,38 @@
|
|
|
1
|
-
import { UseFileUploadProps } from '../../../helpers/hooks/use-file-upload';
|
|
1
|
+
import { FileUploadFile, UseFileUploadProps } from '../../../helpers/hooks/use-file-upload';
|
|
2
|
+
import { AttachmentProps } from '../../misc/attachment/attachment';
|
|
2
3
|
import { FeedbackTextProps } from '../feedback-text/feedback-text';
|
|
3
4
|
import { FormLabelProps } from '../form-label/form-label';
|
|
4
|
-
export
|
|
5
|
+
export type FileDropzoneAttachmentProps = Partial<Omit<AttachmentProps, 'name'>> | ((file: FileUploadFile) => Partial<Omit<AttachmentProps, 'name'>>);
|
|
6
|
+
export interface FileDropzoneProps extends Omit<FormLabelProps, 'size' | 'hideLabel' | 'label'>, UseFileUploadProps {
|
|
7
|
+
/**
|
|
8
|
+
* Additional CSS class names to apply to the dropzone for custom styling
|
|
9
|
+
*/
|
|
5
10
|
className?: string;
|
|
11
|
+
/**
|
|
12
|
+
* The name attribute for the file input, used for form submission and identifying the field.
|
|
13
|
+
*/
|
|
6
14
|
name: string;
|
|
7
|
-
|
|
15
|
+
/**
|
|
16
|
+
* The text label displayed for the file dropzone, providing context for users.
|
|
17
|
+
* Defaults to the `LabelProvider`'s localised `file-dropzone.label` (e.g. "Lohista
|
|
18
|
+
* failid siia või klõpsa, et sirvida" in Estonian).
|
|
19
|
+
*/
|
|
20
|
+
label?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Provides helper text or feedback (such as an error or instruction message) to guide the user.
|
|
23
|
+
*/
|
|
8
24
|
helper?: FeedbackTextProps;
|
|
25
|
+
/**
|
|
26
|
+
* Disables the file dropzone, preventing user interaction.
|
|
27
|
+
*/
|
|
9
28
|
disabled?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Overrides forwarded to each rendered `Attachment` (e.g. `icon`, `fileSize`,
|
|
31
|
+
* `progress`, `feedback`). Pass a function to vary per file. `FileDropzone`
|
|
32
|
+
* sets `name`, `isValid` and `isLoading` itself, and always appends a remove
|
|
33
|
+
* button to the `actions` slot (after any `actions` you provide here).
|
|
34
|
+
*/
|
|
35
|
+
attachmentProps?: FileDropzoneAttachmentProps;
|
|
10
36
|
}
|
|
11
37
|
export declare const FileDropzone: (props: FileDropzoneProps) => JSX.Element;
|
|
12
38
|
export default FileDropzone;
|
|
@@ -1,92 +1,114 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as c, Fragment as f, jsx as t } from "react/jsx-runtime";
|
|
2
2
|
import I from "../../../../../external/classnames/index.es.js";
|
|
3
|
-
import { useDropzone as
|
|
4
|
-
import { useFileUpload as
|
|
5
|
-
import { Icon as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
3
|
+
import { useDropzone as A } from "../../../../../external/react-dropzone/dist/es/index.es.js";
|
|
4
|
+
import { useFileUpload as P } from "../../../helpers/hooks/use-file-upload.es.js";
|
|
5
|
+
import { Icon as S } from "../../base/icon/icon.es.js";
|
|
6
|
+
import { Button as V } from "../../buttons/button/button.es.js";
|
|
7
|
+
import { Attachment as j } from "../../misc/attachment/attachment.es.js";
|
|
8
|
+
import { FeedbackText as b } from "../feedback-text/feedback-text.es.js";
|
|
8
9
|
import { FormLabel as k } from "../form-label/form-label.es.js";
|
|
9
10
|
import o from "./file-dropzone.module.scss.es.js";
|
|
10
|
-
import { useLabels as
|
|
11
|
-
import { List as
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
11
|
+
import { useLabels as B } from "../../../providers/label-provider/use-labels.es.js";
|
|
12
|
+
import { List as v } from "../../content/list/list.es.js";
|
|
13
|
+
const W = (l) => {
|
|
14
|
+
const { getLabel: s } = B(), {
|
|
15
|
+
label: h = s("file-dropzone.label"),
|
|
16
|
+
className: u,
|
|
17
|
+
disabled: d = !1,
|
|
18
|
+
helper: e,
|
|
19
|
+
id: z,
|
|
20
|
+
attachmentProps: m,
|
|
21
|
+
...g
|
|
22
|
+
} = l, { innerFiles: r, uploadErrorHelper: a, onFileChange: y, onFileRemove: _ } = P(l), { getRootProps: N, getInputProps: x, isDragActive: F } = A({
|
|
23
|
+
disabled: d,
|
|
24
|
+
accept: l.accept ? { "application/*": [l.accept] } : void 0,
|
|
25
|
+
multiple: l.multiple,
|
|
26
|
+
maxSize: l.maxSize ? l.maxSize * 1024 ** 2 : void 0,
|
|
27
|
+
onDrop: (i) => {
|
|
28
|
+
if (d) return;
|
|
29
|
+
y({
|
|
30
|
+
target: { files: i }
|
|
26
31
|
});
|
|
27
32
|
}
|
|
28
|
-
}),
|
|
33
|
+
}), L = I(
|
|
29
34
|
o["tedi-file-dropzone"],
|
|
30
|
-
{ [o["tedi-file-dropzone--disabled"]]:
|
|
31
|
-
{ [o["tedi-file-dropzone--invalid"]]: ((
|
|
32
|
-
{ [o["tedi-file-dropzone--valid"]]: ((
|
|
33
|
-
{ [o["tedi-file-dropzone--drop-over"]]:
|
|
34
|
-
|
|
35
|
-
),
|
|
36
|
-
return /* @__PURE__ */
|
|
37
|
-
/* @__PURE__ */
|
|
35
|
+
{ [o["tedi-file-dropzone--disabled"]]: d },
|
|
36
|
+
{ [o["tedi-file-dropzone--invalid"]]: ((a == null ? void 0 : a.type) || (e == null ? void 0 : e.type)) === "error" },
|
|
37
|
+
{ [o["tedi-file-dropzone--valid"]]: ((a == null ? void 0 : a.type) || (e == null ? void 0 : e.type)) === "valid" },
|
|
38
|
+
{ [o["tedi-file-dropzone--drop-over"]]: F },
|
|
39
|
+
u
|
|
40
|
+
), p = e ? (e == null ? void 0 : e.id) ?? `${z}-helper` : void 0;
|
|
41
|
+
return /* @__PURE__ */ c(f, { children: [
|
|
42
|
+
/* @__PURE__ */ c(
|
|
38
43
|
"div",
|
|
39
44
|
{
|
|
40
|
-
...
|
|
41
|
-
tabIndex:
|
|
42
|
-
"aria-disabled":
|
|
43
|
-
"aria-describedby":
|
|
45
|
+
...N({
|
|
46
|
+
tabIndex: d ? -1 : 0,
|
|
47
|
+
"aria-disabled": d,
|
|
48
|
+
"aria-describedby": p
|
|
44
49
|
}),
|
|
45
|
-
className:
|
|
50
|
+
className: L,
|
|
46
51
|
children: [
|
|
47
|
-
/* @__PURE__ */
|
|
48
|
-
/* @__PURE__ */
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
/* @__PURE__ */ t("input", { ...x(), disabled: d }),
|
|
53
|
+
/* @__PURE__ */ t("div", { className: o["tedi-file-dropzone__label-wrapper"], children: /* @__PURE__ */ t(
|
|
54
|
+
k,
|
|
55
|
+
{
|
|
56
|
+
...g,
|
|
57
|
+
id: z,
|
|
58
|
+
label: /* @__PURE__ */ c(f, { children: [
|
|
59
|
+
/* @__PURE__ */ t(
|
|
60
|
+
S,
|
|
61
|
+
{
|
|
62
|
+
color: d ? "tertiary" : "secondary",
|
|
63
|
+
size: 24,
|
|
64
|
+
name: "attach_file",
|
|
65
|
+
display: "inline",
|
|
66
|
+
className: o["tedi-file-dropzone__label-icon"]
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
h
|
|
70
|
+
] }),
|
|
71
|
+
className: o["tedi-file-dropzone__label"]
|
|
72
|
+
}
|
|
73
|
+
) })
|
|
52
74
|
]
|
|
53
75
|
}
|
|
54
76
|
),
|
|
55
|
-
|
|
56
|
-
!!
|
|
57
|
-
|
|
77
|
+
e ? /* @__PURE__ */ t(b, { ...e, id: p }) : a ? /* @__PURE__ */ t(b, { ...a, id: p }) : null,
|
|
78
|
+
!!r.length && /* @__PURE__ */ t(
|
|
79
|
+
v,
|
|
58
80
|
{
|
|
59
81
|
className: o["tedi-file-dropzone__file-list"],
|
|
60
82
|
style: "none",
|
|
61
|
-
"aria-label":
|
|
62
|
-
children:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
t.name,
|
|
71
|
-
" ",
|
|
72
|
-
t.isValid === !1 && /* @__PURE__ */ e(f, { name: "info", color: "danger", display: "inline", size: 18 })
|
|
73
|
-
] }),
|
|
74
|
-
/* @__PURE__ */ e(b, { width: "auto", children: /* @__PURE__ */ e(
|
|
75
|
-
S,
|
|
83
|
+
"aria-label": s("file-dropzone.selected-files"),
|
|
84
|
+
children: r.map((i) => {
|
|
85
|
+
const n = typeof m == "function" ? m(i) : m, { actions: $, ...D } = n ?? {};
|
|
86
|
+
return /* @__PURE__ */ t(
|
|
87
|
+
v.Item,
|
|
88
|
+
{
|
|
89
|
+
className: o["tedi-file-dropzone__file-list-item"],
|
|
90
|
+
children: /* @__PURE__ */ t(
|
|
91
|
+
j,
|
|
76
92
|
{
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
93
|
+
...D,
|
|
94
|
+
name: i.name ?? "",
|
|
95
|
+
isValid: i.isValid ?? (n == null ? void 0 : n.isValid),
|
|
96
|
+
isLoading: i.isLoading ?? (n == null ? void 0 : n.isLoading),
|
|
97
|
+
actions: /* @__PURE__ */ c(f, { children: [
|
|
98
|
+
$,
|
|
99
|
+
/* @__PURE__ */ t(V, { visualType: "neutral", icon: "delete", onClick: () => _(i), children: `${s("remove")} ${i.name ?? ""}` })
|
|
100
|
+
] })
|
|
80
101
|
}
|
|
81
|
-
)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
102
|
+
)
|
|
103
|
+
},
|
|
104
|
+
i.id ?? `${i.name ?? "file"}-${i.size ?? ""}-${i.lastModified ?? ""}`
|
|
105
|
+
);
|
|
106
|
+
})
|
|
85
107
|
}
|
|
86
108
|
),
|
|
87
|
-
/* @__PURE__ */
|
|
109
|
+
/* @__PURE__ */ t("div", { className: "sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true", children: r.length === 0 ? s("file-dropzone.no-file") : s("file-dropzone.files-selected", r.length) })
|
|
88
110
|
] });
|
|
89
111
|
};
|
|
90
112
|
export {
|
|
91
|
-
|
|
113
|
+
W as FileDropzone
|
|
92
114
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-file-dropzone":"tedi-file-dropzone-70698e52","tedi-file-dropzone__label-wrapper":"tedi-file-dropzone__label-wrapper-78360685","tedi-file-dropzone__label":"tedi-file-dropzone__label-5c15bc34","tedi-file-dropzone--disabled":"tedi-file-dropzone--disabled-0e01143d","tedi-file-dropzone--invalid":"tedi-file-dropzone--invalid-159cce6d","tedi-file-dropzone--valid":"tedi-file-dropzone--valid-d2d3ef3d","tedi-file-dropzone--drop-over":"tedi-file-dropzone--drop-over-3e31af77","tedi-file-dropzone__file-list":"tedi-file-dropzone__file-list-c1ededa3","tedi-file-dropzone__file-list-item":"tedi-file-dropzone__file-list-item-3ad71621"
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-file-dropzone":"tedi-file-dropzone-70698e52","tedi-file-dropzone__label-wrapper":"tedi-file-dropzone__label-wrapper-78360685","tedi-file-dropzone__label":"tedi-file-dropzone__label-5c15bc34","tedi-file-dropzone__label-icon":"tedi-file-dropzone__label-icon-180ef5ad","tedi-file-dropzone--disabled":"tedi-file-dropzone--disabled-0e01143d","tedi-file-dropzone--invalid":"tedi-file-dropzone--invalid-159cce6d","tedi-file-dropzone--valid":"tedi-file-dropzone--valid-d2d3ef3d","tedi-file-dropzone--drop-over":"tedi-file-dropzone--drop-over-3e31af77","tedi-file-dropzone__file-list":"tedi-file-dropzone__file-list-c1ededa3","tedi-file-dropzone__file-list-item":"tedi-file-dropzone__file-list-item-3ad71621"};exports.default=e;
|
|
@@ -2,13 +2,13 @@ const e = {
|
|
|
2
2
|
"tedi-file-dropzone": "tedi-file-dropzone-70698e52",
|
|
3
3
|
"tedi-file-dropzone__label-wrapper": "tedi-file-dropzone__label-wrapper-78360685",
|
|
4
4
|
"tedi-file-dropzone__label": "tedi-file-dropzone__label-5c15bc34",
|
|
5
|
+
"tedi-file-dropzone__label-icon": "tedi-file-dropzone__label-icon-180ef5ad",
|
|
5
6
|
"tedi-file-dropzone--disabled": "tedi-file-dropzone--disabled-0e01143d",
|
|
6
7
|
"tedi-file-dropzone--invalid": "tedi-file-dropzone--invalid-159cce6d",
|
|
7
8
|
"tedi-file-dropzone--valid": "tedi-file-dropzone--valid-d2d3ef3d",
|
|
8
9
|
"tedi-file-dropzone--drop-over": "tedi-file-dropzone--drop-over-3e31af77",
|
|
9
10
|
"tedi-file-dropzone__file-list": "tedi-file-dropzone__file-list-c1ededa3",
|
|
10
|
-
"tedi-file-dropzone__file-list-item": "tedi-file-dropzone__file-list-item-3ad71621"
|
|
11
|
-
"tedi-file-dropzone__file-name": "tedi-file-dropzone__file-name-f9bf2a63"
|
|
11
|
+
"tedi-file-dropzone__file-list-item": "tedi-file-dropzone__file-list-item-3ad71621"
|
|
12
12
|
};
|
|
13
13
|
export {
|
|
14
14
|
e as default
|
|
@@ -2,7 +2,16 @@ import { FileUploadFile } from '../../../helpers/hooks/use-file-upload';
|
|
|
2
2
|
import { FormLabelProps } from '../../form/form-label/form-label';
|
|
3
3
|
import { FeedbackTextProps } from '../feedback-text/feedback-text';
|
|
4
4
|
export interface FileUploadProps extends Omit<FormLabelProps, 'id' | 'label'> {
|
|
5
|
+
/**
|
|
6
|
+
* Unique HTML id for the file input, also used to associate the label and
|
|
7
|
+
* helper/error text for accessibility. When omitted, falls back to the
|
|
8
|
+
* surrounding `InputGroup`'s id or a generated one.
|
|
9
|
+
*/
|
|
5
10
|
id?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Visible label for the field. May be omitted when the surrounding
|
|
13
|
+
* `InputGroup` provides its own label.
|
|
14
|
+
*/
|
|
6
15
|
label?: string;
|
|
7
16
|
/**
|
|
8
17
|
* Additional class names appended to the inner dropzone element
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),_=require("../../../../../external/classnames/index.cjs.js"),i=require("react"),v=require("../../base/icon/icon.cjs.js"),b=require("../../base/typography/text/text.cjs.js"),R=require("../../buttons/button/button.cjs.js"),V=require("../../form/feedback-text/feedback-text.cjs.js"),$=require("../../loaders/progress-bar/progress-bar.cjs.js"),t=require("./attachment.module.scss.cjs.js"),j=require("../../../helpers/hooks/use-breakpoint.cjs.js"),y=i.forwardRef((N,g)=>{const{name:c,feedback:s,fileSize:r,icon:l,actions:d,isLoading:o=!1,progress:q,progressLabel:m,isValid:k,direction:u,verticalBelow:B="sm",className:T,id:I,...w}=N,z=j.default(),A=u?u==="vertical":j.isBreakpointBelow(z,B),E=i.useId(),h=I??`tedi-attachment-${E}`,f=s?s.id??`${h}-feedback`:void 0,n=k===!1,S=_.default(t.default["tedi-attachment"],{[t.default["tedi-attachment--invalid"]]:n,[t.default["tedi-attachment--multi-line"]]:o,[t.default["tedi-attachment--vertical"]]:A},T),F=e.jsxs(e.Fragment,{children:[l&&e.jsx("span",{className:t.default["tedi-attachment__icon"],"aria-hidden":"true",children:e.jsx(v.Icon,{name:l,size:18,color:n?"danger":"secondary"})}),e.jsxs("span",{className:t.default["tedi-attachment__body"],children:[e.jsxs("span",{className:t.default["tedi-attachment__name"],children:[e.jsxs(b.Text,{element:"span",className:t.default["tedi-attachment__name-text"],children:[c,n&&e.jsx(v.Icon,{name:"error",color:"inherit",display:"inline",size:18,className:t.default["tedi-attachment__invalid-icon"]})]}),r&&e.jsx(b.Text,{element:"span",modifiers:"small",color:"tertiary",className:t.default["tedi-attachment__file-size"],children:r})]}),o&&e.jsx($.ProgressBar,{value:q,ariaLabel:c,valuePosition:"bottom",helper:m?{text:m,type:"hint"}:void 0,className:t.default["tedi-attachment__progress"]})]})]}),p=a=>{if(!i.isValidElement(a))return a;if(a.type===i.Fragment){const P=a.props.children;return i.cloneElement(a,void 0,i.Children.map(P,p))}return a.type===R.Button&&a.props.visualType===void 0?i.cloneElement(a,{visualType:"neutral"}):a},L=d?e.jsx("span",{className:t.default["tedi-attachment__actions"],"data-name":"attachment-actions",children:i.Children.map(d,p)}):null,x=e.jsxs("div",{ref:g,id:h,className:S,"aria-describedby":f,...w,children:[F,L]});return s?e.jsxs("div",{className:t.default["tedi-attachment-wrapper"],children:[x,e.jsx(V.FeedbackText,{...s,id:f,className:_.default(t.default["tedi-attachment__feedback"],s.className)})]}):x});y.displayName="Attachment";exports.Attachment=y;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { Breakpoint } from '../../../helpers';
|
|
3
|
+
import { FeedbackTextProps } from '../../form/feedback-text/feedback-text';
|
|
4
|
+
export type AttachmentDirection = 'horizontal' | 'vertical';
|
|
5
|
+
export interface AttachmentProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'color'> {
|
|
6
|
+
/**
|
|
7
|
+
* File name (required).
|
|
8
|
+
*/
|
|
9
|
+
name: string;
|
|
10
|
+
/**
|
|
11
|
+
* Hint / error message shown below the card, wired via `aria-describedby`.
|
|
12
|
+
*/
|
|
13
|
+
feedback?: FeedbackTextProps;
|
|
14
|
+
/**
|
|
15
|
+
* Pre-formatted file size (e.g. `'1.2 MB'`), shown after the name. Format it yourself.
|
|
16
|
+
*/
|
|
17
|
+
fileSize?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Material icon name for a leading file-type glyph.
|
|
20
|
+
*/
|
|
21
|
+
icon?: string | null;
|
|
22
|
+
/**
|
|
23
|
+
* Action buttons (download, delete, …) shown on the right. `Button`s default to
|
|
24
|
+
* `visualType="neutral"`.
|
|
25
|
+
*/
|
|
26
|
+
actions?: React.ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* Show an upload progress bar.
|
|
29
|
+
* @default false
|
|
30
|
+
*/
|
|
31
|
+
isLoading?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Upload progress (0..100); only shown while `isLoading`.
|
|
34
|
+
* @default 0
|
|
35
|
+
*/
|
|
36
|
+
progress?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Hint text under the progress bar (e.g. `'Üleslaadimine'`); only shown while `isLoading`.
|
|
39
|
+
*/
|
|
40
|
+
progressLabel?: string;
|
|
41
|
+
/**
|
|
42
|
+
* `false` switches the card to the error state (danger surface + warning glyph).
|
|
43
|
+
*/
|
|
44
|
+
isValid?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Force the layout: `'vertical'` stacks the content, `'horizontal'` keeps one row.
|
|
47
|
+
* When omitted, derived from the viewport via `verticalBelow`.
|
|
48
|
+
*/
|
|
49
|
+
direction?: AttachmentDirection;
|
|
50
|
+
/**
|
|
51
|
+
* Breakpoint below which the layout auto-switches to vertical (when `direction` is unset).
|
|
52
|
+
* @default sm
|
|
53
|
+
*/
|
|
54
|
+
verticalBelow?: Breakpoint;
|
|
55
|
+
/**
|
|
56
|
+
* Additional class name on the root element.
|
|
57
|
+
*/
|
|
58
|
+
className?: string;
|
|
59
|
+
}
|
|
60
|
+
export declare const Attachment: React.ForwardRefExoticComponent<AttachmentProps & React.RefAttributes<HTMLDivElement>>;
|
|
61
|
+
export default Attachment;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { jsx as a, jsxs as r, Fragment as P } from "react/jsx-runtime";
|
|
2
|
+
import N from "../../../../../external/classnames/index.es.js";
|
|
3
|
+
import i, { forwardRef as R } from "react";
|
|
4
|
+
import { Icon as y } from "../../base/icon/icon.es.js";
|
|
5
|
+
import { Text as b } from "../../base/typography/text/text.es.js";
|
|
6
|
+
import { Button as S } from "../../buttons/button/button.es.js";
|
|
7
|
+
import { FeedbackText as $ } from "../../form/feedback-text/feedback-text.es.js";
|
|
8
|
+
import { ProgressBar as M } from "../../loaders/progress-bar/progress-bar.es.js";
|
|
9
|
+
import e from "./attachment.module.scss.es.js";
|
|
10
|
+
import q, { isBreakpointBelow as D } from "../../../helpers/hooks/use-breakpoint.es.js";
|
|
11
|
+
const G = R((g, k) => {
|
|
12
|
+
const {
|
|
13
|
+
name: c,
|
|
14
|
+
feedback: n,
|
|
15
|
+
fileSize: m,
|
|
16
|
+
icon: o,
|
|
17
|
+
actions: l,
|
|
18
|
+
isLoading: d = !1,
|
|
19
|
+
progress: B,
|
|
20
|
+
progressLabel: p,
|
|
21
|
+
isValid: x,
|
|
22
|
+
direction: h,
|
|
23
|
+
verticalBelow: w = "sm",
|
|
24
|
+
className: I,
|
|
25
|
+
id: z,
|
|
26
|
+
...E
|
|
27
|
+
} = g, T = q(), A = h ? h === "vertical" : D(T, w), F = i.useId(), f = z ?? `tedi-attachment-${F}`, _ = n ? n.id ?? `${f}-feedback` : void 0, s = x === !1, L = N(
|
|
28
|
+
e["tedi-attachment"],
|
|
29
|
+
{
|
|
30
|
+
[e["tedi-attachment--invalid"]]: s,
|
|
31
|
+
[e["tedi-attachment--multi-line"]]: d,
|
|
32
|
+
[e["tedi-attachment--vertical"]]: A
|
|
33
|
+
},
|
|
34
|
+
I
|
|
35
|
+
), V = /* @__PURE__ */ r(P, { children: [
|
|
36
|
+
o && /* @__PURE__ */ a("span", { className: e["tedi-attachment__icon"], "aria-hidden": "true", children: /* @__PURE__ */ a(y, { name: o, size: 18, color: s ? "danger" : "secondary" }) }),
|
|
37
|
+
/* @__PURE__ */ r("span", { className: e["tedi-attachment__body"], children: [
|
|
38
|
+
/* @__PURE__ */ r("span", { className: e["tedi-attachment__name"], children: [
|
|
39
|
+
/* @__PURE__ */ r(b, { element: "span", className: e["tedi-attachment__name-text"], children: [
|
|
40
|
+
c,
|
|
41
|
+
s && /* @__PURE__ */ a(
|
|
42
|
+
y,
|
|
43
|
+
{
|
|
44
|
+
name: "error",
|
|
45
|
+
color: "inherit",
|
|
46
|
+
display: "inline",
|
|
47
|
+
size: 18,
|
|
48
|
+
className: e["tedi-attachment__invalid-icon"]
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
] }),
|
|
52
|
+
m && /* @__PURE__ */ a(b, { element: "span", modifiers: "small", color: "tertiary", className: e["tedi-attachment__file-size"], children: m })
|
|
53
|
+
] }),
|
|
54
|
+
d && /* @__PURE__ */ a(
|
|
55
|
+
M,
|
|
56
|
+
{
|
|
57
|
+
value: B,
|
|
58
|
+
ariaLabel: c,
|
|
59
|
+
valuePosition: "bottom",
|
|
60
|
+
helper: p ? { text: p, type: "hint" } : void 0,
|
|
61
|
+
className: e["tedi-attachment__progress"]
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
] })
|
|
65
|
+
] }), u = (t) => {
|
|
66
|
+
if (!i.isValidElement(t))
|
|
67
|
+
return t;
|
|
68
|
+
if (t.type === i.Fragment) {
|
|
69
|
+
const C = t.props.children;
|
|
70
|
+
return i.cloneElement(t, void 0, i.Children.map(C, u));
|
|
71
|
+
}
|
|
72
|
+
return t.type === S && t.props.visualType === void 0 ? i.cloneElement(t, { visualType: "neutral" }) : t;
|
|
73
|
+
}, j = l ? /* @__PURE__ */ a("span", { className: e["tedi-attachment__actions"], "data-name": "attachment-actions", children: i.Children.map(l, u) }) : null, v = /* @__PURE__ */ r("div", { ref: k, id: f, className: L, "aria-describedby": _, ...E, children: [
|
|
74
|
+
V,
|
|
75
|
+
j
|
|
76
|
+
] });
|
|
77
|
+
return n ? /* @__PURE__ */ r("div", { className: e["tedi-attachment-wrapper"], children: [
|
|
78
|
+
v,
|
|
79
|
+
/* @__PURE__ */ a(
|
|
80
|
+
$,
|
|
81
|
+
{
|
|
82
|
+
...n,
|
|
83
|
+
id: _,
|
|
84
|
+
className: N(e["tedi-attachment__feedback"], n.className)
|
|
85
|
+
}
|
|
86
|
+
)
|
|
87
|
+
] }) : v;
|
|
88
|
+
});
|
|
89
|
+
G.displayName = "Attachment";
|
|
90
|
+
export {
|
|
91
|
+
G as Attachment
|
|
92
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t={"tedi-attachment-wrapper":"tedi-attachment-wrapper-dcfb5d64","tedi-attachment":"tedi-attachment-02d5f843","tedi-attachment--multi-line":"tedi-attachment--multi-line-6f305917","tedi-attachment--invalid":"tedi-attachment--invalid-e6248abb","tedi-attachment__feedback":"tedi-attachment__feedback-bc74bea5","tedi-attachment__icon":"tedi-attachment__icon-0eb17a7c","tedi-attachment__body":"tedi-attachment__body-3a026aed","tedi-attachment__name":"tedi-attachment__name-ab40704e","tedi-attachment__name-text":"tedi-attachment__name-text-a17b7fb9","tedi-attachment__invalid-icon":"tedi-attachment__invalid-icon-0d13ecad","tedi-attachment__progress":"tedi-attachment__progress-e454173e","tedi-attachment--vertical":"tedi-attachment--vertical-4a691e7c","tedi-attachment__file-size":"tedi-attachment__file-size-1728ef22","tedi-attachment__actions":"tedi-attachment__actions-225799e0"};exports.default=t;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const t = {
|
|
2
|
+
"tedi-attachment-wrapper": "tedi-attachment-wrapper-dcfb5d64",
|
|
3
|
+
"tedi-attachment": "tedi-attachment-02d5f843",
|
|
4
|
+
"tedi-attachment--multi-line": "tedi-attachment--multi-line-6f305917",
|
|
5
|
+
"tedi-attachment--invalid": "tedi-attachment--invalid-e6248abb",
|
|
6
|
+
"tedi-attachment__feedback": "tedi-attachment__feedback-bc74bea5",
|
|
7
|
+
"tedi-attachment__icon": "tedi-attachment__icon-0eb17a7c",
|
|
8
|
+
"tedi-attachment__body": "tedi-attachment__body-3a026aed",
|
|
9
|
+
"tedi-attachment__name": "tedi-attachment__name-ab40704e",
|
|
10
|
+
"tedi-attachment__name-text": "tedi-attachment__name-text-a17b7fb9",
|
|
11
|
+
"tedi-attachment__invalid-icon": "tedi-attachment__invalid-icon-0d13ecad",
|
|
12
|
+
"tedi-attachment__progress": "tedi-attachment__progress-e454173e",
|
|
13
|
+
"tedi-attachment--vertical": "tedi-attachment--vertical-4a691e7c",
|
|
14
|
+
"tedi-attachment__file-size": "tedi-attachment__file-size-1728ef22",
|
|
15
|
+
"tedi-attachment__actions": "tedi-attachment__actions-225799e0"
|
|
16
|
+
};
|
|
17
|
+
export {
|
|
18
|
+
t as default
|
|
19
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './attachment';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),m=require("../../../../../../external/classnames/index.cjs.js"),r=require("react"),W=require("../../../base/icon/icon.cjs.js"),z=require("../../../misc/print/print.cjs.js"),i=require("../../../overlays/dropdown/dropdown.cjs.js"),o=require("../tabs.module.scss.cjs.js"),P=require("../tabs-context.cjs.js"),A=require("../../../../providers/label-provider/use-labels.cjs.js"),F=require("../../../../helpers/hooks/use-scroll-fade.cjs.js"),_=v=>{const{children:c,className:x,"aria-label":L,"aria-labelledby":g,printVisibility:S="show",overflowMode:s="dropdown",dropdownLabel:j}=v,{getLabel:y}=A.useLabels(),{currentTab:q,setCurrentTab:C}=P.useTabsContext(),d=r.useRef(null),b=r.useRef(null),[R,T]=r.useState(!1),{scrollRef:f,canScrollStart:M,canScrollEnd:N,handleScroll:E}=F.useScrollFade({direction:"horizontal"}),I=r.useCallback(e=>{b.current=e,s==="scroll"&&f(e)},[s,f]),u=r.useMemo(()=>r.Children.toArray(c).filter(r.isValidElement),[c]),p=r.useMemo(()=>{const e=[];return u.forEach(t=>{const a=t.props;e.push({id:a.id,label:a.children,disabled:a.disabled})}),e},[u]),w=s==="dropdown"&&R&&p.length>1,O=p.filter(e=>e.id!==q),k=e=>{e&&C(e)},n=r.useCallback(()=>{const e=d.current,t=b.current;if(!e||!t||t.clientWidth===0)return;const a=o.default["tedi-tabs__list--overflow"],h=t.classList.contains(a);h&&t.classList.remove(a);const D=t.scrollWidth;h&&t.classList.add(a),T(D>e.clientWidth)},[]);return r.useLayoutEffect(()=>{s==="dropdown"&&n()},[s,n,u]),r.useEffect(()=>{if(s!=="dropdown")return;const e=d.current;if(!e)return;const t=new ResizeObserver(n);return t.observe(e),()=>t.disconnect()},[s,n]),l.jsx(z.Print,{visibility:S,children:l.jsxs("div",{ref:d,className:m.default(o.default["tedi-tabs__list-wrapper"],{[o.default["tedi-tabs__list-wrapper--scroll-fade-left"]]:s==="scroll"&&M,[o.default["tedi-tabs__list-wrapper--scroll-fade-right"]]:s==="scroll"&&N}),children:[l.jsx("div",{ref:I,"data-name":"tabs-list",role:"tablist","aria-label":L,"aria-labelledby":g,className:m.default(o.default["tedi-tabs__list"],{[o.default["tedi-tabs__list--overflow"]]:w},{[o.default["tedi-tabs__list--scroll"]]:s==="scroll"},x),onScroll:s==="scroll"?E:void 0,children:c}),w&&l.jsx("div",{className:o.default["tedi-tabs__more-wrapper"],children:l.jsxs(i.Dropdown,{placement:"bottom-end",children:[l.jsx(i.Dropdown.Trigger,{children:l.jsxs("button",{"data-name":"tabs-more-btn",type:"button",className:o.default["tedi-tabs__more-btn"],children:[j??y("tabs.more"),l.jsx(W.Icon,{name:"expand_more",size:18})]})}),l.jsx(i.Dropdown.Content,{children:O.map((e,t)=>l.jsx(i.Dropdown.Item,{index:t,disabled:e.disabled,onClick:()=>k(e.id),children:e.label},e.id))})]})})]})})};_.displayName="TabsList";exports.TabsList=_;
|
|
@@ -29,6 +29,10 @@ export interface TabsListProps {
|
|
|
29
29
|
* @default 'dropdown'
|
|
30
30
|
*/
|
|
31
31
|
overflowMode?: 'dropdown' | 'scroll';
|
|
32
|
+
/**
|
|
33
|
+
* Label for the overflow dropdown trigger. Defaults to the `tabs.more` label.
|
|
34
|
+
*/
|
|
35
|
+
dropdownLabel?: string;
|
|
32
36
|
}
|
|
33
37
|
export declare const TabsList: {
|
|
34
38
|
(props: TabsListProps): import("react/jsx-runtime").JSX.Element;
|