@vkzstudio/muza-ui 1.0.32 → 1.0.33

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 (71) hide show
  1. package/dist/components/ButtonArrow/ButtonArrow.d.ts +20 -0
  2. package/dist/components/ButtonArrow/ButtonArrow.d.ts.map +1 -0
  3. package/dist/components/ButtonArrow/ButtonArrow.js +63 -0
  4. package/dist/components/ButtonArrow/ButtonArrow.stories.d.ts +37 -0
  5. package/dist/components/ButtonArrow/ButtonArrow.stories.d.ts.map +1 -0
  6. package/dist/components/ButtonArrow/index.d.ts +2 -0
  7. package/dist/components/ButtonArrow/index.d.ts.map +1 -0
  8. package/dist/components/DataTable/DataTable.js +1 -1
  9. package/dist/components/ExpandableTable/ExpandableTable.d.ts +17 -1
  10. package/dist/components/ExpandableTable/ExpandableTable.d.ts.map +1 -1
  11. package/dist/components/ExpandableTable/ExpandableTable.js +273 -192
  12. package/dist/components/ExpandableTable/ExpandableTable.stories.d.ts +3 -1
  13. package/dist/components/ExpandableTable/ExpandableTable.stories.d.ts.map +1 -1
  14. package/dist/components/ExpandableTable/Table.d.ts +3 -7
  15. package/dist/components/ExpandableTable/Table.d.ts.map +1 -1
  16. package/dist/components/ExpandableTable/Table.js +52 -59
  17. package/dist/components/FileUpload/FileItem.d.ts +5 -2
  18. package/dist/components/FileUpload/FileItem.d.ts.map +1 -1
  19. package/dist/components/FileUpload/FileItem.js +91 -69
  20. package/dist/components/FileUpload/FileUpload.d.ts +12 -2
  21. package/dist/components/FileUpload/FileUpload.d.ts.map +1 -1
  22. package/dist/components/FileUpload/FileUpload.js +94 -91
  23. package/dist/components/FileUpload/FileUpload.stories.d.ts +1 -0
  24. package/dist/components/FileUpload/FileUpload.stories.d.ts.map +1 -1
  25. package/dist/components/Flex/Flex.d.ts +1 -1
  26. package/dist/components/Flex/Flex.d.ts.map +1 -1
  27. package/dist/components/Flex/Flex.js +47 -44
  28. package/dist/components/Input/Input.d.ts +2 -2
  29. package/dist/components/Input/Input.d.ts.map +1 -1
  30. package/dist/components/Input/Input.js +47 -46
  31. package/dist/components/Input/Input.stories.d.ts.map +1 -1
  32. package/dist/components/MultiSelect/MultiSelect.d.ts +1 -1
  33. package/dist/components/MultiSelect/MultiSelect.d.ts.map +1 -1
  34. package/dist/components/MultiSelect/MultiSelect.stories.d.ts.map +1 -1
  35. package/dist/components/Pagination/Pagination.d.ts +61 -0
  36. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  37. package/dist/components/Pagination/Pagination.js +213 -0
  38. package/dist/components/Pagination/Pagination.stories.d.ts +12 -0
  39. package/dist/components/Pagination/Pagination.stories.d.ts.map +1 -0
  40. package/dist/components/Pagination/index.d.ts +2 -0
  41. package/dist/components/Pagination/index.d.ts.map +1 -0
  42. package/dist/components/ReorderableTable/ReorderableTable.js +13 -13
  43. package/dist/components/Searchbar/Searchbar.d.ts +1 -1
  44. package/dist/components/Searchbar/Searchbar.d.ts.map +1 -1
  45. package/dist/components/Searchbar/Searchbar.stories.d.ts.map +1 -1
  46. package/dist/components/Select/Select.d.ts +1 -1
  47. package/dist/components/Select/Select.d.ts.map +1 -1
  48. package/dist/components/Select/Select.stories.d.ts.map +1 -1
  49. package/dist/components/Select/utils.d.ts +1 -1
  50. package/dist/components/Select/utils.d.ts.map +1 -1
  51. package/dist/components/Select/utils.js +5 -4
  52. package/dist/components/Typography/Typography.d.ts.map +1 -1
  53. package/dist/components/Typography/Typography.js +1 -2
  54. package/dist/components/index.d.ts +2 -0
  55. package/dist/components/index.d.ts.map +1 -1
  56. package/dist/index.js +223 -218
  57. package/dist/muza-ui.css +1 -1
  58. package/dist/styles/animations.css +0 -20
  59. package/dist/styles/token-colors.css +1 -0
  60. package/dist/styles/token-sizes.css +30 -6
  61. package/dist/translations/locales/cs.d.ts.map +1 -1
  62. package/dist/translations/locales/cs.js +10 -0
  63. package/dist/translations/locales/en.d.ts.map +1 -1
  64. package/dist/translations/locales/en.js +10 -0
  65. package/dist/translations/locales/sk.d.ts.map +1 -1
  66. package/dist/translations/locales/sk.js +10 -0
  67. package/dist/translations/types.d.ts +22 -0
  68. package/dist/translations/types.d.ts.map +1 -1
  69. package/dist/utils/cn.d.ts.map +1 -1
  70. package/dist/utils/cn.js +8 -1
  71. package/package.json +1 -1
@@ -1,22 +1,36 @@
1
- import { jsx as o, jsxs as p, Fragment as m } from "react/jsx-runtime";
1
+ import { jsx as a } from "react/jsx-runtime";
2
2
  import { forwardRef as t } from "react";
3
- import { cva as c } from "class-variance-authority";
3
+ import { cva as s } from "class-variance-authority";
4
4
  import { cn as d } from "../../utils/cn.js";
5
- import { typographyVariants as i } from "../Typography/Typography.js";
6
- const u = t(({ className: a, ...r }, e) => /* @__PURE__ */ o(
5
+ import { typographyVariants as c } from "../Typography/Typography.js";
6
+ const p = t(({ className: o, ...r }, e) => /* @__PURE__ */ a(
7
7
  "table",
8
8
  {
9
9
  ref: e,
10
- className: d("w-full border-separate border-spacing-0", a),
10
+ className: d("w-full border-separate border-spacing-0", o),
11
11
  ...r
12
12
  }
13
13
  ));
14
- u.displayName = "Table";
15
- const y = t(({ className: a, ...r }, e) => /* @__PURE__ */ o("thead", { ref: e, className: a, ...r }));
16
- y.displayName = "TableHeader";
17
- const f = t(({ className: a, ...r }, e) => /* @__PURE__ */ o("tbody", { ref: e, className: a, ...r }));
18
- f.displayName = "TableBody";
19
- const h = c("", {
14
+ p.displayName = "Table";
15
+ const u = t(({ className: o, ...r }, e) => /* @__PURE__ */ a(
16
+ "thead",
17
+ {
18
+ ref: e,
19
+ className: d('after:table-row after:h-md after:content-[""]', o),
20
+ ...r
21
+ }
22
+ ));
23
+ u.displayName = "TableHeader";
24
+ const i = t(({ className: o, ...r }, e) => /* @__PURE__ */ a(
25
+ "tbody",
26
+ {
27
+ ref: e,
28
+ className: d('after:table-row after:h-md after:content-[""]', o),
29
+ ...r
30
+ }
31
+ ));
32
+ i.displayName = "TableRowGroup";
33
+ const f = s("", {
20
34
  variants: {
21
35
  expandablePosition: {
22
36
  none: "",
@@ -27,56 +41,35 @@ const h = c("", {
27
41
  defaultVariants: {
28
42
  expandablePosition: "none"
29
43
  }
30
- }), x = t(
31
- ({
32
- className: a,
33
- hideBottomSpacing: r,
34
- colNumber: e,
35
- expandablePosition: l,
36
- isExpanded: n,
37
- ...s
38
- }, b) => /* @__PURE__ */ p(m, { children: [
39
- /* @__PURE__ */ o(
40
- "tr",
41
- {
42
- ref: b,
43
- className: d(h({ expandablePosition: l }), a),
44
- ...s
45
- }
46
- ),
47
- /* @__PURE__ */ o("tr", { className: d("h-md bg-transparent", { hidden: r }), children: /* @__PURE__ */ o("td", { colSpan: e }) }),
48
- /* @__PURE__ */ o(
49
- "tr",
50
- {
51
- className: d("bg-surface-base-secondary", {
52
- collapse: !n
53
- }),
54
- children: /* @__PURE__ */ o("td", { colSpan: e, className: "h-0 px-comp-table-p", children: /* @__PURE__ */ o("div", { className: "border-t-1 border-stroke-base-secondary" }) })
55
- }
56
- )
57
- ] })
58
- );
59
- x.displayName = "TableRow";
60
- const N = t(({ className: a, ...r }, e) => /* @__PURE__ */ o(
44
+ }), y = t(({ className: o, expandablePosition: r, ...e }, l) => /* @__PURE__ */ a(
45
+ "tr",
46
+ {
47
+ ref: l,
48
+ className: d(f({ expandablePosition: r }), o),
49
+ ...e
50
+ }
51
+ ));
52
+ y.displayName = "TableRow";
53
+ const N = t(({ className: o, ...r }, e) => /* @__PURE__ */ a(
61
54
  "th",
62
55
  {
63
56
  ref: e,
64
57
  className: d(
65
- i({
58
+ c({
66
59
  size: "sm",
67
60
  uppercase: !0,
68
61
  variant: "body",
69
62
  weight: "medium"
70
63
  }),
71
64
  "px-comp-table-p text-left text-text-dark-secondary",
72
- a
65
+ o
73
66
  ),
74
67
  ...r
75
68
  }
76
69
  ));
77
70
  N.displayName = "TableHead";
78
- const T = c(
79
- "h-comp-table-h border-y-1 border-stroke-base-secondary bg-surface-base-secondary transition-colors",
71
+ const T = s(
72
+ "h-comp-table-h-def border-y-1 border-stroke-base-secondary bg-surface-base-secondary transition-colors",
80
73
  {
81
74
  variants: {
82
75
  padding: {
@@ -94,33 +87,33 @@ const T = c(
94
87
  expandablePosition: "none"
95
88
  }
96
89
  }
97
- ), g = t(
98
- ({ className: a, padding: r, expandablePosition: e, isFirst: l, isLast: n, ...s }, b) => /* @__PURE__ */ o(
90
+ ), _ = t(
91
+ ({ className: o, padding: r, expandablePosition: e, isFirst: l, isLast: n, ...b }, m) => /* @__PURE__ */ a(
99
92
  "td",
100
93
  {
101
- ref: b,
94
+ ref: m,
102
95
  className: d(
103
96
  T({ padding: r, expandablePosition: e }),
104
97
  {
105
- "rounded-l-xl border-l-1": l && e === "none",
98
+ "rounded-l-xl border-l-1 [transition:border-radius_50ms_ease-out_0ms,color_150ms,background-color_150ms,border-color_150ms]": l && e === "none",
106
99
  "rounded-tl-xl rounded-bl-none border-l-1": l && e === "top",
107
100
  "rounded-tl-none rounded-bl-xl border-l-1": l && e === "bottom",
108
- "rounded-r-xl border-r-1": n && e === "none",
101
+ "rounded-r-xl border-r-1 [transition:border-radius_50ms_ease-out_0ms,color_150ms,background-color_150ms,border-color_150ms]": n && e === "none",
109
102
  "rounded-tr-xl rounded-br-none border-r-1": n && e === "top",
110
103
  "rounded-tr-none rounded-br-xl border-r-1": n && e === "bottom"
111
104
  },
112
- a
105
+ o
113
106
  ),
114
- ...s
107
+ ...b
115
108
  }
116
109
  )
117
110
  );
118
- g.displayName = "TableCell";
111
+ _.displayName = "TableCell";
119
112
  export {
120
- u as Table,
121
- f as TableBody,
122
- g as TableCell,
113
+ p as Table,
114
+ _ as TableCell,
123
115
  N as TableHead,
124
- y as TableHeader,
125
- x as TableRow
116
+ u as TableHeader,
117
+ y as TableRow,
118
+ i as TableRowGroup
126
119
  };
@@ -1,11 +1,14 @@
1
+ import * as React from 'react';
1
2
  interface FileItemBaseProps {
2
3
  uploaded?: boolean;
3
4
  progress?: number;
4
5
  size?: 'sm' | 'base' | 'lg';
5
6
  disabled?: boolean;
6
7
  readOnly?: boolean;
7
- note?: string;
8
- error?: string;
8
+ note?: React.ReactNode;
9
+ error?: React.ReactNode;
10
+ /** Secondary text displayed below the file name (e.g., file size). */
11
+ secondaryText?: React.ReactNode;
9
12
  onDelete: () => void;
10
13
  onError?: (error: string, file?: File) => void;
11
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FileItem.d.ts","sourceRoot":"","sources":["../../../src/components/FileUpload/FileItem.tsx"],"names":[],"mappings":"AA6CA,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;CAC/C;AAED,UAAU,iBAAkB,SAAQ,iBAAiB;IACnD,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,IAAI,CAAA;CACX;AAED,UAAU,gBAAiB,SAAQ,iBAAiB;IAClD,MAAM,EAAE,KAAK,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,KAAK,aAAa,GAAG,iBAAiB,GAAG,gBAAgB,CAAA;AA0EzD,eAAO,MAAM,QAAQ,GAAI,OAAO,aAAa,4CA8M5C,CAAA"}
1
+ {"version":3,"file":"FileItem.d.ts","sourceRoot":"","sources":["../../../src/components/FileUpload/FileItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA8C9B,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,sEAAsE;IACtE,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;CAC/C;AAED,UAAU,iBAAkB,SAAQ,iBAAiB;IACnD,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,IAAI,CAAA;CACX;AAED,UAAU,gBAAiB,SAAQ,iBAAiB;IAClD,MAAM,EAAE,KAAK,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,KAAK,aAAa,GAAG,iBAAiB,GAAG,gBAAgB,CAAA;AA0EzD,eAAO,MAAM,QAAQ,GAAI,OAAO,aAAa,4CAmO5C,CAAA"}
@@ -1,21 +1,22 @@
1
- import { jsxs as b, jsx as t } from "react/jsx-runtime";
2
- import * as f from "react";
3
- import { cva as C } from "class-variance-authority";
4
- import { useMuzaTranslations as O } from "../../translations/TranslationContext.js";
5
- import { cn as l } from "../../utils/cn.js";
6
- import { GalleryOutline as T, FileTextBold as B, CloseCircleBold as M, DownloadMinimalisticBold as I, TrashBinTrashBold as R } from "@solar-icons/react-perf";
7
- import { Typography as x } from "../Typography/Typography.js";
8
- const j = (e, a, i) => {
1
+ import { jsxs as f, jsx as t } from "react/jsx-runtime";
2
+ import * as p from "react";
3
+ import { cva as O } from "class-variance-authority";
4
+ import { useMuzaTranslations as _ } from "../../translations/TranslationContext.js";
5
+ import { Flex as U } from "../Flex/Flex.js";
6
+ import { cn as a } from "../../utils/cn.js";
7
+ import { GalleryOutline as B, FileTextBold as M, CloseCircleBold as j, DownloadMinimalisticBold as I, TrashBinTrashBold as R } from "@solar-icons/react-perf";
8
+ import { Typography as u } from "../Typography/Typography.js";
9
+ const D = (e, l, i) => {
9
10
  let n = null, o = null;
10
11
  try {
11
12
  n = URL.createObjectURL(e), o = document.createElement("a"), o.href = n, o.download = e.name, o.style.display = "none", document.body.appendChild(o), o.click();
12
13
  } catch (d) {
13
14
  const c = d instanceof Error ? d.message : i ?? "Download failed";
14
- console.error("Download failed:", d), a == null || a(c, e);
15
+ console.error("Download failed:", d), l == null || l(c, e);
15
16
  } finally {
16
17
  o && document.body.contains(o) && document.body.removeChild(o), n && URL.revokeObjectURL(n);
17
18
  }
18
- }, D = C(
19
+ }, S = O(
19
20
  [
20
21
  "flex flex-1 items-center gap-sm rounded-full border transition-colors",
21
22
  "relative pr-comp-input-p-hor pl-comp-input-p-hor",
@@ -60,13 +61,13 @@ const j = (e, a, i) => {
60
61
  size: "base"
61
62
  }
62
63
  }
63
- ), h = l([
64
+ ), h = a([
64
65
  "relative h-fit w-fit border-none rounded-full focus-visible-default",
65
66
  "before:absolute before:inset-[-3px]",
66
67
  "bg-none cursor-pointer disabled:cursor-not-allowed",
67
68
  "text-comp-file-upload-icon-def-secondary",
68
69
  "disabled:text-comp-file-upload-icon-def-disabled"
69
- ]), S = /\.(jpe?g|png|gif|webp|svg|bmp|ico|avif|tiff?)$/i, k = /\.(pdf|docx?|txt|rtf|odt|xlsx?|csv|pptx?|md|tex)$/i, U = [
70
+ ]), A = /\.(jpe?g|png|gif|webp|svg|bmp|ico|avif|tiff?)$/i, z = /\.(pdf|docx?|txt|rtf|odt|xlsx?|csv|pptx?|md|tex)$/i, E = [
70
71
  "application/pdf",
71
72
  "application/msword",
72
73
  "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
@@ -79,49 +80,50 @@ const j = (e, a, i) => {
79
80
  "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
80
81
  "application/vnd.ms-powerpoint",
81
82
  "application/vnd.openxmlformats-officedocument.presentationml.presentation"
82
- ], W = (e) => {
83
+ ], P = (e) => {
83
84
  const {
84
- uploaded: a,
85
+ uploaded: l,
85
86
  progress: i,
86
87
  size: n,
87
88
  disabled: o,
88
89
  readOnly: d = !1,
89
90
  note: c,
90
91
  error: s,
91
- onDelete: g,
92
- onError: z
93
- } = e, m = O(), [v, y] = f.useState(!1), w = e.source === "file" ? e.file.name : e.name, p = e.source === "url" ? (e.type ?? "").startsWith("image/") || S.test(e.name) : e.file.type.startsWith("image/"), E = e.source === "url" ? U.includes(e.type ?? "") || k.test(e.name) : U.includes(e.file.type) || k.test(e.file.name), r = e.source === "file" ? e.file : e.url, L = f.useMemo(() => o ? "disabled" : s ? "error" : typeof i == "number" && i > 0 ? "loading" : "default", [o, s, i]), u = f.useMemo(() => {
94
- if (p)
92
+ secondaryText: g,
93
+ onDelete: y,
94
+ onError: L
95
+ } = e, m = _(), [v, w] = p.useState(!1), N = e.source === "file" ? e.file.name : e.name, b = e.source === "url" ? (e.type ?? "").startsWith("image/") || A.test(e.name) : e.file.type.startsWith("image/"), T = e.source === "url" ? E.includes(e.type ?? "") || z.test(e.name) : E.includes(e.file.type) || z.test(e.file.name), r = e.source === "file" ? e.file : e.url, C = p.useMemo(() => o ? "disabled" : s ? "error" : typeof i == "number" && i > 0 ? "loading" : "default", [o, s, i]), x = p.useMemo(() => {
96
+ if (b)
95
97
  return typeof r == "string" ? r : URL.createObjectURL(r);
96
- }, [p, r]);
97
- return f.useEffect(() => y(!1), [r]), /* @__PURE__ */ b("li", { className: "flex flex-col gap-sm", children: [
98
- /* @__PURE__ */ b(
98
+ }, [b, r]);
99
+ return p.useEffect(() => w(!1), [r]), /* @__PURE__ */ f(U, { gap: "sm", direction: "column", component: "li", children: [
100
+ /* @__PURE__ */ f(
99
101
  "div",
100
102
  {
101
- className: l(
102
- D({
103
- variant: L,
103
+ className: a(
104
+ S({
105
+ variant: C,
104
106
  size: n
105
107
  })
106
108
  ),
107
109
  children: [
108
- u && !v && /* @__PURE__ */ t(
110
+ x && !v && /* @__PURE__ */ t(
109
111
  "img",
110
112
  {
111
- src: u,
112
- alt: w,
113
+ src: x,
114
+ alt: N,
113
115
  width: 24,
114
116
  height: 24,
115
- onError: () => y(!0),
116
- className: l("size-icon-medium shrink-0 rounded-xs object-cover", {
117
+ onError: () => w(!0),
118
+ className: a("size-icon-medium shrink-0 rounded-xs object-cover", {
117
119
  "opacity-50 saturate-0": o
118
120
  })
119
121
  }
120
122
  ),
121
- u && v && /* @__PURE__ */ t(
122
- T,
123
+ x && v && /* @__PURE__ */ t(
124
+ B,
123
125
  {
124
- className: l(
126
+ className: a(
125
127
  "size-icon-medium shrink-0 text-comp-file-upload-icon-def-secondary",
126
128
  {
127
129
  "opacity-50": o
@@ -129,10 +131,10 @@ const j = (e, a, i) => {
129
131
  )
130
132
  }
131
133
  ),
132
- !p && E && /* @__PURE__ */ t(
133
- B,
134
+ !b && T && /* @__PURE__ */ t(
135
+ M,
134
136
  {
135
- className: l(
137
+ className: a(
136
138
  "size-icon-medium shrink-0 text-comp-file-upload-icon-def-secondary",
137
139
  {
138
140
  "opacity-50": o
@@ -140,57 +142,72 @@ const j = (e, a, i) => {
140
142
  )
141
143
  }
142
144
  ),
143
- /* @__PURE__ */ t(
144
- x,
145
- {
146
- className: "flex-grow truncate",
147
- component: "span",
148
- size: "sm",
149
- fixY: !0,
150
- children: w
151
- }
152
- ),
153
- !a && /* @__PURE__ */ t(
145
+ /* @__PURE__ */ f(U, { direction: "column", className: "min-w-0 flex-1 justify-center", children: [
146
+ /* @__PURE__ */ t(
147
+ u,
148
+ {
149
+ className: "w-full truncate",
150
+ component: "span",
151
+ size: "sm",
152
+ variant: "body",
153
+ weight: "medium",
154
+ fixY: !0,
155
+ children: N
156
+ }
157
+ ),
158
+ g && /* @__PURE__ */ t(
159
+ u,
160
+ {
161
+ className: "w-full truncate text-comp-file-upload-text-dark-secondary",
162
+ component: "span",
163
+ variant: "body",
164
+ size: "caption",
165
+ weight: "regular",
166
+ children: g
167
+ }
168
+ )
169
+ ] }),
170
+ !l && /* @__PURE__ */ t(
154
171
  "button",
155
172
  {
156
173
  disabled: o,
157
- onClick: g,
174
+ onClick: y,
158
175
  "aria-label": m.fileUpload.deleteButtonAriaLabel,
159
- className: l(
176
+ className: a(
160
177
  h,
161
178
  "text-comp-file-upload-icon-def-secondary",
162
179
  "hover:text-comp-file-upload-icon-def-hover",
163
180
  "focus-visible:text-comp-file-upload-icon-def-focused",
164
181
  "disabled:text-comp-file-upload-icon-def-disabled"
165
182
  ),
166
- children: /* @__PURE__ */ t(M, { className: "size-icon-medium" })
183
+ children: /* @__PURE__ */ t(j, { className: "size-icon-medium" })
167
184
  }
168
185
  ),
169
- a && /* @__PURE__ */ b("div", { className: "flex gap-xl", children: [
186
+ l && /* @__PURE__ */ f("div", { className: "flex gap-xl", children: [
170
187
  /* @__PURE__ */ t(
171
188
  "button",
172
189
  {
173
190
  disabled: o,
174
191
  onClick: () => e.source === "url" ? (() => {
175
192
  try {
176
- const N = new URL(
193
+ const k = new URL(
177
194
  e.url,
178
195
  window.location.origin
179
196
  );
180
- ["http:", "https:", "blob:"].includes(N.protocol) && window.open(
181
- N.href,
197
+ ["http:", "https:", "blob:"].includes(k.protocol) && window.open(
198
+ k.href,
182
199
  "_blank",
183
200
  "noopener,noreferrer"
184
201
  );
185
202
  } catch {
186
203
  }
187
- })() : j(
204
+ })() : D(
188
205
  e.file,
189
- z,
206
+ L,
190
207
  m.fileUpload.downloadError
191
208
  ),
192
209
  "aria-label": m.fileUpload.downloadButtonAriaLabel,
193
- className: l(
210
+ className: a(
194
211
  h,
195
212
  "text-comp-file-upload-icon-brand-def",
196
213
  "hover:text-comp-file-upload-icon-brand-hover",
@@ -204,9 +221,9 @@ const j = (e, a, i) => {
204
221
  "button",
205
222
  {
206
223
  disabled: o,
207
- onClick: g,
224
+ onClick: y,
208
225
  "aria-label": m.fileUpload.deleteButtonAriaLabel,
209
- className: l(
226
+ className: a(
210
227
  h,
211
228
  "text-comp-file-upload-icon-error-def",
212
229
  "hover:text-comp-file-upload-icon-error-hover",
@@ -220,37 +237,42 @@ const j = (e, a, i) => {
220
237
  typeof i == "number" && i !== 0 && /* @__PURE__ */ t(
221
238
  "div",
222
239
  {
223
- style: { width: `${i}%` },
224
- className: "absolute bottom-0 left-0 min-h-[3px] bg-comp-file-upload-icon-brand-def transition-[width] duration-300 ease-out"
240
+ style: {
241
+ width: `${i}%`
242
+ },
243
+ className: a(
244
+ "absolute bottom-0 left-0 min-h-[3px] bg-comp-file-upload-icon-brand-def [transition:width_300ms_ease-out,opacity_100ms_ease-out_200ms]",
245
+ { "opacity-0": i === 100 }
246
+ )
225
247
  }
226
248
  )
227
249
  ]
228
250
  }
229
251
  ),
230
- c && /* @__PURE__ */ t(
231
- x,
252
+ s && /* @__PURE__ */ t(
253
+ u,
232
254
  {
233
255
  size: "sm",
234
256
  component: "span",
235
257
  variant: "body",
236
258
  weight: "regular",
237
- className: "text-comp-input-text-secondary",
238
- children: c
259
+ className: "text-comp-input-text-error",
260
+ children: s
239
261
  }
240
262
  ),
241
- s && /* @__PURE__ */ t(
242
- x,
263
+ c && /* @__PURE__ */ t(
264
+ u,
243
265
  {
244
266
  size: "sm",
245
267
  component: "span",
246
268
  variant: "body",
247
269
  weight: "regular",
248
- className: "text-comp-input-text-error",
249
- children: s
270
+ className: "text-comp-input-text-secondary",
271
+ children: c
250
272
  }
251
273
  )
252
274
  ] });
253
275
  };
254
276
  export {
255
- W as FileItem
277
+ P as FileItem
256
278
  };
@@ -19,6 +19,8 @@ export interface PreselectedUrl {
19
19
  type?: string;
20
20
  /** File size in bytes (for display). */
21
21
  size?: number;
22
+ /** Secondary text displayed below the file name (e.g., formatted file size). */
23
+ secondaryText?: React.ReactNode;
22
24
  }
23
25
  /**
24
26
  * Props for the FileUpload component.
@@ -88,7 +90,7 @@ export interface FileUploadProps extends Omit<React.HTMLAttributes<HTMLDivElemen
88
90
  * const errors = new Map<File, string>([[file, 'Upload failed']])
89
91
  * <FileUpload itemErrors={errors} />
90
92
  */
91
- itemErrors?: Map<File, string>;
93
+ itemErrors?: Map<File, React.ReactNode>;
92
94
  /**
93
95
  * Per-file hint messages keyed by File reference.
94
96
  *
@@ -96,7 +98,15 @@ export interface FileUploadProps extends Omit<React.HTMLAttributes<HTMLDivElemen
96
98
  * const hints = new Map<File, string>([[file, 'Will be optimized']])
97
99
  * <FileUpload itemHints={hints} />
98
100
  */
99
- itemHints?: Map<File, string>;
101
+ itemHints?: Map<File, React.ReactNode>;
102
+ /**
103
+ * Per-file secondary text keyed by File reference (e.g., formatted file size).
104
+ *
105
+ * @example
106
+ * const texts = new Map<File, React.ReactNode>([[file, '7 MB']])
107
+ * <FileUpload itemSecondaryTexts={texts} />
108
+ */
109
+ itemSecondaryTexts?: Map<File, React.ReactNode>;
100
110
  /** Fires when an error occurs. Receives the error message and the optional file that caused it. */
101
111
  onError?: (error: string, file?: File) => void;
102
112
  /** Fires when a file is deleted. Receives the deleted file and its index. */
@@ -1 +1 @@
1
- {"version":3,"file":"FileUpload.d.ts","sourceRoot":"","sources":["../../../src/components/FileUpload/FileUpload.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileUpload.d.ts","sourceRoot":"","sources":["../../../src/components/FileUpload/FileUpload.tsx"],"names":[],"mappings":"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"}