@ecohouse/ui 0.1.2 → 0.1.4
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/dist/index.cjs +1734 -155
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +287 -13
- package/dist/index.d.ts +287 -13
- package/dist/index.js +1720 -159
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/Avatar/Avatar.stories.tsx +133 -0
- package/src/components/Avatar/Avatar.tsx +389 -0
- package/src/components/Avatar/index.ts +2 -0
- package/src/components/Button/Button.tsx +106 -88
- package/src/components/Checkbox/Checkbox.stories.tsx +112 -0
- package/src/components/Checkbox/Checkbox.tsx +150 -0
- package/src/components/Checkbox/index.ts +2 -0
- package/src/components/Input/Input.stories.tsx +11 -40
- package/src/components/Input/Input.tsx +58 -54
- package/src/components/Input/index.ts +1 -1
- package/src/components/Select/Select.stories.tsx +196 -0
- package/src/components/Select/Select.tsx +851 -0
- package/src/components/Select/index.ts +2 -0
- package/src/components/Textarea/Textarea.stories.tsx +71 -0
- package/src/components/Textarea/Textarea.tsx +241 -0
- package/src/components/Textarea/index.ts +2 -0
- package/src/components/Toggle/Toggle.stories.tsx +100 -0
- package/src/components/Toggle/Toggle.tsx +176 -0
- package/src/components/Toggle/index.ts +2 -0
- package/src/components/index.ts +16 -1
- package/src/icons/Calendar/CalendarIcon.tsx +21 -0
- package/src/icons/Calendar/CalendarIcon.web.tsx +27 -0
- package/src/icons/Calendar/calendarPath.ts +3 -0
- package/src/icons/Calendar/index.ts +1 -0
- package/src/icons/Check/CheckIcon.tsx +26 -0
- package/src/icons/Check/CheckIcon.web.tsx +32 -0
- package/src/icons/Check/checkPath.ts +2 -0
- package/src/icons/Check/index.ts +1 -0
- package/src/icons/ChevronDown/ChevronDownIcon.tsx +30 -0
- package/src/icons/ChevronDown/ChevronDownIcon.web.tsx +36 -0
- package/src/icons/ChevronDown/chevronDownPath.ts +2 -0
- package/src/icons/ChevronDown/index.ts +1 -0
- package/src/icons/Heart/HeartIcon.tsx +23 -0
- package/src/icons/Heart/HeartIcon.web.tsx +29 -0
- package/src/icons/Heart/heartPath.ts +3 -0
- package/src/icons/Heart/index.ts +1 -0
- package/src/icons/HelpCircle/HelpCircleIcon.tsx +25 -0
- package/src/icons/HelpCircle/HelpCircleIcon.web.tsx +31 -0
- package/src/icons/HelpCircle/helpCirclePath.ts +3 -0
- package/src/icons/HelpCircle/index.ts +1 -0
- package/src/icons/LayoutGrid/LayoutGridIcon.tsx +25 -0
- package/src/icons/LayoutGrid/LayoutGridIcon.web.tsx +31 -0
- package/src/icons/LayoutGrid/index.ts +1 -0
- package/src/icons/LayoutGrid/layoutGridPath.ts +3 -0
- package/src/icons/LogOut/LogOutIcon.tsx +21 -0
- package/src/icons/LogOut/LogOutIcon.web.tsx +27 -0
- package/src/icons/LogOut/index.ts +1 -0
- package/src/icons/LogOut/logOutPath.ts +3 -0
- package/src/icons/Search/SearchIcon.tsx +37 -0
- package/src/icons/Search/SearchIcon.web.tsx +43 -0
- package/src/icons/Search/index.ts +1 -0
- package/src/icons/Search/searchPath.ts +5 -0
- package/src/icons/Settings/SettingsIcon.tsx +21 -0
- package/src/icons/Settings/SettingsIcon.web.tsx +27 -0
- package/src/icons/Settings/index.ts +1 -0
- package/src/icons/Settings/settingsPath.ts +3 -0
- package/src/icons/Video/VideoIcon.tsx +24 -0
- package/src/icons/Video/VideoIcon.web.tsx +30 -0
- package/src/icons/Video/index.ts +1 -0
- package/src/icons/Video/videoPath.ts +5 -0
- package/src/icons/index.ts +10 -0
- package/src/icons/registry.ts +24 -3
- package/src/index.ts +31 -3
- package/src/theme/colors.ts +1 -0
- package/src/theme/index.ts +8 -1
- package/src/theme/typography.ts +77 -2
- package/src/utils/mergeRefs.ts +20 -0
package/dist/index.cjs
CHANGED
|
@@ -9,7 +9,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
9
9
|
|
|
10
10
|
var Svg__default = /*#__PURE__*/_interopDefault(Svg);
|
|
11
11
|
|
|
12
|
-
// src/components/
|
|
12
|
+
// src/components/Avatar/Avatar.tsx
|
|
13
13
|
|
|
14
14
|
// src/icons/ArrowRight/arrowRightPath.ts
|
|
15
15
|
var ARROW_RIGHT_PATH = "M4.16667 10H15.8333M15.8333 10L10 4.16667M15.8333 10L10 15.8333";
|
|
@@ -41,6 +41,7 @@ var colors = {
|
|
|
41
41
|
lightGrey: "#B7B7B7",
|
|
42
42
|
primaryMuted: "#B464360F",
|
|
43
43
|
redMuted: "#A63E3E0F",
|
|
44
|
+
redHover: "#A63E3E33",
|
|
44
45
|
grey0: grey["0"],
|
|
45
46
|
grey50: grey["0.5"],
|
|
46
47
|
grey100: grey["1"],
|
|
@@ -83,9 +84,32 @@ var inputTypography = {
|
|
|
83
84
|
fontFamily: fonts.sans,
|
|
84
85
|
fontSize: 12,
|
|
85
86
|
fontWeight: "500",
|
|
86
|
-
lineHeight:
|
|
87
|
+
lineHeight: 12,
|
|
88
|
+
letterSpacing: 0.36
|
|
89
|
+
},
|
|
90
|
+
field: {
|
|
91
|
+
fontFamily: fonts.sans,
|
|
92
|
+
fontSize: 14,
|
|
93
|
+
fontWeight: "400",
|
|
94
|
+
lineHeight: 19,
|
|
87
95
|
letterSpacing: 0
|
|
88
96
|
},
|
|
97
|
+
hint: {
|
|
98
|
+
fontFamily: fonts.sans,
|
|
99
|
+
fontSize: 12,
|
|
100
|
+
fontWeight: "400",
|
|
101
|
+
lineHeight: 12,
|
|
102
|
+
letterSpacing: 0.36
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
var selectTypography = {
|
|
106
|
+
label: {
|
|
107
|
+
fontFamily: fonts.sans,
|
|
108
|
+
fontSize: 12,
|
|
109
|
+
fontWeight: "500",
|
|
110
|
+
lineHeight: 12,
|
|
111
|
+
letterSpacing: 0.36
|
|
112
|
+
},
|
|
89
113
|
field: {
|
|
90
114
|
fontFamily: fonts.sans,
|
|
91
115
|
fontSize: 14,
|
|
@@ -97,8 +121,54 @@ var inputTypography = {
|
|
|
97
121
|
fontFamily: fonts.sans,
|
|
98
122
|
fontSize: 12,
|
|
99
123
|
fontWeight: "400",
|
|
100
|
-
lineHeight:
|
|
124
|
+
lineHeight: 12,
|
|
125
|
+
letterSpacing: 0.36
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
var avatarTypography = {
|
|
129
|
+
name: {
|
|
130
|
+
fontFamily: fonts.sans,
|
|
131
|
+
fontSize: 14,
|
|
132
|
+
fontWeight: "600",
|
|
133
|
+
lineHeight: 14,
|
|
134
|
+
letterSpacing: 0
|
|
135
|
+
},
|
|
136
|
+
email: {
|
|
137
|
+
fontFamily: fonts.sans,
|
|
138
|
+
fontSize: 12,
|
|
139
|
+
fontWeight: "400",
|
|
140
|
+
lineHeight: 12,
|
|
141
|
+
letterSpacing: 0
|
|
142
|
+
},
|
|
143
|
+
menuItem: {
|
|
144
|
+
fontFamily: fonts.sans,
|
|
145
|
+
fontSize: 12,
|
|
146
|
+
fontWeight: "600",
|
|
147
|
+
lineHeight: 12,
|
|
148
|
+
letterSpacing: 0
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
var textareaTypography = {
|
|
152
|
+
label: {
|
|
153
|
+
fontFamily: fonts.sans,
|
|
154
|
+
fontSize: 12,
|
|
155
|
+
fontWeight: "500",
|
|
156
|
+
lineHeight: 12,
|
|
157
|
+
letterSpacing: 0.36
|
|
158
|
+
},
|
|
159
|
+
field: {
|
|
160
|
+
fontFamily: fonts.sans,
|
|
161
|
+
fontSize: 14,
|
|
162
|
+
fontWeight: "400",
|
|
163
|
+
lineHeight: 19,
|
|
101
164
|
letterSpacing: 0
|
|
165
|
+
},
|
|
166
|
+
hint: {
|
|
167
|
+
fontFamily: fonts.sans,
|
|
168
|
+
fontSize: 12,
|
|
169
|
+
fontWeight: "400",
|
|
170
|
+
lineHeight: 12,
|
|
171
|
+
letterSpacing: 0.36
|
|
102
172
|
}
|
|
103
173
|
};
|
|
104
174
|
function ArrowRightIcon({
|
|
@@ -163,6 +233,21 @@ function BuildingIcon({ size = 20, color = colors.primary, strokeWidth = 2 }) {
|
|
|
163
233
|
) });
|
|
164
234
|
}
|
|
165
235
|
|
|
236
|
+
// src/icons/Calendar/calendarPath.ts
|
|
237
|
+
var CALENDAR_PATH = "M14 6.66668H2M14 8.33334V5.86668C14 4.74657 14 4.18652 13.782 3.7587C13.5903 3.38237 13.2843 3.07641 12.908 2.88466C12.4802 2.66668 11.9201 2.66668 10.8 2.66668H5.2C4.0799 2.66668 3.51984 2.66668 3.09202 2.88466C2.71569 3.07641 2.40973 3.38237 2.21799 3.7587C2 4.18652 2 4.74657 2 5.86668V11.4667C2 12.5868 2 13.1468 2.21799 13.5747C2.40973 13.951 2.71569 14.2569 3.09202 14.4487C3.51984 14.6667 4.0799 14.6667 5.2 14.6667H8M10.6667 1.33334V4.00001M5.33333 1.33334V4.00001M9.66667 12.6667L11 14L14 11";
|
|
238
|
+
function CalendarIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }) {
|
|
239
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
240
|
+
Svg.Path,
|
|
241
|
+
{
|
|
242
|
+
d: CALENDAR_PATH,
|
|
243
|
+
stroke: color,
|
|
244
|
+
strokeWidth,
|
|
245
|
+
strokeLinecap: "round",
|
|
246
|
+
strokeLinejoin: "round"
|
|
247
|
+
}
|
|
248
|
+
) });
|
|
249
|
+
}
|
|
250
|
+
|
|
166
251
|
// src/icons/Camera/cameraPath.ts
|
|
167
252
|
var CAMERA_PATH = "M9.48898 7H6.2002C5.08009 7 4.51962 7 4.0918 7.21799C3.71547 7.40973 3.40973 7.71547 3.21799 8.0918C3 8.51962 3 9.08009 3 10.2002V15.8002C3 16.9203 3 17.4796 3.21799 17.9074C3.40973 18.2837 3.71547 18.5905 4.0918 18.7822C4.5192 19 5.07899 19 6.19691 19H17.8031C18.921 19 19.48 19 19.9074 18.7822C20.2837 18.5905 20.5905 18.2837 20.7822 17.9074C21 17.48 21 16.921 21 15.8031V10.1969C21 9.07899 21 8.5192 20.7822 8.0918C20.5905 7.71547 20.2837 7.40973 19.9074 7.21799C19.4796 7 18.9203 7 17.8002 7H14.5108M9.48898 7H9.55078M9.48898 7C9.50151 7.00001 9.51468 7 9.52857 7L9.55078 7M9.48898 7C9.38286 6.99995 9.32339 6.99941 9.27637 6.99414C8.68878 6.92835 8.28578 6.36908 8.40918 5.79084C8.42066 5.73703 8.44336 5.66894 8.4883 5.53412L8.49023 5.52841C8.54156 5.37443 8.56723 5.29743 8.59558 5.22949C8.88586 4.53389 9.54322 4.06083 10.2949 4.00541C10.3683 4 10.449 4 10.6113 4H13.3886C13.5509 4 13.6322 4 13.7057 4.00541C14.4574 4.06083 15.114 4.53389 15.4043 5.22949C15.4326 5.29743 15.4584 5.37434 15.5098 5.52832C15.556 5.66699 15.5791 5.73636 15.5908 5.79093C15.7142 6.36917 15.3118 6.92835 14.7242 6.99414C14.6772 6.99941 14.6171 6.99995 14.5108 7M9.55078 7H14.449M14.449 7H14.5108M14.449 7L14.4712 7C14.4851 7 14.4983 7.00001 14.5108 7M12 16C10.3431 16 9 14.6569 9 13C9 11.3431 10.3431 10 12 10C13.6569 10 15 11.3431 15 13C15 14.6569 13.6569 16 12 16Z";
|
|
168
253
|
function CameraIcon({ size = 24, color = colors.primary, strokeWidth = 2 }) {
|
|
@@ -178,6 +263,21 @@ function CameraIcon({ size = 24, color = colors.primary, strokeWidth = 2 }) {
|
|
|
178
263
|
) });
|
|
179
264
|
}
|
|
180
265
|
|
|
266
|
+
// src/icons/Check/checkPath.ts
|
|
267
|
+
var CHECK_PATH = "M4.16669 10.8333L7.50002 14.1667L15.8334 5.83334";
|
|
268
|
+
function CheckIcon({ size = 20, color = colors.primary, strokeWidth = 2 }) {
|
|
269
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
270
|
+
Svg.Path,
|
|
271
|
+
{
|
|
272
|
+
d: CHECK_PATH,
|
|
273
|
+
stroke: color,
|
|
274
|
+
strokeWidth,
|
|
275
|
+
strokeLinecap: "round",
|
|
276
|
+
strokeLinejoin: "round"
|
|
277
|
+
}
|
|
278
|
+
) });
|
|
279
|
+
}
|
|
280
|
+
|
|
181
281
|
// src/icons/CheckBadge/checkBadgePath.ts
|
|
182
282
|
var CHECK_BADGE_PATH = "M12.5 8.33317L9.16663 11.6665L7.49996 9.99984M11.0384 2.88233L12.0558 3.74941C12.3122 3.96786 12.6305 4.09992 12.9662 4.12671L14.2987 4.23291C15.0822 4.29543 15.7045 4.91733 15.767 5.70077L15.8729 7.03353C15.8997 7.36925 16.0322 7.68799 16.2507 7.94433L17.1174 8.96152C17.6272 9.5597 17.6272 10.4396 17.1175 11.0378L16.2508 12.0551C16.0323 12.3115 15.9 12.6303 15.8732 12.9661L15.7666 14.2986C15.704 15.082 15.0827 15.7043 14.2993 15.7668L12.9663 15.8732C12.6305 15.9 12.312 16.0317 12.0556 16.2502L11.0384 17.1173C10.4402 17.627 9.55973 17.6271 8.96155 17.1174L7.9443 16.2502C7.68796 16.0318 7.36938 15.8998 7.03365 15.8731L5.70064 15.7668C4.9172 15.7043 4.29588 15.0822 4.23336 14.2987L4.12675 12.9661C4.09996 12.6304 3.96759 12.3118 3.74915 12.0555L2.88245 11.0378C2.37268 10.4397 2.37244 9.56002 2.88221 8.96184L3.74969 7.94418C3.96814 7.68784 4.09923 7.36926 4.12602 7.03353L4.23263 5.70093C4.29515 4.91749 4.91826 4.29535 5.70171 4.23283L7.03324 4.12663C7.36897 4.09984 7.68771 3.96788 7.94404 3.74943L8.96164 2.88233C9.55982 2.37256 10.4402 2.37256 11.0384 2.88233Z";
|
|
183
283
|
function CheckBadgeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }) {
|
|
@@ -193,6 +293,25 @@ function CheckBadgeIcon({ size = 20, color = colors.primary, strokeWidth = 2 })
|
|
|
193
293
|
) });
|
|
194
294
|
}
|
|
195
295
|
|
|
296
|
+
// src/icons/ChevronDown/chevronDownPath.ts
|
|
297
|
+
var CHEVRON_DOWN_PATH = "M5 7.5L10 12.5L15 7.5";
|
|
298
|
+
function ChevronDownIcon({
|
|
299
|
+
size = 20,
|
|
300
|
+
color = colors.primary,
|
|
301
|
+
strokeWidth = 2
|
|
302
|
+
}) {
|
|
303
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
304
|
+
Svg.Path,
|
|
305
|
+
{
|
|
306
|
+
d: CHEVRON_DOWN_PATH,
|
|
307
|
+
stroke: color,
|
|
308
|
+
strokeWidth,
|
|
309
|
+
strokeLinecap: "round",
|
|
310
|
+
strokeLinejoin: "round"
|
|
311
|
+
}
|
|
312
|
+
) });
|
|
313
|
+
}
|
|
314
|
+
|
|
196
315
|
// src/icons/Clock/clockPath.ts
|
|
197
316
|
var CLOCK_PATH = "M12 7V12H17M12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21Z";
|
|
198
317
|
function ClockIcon({ size = 24, color = colors.primary, strokeWidth = 2 }) {
|
|
@@ -214,6 +333,42 @@ function FacebookIcon({ size = 20, color = colors.white }) {
|
|
|
214
333
|
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(Svg.Path, { d: FACEBOOK_PATH, fill: color }) });
|
|
215
334
|
}
|
|
216
335
|
|
|
336
|
+
// src/icons/Heart/heartPath.ts
|
|
337
|
+
var HEART_PATH = "M7.99547 3.42388C6.66257 1.8656 4.43987 1.44643 2.76984 2.87334C1.0998 4.30026 0.864686 6.68598 2.17617 8.3736C3.26659 9.77674 6.56656 12.7361 7.64811 13.6939C7.76911 13.801 7.82961 13.8546 7.90018 13.8757C7.96178 13.8941 8.02917 13.8941 8.09077 13.8757C8.16134 13.8546 8.22184 13.801 8.34284 13.6939C9.42439 12.7361 12.7244 9.77674 13.8148 8.3736C15.1263 6.68598 14.9199 4.28525 13.2211 2.87334C11.5224 1.46144 9.32838 1.8656 7.99547 3.42388Z";
|
|
338
|
+
function HeartIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }) {
|
|
339
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
340
|
+
Svg.Path,
|
|
341
|
+
{
|
|
342
|
+
d: HEART_PATH,
|
|
343
|
+
stroke: color,
|
|
344
|
+
strokeWidth,
|
|
345
|
+
strokeLinecap: "round",
|
|
346
|
+
strokeLinejoin: "round",
|
|
347
|
+
fillRule: "evenodd",
|
|
348
|
+
clipRule: "evenodd"
|
|
349
|
+
}
|
|
350
|
+
) });
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// src/icons/HelpCircle/helpCirclePath.ts
|
|
354
|
+
var HELP_CIRCLE_PATH = "M6.99971 6.00149C7.11717 5.66757 7.34902 5.386 7.6542 5.20665C7.95937 5.0273 8.31817 4.96174 8.66705 5.02158C9.01593 5.08142 9.33238 5.2628 9.56034 5.5336C9.7883 5.8044 9.91306 6.14714 9.91254 6.50112C9.91254 7.50037 8.41365 8 8.41365 8M8.43298 10H8.43964M8.33304 13.3333C11.4627 13.3333 13.9997 10.7963 13.9997 7.66667C13.9997 4.53705 11.4627 2 8.33304 2C5.20343 2 2.66638 4.53705 2.66638 7.66667C2.66638 8.3 2.77027 8.90906 2.96196 9.47774C3.03409 9.69175 3.07016 9.79875 3.07666 9.88095C3.08309 9.96213 3.07823 10.019 3.05814 10.098C3.03781 10.1779 2.99291 10.261 2.9031 10.4272L1.81267 12.4456C1.65713 12.7335 1.57936 12.8774 1.59676 12.9885C1.61192 13.0853 1.66887 13.1705 1.75249 13.2215C1.84849 13.2801 2.01124 13.2632 2.33674 13.2296L5.75075 12.8767C5.85414 12.866 5.90583 12.8606 5.95295 12.8624C5.99929 12.8642 6.03201 12.8686 6.0772 12.879C6.12315 12.8896 6.18092 12.9118 6.29648 12.9564C6.92851 13.1999 7.61519 13.3333 8.33304 13.3333Z";
|
|
355
|
+
function HelpCircleIcon({
|
|
356
|
+
size = 20,
|
|
357
|
+
color = colors.primary,
|
|
358
|
+
strokeWidth = 1.5
|
|
359
|
+
}) {
|
|
360
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
361
|
+
Svg.Path,
|
|
362
|
+
{
|
|
363
|
+
d: HELP_CIRCLE_PATH,
|
|
364
|
+
stroke: color,
|
|
365
|
+
strokeWidth,
|
|
366
|
+
strokeLinecap: "round",
|
|
367
|
+
strokeLinejoin: "round"
|
|
368
|
+
}
|
|
369
|
+
) });
|
|
370
|
+
}
|
|
371
|
+
|
|
217
372
|
// src/icons/Home/homePath.ts
|
|
218
373
|
var HOME_PATH = "M1.66675 16.6667H3.33341M3.33341 16.6667H8.33341M3.33341 16.6667V9.54352C3.33341 9.09823 3.33341 8.87548 3.38756 8.66828C3.43554 8.48466 3.51491 8.31089 3.6215 8.15387C3.74178 7.97668 3.90895 7.82974 4.24406 7.53652L8.24538 4.03537C8.86662 3.49178 9.17726 3.21997 9.5271 3.11652C9.83559 3.02529 10.1644 3.02529 10.4729 3.11652C10.823 3.22005 11.1341 3.49212 11.7563 4.03652L15.7563 7.53652C16.0914 7.82974 16.2586 7.97668 16.3789 8.15387C16.4855 8.31089 16.5642 8.48466 16.6122 8.66828C16.6664 8.87548 16.6667 9.09824 16.6667 9.54352V16.6667M8.33341 16.6667H11.6667M8.33341 16.6667V13.3334C8.33341 12.4129 9.07961 11.6667 10.0001 11.6667C10.9206 11.6667 11.6667 12.4129 11.6667 13.3334V16.6667M11.6667 16.6667H16.6667M16.6667 16.6667H18.3334";
|
|
219
374
|
function HomeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }) {
|
|
@@ -250,12 +405,46 @@ function KeyIcon({ size = 20, color = colors.primary, strokeWidth = 2 }) {
|
|
|
250
405
|
) });
|
|
251
406
|
}
|
|
252
407
|
|
|
408
|
+
// src/icons/LayoutGrid/layoutGridPath.ts
|
|
409
|
+
var LAYOUT_GRID_PATH = "M4.33333 4.33333H4.34M11.6667 4.33333H11.6733M4.33333 11.6667H4.34M8.66667 8.66667H8.67333M11.6667 11.6667H11.6733M11.3333 14H14V11.3333M9.33333 11V14M14 9.33333H11M10.4 6.66667H12.9333C13.3067 6.66667 13.4934 6.66667 13.636 6.594C13.7614 6.53009 13.8634 6.4281 13.9273 6.30266C14 6.16005 14 5.97337 14 5.6V3.06667C14 2.6933 14 2.50661 13.9273 2.36401C13.8634 2.23856 13.7614 2.13658 13.636 2.07266C13.4934 2 13.3067 2 12.9333 2H10.4C10.0266 2 9.83995 2 9.69734 2.07266C9.5719 2.13658 9.46991 2.23856 9.406 2.36401C9.33333 2.50661 9.33333 2.6933 9.33333 3.06667V5.6C9.33333 5.97337 9.33333 6.16005 9.406 6.30266C9.46991 6.4281 9.5719 6.53009 9.69734 6.594C9.83995 6.66667 10.0266 6.66667 10.4 6.66667ZM3.06667 6.66667H5.6C5.97337 6.66667 6.16005 6.66667 6.30266 6.594C6.4281 6.53009 6.53009 6.4281 6.594 6.30266C6.66667 6.16005 6.66667 5.97337 6.66667 5.6V3.06667C6.66667 2.6933 6.66667 2.50661 6.594 2.36401C6.53009 2.23856 6.4281 2.13658 6.30266 2.07266C6.16005 2 5.97337 2 5.6 2H3.06667C2.6933 2 2.50661 2 2.36401 2.07266C2.23856 2.13658 2.13658 2.23856 2.07266 2.36401C2 2.50661 2 2.6933 2 3.06667V5.6C2 5.97337 2 6.16005 2.07266 6.30266C2.13658 6.4281 2.23856 6.53009 2.36401 6.594C2.50661 6.66667 2.6933 6.66667 3.06667 6.66667ZM3.06667 14H5.6C5.97337 14 6.16005 14 6.30266 13.9273C6.4281 13.8634 6.53009 13.7614 6.594 13.636C6.66667 13.4934 6.66667 13.3067 6.66667 12.9333V10.4C6.66667 10.0266 6.66667 9.83995 6.594 9.69734C6.53009 9.5719 6.4281 9.46991 6.30266 9.406C6.16005 9.33333 5.97337 9.33333 5.6 9.33333H3.06667C2.6933 9.33333 2.50661 9.33333 2.36401 9.406C2.23856 9.46991 2.13658 9.5719 2.07266 9.69734C2 9.83995 2 10.0266 2 10.4V12.9333C2 13.3067 2 13.4934 2.07266 13.636C2.13658 13.7614 2.23856 13.8634 2.36401 13.9273C2.50661 14 2.6933 14 3.06667 14Z";
|
|
410
|
+
function LayoutGridIcon({
|
|
411
|
+
size = 20,
|
|
412
|
+
color = colors.primary,
|
|
413
|
+
strokeWidth = 1.5
|
|
414
|
+
}) {
|
|
415
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
416
|
+
Svg.Path,
|
|
417
|
+
{
|
|
418
|
+
d: LAYOUT_GRID_PATH,
|
|
419
|
+
stroke: color,
|
|
420
|
+
strokeWidth,
|
|
421
|
+
strokeLinecap: "round",
|
|
422
|
+
strokeLinejoin: "round"
|
|
423
|
+
}
|
|
424
|
+
) });
|
|
425
|
+
}
|
|
426
|
+
|
|
253
427
|
// src/icons/LinkedIn/linkedinPath.ts
|
|
254
428
|
var LINKEDIN_PATH = "M15.8333 2.50098C16.2754 2.50098 16.6993 2.67657 17.0118 2.98913C17.3244 3.30169 17.5 3.72562 17.5 4.16764V15.8343C17.5 16.2763 17.3244 16.7003 17.0118 17.0128C16.6993 17.3254 16.2754 17.501 15.8333 17.501H4.16667C3.72464 17.501 3.30072 17.3254 2.98816 17.0128C2.67559 16.7003 2.5 16.2763 2.5 15.8343V4.16764C2.5 3.72562 2.67559 3.30169 2.98816 2.98913C3.30072 2.67657 3.72464 2.50098 4.16667 2.50098H15.8333ZM15.4167 15.4176V11.001C15.4167 10.2805 15.1304 9.58948 14.621 9.08C14.1115 8.57053 13.4205 8.28431 12.7 8.28431C11.9917 8.28431 11.1667 8.71764 10.7667 9.36764V8.44264H8.44167V15.4176H10.7667V11.3093C10.7667 10.6676 11.2833 10.1426 11.925 10.1426C12.2344 10.1426 12.5312 10.2656 12.75 10.4844C12.9687 10.7031 13.0917 10.9999 13.0917 11.3093V15.4176H15.4167ZM5.73333 7.13431C6.10464 7.13431 6.46073 6.98681 6.72328 6.72426C6.98583 6.46171 7.13333 6.10561 7.13333 5.73431C7.13333 4.95931 6.50833 4.32598 5.73333 4.32598C5.35982 4.32598 5.0016 4.47435 4.73749 4.73847C4.47338 5.00258 4.325 5.3608 4.325 5.73431C4.325 6.50931 4.95833 7.13431 5.73333 7.13431ZM6.89167 15.4176V8.44264H4.58333V15.4176H6.89167Z";
|
|
255
429
|
function LinkedInIcon({ size = 20, color = colors.white }) {
|
|
256
430
|
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(Svg.Path, { d: LINKEDIN_PATH, fill: color }) });
|
|
257
431
|
}
|
|
258
432
|
|
|
433
|
+
// src/icons/LogOut/logOutPath.ts
|
|
434
|
+
var LOG_OUT_PATH = "M10.6667 4.66667L14 8L10.6667 11.3333M14 8H6M8 11.3333C8 11.5304 8 11.6289 7.99268 11.7143C7.91655 12.6013 7.26324 13.3312 6.39002 13.5049C6.30602 13.5216 6.20801 13.5324 6.01223 13.5542L5.3313 13.6299C4.30832 13.7435 3.7968 13.8004 3.39044 13.6703C2.84862 13.4969 2.40628 13.101 2.17412 12.5817C2 12.1921 2 11.6775 2 10.6482V5.3518C2 4.32251 2 3.80787 2.17412 3.41835C2.40628 2.89899 2.84862 2.50307 3.39044 2.32969C3.79681 2.19965 4.3083 2.25648 5.33129 2.37015L6.01223 2.44581C6.20808 2.46757 6.306 2.47845 6.39002 2.49515C7.26324 2.66877 7.91655 3.39869 7.99268 4.28574C8 4.37109 8 4.46962 8 4.66667";
|
|
435
|
+
function LogOutIcon({ size = 20, color = colors.red, strokeWidth = 1.5 }) {
|
|
436
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
437
|
+
Svg.Path,
|
|
438
|
+
{
|
|
439
|
+
d: LOG_OUT_PATH,
|
|
440
|
+
stroke: color,
|
|
441
|
+
strokeWidth,
|
|
442
|
+
strokeLinecap: "round",
|
|
443
|
+
strokeLinejoin: "round"
|
|
444
|
+
}
|
|
445
|
+
) });
|
|
446
|
+
}
|
|
447
|
+
|
|
259
448
|
// src/icons/Mail/mailPath.ts
|
|
260
449
|
var MAIL_PATH = "M3.33333 4.99984L8.42303 8.84339L8.42473 8.8448C8.98987 9.25924 9.27261 9.46658 9.5823 9.54668C9.85602 9.61748 10.1438 9.61748 10.4175 9.54668C10.7274 9.46651 11.011 9.25856 11.5771 8.84339C11.5771 8.84339 14.8417 6.33812 16.6667 4.99984M2.5 13.1667V6.83333C2.5 5.89991 2.5 5.43285 2.68166 5.07633C2.84144 4.76273 3.09623 4.50795 3.40983 4.34816C3.76635 4.1665 4.23341 4.1665 5.16683 4.1665H14.8335C15.7669 4.1665 16.233 4.1665 16.5895 4.34816C16.9031 4.50795 17.1587 4.76273 17.3185 5.07633C17.5 5.43251 17.5 5.899 17.5 6.8306V13.1695C17.5 14.1011 17.5 14.5669 17.3185 14.9231C17.1587 15.2367 16.9031 15.4919 16.5895 15.6517C16.2333 15.8332 15.7675 15.8332 14.8359 15.8332H5.16409C4.23249 15.8332 3.766 15.8332 3.40983 15.6517C3.09623 15.4919 2.84144 15.2367 2.68166 14.9231C2.5 14.5666 2.5 14.1001 2.5 13.1667Z";
|
|
261
450
|
function MailIcon({ size = 20, color = colors.primary, strokeWidth = 2 }) {
|
|
@@ -301,6 +490,53 @@ function PhoneIcon({ size = 20, color = colors.primary, strokeWidth = 2 }) {
|
|
|
301
490
|
) });
|
|
302
491
|
}
|
|
303
492
|
|
|
493
|
+
// src/icons/Search/searchPath.ts
|
|
494
|
+
var SEARCH_CIRCLE_PATH = "M9.16667 15.8333C12.8486 15.8333 15.8333 12.8486 15.8333 9.16667C15.8333 5.48477 12.8486 2.5 9.16667 2.5C5.48477 2.5 2.5 5.48477 2.5 9.16667C2.5 12.8486 5.48477 15.8333 9.16667 15.8333Z";
|
|
495
|
+
var SEARCH_HANDLE_PATH = "M17.5 17.5L13.875 13.875";
|
|
496
|
+
function SearchIcon({
|
|
497
|
+
size = 20,
|
|
498
|
+
color = colors.primary,
|
|
499
|
+
strokeWidth = 2
|
|
500
|
+
}) {
|
|
501
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Svg__default.default, { width: size, height: size, viewBox: "0 0 20 20", fill: "none", children: [
|
|
502
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
503
|
+
Svg.Path,
|
|
504
|
+
{
|
|
505
|
+
d: SEARCH_CIRCLE_PATH,
|
|
506
|
+
stroke: color,
|
|
507
|
+
strokeWidth,
|
|
508
|
+
strokeLinecap: "round",
|
|
509
|
+
strokeLinejoin: "round"
|
|
510
|
+
}
|
|
511
|
+
),
|
|
512
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
513
|
+
Svg.Path,
|
|
514
|
+
{
|
|
515
|
+
d: SEARCH_HANDLE_PATH,
|
|
516
|
+
stroke: color,
|
|
517
|
+
strokeWidth,
|
|
518
|
+
strokeLinecap: "round",
|
|
519
|
+
strokeLinejoin: "round"
|
|
520
|
+
}
|
|
521
|
+
)
|
|
522
|
+
] });
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
// src/icons/Settings/settingsPath.ts
|
|
526
|
+
var SETTINGS_PATH = "M8.00004 10C9.10461 10 10 9.10457 10 8C10 6.89543 9.10461 6 8.00004 6C6.89547 6 6.00004 6.89543 6.00004 8C6.00004 9.10457 6.89547 10 8.00004 10Z M12.4849 9.81818C12.4042 10.001 12.3801 10.2038 12.4158 10.4004C12.4514 10.597 12.5452 10.7784 12.6849 10.9212L12.7213 10.9576C12.834 11.0702 12.9234 11.2038 12.9844 11.351C13.0454 11.4981 13.0768 11.6559 13.0768 11.8152C13.0768 11.9744 13.0454 12.1322 12.9844 12.2793C12.9234 12.4265 12.834 12.5602 12.7213 12.6727C12.6087 12.7854 12.475 12.8748 12.3278 12.9358C12.1807 12.9968 12.023 13.0282 11.8637 13.0282C11.7044 13.0282 11.5467 12.9968 11.3995 12.9358C11.2524 12.8748 11.1187 12.7854 11.0061 12.6727L10.9697 12.6364C10.8269 12.4966 10.6455 12.4029 10.4489 12.3673C10.2523 12.3316 10.0495 12.3557 9.86671 12.4364C9.68745 12.5132 9.53458 12.6408 9.42689 12.8034C9.31921 12.966 9.26142 13.1565 9.26065 13.3515V13.4545C9.26065 13.776 9.13294 14.0843 8.90562 14.3116C8.67831 14.539 8.37 14.6667 8.04853 14.6667C7.72705 14.6667 7.41874 14.539 7.19143 14.3116C6.96411 14.0843 6.8364 13.776 6.8364 13.4545V13.4C6.83171 13.1994 6.76678 13.0048 6.65005 12.8416C6.53331 12.6784 6.37018 12.5541 6.18186 12.4848C5.99906 12.4042 5.79629 12.3801 5.59968 12.4158C5.40308 12.4514 5.22166 12.5451 5.07883 12.6849L5.04246 12.7212C4.92989 12.8339 4.79621 12.9233 4.64906 12.9843C4.50191 13.0453 4.34418 13.0767 4.18489 13.0767C4.0256 13.0767 3.86787 13.0453 3.72072 12.9843C3.57357 12.9233 3.43989 12.8339 3.32731 12.7212C3.21461 12.6086 3.12521 12.475 3.06421 12.3278C3.00321 12.1807 2.97181 12.0229 2.97181 11.8636C2.97181 11.7043 3.00321 11.5466 3.06421 11.3995C3.12521 11.2523 3.21461 11.1186 3.32731 11.0061L3.36368 10.9697C3.5034 10.8269 3.59712 10.6454 3.63277 10.4488C3.66842 10.2522 3.64435 10.0495 3.56368 9.86667C3.48685 9.68741 3.35929 9.53454 3.19669 9.42686C3.03409 9.31917 2.84355 9.26139 2.64853 9.26061H2.5455C2.22402 9.26061 1.91571 9.1329 1.6884 8.90559C1.46108 8.67827 1.33337 8.36996 1.33337 8.04849C1.33337 7.72701 1.46108 7.4187 1.6884 7.19139C1.91571 6.96407 2.22402 6.83637 2.5455 6.83637H2.60004C2.80064 6.83167 2.9952 6.76674 3.1584 6.65001C3.32161 6.53328 3.44593 6.37014 3.51519 6.18182C3.59587 5.99902 3.61993 5.79625 3.58429 5.59965C3.54864 5.40304 3.45491 5.22163 3.31519 5.07879L3.27883 5.04243C3.16613 4.92985 3.07672 4.79617 3.01573 4.64902C2.95473 4.50187 2.92333 4.34414 2.92333 4.18485C2.92333 4.02556 2.95473 3.86783 3.01573 3.72068C3.07672 3.57353 3.16613 3.43985 3.27883 3.32728C3.3914 3.21458 3.52509 3.12517 3.67223 3.06417C3.81938 3.00317 3.97711 2.97178 4.1364 2.97178C4.2957 2.97178 4.45343 3.00317 4.60057 3.06417C4.74772 3.12517 4.88141 3.21458 4.99398 3.32728L5.03034 3.36364C5.17318 3.50336 5.3546 3.59708 5.5512 3.63273C5.7478 3.66838 5.95058 3.64431 6.13337 3.56364H6.18186C6.36111 3.48681 6.51399 3.35925 6.62167 3.19665C6.72935 3.03405 6.78714 2.84351 6.78792 2.64849V2.54546C6.78792 2.22398 6.91562 1.91567 7.14294 1.68836C7.37026 1.46104 7.67857 1.33334 8.00004 1.33334C8.32151 1.33334 8.62982 1.46104 8.85714 1.68836C9.08446 1.91567 9.21216 2.22398 9.21216 2.54546V2.6C9.21294 2.79502 9.27073 2.98556 9.37841 3.14816C9.48609 3.31076 9.63897 3.43833 9.81822 3.51515C10.001 3.59583 10.2038 3.6199 10.4004 3.58425C10.597 3.5486 10.7784 3.45487 10.9213 3.31515L10.9576 3.27879C11.0702 3.16609 11.2039 3.07669 11.351 3.01569C11.4982 2.95469 11.6559 2.92329 11.8152 2.92329C11.9745 2.92329 12.1322 2.95469 12.2794 3.01569C12.4265 3.07669 12.5602 3.16609 12.6728 3.27879C12.7855 3.39136 12.8749 3.52505 12.9359 3.6722C12.9969 3.81935 13.0283 3.97707 13.0283 4.13637C13.0283 4.29566 12.9969 4.45339 12.9359 4.60054C12.8749 4.74769 12.7855 4.88137 12.6728 4.99394L12.6364 5.03031C12.4967 5.17314 12.403 5.35456 12.3673 5.55116C12.3317 5.74776 12.3557 5.95054 12.4364 6.13334V6.18182C12.5132 6.36107 12.6408 6.51395 12.8034 6.62163C12.966 6.72932 13.1565 6.7871 13.3516 6.78788H13.4546C13.7761 6.78788 14.0844 6.91559 14.3117 7.1429C14.539 7.37022 14.6667 7.67853 14.6667 8C14.6667 8.32148 14.539 8.62978 14.3117 8.8571C14.0844 9.08442 13.7761 9.21212 13.4546 9.21212H13.4C13.205 9.2129 13.0145 9.27069 12.8519 9.37837C12.6893 9.48605 12.5617 9.63893 12.4849 9.81818Z";
|
|
527
|
+
function SettingsIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }) {
|
|
528
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
529
|
+
Svg.Path,
|
|
530
|
+
{
|
|
531
|
+
d: SETTINGS_PATH,
|
|
532
|
+
stroke: color,
|
|
533
|
+
strokeWidth,
|
|
534
|
+
strokeLinecap: "round",
|
|
535
|
+
strokeLinejoin: "round"
|
|
536
|
+
}
|
|
537
|
+
) });
|
|
538
|
+
}
|
|
539
|
+
|
|
304
540
|
// src/icons/Show/showPath.ts
|
|
305
541
|
var SHOW_PATH = "M1.66669 10C1.66669 10 4.16669 4.16667 10 4.16667C15.8334 4.16667 18.3334 10 18.3334 10C18.3334 10 15.8334 15.8333 10 15.8333C4.16669 15.8333 1.66669 10 1.66669 10Z";
|
|
306
542
|
var SHOW_PUPIL_PATH = "M10 12.5C11.3807 12.5 12.5 11.3807 12.5 10C12.5 8.61929 11.3807 7.5 10 7.5C8.61929 7.5 7.5 8.61929 7.5 10C7.5 11.3807 8.61929 12.5 10 12.5Z";
|
|
@@ -344,33 +580,63 @@ function UserIcon({ size = 20, color = colors.primary, strokeWidth = 2 }) {
|
|
|
344
580
|
) });
|
|
345
581
|
}
|
|
346
582
|
|
|
583
|
+
// src/icons/Video/videoPath.ts
|
|
584
|
+
var VIDEO_PATHS = [
|
|
585
|
+
"M14.6667 5.95424C14.6667 5.55036 14.6667 5.34843 14.5868 5.25492C14.5175 5.17378 14.4136 5.13072 14.3072 5.13909C14.1846 5.14874 14.0418 5.29153 13.7563 5.57712L11.3334 7.99999L13.7563 10.4229C14.0418 10.7085 14.1846 10.8512 14.3072 10.8609C14.4136 10.8693 14.5175 10.8262 14.5868 10.7451C14.6667 10.6516 14.6667 10.4496 14.6667 10.0457V5.95424Z",
|
|
586
|
+
"M1.33337 6.53333C1.33337 5.41322 1.33337 4.85317 1.55136 4.42535C1.74311 4.04902 2.04907 3.74306 2.42539 3.55132C2.85322 3.33333 3.41327 3.33333 4.53337 3.33333H8.13337C9.25348 3.33333 9.81353 3.33333 10.2414 3.55132C10.6177 3.74306 10.9236 4.04902 11.1154 4.42535C11.3334 4.85317 11.3334 5.41322 11.3334 6.53333V9.46666C11.3334 10.5868 11.3334 11.1468 11.1154 11.5746C10.9236 11.951 10.6177 12.2569 10.2414 12.4487C9.81353 12.6667 9.25348 12.6667 8.13337 12.6667H4.53337C3.41327 12.6667 2.85322 12.6667 2.42539 12.4487C2.04907 12.2569 1.74311 11.951 1.55136 11.5746C1.33337 11.1468 1.33337 10.5868 1.33337 9.46666V6.53333Z"
|
|
587
|
+
];
|
|
588
|
+
function VideoIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }) {
|
|
589
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 16 16", fill: "none", children: VIDEO_PATHS.map((path) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
590
|
+
Svg.Path,
|
|
591
|
+
{
|
|
592
|
+
d: path,
|
|
593
|
+
stroke: color,
|
|
594
|
+
strokeWidth,
|
|
595
|
+
strokeLinecap: "round",
|
|
596
|
+
strokeLinejoin: "round"
|
|
597
|
+
},
|
|
598
|
+
path
|
|
599
|
+
)) });
|
|
600
|
+
}
|
|
601
|
+
|
|
347
602
|
// src/icons/registry.ts
|
|
348
603
|
var icons = {
|
|
349
604
|
arrowRight: ArrowRightIcon,
|
|
350
605
|
bag: BagIcon,
|
|
351
606
|
bell: BellIcon,
|
|
352
607
|
building: BuildingIcon,
|
|
608
|
+
calendar: CalendarIcon,
|
|
353
609
|
camera: CameraIcon,
|
|
610
|
+
check: CheckIcon,
|
|
354
611
|
checkBadge: CheckBadgeIcon,
|
|
612
|
+
chevronDown: ChevronDownIcon,
|
|
355
613
|
clock: ClockIcon,
|
|
356
614
|
facebook: FacebookIcon,
|
|
615
|
+
heart: HeartIcon,
|
|
616
|
+
helpCircle: HelpCircleIcon,
|
|
357
617
|
home: HomeIcon,
|
|
358
618
|
instagram: InstagramIcon,
|
|
359
619
|
key: KeyIcon,
|
|
620
|
+
layoutGrid: LayoutGridIcon,
|
|
360
621
|
linkedin: LinkedInIcon,
|
|
622
|
+
logOut: LogOutIcon,
|
|
361
623
|
mail: MailIcon,
|
|
362
624
|
navigate: NavigateIcon,
|
|
363
625
|
phone: PhoneIcon,
|
|
626
|
+
search: SearchIcon,
|
|
627
|
+
settings: SettingsIcon,
|
|
364
628
|
show: ShowIcon,
|
|
365
|
-
user: UserIcon
|
|
629
|
+
user: UserIcon,
|
|
630
|
+
video: VideoIcon
|
|
366
631
|
};
|
|
367
632
|
var iconNames = Object.keys(icons);
|
|
368
633
|
var iconGroups = {
|
|
369
|
-
navigation: ["arrowRight", "home", "navigate"],
|
|
370
|
-
actions: ["show", "bell", "camera", "key", "checkBadge"],
|
|
371
|
-
objects: ["bag", "building", "clock", "user"],
|
|
634
|
+
navigation: ["arrowRight", "chevronDown", "home", "navigate"],
|
|
635
|
+
actions: ["show", "bell", "camera", "key", "check", "checkBadge", "search", "calendar", "heart"],
|
|
636
|
+
objects: ["bag", "building", "clock", "user", "video"],
|
|
372
637
|
communication: ["mail", "phone"],
|
|
373
|
-
social: ["facebook", "instagram", "linkedin"]
|
|
638
|
+
social: ["facebook", "instagram", "linkedin"],
|
|
639
|
+
interface: ["layoutGrid", "settings", "helpCircle", "logOut"]
|
|
374
640
|
};
|
|
375
641
|
var iconGroupNames = Object.keys(iconGroups);
|
|
376
642
|
function getIconsByGroup(group) {
|
|
@@ -380,6 +646,18 @@ function Icon({ name, ...props }) {
|
|
|
380
646
|
const Component = icons[name];
|
|
381
647
|
return /* @__PURE__ */ jsxRuntime.jsx(Component, { ...props });
|
|
382
648
|
}
|
|
649
|
+
|
|
650
|
+
// src/utils/mergeRefs.ts
|
|
651
|
+
function mergeRefs(internalRef, forwardedRef) {
|
|
652
|
+
return (node) => {
|
|
653
|
+
internalRef.current = node;
|
|
654
|
+
if (typeof forwardedRef === "function") {
|
|
655
|
+
forwardedRef(node);
|
|
656
|
+
} else if (forwardedRef) {
|
|
657
|
+
forwardedRef.current = node;
|
|
658
|
+
}
|
|
659
|
+
};
|
|
660
|
+
}
|
|
383
661
|
function hasClassList(node) {
|
|
384
662
|
return typeof node === "object" && node !== null && "classList" in node && typeof node.classList?.add === "function";
|
|
385
663
|
}
|
|
@@ -420,129 +698,399 @@ function useApplyWebClassName(ref, className, enabled = true) {
|
|
|
420
698
|
};
|
|
421
699
|
}, [ref, className, enabled]);
|
|
422
700
|
}
|
|
423
|
-
var
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
iconColor: colors.white
|
|
435
|
-
}
|
|
436
|
-
};
|
|
437
|
-
var sizeConfig = {
|
|
438
|
-
lg: {
|
|
439
|
-
minHeight: 44,
|
|
440
|
-
borderRadius: 40,
|
|
441
|
-
paddingVertical: 4,
|
|
442
|
-
paddingLeft: 20,
|
|
443
|
-
paddingRightWithIcon: 4,
|
|
444
|
-
paddingRight: 20,
|
|
445
|
-
gap: 20,
|
|
446
|
-
text: buttonTypography.lg,
|
|
447
|
-
iconContainerSize: 36,
|
|
448
|
-
iconSize: 20
|
|
449
|
-
},
|
|
450
|
-
sm: {
|
|
451
|
-
minHeight: 32,
|
|
452
|
-
borderRadius: 40,
|
|
453
|
-
paddingVertical: 6,
|
|
454
|
-
paddingLeft: 12,
|
|
455
|
-
paddingRightWithIcon: 4,
|
|
456
|
-
paddingRight: 12,
|
|
457
|
-
gap: 12,
|
|
458
|
-
text: buttonTypography.sm,
|
|
459
|
-
iconContainerSize: 20,
|
|
460
|
-
iconSize: 12
|
|
461
|
-
}
|
|
462
|
-
};
|
|
463
|
-
function Button({
|
|
464
|
-
title,
|
|
465
|
-
children,
|
|
701
|
+
var IMAGE_SIZE = 48;
|
|
702
|
+
var CONTAINER_RADIUS = 71;
|
|
703
|
+
var CHEVRON_SIZE = 20;
|
|
704
|
+
var FALLBACK_ICON_SIZE = 20;
|
|
705
|
+
var MENU_RADIUS = 16;
|
|
706
|
+
var MENU_ITEM_RADIUS = 12;
|
|
707
|
+
var MENU_ITEM_ICON_SIZE = 16;
|
|
708
|
+
var Avatar = react.forwardRef(function Avatar2({
|
|
709
|
+
name,
|
|
710
|
+
email,
|
|
711
|
+
imageUrl,
|
|
466
712
|
onPress,
|
|
467
713
|
disabled = false,
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
714
|
+
showChevron = true,
|
|
715
|
+
menuItems,
|
|
716
|
+
open: openProp,
|
|
717
|
+
defaultOpen = false,
|
|
718
|
+
onOpenChange,
|
|
719
|
+
menuWidth,
|
|
472
720
|
style,
|
|
473
|
-
textStyle,
|
|
474
721
|
className,
|
|
475
|
-
|
|
476
|
-
|
|
722
|
+
accessibilityLabel,
|
|
723
|
+
hitSlop = 8,
|
|
724
|
+
...rest
|
|
725
|
+
}, forwardedRef) {
|
|
726
|
+
const wrapperRef = react.useRef(null);
|
|
477
727
|
const containerRef = react.useRef(null);
|
|
478
|
-
const
|
|
479
|
-
const
|
|
480
|
-
const
|
|
481
|
-
const
|
|
482
|
-
const
|
|
483
|
-
const
|
|
484
|
-
const
|
|
485
|
-
const
|
|
486
|
-
useApplyWebClassName(containerRef,
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
minHeight: metrics.minHeight,
|
|
493
|
-
borderRadius: metrics.borderRadius,
|
|
494
|
-
backgroundColor: preset.backgroundColor,
|
|
495
|
-
paddingTop: metrics.paddingVertical,
|
|
496
|
-
paddingBottom: metrics.paddingVertical,
|
|
497
|
-
paddingLeft: metrics.paddingLeft,
|
|
498
|
-
paddingRight: hasIcon ? metrics.paddingRightWithIcon : metrics.paddingRight,
|
|
499
|
-
gap: hasIcon ? metrics.gap : 0
|
|
728
|
+
const setContainerRef = react.useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);
|
|
729
|
+
const [imageFailed, setImageFailed] = react.useState(false);
|
|
730
|
+
const [hoveredKey, setHoveredKey] = react.useState(null);
|
|
731
|
+
const hasMenu = Boolean(menuItems && menuItems.length > 0);
|
|
732
|
+
const isInteractive = onPress != null || hasMenu;
|
|
733
|
+
const isOpenControlled = typeof openProp === "boolean";
|
|
734
|
+
const [uncontrolledOpen, setUncontrolledOpen] = react.useState(defaultOpen);
|
|
735
|
+
const isOpen = hasMenu && (isOpenControlled ? openProp : uncontrolledOpen);
|
|
736
|
+
useApplyWebClassName(containerRef, className);
|
|
737
|
+
const setOpen = react.useCallback(
|
|
738
|
+
(next) => {
|
|
739
|
+
if (!isOpenControlled) setUncontrolledOpen(next);
|
|
740
|
+
onOpenChange?.(next);
|
|
741
|
+
if (!next) setHoveredKey(null);
|
|
500
742
|
},
|
|
501
|
-
|
|
502
|
-
style
|
|
503
|
-
];
|
|
504
|
-
const labelStyle = [
|
|
505
|
-
styles.label,
|
|
506
|
-
metrics.text,
|
|
507
|
-
{ color: preset.textColor },
|
|
508
|
-
reactNative.Platform.OS === "android" ? styles.labelAndroid : null,
|
|
509
|
-
!hasIcon && styles.labelCentered,
|
|
510
|
-
textStyle
|
|
511
|
-
];
|
|
512
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
513
|
-
reactNative.TouchableOpacity,
|
|
514
|
-
{
|
|
515
|
-
ref: containerRef,
|
|
516
|
-
style: containerStyle,
|
|
517
|
-
onPress,
|
|
518
|
-
disabled,
|
|
519
|
-
activeOpacity: 0.7,
|
|
520
|
-
accessibilityRole: "button",
|
|
521
|
-
accessibilityState: { disabled },
|
|
522
|
-
children: [
|
|
523
|
-
hasCustomChildren ? children : /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { ref: textRef, style: labelStyle, children: label }),
|
|
524
|
-
hasIcon ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
525
|
-
reactNative.View,
|
|
526
|
-
{
|
|
527
|
-
style: [
|
|
528
|
-
styles.iconContainer,
|
|
529
|
-
{
|
|
530
|
-
width: metrics.iconContainerSize,
|
|
531
|
-
height: metrics.iconContainerSize,
|
|
532
|
-
borderRadius: metrics.iconContainerSize / 2,
|
|
533
|
-
backgroundColor: preset.iconBadgeBackgroundColor
|
|
534
|
-
}
|
|
535
|
-
],
|
|
536
|
-
children: iconNode
|
|
537
|
-
}
|
|
538
|
-
) : null
|
|
539
|
-
]
|
|
540
|
-
}
|
|
743
|
+
[isOpenControlled, onOpenChange]
|
|
541
744
|
);
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
745
|
+
const focusTrigger = react.useCallback(() => {
|
|
746
|
+
const node = containerRef.current;
|
|
747
|
+
node?.focus?.();
|
|
748
|
+
}, []);
|
|
749
|
+
const closeAndFocusTrigger = react.useCallback(() => {
|
|
750
|
+
setOpen(false);
|
|
751
|
+
focusTrigger();
|
|
752
|
+
}, [focusTrigger, setOpen]);
|
|
753
|
+
const handlePress = (event) => {
|
|
754
|
+
onPress?.(event);
|
|
755
|
+
if (hasMenu) setOpen(!isOpen);
|
|
756
|
+
};
|
|
757
|
+
const handleItemPress = react.useCallback(
|
|
758
|
+
(item) => {
|
|
759
|
+
if (item.disabled) return;
|
|
760
|
+
item.onPress();
|
|
761
|
+
closeAndFocusTrigger();
|
|
762
|
+
},
|
|
763
|
+
[closeAndFocusTrigger]
|
|
764
|
+
);
|
|
765
|
+
react.useEffect(() => {
|
|
766
|
+
if (reactNative.Platform.OS !== "web" || !isOpen) return;
|
|
767
|
+
const handlePointerDown = (event) => {
|
|
768
|
+
const wrapper = wrapperRef.current;
|
|
769
|
+
const target = event.target;
|
|
770
|
+
if (wrapper?.contains && target instanceof Node && !wrapper.contains(target)) {
|
|
771
|
+
setOpen(false);
|
|
772
|
+
}
|
|
773
|
+
};
|
|
774
|
+
document.addEventListener("mousedown", handlePointerDown);
|
|
775
|
+
document.addEventListener("touchstart", handlePointerDown);
|
|
776
|
+
return () => {
|
|
777
|
+
document.removeEventListener("mousedown", handlePointerDown);
|
|
778
|
+
document.removeEventListener("touchstart", handlePointerDown);
|
|
779
|
+
};
|
|
780
|
+
}, [isOpen, setOpen]);
|
|
781
|
+
react.useEffect(() => {
|
|
782
|
+
if (reactNative.Platform.OS !== "web" || !isOpen) return;
|
|
783
|
+
const handleKeyDown = (event) => {
|
|
784
|
+
if (event.key === "Escape") {
|
|
785
|
+
event.preventDefault();
|
|
786
|
+
closeAndFocusTrigger();
|
|
787
|
+
}
|
|
788
|
+
};
|
|
789
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
790
|
+
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
791
|
+
}, [isOpen, closeAndFocusTrigger]);
|
|
792
|
+
const hasImage = Boolean(imageUrl) && !imageFailed;
|
|
793
|
+
const resolvedAccessibilityLabel = accessibilityLabel ?? [name, email].filter(Boolean).join(", ");
|
|
794
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: wrapperRef, style: [styles.wrapper, isOpen && styles.wrapperOpen], children: [
|
|
795
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
796
|
+
reactNative.Pressable,
|
|
797
|
+
{
|
|
798
|
+
...rest,
|
|
799
|
+
ref: setContainerRef,
|
|
800
|
+
onPress: handlePress,
|
|
801
|
+
disabled: disabled || !isInteractive,
|
|
802
|
+
hitSlop: isInteractive ? hitSlop : void 0,
|
|
803
|
+
accessibilityRole: isInteractive ? "button" : void 0,
|
|
804
|
+
accessibilityLabel: resolvedAccessibilityLabel,
|
|
805
|
+
accessibilityState: isInteractive ? { disabled, expanded: hasMenu ? isOpen : void 0 } : void 0,
|
|
806
|
+
style: [styles.root, disabled && styles.disabled, style],
|
|
807
|
+
children: [
|
|
808
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles.imageWrap, children: hasImage ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
809
|
+
reactNative.Image,
|
|
810
|
+
{
|
|
811
|
+
source: { uri: imageUrl ?? void 0 },
|
|
812
|
+
style: styles.image,
|
|
813
|
+
onError: () => setImageFailed(true)
|
|
814
|
+
}
|
|
815
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles.imageFallback, children: /* @__PURE__ */ jsxRuntime.jsx(UserIcon, { size: FALLBACK_ICON_SIZE, color: colors.primary }) }) }),
|
|
816
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles.textColumn, children: [
|
|
817
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles.name, numberOfLines: 1, children: name }),
|
|
818
|
+
email ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles.email, numberOfLines: 1, children: email }) : null
|
|
819
|
+
] }),
|
|
820
|
+
showChevron ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles.chevronSlot, isOpen && styles.chevronOpen], children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, { size: CHEVRON_SIZE, color: isOpen ? colors.primary : colors.grey100 }) }) : null
|
|
821
|
+
]
|
|
822
|
+
}
|
|
823
|
+
),
|
|
824
|
+
hasMenu && isOpen ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles.menu, menuWidth != null && { right: void 0, width: menuWidth }], children: menuItems.map((item) => {
|
|
825
|
+
const itemKey = item.key ?? item.label;
|
|
826
|
+
const isHovered = hoveredKey === itemKey;
|
|
827
|
+
const backgroundColor = isHovered ? item.hoverColor ?? colors.grey600 : item.backgroundColor ?? "transparent";
|
|
828
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
829
|
+
reactNative.Pressable,
|
|
830
|
+
{
|
|
831
|
+
onPress: () => handleItemPress(item),
|
|
832
|
+
disabled: item.disabled,
|
|
833
|
+
onHoverIn: () => setHoveredKey(itemKey),
|
|
834
|
+
onHoverOut: () => setHoveredKey((current) => current === itemKey ? null : current),
|
|
835
|
+
onPressIn: () => setHoveredKey(itemKey),
|
|
836
|
+
onPressOut: () => setHoveredKey((current) => current === itemKey ? null : current),
|
|
837
|
+
accessibilityRole: "menuitem",
|
|
838
|
+
accessibilityState: { disabled: item.disabled },
|
|
839
|
+
style: [
|
|
840
|
+
styles.menuItem,
|
|
841
|
+
{ backgroundColor },
|
|
842
|
+
item.disabled && styles.menuItemDisabled
|
|
843
|
+
],
|
|
844
|
+
children: [
|
|
845
|
+
item.icon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles.menuItemIcon, children: item.icon }) : null,
|
|
846
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles.menuItemLabel, numberOfLines: 1, children: item.label })
|
|
847
|
+
]
|
|
848
|
+
},
|
|
849
|
+
itemKey
|
|
850
|
+
);
|
|
851
|
+
}) }) : null
|
|
852
|
+
] });
|
|
853
|
+
});
|
|
854
|
+
var styles = reactNative.StyleSheet.create({
|
|
855
|
+
wrapper: {
|
|
856
|
+
position: "relative",
|
|
857
|
+
alignSelf: "flex-start"
|
|
858
|
+
},
|
|
859
|
+
wrapperOpen: {
|
|
860
|
+
zIndex: 20
|
|
861
|
+
},
|
|
862
|
+
root: {
|
|
863
|
+
flexDirection: "row",
|
|
864
|
+
alignItems: "center",
|
|
865
|
+
alignSelf: "flex-start",
|
|
866
|
+
gap: 12,
|
|
867
|
+
paddingTop: 4,
|
|
868
|
+
paddingBottom: 4,
|
|
869
|
+
paddingLeft: 4,
|
|
870
|
+
paddingRight: 12,
|
|
871
|
+
borderRadius: CONTAINER_RADIUS,
|
|
872
|
+
backgroundColor: colors.grey700
|
|
873
|
+
},
|
|
874
|
+
disabled: {
|
|
875
|
+
opacity: 0.6
|
|
876
|
+
},
|
|
877
|
+
imageWrap: {
|
|
878
|
+
width: IMAGE_SIZE,
|
|
879
|
+
height: IMAGE_SIZE,
|
|
880
|
+
borderRadius: IMAGE_SIZE / 2,
|
|
881
|
+
overflow: "hidden",
|
|
882
|
+
flexShrink: 0
|
|
883
|
+
},
|
|
884
|
+
image: {
|
|
885
|
+
width: IMAGE_SIZE,
|
|
886
|
+
height: IMAGE_SIZE
|
|
887
|
+
},
|
|
888
|
+
imageFallback: {
|
|
889
|
+
width: IMAGE_SIZE,
|
|
890
|
+
height: IMAGE_SIZE,
|
|
891
|
+
alignItems: "center",
|
|
892
|
+
justifyContent: "center",
|
|
893
|
+
backgroundColor: colors.grey600
|
|
894
|
+
},
|
|
895
|
+
textColumn: {
|
|
896
|
+
minWidth: 0,
|
|
897
|
+
flexShrink: 1,
|
|
898
|
+
gap: 3
|
|
899
|
+
},
|
|
900
|
+
name: {
|
|
901
|
+
...avatarTypography.name,
|
|
902
|
+
color: colors.white
|
|
903
|
+
},
|
|
904
|
+
email: {
|
|
905
|
+
...avatarTypography.email,
|
|
906
|
+
color: colors.grey0
|
|
907
|
+
},
|
|
908
|
+
chevronSlot: {
|
|
909
|
+
width: CHEVRON_SIZE,
|
|
910
|
+
height: CHEVRON_SIZE,
|
|
911
|
+
alignItems: "center",
|
|
912
|
+
justifyContent: "center",
|
|
913
|
+
flexShrink: 0
|
|
914
|
+
},
|
|
915
|
+
chevronOpen: {
|
|
916
|
+
transform: [{ rotate: "180deg" }]
|
|
917
|
+
},
|
|
918
|
+
menu: {
|
|
919
|
+
position: "absolute",
|
|
920
|
+
top: "100%",
|
|
921
|
+
left: 0,
|
|
922
|
+
right: 0,
|
|
923
|
+
marginTop: 8,
|
|
924
|
+
zIndex: 10,
|
|
925
|
+
borderRadius: MENU_RADIUS,
|
|
926
|
+
padding: 8,
|
|
927
|
+
gap: 8,
|
|
928
|
+
backgroundColor: colors.grey700,
|
|
929
|
+
...reactNative.Platform.select({
|
|
930
|
+
web: {
|
|
931
|
+
boxShadow: `0 8px 24px ${colors.black}73`
|
|
932
|
+
},
|
|
933
|
+
default: {
|
|
934
|
+
elevation: 8
|
|
935
|
+
}
|
|
936
|
+
})
|
|
937
|
+
},
|
|
938
|
+
menuItem: {
|
|
939
|
+
minHeight: 40,
|
|
940
|
+
borderRadius: MENU_ITEM_RADIUS,
|
|
941
|
+
paddingVertical: 12,
|
|
942
|
+
paddingHorizontal: 12,
|
|
943
|
+
flexDirection: "row",
|
|
944
|
+
alignItems: "center",
|
|
945
|
+
gap: 8
|
|
946
|
+
},
|
|
947
|
+
menuItemDisabled: {
|
|
948
|
+
opacity: 0.5
|
|
949
|
+
},
|
|
950
|
+
menuItemIcon: {
|
|
951
|
+
width: MENU_ITEM_ICON_SIZE,
|
|
952
|
+
height: MENU_ITEM_ICON_SIZE,
|
|
953
|
+
alignItems: "center",
|
|
954
|
+
justifyContent: "center",
|
|
955
|
+
flexShrink: 0
|
|
956
|
+
},
|
|
957
|
+
menuItemLabel: {
|
|
958
|
+
...avatarTypography.menuItem,
|
|
959
|
+
color: colors.white,
|
|
960
|
+
flex: 1
|
|
961
|
+
}
|
|
962
|
+
});
|
|
963
|
+
var variantConfig = {
|
|
964
|
+
primary: {
|
|
965
|
+
backgroundColor: colors.primary,
|
|
966
|
+
textColor: colors.white,
|
|
967
|
+
iconBadgeBackgroundColor: colors.white,
|
|
968
|
+
iconColor: colors.primary
|
|
969
|
+
},
|
|
970
|
+
secondary: {
|
|
971
|
+
backgroundColor: colors.grey500,
|
|
972
|
+
textColor: colors.white,
|
|
973
|
+
iconBadgeBackgroundColor: colors.grey600,
|
|
974
|
+
iconColor: colors.white
|
|
975
|
+
}
|
|
976
|
+
};
|
|
977
|
+
var sizeConfig = {
|
|
978
|
+
lg: {
|
|
979
|
+
minHeight: 44,
|
|
980
|
+
borderRadius: 40,
|
|
981
|
+
paddingVertical: 4,
|
|
982
|
+
paddingLeft: 20,
|
|
983
|
+
paddingRightWithIcon: 4,
|
|
984
|
+
paddingRight: 20,
|
|
985
|
+
gap: 20,
|
|
986
|
+
text: buttonTypography.lg,
|
|
987
|
+
iconContainerSize: 36,
|
|
988
|
+
iconSize: 20
|
|
989
|
+
},
|
|
990
|
+
sm: {
|
|
991
|
+
minHeight: 32,
|
|
992
|
+
borderRadius: 40,
|
|
993
|
+
paddingVertical: 6,
|
|
994
|
+
paddingLeft: 12,
|
|
995
|
+
paddingRightWithIcon: 4,
|
|
996
|
+
paddingRight: 12,
|
|
997
|
+
gap: 12,
|
|
998
|
+
text: buttonTypography.sm,
|
|
999
|
+
iconContainerSize: 20,
|
|
1000
|
+
iconSize: 12
|
|
1001
|
+
}
|
|
1002
|
+
};
|
|
1003
|
+
var Button = react.forwardRef(
|
|
1004
|
+
function Button2({
|
|
1005
|
+
title,
|
|
1006
|
+
children,
|
|
1007
|
+
onPress,
|
|
1008
|
+
disabled = false,
|
|
1009
|
+
variant = "primary",
|
|
1010
|
+
size = "lg",
|
|
1011
|
+
showIcon = false,
|
|
1012
|
+
icon,
|
|
1013
|
+
style,
|
|
1014
|
+
textStyle,
|
|
1015
|
+
className,
|
|
1016
|
+
textClassName,
|
|
1017
|
+
accessibilityLabel,
|
|
1018
|
+
...rest
|
|
1019
|
+
}, forwardedRef) {
|
|
1020
|
+
const containerRef = react.useRef(null);
|
|
1021
|
+
const textRef = react.useRef(null);
|
|
1022
|
+
const preset = variantConfig[variant];
|
|
1023
|
+
const metrics = sizeConfig[size];
|
|
1024
|
+
const label = typeof children !== "undefined" ? children : title;
|
|
1025
|
+
const hasCustomChildren = typeof children !== "undefined";
|
|
1026
|
+
const customIcon = icon != null && typeof icon !== "boolean" ? icon : void 0;
|
|
1027
|
+
const hasIcon = showIcon || icon === true || customIcon != null;
|
|
1028
|
+
const resolvedContainerClassName = className?.trim() || void 0;
|
|
1029
|
+
const resolvedAccessibilityLabel = accessibilityLabel ?? (typeof label === "string" ? label : void 0);
|
|
1030
|
+
const setContainerRef = react.useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);
|
|
1031
|
+
useApplyWebClassName(containerRef, resolvedContainerClassName);
|
|
1032
|
+
useApplyWebClassName(textRef, textClassName);
|
|
1033
|
+
const iconNode = customIcon ?? /* @__PURE__ */ jsxRuntime.jsx(ArrowRightIcon, { size: metrics.iconSize, color: preset.iconColor });
|
|
1034
|
+
const containerStyle = [
|
|
1035
|
+
styles2.base,
|
|
1036
|
+
{
|
|
1037
|
+
minHeight: metrics.minHeight,
|
|
1038
|
+
borderRadius: metrics.borderRadius,
|
|
1039
|
+
backgroundColor: preset.backgroundColor,
|
|
1040
|
+
paddingTop: metrics.paddingVertical,
|
|
1041
|
+
paddingBottom: metrics.paddingVertical,
|
|
1042
|
+
paddingLeft: metrics.paddingLeft,
|
|
1043
|
+
paddingRight: hasIcon ? metrics.paddingRightWithIcon : metrics.paddingRight,
|
|
1044
|
+
gap: hasIcon ? metrics.gap : 0
|
|
1045
|
+
},
|
|
1046
|
+
disabled && styles2.disabled,
|
|
1047
|
+
style
|
|
1048
|
+
];
|
|
1049
|
+
const labelStyle = [
|
|
1050
|
+
styles2.label,
|
|
1051
|
+
metrics.text,
|
|
1052
|
+
{ color: preset.textColor },
|
|
1053
|
+
reactNative.Platform.OS === "android" ? styles2.labelAndroid : null,
|
|
1054
|
+
!hasIcon && styles2.labelCentered,
|
|
1055
|
+
textStyle
|
|
1056
|
+
];
|
|
1057
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1058
|
+
reactNative.TouchableOpacity,
|
|
1059
|
+
{
|
|
1060
|
+
...rest,
|
|
1061
|
+
ref: setContainerRef,
|
|
1062
|
+
style: containerStyle,
|
|
1063
|
+
onPress,
|
|
1064
|
+
disabled,
|
|
1065
|
+
activeOpacity: 0.7,
|
|
1066
|
+
accessibilityRole: "button",
|
|
1067
|
+
accessibilityLabel: resolvedAccessibilityLabel,
|
|
1068
|
+
accessibilityState: { disabled },
|
|
1069
|
+
children: [
|
|
1070
|
+
hasCustomChildren ? children : /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { ref: textRef, style: labelStyle, children: label }),
|
|
1071
|
+
hasIcon ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1072
|
+
reactNative.View,
|
|
1073
|
+
{
|
|
1074
|
+
style: [
|
|
1075
|
+
styles2.iconContainer,
|
|
1076
|
+
{
|
|
1077
|
+
width: metrics.iconContainerSize,
|
|
1078
|
+
height: metrics.iconContainerSize,
|
|
1079
|
+
borderRadius: metrics.iconContainerSize / 2,
|
|
1080
|
+
backgroundColor: preset.iconBadgeBackgroundColor
|
|
1081
|
+
}
|
|
1082
|
+
],
|
|
1083
|
+
children: iconNode
|
|
1084
|
+
}
|
|
1085
|
+
) : null
|
|
1086
|
+
]
|
|
1087
|
+
}
|
|
1088
|
+
);
|
|
1089
|
+
}
|
|
1090
|
+
);
|
|
1091
|
+
var styles2 = reactNative.StyleSheet.create({
|
|
1092
|
+
base: {
|
|
1093
|
+
flexDirection: "row",
|
|
546
1094
|
alignItems: "center",
|
|
547
1095
|
alignSelf: "flex-start",
|
|
548
1096
|
borderWidth: 0
|
|
@@ -563,6 +1111,105 @@ var styles = reactNative.StyleSheet.create({
|
|
|
563
1111
|
flexShrink: 0
|
|
564
1112
|
}
|
|
565
1113
|
});
|
|
1114
|
+
var BOX_SIZE = 20;
|
|
1115
|
+
var BOX_RADIUS = 6;
|
|
1116
|
+
var CHECK_SIZE = 12;
|
|
1117
|
+
var CHECK_STROKE = 2.5;
|
|
1118
|
+
var variantChrome = {
|
|
1119
|
+
default: {
|
|
1120
|
+
backgroundColor: colors.dark,
|
|
1121
|
+
borderColor: colors.grey700
|
|
1122
|
+
},
|
|
1123
|
+
light: {
|
|
1124
|
+
backgroundColor: colors.grey700,
|
|
1125
|
+
borderColor: colors.grey500
|
|
1126
|
+
}
|
|
1127
|
+
};
|
|
1128
|
+
var Checkbox = react.forwardRef(function Checkbox2({
|
|
1129
|
+
value,
|
|
1130
|
+
defaultValue = false,
|
|
1131
|
+
onValueChange,
|
|
1132
|
+
disabled = false,
|
|
1133
|
+
variant = "default",
|
|
1134
|
+
label,
|
|
1135
|
+
children,
|
|
1136
|
+
style,
|
|
1137
|
+
labelStyle,
|
|
1138
|
+
className,
|
|
1139
|
+
hitSlop = 8,
|
|
1140
|
+
accessibilityLabel,
|
|
1141
|
+
...rest
|
|
1142
|
+
}, forwardedRef) {
|
|
1143
|
+
const containerRef = react.useRef(null);
|
|
1144
|
+
const isControlled = typeof value === "boolean";
|
|
1145
|
+
const [uncontrolledValue, setUncontrolledValue] = react.useState(defaultValue);
|
|
1146
|
+
const isActive = isControlled ? value : uncontrolledValue;
|
|
1147
|
+
const chrome = variantChrome[variant];
|
|
1148
|
+
const labelContent = children ?? label;
|
|
1149
|
+
const resolvedAccessibilityLabel = accessibilityLabel ?? (typeof labelContent === "string" ? labelContent : void 0);
|
|
1150
|
+
const setContainerRef = react.useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);
|
|
1151
|
+
useApplyWebClassName(containerRef, className);
|
|
1152
|
+
const handlePress = () => {
|
|
1153
|
+
if (disabled) return;
|
|
1154
|
+
const next = !isActive;
|
|
1155
|
+
if (!isControlled) setUncontrolledValue(next);
|
|
1156
|
+
onValueChange?.(next);
|
|
1157
|
+
};
|
|
1158
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1159
|
+
reactNative.Pressable,
|
|
1160
|
+
{
|
|
1161
|
+
...rest,
|
|
1162
|
+
ref: setContainerRef,
|
|
1163
|
+
onPress: handlePress,
|
|
1164
|
+
disabled,
|
|
1165
|
+
hitSlop,
|
|
1166
|
+
accessibilityRole: "checkbox",
|
|
1167
|
+
accessibilityLabel: resolvedAccessibilityLabel,
|
|
1168
|
+
accessibilityState: { checked: isActive, disabled },
|
|
1169
|
+
style: [styles3.root, disabled && styles3.disabled, style],
|
|
1170
|
+
children: [
|
|
1171
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1172
|
+
reactNative.View,
|
|
1173
|
+
{
|
|
1174
|
+
style: [
|
|
1175
|
+
styles3.box,
|
|
1176
|
+
{
|
|
1177
|
+
backgroundColor: chrome.backgroundColor,
|
|
1178
|
+
borderColor: chrome.borderColor
|
|
1179
|
+
}
|
|
1180
|
+
],
|
|
1181
|
+
children: isActive ? /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { size: CHECK_SIZE, color: colors.primary, strokeWidth: CHECK_STROKE }) : null
|
|
1182
|
+
}
|
|
1183
|
+
),
|
|
1184
|
+
labelContent != null && labelContent !== false ? typeof labelContent === "string" || typeof labelContent === "number" ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles3.label, labelStyle], children: labelContent }) : labelContent : null
|
|
1185
|
+
]
|
|
1186
|
+
}
|
|
1187
|
+
);
|
|
1188
|
+
});
|
|
1189
|
+
var styles3 = reactNative.StyleSheet.create({
|
|
1190
|
+
root: {
|
|
1191
|
+
flexDirection: "row",
|
|
1192
|
+
alignItems: "center",
|
|
1193
|
+
alignSelf: "flex-start",
|
|
1194
|
+
gap: 10
|
|
1195
|
+
},
|
|
1196
|
+
disabled: {
|
|
1197
|
+
opacity: 0.5
|
|
1198
|
+
},
|
|
1199
|
+
box: {
|
|
1200
|
+
width: BOX_SIZE,
|
|
1201
|
+
height: BOX_SIZE,
|
|
1202
|
+
borderRadius: BOX_RADIUS,
|
|
1203
|
+
borderWidth: 1,
|
|
1204
|
+
alignItems: "center",
|
|
1205
|
+
justifyContent: "center",
|
|
1206
|
+
flexShrink: 0
|
|
1207
|
+
},
|
|
1208
|
+
label: {
|
|
1209
|
+
...inputTypography.field,
|
|
1210
|
+
color: colors.white
|
|
1211
|
+
}
|
|
1212
|
+
});
|
|
566
1213
|
var DEFAULT_WIDTH = 308;
|
|
567
1214
|
var sizeConfig2 = {
|
|
568
1215
|
lg: {
|
|
@@ -584,14 +1231,12 @@ var sizeConfig2 = {
|
|
|
584
1231
|
text: inputTypography.hint
|
|
585
1232
|
}
|
|
586
1233
|
};
|
|
587
|
-
function
|
|
588
|
-
state,
|
|
1234
|
+
function resolveVisualState({
|
|
589
1235
|
disabled,
|
|
590
1236
|
error,
|
|
591
1237
|
focused,
|
|
592
1238
|
hasValue
|
|
593
1239
|
}) {
|
|
594
|
-
if (state) return state;
|
|
595
1240
|
if (disabled) return "disabled";
|
|
596
1241
|
if (error) return "error";
|
|
597
1242
|
if (focused) return "active";
|
|
@@ -643,13 +1288,12 @@ function chromeFor(state) {
|
|
|
643
1288
|
return base;
|
|
644
1289
|
}
|
|
645
1290
|
}
|
|
646
|
-
|
|
1291
|
+
var Input = react.forwardRef(function Input2({
|
|
647
1292
|
label = "Label",
|
|
648
1293
|
showLabel = true,
|
|
649
1294
|
hint = "Hint",
|
|
650
1295
|
showHint = true,
|
|
651
1296
|
placeholder = "placeholder",
|
|
652
|
-
state: stateProp,
|
|
653
1297
|
size = "lg",
|
|
654
1298
|
disabled = false,
|
|
655
1299
|
error = false,
|
|
@@ -663,43 +1307,40 @@ function Input({
|
|
|
663
1307
|
rightIcon,
|
|
664
1308
|
showRightIcon = false,
|
|
665
1309
|
onRightIconPress,
|
|
1310
|
+
rightIconAccessibilityLabel,
|
|
666
1311
|
style,
|
|
667
1312
|
fieldStyle,
|
|
668
1313
|
inputStyle,
|
|
669
1314
|
className,
|
|
670
1315
|
inputClassName,
|
|
1316
|
+
accessibilityLabel,
|
|
671
1317
|
...textInputProps
|
|
672
|
-
}) {
|
|
1318
|
+
}, forwardedRef) {
|
|
673
1319
|
const rootRef = react.useRef(null);
|
|
674
1320
|
const inputRef = react.useRef(null);
|
|
1321
|
+
const setInputRef = react.useMemo(() => mergeRefs(inputRef, forwardedRef), [forwardedRef]);
|
|
675
1322
|
const [focused, setFocused] = react.useState(false);
|
|
676
1323
|
const [uncontrolledValue, setUncontrolledValue] = react.useState(defaultValue ?? "");
|
|
677
1324
|
const metrics = sizeConfig2[size];
|
|
678
1325
|
const isControlled = typeof value === "string";
|
|
679
1326
|
const currentValue = isControlled ? value : uncontrolledValue;
|
|
680
1327
|
const hasValue = currentValue.length > 0;
|
|
681
|
-
const
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
error,
|
|
685
|
-
focused,
|
|
686
|
-
hasValue
|
|
687
|
-
});
|
|
688
|
-
const chrome = chromeFor(resolvedState);
|
|
689
|
-
const isDisabled = resolvedState === "disabled" || disabled;
|
|
1328
|
+
const visualState = resolveVisualState({ disabled, error, focused, hasValue });
|
|
1329
|
+
const chrome = chromeFor(visualState);
|
|
1330
|
+
const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? void 0 : label);
|
|
690
1331
|
const hasLeftIcon = showLeftIcon || leftIcon != null;
|
|
691
1332
|
const hasRightIcon = showRightIcon || rightIcon != null;
|
|
692
1333
|
const leftIconNode = leftIcon ?? /* @__PURE__ */ jsxRuntime.jsx(UserIcon, { size: metrics.iconSize, color: chrome.leftIconColor });
|
|
693
1334
|
const rightIconNode = rightIcon ?? /* @__PURE__ */ jsxRuntime.jsx(ShowIcon, { size: metrics.iconSize, color: chrome.rightIconColor });
|
|
694
1335
|
useApplyWebClassName(rootRef, className);
|
|
695
1336
|
useApplyWebClassName(inputRef, inputClassName);
|
|
696
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: rootRef, style: [
|
|
697
|
-
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
1337
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: rootRef, style: [styles4.root, disabled && styles4.disabled, style], children: [
|
|
1338
|
+
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles4.label, { color: chrome.labelColor }], children: label }) : null,
|
|
698
1339
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
699
1340
|
reactNative.View,
|
|
700
1341
|
{
|
|
701
1342
|
style: [
|
|
702
|
-
|
|
1343
|
+
styles4.field,
|
|
703
1344
|
{
|
|
704
1345
|
height: metrics.height,
|
|
705
1346
|
borderRadius: metrics.borderRadius,
|
|
@@ -714,15 +1355,15 @@ function Input({
|
|
|
714
1355
|
fieldStyle
|
|
715
1356
|
],
|
|
716
1357
|
children: [
|
|
717
|
-
hasLeftIcon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [
|
|
1358
|
+
hasLeftIcon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles4.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }], children: leftIconNode }) : null,
|
|
718
1359
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
719
1360
|
reactNative.TextInput,
|
|
720
1361
|
{
|
|
721
|
-
ref:
|
|
1362
|
+
ref: setInputRef,
|
|
722
1363
|
...textInputProps,
|
|
723
1364
|
value: isControlled ? value : void 0,
|
|
724
1365
|
defaultValue: isControlled ? void 0 : defaultValue,
|
|
725
|
-
editable: !
|
|
1366
|
+
editable: !disabled,
|
|
726
1367
|
placeholder,
|
|
727
1368
|
placeholderTextColor: chrome.placeholderColor,
|
|
728
1369
|
onChangeText: (text) => {
|
|
@@ -738,34 +1379,36 @@ function Input({
|
|
|
738
1379
|
onBlur?.(event);
|
|
739
1380
|
},
|
|
740
1381
|
style: [
|
|
741
|
-
|
|
1382
|
+
styles4.input,
|
|
742
1383
|
metrics.text,
|
|
743
1384
|
{ color: chrome.textColor },
|
|
744
|
-
reactNative.Platform.OS === "web" ?
|
|
745
|
-
reactNative.Platform.OS === "android" ?
|
|
1385
|
+
reactNative.Platform.OS === "web" ? styles4.inputWeb : null,
|
|
1386
|
+
reactNative.Platform.OS === "android" ? styles4.inputAndroid : null,
|
|
746
1387
|
inputStyle
|
|
747
1388
|
],
|
|
748
|
-
|
|
1389
|
+
accessibilityLabel: resolvedAccessibilityLabel,
|
|
1390
|
+
accessibilityState: { disabled }
|
|
749
1391
|
}
|
|
750
1392
|
),
|
|
751
1393
|
hasRightIcon ? onRightIconPress ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
752
1394
|
reactNative.TouchableOpacity,
|
|
753
1395
|
{
|
|
754
1396
|
onPress: onRightIconPress,
|
|
755
|
-
disabled
|
|
756
|
-
style: [
|
|
1397
|
+
disabled,
|
|
1398
|
+
style: [styles4.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }],
|
|
757
1399
|
accessibilityRole: "button",
|
|
1400
|
+
accessibilityLabel: rightIconAccessibilityLabel,
|
|
758
1401
|
hitSlop: 8,
|
|
759
1402
|
children: rightIconNode
|
|
760
1403
|
}
|
|
761
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [
|
|
1404
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles4.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }], children: rightIconNode }) : null
|
|
762
1405
|
]
|
|
763
1406
|
}
|
|
764
1407
|
),
|
|
765
|
-
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
1408
|
+
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles4.hint, { color: chrome.hintColor }], children: hint }) : null
|
|
766
1409
|
] });
|
|
767
|
-
}
|
|
768
|
-
var
|
|
1410
|
+
});
|
|
1411
|
+
var styles4 = reactNative.StyleSheet.create({
|
|
769
1412
|
root: {
|
|
770
1413
|
width: DEFAULT_WIDTH,
|
|
771
1414
|
gap: 8,
|
|
@@ -802,27 +1445,961 @@ var styles2 = reactNative.StyleSheet.create({
|
|
|
802
1445
|
...inputTypography.hint
|
|
803
1446
|
}
|
|
804
1447
|
});
|
|
1448
|
+
var DEFAULT_WIDTH2 = 308;
|
|
1449
|
+
var TRIGGER_HEIGHT = 44;
|
|
1450
|
+
var TRIGGER_RADIUS = 60;
|
|
1451
|
+
var MENU_RADIUS2 = 24;
|
|
1452
|
+
var MENU_MAX_LIST_HEIGHT = 248;
|
|
1453
|
+
var ITEM_RADIUS = 12;
|
|
1454
|
+
var ICON_SIZE = 20;
|
|
1455
|
+
var CHIP_GAP = 6;
|
|
1456
|
+
var FALLBACK_ELLIPSIS_WIDTH = 20;
|
|
1457
|
+
function itemBackground(state) {
|
|
1458
|
+
switch (state) {
|
|
1459
|
+
case "hover":
|
|
1460
|
+
return colors.grey600;
|
|
1461
|
+
case "selected":
|
|
1462
|
+
return colors.primaryMuted;
|
|
1463
|
+
default:
|
|
1464
|
+
return "transparent";
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
function toArray(value) {
|
|
1468
|
+
if (value == null || value === "") return [];
|
|
1469
|
+
return Array.isArray(value) ? value : [value];
|
|
1470
|
+
}
|
|
1471
|
+
function resolveVisibleOptions(options, containerWidth, chipWidths, ellipsisWidth) {
|
|
1472
|
+
if (options.length === 0) return { visible: [], hasOverflow: false };
|
|
1473
|
+
if (containerWidth <= 0) return { visible: options.slice(0, 1), hasOverflow: options.length > 1 };
|
|
1474
|
+
const visible = [];
|
|
1475
|
+
let used = 0;
|
|
1476
|
+
for (let index = 0; index < options.length; index += 1) {
|
|
1477
|
+
const option = options[index];
|
|
1478
|
+
const chipWidth = chipWidths[option.value];
|
|
1479
|
+
if (chipWidth == null) {
|
|
1480
|
+
if (visible.length === 0) visible.push(option);
|
|
1481
|
+
break;
|
|
1482
|
+
}
|
|
1483
|
+
const remainingAfter = options.length - index - 1;
|
|
1484
|
+
const gap = visible.length > 0 ? CHIP_GAP : 0;
|
|
1485
|
+
const reserve = remainingAfter > 0 ? CHIP_GAP + ellipsisWidth : 0;
|
|
1486
|
+
const nextUsed = used + gap + chipWidth;
|
|
1487
|
+
if (visible.length > 0 && nextUsed + reserve > containerWidth) {
|
|
1488
|
+
return { visible, hasOverflow: true };
|
|
1489
|
+
}
|
|
1490
|
+
visible.push(option);
|
|
1491
|
+
used = nextUsed;
|
|
1492
|
+
}
|
|
1493
|
+
return { visible, hasOverflow: visible.length < options.length };
|
|
1494
|
+
}
|
|
1495
|
+
function MultiValueChips({ options, disabled, onRemove }) {
|
|
1496
|
+
const [containerWidth, setContainerWidth] = react.useState(0);
|
|
1497
|
+
const [chipWidths, setChipWidths] = react.useState({});
|
|
1498
|
+
const [ellipsisWidth, setEllipsisWidth] = react.useState(FALLBACK_ELLIPSIS_WIDTH);
|
|
1499
|
+
react.useEffect(() => {
|
|
1500
|
+
setChipWidths((current) => {
|
|
1501
|
+
const validValues = new Set(options.map((option) => option.value));
|
|
1502
|
+
const keys = Object.keys(current);
|
|
1503
|
+
if (keys.every((key) => validValues.has(key))) return current;
|
|
1504
|
+
const next = {};
|
|
1505
|
+
for (const key of keys) {
|
|
1506
|
+
if (validValues.has(key)) next[key] = current[key];
|
|
1507
|
+
}
|
|
1508
|
+
return next;
|
|
1509
|
+
});
|
|
1510
|
+
}, [options]);
|
|
1511
|
+
const { visible, hasOverflow } = react.useMemo(
|
|
1512
|
+
() => resolveVisibleOptions(options, containerWidth, chipWidths, ellipsisWidth),
|
|
1513
|
+
[chipWidths, containerWidth, ellipsisWidth, options]
|
|
1514
|
+
);
|
|
1515
|
+
const handleContainerLayout = (event) => {
|
|
1516
|
+
const next = Math.floor(event.nativeEvent.layout.width);
|
|
1517
|
+
setContainerWidth((current) => current === next ? current : next);
|
|
1518
|
+
};
|
|
1519
|
+
const handleChipLayout = (value, event) => {
|
|
1520
|
+
const next = Math.ceil(event.nativeEvent.layout.width);
|
|
1521
|
+
setChipWidths((current) => current[value] === next ? current : { ...current, [value]: next });
|
|
1522
|
+
};
|
|
1523
|
+
const handleEllipsisLayout = (event) => {
|
|
1524
|
+
const next = Math.ceil(event.nativeEvent.layout.width);
|
|
1525
|
+
setEllipsisWidth((current) => current === next ? current : next);
|
|
1526
|
+
};
|
|
1527
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles5.multiValueRoot, children: [
|
|
1528
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { pointerEvents: "none", style: styles5.measureRow, children: [
|
|
1529
|
+
options.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1530
|
+
reactNative.View,
|
|
1531
|
+
{
|
|
1532
|
+
style: styles5.chip,
|
|
1533
|
+
onLayout: (event) => handleChipLayout(option.value, event),
|
|
1534
|
+
children: [
|
|
1535
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles5.chipLabel, numberOfLines: 1, children: option.label }),
|
|
1536
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles5.chipRemove, children: "\xD7" })
|
|
1537
|
+
]
|
|
1538
|
+
},
|
|
1539
|
+
`measure-${option.value}`
|
|
1540
|
+
)),
|
|
1541
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles5.ellipsis, onLayout: handleEllipsisLayout, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles5.ellipsisText, children: "..." }) })
|
|
1542
|
+
] }),
|
|
1543
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles5.chipsRow, onLayout: handleContainerLayout, children: [
|
|
1544
|
+
visible.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles5.chip, children: [
|
|
1545
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles5.chipLabel, numberOfLines: 1, children: option.label }),
|
|
1546
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1547
|
+
reactNative.Pressable,
|
|
1548
|
+
{
|
|
1549
|
+
onPress: (event) => {
|
|
1550
|
+
event?.stopPropagation?.();
|
|
1551
|
+
onRemove(option.value);
|
|
1552
|
+
},
|
|
1553
|
+
disabled,
|
|
1554
|
+
hitSlop: 6,
|
|
1555
|
+
accessibilityRole: "button",
|
|
1556
|
+
accessibilityLabel: `Remove ${option.label}`,
|
|
1557
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles5.chipRemove, children: "\xD7" })
|
|
1558
|
+
}
|
|
1559
|
+
)
|
|
1560
|
+
] }, option.value)),
|
|
1561
|
+
hasOverflow ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles5.ellipsis, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles5.ellipsisText, children: "..." }) }) : null
|
|
1562
|
+
] })
|
|
1563
|
+
] });
|
|
1564
|
+
}
|
|
1565
|
+
var Select = react.forwardRef(
|
|
1566
|
+
function Select2(props, forwardedRef) {
|
|
1567
|
+
const {
|
|
1568
|
+
label = "Label",
|
|
1569
|
+
showLabel = true,
|
|
1570
|
+
hint,
|
|
1571
|
+
showHint = false,
|
|
1572
|
+
placeholder = "placeholder",
|
|
1573
|
+
options,
|
|
1574
|
+
open: openProp,
|
|
1575
|
+
defaultOpen = false,
|
|
1576
|
+
onOpenChange,
|
|
1577
|
+
disabled = false,
|
|
1578
|
+
error = false,
|
|
1579
|
+
leftIcon,
|
|
1580
|
+
showLeftIcon = true,
|
|
1581
|
+
showSearch = true,
|
|
1582
|
+
searchPlaceholder = "Search...",
|
|
1583
|
+
onSearchChange,
|
|
1584
|
+
loading = false,
|
|
1585
|
+
emptyText = "No results",
|
|
1586
|
+
style,
|
|
1587
|
+
className,
|
|
1588
|
+
accessibilityLabel,
|
|
1589
|
+
// Pulled out only to keep them off `rest` (which is spread onto the root View);
|
|
1590
|
+
// the real values are read from `props` directly below to preserve discriminated typing.
|
|
1591
|
+
multiple: _multiple,
|
|
1592
|
+
value: _value,
|
|
1593
|
+
defaultValue: _defaultValue,
|
|
1594
|
+
onValueChange: _onValueChange,
|
|
1595
|
+
...rest
|
|
1596
|
+
} = props;
|
|
1597
|
+
const multiple = props.multiple === true;
|
|
1598
|
+
const valueProp = props.value;
|
|
1599
|
+
const rootRef = react.useRef(null);
|
|
1600
|
+
const triggerRef = react.useRef(null);
|
|
1601
|
+
const searchInputRef = react.useRef(null);
|
|
1602
|
+
const setRootRef = react.useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);
|
|
1603
|
+
const isOpenControlled = typeof openProp === "boolean";
|
|
1604
|
+
const isValueControlled = valueProp !== void 0;
|
|
1605
|
+
const [uncontrolledSingle, setUncontrolledSingle] = react.useState(
|
|
1606
|
+
!multiple ? props.defaultValue ?? "" : ""
|
|
1607
|
+
);
|
|
1608
|
+
const [uncontrolledMultiple, setUncontrolledMultiple] = react.useState(
|
|
1609
|
+
multiple ? props.defaultValue ?? [] : []
|
|
1610
|
+
);
|
|
1611
|
+
const [uncontrolledOpen, setUncontrolledOpen] = react.useState(defaultOpen);
|
|
1612
|
+
const [searchQuery, setSearchQuery] = react.useState("");
|
|
1613
|
+
const [hoveredValue, setHoveredValue] = react.useState(null);
|
|
1614
|
+
const selectedValues = react.useMemo(() => {
|
|
1615
|
+
const current = isValueControlled ? valueProp : multiple ? uncontrolledMultiple : uncontrolledSingle;
|
|
1616
|
+
return toArray(current);
|
|
1617
|
+
}, [isValueControlled, multiple, valueProp, uncontrolledMultiple, uncontrolledSingle]);
|
|
1618
|
+
const isOpen = isOpenControlled ? openProp : uncontrolledOpen;
|
|
1619
|
+
const selectedOptions = react.useMemo(
|
|
1620
|
+
() => selectedValues.map((value) => options.find((option) => option.value === value)).filter((option) => option != null),
|
|
1621
|
+
[options, selectedValues]
|
|
1622
|
+
);
|
|
1623
|
+
const hasValue = selectedOptions.length > 0;
|
|
1624
|
+
const isExternalSearch = onSearchChange != null;
|
|
1625
|
+
const filteredOptions = react.useMemo(() => {
|
|
1626
|
+
if (isExternalSearch) return options;
|
|
1627
|
+
const query = searchQuery.trim().toLowerCase();
|
|
1628
|
+
if (!query) return options;
|
|
1629
|
+
return options.filter((option) => option.label.toLowerCase().includes(query));
|
|
1630
|
+
}, [isExternalSearch, options, searchQuery]);
|
|
1631
|
+
useApplyWebClassName(rootRef, className);
|
|
1632
|
+
const setOpen = react.useCallback(
|
|
1633
|
+
(next) => {
|
|
1634
|
+
if (!isOpenControlled) setUncontrolledOpen(next);
|
|
1635
|
+
onOpenChange?.(next);
|
|
1636
|
+
if (next) {
|
|
1637
|
+
setHoveredValue(selectedValues[0] ?? null);
|
|
1638
|
+
} else {
|
|
1639
|
+
setSearchQuery("");
|
|
1640
|
+
setHoveredValue(null);
|
|
1641
|
+
onSearchChange?.("");
|
|
1642
|
+
}
|
|
1643
|
+
},
|
|
1644
|
+
[isOpenControlled, onOpenChange, onSearchChange, selectedValues]
|
|
1645
|
+
);
|
|
1646
|
+
const handleSearchChange = (text) => {
|
|
1647
|
+
setSearchQuery(text);
|
|
1648
|
+
onSearchChange?.(text);
|
|
1649
|
+
};
|
|
1650
|
+
react.useEffect(() => {
|
|
1651
|
+
if (reactNative.Platform.OS !== "web" || !isOpen) return;
|
|
1652
|
+
const handlePointerDown = (event) => {
|
|
1653
|
+
const root = rootRef.current;
|
|
1654
|
+
const target = event.target;
|
|
1655
|
+
if (root?.contains && target instanceof Node && !root.contains(target)) {
|
|
1656
|
+
setOpen(false);
|
|
1657
|
+
}
|
|
1658
|
+
};
|
|
1659
|
+
document.addEventListener("mousedown", handlePointerDown);
|
|
1660
|
+
document.addEventListener("touchstart", handlePointerDown);
|
|
1661
|
+
return () => {
|
|
1662
|
+
document.removeEventListener("mousedown", handlePointerDown);
|
|
1663
|
+
document.removeEventListener("touchstart", handlePointerDown);
|
|
1664
|
+
};
|
|
1665
|
+
}, [isOpen, setOpen]);
|
|
1666
|
+
const commitValues = react.useCallback(
|
|
1667
|
+
(nextValues) => {
|
|
1668
|
+
if (multiple) {
|
|
1669
|
+
if (!isValueControlled) setUncontrolledMultiple(nextValues);
|
|
1670
|
+
props.onValueChange?.(nextValues);
|
|
1671
|
+
return;
|
|
1672
|
+
}
|
|
1673
|
+
const nextValue = nextValues[0] ?? "";
|
|
1674
|
+
if (!isValueControlled) setUncontrolledSingle(nextValue);
|
|
1675
|
+
props.onValueChange?.(nextValue);
|
|
1676
|
+
},
|
|
1677
|
+
[isValueControlled, multiple, props]
|
|
1678
|
+
);
|
|
1679
|
+
const handleTriggerPress = () => {
|
|
1680
|
+
if (disabled) return;
|
|
1681
|
+
setOpen(!isOpen);
|
|
1682
|
+
};
|
|
1683
|
+
const handleSelect = react.useCallback(
|
|
1684
|
+
(optionValue) => {
|
|
1685
|
+
if (disabled) return;
|
|
1686
|
+
if (multiple) {
|
|
1687
|
+
const exists = selectedValues.includes(optionValue);
|
|
1688
|
+
const nextValues = exists ? selectedValues.filter((value) => value !== optionValue) : [...selectedValues, optionValue];
|
|
1689
|
+
commitValues(nextValues);
|
|
1690
|
+
return;
|
|
1691
|
+
}
|
|
1692
|
+
commitValues([optionValue]);
|
|
1693
|
+
setOpen(false);
|
|
1694
|
+
},
|
|
1695
|
+
[commitValues, disabled, multiple, selectedValues, setOpen]
|
|
1696
|
+
);
|
|
1697
|
+
const handleRemoveChip = (optionValue) => {
|
|
1698
|
+
if (disabled || !multiple) return;
|
|
1699
|
+
commitValues(selectedValues.filter((value) => value !== optionValue));
|
|
1700
|
+
};
|
|
1701
|
+
const focusTrigger = react.useCallback(() => {
|
|
1702
|
+
const node = triggerRef.current;
|
|
1703
|
+
node?.focus?.();
|
|
1704
|
+
}, []);
|
|
1705
|
+
const closeAndFocusTrigger = react.useCallback(() => {
|
|
1706
|
+
setOpen(false);
|
|
1707
|
+
focusTrigger();
|
|
1708
|
+
}, [focusTrigger, setOpen]);
|
|
1709
|
+
react.useEffect(() => {
|
|
1710
|
+
if (reactNative.Platform.OS !== "web") return;
|
|
1711
|
+
const isTriggerFocused = () => document.activeElement === triggerRef.current;
|
|
1712
|
+
const isSearchFocused = () => document.activeElement === searchInputRef.current;
|
|
1713
|
+
const handleKeyDown = (event) => {
|
|
1714
|
+
if (!isOpen) {
|
|
1715
|
+
if (!isTriggerFocused() || disabled) return;
|
|
1716
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp" || event.key === "Enter") {
|
|
1717
|
+
event.preventDefault();
|
|
1718
|
+
setOpen(true);
|
|
1719
|
+
}
|
|
1720
|
+
return;
|
|
1721
|
+
}
|
|
1722
|
+
if (event.key === "Escape") {
|
|
1723
|
+
event.preventDefault();
|
|
1724
|
+
closeAndFocusTrigger();
|
|
1725
|
+
return;
|
|
1726
|
+
}
|
|
1727
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
1728
|
+
event.preventDefault();
|
|
1729
|
+
setHoveredValue((current) => {
|
|
1730
|
+
if (filteredOptions.length === 0) return current;
|
|
1731
|
+
const currentIndex = filteredOptions.findIndex((option) => option.value === current);
|
|
1732
|
+
const delta = event.key === "ArrowDown" ? 1 : -1;
|
|
1733
|
+
const nextIndex = currentIndex === -1 ? delta === 1 ? 0 : filteredOptions.length - 1 : Math.min(Math.max(currentIndex + delta, 0), filteredOptions.length - 1);
|
|
1734
|
+
return filteredOptions[nextIndex]?.value ?? current;
|
|
1735
|
+
});
|
|
1736
|
+
return;
|
|
1737
|
+
}
|
|
1738
|
+
if (isSearchFocused() && (event.key === "Home" || event.key === "End" || event.key === " ")) {
|
|
1739
|
+
return;
|
|
1740
|
+
}
|
|
1741
|
+
if (event.key === "Home" || event.key === "End") {
|
|
1742
|
+
if (filteredOptions.length === 0) return;
|
|
1743
|
+
event.preventDefault();
|
|
1744
|
+
setHoveredValue(
|
|
1745
|
+
event.key === "Home" ? filteredOptions[0].value : filteredOptions[filteredOptions.length - 1].value
|
|
1746
|
+
);
|
|
1747
|
+
return;
|
|
1748
|
+
}
|
|
1749
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
1750
|
+
if (hoveredValue == null) return;
|
|
1751
|
+
event.preventDefault();
|
|
1752
|
+
handleSelect(hoveredValue);
|
|
1753
|
+
if (!multiple) focusTrigger();
|
|
1754
|
+
}
|
|
1755
|
+
};
|
|
1756
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
1757
|
+
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
1758
|
+
}, [
|
|
1759
|
+
isOpen,
|
|
1760
|
+
disabled,
|
|
1761
|
+
filteredOptions,
|
|
1762
|
+
hoveredValue,
|
|
1763
|
+
multiple,
|
|
1764
|
+
closeAndFocusTrigger,
|
|
1765
|
+
focusTrigger,
|
|
1766
|
+
handleSelect,
|
|
1767
|
+
setOpen
|
|
1768
|
+
]);
|
|
1769
|
+
const leftIconNode = leftIcon ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1770
|
+
UserIcon,
|
|
1771
|
+
{
|
|
1772
|
+
size: ICON_SIZE,
|
|
1773
|
+
color: error ? colors.red : isOpen ? colors.primary : colors.grey100
|
|
1774
|
+
}
|
|
1775
|
+
);
|
|
1776
|
+
const hasLeftIcon = showLeftIcon || leftIcon != null;
|
|
1777
|
+
const triggerBorderColor = error ? colors.redMuted : isOpen ? colors.primaryMuted : colors.grey700;
|
|
1778
|
+
const triggerTextColor = hasValue ? error ? colors.red : colors.white : error ? colors.red : colors.grey100;
|
|
1779
|
+
const labelColor = error ? colors.red : colors.white;
|
|
1780
|
+
const hintColor = error ? colors.red : colors.grey100;
|
|
1781
|
+
const singleLabel = selectedOptions[0]?.label ?? placeholder;
|
|
1782
|
+
const resolvedAccessibilityLabel = accessibilityLabel ?? (typeof label === "string" ? label : void 0);
|
|
1783
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1784
|
+
reactNative.View,
|
|
1785
|
+
{
|
|
1786
|
+
...rest,
|
|
1787
|
+
ref: setRootRef,
|
|
1788
|
+
style: [styles5.root, isOpen && styles5.rootOpen, disabled && styles5.disabled, style],
|
|
1789
|
+
accessibilityState: { disabled, expanded: isOpen },
|
|
1790
|
+
children: [
|
|
1791
|
+
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles5.label, { color: labelColor }], children: label }) : null,
|
|
1792
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles5.triggerWrap, isOpen && styles5.triggerWrapOpen], children: [
|
|
1793
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1794
|
+
reactNative.Pressable,
|
|
1795
|
+
{
|
|
1796
|
+
ref: triggerRef,
|
|
1797
|
+
onPress: handleTriggerPress,
|
|
1798
|
+
disabled,
|
|
1799
|
+
accessibilityRole: "combobox",
|
|
1800
|
+
accessibilityLabel: resolvedAccessibilityLabel,
|
|
1801
|
+
accessibilityState: { disabled, expanded: isOpen },
|
|
1802
|
+
style: [
|
|
1803
|
+
styles5.trigger,
|
|
1804
|
+
{
|
|
1805
|
+
borderColor: triggerBorderColor,
|
|
1806
|
+
backgroundColor: colors.grey700
|
|
1807
|
+
}
|
|
1808
|
+
],
|
|
1809
|
+
children: [
|
|
1810
|
+
hasLeftIcon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles5.iconSlot, children: leftIconNode }) : null,
|
|
1811
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles5.triggerContent, children: multiple && hasValue ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1812
|
+
MultiValueChips,
|
|
1813
|
+
{
|
|
1814
|
+
options: selectedOptions,
|
|
1815
|
+
disabled,
|
|
1816
|
+
onRemove: handleRemoveChip
|
|
1817
|
+
}
|
|
1818
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles5.triggerText, { color: triggerTextColor }], numberOfLines: 1, children: multiple ? placeholder : singleLabel }) }),
|
|
1819
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles5.iconSlot, isOpen && styles5.chevronOpen], children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, { size: ICON_SIZE, color: isOpen ? colors.primary : colors.grey100 }) })
|
|
1820
|
+
]
|
|
1821
|
+
}
|
|
1822
|
+
),
|
|
1823
|
+
isOpen ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles5.menu, children: [
|
|
1824
|
+
showSearch ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles5.searchField, children: [
|
|
1825
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles5.iconSlot, children: /* @__PURE__ */ jsxRuntime.jsx(SearchIcon, { size: ICON_SIZE, color: colors.grey100 }) }),
|
|
1826
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1827
|
+
reactNative.TextInput,
|
|
1828
|
+
{
|
|
1829
|
+
ref: searchInputRef,
|
|
1830
|
+
value: searchQuery,
|
|
1831
|
+
onChangeText: handleSearchChange,
|
|
1832
|
+
editable: !disabled,
|
|
1833
|
+
placeholder: searchPlaceholder,
|
|
1834
|
+
placeholderTextColor: colors.grey100,
|
|
1835
|
+
style: [
|
|
1836
|
+
styles5.searchInput,
|
|
1837
|
+
reactNative.Platform.OS === "web" ? styles5.searchInputWeb : null,
|
|
1838
|
+
reactNative.Platform.OS === "android" ? styles5.searchInputAndroid : null
|
|
1839
|
+
],
|
|
1840
|
+
accessibilityLabel: searchPlaceholder
|
|
1841
|
+
}
|
|
1842
|
+
)
|
|
1843
|
+
] }) : null,
|
|
1844
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1845
|
+
reactNative.ScrollView,
|
|
1846
|
+
{
|
|
1847
|
+
style: styles5.optionList,
|
|
1848
|
+
contentContainerStyle: styles5.optionListContent,
|
|
1849
|
+
keyboardShouldPersistTaps: "handled",
|
|
1850
|
+
showsVerticalScrollIndicator: false,
|
|
1851
|
+
children: [
|
|
1852
|
+
loading ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles5.statusRow, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles5.statusText, children: "Loading..." }) }) : filteredOptions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles5.statusRow, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles5.statusText, children: emptyText }) }) : null,
|
|
1853
|
+
!loading && filteredOptions.map((option) => {
|
|
1854
|
+
const isSelected = selectedValues.includes(option.value);
|
|
1855
|
+
const isHovered = hoveredValue === option.value;
|
|
1856
|
+
const visualState = isSelected ? "selected" : isHovered ? "hover" : "default";
|
|
1857
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1858
|
+
reactNative.Pressable,
|
|
1859
|
+
{
|
|
1860
|
+
onPress: () => handleSelect(option.value),
|
|
1861
|
+
disabled,
|
|
1862
|
+
onHoverIn: () => setHoveredValue(option.value),
|
|
1863
|
+
onHoverOut: () => setHoveredValue((current) => current === option.value ? null : current),
|
|
1864
|
+
onPressIn: () => setHoveredValue(option.value),
|
|
1865
|
+
onPressOut: () => setHoveredValue((current) => current === option.value ? null : current),
|
|
1866
|
+
accessibilityRole: multiple ? "checkbox" : "button",
|
|
1867
|
+
accessibilityState: { selected: isSelected, checked: isSelected, disabled },
|
|
1868
|
+
style: [
|
|
1869
|
+
styles5.item,
|
|
1870
|
+
{
|
|
1871
|
+
backgroundColor: itemBackground(visualState)
|
|
1872
|
+
}
|
|
1873
|
+
],
|
|
1874
|
+
children: [
|
|
1875
|
+
multiple ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { pointerEvents: "none", style: styles5.itemCheckbox, children: /* @__PURE__ */ jsxRuntime.jsx(Checkbox, { value: isSelected, variant: "light" }) }) : null,
|
|
1876
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles5.itemLabel, numberOfLines: 1, children: option.label })
|
|
1877
|
+
]
|
|
1878
|
+
},
|
|
1879
|
+
option.value
|
|
1880
|
+
);
|
|
1881
|
+
})
|
|
1882
|
+
]
|
|
1883
|
+
}
|
|
1884
|
+
)
|
|
1885
|
+
] }) : null
|
|
1886
|
+
] }),
|
|
1887
|
+
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles5.hint, { color: hintColor }], children: hint }) : null
|
|
1888
|
+
]
|
|
1889
|
+
}
|
|
1890
|
+
);
|
|
1891
|
+
}
|
|
1892
|
+
);
|
|
1893
|
+
var styles5 = reactNative.StyleSheet.create({
|
|
1894
|
+
root: {
|
|
1895
|
+
width: DEFAULT_WIDTH2,
|
|
1896
|
+
gap: 8,
|
|
1897
|
+
alignSelf: "flex-start"
|
|
1898
|
+
},
|
|
1899
|
+
rootOpen: {
|
|
1900
|
+
zIndex: 30
|
|
1901
|
+
},
|
|
1902
|
+
disabled: {
|
|
1903
|
+
opacity: 0.6
|
|
1904
|
+
},
|
|
1905
|
+
label: {
|
|
1906
|
+
...selectTypography.label
|
|
1907
|
+
},
|
|
1908
|
+
triggerWrap: {
|
|
1909
|
+
position: "relative",
|
|
1910
|
+
zIndex: 1
|
|
1911
|
+
},
|
|
1912
|
+
triggerWrapOpen: {
|
|
1913
|
+
zIndex: 20
|
|
1914
|
+
},
|
|
1915
|
+
trigger: {
|
|
1916
|
+
height: TRIGGER_HEIGHT,
|
|
1917
|
+
borderRadius: TRIGGER_RADIUS,
|
|
1918
|
+
borderWidth: 1,
|
|
1919
|
+
paddingVertical: 12,
|
|
1920
|
+
paddingHorizontal: 16,
|
|
1921
|
+
flexDirection: "row",
|
|
1922
|
+
alignItems: "center",
|
|
1923
|
+
gap: 10,
|
|
1924
|
+
overflow: "hidden"
|
|
1925
|
+
},
|
|
1926
|
+
triggerContent: {
|
|
1927
|
+
flex: 1,
|
|
1928
|
+
justifyContent: "center",
|
|
1929
|
+
minWidth: 0,
|
|
1930
|
+
overflow: "hidden"
|
|
1931
|
+
},
|
|
1932
|
+
triggerText: {
|
|
1933
|
+
...selectTypography.field
|
|
1934
|
+
},
|
|
1935
|
+
multiValueRoot: {
|
|
1936
|
+
width: "100%",
|
|
1937
|
+
position: "relative"
|
|
1938
|
+
},
|
|
1939
|
+
measureRow: {
|
|
1940
|
+
position: "absolute",
|
|
1941
|
+
left: 0,
|
|
1942
|
+
top: 0,
|
|
1943
|
+
flexDirection: "row",
|
|
1944
|
+
opacity: 0,
|
|
1945
|
+
zIndex: -1
|
|
1946
|
+
},
|
|
1947
|
+
chipsRow: {
|
|
1948
|
+
flexDirection: "row",
|
|
1949
|
+
alignItems: "center",
|
|
1950
|
+
gap: CHIP_GAP,
|
|
1951
|
+
overflow: "hidden"
|
|
1952
|
+
},
|
|
1953
|
+
chip: {
|
|
1954
|
+
flexDirection: "row",
|
|
1955
|
+
alignItems: "center",
|
|
1956
|
+
gap: 4,
|
|
1957
|
+
paddingVertical: 2,
|
|
1958
|
+
paddingHorizontal: 8,
|
|
1959
|
+
borderRadius: 999,
|
|
1960
|
+
backgroundColor: colors.grey600,
|
|
1961
|
+
flexShrink: 0
|
|
1962
|
+
},
|
|
1963
|
+
chipLabel: {
|
|
1964
|
+
...selectTypography.hint,
|
|
1965
|
+
color: colors.white,
|
|
1966
|
+
maxWidth: 120
|
|
1967
|
+
},
|
|
1968
|
+
chipRemove: {
|
|
1969
|
+
color: colors.grey100,
|
|
1970
|
+
fontSize: 14,
|
|
1971
|
+
lineHeight: 14
|
|
1972
|
+
},
|
|
1973
|
+
ellipsis: {
|
|
1974
|
+
flexShrink: 0,
|
|
1975
|
+
paddingHorizontal: 2
|
|
1976
|
+
},
|
|
1977
|
+
ellipsisText: {
|
|
1978
|
+
...selectTypography.field,
|
|
1979
|
+
color: colors.white,
|
|
1980
|
+
lineHeight: 16
|
|
1981
|
+
},
|
|
1982
|
+
iconSlot: {
|
|
1983
|
+
width: ICON_SIZE,
|
|
1984
|
+
height: ICON_SIZE,
|
|
1985
|
+
alignItems: "center",
|
|
1986
|
+
justifyContent: "center",
|
|
1987
|
+
flexShrink: 0
|
|
1988
|
+
},
|
|
1989
|
+
chevronOpen: {
|
|
1990
|
+
transform: [{ rotate: "180deg" }]
|
|
1991
|
+
},
|
|
1992
|
+
menu: {
|
|
1993
|
+
position: "absolute",
|
|
1994
|
+
top: "100%",
|
|
1995
|
+
left: 0,
|
|
1996
|
+
right: 0,
|
|
1997
|
+
marginTop: 8,
|
|
1998
|
+
zIndex: 10,
|
|
1999
|
+
borderRadius: MENU_RADIUS2,
|
|
2000
|
+
padding: 12,
|
|
2001
|
+
gap: 8,
|
|
2002
|
+
backgroundColor: colors.grey700,
|
|
2003
|
+
...reactNative.Platform.select({
|
|
2004
|
+
web: {
|
|
2005
|
+
boxShadow: `0 8px 24px ${colors.black}73`
|
|
2006
|
+
},
|
|
2007
|
+
default: {
|
|
2008
|
+
elevation: 8
|
|
2009
|
+
}
|
|
2010
|
+
})
|
|
2011
|
+
},
|
|
2012
|
+
optionList: {
|
|
2013
|
+
maxHeight: MENU_MAX_LIST_HEIGHT
|
|
2014
|
+
},
|
|
2015
|
+
optionListContent: {
|
|
2016
|
+
gap: 8
|
|
2017
|
+
},
|
|
2018
|
+
statusRow: {
|
|
2019
|
+
minHeight: 43,
|
|
2020
|
+
padding: 12,
|
|
2021
|
+
justifyContent: "center"
|
|
2022
|
+
},
|
|
2023
|
+
statusText: {
|
|
2024
|
+
...selectTypography.field,
|
|
2025
|
+
color: colors.grey100
|
|
2026
|
+
},
|
|
2027
|
+
searchField: {
|
|
2028
|
+
height: 40,
|
|
2029
|
+
borderRadius: ITEM_RADIUS,
|
|
2030
|
+
paddingHorizontal: 12,
|
|
2031
|
+
flexDirection: "row",
|
|
2032
|
+
alignItems: "center",
|
|
2033
|
+
gap: 8,
|
|
2034
|
+
backgroundColor: colors.grey800
|
|
2035
|
+
},
|
|
2036
|
+
searchInput: {
|
|
2037
|
+
...selectTypography.field,
|
|
2038
|
+
flex: 1,
|
|
2039
|
+
color: colors.white,
|
|
2040
|
+
paddingVertical: 0,
|
|
2041
|
+
margin: 0
|
|
2042
|
+
},
|
|
2043
|
+
searchInputWeb: {
|
|
2044
|
+
outlineStyle: "none"
|
|
2045
|
+
},
|
|
2046
|
+
searchInputAndroid: {
|
|
2047
|
+
includeFontPadding: false
|
|
2048
|
+
},
|
|
2049
|
+
item: {
|
|
2050
|
+
minHeight: 43,
|
|
2051
|
+
borderRadius: ITEM_RADIUS,
|
|
2052
|
+
padding: 12,
|
|
2053
|
+
flexDirection: "row",
|
|
2054
|
+
alignItems: "center",
|
|
2055
|
+
gap: 8
|
|
2056
|
+
},
|
|
2057
|
+
itemCheckbox: {
|
|
2058
|
+
flexShrink: 0
|
|
2059
|
+
},
|
|
2060
|
+
itemLabel: {
|
|
2061
|
+
...selectTypography.field,
|
|
2062
|
+
color: colors.white,
|
|
2063
|
+
flex: 1
|
|
2064
|
+
},
|
|
2065
|
+
hint: {
|
|
2066
|
+
...selectTypography.hint
|
|
2067
|
+
}
|
|
2068
|
+
});
|
|
2069
|
+
var DEFAULT_WIDTH3 = 308;
|
|
2070
|
+
var FIELD_HEIGHT = 100;
|
|
2071
|
+
var FIELD_RADIUS = 16;
|
|
2072
|
+
var FIELD_PADDING_VERTICAL = 12;
|
|
2073
|
+
var FIELD_PADDING_HORIZONTAL = 16;
|
|
2074
|
+
function resolveVisualState2({
|
|
2075
|
+
disabled,
|
|
2076
|
+
error,
|
|
2077
|
+
focused,
|
|
2078
|
+
hasValue
|
|
2079
|
+
}) {
|
|
2080
|
+
if (disabled) return "disabled";
|
|
2081
|
+
if (error) return "error";
|
|
2082
|
+
if (focused) return "active";
|
|
2083
|
+
if (hasValue) return "filled";
|
|
2084
|
+
return "default";
|
|
2085
|
+
}
|
|
2086
|
+
function chromeFor2(state) {
|
|
2087
|
+
const base = {
|
|
2088
|
+
borderColor: colors.grey700,
|
|
2089
|
+
backgroundColor: colors.grey700,
|
|
2090
|
+
textColor: colors.white,
|
|
2091
|
+
placeholderColor: colors.grey100,
|
|
2092
|
+
labelColor: colors.white,
|
|
2093
|
+
hintColor: colors.grey100
|
|
2094
|
+
};
|
|
2095
|
+
switch (state) {
|
|
2096
|
+
case "active":
|
|
2097
|
+
return {
|
|
2098
|
+
...base,
|
|
2099
|
+
borderColor: colors.primaryMuted
|
|
2100
|
+
};
|
|
2101
|
+
case "error":
|
|
2102
|
+
return {
|
|
2103
|
+
...base,
|
|
2104
|
+
borderColor: colors.redMuted,
|
|
2105
|
+
textColor: colors.red,
|
|
2106
|
+
placeholderColor: colors.red,
|
|
2107
|
+
labelColor: colors.red,
|
|
2108
|
+
hintColor: colors.red
|
|
2109
|
+
};
|
|
2110
|
+
case "filled":
|
|
2111
|
+
return base;
|
|
2112
|
+
case "disabled":
|
|
2113
|
+
return {
|
|
2114
|
+
...base,
|
|
2115
|
+
textColor: colors.grey0
|
|
2116
|
+
};
|
|
2117
|
+
default:
|
|
2118
|
+
return base;
|
|
2119
|
+
}
|
|
2120
|
+
}
|
|
2121
|
+
var Textarea = react.forwardRef(function Textarea2({
|
|
2122
|
+
label = "Label",
|
|
2123
|
+
showLabel = true,
|
|
2124
|
+
hint = "Hint",
|
|
2125
|
+
showHint = true,
|
|
2126
|
+
placeholder = "placeholder",
|
|
2127
|
+
disabled = false,
|
|
2128
|
+
error = false,
|
|
2129
|
+
value,
|
|
2130
|
+
defaultValue,
|
|
2131
|
+
onChangeText,
|
|
2132
|
+
onFocus,
|
|
2133
|
+
onBlur,
|
|
2134
|
+
style,
|
|
2135
|
+
fieldStyle,
|
|
2136
|
+
inputStyle,
|
|
2137
|
+
className,
|
|
2138
|
+
inputClassName,
|
|
2139
|
+
accessibilityLabel,
|
|
2140
|
+
...textInputProps
|
|
2141
|
+
}, forwardedRef) {
|
|
2142
|
+
const rootRef = react.useRef(null);
|
|
2143
|
+
const inputRef = react.useRef(null);
|
|
2144
|
+
const setInputRef = react.useMemo(() => mergeRefs(inputRef, forwardedRef), [forwardedRef]);
|
|
2145
|
+
const [focused, setFocused] = react.useState(false);
|
|
2146
|
+
const [uncontrolledValue, setUncontrolledValue] = react.useState(defaultValue ?? "");
|
|
2147
|
+
const isControlled = typeof value === "string";
|
|
2148
|
+
const currentValue = isControlled ? value : uncontrolledValue;
|
|
2149
|
+
const hasValue = currentValue.length > 0;
|
|
2150
|
+
const visualState = resolveVisualState2({ disabled, error, focused, hasValue });
|
|
2151
|
+
const chrome = chromeFor2(visualState);
|
|
2152
|
+
const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? void 0 : label);
|
|
2153
|
+
useApplyWebClassName(rootRef, className);
|
|
2154
|
+
useApplyWebClassName(inputRef, inputClassName);
|
|
2155
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: rootRef, style: [styles6.root, disabled && styles6.disabled, style], children: [
|
|
2156
|
+
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles6.label, { color: chrome.labelColor }], children: label }) : null,
|
|
2157
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2158
|
+
reactNative.View,
|
|
2159
|
+
{
|
|
2160
|
+
style: [
|
|
2161
|
+
styles6.field,
|
|
2162
|
+
{
|
|
2163
|
+
borderColor: chrome.borderColor,
|
|
2164
|
+
backgroundColor: chrome.backgroundColor
|
|
2165
|
+
},
|
|
2166
|
+
fieldStyle
|
|
2167
|
+
],
|
|
2168
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2169
|
+
reactNative.TextInput,
|
|
2170
|
+
{
|
|
2171
|
+
ref: setInputRef,
|
|
2172
|
+
...textInputProps,
|
|
2173
|
+
multiline: true,
|
|
2174
|
+
textAlignVertical: "top",
|
|
2175
|
+
value: isControlled ? value : void 0,
|
|
2176
|
+
defaultValue: isControlled ? void 0 : defaultValue,
|
|
2177
|
+
editable: !disabled,
|
|
2178
|
+
placeholder,
|
|
2179
|
+
placeholderTextColor: chrome.placeholderColor,
|
|
2180
|
+
onChangeText: (text) => {
|
|
2181
|
+
if (!isControlled) setUncontrolledValue(text);
|
|
2182
|
+
onChangeText?.(text);
|
|
2183
|
+
},
|
|
2184
|
+
onFocus: (event) => {
|
|
2185
|
+
setFocused(true);
|
|
2186
|
+
onFocus?.(event);
|
|
2187
|
+
},
|
|
2188
|
+
onBlur: (event) => {
|
|
2189
|
+
setFocused(false);
|
|
2190
|
+
onBlur?.(event);
|
|
2191
|
+
},
|
|
2192
|
+
style: [
|
|
2193
|
+
styles6.input,
|
|
2194
|
+
textareaTypography.field,
|
|
2195
|
+
{ color: chrome.textColor },
|
|
2196
|
+
reactNative.Platform.OS === "web" ? styles6.inputWeb : null,
|
|
2197
|
+
reactNative.Platform.OS === "android" ? styles6.inputAndroid : null,
|
|
2198
|
+
inputStyle
|
|
2199
|
+
],
|
|
2200
|
+
accessibilityLabel: resolvedAccessibilityLabel,
|
|
2201
|
+
accessibilityState: { disabled }
|
|
2202
|
+
}
|
|
2203
|
+
)
|
|
2204
|
+
}
|
|
2205
|
+
),
|
|
2206
|
+
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles6.hint, { color: chrome.hintColor }], children: hint }) : null
|
|
2207
|
+
] });
|
|
2208
|
+
});
|
|
2209
|
+
var styles6 = reactNative.StyleSheet.create({
|
|
2210
|
+
root: {
|
|
2211
|
+
width: DEFAULT_WIDTH3,
|
|
2212
|
+
gap: 8,
|
|
2213
|
+
alignSelf: "flex-start"
|
|
2214
|
+
},
|
|
2215
|
+
disabled: {
|
|
2216
|
+
opacity: 0.6
|
|
2217
|
+
},
|
|
2218
|
+
label: {
|
|
2219
|
+
...textareaTypography.label
|
|
2220
|
+
},
|
|
2221
|
+
field: {
|
|
2222
|
+
height: FIELD_HEIGHT,
|
|
2223
|
+
borderRadius: FIELD_RADIUS,
|
|
2224
|
+
borderWidth: 1,
|
|
2225
|
+
paddingTop: FIELD_PADDING_VERTICAL,
|
|
2226
|
+
paddingBottom: FIELD_PADDING_VERTICAL,
|
|
2227
|
+
paddingLeft: FIELD_PADDING_HORIZONTAL,
|
|
2228
|
+
paddingRight: FIELD_PADDING_HORIZONTAL
|
|
2229
|
+
},
|
|
2230
|
+
input: {
|
|
2231
|
+
flex: 1,
|
|
2232
|
+
paddingVertical: 0,
|
|
2233
|
+
margin: 0
|
|
2234
|
+
},
|
|
2235
|
+
inputWeb: {
|
|
2236
|
+
outlineStyle: "none",
|
|
2237
|
+
resize: "none"
|
|
2238
|
+
},
|
|
2239
|
+
inputAndroid: {
|
|
2240
|
+
includeFontPadding: false
|
|
2241
|
+
},
|
|
2242
|
+
hint: {
|
|
2243
|
+
...textareaTypography.hint
|
|
2244
|
+
}
|
|
2245
|
+
});
|
|
2246
|
+
var TRACK_WIDTH = 44;
|
|
2247
|
+
var TRACK_HEIGHT = 24;
|
|
2248
|
+
var TRACK_RADIUS = 43;
|
|
2249
|
+
var TRACK_PADDING = 4;
|
|
2250
|
+
var THUMB_SIZE = TRACK_HEIGHT - TRACK_PADDING * 2;
|
|
2251
|
+
var THUMB_TRAVEL = TRACK_WIDTH - TRACK_PADDING * 2 - THUMB_SIZE;
|
|
2252
|
+
var ANIMATION_DURATION = 300;
|
|
2253
|
+
var Toggle = react.forwardRef(function Toggle2({
|
|
2254
|
+
value,
|
|
2255
|
+
defaultValue = false,
|
|
2256
|
+
onValueChange,
|
|
2257
|
+
disabled = false,
|
|
2258
|
+
label,
|
|
2259
|
+
children,
|
|
2260
|
+
accessibilityLabel,
|
|
2261
|
+
style,
|
|
2262
|
+
labelStyle,
|
|
2263
|
+
className,
|
|
2264
|
+
hitSlop = 10,
|
|
2265
|
+
...rest
|
|
2266
|
+
}, forwardedRef) {
|
|
2267
|
+
const containerRef = react.useRef(null);
|
|
2268
|
+
const isControlled = typeof value === "boolean";
|
|
2269
|
+
const [uncontrolledValue, setUncontrolledValue] = react.useState(defaultValue);
|
|
2270
|
+
const isActive = isControlled ? value : uncontrolledValue;
|
|
2271
|
+
const labelContent = children ?? label;
|
|
2272
|
+
const resolvedAccessibilityLabel = accessibilityLabel ?? (typeof labelContent === "string" ? labelContent : void 0);
|
|
2273
|
+
const setContainerRef = react.useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);
|
|
2274
|
+
const progress = react.useRef(new reactNative.Animated.Value(isActive ? 1 : 0)).current;
|
|
2275
|
+
useApplyWebClassName(containerRef, className);
|
|
2276
|
+
react.useEffect(() => {
|
|
2277
|
+
reactNative.Animated.timing(progress, {
|
|
2278
|
+
toValue: isActive ? 1 : 0,
|
|
2279
|
+
duration: ANIMATION_DURATION,
|
|
2280
|
+
easing: reactNative.Easing.out(reactNative.Easing.ease),
|
|
2281
|
+
useNativeDriver: false
|
|
2282
|
+
}).start();
|
|
2283
|
+
}, [isActive, progress]);
|
|
2284
|
+
const handlePress = () => {
|
|
2285
|
+
if (disabled) return;
|
|
2286
|
+
const next = !isActive;
|
|
2287
|
+
if (!isControlled) setUncontrolledValue(next);
|
|
2288
|
+
onValueChange?.(next);
|
|
2289
|
+
};
|
|
2290
|
+
const trackBackgroundColor = progress.interpolate({
|
|
2291
|
+
inputRange: [0, 1],
|
|
2292
|
+
outputRange: [colors.grey700, colors.primary]
|
|
2293
|
+
});
|
|
2294
|
+
const thumbTranslateX = progress.interpolate({
|
|
2295
|
+
inputRange: [0, 1],
|
|
2296
|
+
outputRange: [0, THUMB_TRAVEL]
|
|
2297
|
+
});
|
|
2298
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2299
|
+
reactNative.Pressable,
|
|
2300
|
+
{
|
|
2301
|
+
...rest,
|
|
2302
|
+
ref: setContainerRef,
|
|
2303
|
+
onPress: handlePress,
|
|
2304
|
+
disabled,
|
|
2305
|
+
hitSlop,
|
|
2306
|
+
accessibilityRole: "switch",
|
|
2307
|
+
accessibilityLabel: resolvedAccessibilityLabel,
|
|
2308
|
+
accessibilityState: { checked: isActive, disabled },
|
|
2309
|
+
style: [styles7.pressable, disabled && styles7.disabled, style],
|
|
2310
|
+
children: [
|
|
2311
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2312
|
+
reactNative.Animated.View,
|
|
2313
|
+
{
|
|
2314
|
+
style: [
|
|
2315
|
+
styles7.track,
|
|
2316
|
+
{
|
|
2317
|
+
backgroundColor: trackBackgroundColor
|
|
2318
|
+
}
|
|
2319
|
+
],
|
|
2320
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2321
|
+
reactNative.Animated.View,
|
|
2322
|
+
{
|
|
2323
|
+
style: [
|
|
2324
|
+
styles7.thumb,
|
|
2325
|
+
{
|
|
2326
|
+
transform: [{ translateX: thumbTranslateX }]
|
|
2327
|
+
}
|
|
2328
|
+
]
|
|
2329
|
+
}
|
|
2330
|
+
)
|
|
2331
|
+
}
|
|
2332
|
+
),
|
|
2333
|
+
labelContent != null && labelContent !== false ? typeof labelContent === "string" || typeof labelContent === "number" ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles7.label, labelStyle], children: labelContent }) : labelContent : null
|
|
2334
|
+
]
|
|
2335
|
+
}
|
|
2336
|
+
);
|
|
2337
|
+
});
|
|
2338
|
+
var styles7 = reactNative.StyleSheet.create({
|
|
2339
|
+
pressable: {
|
|
2340
|
+
flexDirection: "row",
|
|
2341
|
+
alignItems: "center",
|
|
2342
|
+
alignSelf: "flex-start",
|
|
2343
|
+
gap: 10
|
|
2344
|
+
},
|
|
2345
|
+
disabled: {
|
|
2346
|
+
opacity: 0.6
|
|
2347
|
+
},
|
|
2348
|
+
track: {
|
|
2349
|
+
width: TRACK_WIDTH,
|
|
2350
|
+
height: TRACK_HEIGHT,
|
|
2351
|
+
borderRadius: TRACK_RADIUS,
|
|
2352
|
+
padding: TRACK_PADDING,
|
|
2353
|
+
justifyContent: "center"
|
|
2354
|
+
},
|
|
2355
|
+
thumb: {
|
|
2356
|
+
width: THUMB_SIZE,
|
|
2357
|
+
height: THUMB_SIZE,
|
|
2358
|
+
borderRadius: THUMB_SIZE / 2,
|
|
2359
|
+
backgroundColor: colors.white
|
|
2360
|
+
},
|
|
2361
|
+
label: {
|
|
2362
|
+
...inputTypography.field,
|
|
2363
|
+
color: colors.white
|
|
2364
|
+
}
|
|
2365
|
+
});
|
|
805
2366
|
|
|
806
2367
|
exports.ArrowRightIcon = ArrowRightIcon;
|
|
2368
|
+
exports.Avatar = Avatar;
|
|
807
2369
|
exports.BagIcon = BagIcon;
|
|
808
2370
|
exports.BellIcon = BellIcon;
|
|
809
2371
|
exports.BuildingIcon = BuildingIcon;
|
|
810
2372
|
exports.Button = Button;
|
|
2373
|
+
exports.CalendarIcon = CalendarIcon;
|
|
811
2374
|
exports.CameraIcon = CameraIcon;
|
|
812
2375
|
exports.CheckBadgeIcon = CheckBadgeIcon;
|
|
2376
|
+
exports.CheckIcon = CheckIcon;
|
|
2377
|
+
exports.Checkbox = Checkbox;
|
|
2378
|
+
exports.ChevronDownIcon = ChevronDownIcon;
|
|
813
2379
|
exports.ClockIcon = ClockIcon;
|
|
814
2380
|
exports.FacebookIcon = FacebookIcon;
|
|
2381
|
+
exports.HeartIcon = HeartIcon;
|
|
2382
|
+
exports.HelpCircleIcon = HelpCircleIcon;
|
|
815
2383
|
exports.HomeIcon = HomeIcon;
|
|
816
2384
|
exports.Icon = Icon;
|
|
817
2385
|
exports.Input = Input;
|
|
818
2386
|
exports.InstagramIcon = InstagramIcon;
|
|
819
2387
|
exports.KeyIcon = KeyIcon;
|
|
2388
|
+
exports.LayoutGridIcon = LayoutGridIcon;
|
|
820
2389
|
exports.LinkedInIcon = LinkedInIcon;
|
|
2390
|
+
exports.LogOutIcon = LogOutIcon;
|
|
821
2391
|
exports.MailIcon = MailIcon;
|
|
822
2392
|
exports.NavigateIcon = NavigateIcon;
|
|
823
2393
|
exports.PhoneIcon = PhoneIcon;
|
|
2394
|
+
exports.SearchIcon = SearchIcon;
|
|
2395
|
+
exports.Select = Select;
|
|
2396
|
+
exports.SettingsIcon = SettingsIcon;
|
|
824
2397
|
exports.ShowIcon = ShowIcon;
|
|
2398
|
+
exports.Textarea = Textarea;
|
|
2399
|
+
exports.Toggle = Toggle;
|
|
825
2400
|
exports.UserIcon = UserIcon;
|
|
2401
|
+
exports.VideoIcon = VideoIcon;
|
|
2402
|
+
exports.avatarTypography = avatarTypography;
|
|
826
2403
|
exports.buttonTypography = buttonTypography;
|
|
827
2404
|
exports.colors = colors;
|
|
828
2405
|
exports.fonts = fonts;
|
|
@@ -833,5 +2410,7 @@ exports.iconGroups = iconGroups;
|
|
|
833
2410
|
exports.iconNames = iconNames;
|
|
834
2411
|
exports.icons = icons;
|
|
835
2412
|
exports.inputTypography = inputTypography;
|
|
2413
|
+
exports.selectTypography = selectTypography;
|
|
2414
|
+
exports.textareaTypography = textareaTypography;
|
|
836
2415
|
//# sourceMappingURL=index.cjs.map
|
|
837
2416
|
//# sourceMappingURL=index.cjs.map
|