@treeal/ds 0.1.0

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 (143) hide show
  1. package/README.md +48 -0
  2. package/dist/assets/style.css +1 -0
  3. package/dist/components/Alert/Alert.d.ts +19 -0
  4. package/dist/components/Alert/Alert.d.ts.map +1 -0
  5. package/dist/components/Alert/index.d.ts +3 -0
  6. package/dist/components/Alert/index.d.ts.map +1 -0
  7. package/dist/components/BaseCheckRadio/BaseCheckRadio.d.ts +14 -0
  8. package/dist/components/BaseCheckRadio/BaseCheckRadio.d.ts.map +1 -0
  9. package/dist/components/BaseCheckRadio/index.d.ts +3 -0
  10. package/dist/components/BaseCheckRadio/index.d.ts.map +1 -0
  11. package/dist/components/Button/Button.d.ts +21 -0
  12. package/dist/components/Button/Button.d.ts.map +1 -0
  13. package/dist/components/Button/index.d.ts +3 -0
  14. package/dist/components/Button/index.d.ts.map +1 -0
  15. package/dist/components/Header/Header.d.ts +28 -0
  16. package/dist/components/Header/Header.d.ts.map +1 -0
  17. package/dist/components/Header/index.d.ts +3 -0
  18. package/dist/components/Header/index.d.ts.map +1 -0
  19. package/dist/components/Input/Input.d.ts +21 -0
  20. package/dist/components/Input/Input.d.ts.map +1 -0
  21. package/dist/components/Input/index.d.ts +3 -0
  22. package/dist/components/Input/index.d.ts.map +1 -0
  23. package/dist/components/Modal/Modal.d.ts +17 -0
  24. package/dist/components/Modal/Modal.d.ts.map +1 -0
  25. package/dist/components/Modal/index.d.ts +3 -0
  26. package/dist/components/Modal/index.d.ts.map +1 -0
  27. package/dist/components/Nav/Nav.d.ts +48 -0
  28. package/dist/components/Nav/Nav.d.ts.map +1 -0
  29. package/dist/components/Nav/index.d.ts +3 -0
  30. package/dist/components/Nav/index.d.ts.map +1 -0
  31. package/dist/components/Pagination/Pagination.d.ts +14 -0
  32. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  33. package/dist/components/Pagination/index.d.ts +3 -0
  34. package/dist/components/Pagination/index.d.ts.map +1 -0
  35. package/dist/components/Steps/Steps.d.ts +14 -0
  36. package/dist/components/Steps/Steps.d.ts.map +1 -0
  37. package/dist/components/Steps/index.d.ts +3 -0
  38. package/dist/components/Steps/index.d.ts.map +1 -0
  39. package/dist/components/Upload/Upload.d.ts +33 -0
  40. package/dist/components/Upload/Upload.d.ts.map +1 -0
  41. package/dist/components/Upload/index.d.ts +3 -0
  42. package/dist/components/Upload/index.d.ts.map +1 -0
  43. package/dist/components/index.d.ts +25 -0
  44. package/dist/components/index.d.ts.map +1 -0
  45. package/dist/index.cjs.js +2 -0
  46. package/dist/index.cjs.js.map +1 -0
  47. package/dist/index.cjs10.js +2 -0
  48. package/dist/index.cjs10.js.map +1 -0
  49. package/dist/index.cjs11.js +2 -0
  50. package/dist/index.cjs11.js.map +1 -0
  51. package/dist/index.cjs12.js +2 -0
  52. package/dist/index.cjs12.js.map +1 -0
  53. package/dist/index.cjs13.js +2 -0
  54. package/dist/index.cjs13.js.map +1 -0
  55. package/dist/index.cjs14.js +2 -0
  56. package/dist/index.cjs14.js.map +1 -0
  57. package/dist/index.cjs15.js +2 -0
  58. package/dist/index.cjs15.js.map +1 -0
  59. package/dist/index.cjs16.js +2 -0
  60. package/dist/index.cjs16.js.map +1 -0
  61. package/dist/index.cjs17.js +2 -0
  62. package/dist/index.cjs17.js.map +1 -0
  63. package/dist/index.cjs18.js +2 -0
  64. package/dist/index.cjs18.js.map +1 -0
  65. package/dist/index.cjs19.js +2 -0
  66. package/dist/index.cjs19.js.map +1 -0
  67. package/dist/index.cjs2.js +2 -0
  68. package/dist/index.cjs2.js.map +1 -0
  69. package/dist/index.cjs20.js +2 -0
  70. package/dist/index.cjs20.js.map +1 -0
  71. package/dist/index.cjs21.js +2 -0
  72. package/dist/index.cjs21.js.map +1 -0
  73. package/dist/index.cjs22.js +2 -0
  74. package/dist/index.cjs22.js.map +1 -0
  75. package/dist/index.cjs23.js +2 -0
  76. package/dist/index.cjs23.js.map +1 -0
  77. package/dist/index.cjs3.js +2 -0
  78. package/dist/index.cjs3.js.map +1 -0
  79. package/dist/index.cjs4.js +2 -0
  80. package/dist/index.cjs4.js.map +1 -0
  81. package/dist/index.cjs5.js +2 -0
  82. package/dist/index.cjs5.js.map +1 -0
  83. package/dist/index.cjs6.js +2 -0
  84. package/dist/index.cjs6.js.map +1 -0
  85. package/dist/index.cjs7.js +2 -0
  86. package/dist/index.cjs7.js.map +1 -0
  87. package/dist/index.cjs8.js +2 -0
  88. package/dist/index.cjs8.js.map +1 -0
  89. package/dist/index.cjs9.js +2 -0
  90. package/dist/index.cjs9.js.map +1 -0
  91. package/dist/index.esm.js +27 -0
  92. package/dist/index.esm.js.map +1 -0
  93. package/dist/index.esm10.js +238 -0
  94. package/dist/index.esm10.js.map +1 -0
  95. package/dist/index.esm11.js +177 -0
  96. package/dist/index.esm11.js.map +1 -0
  97. package/dist/index.esm12.js +93 -0
  98. package/dist/index.esm12.js.map +1 -0
  99. package/dist/index.esm13.js +222 -0
  100. package/dist/index.esm13.js.map +1 -0
  101. package/dist/index.esm14.js +26 -0
  102. package/dist/index.esm14.js.map +1 -0
  103. package/dist/index.esm15.js +34 -0
  104. package/dist/index.esm15.js.map +1 -0
  105. package/dist/index.esm16.js +64 -0
  106. package/dist/index.esm16.js.map +1 -0
  107. package/dist/index.esm17.js +64 -0
  108. package/dist/index.esm17.js.map +1 -0
  109. package/dist/index.esm18.js +42 -0
  110. package/dist/index.esm18.js.map +1 -0
  111. package/dist/index.esm19.js +26 -0
  112. package/dist/index.esm19.js.map +1 -0
  113. package/dist/index.esm2.js +98 -0
  114. package/dist/index.esm2.js.map +1 -0
  115. package/dist/index.esm20.js +24 -0
  116. package/dist/index.esm20.js.map +1 -0
  117. package/dist/index.esm21.js +52 -0
  118. package/dist/index.esm21.js.map +1 -0
  119. package/dist/index.esm22.js +26 -0
  120. package/dist/index.esm22.js.map +1 -0
  121. package/dist/index.esm23.js +106 -0
  122. package/dist/index.esm23.js.map +1 -0
  123. package/dist/index.esm3.js +62 -0
  124. package/dist/index.esm3.js.map +1 -0
  125. package/dist/index.esm4.js +115 -0
  126. package/dist/index.esm4.js.map +1 -0
  127. package/dist/index.esm5.js +69 -0
  128. package/dist/index.esm5.js.map +1 -0
  129. package/dist/index.esm6.js +37 -0
  130. package/dist/index.esm6.js.map +1 -0
  131. package/dist/index.esm7.js +182 -0
  132. package/dist/index.esm7.js.map +1 -0
  133. package/dist/index.esm8.js +69 -0
  134. package/dist/index.esm8.js.map +1 -0
  135. package/dist/index.esm9.js +78 -0
  136. package/dist/index.esm9.js.map +1 -0
  137. package/dist/tokens/colors.d.ts +122 -0
  138. package/dist/tokens/colors.d.ts.map +1 -0
  139. package/dist/tokens/index.d.ts +5 -0
  140. package/dist/tokens/index.d.ts.map +1 -0
  141. package/dist/tokens/typography.d.ts +66 -0
  142. package/dist/tokens/typography.d.ts.map +1 -0
  143. package/package.json +55 -0
@@ -0,0 +1,222 @@
1
+ import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
+ import { useRef as L, useState as w } from "react";
3
+ import r from "./index.esm16.js";
4
+ const y = () => /* @__PURE__ */ a("svg", { viewBox: "0 0 12 12", width: "12", height: "12", "aria-hidden": "true", children: [
5
+ /* @__PURE__ */ e("defs", { children: /* @__PURE__ */ a("linearGradient", { id: "fileGrad", x1: "0%", y1: "100%", x2: "100%", y2: "0%", children: [
6
+ /* @__PURE__ */ e("stop", { offset: "0%", stopColor: "#2970FF" }),
7
+ /* @__PURE__ */ e("stop", { offset: "100%", stopColor: "#0040C1" })
8
+ ] }) }),
9
+ /* @__PURE__ */ e(
10
+ "path",
11
+ {
12
+ fill: "url(#fileGrad)",
13
+ d: "M2 0h5.5L10 2.5V12H2V0zm5 0v3h3L7 0zM3 5h6v1H3V5zm0 2h6v1H3V7zm0 2h4v1H3V9z"
14
+ }
15
+ )
16
+ ] }), b = () => /* @__PURE__ */ e("svg", { viewBox: "0 0 12 12", width: "12", height: "12", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ e("path", { d: "M8.707.293a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414L9.414 5.1 6.9 2.586 8.707.293zM0 9.5V12h2.5l7-7L7 2.5l-7 7zM1.5 10.5v-.793l5.5-5.5.793.793-5.5 5.5H1.5z" }) }), D = () => /* @__PURE__ */ e("svg", { viewBox: "0 0 12 12", width: "12", height: "12", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ e("path", { d: "M6 2C3.27 2 1 4 1 6s2.27 4 5 4 5-2 5-4-2.27-4-5-4zm0 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-5a2 2 0 1 0 0 4 2 2 0 0 0 0-4z" }) }), I = () => /* @__PURE__ */ e("svg", { viewBox: "0 0 12 12", width: "12", height: "12", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ e("path", { d: "M4 1V0h4v1h3v1H1V1h3zM2 3h8l-.8 8H2.8L2 3zm2 1v6h1V4H4zm2 0v6h1V4H6z" }) }), W = () => /* @__PURE__ */ a("svg", { width: "32", height: "32", viewBox: "0 0 32 32", fill: "none", "aria-hidden": "true", children: [
17
+ /* @__PURE__ */ e(
18
+ "rect",
19
+ {
20
+ x: "18",
21
+ y: "10",
22
+ width: "10",
23
+ height: "13",
24
+ rx: "1.5",
25
+ fill: "#DBE8FF",
26
+ stroke: "#B2C9FF",
27
+ strokeWidth: "0.5",
28
+ transform: "rotate(12 18 10)"
29
+ }
30
+ ),
31
+ /* @__PURE__ */ e(
32
+ "rect",
33
+ {
34
+ x: "4",
35
+ y: "10",
36
+ width: "10",
37
+ height: "13",
38
+ rx: "1.5",
39
+ fill: "#DBE8FF",
40
+ stroke: "#B2C9FF",
41
+ strokeWidth: "0.5",
42
+ transform: "rotate(-12 4 10)"
43
+ }
44
+ ),
45
+ /* @__PURE__ */ e("rect", { x: "10", y: "7", width: "12", height: "16", rx: "1.5", fill: "#FFFFFF", stroke: "#B2C9FF", strokeWidth: "1" }),
46
+ /* @__PURE__ */ e("path", { d: "M13 12h6M13 15h6M13 18h4", stroke: "#B2C9FF", strokeWidth: "1", strokeLinecap: "round" }),
47
+ /* @__PURE__ */ e("circle", { cx: "23", cy: "23", r: "5", fill: "#2970FF" }),
48
+ /* @__PURE__ */ e("path", { d: "M23 26v-6M20.5 22.5L23 20l2.5 2.5", stroke: "#FFF", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
49
+ ] }), H = () => /* @__PURE__ */ a("svg", { width: "96", height: "64", viewBox: "0 0 96 64", fill: "none", "aria-hidden": "true", children: [
50
+ /* @__PURE__ */ a("g", { transform: "rotate(15 70 35)", children: [
51
+ /* @__PURE__ */ e("rect", { x: "55", y: "18", width: "28", height: "36", rx: "3", fill: "#DBE8FF", stroke: "#B2C9FF", strokeWidth: "1" }),
52
+ /* @__PURE__ */ e("path", { d: "M61 28h16M61 34h16M61 40h10", stroke: "#B2C9FF", strokeWidth: "1.5", strokeLinecap: "round" })
53
+ ] }),
54
+ /* @__PURE__ */ a("g", { transform: "rotate(-15 26 35)", children: [
55
+ /* @__PURE__ */ e("rect", { x: "13", y: "18", width: "28", height: "36", rx: "3", fill: "#DBE8FF", stroke: "#B2C9FF", strokeWidth: "1" }),
56
+ /* @__PURE__ */ e("path", { d: "M19 28h16M19 34h16M19 40h10", stroke: "#B2C9FF", strokeWidth: "1.5", strokeLinecap: "round" })
57
+ ] }),
58
+ /* @__PURE__ */ e("rect", { x: "30", y: "8", width: "36", height: "48", rx: "3", fill: "#FFFFFF", stroke: "#B2C9FF", strokeWidth: "1.5" }),
59
+ /* @__PURE__ */ e("path", { d: "M38 22h20M38 30h20M38 38h14", stroke: "#B2C9FF", strokeWidth: "1.5", strokeLinecap: "round" }),
60
+ /* @__PURE__ */ e("circle", { cx: "76", cy: "50", r: "10", fill: "#2970FF" }),
61
+ /* @__PURE__ */ e("path", { d: "M76 55v-10M71 48l5-5 5 5", stroke: "#FFF", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })
62
+ ] });
63
+ function V({ file: t, size: n, onEdit: s, onPreview: o, onRemove: l }) {
64
+ const h = t.state === "loading" || t.indicator === "loader", c = n === "LG" && t.indicator !== "loader";
65
+ return /* @__PURE__ */ a(
66
+ "div",
67
+ {
68
+ className: [
69
+ r.fileItem,
70
+ n === "LG" ? r.fileItemLg : r.fileItemMd
71
+ ].join(" "),
72
+ children: [
73
+ /* @__PURE__ */ e("div", { className: r.fileBadge, children: /* @__PURE__ */ e(y, {}) }),
74
+ /* @__PURE__ */ a("div", { className: r.fileContent, children: [
75
+ /* @__PURE__ */ a("div", { className: r.fileHeader, children: [
76
+ /* @__PURE__ */ a("div", { className: r.fileTexts, children: [
77
+ /* @__PURE__ */ e("p", { className: r.fileName, children: t.name }),
78
+ /* @__PURE__ */ e("p", { className: r.fileSize, children: t.size })
79
+ ] }),
80
+ h ? /* @__PURE__ */ e("div", { className: r.spinner, role: "status", "aria-label": "Uploading…" }) : /* @__PURE__ */ a("div", { className: r.actions, children: [
81
+ /* @__PURE__ */ e(
82
+ "button",
83
+ {
84
+ className: r.actionBtn,
85
+ onClick: () => s == null ? void 0 : s(t.id),
86
+ "aria-label": `Edit ${t.name}`,
87
+ type: "button",
88
+ children: /* @__PURE__ */ e(b, {})
89
+ }
90
+ ),
91
+ /* @__PURE__ */ e(
92
+ "button",
93
+ {
94
+ className: r.actionBtn,
95
+ onClick: () => o == null ? void 0 : o(t.id),
96
+ "aria-label": `Preview ${t.name}`,
97
+ type: "button",
98
+ children: /* @__PURE__ */ e(D, {})
99
+ }
100
+ ),
101
+ /* @__PURE__ */ e(
102
+ "button",
103
+ {
104
+ className: r.actionBtn,
105
+ onClick: () => l == null ? void 0 : l(t.id),
106
+ "aria-label": `Remove ${t.name}`,
107
+ type: "button",
108
+ children: /* @__PURE__ */ e(I, {})
109
+ }
110
+ )
111
+ ] })
112
+ ] }),
113
+ c && /* @__PURE__ */ a("div", { className: r.progressRow, children: [
114
+ /* @__PURE__ */ e("div", { className: r.progressTrack, children: /* @__PURE__ */ e(
115
+ "div",
116
+ {
117
+ className: r.progressFill,
118
+ style: { width: `${Math.min(100, Math.max(0, t.progress))}%` },
119
+ role: "progressbar",
120
+ "aria-valuenow": t.progress,
121
+ "aria-valuemin": 0,
122
+ "aria-valuemax": 100
123
+ }
124
+ ) }),
125
+ /* @__PURE__ */ a("p", { className: r.progressLabel, children: [
126
+ t.progress,
127
+ "%"
128
+ ] })
129
+ ] })
130
+ ] })
131
+ ]
132
+ }
133
+ );
134
+ }
135
+ function $({
136
+ size: t = "LG",
137
+ type: n = "multiple",
138
+ status: s = "default",
139
+ files: o = [],
140
+ onDrop: l,
141
+ onRemove: h,
142
+ onEdit: c,
143
+ onPreview: u,
144
+ accept: f,
145
+ className: v
146
+ }) {
147
+ const m = L(null), [k, p] = w(!1), M = (i) => {
148
+ i.preventDefault(), p(!0);
149
+ }, x = (i) => {
150
+ i.preventDefault(), p(!1);
151
+ }, N = (i) => {
152
+ i.preventDefault(), p(!1);
153
+ const d = Array.from(i.dataTransfer.files);
154
+ d.length && (l == null || l(d));
155
+ }, B = (i) => {
156
+ const d = Array.from(i.target.files ?? []);
157
+ d.length && (l == null || l(d)), i.target.value = "";
158
+ }, g = () => {
159
+ var i;
160
+ return (i = m.current) == null ? void 0 : i.click();
161
+ }, z = n === "single" && s === "active" && o.length > 0, C = [
162
+ r.dropzone,
163
+ t === "MD" ? r.dropzoneMd : r.dropzoneLg,
164
+ k ? r.dropzoneDragging : ""
165
+ ].filter(Boolean).join(" "), F = n === "multiple" ? "Drop your files here, or" : "Drop your file here, or";
166
+ return /* @__PURE__ */ a("div", { className: [r.wrapper, v].filter(Boolean).join(" "), children: [
167
+ /* @__PURE__ */ e(
168
+ "input",
169
+ {
170
+ ref: m,
171
+ type: "file",
172
+ multiple: n === "multiple",
173
+ accept: f,
174
+ onChange: B,
175
+ style: { display: "none" },
176
+ "aria-hidden": "true",
177
+ tabIndex: -1
178
+ }
179
+ ),
180
+ !z && /* @__PURE__ */ a(
181
+ "div",
182
+ {
183
+ className: C,
184
+ onClick: g,
185
+ onDragOver: M,
186
+ onDragLeave: x,
187
+ onDrop: N,
188
+ role: "button",
189
+ tabIndex: 0,
190
+ "aria-label": `${F} browse`,
191
+ onKeyDown: (i) => {
192
+ (i.key === " " || i.key === "Enter") && g();
193
+ },
194
+ children: [
195
+ t === "MD" ? /* @__PURE__ */ e("div", { className: r.dropzoneIconMd, children: /* @__PURE__ */ e(W, {}) }) : /* @__PURE__ */ e("div", { className: r.dropzoneIconLg, children: /* @__PURE__ */ e(H, {}) }),
196
+ /* @__PURE__ */ a("div", { className: r.dropzoneContent, children: [
197
+ /* @__PURE__ */ a("div", { className: r.dropzoneTitleRow, children: [
198
+ /* @__PURE__ */ e("p", { className: r.dropzoneTitle, children: F }),
199
+ /* @__PURE__ */ e("span", { className: r.dropzoneBrowse, "aria-hidden": "true", children: "browse" })
200
+ ] }),
201
+ /* @__PURE__ */ e("p", { className: r.dropzoneSubtitle, children: "JPG, PNG, PDF (Max 800×400px – 2Mo)" })
202
+ ] })
203
+ ]
204
+ }
205
+ ),
206
+ s === "active" && o.length > 0 && /* @__PURE__ */ e("div", { className: r.fileList, children: o.map((i) => /* @__PURE__ */ e(
207
+ V,
208
+ {
209
+ file: i,
210
+ size: t,
211
+ onEdit: c,
212
+ onPreview: u,
213
+ onRemove: h
214
+ },
215
+ i.id
216
+ )) })
217
+ ] });
218
+ }
219
+ export {
220
+ $ as Upload
221
+ };
222
+ //# sourceMappingURL=index.esm13.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm13.js","sources":["../components/Upload/Upload.tsx"],"sourcesContent":["import React, { useRef, useState } from 'react';\nimport styles from './Upload.module.css';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type UploadSize = 'MD' | 'LG';\nexport type UploadType = 'single' | 'multiple';\nexport type UploadStatus = 'default' | 'active';\nexport type UploadFileState = 'loading' | 'loaded' | 'error';\nexport type UploadIndicator = 'loader' | 'progress-bar';\n\nexport interface UploadFile {\n id: string;\n name: string;\n size: string;\n /** 0–100 */\n progress: number;\n state: UploadFileState;\n /** 'loader' shows spinner · 'progress-bar' shows progress (LG only) */\n indicator?: UploadIndicator;\n}\n\nexport interface UploadProps {\n size?: UploadSize;\n type?: UploadType;\n /** 'default' = drop area only · 'active' = files listed */\n status?: UploadStatus;\n files?: UploadFile[];\n onDrop?: (files: File[]) => void;\n onRemove?: (id: string) => void;\n onEdit?: (id: string) => void;\n onPreview?: (id: string) => void;\n /** Native accept attribute, e.g. \".pdf,.png,.jpg\" */\n accept?: string;\n /** Max file size in bytes */\n maxSize?: number;\n className?: string;\n}\n\n// ─── SVG icons (inline, no external dependency) ──────────────────────────────\n\nconst IconFile = () => (\n <svg viewBox=\"0 0 12 12\" width=\"12\" height=\"12\" aria-hidden=\"true\">\n <defs>\n <linearGradient id=\"fileGrad\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\">\n {/* Figma: linear-gradient(63.88deg, #2970FF 0.2%, #0040C1 99.99%) */}\n <stop offset=\"0%\" stopColor=\"#2970FF\" />\n <stop offset=\"100%\" stopColor=\"#0040C1\" />\n </linearGradient>\n </defs>\n <path\n fill=\"url(#fileGrad)\"\n d=\"M2 0h5.5L10 2.5V12H2V0zm5 0v3h3L7 0zM3 5h6v1H3V5zm0 2h6v1H3V7zm0 2h4v1H3V9z\"\n />\n </svg>\n);\n\nconst IconPen = () => (\n <svg viewBox=\"0 0 12 12\" width=\"12\" height=\"12\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M8.707.293a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414L9.414 5.1 6.9 2.586 8.707.293zM0 9.5V12h2.5l7-7L7 2.5l-7 7zM1.5 10.5v-.793l5.5-5.5.793.793-5.5 5.5H1.5z\" />\n </svg>\n);\n\nconst IconEye = () => (\n <svg viewBox=\"0 0 12 12\" width=\"12\" height=\"12\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M6 2C3.27 2 1 4 1 6s2.27 4 5 4 5-2 5-4-2.27-4-5-4zm0 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-5a2 2 0 1 0 0 4 2 2 0 0 0 0-4z\" />\n </svg>\n);\n\nconst IconTrash = () => (\n <svg viewBox=\"0 0 12 12\" width=\"12\" height=\"12\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M4 1V0h4v1h3v1H1V1h3zM2 3h8l-.8 8H2.8L2 3zm2 1v6h1V4H4zm2 0v6h1V4H6z\" />\n </svg>\n);\n\n// SVG illustration for MD drop zone (32×32 stacked files)\nconst DropIconMd = () => (\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" aria-hidden=\"true\">\n {/* back-right file */}\n <rect x=\"18\" y=\"10\" width=\"10\" height=\"13\" rx=\"1.5\" fill=\"#DBE8FF\" stroke=\"#B2C9FF\" strokeWidth=\"0.5\"\n transform=\"rotate(12 18 10)\" />\n {/* back-left file */}\n <rect x=\"4\" y=\"10\" width=\"10\" height=\"13\" rx=\"1.5\" fill=\"#DBE8FF\" stroke=\"#B2C9FF\" strokeWidth=\"0.5\"\n transform=\"rotate(-12 4 10)\" />\n {/* center file */}\n <rect x=\"10\" y=\"7\" width=\"12\" height=\"16\" rx=\"1.5\" fill=\"#FFFFFF\" stroke=\"#B2C9FF\" strokeWidth=\"1\" />\n <path d=\"M13 12h6M13 15h6M13 18h4\" stroke=\"#B2C9FF\" strokeWidth=\"1\" strokeLinecap=\"round\" />\n {/* upload arrow */}\n <circle cx=\"23\" cy=\"23\" r=\"5\" fill=\"#2970FF\" />\n <path d=\"M23 26v-6M20.5 22.5L23 20l2.5 2.5\" stroke=\"#FFF\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n// SVG illustration for LG drop zone (96×64 stacked files)\nconst DropIconLg = () => (\n <svg width=\"96\" height=\"64\" viewBox=\"0 0 96 64\" fill=\"none\" aria-hidden=\"true\">\n {/* right file — rotated 15deg */}\n <g transform=\"rotate(15 70 35)\">\n <rect x=\"55\" y=\"18\" width=\"28\" height=\"36\" rx=\"3\" fill=\"#DBE8FF\" stroke=\"#B2C9FF\" strokeWidth=\"1\" />\n <path d=\"M61 28h16M61 34h16M61 40h10\" stroke=\"#B2C9FF\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </g>\n {/* left file — rotated -15deg */}\n <g transform=\"rotate(-15 26 35)\">\n <rect x=\"13\" y=\"18\" width=\"28\" height=\"36\" rx=\"3\" fill=\"#DBE8FF\" stroke=\"#B2C9FF\" strokeWidth=\"1\" />\n <path d=\"M19 28h16M19 34h16M19 40h10\" stroke=\"#B2C9FF\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </g>\n {/* center file */}\n <rect x=\"30\" y=\"8\" width=\"36\" height=\"48\" rx=\"3\" fill=\"#FFFFFF\" stroke=\"#B2C9FF\" strokeWidth=\"1.5\" />\n <path d=\"M38 22h20M38 30h20M38 38h14\" stroke=\"#B2C9FF\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n {/* upload arrow overlay */}\n <circle cx=\"76\" cy=\"50\" r=\"10\" fill=\"#2970FF\" />\n <path d=\"M76 55v-10M71 48l5-5 5 5\" stroke=\"#FFF\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n// ─── Sub-components ───────────────────────────────────────────────────────────\n\ninterface UploadItemProps {\n file: UploadFile;\n size: UploadSize;\n onEdit?: (id: string) => void;\n onPreview?: (id: string) => void;\n onRemove?: (id: string) => void;\n}\n\nfunction UploadItem({ file, size, onEdit, onPreview, onRemove }: UploadItemProps) {\n const isLoading = file.state === 'loading' || file.indicator === 'loader';\n const showProgress = size === 'LG' && file.indicator !== 'loader';\n\n return (\n <div\n className={[\n styles.fileItem,\n size === 'LG' ? styles.fileItemLg : styles.fileItemMd,\n ].join(' ')}\n >\n {/* Badge */}\n <div className={styles.fileBadge}>\n <IconFile />\n </div>\n\n {/* Content */}\n <div className={styles.fileContent}>\n <div className={styles.fileHeader}>\n {/* Name + size */}\n <div className={styles.fileTexts}>\n <p className={styles.fileName}>{file.name}</p>\n <p className={styles.fileSize}>{file.size}</p>\n </div>\n\n {/* Actions or spinner */}\n {isLoading ? (\n <div className={styles.spinner} role=\"status\" aria-label=\"Uploading…\" />\n ) : (\n <div className={styles.actions}>\n <button\n className={styles.actionBtn}\n onClick={() => onEdit?.(file.id)}\n aria-label={`Edit ${file.name}`}\n type=\"button\"\n >\n <IconPen />\n </button>\n <button\n className={styles.actionBtn}\n onClick={() => onPreview?.(file.id)}\n aria-label={`Preview ${file.name}`}\n type=\"button\"\n >\n <IconEye />\n </button>\n <button\n className={styles.actionBtn}\n onClick={() => onRemove?.(file.id)}\n aria-label={`Remove ${file.name}`}\n type=\"button\"\n >\n <IconTrash />\n </button>\n </div>\n )}\n </div>\n\n {/* Progress bar — LG only, not during loader */}\n {showProgress && (\n <div className={styles.progressRow}>\n <div className={styles.progressTrack}>\n <div\n className={styles.progressFill}\n style={{ width: `${Math.min(100, Math.max(0, file.progress))}%` }}\n role=\"progressbar\"\n aria-valuenow={file.progress}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </div>\n <p className={styles.progressLabel}>{file.progress}%</p>\n </div>\n )}\n </div>\n </div>\n );\n}\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport function Upload({\n size = 'LG',\n type = 'multiple',\n status = 'default',\n files = [],\n onDrop,\n onRemove,\n onEdit,\n onPreview,\n accept,\n className,\n}: UploadProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const [dragging, setDragging] = useState(false);\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setDragging(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setDragging(false);\n const dropped = Array.from(e.dataTransfer.files);\n if (dropped.length) onDrop?.(dropped);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const selected = Array.from(e.target.files ?? []);\n if (selected.length) onDrop?.(selected);\n // reset so same file can be re-selected\n e.target.value = '';\n };\n\n const openFilePicker = () => inputRef.current?.click();\n\n // LG single active / MD single active: hide drop zone when a file is loaded\n const hideDrop = type === 'single' && status === 'active' && files.length > 0;\n\n const dropzoneClass = [\n styles.dropzone,\n size === 'MD' ? styles.dropzoneMd : styles.dropzoneLg,\n dragging ? styles.dropzoneDragging : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const titleText =\n type === 'multiple' ? 'Drop your files here, or' : 'Drop your file here, or';\n\n return (\n <div className={[styles.wrapper, className].filter(Boolean).join(' ')}>\n {/* Hidden file input */}\n <input\n ref={inputRef}\n type=\"file\"\n multiple={type === 'multiple'}\n accept={accept}\n onChange={handleInputChange}\n style={{ display: 'none' }}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n\n {/* Drop zone */}\n {!hideDrop && (\n <div\n className={dropzoneClass}\n onClick={openFilePicker}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n role=\"button\"\n tabIndex={0}\n aria-label={`${titleText} browse`}\n onKeyDown={(e) => {\n if (e.key === ' ' || e.key === 'Enter') openFilePicker();\n }}\n >\n {/* Icon */}\n {size === 'MD' ? (\n <div className={styles.dropzoneIconMd}>\n <DropIconMd />\n </div>\n ) : (\n <div className={styles.dropzoneIconLg}>\n <DropIconLg />\n </div>\n )}\n\n {/* Text content */}\n <div className={styles.dropzoneContent}>\n <div className={styles.dropzoneTitleRow}>\n <p className={styles.dropzoneTitle}>{titleText}</p>\n <span className={styles.dropzoneBrowse} aria-hidden=\"true\">\n browse\n </span>\n </div>\n <p className={styles.dropzoneSubtitle}>\n JPG, PNG, PDF (Max 800×400px – 2Mo)\n </p>\n </div>\n </div>\n )}\n\n {/* File list */}\n {status === 'active' && files.length > 0 && (\n <div className={styles.fileList}>\n {files.map((file) => (\n <UploadItem\n key={file.id}\n file={file}\n size={size}\n onEdit={onEdit}\n onPreview={onPreview}\n onRemove={onRemove}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"names":["IconFile","jsxs","jsx","IconPen","IconEye","IconTrash","DropIconMd","DropIconLg","UploadItem","file","size","onEdit","onPreview","onRemove","isLoading","showProgress","styles","Upload","type","status","files","onDrop","accept","className","inputRef","useRef","dragging","setDragging","useState","handleDragOver","e","handleDragLeave","handleDrop","dropped","handleInputChange","selected","openFilePicker","_a","hideDrop","dropzoneClass","titleText"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ const e = "_base_106pz_9", c = "_checkDefault_106pz_18", o = "_radioDefault_106pz_19", _ = "_checkChecked_106pz_40", t = "_radioChecked_106pz_41", a = "_checkIcon_106pz_64", k = "_radioIcon_106pz_86", d = "_toggleWrapper_106pz_105", r = "_toggleTrack_106pz_113", g = "_toggleChecked_106pz_140", h = {
2
+ base: e,
3
+ checkDefault: c,
4
+ radioDefault: o,
5
+ checkChecked: _,
6
+ radioChecked: t,
7
+ checkIcon: a,
8
+ radioIcon: k,
9
+ toggleWrapper: d,
10
+ toggleTrack: r,
11
+ toggleChecked: g
12
+ };
13
+ export {
14
+ e as base,
15
+ _ as checkChecked,
16
+ c as checkDefault,
17
+ a as checkIcon,
18
+ h as default,
19
+ t as radioChecked,
20
+ o as radioDefault,
21
+ k as radioIcon,
22
+ g as toggleChecked,
23
+ r as toggleTrack,
24
+ d as toggleWrapper
25
+ };
26
+ //# sourceMappingURL=index.esm14.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm14.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -0,0 +1,34 @@
1
+ const e = "_wrapper_1iytr_9", r = "_labelRow_1iytr_19", _ = "_label_1iytr_19", t = "_labelDisabled_1iytr_37", s = "_labelIcon_1iytr_41", l = "_field_1iytr_53", o = "_hover_1iytr_70", a = "_active_1iytr_77", i = "_disabled_1iytr_85", c = "_error_1iytr_98", n = "_icon_1iytr_110", b = "_input_1iytr_122", y = "_message_1iytr_155", d = "_messageError_1iytr_170", p = {
2
+ wrapper: e,
3
+ labelRow: r,
4
+ label: _,
5
+ labelDisabled: t,
6
+ labelIcon: s,
7
+ field: l,
8
+ hover: o,
9
+ active: a,
10
+ disabled: i,
11
+ error: c,
12
+ icon: n,
13
+ input: b,
14
+ message: y,
15
+ messageError: d
16
+ };
17
+ export {
18
+ a as active,
19
+ p as default,
20
+ i as disabled,
21
+ c as error,
22
+ l as field,
23
+ o as hover,
24
+ n as icon,
25
+ b as input,
26
+ _ as label,
27
+ t as labelDisabled,
28
+ s as labelIcon,
29
+ r as labelRow,
30
+ y as message,
31
+ d as messageError,
32
+ e as wrapper
33
+ };
34
+ //# sourceMappingURL=index.esm15.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm15.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -0,0 +1,64 @@
1
+ const o = "_dropzone_19kgn_8", e = "_dropzoneMd_19kgn_22", n = "_dropzoneLg_19kgn_29", _ = "_dropzoneDragging_19kgn_39", t = "_dropzoneIconMd_19kgn_48", r = "_dropzoneIconLg_19kgn_56", s = "_dropzoneContent_19kgn_67", g = "_dropzoneTitleRow_19kgn_81", i = "_dropzoneTitle_19kgn_81", p = "_dropzoneBrowse_19kgn_99", l = "_dropzoneSubtitle_19kgn_114", d = "_fileList_19kgn_128", c = "_fileItem_19kgn_137", z = "_fileItemLg_19kgn_150", k = "_fileItemMd_19kgn_155", f = "_fileBadge_19kgn_161", a = "_fileContent_19kgn_176", I = "_fileHeader_19kgn_186", L = "_fileTexts_19kgn_193", m = "_fileName_19kgn_202", w = "_fileSize_19kgn_216", T = "_actions_19kgn_229", B = "_actionBtn_19kgn_236", M = "_progressRow_19kgn_259", b = "_progressTrack_19kgn_267", C = "_progressFill_19kgn_277", R = "_progressLabel_19kgn_288", S = "_spinner_19kgn_301", u = "_wrapper_19kgn_317", x = {
2
+ dropzone: o,
3
+ dropzoneMd: e,
4
+ dropzoneLg: n,
5
+ dropzoneDragging: _,
6
+ dropzoneIconMd: t,
7
+ dropzoneIconLg: r,
8
+ dropzoneContent: s,
9
+ dropzoneTitleRow: g,
10
+ dropzoneTitle: i,
11
+ dropzoneBrowse: p,
12
+ dropzoneSubtitle: l,
13
+ fileList: d,
14
+ fileItem: c,
15
+ fileItemLg: z,
16
+ fileItemMd: k,
17
+ fileBadge: f,
18
+ fileContent: a,
19
+ fileHeader: I,
20
+ fileTexts: L,
21
+ fileName: m,
22
+ fileSize: w,
23
+ actions: T,
24
+ actionBtn: B,
25
+ progressRow: M,
26
+ progressTrack: b,
27
+ progressFill: C,
28
+ progressLabel: R,
29
+ spinner: S,
30
+ wrapper: u
31
+ };
32
+ export {
33
+ B as actionBtn,
34
+ T as actions,
35
+ x as default,
36
+ o as dropzone,
37
+ p as dropzoneBrowse,
38
+ s as dropzoneContent,
39
+ _ as dropzoneDragging,
40
+ r as dropzoneIconLg,
41
+ t as dropzoneIconMd,
42
+ n as dropzoneLg,
43
+ e as dropzoneMd,
44
+ l as dropzoneSubtitle,
45
+ i as dropzoneTitle,
46
+ g as dropzoneTitleRow,
47
+ f as fileBadge,
48
+ a as fileContent,
49
+ I as fileHeader,
50
+ c as fileItem,
51
+ z as fileItemLg,
52
+ k as fileItemMd,
53
+ d as fileList,
54
+ m as fileName,
55
+ w as fileSize,
56
+ L as fileTexts,
57
+ C as progressFill,
58
+ R as progressLabel,
59
+ M as progressRow,
60
+ b as progressTrack,
61
+ S as spinner,
62
+ u as wrapper
63
+ };
64
+ //# sourceMappingURL=index.esm16.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm16.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,64 @@
1
+ const a = "_header_1jw5v_25", e = "_variantDefault_1jw5v_36", t = "_variantMobile_1jw5v_37", o = "_variantMobileOpen_1jw5v_38", s = "_pageTitle_1jw5v_49", _ = "_pageTitleDesktop_1jw5v_63", n = "_pageTitleMobile_1jw5v_64", c = "_actions_1jw5v_68", r = "_actionsMobileOpen_1jw5v_76", w = "_workspace_1jw5v_86", v = "_workspaceFull_1jw5v_104", i = "_workspaceLeft_1jw5v_110", l = "_statusDot_1jw5v_118", p = "_workspaceCol_1jw5v_126", j = "_workspaceAccount_1jw5v_134", u = "_workspaceName_1jw5v_144", k = "_workspaceArrow_1jw5v_156", m = "_bellBtn_1jw5v_168", b = "_menuBtn_1jw5v_188", g = "_menuIcon_1jw5v_208", M = "_navUser_1jw5v_219", T = "_avatar_1jw5v_227", A = "_avatarImg_1jw5v_239", B = "_avatarInitials_1jw5v_248", D = "_userText_1jw5v_255", I = "_userName_1jw5v_262", f = "_userRole_1jw5v_271", N = "_ctaBtn_1jw5v_282", O = "_mainActions_1jw5v_307", d = {
2
+ header: a,
3
+ variantDefault: e,
4
+ variantMobile: t,
5
+ variantMobileOpen: o,
6
+ pageTitle: s,
7
+ pageTitleDesktop: _,
8
+ pageTitleMobile: n,
9
+ actions: c,
10
+ actionsMobileOpen: r,
11
+ workspace: w,
12
+ workspaceFull: v,
13
+ workspaceLeft: i,
14
+ statusDot: l,
15
+ workspaceCol: p,
16
+ workspaceAccount: j,
17
+ workspaceName: u,
18
+ workspaceArrow: k,
19
+ bellBtn: m,
20
+ menuBtn: b,
21
+ menuIcon: g,
22
+ navUser: M,
23
+ avatar: T,
24
+ avatarImg: A,
25
+ avatarInitials: B,
26
+ userText: D,
27
+ userName: I,
28
+ userRole: f,
29
+ ctaBtn: N,
30
+ mainActions: O
31
+ };
32
+ export {
33
+ c as actions,
34
+ r as actionsMobileOpen,
35
+ T as avatar,
36
+ A as avatarImg,
37
+ B as avatarInitials,
38
+ m as bellBtn,
39
+ N as ctaBtn,
40
+ d as default,
41
+ a as header,
42
+ O as mainActions,
43
+ b as menuBtn,
44
+ g as menuIcon,
45
+ M as navUser,
46
+ s as pageTitle,
47
+ _ as pageTitleDesktop,
48
+ n as pageTitleMobile,
49
+ l as statusDot,
50
+ I as userName,
51
+ f as userRole,
52
+ D as userText,
53
+ e as variantDefault,
54
+ t as variantMobile,
55
+ o as variantMobileOpen,
56
+ w as workspace,
57
+ j as workspaceAccount,
58
+ k as workspaceArrow,
59
+ p as workspaceCol,
60
+ v as workspaceFull,
61
+ i as workspaceLeft,
62
+ u as workspaceName
63
+ };
64
+ //# sourceMappingURL=index.esm17.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm17.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,42 @@
1
+ const t = "_alert_p4b5i_21", e = "_typeDefault_p4b5i_36", n = "_typeInfo_p4b5i_37", _ = "_typeSuccess_p4b5i_38", i = "_typeWarning_p4b5i_39", o = "_typeError_p4b5i_40", s = "_iconSlot_p4b5i_44", c = "_textContent_p4b5i_54", l = "_title_p4b5i_63", p = "_titleDefault_p4b5i_72", r = "_titleInfo_p4b5i_73", a = "_titleSuccess_p4b5i_74", b = "_titleWarning_p4b5i_75", y = "_titleError_p4b5i_76", f = "_message_p4b5i_78", u = "_rightSlot_p4b5i_90", g = "_actionBtn_p4b5i_101", S = "_closeBtn_p4b5i_127", B = {
2
+ alert: t,
3
+ typeDefault: e,
4
+ typeInfo: n,
5
+ typeSuccess: _,
6
+ typeWarning: i,
7
+ typeError: o,
8
+ iconSlot: s,
9
+ textContent: c,
10
+ title: l,
11
+ titleDefault: p,
12
+ titleInfo: r,
13
+ titleSuccess: a,
14
+ titleWarning: b,
15
+ titleError: y,
16
+ message: f,
17
+ rightSlot: u,
18
+ actionBtn: g,
19
+ closeBtn: S
20
+ };
21
+ export {
22
+ g as actionBtn,
23
+ t as alert,
24
+ S as closeBtn,
25
+ B as default,
26
+ s as iconSlot,
27
+ f as message,
28
+ u as rightSlot,
29
+ c as textContent,
30
+ l as title,
31
+ p as titleDefault,
32
+ y as titleError,
33
+ r as titleInfo,
34
+ a as titleSuccess,
35
+ b as titleWarning,
36
+ e as typeDefault,
37
+ o as typeError,
38
+ n as typeInfo,
39
+ _ as typeSuccess,
40
+ i as typeWarning
41
+ };
42
+ //# sourceMappingURL=index.esm18.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm18.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,26 @@
1
+ const o = "_button_1hwro_8", _ = "_sm_1hwro_40", t = "_md_1hwro_48", n = "_outline_1hwro_58", s = "_fill_1hwro_74", l = "_secondary_1hwro_89", e = "_text_1hwro_104", c = "_disabled_1hwro_119", r = "_label_1hwro_130", d = "_icon_1hwro_136", i = {
2
+ button: o,
3
+ sm: _,
4
+ md: t,
5
+ outline: n,
6
+ fill: s,
7
+ secondary: l,
8
+ text: e,
9
+ disabled: c,
10
+ label: r,
11
+ icon: d
12
+ };
13
+ export {
14
+ o as button,
15
+ i as default,
16
+ c as disabled,
17
+ s as fill,
18
+ d as icon,
19
+ r as label,
20
+ t as md,
21
+ n as outline,
22
+ l as secondary,
23
+ _ as sm,
24
+ e as text
25
+ };
26
+ //# sourceMappingURL=index.esm19.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm19.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -0,0 +1,98 @@
1
+ const F = {
2
+ brand: {
3
+ primary: {
4
+ /** #203224 — Secondary button bg; Fill button text; Check/Radio checked bg */
5
+ base: "#203224"
6
+ },
7
+ secondary: {
8
+ /** #0F6C13 — Outline button border & text */
9
+ base: "#0F6C13"
10
+ },
11
+ tertiary: {
12
+ /** #E7DA10 — Fill button background */
13
+ base: "#E7DA10"
14
+ }
15
+ },
16
+ default: {
17
+ /** #FFFFFF — Secondary button text; input background */
18
+ white: "#FFFFFF",
19
+ /** #524E69 — Disabled text; input active/error text */
20
+ textDark: "#524E69",
21
+ /** #9490AC — Placeholder; input hover/active border; Grayscale/600 */
22
+ textMedium: "#9490AC",
23
+ /** #EFEEF2 — Disabled background; input focus ring; Grayscale/100 */
24
+ disabled: "#EFEEF2",
25
+ /** #DCE5DE — Default input border; Check/Radio border */
26
+ border: "#DCE5DE",
27
+ /** #E0DEED — Grayscale/200 · Default step background */
28
+ stepDefault: "#E0DEED",
29
+ /** #F5F5F5 — Default Colors/White Cloud · Nav sidebar background */
30
+ whiteCloud: "#F5F5F5",
31
+ /** #E0DEED — Grayscale/200 · Modal slot border */
32
+ modalBorder: "#E0DEED",
33
+ /** #757094 — Default Colors/Text medium · Modal slot text, option labels */
34
+ modalTextMedium: "#757094"
35
+ },
36
+ message: {
37
+ info: {
38
+ /** #2472BA — Text button text */
39
+ base: "#2472BA"
40
+ },
41
+ danger: {
42
+ /** #FF3A29 — Error input border & message */
43
+ base: "#FF3A29"
44
+ }
45
+ },
46
+ /** Gray scale — FileUpload / Gray/x00 tokens */
47
+ gray: {
48
+ /** #101828 — Gray/900 · file name, body text */
49
+ 900: "#101828",
50
+ /** #475467 — Gray/600 · action icon color */
51
+ 600: "#475467",
52
+ /** #667085 — Gray/500 · file size, muted text */
53
+ 500: "#667085",
54
+ /** #D0D5DD — Gray/300 · upload drop-zone default border */
55
+ 300: "#D0D5DD",
56
+ /** #EAECF0 — Gray/200 · file item border, progress track */
57
+ 200: "#EAECF0"
58
+ },
59
+ /** Pagination tokens — Pagination (3203:662) */
60
+ pagination: {
61
+ /** #0F6C13 — active item bg (= brand.secondary.base) */
62
+ active: "#0F6C13",
63
+ /** #CED4DA — Gray/Gray 4 · inactive item border, control border */
64
+ border: "#CED4DA",
65
+ /** #101113 — Dark/Dark 9 · page number text */
66
+ text: "#101113"
67
+ },
68
+ /** Alert tokens — AlertSticky (3114:1706) */
69
+ alert: {
70
+ default: { bg: "#F9F8FC", border: "#DCE5DE", title: "#524E69" },
71
+ info: { bg: "#F4F9FF", border: "#C9E2FE", title: "#2472BA" },
72
+ success: { bg: "#F5FBF7", border: "#CAE7D5", title: "#2C7D56" },
73
+ warning: { bg: "#FFF9E9", border: "#FFDB90", title: "#A36A00" },
74
+ error: { bg: "#FFF8F6", border: "#FFCABF", title: "#DE0000" }
75
+ },
76
+ /** Shadow tokens */
77
+ shadow: {
78
+ /** 0px 1px 12px 0px rgba(25,27,35,0.15) — BS-Popper */
79
+ popper: "0px 1px 12px 0px rgba(25,27,35,0.15)"
80
+ },
81
+ /** Blue primary scale — FileUpload / Primary/x00 tokens */
82
+ primary: {
83
+ /** #154FEF — Primary/600 · "browse" link color */
84
+ 600: "#154FEF",
85
+ /** #2970FF — Primary/500 · active drop-zone border, progress fill */
86
+ 500: "#2970FF",
87
+ /** #5280FF — Primary/400 */
88
+ 400: "#5280FF",
89
+ /** #B2C9FF — Primary/200 · file badge background */
90
+ 200: "#B2C9FF",
91
+ /** #DBE8FF — Primary/100 · file badge ring, active drop-zone bg */
92
+ 100: "#DBE8FF"
93
+ }
94
+ };
95
+ export {
96
+ F as colors
97
+ };
98
+ //# sourceMappingURL=index.esm2.js.map