@szymonpiatek/designsystem 0.0.2 → 0.0.3

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 CHANGED
@@ -4,6 +4,7 @@ var react$1 = require('react');
4
4
  var styles = require('@mui/material/styles');
5
5
  var react = require('@emotion/react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
+ var libphonenumberJs = require('libphonenumber-js');
7
8
  var CssBaseline = require('@mui/material/CssBaseline');
8
9
 
9
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -20,40 +21,32 @@ var sizeMap = {
20
21
  md: { padding: "0.5rem 1.25rem", fontSize: "0.875rem", gap: "0.375rem" },
21
22
  lg: { padding: "0.75rem 1.75rem", fontSize: "1rem", gap: "0.5rem" }
22
23
  };
23
- var variantStyles = (theme, variant) => {
24
- switch (variant) {
25
- case "primary":
26
- return {
27
- backgroundColor: theme.palette.primary.main,
28
- color: theme.palette.primary.contrastText,
29
- "&:hover:not(:disabled)": { backgroundColor: theme.palette.primary.dark },
30
- "&:active:not(:disabled)": { filter: "brightness(0.92)" }
31
- };
32
- case "secondary":
33
- return {
34
- backgroundColor: theme.palette.secondary.main,
35
- color: theme.palette.secondary.contrastText,
36
- "&:hover:not(:disabled)": { backgroundColor: theme.palette.secondary.dark },
37
- "&:active:not(:disabled)": { filter: "brightness(0.92)" }
38
- };
39
- case "ghost":
40
- return {
41
- backgroundColor: "transparent",
42
- color: theme.palette.primary.main,
43
- border: `1px solid ${theme.palette.primary.main}`,
44
- "&:hover:not(:disabled)": { backgroundColor: styles.alpha(theme.palette.primary.main, 0.08) },
45
- "&:active:not(:disabled)": { backgroundColor: styles.alpha(theme.palette.primary.main, 0.16) }
46
- };
47
- case "danger":
48
- return {
49
- backgroundColor: theme.palette.error.main,
50
- color: theme.palette.error.contrastText,
51
- "&:hover:not(:disabled)": { backgroundColor: theme.palette.error.dark },
52
- "&:active:not(:disabled)": { filter: "brightness(0.92)" }
53
- };
54
- default:
55
- return {};
56
- }
24
+ var variantStyles = {
25
+ primary: (theme) => ({
26
+ backgroundColor: theme.palette.primary.main,
27
+ color: theme.palette.primary.contrastText,
28
+ "&:hover:not(:disabled)": { backgroundColor: theme.palette.primary.dark },
29
+ "&:active:not(:disabled)": { filter: "brightness(0.92)" }
30
+ }),
31
+ secondary: (theme) => ({
32
+ backgroundColor: theme.palette.secondary.main,
33
+ color: theme.palette.secondary.contrastText,
34
+ "&:hover:not(:disabled)": { backgroundColor: theme.palette.secondary.dark },
35
+ "&:active:not(:disabled)": { filter: "brightness(0.92)" }
36
+ }),
37
+ ghost: (theme) => ({
38
+ backgroundColor: "transparent",
39
+ color: theme.palette.primary.main,
40
+ border: `1px solid ${theme.palette.primary.main}`,
41
+ "&:hover:not(:disabled)": { backgroundColor: styles.alpha(theme.palette.primary.main, 0.08) },
42
+ "&:active:not(:disabled)": { backgroundColor: styles.alpha(theme.palette.primary.main, 0.16) }
43
+ }),
44
+ danger: (theme) => ({
45
+ backgroundColor: theme.palette.error.main,
46
+ color: theme.palette.error.contrastText,
47
+ "&:hover:not(:disabled)": { backgroundColor: theme.palette.error.dark },
48
+ "&:active:not(:disabled)": { filter: "brightness(0.92)" }
49
+ })
57
50
  };
58
51
  var StyledButton = styles.styled("button")(
59
52
  ({ theme, $variant, $size, $fullWidth }) => ({
@@ -72,7 +65,7 @@ var StyledButton = styles.styled("button")(
72
65
  transition: "background-color 150ms ease, box-shadow 150ms ease, border-color 150ms ease",
73
66
  width: $fullWidth ? "100%" : "auto",
74
67
  ...sizeMap[$size],
75
- ...variantStyles(theme, $variant),
68
+ ...variantStyles[$variant](theme),
76
69
  "&:focus-visible": {
77
70
  outline: `3px solid ${theme.palette.primary.main}`,
78
71
  outlineOffset: "2px"
@@ -105,7 +98,10 @@ var Button = react$1.forwardRef(
105
98
  endIcon,
106
99
  onClick,
107
100
  type = "button",
108
- children
101
+ children,
102
+ className,
103
+ "aria-label": ariaLabel,
104
+ "aria-current": ariaCurrent
109
105
  }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
110
106
  StyledButton,
111
107
  {
@@ -117,6 +113,9 @@ var Button = react$1.forwardRef(
117
113
  $size: size,
118
114
  $fullWidth: fullWidth,
119
115
  "aria-busy": loading || void 0,
116
+ className,
117
+ "aria-label": ariaLabel,
118
+ "aria-current": ariaCurrent,
120
119
  children: [
121
120
  loading ? /* @__PURE__ */ jsxRuntime.jsx(Spinner, { "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsxs(
122
121
  "svg",
@@ -140,6 +139,4074 @@ var Button = react$1.forwardRef(
140
139
  )
141
140
  );
142
141
  Button.displayName = "Button";
142
+ var StyledHelperText = styles.styled("p")(({ theme, $error }) => ({
143
+ margin: "0.25rem 0 0",
144
+ fontSize: "0.75rem",
145
+ fontFamily: theme.typography.fontFamily,
146
+ color: $error ? theme.palette.error.main : theme.palette.text.secondary
147
+ }));
148
+ var HelperText = ({ error = false, children, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(StyledHelperText, { $error: error, ...rest, children });
149
+ HelperText.displayName = "HelperText";
150
+ var labelSizeMap = {
151
+ sm: "0.625rem",
152
+ md: "0.75rem",
153
+ lg: "0.875rem"
154
+ };
155
+ var StyledLabel = styles.styled("label")(({ theme, $error, $size }) => ({
156
+ display: "block",
157
+ marginBottom: "0.25rem",
158
+ fontSize: labelSizeMap[$size],
159
+ fontWeight: 500,
160
+ fontFamily: theme.typography.fontFamily,
161
+ color: $error ? theme.palette.error.main : theme.palette.text.primary
162
+ }));
163
+ var Label = ({ error = false, size = "md", children, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(StyledLabel, { $error: error, $size: size, ...rest, children });
164
+ Label.displayName = "Label";
165
+
166
+ // src/components/atoms/inputs/elements/sizeMap.ts
167
+ var inputSizeMap = {
168
+ sm: { padding: "0.25rem 0.5rem", fontSize: "0.75rem", gap: "0.25rem" },
169
+ md: { padding: "0.375rem 0.75rem", fontSize: "0.875rem", gap: "0.375rem" },
170
+ lg: { padding: "0.5rem 1rem", fontSize: "1rem", gap: "0.5rem" }
171
+ };
172
+ var inputHeightMap = {
173
+ sm: "26px",
174
+ md: "32px",
175
+ lg: "38.5px"
176
+ };
177
+ var DropdownPanel = styles.styled("div")(({ theme }) => ({
178
+ position: "absolute",
179
+ top: "calc(100% + 4px)",
180
+ left: 0,
181
+ zIndex: theme.zIndex.modal,
182
+ backgroundColor: theme.palette.background.paper,
183
+ border: `1px solid ${theme.palette.divider}`,
184
+ borderRadius: theme.shape.borderRadius,
185
+ boxShadow: theme.shadows[4]
186
+ }));
187
+ var Chevron = () => /* @__PURE__ */ jsxRuntime.jsx(
188
+ "svg",
189
+ {
190
+ viewBox: "0 0 24 24",
191
+ width: "1em",
192
+ height: "1em",
193
+ fill: "none",
194
+ stroke: "currentColor",
195
+ strokeWidth: 2,
196
+ strokeLinecap: "round",
197
+ strokeLinejoin: "round",
198
+ "aria-hidden": true,
199
+ children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "6 9 12 15 18 9" })
200
+ }
201
+ );
202
+ var inputColors = (theme, error) => ({
203
+ borderColor: error ? theme.palette.error.main : theme.palette.divider,
204
+ "&:hover:not(:focus-within):not([data-disabled])": {
205
+ borderColor: error ? theme.palette.error.dark : theme.palette.text.secondary
206
+ },
207
+ "&:focus-within": {
208
+ borderColor: error ? theme.palette.error.main : theme.palette.primary.main,
209
+ boxShadow: `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33`
210
+ }
211
+ });
212
+ var Root = styles.styled("div")(({ $fullWidth }) => ({
213
+ display: $fullWidth ? "block" : "inline-block",
214
+ width: $fullWidth ? "100%" : "auto"
215
+ }));
216
+ var InputWrapper = styles.styled("div")(
217
+ ({ theme, $size, $fullWidth, $error, $disabled }) => ({
218
+ display: "inline-flex",
219
+ alignItems: "center",
220
+ width: $fullWidth ? "100%" : "auto",
221
+ borderRadius: theme.shape.borderRadius,
222
+ border: "1px solid",
223
+ backgroundColor: $disabled ? theme.palette.action.disabledBackground : theme.palette.background.paper,
224
+ transition: "border-color 150ms ease, box-shadow 150ms ease",
225
+ cursor: $disabled ? "not-allowed" : "text",
226
+ ...inputSizeMap[$size],
227
+ height: inputHeightMap[$size],
228
+ paddingBlock: 0,
229
+ ...inputColors(theme, $error),
230
+ ...$disabled && {
231
+ borderColor: theme.palette.action.disabled,
232
+ pointerEvents: "none"
233
+ }
234
+ })
235
+ );
236
+ var StyledInput = styles.styled("input")(({ theme }) => ({
237
+ flex: 1,
238
+ border: "none",
239
+ outline: "none",
240
+ background: "transparent",
241
+ fontFamily: theme.typography.fontFamily,
242
+ fontSize: "inherit",
243
+ color: theme.palette.text.primary,
244
+ width: "100%",
245
+ "&::placeholder": {
246
+ color: theme.palette.text.disabled
247
+ },
248
+ "&:disabled": {
249
+ color: theme.palette.action.disabled,
250
+ cursor: "not-allowed"
251
+ },
252
+ '&[type="search"]::-webkit-search-cancel-button': {
253
+ WebkitAppearance: "none"
254
+ }
255
+ }));
256
+ var Adornment = styles.styled("span")(({ theme }) => ({
257
+ display: "inline-flex",
258
+ alignItems: "center",
259
+ color: theme.palette.text.secondary,
260
+ flexShrink: 0
261
+ }));
262
+ var BaseInput = react$1.forwardRef(
263
+ ({
264
+ label,
265
+ helperText,
266
+ error = false,
267
+ size = "md",
268
+ fullWidth = false,
269
+ startAdornment,
270
+ endAdornment,
271
+ disabled = false,
272
+ id,
273
+ ...rest
274
+ }, ref) => {
275
+ const autoId = react$1.useId();
276
+ const inputId = id ?? autoId;
277
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root, { $fullWidth: fullWidth, children: [
278
+ label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
279
+ /* @__PURE__ */ jsxRuntime.jsxs(
280
+ InputWrapper,
281
+ {
282
+ $size: size,
283
+ $fullWidth: fullWidth,
284
+ $error: error,
285
+ $disabled: disabled,
286
+ "data-disabled": disabled || void 0,
287
+ children: [
288
+ startAdornment && /* @__PURE__ */ jsxRuntime.jsx(Adornment, { children: startAdornment }),
289
+ /* @__PURE__ */ jsxRuntime.jsx(StyledInput, { ref, id: inputId, disabled, ...rest }),
290
+ endAdornment && /* @__PURE__ */ jsxRuntime.jsx(Adornment, { children: endAdornment })
291
+ ]
292
+ }
293
+ ),
294
+ helperText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error, children: helperText })
295
+ ] });
296
+ }
297
+ );
298
+ BaseInput.displayName = "BaseInput";
299
+ var checkboxSizeMap = {
300
+ sm: "14px",
301
+ md: "16px",
302
+ lg: "20px"
303
+ };
304
+ var labelFontSizeMap = {
305
+ sm: "0.75rem",
306
+ md: "0.875rem",
307
+ lg: "1rem"
308
+ };
309
+ var checkedColor = (theme, error) => error ? theme.palette.error.main : theme.palette.primary.main;
310
+ var Box = styles.styled("span")(({ theme, $size, $error, $disabled }) => ({
311
+ position: "relative",
312
+ flexShrink: 0,
313
+ width: checkboxSizeMap[$size],
314
+ height: checkboxSizeMap[$size],
315
+ borderRadius: theme.shape.borderRadius / 2,
316
+ border: "1px solid",
317
+ borderColor: $disabled ? theme.palette.action.disabled : $error ? theme.palette.error.main : theme.palette.divider,
318
+ backgroundColor: $disabled ? theme.palette.action.disabledBackground : theme.palette.background.paper,
319
+ transition: "border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease",
320
+ display: "inline-flex",
321
+ alignItems: "center",
322
+ justifyContent: "center",
323
+ ...!$disabled && {
324
+ "label:hover &": {
325
+ borderColor: $error ? theme.palette.error.dark : theme.palette.text.secondary
326
+ },
327
+ "label:has(input:checked) &, label:has(input:indeterminate) &": {
328
+ backgroundColor: checkedColor(theme, $error),
329
+ borderColor: checkedColor(theme, $error)
330
+ },
331
+ "label:has(input:focus-visible) &": {
332
+ boxShadow: `0 0 0 3px ${checkedColor(theme, $error)}33`
333
+ }
334
+ },
335
+ "&::after": {
336
+ content: '""',
337
+ position: "absolute",
338
+ display: "none"
339
+ },
340
+ "label:has(input:checked) &::after": {
341
+ display: "block",
342
+ width: "30%",
343
+ height: "55%",
344
+ borderRight: `2px solid #fff`,
345
+ borderBottom: `2px solid #fff`,
346
+ transform: "rotate(45deg) translate(-10%, -15%)"
347
+ },
348
+ "label:has(input:indeterminate) &::after": {
349
+ display: "block",
350
+ width: "55%",
351
+ height: "2px",
352
+ backgroundColor: "#fff",
353
+ borderRadius: "1px"
354
+ }
355
+ }));
356
+ var HiddenInput = styles.styled("input")({
357
+ position: "absolute",
358
+ width: 1,
359
+ height: 1,
360
+ margin: -1,
361
+ overflow: "hidden",
362
+ clip: "rect(0 0 0 0)",
363
+ whiteSpace: "nowrap",
364
+ borderWidth: 0
365
+ });
366
+ var Row = styles.styled("label")(({ theme }) => ({
367
+ display: "inline-flex",
368
+ alignItems: "center",
369
+ gap: "0.5rem",
370
+ cursor: "inherit",
371
+ fontFamily: theme.typography.fontFamily
372
+ }));
373
+ var LabelText = styles.styled("span")(
374
+ ({ theme, $size, $disabled, $error }) => ({
375
+ fontSize: labelFontSizeMap[$size],
376
+ fontWeight: 400,
377
+ color: $disabled ? theme.palette.action.disabled : $error ? theme.palette.error.main : theme.palette.text.primary,
378
+ userSelect: "none"
379
+ })
380
+ );
381
+ var Root2 = styles.styled("span")(({ $disabled }) => ({
382
+ display: "inline-flex",
383
+ flexDirection: "column",
384
+ cursor: $disabled ? "not-allowed" : "pointer"
385
+ }));
386
+ var CheckboxInput = react$1.forwardRef(
387
+ ({
388
+ label,
389
+ helperText,
390
+ error = false,
391
+ size = "md",
392
+ disabled = false,
393
+ indeterminate = false,
394
+ id,
395
+ ...rest
396
+ }, ref) => {
397
+ const autoId = react$1.useId();
398
+ const inputId = id ?? autoId;
399
+ const innerRef = react$1.useRef(null);
400
+ react$1.useEffect(() => {
401
+ if (innerRef.current) {
402
+ innerRef.current.indeterminate = indeterminate;
403
+ }
404
+ }, [indeterminate]);
405
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root2, { $disabled: disabled, children: [
406
+ /* @__PURE__ */ jsxRuntime.jsxs(Row, { htmlFor: inputId, children: [
407
+ /* @__PURE__ */ jsxRuntime.jsx(Box, { $size: size, $error: error, $disabled: disabled, children: /* @__PURE__ */ jsxRuntime.jsx(
408
+ HiddenInput,
409
+ {
410
+ ref: (node) => {
411
+ innerRef.current = node;
412
+ if (typeof ref === "function") ref(node);
413
+ else if (ref)
414
+ ref.current = node;
415
+ },
416
+ id: inputId,
417
+ type: "checkbox",
418
+ disabled,
419
+ ...rest
420
+ }
421
+ ) }),
422
+ label && /* @__PURE__ */ jsxRuntime.jsx(LabelText, { $size: size, $disabled: disabled, $error: error, children: label })
423
+ ] }),
424
+ helperText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error, children: helperText })
425
+ ] });
426
+ }
427
+ );
428
+ CheckboxInput.displayName = "CheckboxInput";
429
+ var formatSize = (bytes) => {
430
+ if (bytes < 1024) return `${bytes} B`;
431
+ if (bytes < 1024 ** 2) return `${(bytes / 1024).toFixed(1)} KB`;
432
+ return `${(bytes / 1024 ** 2).toFixed(1)} MB`;
433
+ };
434
+ var UploadArrowIcon = ({ size = 13 }) => /* @__PURE__ */ jsxRuntime.jsxs(
435
+ "svg",
436
+ {
437
+ width: size,
438
+ height: size,
439
+ viewBox: "0 0 24 24",
440
+ fill: "none",
441
+ stroke: "currentColor",
442
+ strokeWidth: 2.5,
443
+ strokeLinecap: "round",
444
+ strokeLinejoin: "round",
445
+ "aria-hidden": true,
446
+ children: [
447
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "17 8 12 3 7 8" }),
448
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "3", x2: "12", y2: "15" }),
449
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 15v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4" })
450
+ ]
451
+ }
452
+ );
453
+ var CloudUploadIcon = ({ size }) => /* @__PURE__ */ jsxRuntime.jsxs(
454
+ "svg",
455
+ {
456
+ width: size,
457
+ height: size,
458
+ viewBox: "0 0 24 24",
459
+ fill: "none",
460
+ stroke: "currentColor",
461
+ strokeWidth: 1.5,
462
+ strokeLinecap: "round",
463
+ strokeLinejoin: "round",
464
+ "aria-hidden": true,
465
+ children: [
466
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "16 16 12 12 8 16" }),
467
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "12", x2: "12", y2: "21" }),
468
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3" })
469
+ ]
470
+ }
471
+ );
472
+ var FileDocIcon = ({ size }) => /* @__PURE__ */ jsxRuntime.jsxs(
473
+ "svg",
474
+ {
475
+ width: size,
476
+ height: size,
477
+ viewBox: "0 0 24 24",
478
+ fill: "none",
479
+ stroke: "currentColor",
480
+ strokeWidth: 1.75,
481
+ strokeLinecap: "round",
482
+ strokeLinejoin: "round",
483
+ "aria-hidden": true,
484
+ children: [
485
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }),
486
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "14 2 14 8 20 8" })
487
+ ]
488
+ }
489
+ );
490
+ var TrashIcon = ({ size = 12 }) => /* @__PURE__ */ jsxRuntime.jsxs(
491
+ "svg",
492
+ {
493
+ width: size,
494
+ height: size,
495
+ viewBox: "0 0 24 24",
496
+ fill: "none",
497
+ stroke: "currentColor",
498
+ strokeWidth: 2.5,
499
+ strokeLinecap: "round",
500
+ strokeLinejoin: "round",
501
+ "aria-hidden": true,
502
+ children: [
503
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "3 6 5 6 21 6" }),
504
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }),
505
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 11v6M14 11v6" }),
506
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2" })
507
+ ]
508
+ }
509
+ );
510
+ var XIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
511
+ "svg",
512
+ {
513
+ width: "11",
514
+ height: "11",
515
+ viewBox: "0 0 24 24",
516
+ fill: "none",
517
+ stroke: "currentColor",
518
+ strokeWidth: 2.5,
519
+ strokeLinecap: "round",
520
+ "aria-hidden": true,
521
+ children: [
522
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
523
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
524
+ ]
525
+ }
526
+ );
527
+ var Root3 = styles.styled("div")(({ $fullWidth }) => ({
528
+ display: $fullWidth ? "block" : "inline-block",
529
+ width: $fullWidth ? "100%" : "auto"
530
+ }));
531
+ var HiddenInput2 = styles.styled("input")({
532
+ position: "absolute",
533
+ width: 1,
534
+ height: 1,
535
+ margin: -1,
536
+ overflow: "hidden",
537
+ clip: "rect(0 0 0 0)",
538
+ whiteSpace: "nowrap",
539
+ borderWidth: 0
540
+ });
541
+ var CompactWrapper = styles.styled("div")(({ theme, $size, $fullWidth, $error, $disabled }) => ({
542
+ display: "inline-flex",
543
+ alignItems: "center",
544
+ width: $fullWidth ? "100%" : "auto",
545
+ height: inputHeightMap[$size],
546
+ fontSize: inputSizeMap[$size].fontSize,
547
+ borderRadius: theme.shape.borderRadius,
548
+ border: "1px solid",
549
+ overflow: "hidden",
550
+ transition: "border-color 150ms ease, box-shadow 150ms ease",
551
+ backgroundColor: $disabled ? theme.palette.action.disabledBackground : theme.palette.background.paper,
552
+ ...$disabled ? { borderColor: theme.palette.action.disabled, pointerEvents: "none" } : {
553
+ borderColor: $error ? theme.palette.error.main : theme.palette.divider,
554
+ "&:hover:not(:focus-within)": {
555
+ borderColor: $error ? theme.palette.error.dark : theme.palette.text.secondary
556
+ },
557
+ "&:focus-within": {
558
+ borderColor: $error ? theme.palette.error.main : theme.palette.primary.main,
559
+ boxShadow: `0 0 0 3px ${styles.alpha(
560
+ $error ? theme.palette.error.main : theme.palette.primary.main,
561
+ 0.2
562
+ )}`
563
+ }
564
+ }
565
+ }));
566
+ var BrowseBtn = styles.styled("button")(
567
+ ({ theme, $size, $error }) => ({
568
+ flexShrink: 0,
569
+ display: "inline-flex",
570
+ alignItems: "center",
571
+ gap: "0.35rem",
572
+ height: "100%",
573
+ padding: inputSizeMap[$size].padding,
574
+ paddingBlock: 0,
575
+ border: "none",
576
+ borderRight: `1px solid ${styles.alpha("#fff", 0.25)}`,
577
+ backgroundColor: $error ? theme.palette.error.main : theme.palette.primary.main,
578
+ color: "#fff",
579
+ fontFamily: theme.typography.fontFamily,
580
+ fontSize: "inherit",
581
+ fontWeight: 600,
582
+ letterSpacing: "0.01em",
583
+ cursor: "pointer",
584
+ transition: "background-color 150ms ease",
585
+ whiteSpace: "nowrap",
586
+ "&:hover:not(:disabled)": {
587
+ backgroundColor: $error ? theme.palette.error.dark : theme.palette.primary.dark
588
+ },
589
+ "&:active:not(:disabled)": { filter: "brightness(0.9)" },
590
+ "&:disabled": {
591
+ backgroundColor: theme.palette.action.disabled,
592
+ cursor: "not-allowed"
593
+ }
594
+ })
595
+ );
596
+ var CompactFileName = styles.styled("span")(({ theme, $hasFile }) => ({
597
+ flex: 1,
598
+ overflow: "hidden",
599
+ textOverflow: "ellipsis",
600
+ whiteSpace: "nowrap",
601
+ padding: "0 0.5rem 0 0.75rem",
602
+ fontFamily: theme.typography.fontFamily,
603
+ fontSize: "inherit",
604
+ color: $hasFile ? theme.palette.text.primary : theme.palette.text.disabled
605
+ }));
606
+ var ClearBtn = styles.styled("button")(({ theme }) => ({
607
+ flexShrink: 0,
608
+ display: "inline-flex",
609
+ alignItems: "center",
610
+ justifyContent: "center",
611
+ width: "1.5rem",
612
+ height: "1.5rem",
613
+ marginRight: "0.25rem",
614
+ border: "none",
615
+ background: "none",
616
+ color: theme.palette.text.secondary,
617
+ borderRadius: "50%",
618
+ cursor: "pointer",
619
+ transition: "color 150ms ease, background-color 150ms ease",
620
+ "&:hover": {
621
+ color: theme.palette.error.main,
622
+ backgroundColor: styles.alpha(theme.palette.error.main, 0.08)
623
+ }
624
+ }));
625
+ var FileChipList = styles.styled("div")({
626
+ display: "flex",
627
+ flexWrap: "wrap",
628
+ gap: "0.3rem",
629
+ marginTop: "0.375rem"
630
+ });
631
+ var FileChip = styles.styled("div")(({ theme }) => ({
632
+ display: "inline-flex",
633
+ alignItems: "center",
634
+ gap: "0.25rem",
635
+ maxWidth: "220px",
636
+ padding: "0.1875rem 0.3125rem 0.1875rem 0.5rem",
637
+ borderRadius: "100px",
638
+ backgroundColor: styles.alpha(theme.palette.primary.main, 0.07),
639
+ border: `1px solid ${styles.alpha(theme.palette.primary.main, 0.18)}`,
640
+ fontFamily: theme.typography.fontFamily,
641
+ fontSize: "0.75rem",
642
+ color: theme.palette.text.primary
643
+ }));
644
+ var FileChipName = styles.styled("span")({
645
+ overflow: "hidden",
646
+ textOverflow: "ellipsis",
647
+ whiteSpace: "nowrap",
648
+ flex: 1
649
+ });
650
+ var FileChipRemove = styles.styled("button")(({ theme }) => ({
651
+ flexShrink: 0,
652
+ display: "inline-flex",
653
+ alignItems: "center",
654
+ justifyContent: "center",
655
+ width: "1rem",
656
+ height: "1rem",
657
+ padding: 0,
658
+ border: "none",
659
+ background: "none",
660
+ borderRadius: "50%",
661
+ color: theme.palette.text.secondary,
662
+ cursor: "pointer",
663
+ transition: "color 150ms ease, background-color 150ms ease",
664
+ "&:hover": {
665
+ color: theme.palette.error.main,
666
+ backgroundColor: styles.alpha(theme.palette.error.main, 0.1)
667
+ }
668
+ }));
669
+ var dropzoneSizes = {
670
+ sm: { minHeight: "100px", padding: "1.125rem", iconSize: 16, circleSize: "2.25rem", fontSize: "0.75rem", subFontSize: "0.6875rem", gap: "0.375rem" },
671
+ md: { minHeight: "140px", padding: "1.5rem", iconSize: 20, circleSize: "2.875rem", fontSize: "0.875rem", subFontSize: "0.75rem", gap: "0.5rem" },
672
+ lg: { minHeight: "180px", padding: "2rem", iconSize: 26, circleSize: "3.5rem", fontSize: "1rem", subFontSize: "0.875rem", gap: "0.625rem" }
673
+ };
674
+ var DropzoneArea = styles.styled("div")(({ theme, $size, $fullWidth, $error, $disabled, $isDragging, $hasFile }) => {
675
+ const ds = dropzoneSizes[$size];
676
+ const mainColor = $error ? theme.palette.error.main : theme.palette.primary.main;
677
+ const mainDark = $error ? theme.palette.error.dark : theme.palette.primary.dark;
678
+ return {
679
+ position: "relative",
680
+ display: $fullWidth ? "flex" : "inline-flex",
681
+ flexDirection: "column",
682
+ alignItems: "center",
683
+ justifyContent: "center",
684
+ textAlign: "center",
685
+ width: $fullWidth ? "100%" : "auto",
686
+ minWidth: $fullWidth ? void 0 : "240px",
687
+ minHeight: ds.minHeight,
688
+ padding: ds.padding,
689
+ gap: ds.gap,
690
+ borderRadius: theme.shape.borderRadius * 2,
691
+ border: "2px dashed",
692
+ transition: "border-color 200ms ease, background-color 200ms ease, box-shadow 200ms ease, transform 200ms ease",
693
+ ...$disabled ? {
694
+ borderColor: theme.palette.action.disabled,
695
+ backgroundColor: theme.palette.action.disabledBackground,
696
+ color: theme.palette.action.disabled
697
+ } : $isDragging ? {
698
+ borderStyle: "solid",
699
+ borderColor: mainColor,
700
+ backgroundColor: styles.alpha(mainColor, 0.06),
701
+ color: mainColor,
702
+ transform: "scale(1.01)",
703
+ boxShadow: `0 0 0 3px ${styles.alpha(mainColor, 0.2)}`
704
+ } : $hasFile ? {
705
+ borderStyle: "solid",
706
+ borderColor: $error ? theme.palette.error.main : theme.palette.primary.main,
707
+ backgroundColor: styles.alpha(mainColor, 0.03),
708
+ color: theme.palette.text.secondary
709
+ } : {
710
+ borderColor: $error ? theme.palette.error.main : theme.palette.divider,
711
+ backgroundColor: theme.palette.background.paper,
712
+ color: theme.palette.text.secondary,
713
+ "&:hover": {
714
+ borderColor: $error ? mainDark : theme.palette.text.secondary,
715
+ backgroundColor: styles.alpha(mainColor, 0.04)
716
+ }
717
+ }
718
+ };
719
+ });
720
+ var DropzoneClickBtn = styles.styled("button")(({ theme, $size }) => {
721
+ const ds = dropzoneSizes[$size];
722
+ return {
723
+ display: "flex",
724
+ flexDirection: "column",
725
+ alignItems: "center",
726
+ justifyContent: "center",
727
+ gap: ds.gap,
728
+ width: "100%",
729
+ padding: 0,
730
+ border: "none",
731
+ background: "none",
732
+ cursor: "pointer",
733
+ color: "inherit",
734
+ fontFamily: theme.typography.fontFamily,
735
+ borderRadius: theme.shape.borderRadius,
736
+ transition: "box-shadow 150ms ease",
737
+ "&:focus-visible": {
738
+ boxShadow: `0 0 0 2px ${theme.palette.primary.main}`,
739
+ outline: "none"
740
+ },
741
+ "&:disabled": { cursor: "not-allowed" }
742
+ };
743
+ });
744
+ var DropzoneIconWrap = styles.styled("span")(({ $isDragging }) => ({
745
+ display: "inline-flex",
746
+ transition: "transform 200ms ease",
747
+ transform: $isDragging ? "translateY(-3px)" : "translateY(0)"
748
+ }));
749
+ var DropzoneText = styles.styled("p")(({ theme, $sub }) => ({
750
+ margin: 0,
751
+ fontFamily: theme.typography.fontFamily,
752
+ fontWeight: $sub ? 400 : 500,
753
+ color: "inherit"
754
+ }));
755
+ var BrowseLink = styles.styled("span")(({ theme }) => ({
756
+ color: theme.palette.primary.dark,
757
+ fontWeight: 700,
758
+ textDecoration: "underline",
759
+ textDecorationThickness: "1px",
760
+ textUnderlineOffset: "2px"
761
+ }));
762
+ var FileIconCircle = styles.styled("div")(({ theme, $size }) => ({
763
+ width: dropzoneSizes[$size].circleSize,
764
+ height: dropzoneSizes[$size].circleSize,
765
+ borderRadius: "50%",
766
+ backgroundColor: styles.alpha(theme.palette.primary.main, 0.1),
767
+ display: "flex",
768
+ alignItems: "center",
769
+ justifyContent: "center",
770
+ color: theme.palette.primary.main,
771
+ flexShrink: 0
772
+ }));
773
+ var FileDisplayName = styles.styled("p")(({ theme, $size }) => ({
774
+ margin: 0,
775
+ fontFamily: theme.typography.fontFamily,
776
+ fontWeight: 600,
777
+ fontSize: dropzoneSizes[$size].fontSize,
778
+ color: theme.palette.text.primary,
779
+ maxWidth: "260px",
780
+ overflow: "hidden",
781
+ textOverflow: "ellipsis",
782
+ whiteSpace: "nowrap"
783
+ }));
784
+ var FileDisplayMeta = styles.styled("p")(({ theme, $size }) => ({
785
+ margin: 0,
786
+ fontFamily: theme.typography.fontFamily,
787
+ fontWeight: 400,
788
+ fontSize: dropzoneSizes[$size].subFontSize,
789
+ color: theme.palette.text.secondary
790
+ }));
791
+ var FileListContainer = styles.styled("div")({
792
+ display: "flex",
793
+ flexDirection: "column",
794
+ gap: "0.3rem",
795
+ width: "100%",
796
+ maxWidth: "340px",
797
+ maxHeight: "160px",
798
+ overflowY: "auto"
799
+ });
800
+ var FileListRow = styles.styled("div")(({ theme }) => ({
801
+ display: "flex",
802
+ alignItems: "center",
803
+ gap: "0.5rem",
804
+ padding: "0.3125rem 0.5rem",
805
+ borderRadius: theme.shape.borderRadius,
806
+ backgroundColor: styles.alpha(theme.palette.primary.main, 0.05),
807
+ border: `1px solid ${styles.alpha(theme.palette.primary.main, 0.14)}`,
808
+ textAlign: "left"
809
+ }));
810
+ var FileListRowIcon = styles.styled("span")(({ theme }) => ({
811
+ flexShrink: 0,
812
+ display: "inline-flex",
813
+ color: theme.palette.primary.main
814
+ }));
815
+ var FileListRowBody = styles.styled("span")({
816
+ flex: 1,
817
+ overflow: "hidden",
818
+ display: "flex",
819
+ flexDirection: "column",
820
+ gap: "0.05rem"
821
+ });
822
+ var FileListRowName = styles.styled("span")(({ theme }) => ({
823
+ fontFamily: theme.typography.fontFamily,
824
+ fontSize: "0.8125rem",
825
+ fontWeight: 500,
826
+ color: theme.palette.text.primary,
827
+ overflow: "hidden",
828
+ textOverflow: "ellipsis",
829
+ whiteSpace: "nowrap"
830
+ }));
831
+ var FileListRowSize = styles.styled("span")(({ theme }) => ({
832
+ fontFamily: theme.typography.fontFamily,
833
+ fontSize: "0.6875rem",
834
+ color: theme.palette.text.secondary
835
+ }));
836
+ var FileListRowRemove = styles.styled("button")(({ theme }) => ({
837
+ flexShrink: 0,
838
+ display: "inline-flex",
839
+ alignItems: "center",
840
+ justifyContent: "center",
841
+ width: "1.25rem",
842
+ height: "1.25rem",
843
+ border: "none",
844
+ background: "none",
845
+ borderRadius: "50%",
846
+ color: theme.palette.text.secondary,
847
+ cursor: "pointer",
848
+ transition: "color 150ms ease, background-color 150ms ease",
849
+ "&:hover": {
850
+ color: theme.palette.error.main,
851
+ backgroundColor: styles.alpha(theme.palette.error.main, 0.1)
852
+ }
853
+ }));
854
+ var FileActionsRow = styles.styled("div")({
855
+ display: "flex",
856
+ alignItems: "center",
857
+ gap: "0.5rem",
858
+ marginTop: "0.25rem"
859
+ });
860
+ var FileActionBtn = styles.styled("button")(
861
+ ({ theme, $variant }) => {
862
+ const isRemove = $variant === "remove";
863
+ return {
864
+ display: "inline-flex",
865
+ alignItems: "center",
866
+ gap: "0.3rem",
867
+ padding: "0.25rem 0.75rem",
868
+ border: "1px solid",
869
+ borderColor: isRemove ? theme.palette.error.main : theme.palette.divider,
870
+ borderRadius: "100px",
871
+ background: "none",
872
+ fontFamily: theme.typography.fontFamily,
873
+ fontSize: "0.75rem",
874
+ fontWeight: 500,
875
+ color: isRemove ? theme.palette.error.main : theme.palette.text.secondary,
876
+ cursor: "pointer",
877
+ transition: "background-color 150ms ease, border-color 150ms ease, color 150ms ease",
878
+ whiteSpace: "nowrap",
879
+ "&:hover": isRemove ? {
880
+ backgroundColor: styles.alpha(theme.palette.error.main, 0.06),
881
+ borderColor: theme.palette.error.dark,
882
+ color: theme.palette.error.dark
883
+ } : {
884
+ backgroundColor: theme.palette.action.hover,
885
+ borderColor: theme.palette.text.secondary,
886
+ color: theme.palette.text.primary
887
+ },
888
+ "&:active": { filter: "brightness(0.93)" },
889
+ "&:disabled": { opacity: 0.5, cursor: "not-allowed" }
890
+ };
891
+ }
892
+ );
893
+ var FileInput = react$1.forwardRef(
894
+ ({
895
+ label,
896
+ helperText,
897
+ error = false,
898
+ size = "md",
899
+ fullWidth = false,
900
+ disabled = false,
901
+ variant = "compact",
902
+ browseLabel = "Przegl\u0105daj",
903
+ noFileLabel = "Nie wybrano pliku",
904
+ dropzoneLabel,
905
+ dropzoneSublabel,
906
+ dropToUploadLabel = "Upu\u015B\u0107, by wgra\u0107",
907
+ filesSelectedLabel = (n) => `Wybrano ${n} pliki/plik\xF3w`,
908
+ removeLabel = "Usu\u0144",
909
+ removeAllLabel = "Usu\u0144 wszystkie",
910
+ changeLabel = "Zmie\u0144",
911
+ clearAriaLabel = "Wyczy\u015B\u0107 wyb\xF3r pliku",
912
+ removeFileAriaLabel = (name) => `Usu\u0144 ${name}`,
913
+ removeAllAriaLabel = "Usu\u0144 wszystkie pliki",
914
+ changeAriaLabel = "Zmie\u0144 plik",
915
+ chooseFileAriaLabel = "Wybierz plik",
916
+ id,
917
+ multiple,
918
+ onChange,
919
+ ...rest
920
+ }, ref) => {
921
+ const autoId = react$1.useId();
922
+ const inputId = id ?? autoId;
923
+ const innerRef = react$1.useRef(null);
924
+ const [files, setFiles] = react$1.useState([]);
925
+ const [isDragging, setIsDragging] = react$1.useState(false);
926
+ const assignRef = (node) => {
927
+ innerRef.current = node;
928
+ if (typeof ref === "function") ref(node);
929
+ else if (ref) ref.current = node;
930
+ };
931
+ const openPicker = () => {
932
+ if (!disabled) innerRef.current?.click();
933
+ };
934
+ const handleChange = (e) => {
935
+ const list = e.target.files;
936
+ setFiles(list && list.length > 0 ? Array.from(list) : []);
937
+ onChange?.(e);
938
+ };
939
+ const handleClear = (e) => {
940
+ e.stopPropagation();
941
+ setFiles([]);
942
+ if (innerRef.current) innerRef.current.value = "";
943
+ };
944
+ const handleRemoveFile = (index) => (e) => {
945
+ e.stopPropagation();
946
+ setFiles((prev) => {
947
+ const next = prev.filter((_, i) => i !== index);
948
+ if (innerRef.current && next.length === 0) innerRef.current.value = "";
949
+ return next;
950
+ });
951
+ };
952
+ const handleDragOver = (e) => {
953
+ e.preventDefault();
954
+ if (!disabled) setIsDragging(true);
955
+ };
956
+ const handleDragLeave = (e) => {
957
+ e.preventDefault();
958
+ setIsDragging(false);
959
+ };
960
+ const handleDrop = (e) => {
961
+ e.preventDefault();
962
+ setIsDragging(false);
963
+ if (disabled || !innerRef.current) return;
964
+ const dropped = Array.from(e.dataTransfer.files);
965
+ const picked = multiple ? dropped : [dropped[0]].filter(Boolean);
966
+ if (picked.length === 0) return;
967
+ setFiles(picked);
968
+ try {
969
+ const dt = new DataTransfer();
970
+ picked.forEach((f) => dt.items.add(f));
971
+ innerRef.current.files = dt.files;
972
+ } catch {
973
+ }
974
+ };
975
+ const hasFiles = files.length > 0;
976
+ const isMultiFile = files.length > 1;
977
+ const ds = dropzoneSizes[size];
978
+ const compactLabel = hasFiles ? files.length === 1 ? files[0].name : filesSelectedLabel(files.length) : noFileLabel;
979
+ const hiddenInput = /* @__PURE__ */ jsxRuntime.jsx(
980
+ HiddenInput2,
981
+ {
982
+ ref: assignRef,
983
+ id: inputId,
984
+ type: "file",
985
+ disabled,
986
+ multiple,
987
+ onChange: handleChange,
988
+ ...rest
989
+ }
990
+ );
991
+ if (variant === "dropzone") {
992
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root3, { $fullWidth: fullWidth, children: [
993
+ label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
994
+ /* @__PURE__ */ jsxRuntime.jsxs(
995
+ DropzoneArea,
996
+ {
997
+ $size: size,
998
+ $fullWidth: fullWidth,
999
+ $error: error,
1000
+ $disabled: disabled,
1001
+ $isDragging: isDragging,
1002
+ $hasFile: hasFiles,
1003
+ onDragOver: handleDragOver,
1004
+ onDragLeave: handleDragLeave,
1005
+ onDrop: handleDrop,
1006
+ children: [
1007
+ hiddenInput,
1008
+ hasFiles ? isMultiFile ? (
1009
+ // ── multiple files: scrollable list ──
1010
+ /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1011
+ /* @__PURE__ */ jsxRuntime.jsx(FileListContainer, { children: files.map((file, i) => /* @__PURE__ */ jsxRuntime.jsxs(FileListRow, { children: [
1012
+ /* @__PURE__ */ jsxRuntime.jsx(FileListRowIcon, { children: /* @__PURE__ */ jsxRuntime.jsx(FileDocIcon, { size: 14 }) }),
1013
+ /* @__PURE__ */ jsxRuntime.jsxs(FileListRowBody, { children: [
1014
+ /* @__PURE__ */ jsxRuntime.jsx(FileListRowName, { title: file.name, children: file.name }),
1015
+ /* @__PURE__ */ jsxRuntime.jsx(FileListRowSize, { children: formatSize(file.size) })
1016
+ ] }),
1017
+ /* @__PURE__ */ jsxRuntime.jsx(
1018
+ FileListRowRemove,
1019
+ {
1020
+ type: "button",
1021
+ onClick: handleRemoveFile(i),
1022
+ "aria-label": removeFileAriaLabel(file.name),
1023
+ children: /* @__PURE__ */ jsxRuntime.jsx(XIcon, {})
1024
+ }
1025
+ )
1026
+ ] }, `${file.name}-${i}`)) }),
1027
+ /* @__PURE__ */ jsxRuntime.jsxs(FileActionsRow, { children: [
1028
+ /* @__PURE__ */ jsxRuntime.jsxs(
1029
+ FileActionBtn,
1030
+ {
1031
+ type: "button",
1032
+ $variant: "remove",
1033
+ onClick: handleClear,
1034
+ "aria-label": removeAllAriaLabel,
1035
+ children: [
1036
+ /* @__PURE__ */ jsxRuntime.jsx(TrashIcon, {}),
1037
+ removeAllLabel
1038
+ ]
1039
+ }
1040
+ ),
1041
+ /* @__PURE__ */ jsxRuntime.jsxs(
1042
+ FileActionBtn,
1043
+ {
1044
+ type: "button",
1045
+ $variant: "replace",
1046
+ onClick: openPicker,
1047
+ disabled,
1048
+ "aria-label": changeAriaLabel,
1049
+ children: [
1050
+ /* @__PURE__ */ jsxRuntime.jsx(UploadArrowIcon, { size: 11 }),
1051
+ changeLabel
1052
+ ]
1053
+ }
1054
+ )
1055
+ ] })
1056
+ ] })
1057
+ ) : (
1058
+ // ── single file: icon card ──
1059
+ /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1060
+ /* @__PURE__ */ jsxRuntime.jsx(FileIconCircle, { $size: size, children: /* @__PURE__ */ jsxRuntime.jsx(FileDocIcon, { size: dropzoneSizes[size].iconSize }) }),
1061
+ /* @__PURE__ */ jsxRuntime.jsx(FileDisplayName, { $size: size, title: files[0].name, children: files[0].name }),
1062
+ /* @__PURE__ */ jsxRuntime.jsx(FileDisplayMeta, { $size: size, children: formatSize(files[0].size) }),
1063
+ /* @__PURE__ */ jsxRuntime.jsxs(FileActionsRow, { children: [
1064
+ /* @__PURE__ */ jsxRuntime.jsxs(
1065
+ FileActionBtn,
1066
+ {
1067
+ type: "button",
1068
+ $variant: "remove",
1069
+ onClick: handleClear,
1070
+ "aria-label": removeLabel,
1071
+ children: [
1072
+ /* @__PURE__ */ jsxRuntime.jsx(TrashIcon, {}),
1073
+ removeLabel
1074
+ ]
1075
+ }
1076
+ ),
1077
+ /* @__PURE__ */ jsxRuntime.jsxs(
1078
+ FileActionBtn,
1079
+ {
1080
+ type: "button",
1081
+ $variant: "replace",
1082
+ onClick: openPicker,
1083
+ disabled,
1084
+ "aria-label": changeAriaLabel,
1085
+ children: [
1086
+ /* @__PURE__ */ jsxRuntime.jsx(UploadArrowIcon, { size: 11 }),
1087
+ changeLabel
1088
+ ]
1089
+ }
1090
+ )
1091
+ ] })
1092
+ ] })
1093
+ ) : (
1094
+ // ── empty: click-to-browse ──
1095
+ /* @__PURE__ */ jsxRuntime.jsxs(
1096
+ DropzoneClickBtn,
1097
+ {
1098
+ type: "button",
1099
+ $size: size,
1100
+ disabled,
1101
+ onClick: openPicker,
1102
+ "aria-label": label ? void 0 : chooseFileAriaLabel,
1103
+ children: [
1104
+ /* @__PURE__ */ jsxRuntime.jsx(DropzoneIconWrap, { $isDragging: isDragging, children: /* @__PURE__ */ jsxRuntime.jsx(CloudUploadIcon, { size: ds.iconSize + 8 }) }),
1105
+ /* @__PURE__ */ jsxRuntime.jsx(DropzoneText, { style: { fontSize: ds.fontSize }, children: isDragging ? dropToUploadLabel : dropzoneLabel ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1106
+ "Upu\u015B\u0107 pliki lub ",
1107
+ /* @__PURE__ */ jsxRuntime.jsx(BrowseLink, { children: "przegl\u0105daj" })
1108
+ ] }) }),
1109
+ dropzoneSublabel && /* @__PURE__ */ jsxRuntime.jsx(DropzoneText, { $sub: true, style: { fontSize: ds.subFontSize }, children: dropzoneSublabel })
1110
+ ]
1111
+ }
1112
+ )
1113
+ )
1114
+ ]
1115
+ }
1116
+ ),
1117
+ helperText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error, children: helperText })
1118
+ ] });
1119
+ }
1120
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root3, { $fullWidth: fullWidth, children: [
1121
+ label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
1122
+ /* @__PURE__ */ jsxRuntime.jsxs(
1123
+ CompactWrapper,
1124
+ {
1125
+ $size: size,
1126
+ $fullWidth: fullWidth,
1127
+ $error: error,
1128
+ $disabled: disabled,
1129
+ "data-disabled": disabled || void 0,
1130
+ onDragOver: handleDragOver,
1131
+ onDragLeave: handleDragLeave,
1132
+ onDrop: handleDrop,
1133
+ children: [
1134
+ hiddenInput,
1135
+ /* @__PURE__ */ jsxRuntime.jsxs(
1136
+ BrowseBtn,
1137
+ {
1138
+ type: "button",
1139
+ $size: size,
1140
+ $error: error,
1141
+ disabled,
1142
+ onClick: openPicker,
1143
+ children: [
1144
+ /* @__PURE__ */ jsxRuntime.jsx(UploadArrowIcon, {}),
1145
+ browseLabel
1146
+ ]
1147
+ }
1148
+ ),
1149
+ /* @__PURE__ */ jsxRuntime.jsx(CompactFileName, { $hasFile: hasFiles, children: compactLabel }),
1150
+ hasFiles && /* @__PURE__ */ jsxRuntime.jsx(
1151
+ ClearBtn,
1152
+ {
1153
+ type: "button",
1154
+ onClick: handleClear,
1155
+ "aria-label": clearAriaLabel,
1156
+ tabIndex: -1,
1157
+ children: /* @__PURE__ */ jsxRuntime.jsx(XIcon, {})
1158
+ }
1159
+ )
1160
+ ]
1161
+ }
1162
+ ),
1163
+ hasFiles && isMultiFile && /* @__PURE__ */ jsxRuntime.jsx(FileChipList, { children: files.map((file, i) => /* @__PURE__ */ jsxRuntime.jsxs(FileChip, { children: [
1164
+ /* @__PURE__ */ jsxRuntime.jsx(FileChipName, { title: file.name, children: file.name }),
1165
+ /* @__PURE__ */ jsxRuntime.jsx(
1166
+ FileChipRemove,
1167
+ {
1168
+ type: "button",
1169
+ onClick: handleRemoveFile(i),
1170
+ "aria-label": removeFileAriaLabel(file.name),
1171
+ children: /* @__PURE__ */ jsxRuntime.jsx(XIcon, {})
1172
+ }
1173
+ )
1174
+ ] }, `${file.name}-${i}`)) }),
1175
+ helperText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error, children: helperText })
1176
+ ] });
1177
+ }
1178
+ );
1179
+ FileInput.displayName = "FileInput";
1180
+ var LOCAL_CHAR = /^[a-zA-Z0-9._+-]$/;
1181
+ var DOMAIN_CHAR = /^[a-zA-Z0-9.-]$/;
1182
+ var filterEmailString = (value) => {
1183
+ const atIdx = value.indexOf("@");
1184
+ if (atIdx === -1) {
1185
+ return value.replace(/[^a-zA-Z0-9._+-]/g, "");
1186
+ }
1187
+ const local = value.slice(0, atIdx).replace(/[^a-zA-Z0-9._+-]/g, "");
1188
+ const domain = value.slice(atIdx + 1).replace(/@/g, "").replace(/[^a-zA-Z0-9.-]/g, "");
1189
+ return `${local}@${domain}`;
1190
+ };
1191
+ var EmailInput = react$1.forwardRef(
1192
+ ({ onKeyDown, onPaste, ...props }, ref) => {
1193
+ const handleKeyDown = (e) => {
1194
+ onKeyDown?.(e);
1195
+ if (e.defaultPrevented) return;
1196
+ if (e.ctrlKey || e.metaKey || e.altKey || e.key.length > 1) return;
1197
+ const input = e.currentTarget;
1198
+ const { value } = input;
1199
+ const atIdx = value.indexOf("@");
1200
+ const hasAt = atIdx !== -1;
1201
+ const cursor = input.selectionStart ?? value.length;
1202
+ if (e.key === "@") {
1203
+ if (hasAt) e.preventDefault();
1204
+ return;
1205
+ }
1206
+ const inDomain = hasAt && cursor > atIdx;
1207
+ if (!(inDomain ? DOMAIN_CHAR : LOCAL_CHAR).test(e.key)) {
1208
+ e.preventDefault();
1209
+ }
1210
+ };
1211
+ const handlePaste = (e) => {
1212
+ onPaste?.(e);
1213
+ if (e.defaultPrevented) return;
1214
+ e.preventDefault();
1215
+ const input = e.currentTarget;
1216
+ const pasted = e.clipboardData.getData("text");
1217
+ const start = input.selectionStart ?? 0;
1218
+ const end = input.selectionEnd ?? 0;
1219
+ const merged = input.value.slice(0, start) + pasted + input.value.slice(end);
1220
+ const filtered = filterEmailString(merged);
1221
+ const setter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value")?.set;
1222
+ setter?.call(input, filtered);
1223
+ input.dispatchEvent(new Event("input", { bubbles: true }));
1224
+ };
1225
+ return /* @__PURE__ */ jsxRuntime.jsx(
1226
+ BaseInput,
1227
+ {
1228
+ ref,
1229
+ type: "email",
1230
+ onKeyDown: handleKeyDown,
1231
+ onPaste: handlePaste,
1232
+ ...props
1233
+ }
1234
+ );
1235
+ }
1236
+ );
1237
+ EmailInput.displayName = "EmailInput";
1238
+ var triggerColors = (theme, error, open) => ({
1239
+ borderColor: open ? error ? theme.palette.error.main : theme.palette.primary.main : error ? theme.palette.error.main : theme.palette.divider,
1240
+ boxShadow: open ? `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33` : "none",
1241
+ "&:hover:not(:disabled)": {
1242
+ borderColor: error ? theme.palette.error.dark : theme.palette.text.secondary
1243
+ }
1244
+ });
1245
+ var Root4 = styles.styled("div")(({ $fullWidth }) => ({
1246
+ display: $fullWidth ? "block" : "inline-block",
1247
+ width: $fullWidth ? "100%" : "auto",
1248
+ position: "relative"
1249
+ }));
1250
+ var Trigger = styles.styled("button")(
1251
+ ({ theme, $size, $fullWidth, $error, $open }) => ({
1252
+ display: "inline-flex",
1253
+ alignItems: "center",
1254
+ width: $fullWidth ? "100%" : "auto",
1255
+ borderRadius: theme.shape.borderRadius,
1256
+ border: "1px solid",
1257
+ backgroundColor: theme.palette.background.paper,
1258
+ fontFamily: theme.typography.fontFamily,
1259
+ color: theme.palette.text.primary,
1260
+ cursor: "pointer",
1261
+ transition: "border-color 150ms ease, box-shadow 150ms ease",
1262
+ outline: "none",
1263
+ textAlign: "left",
1264
+ ...inputSizeMap[$size],
1265
+ height: inputHeightMap[$size],
1266
+ paddingBlock: 0,
1267
+ ...triggerColors(theme, $error, $open),
1268
+ "&:disabled": {
1269
+ backgroundColor: theme.palette.action.disabledBackground,
1270
+ borderColor: theme.palette.action.disabled,
1271
+ color: theme.palette.action.disabled,
1272
+ cursor: "not-allowed",
1273
+ pointerEvents: "none"
1274
+ }
1275
+ })
1276
+ );
1277
+ var TriggerContent = styles.styled("span")({
1278
+ flex: 1,
1279
+ overflow: "hidden",
1280
+ textOverflow: "ellipsis",
1281
+ whiteSpace: "nowrap"
1282
+ });
1283
+ var ChevronWrapper = styles.styled("span")(({ $open }) => ({
1284
+ display: "inline-flex",
1285
+ alignItems: "center",
1286
+ flexShrink: 0,
1287
+ marginLeft: "0.5rem",
1288
+ transition: "transform 150ms ease",
1289
+ transform: $open ? "rotate(180deg)" : "rotate(0deg)"
1290
+ }));
1291
+ var DropdownPanel2 = styles.styled(DropdownPanel)({
1292
+ right: 0,
1293
+ maxHeight: "240px",
1294
+ overflowY: "auto"
1295
+ });
1296
+ var OptionItem = styles.styled("div")(
1297
+ ({ theme, $disabled, $size }) => ({
1298
+ padding: "0.5rem 0.75rem",
1299
+ cursor: $disabled ? "not-allowed" : "pointer",
1300
+ fontSize: inputSizeMap[$size].fontSize,
1301
+ fontFamily: theme.typography.fontFamily,
1302
+ color: $disabled ? theme.palette.action.disabled : theme.palette.text.primary,
1303
+ ...!$disabled && {
1304
+ "&:hover": {
1305
+ backgroundColor: theme.palette.action.hover
1306
+ }
1307
+ }
1308
+ })
1309
+ );
1310
+ var DEFAULT_PLACEHOLDER = "Wybierz\u2026";
1311
+ var BaseSelectInput = ({
1312
+ options,
1313
+ value,
1314
+ placeholder = DEFAULT_PLACEHOLDER,
1315
+ onSelect,
1316
+ renderTrigger: renderTrigger2,
1317
+ renderOption: renderOption3,
1318
+ isSelected,
1319
+ open: controlledOpen,
1320
+ onOpenChange,
1321
+ label,
1322
+ helperText,
1323
+ error = false,
1324
+ size = "md",
1325
+ fullWidth = false,
1326
+ disabled = false,
1327
+ id
1328
+ }) => {
1329
+ const checkSelected = isSelected ?? ((option) => option.value === value);
1330
+ const autoId = react$1.useId();
1331
+ const inputId = id ?? autoId;
1332
+ const listboxId = `${inputId}-listbox`;
1333
+ const [internalOpen, setInternalOpen] = react$1.useState(false);
1334
+ const isOpen = controlledOpen ?? internalOpen;
1335
+ const rootRef = react$1.useRef(null);
1336
+ const close = react$1.useCallback(() => {
1337
+ setInternalOpen(false);
1338
+ onOpenChange?.(false);
1339
+ }, [onOpenChange]);
1340
+ const toggle = () => {
1341
+ const next = !isOpen;
1342
+ setInternalOpen(next);
1343
+ onOpenChange?.(next);
1344
+ };
1345
+ const handleSelect = (option) => {
1346
+ if (!option.disabled) {
1347
+ onSelect?.(option, close);
1348
+ }
1349
+ };
1350
+ react$1.useEffect(() => {
1351
+ if (!isOpen) return;
1352
+ const handleMouseDown = (e) => {
1353
+ if (rootRef.current && !rootRef.current.contains(e.target)) {
1354
+ close();
1355
+ }
1356
+ };
1357
+ document.addEventListener("mousedown", handleMouseDown);
1358
+ return () => document.removeEventListener("mousedown", handleMouseDown);
1359
+ }, [isOpen, close]);
1360
+ const selectedLabel = options.find((o) => o.value === value)?.label;
1361
+ const defaultTriggerContent = /* @__PURE__ */ jsxRuntime.jsx("span", { style: { opacity: selectedLabel ? 1 : 0.5 }, children: selectedLabel ?? placeholder });
1362
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root4, { $fullWidth: fullWidth, ref: rootRef, children: [
1363
+ label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
1364
+ /* @__PURE__ */ jsxRuntime.jsxs(
1365
+ Trigger,
1366
+ {
1367
+ type: "button",
1368
+ id: inputId,
1369
+ disabled,
1370
+ "aria-haspopup": "listbox",
1371
+ "aria-expanded": isOpen,
1372
+ "aria-controls": isOpen ? listboxId : void 0,
1373
+ onClick: toggle,
1374
+ onKeyDown: (e) => e.key === "Escape" && close(),
1375
+ $size: size,
1376
+ $fullWidth: fullWidth,
1377
+ $error: error,
1378
+ $open: isOpen,
1379
+ children: [
1380
+ /* @__PURE__ */ jsxRuntime.jsx(TriggerContent, { children: renderTrigger2 ? renderTrigger2() : defaultTriggerContent }),
1381
+ /* @__PURE__ */ jsxRuntime.jsx(ChevronWrapper, { $open: isOpen, children: /* @__PURE__ */ jsxRuntime.jsx(Chevron, {}) })
1382
+ ]
1383
+ }
1384
+ ),
1385
+ isOpen && /* @__PURE__ */ jsxRuntime.jsx(DropdownPanel2, { id: listboxId, role: "listbox", children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
1386
+ OptionItem,
1387
+ {
1388
+ role: "option",
1389
+ "aria-selected": checkSelected(option),
1390
+ "aria-disabled": option.disabled,
1391
+ $disabled: !!option.disabled,
1392
+ $size: size,
1393
+ onClick: () => handleSelect(option),
1394
+ onKeyDown: (e) => e.key === "Enter" && handleSelect(option),
1395
+ tabIndex: option.disabled ? -1 : 0,
1396
+ children: renderOption3 ? renderOption3(option) : option.label
1397
+ },
1398
+ option.value
1399
+ )) }),
1400
+ helperText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error, children: helperText })
1401
+ ] });
1402
+ };
1403
+ BaseSelectInput.displayName = "BaseSelectInput";
1404
+ var NumberInput = react$1.forwardRef(
1405
+ (props, ref) => /* @__PURE__ */ jsxRuntime.jsx(BaseInput, { ref, type: "number", ...props })
1406
+ );
1407
+ NumberInput.displayName = "NumberInput";
1408
+ var ChipList = styles.styled("span")({
1409
+ display: "flex",
1410
+ flexWrap: "wrap",
1411
+ gap: "0.25rem",
1412
+ overflow: "hidden"
1413
+ });
1414
+ var Chip = styles.styled("span")(({ theme }) => ({
1415
+ display: "inline-flex",
1416
+ alignItems: "center",
1417
+ padding: "0.125rem 0.375rem",
1418
+ borderRadius: "0.25rem",
1419
+ backgroundColor: theme.palette.primary.main + "22",
1420
+ color: theme.palette.primary.main,
1421
+ fontSize: "0.75em",
1422
+ fontWeight: 500,
1423
+ lineHeight: 1.5,
1424
+ whiteSpace: "nowrap",
1425
+ flexShrink: 0
1426
+ }));
1427
+ var OptionRow = styles.styled("span")({
1428
+ display: "flex",
1429
+ alignItems: "center",
1430
+ gap: "0.5rem"
1431
+ });
1432
+ var CheckboxBox = styles.styled("span")(({ theme, $checked }) => ({
1433
+ display: "inline-flex",
1434
+ alignItems: "center",
1435
+ justifyContent: "center",
1436
+ width: "1rem",
1437
+ height: "1rem",
1438
+ border: `2px solid ${$checked ? theme.palette.primary.main : theme.palette.divider}`,
1439
+ borderRadius: "2px",
1440
+ backgroundColor: $checked ? theme.palette.primary.main : "transparent",
1441
+ color: theme.palette.primary.contrastText,
1442
+ flexShrink: 0,
1443
+ transition: "background-color 150ms ease, border-color 150ms ease"
1444
+ }));
1445
+ var CheckmarkIcon = () => /* @__PURE__ */ jsxRuntime.jsx(
1446
+ "svg",
1447
+ {
1448
+ viewBox: "0 0 24 24",
1449
+ width: "0.65rem",
1450
+ height: "0.65rem",
1451
+ fill: "none",
1452
+ stroke: "currentColor",
1453
+ strokeWidth: 3,
1454
+ strokeLinecap: "round",
1455
+ strokeLinejoin: "round",
1456
+ "aria-hidden": true,
1457
+ children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" })
1458
+ }
1459
+ );
1460
+ var renderTrigger = (value, options, placeholder) => {
1461
+ const MultiSelectTrigger = () => {
1462
+ if (value.length === 0) {
1463
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { opacity: 0.5 }, children: placeholder });
1464
+ }
1465
+ return /* @__PURE__ */ jsxRuntime.jsx(ChipList, { children: value.map((v) => {
1466
+ const label = options.find((o) => o.value === v)?.label ?? v;
1467
+ return /* @__PURE__ */ jsxRuntime.jsx(Chip, { children: label }, v);
1468
+ }) });
1469
+ };
1470
+ MultiSelectTrigger.displayName = "MultiSelectTrigger";
1471
+ return MultiSelectTrigger;
1472
+ };
1473
+ var renderOption = (value) => {
1474
+ const MultiSelectOption = (option) => /* @__PURE__ */ jsxRuntime.jsxs(OptionRow, { children: [
1475
+ /* @__PURE__ */ jsxRuntime.jsx(CheckboxBox, { $checked: value.includes(option.value), children: value.includes(option.value) && /* @__PURE__ */ jsxRuntime.jsx(CheckmarkIcon, {}) }),
1476
+ option.label
1477
+ ] });
1478
+ MultiSelectOption.displayName = "MultiSelectOption";
1479
+ return MultiSelectOption;
1480
+ };
1481
+ var MultiSelectInput = ({
1482
+ value = [],
1483
+ onChange,
1484
+ options,
1485
+ placeholder = "Wybierz\u2026",
1486
+ ...rest
1487
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
1488
+ BaseSelectInput,
1489
+ {
1490
+ options,
1491
+ placeholder,
1492
+ onSelect: (option) => {
1493
+ const next = value.includes(option.value) ? value.filter((v) => v !== option.value) : [...value, option.value];
1494
+ onChange?.(next);
1495
+ },
1496
+ isSelected: (option) => value.includes(option.value),
1497
+ renderTrigger: renderTrigger(value, options, placeholder),
1498
+ renderOption: renderOption(value),
1499
+ ...rest
1500
+ }
1501
+ );
1502
+ MultiSelectInput.displayName = "MultiSelectInput";
1503
+ var ToggleButton = styles.styled("button")(({ theme }) => ({
1504
+ background: "none",
1505
+ border: "none",
1506
+ padding: 0,
1507
+ cursor: "pointer",
1508
+ color: theme.palette.text.secondary,
1509
+ display: "inline-flex",
1510
+ alignItems: "center",
1511
+ flexShrink: 0,
1512
+ "&:hover": {
1513
+ color: theme.palette.text.primary
1514
+ },
1515
+ "&:disabled": {
1516
+ color: theme.palette.action.disabled,
1517
+ cursor: "not-allowed"
1518
+ }
1519
+ }));
1520
+ var EyeIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
1521
+ "svg",
1522
+ {
1523
+ viewBox: "0 0 24 24",
1524
+ width: "1em",
1525
+ height: "1em",
1526
+ fill: "none",
1527
+ stroke: "currentColor",
1528
+ strokeWidth: 2,
1529
+ strokeLinecap: "round",
1530
+ strokeLinejoin: "round",
1531
+ "aria-hidden": true,
1532
+ children: [
1533
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }),
1534
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "3" })
1535
+ ]
1536
+ }
1537
+ );
1538
+ var EyeOffIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
1539
+ "svg",
1540
+ {
1541
+ viewBox: "0 0 24 24",
1542
+ width: "1em",
1543
+ height: "1em",
1544
+ fill: "none",
1545
+ stroke: "currentColor",
1546
+ strokeWidth: 2,
1547
+ strokeLinecap: "round",
1548
+ strokeLinejoin: "round",
1549
+ "aria-hidden": true,
1550
+ children: [
1551
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24" }),
1552
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "1", y1: "1", x2: "23", y2: "23" })
1553
+ ]
1554
+ }
1555
+ );
1556
+ var PasswordInput = react$1.forwardRef(
1557
+ ({
1558
+ disabled,
1559
+ showPasswordLabel = "Poka\u017C has\u0142o",
1560
+ hidePasswordLabel = "Ukryj has\u0142o",
1561
+ ...props
1562
+ }, ref) => {
1563
+ const [show, setShow] = react$1.useState(false);
1564
+ return /* @__PURE__ */ jsxRuntime.jsx(
1565
+ BaseInput,
1566
+ {
1567
+ ref,
1568
+ type: show ? "text" : "password",
1569
+ disabled,
1570
+ endAdornment: /* @__PURE__ */ jsxRuntime.jsx(
1571
+ ToggleButton,
1572
+ {
1573
+ type: "button",
1574
+ "aria-label": show ? hidePasswordLabel : showPasswordLabel,
1575
+ onClick: () => setShow((s) => !s),
1576
+ disabled,
1577
+ tabIndex: -1,
1578
+ children: show ? /* @__PURE__ */ jsxRuntime.jsx(EyeOffIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(EyeIcon, {})
1579
+ }
1580
+ ),
1581
+ ...props
1582
+ }
1583
+ );
1584
+ }
1585
+ );
1586
+ PasswordInput.displayName = "PasswordInput";
1587
+ var ClearButton = styles.styled("button")(({ theme }) => ({
1588
+ background: "none",
1589
+ border: "none",
1590
+ padding: 0,
1591
+ cursor: "pointer",
1592
+ color: theme.palette.text.secondary,
1593
+ display: "inline-flex",
1594
+ alignItems: "center",
1595
+ flexShrink: 0,
1596
+ borderRadius: "50%",
1597
+ "&:hover": {
1598
+ color: theme.palette.text.primary
1599
+ }
1600
+ }));
1601
+ var SearchIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
1602
+ "svg",
1603
+ {
1604
+ viewBox: "0 0 24 24",
1605
+ width: "1em",
1606
+ height: "1em",
1607
+ fill: "none",
1608
+ stroke: "currentColor",
1609
+ strokeWidth: 2,
1610
+ strokeLinecap: "round",
1611
+ strokeLinejoin: "round",
1612
+ "aria-hidden": true,
1613
+ children: [
1614
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "11", cy: "11", r: "8" }),
1615
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "21", y1: "21", x2: "16.65", y2: "16.65" })
1616
+ ]
1617
+ }
1618
+ );
1619
+ var XIcon2 = () => /* @__PURE__ */ jsxRuntime.jsxs(
1620
+ "svg",
1621
+ {
1622
+ viewBox: "0 0 24 24",
1623
+ width: "1em",
1624
+ height: "1em",
1625
+ fill: "none",
1626
+ stroke: "currentColor",
1627
+ strokeWidth: 2,
1628
+ strokeLinecap: "round",
1629
+ strokeLinejoin: "round",
1630
+ "aria-hidden": true,
1631
+ children: [
1632
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
1633
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
1634
+ ]
1635
+ }
1636
+ );
1637
+ var SearchInput = react$1.forwardRef(
1638
+ ({ value, onChange, onClear, clearAriaLabel = "Wyczy\u015B\u0107", ...props }, forwardedRef) => {
1639
+ const innerRef = react$1.useRef(null);
1640
+ const attachRef = react$1.useCallback(
1641
+ (el) => {
1642
+ innerRef.current = el;
1643
+ if (typeof forwardedRef === "function") forwardedRef(el);
1644
+ else if (forwardedRef)
1645
+ forwardedRef.current = el;
1646
+ },
1647
+ [forwardedRef]
1648
+ );
1649
+ const isControlled = value !== void 0;
1650
+ const [localValue, setLocalValue] = react$1.useState("");
1651
+ const hasValue = isControlled ? !!value : !!localValue;
1652
+ const handleChange = (e) => {
1653
+ if (!isControlled) setLocalValue(e.target.value);
1654
+ onChange?.(e);
1655
+ };
1656
+ const handleClear = () => {
1657
+ if (!isControlled) {
1658
+ setLocalValue("");
1659
+ if (innerRef.current) {
1660
+ const setter = Object.getOwnPropertyDescriptor(
1661
+ window.HTMLInputElement.prototype,
1662
+ "value"
1663
+ )?.set;
1664
+ setter?.call(innerRef.current, "");
1665
+ innerRef.current.dispatchEvent(new Event("input", { bubbles: true }));
1666
+ }
1667
+ }
1668
+ onClear?.();
1669
+ innerRef.current?.focus();
1670
+ };
1671
+ return /* @__PURE__ */ jsxRuntime.jsx(
1672
+ BaseInput,
1673
+ {
1674
+ ref: attachRef,
1675
+ type: "search",
1676
+ value,
1677
+ onChange: handleChange,
1678
+ startAdornment: /* @__PURE__ */ jsxRuntime.jsx(SearchIcon, {}),
1679
+ endAdornment: hasValue ? /* @__PURE__ */ jsxRuntime.jsx(ClearButton, { type: "button", "aria-label": clearAriaLabel, onClick: handleClear, children: /* @__PURE__ */ jsxRuntime.jsx(XIcon2, {}) }) : void 0,
1680
+ ...props
1681
+ }
1682
+ );
1683
+ }
1684
+ );
1685
+ SearchInput.displayName = "SearchInput";
1686
+ var Checkmark = () => /* @__PURE__ */ jsxRuntime.jsx(
1687
+ "svg",
1688
+ {
1689
+ viewBox: "0 0 24 24",
1690
+ width: "1em",
1691
+ height: "1em",
1692
+ fill: "none",
1693
+ stroke: "currentColor",
1694
+ strokeWidth: 2.5,
1695
+ strokeLinecap: "round",
1696
+ strokeLinejoin: "round",
1697
+ "aria-hidden": true,
1698
+ children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" })
1699
+ }
1700
+ );
1701
+ var renderOption2 = (selected) => {
1702
+ const SelectOption = (option) => /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: "0.5rem" }, children: [
1703
+ option.label,
1704
+ option.value === selected && /* @__PURE__ */ jsxRuntime.jsx(Checkmark, {})
1705
+ ] });
1706
+ SelectOption.displayName = "SelectOption";
1707
+ return SelectOption;
1708
+ };
1709
+ var SelectInput = ({ onChange, value, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
1710
+ BaseSelectInput,
1711
+ {
1712
+ value,
1713
+ onSelect: (option, close) => {
1714
+ onChange?.(option.value);
1715
+ close();
1716
+ },
1717
+ renderOption: renderOption2(value),
1718
+ ...rest
1719
+ }
1720
+ );
1721
+ SelectInput.displayName = "SelectInput";
1722
+ var borderColors = (theme, error) => ({
1723
+ borderColor: error ? theme.palette.error.main : theme.palette.divider,
1724
+ "&:hover:not(:focus-within):not([data-disabled])": {
1725
+ borderColor: error ? theme.palette.error.dark : theme.palette.text.secondary
1726
+ },
1727
+ "&:focus-within": {
1728
+ borderColor: error ? theme.palette.error.main : theme.palette.primary.main,
1729
+ boxShadow: `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33`
1730
+ }
1731
+ });
1732
+ var Root5 = styles.styled("div")(({ $fullWidth }) => ({
1733
+ display: $fullWidth ? "block" : "inline-block",
1734
+ width: $fullWidth ? "100%" : "auto"
1735
+ }));
1736
+ var StyledTextarea = styles.styled("textarea")(({ theme, $size, $fullWidth, $error, $disabled }) => ({
1737
+ display: "block",
1738
+ width: $fullWidth ? "100%" : "auto",
1739
+ borderRadius: theme.shape.borderRadius,
1740
+ border: "1px solid",
1741
+ backgroundColor: $disabled ? theme.palette.action.disabledBackground : theme.palette.background.paper,
1742
+ fontFamily: theme.typography.fontFamily,
1743
+ color: $disabled ? theme.palette.action.disabled : theme.palette.text.primary,
1744
+ resize: "vertical",
1745
+ outline: "none",
1746
+ transition: "border-color 150ms ease, box-shadow 150ms ease",
1747
+ cursor: $disabled ? "not-allowed" : "text",
1748
+ boxSizing: "border-box",
1749
+ ...inputSizeMap[$size],
1750
+ ...borderColors(theme, $error),
1751
+ ...$disabled && {
1752
+ borderColor: theme.palette.action.disabled,
1753
+ pointerEvents: "none"
1754
+ },
1755
+ "&::placeholder": {
1756
+ color: theme.palette.text.disabled
1757
+ }
1758
+ }));
1759
+ var TextareaInput = react$1.forwardRef(
1760
+ ({
1761
+ label,
1762
+ helperText,
1763
+ error = false,
1764
+ size = "md",
1765
+ fullWidth = false,
1766
+ rows = 4,
1767
+ disabled = false,
1768
+ id,
1769
+ ...rest
1770
+ }, ref) => {
1771
+ const autoId = react$1.useId();
1772
+ const inputId = id ?? autoId;
1773
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root5, { $fullWidth: fullWidth, children: [
1774
+ label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
1775
+ /* @__PURE__ */ jsxRuntime.jsx(
1776
+ StyledTextarea,
1777
+ {
1778
+ ref,
1779
+ id: inputId,
1780
+ rows,
1781
+ disabled,
1782
+ $size: size,
1783
+ $fullWidth: fullWidth,
1784
+ $error: error,
1785
+ $disabled: disabled,
1786
+ "data-disabled": disabled || void 0,
1787
+ ...rest
1788
+ }
1789
+ ),
1790
+ helperText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error, children: helperText })
1791
+ ] });
1792
+ }
1793
+ );
1794
+ TextareaInput.displayName = "TextareaInput";
1795
+ var sizeMap2 = { sm: "1em", md: "1.25em", lg: "1.75em" };
1796
+ var toFlagEmoji = (code) => code.toUpperCase().replace(/[A-Z]/g, (char) => String.fromCodePoint(127462 + char.charCodeAt(0) - 65));
1797
+ var CountryFlag = ({ countryCode, size = "md", style, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
1798
+ "span",
1799
+ {
1800
+ role: "img",
1801
+ "aria-label": `Flag: ${countryCode}`,
1802
+ style: { fontSize: sizeMap2[size], lineHeight: 1, display: "inline-flex", ...style },
1803
+ ...rest,
1804
+ children: toFlagEmoji(countryCode)
1805
+ }
1806
+ );
1807
+ CountryFlag.displayName = "CountryFlag";
1808
+
1809
+ // src/data/countries.json
1810
+ var countries_default = {
1811
+ countries: [
1812
+ {
1813
+ flagCode: "AU",
1814
+ country: "Australia",
1815
+ phoneNumberLengthByCountry_phLengthMax: 15,
1816
+ phoneNumberLengthByCountry_phLengthMin: 4,
1817
+ phoneNumberLengthByCountry_phLength: "4 to 15"
1818
+ },
1819
+ {
1820
+ flagCode: "DE",
1821
+ country: "Niemcy",
1822
+ phoneNumberLengthByCountry_phLengthMax: 13,
1823
+ phoneNumberLengthByCountry_phLengthMin: 6,
1824
+ phoneNumberLengthByCountry_phLength: "6 to 13"
1825
+ },
1826
+ {
1827
+ flagCode: "SE",
1828
+ country: "Szwecja",
1829
+ phoneNumberLengthByCountry_phLengthMax: 13,
1830
+ phoneNumberLengthByCountry_phLengthMin: 7,
1831
+ phoneNumberLengthByCountry_phLength: "7 to 13"
1832
+ },
1833
+ {
1834
+ flagCode: "AT",
1835
+ country: "Austria",
1836
+ phoneNumberLengthByCountry_phLengthMax: 13,
1837
+ phoneNumberLengthByCountry_phLengthMin: 4,
1838
+ phoneNumberLengthByCountry_phLength: "4 to 13"
1839
+ },
1840
+ {
1841
+ flagCode: "CN",
1842
+ country: "Chiny",
1843
+ phoneNumberLengthByCountry_phLengthMax: 12,
1844
+ phoneNumberLengthByCountry_phLengthMin: 5,
1845
+ phoneNumberLengthByCountry_phLength: "5 to 12"
1846
+ },
1847
+ {
1848
+ flagCode: "CZ",
1849
+ country: "Czechy",
1850
+ phoneNumberLengthByCountry_phLengthMax: 12,
1851
+ phoneNumberLengthByCountry_phLengthMin: 4,
1852
+ phoneNumberLengthByCountry_phLength: "4 to 12"
1853
+ },
1854
+ {
1855
+ flagCode: "CH",
1856
+ country: "Szwajcaria",
1857
+ phoneNumberLengthByCountry_phLengthMax: 12,
1858
+ phoneNumberLengthByCountry_phLengthMin: 4,
1859
+ phoneNumberLengthByCountry_phLength: "4 to 12"
1860
+ },
1861
+ {
1862
+ flagCode: "RS",
1863
+ country: "Serbia",
1864
+ phoneNumberLengthByCountry_phLengthMax: 12,
1865
+ phoneNumberLengthByCountry_phLengthMin: 4,
1866
+ phoneNumberLengthByCountry_phLength: "4 to 12"
1867
+ },
1868
+ {
1869
+ flagCode: "SG",
1870
+ country: "Singapur",
1871
+ phoneNumberLengthByCountry_phLengthMax: 12,
1872
+ phoneNumberLengthByCountry_phLengthMin: 8,
1873
+ phoneNumberLengthByCountry_phLength: "8 to 12"
1874
+ },
1875
+ {
1876
+ flagCode: "FI",
1877
+ country: "Finlandia",
1878
+ phoneNumberLengthByCountry_phLengthMax: 12,
1879
+ phoneNumberLengthByCountry_phLengthMin: 5,
1880
+ phoneNumberLengthByCountry_phLength: "5 to 12"
1881
+ },
1882
+ {
1883
+ flagCode: "HR",
1884
+ country: "Chorwacja",
1885
+ phoneNumberLengthByCountry_phLengthMax: 12,
1886
+ phoneNumberLengthByCountry_phLengthMin: 8,
1887
+ phoneNumberLengthByCountry_phLength: "8 to 12"
1888
+ },
1889
+ {
1890
+ flagCode: "ME",
1891
+ country: "Czarnog\xF3ra",
1892
+ phoneNumberLengthByCountry_phLengthMax: 12,
1893
+ phoneNumberLengthByCountry_phLengthMin: 4,
1894
+ phoneNumberLengthByCountry_phLength: "4 to 12"
1895
+ },
1896
+ {
1897
+ flagCode: "PK",
1898
+ country: "Pakistan",
1899
+ phoneNumberLengthByCountry_phLengthMax: 11,
1900
+ phoneNumberLengthByCountry_phLengthMin: 8,
1901
+ phoneNumberLengthByCountry_phLength: "8 to 11"
1902
+ },
1903
+ {
1904
+ flagCode: "IT",
1905
+ country: "W\u0142ochy",
1906
+ phoneNumberLengthByCountry_phLengthMax: 11,
1907
+ phoneNumberLengthByCountry_phLengthMin: null,
1908
+ phoneNumberLengthByCountry_phLength: "up to 11"
1909
+ },
1910
+ {
1911
+ flagCode: "KR",
1912
+ country: "Korea Po\u0142udniowa",
1913
+ phoneNumberLengthByCountry_phLengthMax: 11,
1914
+ phoneNumberLengthByCountry_phLengthMin: 8,
1915
+ phoneNumberLengthByCountry_phLength: "8 to 11"
1916
+ },
1917
+ {
1918
+ flagCode: "PE",
1919
+ country: "Peru",
1920
+ phoneNumberLengthByCountry_phLengthMax: 11,
1921
+ phoneNumberLengthByCountry_phLengthMin: 8,
1922
+ phoneNumberLengthByCountry_phLength: "8 to 11"
1923
+ },
1924
+ {
1925
+ flagCode: "PG",
1926
+ country: "Papua Nowa Gwinea",
1927
+ phoneNumberLengthByCountry_phLengthMax: 11,
1928
+ phoneNumberLengthByCountry_phLengthMin: 4,
1929
+ phoneNumberLengthByCountry_phLength: "4 to 11"
1930
+ },
1931
+ {
1932
+ flagCode: "PT",
1933
+ country: "Portugalia",
1934
+ phoneNumberLengthByCountry_phLengthMax: 11,
1935
+ phoneNumberLengthByCountry_phLengthMin: 9,
1936
+ phoneNumberLengthByCountry_phLength: "9 or 11"
1937
+ },
1938
+ {
1939
+ flagCode: "SV",
1940
+ country: "Salwador",
1941
+ phoneNumberLengthByCountry_phLengthMax: 11,
1942
+ phoneNumberLengthByCountry_phLengthMin: 7,
1943
+ phoneNumberLengthByCountry_phLength: "7, 8 or 11"
1944
+ },
1945
+ {
1946
+ flagCode: "IE",
1947
+ country: "Irlandia",
1948
+ phoneNumberLengthByCountry_phLengthMax: 11,
1949
+ phoneNumberLengthByCountry_phLengthMin: 7,
1950
+ phoneNumberLengthByCountry_phLength: "7 to 11"
1951
+ },
1952
+ {
1953
+ flagCode: "UY",
1954
+ country: "Urugwaj",
1955
+ phoneNumberLengthByCountry_phLengthMax: 11,
1956
+ phoneNumberLengthByCountry_phLengthMin: 4,
1957
+ phoneNumberLengthByCountry_phLength: "4 to 11"
1958
+ },
1959
+ {
1960
+ flagCode: "CY",
1961
+ country: "Cypr",
1962
+ phoneNumberLengthByCountry_phLengthMax: 11,
1963
+ phoneNumberLengthByCountry_phLengthMin: 8,
1964
+ phoneNumberLengthByCountry_phLength: "8 or 11"
1965
+ },
1966
+ {
1967
+ flagCode: "LU",
1968
+ country: "Luksemburg",
1969
+ phoneNumberLengthByCountry_phLengthMax: 11,
1970
+ phoneNumberLengthByCountry_phLengthMin: 4,
1971
+ phoneNumberLengthByCountry_phLength: "4 to 11"
1972
+ },
1973
+ {
1974
+ flagCode: "VA",
1975
+ country: "Watykan",
1976
+ phoneNumberLengthByCountry_phLengthMax: 11,
1977
+ phoneNumberLengthByCountry_phLengthMin: null,
1978
+ phoneNumberLengthByCountry_phLength: "up to 11"
1979
+ },
1980
+ {
1981
+ flagCode: "IN",
1982
+ country: "Indie",
1983
+ phoneNumberLengthByCountry_phLengthMax: 10,
1984
+ phoneNumberLengthByCountry_phLengthMin: 7,
1985
+ phoneNumberLengthByCountry_phLength: "7 to 10"
1986
+ },
1987
+ {
1988
+ flagCode: "US",
1989
+ country: "Stany Zjednoczone",
1990
+ phoneNumberLengthByCountry_phLengthMax: 10,
1991
+ phoneNumberLengthByCountry_phLengthMin: 10,
1992
+ phoneNumberLengthByCountry_phLength: 10
1993
+ },
1994
+ {
1995
+ flagCode: "ID",
1996
+ country: "Indonezja",
1997
+ phoneNumberLengthByCountry_phLengthMax: 10,
1998
+ phoneNumberLengthByCountry_phLengthMin: 5,
1999
+ phoneNumberLengthByCountry_phLength: "5 to 10"
2000
+ },
2001
+ {
2002
+ flagCode: "NG",
2003
+ country: "Nigeria",
2004
+ phoneNumberLengthByCountry_phLengthMax: 10,
2005
+ phoneNumberLengthByCountry_phLengthMin: 7,
2006
+ phoneNumberLengthByCountry_phLength: "7 to 10"
2007
+ },
2008
+ {
2009
+ flagCode: "BR",
2010
+ country: "Brazylia",
2011
+ phoneNumberLengthByCountry_phLengthMax: 10,
2012
+ phoneNumberLengthByCountry_phLengthMin: 10,
2013
+ phoneNumberLengthByCountry_phLength: 10
2014
+ },
2015
+ {
2016
+ flagCode: "BD",
2017
+ country: "Bangladesz",
2018
+ phoneNumberLengthByCountry_phLengthMax: 10,
2019
+ phoneNumberLengthByCountry_phLengthMin: 6,
2020
+ phoneNumberLengthByCountry_phLength: "6 to 10"
2021
+ },
2022
+ {
2023
+ flagCode: "RU",
2024
+ country: "Rosja",
2025
+ phoneNumberLengthByCountry_phLengthMax: 10,
2026
+ phoneNumberLengthByCountry_phLengthMin: 10,
2027
+ phoneNumberLengthByCountry_phLength: 10
2028
+ },
2029
+ {
2030
+ flagCode: "MX",
2031
+ country: "Meksyk",
2032
+ phoneNumberLengthByCountry_phLengthMax: 10,
2033
+ phoneNumberLengthByCountry_phLengthMin: 10,
2034
+ phoneNumberLengthByCountry_phLength: 10
2035
+ },
2036
+ {
2037
+ flagCode: "JP",
2038
+ country: "Japonia",
2039
+ phoneNumberLengthByCountry_phLengthMax: 10,
2040
+ phoneNumberLengthByCountry_phLengthMin: 9,
2041
+ phoneNumberLengthByCountry_phLength: "9 to 10"
2042
+ },
2043
+ {
2044
+ flagCode: "PH",
2045
+ country: "Filipiny",
2046
+ phoneNumberLengthByCountry_phLengthMax: 10,
2047
+ phoneNumberLengthByCountry_phLengthMin: 8,
2048
+ phoneNumberLengthByCountry_phLength: "8 to 10"
2049
+ },
2050
+ {
2051
+ flagCode: "VN",
2052
+ country: "Wietnam",
2053
+ phoneNumberLengthByCountry_phLengthMax: 10,
2054
+ phoneNumberLengthByCountry_phLengthMin: 7,
2055
+ phoneNumberLengthByCountry_phLength: "7 to 10"
2056
+ },
2057
+ {
2058
+ flagCode: "IR",
2059
+ country: "Iran",
2060
+ phoneNumberLengthByCountry_phLengthMax: 10,
2061
+ phoneNumberLengthByCountry_phLengthMin: 6,
2062
+ phoneNumberLengthByCountry_phLength: "6 to 10"
2063
+ },
2064
+ {
2065
+ flagCode: "TR",
2066
+ country: "Turcja",
2067
+ phoneNumberLengthByCountry_phLengthMax: 10,
2068
+ phoneNumberLengthByCountry_phLengthMin: 10,
2069
+ phoneNumberLengthByCountry_phLength: 10
2070
+ },
2071
+ {
2072
+ flagCode: "GB",
2073
+ country: "Wielka Brytania",
2074
+ phoneNumberLengthByCountry_phLengthMax: 10,
2075
+ phoneNumberLengthByCountry_phLengthMin: 7,
2076
+ phoneNumberLengthByCountry_phLength: "7 to 10"
2077
+ },
2078
+ {
2079
+ flagCode: "KE",
2080
+ country: "Kenia",
2081
+ phoneNumberLengthByCountry_phLengthMax: 10,
2082
+ phoneNumberLengthByCountry_phLengthMin: 6,
2083
+ phoneNumberLengthByCountry_phLength: "6 to 10"
2084
+ },
2085
+ {
2086
+ flagCode: "CO",
2087
+ country: "Kolumbia",
2088
+ phoneNumberLengthByCountry_phLengthMax: 10,
2089
+ phoneNumberLengthByCountry_phLengthMin: 8,
2090
+ phoneNumberLengthByCountry_phLength: "8 or 10"
2091
+ },
2092
+ {
2093
+ flagCode: "IQ",
2094
+ country: "Irak",
2095
+ phoneNumberLengthByCountry_phLengthMax: 10,
2096
+ phoneNumberLengthByCountry_phLengthMin: 8,
2097
+ phoneNumberLengthByCountry_phLength: "8 to 10"
2098
+ },
2099
+ {
2100
+ flagCode: "AR",
2101
+ country: "Argentyna",
2102
+ phoneNumberLengthByCountry_phLengthMax: 10,
2103
+ phoneNumberLengthByCountry_phLengthMin: 10,
2104
+ phoneNumberLengthByCountry_phLength: 10
2105
+ },
2106
+ {
2107
+ flagCode: "CA",
2108
+ country: "Kanada",
2109
+ phoneNumberLengthByCountry_phLengthMax: 10,
2110
+ phoneNumberLengthByCountry_phLengthMin: 10,
2111
+ phoneNumberLengthByCountry_phLength: 10
2112
+ },
2113
+ {
2114
+ flagCode: "MG",
2115
+ country: "Madagaskar",
2116
+ phoneNumberLengthByCountry_phLengthMax: 10,
2117
+ phoneNumberLengthByCountry_phLengthMin: 9,
2118
+ phoneNumberLengthByCountry_phLength: "9 to 10"
2119
+ },
2120
+ {
2121
+ flagCode: "VE",
2122
+ country: "Wenezuela",
2123
+ phoneNumberLengthByCountry_phLengthMax: 10,
2124
+ phoneNumberLengthByCountry_phLengthMin: 10,
2125
+ phoneNumberLengthByCountry_phLength: 10
2126
+ },
2127
+ {
2128
+ flagCode: "KP",
2129
+ country: "Korea P\xF3\u0142nocna",
2130
+ phoneNumberLengthByCountry_phLengthMax: 10,
2131
+ phoneNumberLengthByCountry_phLengthMin: 3,
2132
+ phoneNumberLengthByCountry_phLength: "3 to 10"
2133
+ },
2134
+ {
2135
+ flagCode: "SY",
2136
+ country: "Syria",
2137
+ phoneNumberLengthByCountry_phLengthMax: 10,
2138
+ phoneNumberLengthByCountry_phLengthMin: 8,
2139
+ phoneNumberLengthByCountry_phLength: "8 to 10"
2140
+ },
2141
+ {
2142
+ flagCode: "KZ",
2143
+ country: "Kazachstan",
2144
+ phoneNumberLengthByCountry_phLengthMax: 10,
2145
+ phoneNumberLengthByCountry_phLengthMin: 10,
2146
+ phoneNumberLengthByCountry_phLength: 10
2147
+ },
2148
+ {
2149
+ flagCode: "DO",
2150
+ country: "Dominikana",
2151
+ phoneNumberLengthByCountry_phLengthMax: 10,
2152
+ phoneNumberLengthByCountry_phLengthMin: 10,
2153
+ phoneNumberLengthByCountry_phLength: "(809/829) + 7"
2154
+ },
2155
+ {
2156
+ flagCode: "GR",
2157
+ country: "Grecja",
2158
+ phoneNumberLengthByCountry_phLengthMax: 10,
2159
+ phoneNumberLengthByCountry_phLengthMin: 10,
2160
+ phoneNumberLengthByCountry_phLength: 10
2161
+ },
2162
+ {
2163
+ flagCode: "BY",
2164
+ country: "Bia\u0142oru\u015B",
2165
+ phoneNumberLengthByCountry_phLengthMax: 10,
2166
+ phoneNumberLengthByCountry_phLengthMin: 9,
2167
+ phoneNumberLengthByCountry_phLength: "9 to 10"
2168
+ },
2169
+ {
2170
+ flagCode: "NZ",
2171
+ country: "Nowa Zelandia",
2172
+ phoneNumberLengthByCountry_phLengthMax: 10,
2173
+ phoneNumberLengthByCountry_phLengthMin: 3,
2174
+ phoneNumberLengthByCountry_phLength: "3 to 10"
2175
+ },
2176
+ {
2177
+ flagCode: "PR",
2178
+ country: "Portoryko",
2179
+ phoneNumberLengthByCountry_phLengthMax: 10,
2180
+ phoneNumberLengthByCountry_phLengthMin: 10,
2181
+ phoneNumberLengthByCountry_phLength: "(787/939) + 7"
2182
+ },
2183
+ {
2184
+ flagCode: "QA",
2185
+ country: "Katar",
2186
+ phoneNumberLengthByCountry_phLengthMax: 10,
2187
+ phoneNumberLengthByCountry_phLengthMin: 6,
2188
+ phoneNumberLengthByCountry_phLength: "6, 7, 10"
2189
+ },
2190
+ {
2191
+ flagCode: "NA",
2192
+ country: "Namibia",
2193
+ phoneNumberLengthByCountry_phLengthMax: 10,
2194
+ phoneNumberLengthByCountry_phLengthMin: 6,
2195
+ phoneNumberLengthByCountry_phLength: "6 to 10"
2196
+ },
2197
+ {
2198
+ flagCode: "JM",
2199
+ country: "Jamajka",
2200
+ phoneNumberLengthByCountry_phLengthMax: 10,
2201
+ phoneNumberLengthByCountry_phLengthMin: 10,
2202
+ phoneNumberLengthByCountry_phLength: "(876) + 7"
2203
+ },
2204
+ {
2205
+ flagCode: "TT",
2206
+ country: "Trynidad i Tobago",
2207
+ phoneNumberLengthByCountry_phLengthMax: 10,
2208
+ phoneNumberLengthByCountry_phLengthMin: 10,
2209
+ phoneNumberLengthByCountry_phLength: "(868) + 7"
2210
+ },
2211
+ {
2212
+ flagCode: "EE",
2213
+ country: "Estonia",
2214
+ phoneNumberLengthByCountry_phLengthMax: 10,
2215
+ phoneNumberLengthByCountry_phLengthMin: 7,
2216
+ phoneNumberLengthByCountry_phLength: "7 to 10"
2217
+ },
2218
+ {
2219
+ flagCode: "BS",
2220
+ country: "Bahamy",
2221
+ phoneNumberLengthByCountry_phLengthMax: 10,
2222
+ phoneNumberLengthByCountry_phLengthMin: 10,
2223
+ phoneNumberLengthByCountry_phLength: "(242) + 7"
2224
+ },
2225
+ {
2226
+ flagCode: "BB",
2227
+ country: "Barbados",
2228
+ phoneNumberLengthByCountry_phLengthMax: 10,
2229
+ phoneNumberLengthByCountry_phLengthMin: 10,
2230
+ phoneNumberLengthByCountry_phLength: "(246) + 7"
2231
+ },
2232
+ {
2233
+ flagCode: "LC",
2234
+ country: "Saint Lucia",
2235
+ phoneNumberLengthByCountry_phLengthMax: 10,
2236
+ phoneNumberLengthByCountry_phLengthMin: 10,
2237
+ phoneNumberLengthByCountry_phLength: "(758) + 7"
2238
+ },
2239
+ {
2240
+ flagCode: "GU",
2241
+ country: "Guam",
2242
+ phoneNumberLengthByCountry_phLengthMax: 10,
2243
+ phoneNumberLengthByCountry_phLengthMin: 10,
2244
+ phoneNumberLengthByCountry_phLength: "(671) + 7"
2245
+ },
2246
+ {
2247
+ flagCode: "GD",
2248
+ country: "Grenada",
2249
+ phoneNumberLengthByCountry_phLengthMax: 10,
2250
+ phoneNumberLengthByCountry_phLengthMin: 10,
2251
+ phoneNumberLengthByCountry_phLength: "(473) + 7"
2252
+ },
2253
+ {
2254
+ flagCode: "VC",
2255
+ country: "Saint Vincent i Grenadyny",
2256
+ phoneNumberLengthByCountry_phLengthMax: 10,
2257
+ phoneNumberLengthByCountry_phLengthMin: 10,
2258
+ phoneNumberLengthByCountry_phLength: "(784) + 7"
2259
+ },
2260
+ {
2261
+ flagCode: "AG",
2262
+ country: "Antigua i Barbuda",
2263
+ phoneNumberLengthByCountry_phLengthMax: 10,
2264
+ phoneNumberLengthByCountry_phLengthMin: 10,
2265
+ phoneNumberLengthByCountry_phLength: "(268) + 7"
2266
+ },
2267
+ {
2268
+ flagCode: "VI",
2269
+ country: "Wyspy Dziewicze Stan\xF3w Zjednoczonych",
2270
+ phoneNumberLengthByCountry_phLengthMax: 10,
2271
+ phoneNumberLengthByCountry_phLengthMin: 10,
2272
+ phoneNumberLengthByCountry_phLength: "(340) + 7"
2273
+ },
2274
+ {
2275
+ flagCode: "KY",
2276
+ country: "Kajmany",
2277
+ phoneNumberLengthByCountry_phLengthMax: 10,
2278
+ phoneNumberLengthByCountry_phLengthMin: 10,
2279
+ phoneNumberLengthByCountry_phLength: "(345) + 7"
2280
+ },
2281
+ {
2282
+ flagCode: "DM",
2283
+ country: "Dominika",
2284
+ phoneNumberLengthByCountry_phLengthMax: 10,
2285
+ phoneNumberLengthByCountry_phLengthMin: 10,
2286
+ phoneNumberLengthByCountry_phLength: "(767) + 7"
2287
+ },
2288
+ {
2289
+ flagCode: "BM",
2290
+ country: "Bermudy",
2291
+ phoneNumberLengthByCountry_phLengthMax: 10,
2292
+ phoneNumberLengthByCountry_phLengthMin: 10,
2293
+ phoneNumberLengthByCountry_phLength: "(441) + 7"
2294
+ },
2295
+ {
2296
+ flagCode: "TC",
2297
+ country: "Turks i Caicos",
2298
+ phoneNumberLengthByCountry_phLengthMax: 10,
2299
+ phoneNumberLengthByCountry_phLengthMin: 10,
2300
+ phoneNumberLengthByCountry_phLength: "(649) + 7"
2301
+ },
2302
+ {
2303
+ flagCode: "KN",
2304
+ country: "Saint Kitts i Nevis",
2305
+ phoneNumberLengthByCountry_phLengthMax: 10,
2306
+ phoneNumberLengthByCountry_phLengthMin: 10,
2307
+ phoneNumberLengthByCountry_phLength: "(869) + 7"
2308
+ },
2309
+ {
2310
+ flagCode: "AS",
2311
+ country: "Samoa Ameryka\u0144skie",
2312
+ phoneNumberLengthByCountry_phLengthMax: 10,
2313
+ phoneNumberLengthByCountry_phLengthMin: 10,
2314
+ phoneNumberLengthByCountry_phLength: "(684) + 7"
2315
+ },
2316
+ {
2317
+ flagCode: "SX",
2318
+ country: "Sint Maarten",
2319
+ phoneNumberLengthByCountry_phLengthMax: 10,
2320
+ phoneNumberLengthByCountry_phLengthMin: 10,
2321
+ phoneNumberLengthByCountry_phLength: "(721) + 7"
2322
+ },
2323
+ {
2324
+ flagCode: "VG",
2325
+ country: "Brytyjskie Wyspy Dziewicze",
2326
+ phoneNumberLengthByCountry_phLengthMax: 10,
2327
+ phoneNumberLengthByCountry_phLengthMin: 10,
2328
+ phoneNumberLengthByCountry_phLength: "(284) + 7"
2329
+ },
2330
+ {
2331
+ flagCode: "SM",
2332
+ country: "San Marino",
2333
+ phoneNumberLengthByCountry_phLengthMax: 10,
2334
+ phoneNumberLengthByCountry_phLengthMin: 6,
2335
+ phoneNumberLengthByCountry_phLength: "6 to 10"
2336
+ },
2337
+ {
2338
+ flagCode: "AI",
2339
+ country: "Anguilla",
2340
+ phoneNumberLengthByCountry_phLengthMax: 10,
2341
+ phoneNumberLengthByCountry_phLengthMin: 10,
2342
+ phoneNumberLengthByCountry_phLength: "(264) + 7"
2343
+ },
2344
+ {
2345
+ flagCode: "MS",
2346
+ country: "Montserrat",
2347
+ phoneNumberLengthByCountry_phLengthMax: 10,
2348
+ phoneNumberLengthByCountry_phLengthMin: 10,
2349
+ phoneNumberLengthByCountry_phLength: "(664) + 7"
2350
+ },
2351
+ {
2352
+ flagCode: "ET",
2353
+ country: "Etiopia",
2354
+ phoneNumberLengthByCountry_phLengthMax: 9,
2355
+ phoneNumberLengthByCountry_phLengthMin: 9,
2356
+ phoneNumberLengthByCountry_phLength: 9
2357
+ },
2358
+ {
2359
+ flagCode: "EG",
2360
+ country: "Egipt",
2361
+ phoneNumberLengthByCountry_phLengthMax: 9,
2362
+ phoneNumberLengthByCountry_phLengthMin: 7,
2363
+ phoneNumberLengthByCountry_phLength: "7 to 9"
2364
+ },
2365
+ {
2366
+ flagCode: "CD",
2367
+ country: "Demokratyczna Republika Konga",
2368
+ phoneNumberLengthByCountry_phLengthMax: 9,
2369
+ phoneNumberLengthByCountry_phLengthMin: 5,
2370
+ phoneNumberLengthByCountry_phLength: "5 to 9"
2371
+ },
2372
+ {
2373
+ flagCode: "TZ",
2374
+ country: "Tanzania",
2375
+ phoneNumberLengthByCountry_phLengthMax: 9,
2376
+ phoneNumberLengthByCountry_phLengthMin: 9,
2377
+ phoneNumberLengthByCountry_phLength: 9
2378
+ },
2379
+ {
2380
+ flagCode: "TH",
2381
+ country: "Tajlandia",
2382
+ phoneNumberLengthByCountry_phLengthMax: 9,
2383
+ phoneNumberLengthByCountry_phLengthMin: 8,
2384
+ phoneNumberLengthByCountry_phLength: "8 or 9"
2385
+ },
2386
+ {
2387
+ flagCode: "FR",
2388
+ country: "Francja",
2389
+ phoneNumberLengthByCountry_phLengthMax: 9,
2390
+ phoneNumberLengthByCountry_phLengthMin: 9,
2391
+ phoneNumberLengthByCountry_phLength: 9
2392
+ },
2393
+ {
2394
+ flagCode: "ZA",
2395
+ country: "Republika Po\u0142udniowej Afryki",
2396
+ phoneNumberLengthByCountry_phLengthMax: 9,
2397
+ phoneNumberLengthByCountry_phLengthMin: 9,
2398
+ phoneNumberLengthByCountry_phLength: 9
2399
+ },
2400
+ {
2401
+ flagCode: "MM",
2402
+ country: "Mjanma",
2403
+ phoneNumberLengthByCountry_phLengthMax: 9,
2404
+ phoneNumberLengthByCountry_phLengthMin: 7,
2405
+ phoneNumberLengthByCountry_phLength: "7 to 9"
2406
+ },
2407
+ {
2408
+ flagCode: "SD",
2409
+ country: "Sudan",
2410
+ phoneNumberLengthByCountry_phLengthMax: 9,
2411
+ phoneNumberLengthByCountry_phLengthMin: 9,
2412
+ phoneNumberLengthByCountry_phLength: 9
2413
+ },
2414
+ {
2415
+ flagCode: "UG",
2416
+ country: "Uganda",
2417
+ phoneNumberLengthByCountry_phLengthMax: 9,
2418
+ phoneNumberLengthByCountry_phLengthMin: 9,
2419
+ phoneNumberLengthByCountry_phLength: 9
2420
+ },
2421
+ {
2422
+ flagCode: "DZ",
2423
+ country: "Algieria",
2424
+ phoneNumberLengthByCountry_phLengthMax: 9,
2425
+ phoneNumberLengthByCountry_phLengthMin: 8,
2426
+ phoneNumberLengthByCountry_phLength: "8 or 9"
2427
+ },
2428
+ {
2429
+ flagCode: "ES",
2430
+ country: "Hiszpania",
2431
+ phoneNumberLengthByCountry_phLengthMax: 9,
2432
+ phoneNumberLengthByCountry_phLengthMin: 9,
2433
+ phoneNumberLengthByCountry_phLength: 9
2434
+ },
2435
+ {
2436
+ flagCode: "AF",
2437
+ country: "Afganistan",
2438
+ phoneNumberLengthByCountry_phLengthMax: 9,
2439
+ phoneNumberLengthByCountry_phLengthMin: 9,
2440
+ phoneNumberLengthByCountry_phLength: 9
2441
+ },
2442
+ {
2443
+ flagCode: "YE",
2444
+ country: "Jemen",
2445
+ phoneNumberLengthByCountry_phLengthMax: 9,
2446
+ phoneNumberLengthByCountry_phLengthMin: 6,
2447
+ phoneNumberLengthByCountry_phLength: "6 to 9"
2448
+ },
2449
+ {
2450
+ flagCode: "AO",
2451
+ country: "Angola",
2452
+ phoneNumberLengthByCountry_phLengthMax: 9,
2453
+ phoneNumberLengthByCountry_phLengthMin: 9,
2454
+ phoneNumberLengthByCountry_phLength: 9
2455
+ },
2456
+ {
2457
+ flagCode: "UA",
2458
+ country: "Ukraina",
2459
+ phoneNumberLengthByCountry_phLengthMax: 9,
2460
+ phoneNumberLengthByCountry_phLengthMin: 9,
2461
+ phoneNumberLengthByCountry_phLength: 9
2462
+ },
2463
+ {
2464
+ flagCode: "MA",
2465
+ country: "Maroko",
2466
+ phoneNumberLengthByCountry_phLengthMax: 9,
2467
+ phoneNumberLengthByCountry_phLengthMin: 9,
2468
+ phoneNumberLengthByCountry_phLength: 9
2469
+ },
2470
+ {
2471
+ flagCode: "PL",
2472
+ country: "Polska",
2473
+ phoneNumberLengthByCountry_phLengthMax: 9,
2474
+ phoneNumberLengthByCountry_phLengthMin: 6,
2475
+ phoneNumberLengthByCountry_phLength: "6 to 9"
2476
+ },
2477
+ {
2478
+ flagCode: "UZ",
2479
+ country: "Uzbekistan",
2480
+ phoneNumberLengthByCountry_phLengthMax: 9,
2481
+ phoneNumberLengthByCountry_phLengthMin: 9,
2482
+ phoneNumberLengthByCountry_phLength: 9
2483
+ },
2484
+ {
2485
+ flagCode: "MZ",
2486
+ country: "Mozambik",
2487
+ phoneNumberLengthByCountry_phLengthMax: 9,
2488
+ phoneNumberLengthByCountry_phLengthMin: 8,
2489
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2490
+ },
2491
+ {
2492
+ flagCode: "MY",
2493
+ country: "Malezja",
2494
+ phoneNumberLengthByCountry_phLengthMax: 9,
2495
+ phoneNumberLengthByCountry_phLengthMin: 7,
2496
+ phoneNumberLengthByCountry_phLength: "7 to 9"
2497
+ },
2498
+ {
2499
+ flagCode: "GH",
2500
+ country: "Ghana",
2501
+ phoneNumberLengthByCountry_phLengthMax: 9,
2502
+ phoneNumberLengthByCountry_phLengthMin: 5,
2503
+ phoneNumberLengthByCountry_phLength: "5 to 9"
2504
+ },
2505
+ {
2506
+ flagCode: "SA",
2507
+ country: "Arabia Saudyjska",
2508
+ phoneNumberLengthByCountry_phLengthMax: 9,
2509
+ phoneNumberLengthByCountry_phLengthMin: 8,
2510
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2511
+ },
2512
+ {
2513
+ flagCode: "NP",
2514
+ country: "Nepal",
2515
+ phoneNumberLengthByCountry_phLengthMax: 9,
2516
+ phoneNumberLengthByCountry_phLengthMin: 8,
2517
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2518
+ },
2519
+ {
2520
+ flagCode: "LK",
2521
+ country: "Sri Lanka",
2522
+ phoneNumberLengthByCountry_phLengthMax: 9,
2523
+ phoneNumberLengthByCountry_phLengthMin: 9,
2524
+ phoneNumberLengthByCountry_phLength: 9
2525
+ },
2526
+ {
2527
+ flagCode: "TW",
2528
+ country: "Tajwan",
2529
+ phoneNumberLengthByCountry_phLengthMax: 9,
2530
+ phoneNumberLengthByCountry_phLengthMin: 8,
2531
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2532
+ },
2533
+ {
2534
+ flagCode: "ZM",
2535
+ country: "Zambia",
2536
+ phoneNumberLengthByCountry_phLengthMax: 9,
2537
+ phoneNumberLengthByCountry_phLengthMin: 9,
2538
+ phoneNumberLengthByCountry_phLength: 9
2539
+ },
2540
+ {
2541
+ flagCode: "CL",
2542
+ country: "Chile",
2543
+ phoneNumberLengthByCountry_phLengthMax: 9,
2544
+ phoneNumberLengthByCountry_phLengthMin: 8,
2545
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2546
+ },
2547
+ {
2548
+ flagCode: "SN",
2549
+ country: "Senegal",
2550
+ phoneNumberLengthByCountry_phLengthMax: 9,
2551
+ phoneNumberLengthByCountry_phLengthMin: 9,
2552
+ phoneNumberLengthByCountry_phLength: 9
2553
+ },
2554
+ {
2555
+ flagCode: "RO",
2556
+ country: "Rumunia",
2557
+ phoneNumberLengthByCountry_phLengthMax: 9,
2558
+ phoneNumberLengthByCountry_phLengthMin: 9,
2559
+ phoneNumberLengthByCountry_phLength: 9
2560
+ },
2561
+ {
2562
+ flagCode: "NL",
2563
+ country: "Holandia",
2564
+ phoneNumberLengthByCountry_phLengthMax: 9,
2565
+ phoneNumberLengthByCountry_phLengthMin: 9,
2566
+ phoneNumberLengthByCountry_phLength: 9
2567
+ },
2568
+ {
2569
+ flagCode: "ZW",
2570
+ country: "Zimbabwe",
2571
+ phoneNumberLengthByCountry_phLengthMax: 9,
2572
+ phoneNumberLengthByCountry_phLengthMin: 5,
2573
+ phoneNumberLengthByCountry_phLength: "5 to 9"
2574
+ },
2575
+ {
2576
+ flagCode: "RW",
2577
+ country: "Rwanda",
2578
+ phoneNumberLengthByCountry_phLengthMax: 9,
2579
+ phoneNumberLengthByCountry_phLengthMin: 9,
2580
+ phoneNumberLengthByCountry_phLength: 9
2581
+ },
2582
+ {
2583
+ flagCode: "BE",
2584
+ country: "Belgia",
2585
+ phoneNumberLengthByCountry_phLengthMax: 9,
2586
+ phoneNumberLengthByCountry_phLengthMin: 8,
2587
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2588
+ },
2589
+ {
2590
+ flagCode: "JO",
2591
+ country: "Jordania",
2592
+ phoneNumberLengthByCountry_phLengthMax: 9,
2593
+ phoneNumberLengthByCountry_phLengthMin: 5,
2594
+ phoneNumberLengthByCountry_phLength: "5 to 9"
2595
+ },
2596
+ {
2597
+ flagCode: "AE",
2598
+ country: "Zjednoczone Emiraty Arabskie",
2599
+ phoneNumberLengthByCountry_phLengthMax: 9,
2600
+ phoneNumberLengthByCountry_phLengthMin: 8,
2601
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2602
+ },
2603
+ {
2604
+ flagCode: "TJ",
2605
+ country: "Tad\u017Cykistan",
2606
+ phoneNumberLengthByCountry_phLengthMax: 9,
2607
+ phoneNumberLengthByCountry_phLengthMin: 9,
2608
+ phoneNumberLengthByCountry_phLength: 9
2609
+ },
2610
+ {
2611
+ flagCode: "AZ",
2612
+ country: "Azerbejd\u017Can",
2613
+ phoneNumberLengthByCountry_phLengthMax: 9,
2614
+ phoneNumberLengthByCountry_phLengthMin: 8,
2615
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2616
+ },
2617
+ {
2618
+ flagCode: "IL",
2619
+ country: "Izrael",
2620
+ phoneNumberLengthByCountry_phLengthMax: 9,
2621
+ phoneNumberLengthByCountry_phLengthMin: 8,
2622
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2623
+ },
2624
+ {
2625
+ flagCode: "HU",
2626
+ country: "W\u0119gry",
2627
+ phoneNumberLengthByCountry_phLengthMax: 9,
2628
+ phoneNumberLengthByCountry_phLengthMin: 8,
2629
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2630
+ },
2631
+ {
2632
+ flagCode: "LA",
2633
+ country: "Laos",
2634
+ phoneNumberLengthByCountry_phLengthMax: 9,
2635
+ phoneNumberLengthByCountry_phLengthMin: 8,
2636
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2637
+ },
2638
+ {
2639
+ flagCode: "LY",
2640
+ country: "Libia",
2641
+ phoneNumberLengthByCountry_phLengthMax: 9,
2642
+ phoneNumberLengthByCountry_phLengthMin: 8,
2643
+ phoneNumberLengthByCountry_phLength: "8 to 9"
2644
+ },
2645
+ {
2646
+ flagCode: "KG",
2647
+ country: "Kirgistan",
2648
+ phoneNumberLengthByCountry_phLengthMax: 9,
2649
+ phoneNumberLengthByCountry_phLengthMin: 9,
2650
+ phoneNumberLengthByCountry_phLength: 9
2651
+ },
2652
+ {
2653
+ flagCode: "HK",
2654
+ country: "Hongkong",
2655
+ phoneNumberLengthByCountry_phLengthMax: 9,
2656
+ phoneNumberLengthByCountry_phLengthMin: 4,
2657
+ phoneNumberLengthByCountry_phLength: "4, 8 to 9"
2658
+ },
2659
+ {
2660
+ flagCode: "PY",
2661
+ country: "Paragwaj",
2662
+ phoneNumberLengthByCountry_phLengthMax: 9,
2663
+ phoneNumberLengthByCountry_phLengthMin: 5,
2664
+ phoneNumberLengthByCountry_phLength: "5 to 9"
2665
+ },
2666
+ {
2667
+ flagCode: "BG",
2668
+ country: "Bu\u0142garia",
2669
+ phoneNumberLengthByCountry_phLengthMax: 9,
2670
+ phoneNumberLengthByCountry_phLengthMin: 7,
2671
+ phoneNumberLengthByCountry_phLength: "7 to 9"
2672
+ },
2673
+ {
2674
+ flagCode: "SK",
2675
+ country: "S\u0142owacja",
2676
+ phoneNumberLengthByCountry_phLengthMax: 9,
2677
+ phoneNumberLengthByCountry_phLengthMin: 4,
2678
+ phoneNumberLengthByCountry_phLength: "4 to 9"
2679
+ },
2680
+ {
2681
+ flagCode: "AL",
2682
+ country: "Albania",
2683
+ phoneNumberLengthByCountry_phLengthMax: 9,
2684
+ phoneNumberLengthByCountry_phLengthMin: 3,
2685
+ phoneNumberLengthByCountry_phLength: "3 to 9"
2686
+ },
2687
+ {
2688
+ flagCode: "IS",
2689
+ country: "Islandia",
2690
+ phoneNumberLengthByCountry_phLengthMax: 9,
2691
+ phoneNumberLengthByCountry_phLengthMin: 7,
2692
+ phoneNumberLengthByCountry_phLength: "7 or 9"
2693
+ },
2694
+ {
2695
+ flagCode: "GP",
2696
+ country: "Gwadelupa",
2697
+ phoneNumberLengthByCountry_phLengthMax: 9,
2698
+ phoneNumberLengthByCountry_phLengthMin: 9,
2699
+ phoneNumberLengthByCountry_phLength: 9
2700
+ },
2701
+ {
2702
+ flagCode: "MQ",
2703
+ country: "Martynika",
2704
+ phoneNumberLengthByCountry_phLengthMax: 9,
2705
+ phoneNumberLengthByCountry_phLengthMin: 9,
2706
+ phoneNumberLengthByCountry_phLength: 9
2707
+ },
2708
+ {
2709
+ flagCode: "GF",
2710
+ country: "Gujana Francuska",
2711
+ phoneNumberLengthByCountry_phLengthMax: 9,
2712
+ phoneNumberLengthByCountry_phLengthMin: 9,
2713
+ phoneNumberLengthByCountry_phLength: 9
2714
+ },
2715
+ {
2716
+ flagCode: "AD",
2717
+ country: "Andora",
2718
+ phoneNumberLengthByCountry_phLengthMax: 9,
2719
+ phoneNumberLengthByCountry_phLengthMin: 6,
2720
+ phoneNumberLengthByCountry_phLength: "6, 8 or 9"
2721
+ },
2722
+ {
2723
+ flagCode: "LI",
2724
+ country: "Liechtenstein",
2725
+ phoneNumberLengthByCountry_phLengthMax: 9,
2726
+ phoneNumberLengthByCountry_phLengthMin: 7,
2727
+ phoneNumberLengthByCountry_phLength: "7 to 9"
2728
+ },
2729
+ {
2730
+ flagCode: "MC",
2731
+ country: "Monako",
2732
+ phoneNumberLengthByCountry_phLengthMax: 9,
2733
+ phoneNumberLengthByCountry_phLengthMin: 5,
2734
+ phoneNumberLengthByCountry_phLength: "5 to 9"
2735
+ },
2736
+ {
2737
+ flagCode: "CI",
2738
+ country: "Wybrze\u017Ce Ko\u015Bci S\u0142oniowej",
2739
+ phoneNumberLengthByCountry_phLengthMax: 8,
2740
+ phoneNumberLengthByCountry_phLengthMin: 8,
2741
+ phoneNumberLengthByCountry_phLength: 8
2742
+ },
2743
+ {
2744
+ flagCode: "CM",
2745
+ country: "Kamerun",
2746
+ phoneNumberLengthByCountry_phLengthMax: 8,
2747
+ phoneNumberLengthByCountry_phLengthMin: 8,
2748
+ phoneNumberLengthByCountry_phLength: 8
2749
+ },
2750
+ {
2751
+ flagCode: "NE",
2752
+ country: "Niger",
2753
+ phoneNumberLengthByCountry_phLengthMax: 8,
2754
+ phoneNumberLengthByCountry_phLengthMin: 8,
2755
+ phoneNumberLengthByCountry_phLength: 8
2756
+ },
2757
+ {
2758
+ flagCode: "ML",
2759
+ country: "Mali",
2760
+ phoneNumberLengthByCountry_phLengthMax: 8,
2761
+ phoneNumberLengthByCountry_phLengthMin: 8,
2762
+ phoneNumberLengthByCountry_phLength: 8
2763
+ },
2764
+ {
2765
+ flagCode: "BF",
2766
+ country: "Burkina Faso",
2767
+ phoneNumberLengthByCountry_phLengthMax: 8,
2768
+ phoneNumberLengthByCountry_phLengthMin: 8,
2769
+ phoneNumberLengthByCountry_phLength: 8
2770
+ },
2771
+ {
2772
+ flagCode: "MW",
2773
+ country: "Malawi",
2774
+ phoneNumberLengthByCountry_phLengthMax: 8,
2775
+ phoneNumberLengthByCountry_phLengthMin: 7,
2776
+ phoneNumberLengthByCountry_phLength: "7 or 8"
2777
+ },
2778
+ {
2779
+ flagCode: "SO",
2780
+ country: "Somalia",
2781
+ phoneNumberLengthByCountry_phLengthMax: 8,
2782
+ phoneNumberLengthByCountry_phLengthMin: 5,
2783
+ phoneNumberLengthByCountry_phLength: "5 to 8"
2784
+ },
2785
+ {
2786
+ flagCode: "GT",
2787
+ country: "Gwatemala",
2788
+ phoneNumberLengthByCountry_phLengthMax: 8,
2789
+ phoneNumberLengthByCountry_phLengthMin: 8,
2790
+ phoneNumberLengthByCountry_phLength: 8
2791
+ },
2792
+ {
2793
+ flagCode: "EC",
2794
+ country: "Ekwador",
2795
+ phoneNumberLengthByCountry_phLengthMax: 8,
2796
+ phoneNumberLengthByCountry_phLengthMin: 8,
2797
+ phoneNumberLengthByCountry_phLength: 8
2798
+ },
2799
+ {
2800
+ flagCode: "KH",
2801
+ country: "Kambod\u017Ca",
2802
+ phoneNumberLengthByCountry_phLengthMax: 8,
2803
+ phoneNumberLengthByCountry_phLengthMin: 8,
2804
+ phoneNumberLengthByCountry_phLength: 8
2805
+ },
2806
+ {
2807
+ flagCode: "GN",
2808
+ country: "Gwinea",
2809
+ phoneNumberLengthByCountry_phLengthMax: 8,
2810
+ phoneNumberLengthByCountry_phLengthMin: 8,
2811
+ phoneNumberLengthByCountry_phLength: 8
2812
+ },
2813
+ {
2814
+ flagCode: "BJ",
2815
+ country: "Benin",
2816
+ phoneNumberLengthByCountry_phLengthMax: 8,
2817
+ phoneNumberLengthByCountry_phLengthMin: 8,
2818
+ phoneNumberLengthByCountry_phLength: 8
2819
+ },
2820
+ {
2821
+ flagCode: "BI",
2822
+ country: "Burundi",
2823
+ phoneNumberLengthByCountry_phLengthMax: 8,
2824
+ phoneNumberLengthByCountry_phLengthMin: 8,
2825
+ phoneNumberLengthByCountry_phLength: 8
2826
+ },
2827
+ {
2828
+ flagCode: "BO",
2829
+ country: "Boliwia",
2830
+ phoneNumberLengthByCountry_phLengthMax: 8,
2831
+ phoneNumberLengthByCountry_phLengthMin: 8,
2832
+ phoneNumberLengthByCountry_phLength: 8
2833
+ },
2834
+ {
2835
+ flagCode: "TN",
2836
+ country: "Tunezja",
2837
+ phoneNumberLengthByCountry_phLengthMax: 8,
2838
+ phoneNumberLengthByCountry_phLengthMin: 8,
2839
+ phoneNumberLengthByCountry_phLength: 8
2840
+ },
2841
+ {
2842
+ flagCode: "HT",
2843
+ country: "Haiti",
2844
+ phoneNumberLengthByCountry_phLengthMax: 8,
2845
+ phoneNumberLengthByCountry_phLengthMin: 8,
2846
+ phoneNumberLengthByCountry_phLength: 8
2847
+ },
2848
+ {
2849
+ flagCode: "HN",
2850
+ country: "Honduras",
2851
+ phoneNumberLengthByCountry_phLengthMax: 8,
2852
+ phoneNumberLengthByCountry_phLengthMin: 7,
2853
+ phoneNumberLengthByCountry_phLength: "7 to 8"
2854
+ },
2855
+ {
2856
+ flagCode: "CU",
2857
+ country: "Kuba",
2858
+ phoneNumberLengthByCountry_phLengthMax: 8,
2859
+ phoneNumberLengthByCountry_phLengthMin: 6,
2860
+ phoneNumberLengthByCountry_phLength: "6 to 8"
2861
+ },
2862
+ {
2863
+ flagCode: "SL",
2864
+ country: "Sierra Leone",
2865
+ phoneNumberLengthByCountry_phLengthMax: 8,
2866
+ phoneNumberLengthByCountry_phLengthMin: 8,
2867
+ phoneNumberLengthByCountry_phLength: 8
2868
+ },
2869
+ {
2870
+ flagCode: "TM",
2871
+ country: "Turkmenistan",
2872
+ phoneNumberLengthByCountry_phLengthMax: 8,
2873
+ phoneNumberLengthByCountry_phLengthMin: 8,
2874
+ phoneNumberLengthByCountry_phLength: 8
2875
+ },
2876
+ {
2877
+ flagCode: "NI",
2878
+ country: "Nikaragua",
2879
+ phoneNumberLengthByCountry_phLengthMax: 8,
2880
+ phoneNumberLengthByCountry_phLengthMin: 8,
2881
+ phoneNumberLengthByCountry_phLength: 8
2882
+ },
2883
+ {
2884
+ flagCode: "DK",
2885
+ country: "Dania",
2886
+ phoneNumberLengthByCountry_phLengthMax: 8,
2887
+ phoneNumberLengthByCountry_phLengthMin: 8,
2888
+ phoneNumberLengthByCountry_phLength: 8
2889
+ },
2890
+ {
2891
+ flagCode: "LB",
2892
+ country: "Liban",
2893
+ phoneNumberLengthByCountry_phLengthMax: 8,
2894
+ phoneNumberLengthByCountry_phLengthMin: 7,
2895
+ phoneNumberLengthByCountry_phLength: "7 to 8"
2896
+ },
2897
+ {
2898
+ flagCode: "LR",
2899
+ country: "Liberia",
2900
+ phoneNumberLengthByCountry_phLengthMax: 8,
2901
+ phoneNumberLengthByCountry_phLengthMin: 7,
2902
+ phoneNumberLengthByCountry_phLength: "7 to 8"
2903
+ },
2904
+ {
2905
+ flagCode: "CF",
2906
+ country: "Republika \u015Arodkowoafryka\u0144ska",
2907
+ phoneNumberLengthByCountry_phLengthMax: 8,
2908
+ phoneNumberLengthByCountry_phLengthMin: 8,
2909
+ phoneNumberLengthByCountry_phLength: 8
2910
+ },
2911
+ {
2912
+ flagCode: "OM",
2913
+ country: "Oman",
2914
+ phoneNumberLengthByCountry_phLengthMax: 8,
2915
+ phoneNumberLengthByCountry_phLengthMin: 7,
2916
+ phoneNumberLengthByCountry_phLength: "7 to 8"
2917
+ },
2918
+ {
2919
+ flagCode: "NO",
2920
+ country: "Norwegia",
2921
+ phoneNumberLengthByCountry_phLengthMax: 8,
2922
+ phoneNumberLengthByCountry_phLengthMin: 5,
2923
+ phoneNumberLengthByCountry_phLength: "5 or 8"
2924
+ },
2925
+ {
2926
+ flagCode: "CR",
2927
+ country: "Kostaryka",
2928
+ phoneNumberLengthByCountry_phLengthMax: 8,
2929
+ phoneNumberLengthByCountry_phLengthMin: 8,
2930
+ phoneNumberLengthByCountry_phLength: 8
2931
+ },
2932
+ {
2933
+ flagCode: "KW",
2934
+ country: "Kuwejt",
2935
+ phoneNumberLengthByCountry_phLengthMax: 8,
2936
+ phoneNumberLengthByCountry_phLengthMin: 7,
2937
+ phoneNumberLengthByCountry_phLength: "7 or 8"
2938
+ },
2939
+ {
2940
+ flagCode: "PA",
2941
+ country: "Panama",
2942
+ phoneNumberLengthByCountry_phLengthMax: 8,
2943
+ phoneNumberLengthByCountry_phLengthMin: 7,
2944
+ phoneNumberLengthByCountry_phLength: "7 or 8"
2945
+ },
2946
+ {
2947
+ flagCode: "GE",
2948
+ country: "Gruzja",
2949
+ phoneNumberLengthByCountry_phLengthMax: 8,
2950
+ phoneNumberLengthByCountry_phLengthMin: 8,
2951
+ phoneNumberLengthByCountry_phLength: 8
2952
+ },
2953
+ {
2954
+ flagCode: "MN",
2955
+ country: "Mongolia",
2956
+ phoneNumberLengthByCountry_phLengthMax: 8,
2957
+ phoneNumberLengthByCountry_phLengthMin: 7,
2958
+ phoneNumberLengthByCountry_phLength: "7 to 8"
2959
+ },
2960
+ {
2961
+ flagCode: "BA",
2962
+ country: "Bo\u015Bnia i Hercegowina",
2963
+ phoneNumberLengthByCountry_phLengthMax: 8,
2964
+ phoneNumberLengthByCountry_phLengthMin: 8,
2965
+ phoneNumberLengthByCountry_phLength: 8
2966
+ },
2967
+ {
2968
+ flagCode: "MD",
2969
+ country: "Mo\u0142dawia",
2970
+ phoneNumberLengthByCountry_phLengthMax: 8,
2971
+ phoneNumberLengthByCountry_phLengthMin: 8,
2972
+ phoneNumberLengthByCountry_phLength: 8
2973
+ },
2974
+ {
2975
+ flagCode: "AM",
2976
+ country: "Armenia",
2977
+ phoneNumberLengthByCountry_phLengthMax: 8,
2978
+ phoneNumberLengthByCountry_phLengthMin: 8,
2979
+ phoneNumberLengthByCountry_phLength: 8
2980
+ },
2981
+ {
2982
+ flagCode: "LT",
2983
+ country: "Litwa",
2984
+ phoneNumberLengthByCountry_phLengthMax: 8,
2985
+ phoneNumberLengthByCountry_phLengthMin: 8,
2986
+ phoneNumberLengthByCountry_phLength: 8
2987
+ },
2988
+ {
2989
+ flagCode: "BW",
2990
+ country: "Botswana",
2991
+ phoneNumberLengthByCountry_phLengthMax: 8,
2992
+ phoneNumberLengthByCountry_phLengthMin: 7,
2993
+ phoneNumberLengthByCountry_phLength: "7 to 8"
2994
+ },
2995
+ {
2996
+ flagCode: "LS",
2997
+ country: "Lesotho",
2998
+ phoneNumberLengthByCountry_phLengthMax: 8,
2999
+ phoneNumberLengthByCountry_phLengthMin: 8,
3000
+ phoneNumberLengthByCountry_phLength: 8
3001
+ },
3002
+ {
3003
+ flagCode: "SI",
3004
+ country: "S\u0142owenia",
3005
+ phoneNumberLengthByCountry_phLengthMax: 8,
3006
+ phoneNumberLengthByCountry_phLengthMin: 8,
3007
+ phoneNumberLengthByCountry_phLength: 8
3008
+ },
3009
+ {
3010
+ flagCode: "LV",
3011
+ country: "\u0141otwa",
3012
+ phoneNumberLengthByCountry_phLengthMax: 8,
3013
+ phoneNumberLengthByCountry_phLengthMin: 7,
3014
+ phoneNumberLengthByCountry_phLength: "7 or 8"
3015
+ },
3016
+ {
3017
+ flagCode: "MK",
3018
+ country: "Macedonia P\xF3\u0142nocna",
3019
+ phoneNumberLengthByCountry_phLengthMax: 8,
3020
+ phoneNumberLengthByCountry_phLengthMin: 8,
3021
+ phoneNumberLengthByCountry_phLength: 8
3022
+ },
3023
+ {
3024
+ flagCode: "BH",
3025
+ country: "Bahrajn",
3026
+ phoneNumberLengthByCountry_phLengthMax: 8,
3027
+ phoneNumberLengthByCountry_phLengthMin: 8,
3028
+ phoneNumberLengthByCountry_phLength: 8
3029
+ },
3030
+ {
3031
+ flagCode: "SZ",
3032
+ country: "Eswatini",
3033
+ phoneNumberLengthByCountry_phLengthMax: 8,
3034
+ phoneNumberLengthByCountry_phLengthMin: 7,
3035
+ phoneNumberLengthByCountry_phLength: "7 to 8"
3036
+ },
3037
+ {
3038
+ flagCode: "BT",
3039
+ country: "Bhutan",
3040
+ phoneNumberLengthByCountry_phLengthMax: 8,
3041
+ phoneNumberLengthByCountry_phLengthMin: 7,
3042
+ phoneNumberLengthByCountry_phLength: "7 to 8"
3043
+ },
3044
+ {
3045
+ flagCode: "MO",
3046
+ country: "Makao",
3047
+ phoneNumberLengthByCountry_phLengthMax: 8,
3048
+ phoneNumberLengthByCountry_phLengthMin: 7,
3049
+ phoneNumberLengthByCountry_phLength: "7 to 8"
3050
+ },
3051
+ {
3052
+ flagCode: "MT",
3053
+ country: "Malta",
3054
+ phoneNumberLengthByCountry_phLengthMax: 8,
3055
+ phoneNumberLengthByCountry_phLengthMin: 8,
3056
+ phoneNumberLengthByCountry_phLength: 8
3057
+ },
3058
+ {
3059
+ flagCode: "CW",
3060
+ country: "Cura\xE7ao",
3061
+ phoneNumberLengthByCountry_phLengthMax: 8,
3062
+ phoneNumberLengthByCountry_phLengthMin: 7,
3063
+ phoneNumberLengthByCountry_phLength: "7 to 8"
3064
+ },
3065
+ {
3066
+ flagCode: "GI",
3067
+ country: "Gibraltar",
3068
+ phoneNumberLengthByCountry_phLengthMax: 8,
3069
+ phoneNumberLengthByCountry_phLengthMin: 8,
3070
+ phoneNumberLengthByCountry_phLength: 8
3071
+ },
3072
+ {
3073
+ flagCode: "TD",
3074
+ country: "Czad",
3075
+ phoneNumberLengthByCountry_phLengthMax: 7,
3076
+ phoneNumberLengthByCountry_phLengthMin: 6,
3077
+ phoneNumberLengthByCountry_phLength: "6 to 7"
3078
+ },
3079
+ {
3080
+ flagCode: "TG",
3081
+ country: "Togo",
3082
+ phoneNumberLengthByCountry_phLengthMax: 7,
3083
+ phoneNumberLengthByCountry_phLengthMin: 7,
3084
+ phoneNumberLengthByCountry_phLength: 7
3085
+ },
3086
+ {
3087
+ flagCode: "CG",
3088
+ country: "Republika Konga",
3089
+ phoneNumberLengthByCountry_phLengthMax: 7,
3090
+ phoneNumberLengthByCountry_phLengthMin: 6,
3091
+ phoneNumberLengthByCountry_phLength: "6 to 7"
3092
+ },
3093
+ {
3094
+ flagCode: "MR",
3095
+ country: "Mauretania",
3096
+ phoneNumberLengthByCountry_phLengthMax: 7,
3097
+ phoneNumberLengthByCountry_phLengthMin: 7,
3098
+ phoneNumberLengthByCountry_phLength: 7
3099
+ },
3100
+ {
3101
+ flagCode: "ER",
3102
+ country: "Erytrea",
3103
+ phoneNumberLengthByCountry_phLengthMax: 7,
3104
+ phoneNumberLengthByCountry_phLengthMin: 7,
3105
+ phoneNumberLengthByCountry_phLength: 7
3106
+ },
3107
+ {
3108
+ flagCode: "GM",
3109
+ country: "Gambia",
3110
+ phoneNumberLengthByCountry_phLengthMax: 7,
3111
+ phoneNumberLengthByCountry_phLengthMin: 7,
3112
+ phoneNumberLengthByCountry_phLength: 7
3113
+ },
3114
+ {
3115
+ flagCode: "GA",
3116
+ country: "Gabon",
3117
+ phoneNumberLengthByCountry_phLengthMax: 7,
3118
+ phoneNumberLengthByCountry_phLengthMin: 6,
3119
+ phoneNumberLengthByCountry_phLength: "6 or 7"
3120
+ },
3121
+ {
3122
+ flagCode: "GW",
3123
+ country: "Gwinea Bissau",
3124
+ phoneNumberLengthByCountry_phLengthMax: 7,
3125
+ phoneNumberLengthByCountry_phLengthMin: 7,
3126
+ phoneNumberLengthByCountry_phLength: 7
3127
+ },
3128
+ {
3129
+ flagCode: "TL",
3130
+ country: "Timor Wschodni",
3131
+ phoneNumberLengthByCountry_phLengthMax: 7,
3132
+ phoneNumberLengthByCountry_phLengthMin: 7,
3133
+ phoneNumberLengthByCountry_phLength: 7
3134
+ },
3135
+ {
3136
+ flagCode: "MU",
3137
+ country: "Mauritius",
3138
+ phoneNumberLengthByCountry_phLengthMax: 7,
3139
+ phoneNumberLengthByCountry_phLengthMin: 7,
3140
+ phoneNumberLengthByCountry_phLength: 7
3141
+ },
3142
+ {
3143
+ flagCode: "FJ",
3144
+ country: "Fid\u017Ci",
3145
+ phoneNumberLengthByCountry_phLengthMax: 7,
3146
+ phoneNumberLengthByCountry_phLengthMin: 7,
3147
+ phoneNumberLengthByCountry_phLength: 7
3148
+ },
3149
+ {
3150
+ flagCode: "KM",
3151
+ country: "Komory",
3152
+ phoneNumberLengthByCountry_phLengthMax: 7,
3153
+ phoneNumberLengthByCountry_phLengthMin: 7,
3154
+ phoneNumberLengthByCountry_phLength: 7
3155
+ },
3156
+ {
3157
+ flagCode: "GY",
3158
+ country: "Gujana",
3159
+ phoneNumberLengthByCountry_phLengthMax: 7,
3160
+ phoneNumberLengthByCountry_phLengthMin: 7,
3161
+ phoneNumberLengthByCountry_phLength: 7
3162
+ },
3163
+ {
3164
+ flagCode: "SR",
3165
+ country: "Surinam",
3166
+ phoneNumberLengthByCountry_phLengthMax: 7,
3167
+ phoneNumberLengthByCountry_phLengthMin: 6,
3168
+ phoneNumberLengthByCountry_phLength: "6 to 7"
3169
+ },
3170
+ {
3171
+ flagCode: "MV",
3172
+ country: "Malediwy",
3173
+ phoneNumberLengthByCountry_phLengthMax: 7,
3174
+ phoneNumberLengthByCountry_phLengthMin: 7,
3175
+ phoneNumberLengthByCountry_phLength: 7
3176
+ },
3177
+ {
3178
+ flagCode: "CV",
3179
+ country: "Wyspy Zielonego Przyl\u0105dka",
3180
+ phoneNumberLengthByCountry_phLengthMax: 7,
3181
+ phoneNumberLengthByCountry_phLengthMin: 7,
3182
+ phoneNumberLengthByCountry_phLength: 7
3183
+ },
3184
+ {
3185
+ flagCode: "BN",
3186
+ country: "Brunei",
3187
+ phoneNumberLengthByCountry_phLengthMax: 7,
3188
+ phoneNumberLengthByCountry_phLengthMin: 7,
3189
+ phoneNumberLengthByCountry_phLength: 7
3190
+ },
3191
+ {
3192
+ flagCode: "BZ",
3193
+ country: "Belize",
3194
+ phoneNumberLengthByCountry_phLengthMax: 7,
3195
+ phoneNumberLengthByCountry_phLengthMin: 7,
3196
+ phoneNumberLengthByCountry_phLength: 7
3197
+ },
3198
+ {
3199
+ flagCode: "VU",
3200
+ country: "Vanuatu",
3201
+ phoneNumberLengthByCountry_phLengthMax: 7,
3202
+ phoneNumberLengthByCountry_phLengthMin: 5,
3203
+ phoneNumberLengthByCountry_phLength: "5 or 7"
3204
+ },
3205
+ {
3206
+ flagCode: "ST",
3207
+ country: "Wyspy \u015Awi\u0119tego Tomasza i Ksi\u0105\u017C\u0119ca",
3208
+ phoneNumberLengthByCountry_phLengthMax: 7,
3209
+ phoneNumberLengthByCountry_phLengthMin: 7,
3210
+ phoneNumberLengthByCountry_phLength: 7
3211
+ },
3212
+ {
3213
+ flagCode: "WS",
3214
+ country: "Samoa",
3215
+ phoneNumberLengthByCountry_phLengthMax: 7,
3216
+ phoneNumberLengthByCountry_phLengthMin: 3,
3217
+ phoneNumberLengthByCountry_phLength: "3 to 7"
3218
+ },
3219
+ {
3220
+ flagCode: "FM",
3221
+ country: "Mikronezja",
3222
+ phoneNumberLengthByCountry_phLengthMax: 7,
3223
+ phoneNumberLengthByCountry_phLengthMin: 7,
3224
+ phoneNumberLengthByCountry_phLength: 7
3225
+ },
3226
+ {
3227
+ flagCode: "AW",
3228
+ country: "Aruba",
3229
+ phoneNumberLengthByCountry_phLengthMax: 7,
3230
+ phoneNumberLengthByCountry_phLengthMin: 7,
3231
+ phoneNumberLengthByCountry_phLength: 7
3232
+ },
3233
+ {
3234
+ flagCode: "TO",
3235
+ country: "Tonga",
3236
+ phoneNumberLengthByCountry_phLengthMax: 7,
3237
+ phoneNumberLengthByCountry_phLengthMin: 5,
3238
+ phoneNumberLengthByCountry_phLength: "5 or 7"
3239
+ },
3240
+ {
3241
+ flagCode: "MH",
3242
+ country: "Wyspy Marshalla",
3243
+ phoneNumberLengthByCountry_phLengthMax: 7,
3244
+ phoneNumberLengthByCountry_phLengthMin: 7,
3245
+ phoneNumberLengthByCountry_phLength: 7
3246
+ },
3247
+ {
3248
+ flagCode: "PW",
3249
+ country: "Palau",
3250
+ phoneNumberLengthByCountry_phLengthMax: 7,
3251
+ phoneNumberLengthByCountry_phLengthMin: 7,
3252
+ phoneNumberLengthByCountry_phLength: 7
3253
+ },
3254
+ {
3255
+ flagCode: "NR",
3256
+ country: "Nauru",
3257
+ phoneNumberLengthByCountry_phLengthMax: 7,
3258
+ phoneNumberLengthByCountry_phLengthMin: 4,
3259
+ phoneNumberLengthByCountry_phLength: "4 or 7"
3260
+ },
3261
+ {
3262
+ flagCode: "GQ",
3263
+ country: "Gwinea R\xF3wnikowa",
3264
+ phoneNumberLengthByCountry_phLengthMax: 6,
3265
+ phoneNumberLengthByCountry_phLengthMin: 6,
3266
+ phoneNumberLengthByCountry_phLength: 6
3267
+ },
3268
+ {
3269
+ flagCode: "DJ",
3270
+ country: "D\u017Cibuti",
3271
+ phoneNumberLengthByCountry_phLengthMax: 6,
3272
+ phoneNumberLengthByCountry_phLengthMin: 6,
3273
+ phoneNumberLengthByCountry_phLength: 6
3274
+ },
3275
+ {
3276
+ flagCode: "NC",
3277
+ country: "Nowa Kaledonia",
3278
+ phoneNumberLengthByCountry_phLengthMax: 6,
3279
+ phoneNumberLengthByCountry_phLengthMin: 6,
3280
+ phoneNumberLengthByCountry_phLength: 6
3281
+ },
3282
+ {
3283
+ flagCode: "PF",
3284
+ country: "Polinezja Francuska",
3285
+ phoneNumberLengthByCountry_phLengthMax: 6,
3286
+ phoneNumberLengthByCountry_phLengthMin: 6,
3287
+ phoneNumberLengthByCountry_phLength: 6
3288
+ },
3289
+ {
3290
+ flagCode: "SC",
3291
+ country: "Seszele",
3292
+ phoneNumberLengthByCountry_phLengthMax: 6,
3293
+ phoneNumberLengthByCountry_phLengthMin: 6,
3294
+ phoneNumberLengthByCountry_phLength: 6
3295
+ },
3296
+ {
3297
+ flagCode: "FO",
3298
+ country: "Wyspy Owcze",
3299
+ phoneNumberLengthByCountry_phLengthMax: 6,
3300
+ phoneNumberLengthByCountry_phLengthMin: 6,
3301
+ phoneNumberLengthByCountry_phLength: 6
3302
+ },
3303
+ {
3304
+ flagCode: "GL",
3305
+ country: "Grenlandia",
3306
+ phoneNumberLengthByCountry_phLengthMax: 6,
3307
+ phoneNumberLengthByCountry_phLengthMin: 6,
3308
+ phoneNumberLengthByCountry_phLength: 6
3309
+ },
3310
+ {
3311
+ flagCode: "WF",
3312
+ country: "Wallis i Futuna",
3313
+ phoneNumberLengthByCountry_phLengthMax: 6,
3314
+ phoneNumberLengthByCountry_phLengthMin: 6,
3315
+ phoneNumberLengthByCountry_phLength: 6
3316
+ },
3317
+ {
3318
+ flagCode: "TV",
3319
+ country: "Tuvalu",
3320
+ phoneNumberLengthByCountry_phLengthMax: 6,
3321
+ phoneNumberLengthByCountry_phLengthMin: 5,
3322
+ phoneNumberLengthByCountry_phLength: "5 or 6"
3323
+ },
3324
+ {
3325
+ flagCode: "PM",
3326
+ country: "Saint-Pierre i Miquelon",
3327
+ phoneNumberLengthByCountry_phLengthMax: 6,
3328
+ phoneNumberLengthByCountry_phLengthMin: 6,
3329
+ phoneNumberLengthByCountry_phLength: 6
3330
+ },
3331
+ {
3332
+ flagCode: "SB",
3333
+ country: "Wyspy Salomona",
3334
+ phoneNumberLengthByCountry_phLengthMax: 5,
3335
+ phoneNumberLengthByCountry_phLengthMin: 5,
3336
+ phoneNumberLengthByCountry_phLength: 5
3337
+ },
3338
+ {
3339
+ flagCode: "KI",
3340
+ country: "Kiribati",
3341
+ phoneNumberLengthByCountry_phLengthMax: 5,
3342
+ phoneNumberLengthByCountry_phLengthMin: 5,
3343
+ phoneNumberLengthByCountry_phLength: 5
3344
+ },
3345
+ {
3346
+ flagCode: "CK",
3347
+ country: "Wyspy Cooka",
3348
+ phoneNumberLengthByCountry_phLengthMax: 5,
3349
+ phoneNumberLengthByCountry_phLengthMin: 5,
3350
+ phoneNumberLengthByCountry_phLength: 5
3351
+ },
3352
+ {
3353
+ flagCode: "FK",
3354
+ country: "Falklandy",
3355
+ phoneNumberLengthByCountry_phLengthMax: 5,
3356
+ phoneNumberLengthByCountry_phLengthMin: 5,
3357
+ phoneNumberLengthByCountry_phLength: 5
3358
+ },
3359
+ {
3360
+ flagCode: "TK",
3361
+ country: "Tokelau",
3362
+ phoneNumberLengthByCountry_phLengthMax: 4,
3363
+ phoneNumberLengthByCountry_phLengthMin: 4,
3364
+ phoneNumberLengthByCountry_phLength: 4
3365
+ },
3366
+ {
3367
+ flagCode: "NU",
3368
+ country: "Niue",
3369
+ phoneNumberLengthByCountry_phLengthMax: 4,
3370
+ phoneNumberLengthByCountry_phLengthMin: 4,
3371
+ phoneNumberLengthByCountry_phLength: 4
3372
+ }
3373
+ ]
3374
+ };
3375
+ var COUNTRIES = countries_default.countries.map((c) => {
3376
+ let dialCode = "";
3377
+ try {
3378
+ dialCode = "+" + libphonenumberJs.getCountryCallingCode(c.flagCode);
3379
+ } catch {
3380
+ dialCode = "";
3381
+ }
3382
+ return {
3383
+ flagCode: c.flagCode,
3384
+ country: c.country,
3385
+ dialCode,
3386
+ maxLength: c.phoneNumberLengthByCountry_phLengthMax,
3387
+ minLength: c.phoneNumberLengthByCountry_phLengthMin ?? 1
3388
+ };
3389
+ }).sort((a, b) => a.country.localeCompare(b.country, "pl"));
3390
+ var DEFAULT_COUNTRY = COUNTRIES.find((c) => c.flagCode === "US") ?? COUNTRIES[0];
3391
+ var wrapperColors = (theme, error, focused) => ({
3392
+ borderColor: focused ? error ? theme.palette.error.main : theme.palette.primary.main : error ? theme.palette.error.main : theme.palette.divider,
3393
+ boxShadow: focused ? `0 0 0 3px ${error ? theme.palette.error.main : theme.palette.primary.main}33` : "none",
3394
+ "&:hover": {
3395
+ borderColor: !focused ? error ? theme.palette.error.dark : theme.palette.text.secondary : void 0
3396
+ }
3397
+ });
3398
+ var Root6 = styles.styled("div")(({ $fullWidth }) => ({
3399
+ display: $fullWidth ? "block" : "inline-block",
3400
+ width: $fullWidth ? "100%" : "auto"
3401
+ }));
3402
+ var InputWrapper2 = styles.styled("div")(
3403
+ ({ theme, $size, $fullWidth, $error, $focused, $disabled }) => ({
3404
+ position: "relative",
3405
+ display: "inline-flex",
3406
+ alignItems: "center",
3407
+ width: $fullWidth ? "100%" : "auto",
3408
+ height: inputHeightMap[$size],
3409
+ borderRadius: theme.shape.borderRadius,
3410
+ border: "1px solid",
3411
+ backgroundColor: $disabled ? theme.palette.action.disabledBackground : theme.palette.background.paper,
3412
+ transition: "border-color 150ms ease, box-shadow 150ms ease",
3413
+ fontSize: inputSizeMap[$size].fontSize,
3414
+ overflow: "visible",
3415
+ ...$disabled ? {
3416
+ borderColor: theme.palette.action.disabled,
3417
+ pointerEvents: "none"
3418
+ } : wrapperColors(theme, $error, $focused)
3419
+ })
3420
+ );
3421
+ var CountryTrigger = styles.styled("button")(({ theme, $size }) => ({
3422
+ display: "inline-flex",
3423
+ alignItems: "center",
3424
+ alignSelf: "stretch",
3425
+ gap: "0.375rem",
3426
+ flexShrink: 0,
3427
+ padding: inputSizeMap[$size].padding,
3428
+ paddingBlock: 0,
3429
+ background: "none",
3430
+ border: "none",
3431
+ outline: "none",
3432
+ cursor: "pointer",
3433
+ color: theme.palette.text.primary,
3434
+ fontFamily: theme.typography.fontFamily,
3435
+ fontSize: "inherit",
3436
+ borderRadius: `${theme.shape.borderRadius}px 0 0 ${theme.shape.borderRadius}px`,
3437
+ "&:hover": {
3438
+ backgroundColor: theme.palette.action.hover
3439
+ },
3440
+ "&:disabled": {
3441
+ color: theme.palette.action.disabled,
3442
+ cursor: "not-allowed"
3443
+ }
3444
+ }));
3445
+ var DialCode = styles.styled("span")({
3446
+ fontVariantNumeric: "tabular-nums",
3447
+ whiteSpace: "nowrap"
3448
+ });
3449
+ var ChevronIcon = styles.styled("span")(({ $open }) => ({
3450
+ display: "inline-flex",
3451
+ alignItems: "center",
3452
+ transition: "transform 150ms ease",
3453
+ transform: $open ? "rotate(180deg)" : "rotate(0deg)"
3454
+ }));
3455
+ var Divider = styles.styled("span")(({ theme }) => ({
3456
+ width: "1px",
3457
+ alignSelf: "stretch",
3458
+ backgroundColor: theme.palette.divider,
3459
+ flexShrink: 0,
3460
+ margin: "4px 0"
3461
+ }));
3462
+ var StyledInput2 = styles.styled("input")(({ theme, $size }) => ({
3463
+ flex: 1,
3464
+ minWidth: 0,
3465
+ border: "none",
3466
+ outline: "none",
3467
+ background: "transparent",
3468
+ fontFamily: theme.typography.fontFamily,
3469
+ fontSize: "inherit",
3470
+ color: theme.palette.text.primary,
3471
+ padding: inputSizeMap[$size].padding,
3472
+ paddingBlock: 0,
3473
+ "&::placeholder": {
3474
+ color: theme.palette.text.disabled
3475
+ },
3476
+ "&:disabled": {
3477
+ color: theme.palette.action.disabled,
3478
+ cursor: "not-allowed"
3479
+ }
3480
+ }));
3481
+ var DropdownPanel3 = styles.styled(DropdownPanel)({
3482
+ minWidth: "280px",
3483
+ display: "flex",
3484
+ flexDirection: "column",
3485
+ overflow: "hidden"
3486
+ });
3487
+ var SearchBox = styles.styled("div")(({ theme }) => ({
3488
+ padding: "0.5rem",
3489
+ borderBottom: `1px solid ${theme.palette.divider}`,
3490
+ flexShrink: 0
3491
+ }));
3492
+ var SearchInput2 = styles.styled("input")(({ theme }) => ({
3493
+ width: "100%",
3494
+ border: `1px solid ${theme.palette.divider}`,
3495
+ borderRadius: theme.shape.borderRadius,
3496
+ padding: "0.25rem 0.5rem",
3497
+ fontSize: "0.875rem",
3498
+ fontFamily: theme.typography.fontFamily,
3499
+ color: theme.palette.text.primary,
3500
+ background: theme.palette.background.paper,
3501
+ outline: "none",
3502
+ "&:focus": {
3503
+ borderColor: theme.palette.primary.main,
3504
+ boxShadow: `0 0 0 2px ${theme.palette.primary.main}33`
3505
+ },
3506
+ "&::placeholder": {
3507
+ color: theme.palette.text.disabled
3508
+ }
3509
+ }));
3510
+ var OptionList = styles.styled("ul")({
3511
+ listStyle: "none",
3512
+ margin: 0,
3513
+ padding: "0.25rem 0",
3514
+ overflowY: "auto",
3515
+ maxHeight: "220px"
3516
+ });
3517
+ var OptionItem2 = styles.styled("li")(({ theme, $selected }) => ({
3518
+ display: "flex",
3519
+ alignItems: "center",
3520
+ gap: "0.5rem",
3521
+ padding: "0.375rem 0.75rem",
3522
+ cursor: "pointer",
3523
+ fontSize: "0.875rem",
3524
+ fontFamily: theme.typography.fontFamily,
3525
+ color: theme.palette.text.primary,
3526
+ backgroundColor: $selected ? theme.palette.action.selected : "transparent",
3527
+ "&:hover": {
3528
+ backgroundColor: $selected ? theme.palette.action.selected : theme.palette.action.hover
3529
+ }
3530
+ }));
3531
+ var CountryName = styles.styled("span")({
3532
+ flex: 1,
3533
+ overflow: "hidden",
3534
+ textOverflow: "ellipsis",
3535
+ whiteSpace: "nowrap"
3536
+ });
3537
+ var OptionDialCode = styles.styled("span")(({ theme }) => ({
3538
+ color: theme.palette.text.secondary,
3539
+ flexShrink: 0,
3540
+ fontVariantNumeric: "tabular-nums"
3541
+ }));
3542
+ var EmptyMessage = styles.styled("p")(({ theme }) => ({
3543
+ margin: 0,
3544
+ padding: "0.75rem",
3545
+ textAlign: "center",
3546
+ fontSize: "0.875rem",
3547
+ color: theme.palette.text.secondary
3548
+ }));
3549
+ var PhoneInput = react$1.forwardRef(
3550
+ ({
3551
+ value,
3552
+ defaultValue = "",
3553
+ defaultCountry,
3554
+ onChange,
3555
+ onCountryChange,
3556
+ label,
3557
+ helperText,
3558
+ error = false,
3559
+ size = "md",
3560
+ fullWidth = false,
3561
+ disabled = false,
3562
+ placeholder,
3563
+ id,
3564
+ countrySelectAriaLabel = (country, dialCode) => `Wybierz kraj, aktualny: ${country} (${dialCode})`,
3565
+ phoneAriaLabel = "Numer telefonu",
3566
+ countryListAriaLabel = "Wybierz kraj",
3567
+ countrySearchPlaceholder = "Szukaj kraju\u2026",
3568
+ countrySearchAriaLabel = "Szukaj kraju",
3569
+ digitsLabel = "cyfr"
3570
+ }, ref) => {
3571
+ const autoId = react$1.useId();
3572
+ const inputId = id ?? autoId;
3573
+ const listboxId = `${inputId}-listbox`;
3574
+ const initialCountry = react$1.useMemo(
3575
+ () => COUNTRIES.find((c) => c.flagCode === defaultCountry) ?? DEFAULT_COUNTRY,
3576
+ [defaultCountry]
3577
+ );
3578
+ const [selectedCountry, setSelectedCountry] = react$1.useState(initialCountry);
3579
+ const [isOpen, setIsOpen] = react$1.useState(false);
3580
+ const [searchQuery, setSearchQuery] = react$1.useState("");
3581
+ const [focused, setFocused] = react$1.useState(false);
3582
+ const isControlled = value !== void 0;
3583
+ const [internalValue, setInternalValue] = react$1.useState(defaultValue);
3584
+ const phoneValue = isControlled ? value : internalValue;
3585
+ const rootRef = react$1.useRef(null);
3586
+ const searchRef = react$1.useRef(null);
3587
+ const filteredCountries = react$1.useMemo(() => {
3588
+ const q = searchQuery.toLowerCase().trim();
3589
+ if (!q) return COUNTRIES;
3590
+ return COUNTRIES.filter(
3591
+ (c) => c.country.toLowerCase().includes(q) || c.flagCode.toLowerCase().includes(q) || c.dialCode.includes(q)
3592
+ );
3593
+ }, [searchQuery]);
3594
+ const close = react$1.useCallback(() => {
3595
+ setIsOpen(false);
3596
+ setSearchQuery("");
3597
+ }, []);
3598
+ const openDropdown = () => {
3599
+ if (disabled) return;
3600
+ setIsOpen((prev) => !prev);
3601
+ if (!isOpen) {
3602
+ setTimeout(() => searchRef.current?.focus(), 0);
3603
+ }
3604
+ };
3605
+ const selectCountry = (country) => {
3606
+ setSelectedCountry(country);
3607
+ onCountryChange?.(country);
3608
+ close();
3609
+ if (!isControlled) setInternalValue("");
3610
+ onChange?.("", { country, dialCode: country.dialCode, fullNumber: country.dialCode });
3611
+ };
3612
+ const handlePhoneChange = (e) => {
3613
+ const raw = e.target.value.replace(/\D/g, "");
3614
+ const clamped = raw.slice(0, selectedCountry.maxLength);
3615
+ if (!isControlled) setInternalValue(clamped);
3616
+ onChange?.(clamped, {
3617
+ country: selectedCountry,
3618
+ dialCode: selectedCountry.dialCode,
3619
+ fullNumber: selectedCountry.dialCode + clamped
3620
+ });
3621
+ };
3622
+ const handlePhoneKeyDown = (e) => {
3623
+ if (e.ctrlKey || e.metaKey || e.altKey || e.key.length > 1) return;
3624
+ if (!/^\d$/.test(e.key)) e.preventDefault();
3625
+ };
3626
+ react$1.useEffect(() => {
3627
+ if (!isOpen) return;
3628
+ const handler = (e) => {
3629
+ if (rootRef.current && !rootRef.current.contains(e.target)) close();
3630
+ };
3631
+ document.addEventListener("mousedown", handler);
3632
+ return () => document.removeEventListener("mousedown", handler);
3633
+ }, [isOpen, close]);
3634
+ const derivedPlaceholder = placeholder ?? (selectedCountry.minLength === selectedCountry.maxLength ? `${selectedCountry.maxLength} ${digitsLabel}` : `${selectedCountry.minLength}\u2013${selectedCountry.maxLength} ${digitsLabel}`);
3635
+ return /* @__PURE__ */ jsxRuntime.jsxs(Root6, { $fullWidth: fullWidth, ref: rootRef, children: [
3636
+ label && /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: inputId, error, size, children: label }),
3637
+ /* @__PURE__ */ jsxRuntime.jsxs(
3638
+ InputWrapper2,
3639
+ {
3640
+ $size: size,
3641
+ $fullWidth: fullWidth,
3642
+ $error: error,
3643
+ $focused: focused || isOpen,
3644
+ $disabled: disabled,
3645
+ "data-disabled": disabled || void 0,
3646
+ children: [
3647
+ /* @__PURE__ */ jsxRuntime.jsxs(
3648
+ CountryTrigger,
3649
+ {
3650
+ type: "button",
3651
+ $size: size,
3652
+ disabled,
3653
+ "aria-haspopup": "listbox",
3654
+ "aria-expanded": isOpen,
3655
+ "aria-controls": isOpen ? listboxId : void 0,
3656
+ "aria-label": countrySelectAriaLabel(selectedCountry.country, selectedCountry.dialCode),
3657
+ onClick: openDropdown,
3658
+ onKeyDown: (e) => e.key === "Escape" && close(),
3659
+ onFocus: () => setFocused(true),
3660
+ onBlur: () => setFocused(false),
3661
+ children: [
3662
+ /* @__PURE__ */ jsxRuntime.jsx(CountryFlag, { countryCode: selectedCountry.flagCode, size }),
3663
+ /* @__PURE__ */ jsxRuntime.jsx(DialCode, { children: selectedCountry.dialCode }),
3664
+ /* @__PURE__ */ jsxRuntime.jsx(ChevronIcon, { $open: isOpen, children: /* @__PURE__ */ jsxRuntime.jsx(Chevron, {}) })
3665
+ ]
3666
+ }
3667
+ ),
3668
+ /* @__PURE__ */ jsxRuntime.jsx(Divider, { "aria-hidden": true }),
3669
+ /* @__PURE__ */ jsxRuntime.jsx(
3670
+ StyledInput2,
3671
+ {
3672
+ ref,
3673
+ id: inputId,
3674
+ $size: size,
3675
+ type: "tel",
3676
+ inputMode: "numeric",
3677
+ value: phoneValue,
3678
+ onChange: handlePhoneChange,
3679
+ onKeyDown: handlePhoneKeyDown,
3680
+ onFocus: () => setFocused(true),
3681
+ onBlur: () => setFocused(false),
3682
+ disabled,
3683
+ placeholder: derivedPlaceholder,
3684
+ maxLength: selectedCountry.maxLength,
3685
+ "aria-label": label ? void 0 : phoneAriaLabel
3686
+ }
3687
+ ),
3688
+ isOpen && /* @__PURE__ */ jsxRuntime.jsxs(DropdownPanel3, { id: listboxId, role: "listbox", "aria-label": countryListAriaLabel, children: [
3689
+ /* @__PURE__ */ jsxRuntime.jsx(SearchBox, { children: /* @__PURE__ */ jsxRuntime.jsx(
3690
+ SearchInput2,
3691
+ {
3692
+ ref: searchRef,
3693
+ type: "search",
3694
+ placeholder: countrySearchPlaceholder,
3695
+ value: searchQuery,
3696
+ onChange: (e) => setSearchQuery(e.target.value),
3697
+ onKeyDown: (e) => e.key === "Escape" && close(),
3698
+ "aria-label": countrySearchAriaLabel
3699
+ }
3700
+ ) }),
3701
+ /* @__PURE__ */ jsxRuntime.jsx(OptionList, { children: filteredCountries.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(EmptyMessage, { children: "Nie znaleziono kraju" }) : filteredCountries.map((country) => {
3702
+ const isSelected = country.flagCode === selectedCountry.flagCode;
3703
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3704
+ OptionItem2,
3705
+ {
3706
+ role: "option",
3707
+ "aria-selected": isSelected,
3708
+ $selected: isSelected,
3709
+ onClick: () => selectCountry(country),
3710
+ onKeyDown: (e) => e.key === "Enter" && selectCountry(country),
3711
+ tabIndex: 0,
3712
+ children: [
3713
+ /* @__PURE__ */ jsxRuntime.jsx(CountryFlag, { countryCode: country.flagCode, size: "sm" }),
3714
+ /* @__PURE__ */ jsxRuntime.jsx(CountryName, { children: country.country }),
3715
+ /* @__PURE__ */ jsxRuntime.jsx(OptionDialCode, { children: country.dialCode })
3716
+ ]
3717
+ },
3718
+ country.flagCode
3719
+ );
3720
+ }) })
3721
+ ] })
3722
+ ]
3723
+ }
3724
+ ),
3725
+ helperText && /* @__PURE__ */ jsxRuntime.jsx(HelperText, { error, children: helperText })
3726
+ ] });
3727
+ }
3728
+ );
3729
+ PhoneInput.displayName = "PhoneInput";
3730
+ var TextInput = react$1.forwardRef(
3731
+ ({ type = "text", ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(BaseInput, { ref, type, ...rest })
3732
+ );
3733
+ TextInput.displayName = "TextInput";
3734
+ var BREAKPOINT_MAP = {
3735
+ base: "xs",
3736
+ sm: "sm",
3737
+ md: "md",
3738
+ lg: "lg",
3739
+ xl: "xl",
3740
+ "2xl": "xl"
3741
+ };
3742
+ var GAP_MAP = {
3743
+ 0: "0",
3744
+ 1: "0.25rem",
3745
+ 2: "0.5rem",
3746
+ 3: "0.75rem",
3747
+ 4: "1rem",
3748
+ 5: "1.25rem",
3749
+ 6: "1.5rem",
3750
+ 8: "2rem",
3751
+ 10: "2.5rem",
3752
+ 12: "3rem"
3753
+ };
3754
+ var COLS_MAP = {
3755
+ 1: "repeat(1, minmax(0, 1fr))",
3756
+ 2: "repeat(2, minmax(0, 1fr))",
3757
+ 3: "repeat(3, minmax(0, 1fr))",
3758
+ 4: "repeat(4, minmax(0, 1fr))",
3759
+ 5: "repeat(5, minmax(0, 1fr))",
3760
+ 6: "repeat(6, minmax(0, 1fr))",
3761
+ 7: "repeat(7, minmax(0, 1fr))",
3762
+ 8: "repeat(8, minmax(0, 1fr))",
3763
+ 9: "repeat(9, minmax(0, 1fr))",
3764
+ 10: "repeat(10, minmax(0, 1fr))",
3765
+ 11: "repeat(11, minmax(0, 1fr))",
3766
+ 12: "repeat(12, minmax(0, 1fr))"
3767
+ };
3768
+ var StyledBox = styles.styled("div")(
3769
+ ({ theme, $isGrid, $direction, $wrap, $gap, $cols, $rows }) => {
3770
+ const css = { display: $isGrid ? "grid" : "flex" };
3771
+ function apply(value, toCss) {
3772
+ if (value === void 0 || value === null) return;
3773
+ if (typeof value !== "object") {
3774
+ Object.assign(css, toCss(value));
3775
+ return;
3776
+ }
3777
+ for (const [bp, val] of Object.entries(value)) {
3778
+ if (val === void 0) continue;
3779
+ const muiBp = BREAKPOINT_MAP[bp];
3780
+ if (muiBp === "xs") {
3781
+ Object.assign(css, toCss(val));
3782
+ } else {
3783
+ const mq = theme.breakpoints.up(muiBp);
3784
+ css[mq] = { ...css[mq], ...toCss(val) };
3785
+ }
3786
+ }
3787
+ }
3788
+ apply($direction, (v) => ({ flexDirection: v === "col" ? "column" : "row" }));
3789
+ apply($wrap, (v) => ({ flexWrap: v }));
3790
+ apply($gap, (v) => ({ gap: GAP_MAP[v] }));
3791
+ if ($isGrid) {
3792
+ apply($cols, (v) => ({ gridTemplateColumns: COLS_MAP[v] }));
3793
+ apply($rows, (v) => ({ gridTemplateRows: COLS_MAP[v] }));
3794
+ }
3795
+ return css;
3796
+ }
3797
+ );
3798
+ var Box2 = react$1.forwardRef(
3799
+ ({ direction = "row", wrap = "nowrap", gap = 0, cols, rows, children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
3800
+ StyledBox,
3801
+ {
3802
+ ref,
3803
+ $isGrid: !!(cols || rows),
3804
+ $direction: direction,
3805
+ $wrap: wrap,
3806
+ $gap: gap,
3807
+ $cols: cols,
3808
+ $rows: rows,
3809
+ ...rest,
3810
+ children
3811
+ }
3812
+ )
3813
+ );
3814
+ Box2.displayName = "Box";
3815
+ var MAX_WIDTH_MAP = {
3816
+ sm: "40rem",
3817
+ md: "48rem",
3818
+ lg: "64rem",
3819
+ xl: "80rem",
3820
+ "2xl": "96rem",
3821
+ full: "100%"
3822
+ };
3823
+ var StyledContainer = styles.styled("div")(({ theme, $maxWidth }) => ({
3824
+ maxWidth: MAX_WIDTH_MAP[$maxWidth],
3825
+ marginLeft: "auto",
3826
+ marginRight: "auto",
3827
+ paddingLeft: "1.5rem",
3828
+ paddingRight: "1.5rem",
3829
+ width: "100%",
3830
+ [theme.breakpoints.up("sm")]: {
3831
+ paddingLeft: "2rem",
3832
+ paddingRight: "2rem"
3833
+ }
3834
+ }));
3835
+ var Container = react$1.forwardRef(
3836
+ ({ maxWidth = "xl", children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(StyledContainer, { ref, $maxWidth: maxWidth, ...rest, children })
3837
+ );
3838
+ Container.displayName = "Container";
3839
+ var StyledSection = styles.styled("section")(({ theme }) => ({
3840
+ paddingTop: "2rem",
3841
+ paddingBottom: "2rem",
3842
+ [theme.breakpoints.up("md")]: {
3843
+ paddingTop: "3rem",
3844
+ paddingBottom: "3rem"
3845
+ }
3846
+ }));
3847
+ var Section = react$1.forwardRef(({ children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(StyledSection, { ref, ...rest, children }));
3848
+ Section.displayName = "Section";
3849
+ var getTypographyStyles = (theme) => ({
3850
+ fontFamily: theme.typography.fontFamily,
3851
+ "& h1": { fontSize: "2.25rem", fontWeight: 500, letterSpacing: "-0.025em" },
3852
+ "& h2": { fontSize: "1.875rem", fontWeight: 500, letterSpacing: "-0.025em" },
3853
+ "& h3": { fontSize: "1.5rem", fontWeight: 500, letterSpacing: "-0.025em" },
3854
+ "& h4": { fontSize: "1.25rem", fontWeight: 500, letterSpacing: "-0.025em" },
3855
+ "& h5": { fontSize: "1.125rem", fontWeight: 500, letterSpacing: "-0.025em" },
3856
+ "& h6": { fontSize: "1rem", fontWeight: 500, letterSpacing: "-0.025em" },
3857
+ "& p": { fontSize: "1rem", lineHeight: 1.75, marginBottom: "1rem" },
3858
+ "& strong": { fontWeight: 600 },
3859
+ "& em": { fontStyle: "italic" },
3860
+ "& del": { textDecoration: "line-through" },
3861
+ "& small": { fontSize: "0.875rem", fontWeight: 500, lineHeight: 1 },
3862
+ "& sub, & sup": { fontSize: "0.875rem" },
3863
+ "& a": {
3864
+ textDecoration: "underline",
3865
+ textUnderlineOffset: "4px",
3866
+ textDecorationColor: styles.alpha(theme.palette.primary.main, 0.5),
3867
+ transition: "color 150ms ease, text-decoration-color 150ms ease",
3868
+ "&:hover": {
3869
+ color: theme.palette.primary.main,
3870
+ textDecorationColor: theme.palette.primary.main
3871
+ }
3872
+ },
3873
+ "& ul": {
3874
+ paddingLeft: 0,
3875
+ listStyle: "none",
3876
+ "& > li": { position: "relative", paddingLeft: "1.5rem", marginBottom: "0.5rem" },
3877
+ "& > li::before": {
3878
+ content: '""',
3879
+ position: "absolute",
3880
+ left: "0.25rem",
3881
+ top: "0.6875em",
3882
+ height: "0.375rem",
3883
+ width: "0.375rem",
3884
+ borderRadius: "50%",
3885
+ backgroundColor: styles.alpha(theme.palette.text.primary, 0.8)
3886
+ }
3887
+ },
3888
+ "& ol": {
3889
+ paddingLeft: "1.5rem",
3890
+ listStyleType: "decimal",
3891
+ "& > li": { paddingLeft: "0.5rem", marginBottom: "0.5rem" },
3892
+ "& ol": { listStyleType: "lower-alpha", paddingLeft: "1.5rem" },
3893
+ "& ol ol": { listStyleType: "lower-roman" }
3894
+ },
3895
+ "& code": {
3896
+ position: "relative",
3897
+ borderRadius: "0.25rem",
3898
+ backgroundColor: styles.alpha(theme.palette.grey[500], 0.1),
3899
+ padding: "0.2rem 0.3rem",
3900
+ fontFamily: "monospace",
3901
+ fontSize: "0.875rem",
3902
+ fontWeight: 500
3903
+ },
3904
+ "& pre": {
3905
+ overflowX: "auto",
3906
+ borderRadius: "0.5rem",
3907
+ border: `1px solid ${theme.palette.divider}`,
3908
+ backgroundColor: styles.alpha(theme.palette.grey[500], 0.1),
3909
+ padding: "1rem",
3910
+ margin: "1rem 0",
3911
+ "& code": {
3912
+ background: "transparent",
3913
+ padding: 0,
3914
+ fontSize: "0.875rem",
3915
+ display: "block",
3916
+ width: "100%"
3917
+ }
3918
+ },
3919
+ "& table": {
3920
+ width: "100%",
3921
+ margin: "1rem 0",
3922
+ borderRadius: "0.5rem",
3923
+ border: `1px solid ${theme.palette.divider}`,
3924
+ borderCollapse: "collapse",
3925
+ overflow: "hidden"
3926
+ },
3927
+ "& thead": { backgroundColor: styles.alpha(theme.palette.grey[500], 0.1) },
3928
+ "& tr": {
3929
+ borderBottom: `1px solid ${theme.palette.divider}`,
3930
+ "&:last-child": { borderBottom: "none" }
3931
+ },
3932
+ "& th": {
3933
+ padding: "0.5rem 1rem",
3934
+ textAlign: "left",
3935
+ fontWeight: 600,
3936
+ borderRight: `1px solid ${theme.palette.divider}`,
3937
+ "&:last-child": { borderRight: "none" }
3938
+ },
3939
+ "& td": {
3940
+ padding: "0.5rem 1rem",
3941
+ borderRight: `1px solid ${theme.palette.divider}`,
3942
+ "&:last-child": { borderRight: "none" }
3943
+ },
3944
+ "& img": {
3945
+ borderRadius: "0.5rem",
3946
+ border: `1px solid ${theme.palette.divider}`,
3947
+ margin: "1rem 0",
3948
+ maxWidth: "100%",
3949
+ height: "auto"
3950
+ },
3951
+ "& video": {
3952
+ borderRadius: "0.5rem",
3953
+ border: `1px solid ${theme.palette.divider}`,
3954
+ margin: "1rem 0"
3955
+ },
3956
+ "& figure": { margin: "1rem 0", "& img": { margin: 0 } },
3957
+ "& figcaption": {
3958
+ fontSize: "0.875rem",
3959
+ marginTop: "0.5rem",
3960
+ color: theme.palette.text.secondary
3961
+ },
3962
+ "& blockquote": {
3963
+ borderLeft: `4px solid ${styles.alpha(theme.palette.primary.main, 0.2)}`,
3964
+ paddingLeft: "1rem",
3965
+ paddingTop: "0.25rem",
3966
+ paddingBottom: "0.25rem",
3967
+ margin: "1rem 0",
3968
+ color: theme.palette.text.secondary
3969
+ },
3970
+ "& hr": {
3971
+ margin: "2rem 0",
3972
+ borderTop: `2px solid ${theme.palette.divider}`,
3973
+ borderBottom: "none"
3974
+ },
3975
+ "& abbr": { cursor: "help", textDecoration: "underline dotted", textUnderlineOffset: "4px" },
3976
+ "& kbd": {
3977
+ borderRadius: "0.375rem",
3978
+ border: `1px solid ${theme.palette.divider}`,
3979
+ backgroundColor: styles.alpha(theme.palette.grey[500], 0.1),
3980
+ padding: "0.125rem 0.375rem",
3981
+ fontSize: "0.875rem",
3982
+ fontFamily: "monospace"
3983
+ },
3984
+ "& mark": { backgroundColor: styles.alpha(theme.palette.primary.main, 0.1), padding: "0 0.25rem" },
3985
+ "& details": {
3986
+ borderRadius: "0.5rem",
3987
+ border: `1px solid ${theme.palette.divider}`,
3988
+ padding: "0.5rem 1rem",
3989
+ margin: "1rem 0"
3990
+ },
3991
+ "& summary": { cursor: "pointer", fontWeight: 600 }
3992
+ });
3993
+ var getHeaderSpacingStyles = () => ({
3994
+ "& h1": { marginTop: "2rem", marginBottom: "1rem" },
3995
+ "& h2": { marginTop: "2rem", marginBottom: "1rem" },
3996
+ "& h3": { marginTop: "1.5rem", marginBottom: "0.75rem" },
3997
+ "& h4": { marginTop: "1.5rem", marginBottom: "0.75rem" },
3998
+ "& h5": { marginTop: "1rem", marginBottom: "0.5rem" },
3999
+ "& h6": { marginTop: "1rem", marginBottom: "0.5rem" }
4000
+ });
4001
+ var spacingStyles = {
4002
+ "& > * + *": { marginTop: "1.5rem" }
4003
+ };
4004
+ var StyledMain = styles.styled("main")(({ theme }) => ({
4005
+ ...getTypographyStyles(theme)
4006
+ }));
4007
+ var Main = react$1.forwardRef(({ children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(StyledMain, { ref, ...rest, children }));
4008
+ Main.displayName = "Main";
4009
+ var StyledProse = styles.styled("div")(({ theme }) => ({
4010
+ ...getTypographyStyles(theme),
4011
+ ...spacingStyles
4012
+ }));
4013
+ var Prose = react$1.forwardRef(({ children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(StyledProse, { ref, ...rest, children }));
4014
+ Prose.displayName = "Prose";
4015
+ var StyledArticle = styles.styled("article")(({ theme }) => ({
4016
+ maxWidth: "56rem",
4017
+ marginLeft: "auto",
4018
+ marginRight: "auto",
4019
+ ...getTypographyStyles(theme),
4020
+ ...getHeaderSpacingStyles(),
4021
+ ...spacingStyles
4022
+ }));
4023
+ var Article = react$1.forwardRef(({ children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(StyledArticle, { ref, ...rest, children }));
4024
+ Article.displayName = "Article";
4025
+ var sizeMap3 = {
4026
+ sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
4027
+ md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
4028
+ lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
4029
+ };
4030
+ var activeStyles = (theme) => ({
4031
+ backgroundColor: theme.palette.primary.main,
4032
+ color: theme.palette.primary.contrastText,
4033
+ "&:hover:not(:disabled)": { backgroundColor: theme.palette.primary.dark }
4034
+ });
4035
+ var idleStyles = (theme) => ({
4036
+ backgroundColor: "transparent",
4037
+ color: theme.palette.text.primary,
4038
+ "&:hover:not(:disabled)": { backgroundColor: styles.alpha(theme.palette.primary.main, 0.08) },
4039
+ "&:active:not(:disabled)": { backgroundColor: styles.alpha(theme.palette.primary.main, 0.16) }
4040
+ });
4041
+ var StyledButton2 = styles.styled("button")(({ theme, $isActive, $size }) => ({
4042
+ appearance: "none",
4043
+ border: "none",
4044
+ cursor: "pointer",
4045
+ display: "inline-flex",
4046
+ alignItems: "center",
4047
+ justifyContent: "center",
4048
+ borderRadius: theme.shape.borderRadius,
4049
+ fontFamily: theme.typography.fontFamily,
4050
+ fontWeight: $isActive ? 700 : 400,
4051
+ lineHeight: 1,
4052
+ padding: "0 0.25rem",
4053
+ transition: "background-color 150ms ease",
4054
+ ...sizeMap3[$size],
4055
+ ...$isActive ? activeStyles(theme) : idleStyles(theme),
4056
+ "&:focus-visible": {
4057
+ outline: `3px solid ${theme.palette.primary.main}`,
4058
+ outlineOffset: "2px"
4059
+ },
4060
+ "&:disabled": {
4061
+ color: theme.palette.action.disabled,
4062
+ cursor: "not-allowed",
4063
+ pointerEvents: "none"
4064
+ }
4065
+ }));
4066
+ var PaginationButton = react$1.forwardRef(
4067
+ ({ onClick, isActive = false, disabled = false, size = "md", children, "aria-label": ariaLabel }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
4068
+ StyledButton2,
4069
+ {
4070
+ ref,
4071
+ type: "button",
4072
+ onClick,
4073
+ disabled,
4074
+ $isActive: isActive,
4075
+ $size: size,
4076
+ "aria-label": ariaLabel,
4077
+ "aria-current": isActive ? "page" : void 0,
4078
+ children
4079
+ }
4080
+ )
4081
+ );
4082
+ PaginationButton.displayName = "PaginationButton";
4083
+ var sizeMap4 = {
4084
+ sm: { minWidth: "1.75rem", height: "1.75rem", fontSize: "0.75rem" },
4085
+ md: { minWidth: "2rem", height: "2rem", fontSize: "0.875rem" },
4086
+ lg: { minWidth: "2.5rem", height: "2.5rem", fontSize: "1rem" }
4087
+ };
4088
+ var StyledEllipsis = styles.styled("span")(({ theme, $size }) => ({
4089
+ display: "inline-flex",
4090
+ alignItems: "center",
4091
+ justifyContent: "center",
4092
+ color: theme.palette.text.secondary,
4093
+ userSelect: "none",
4094
+ ...sizeMap4[$size]
4095
+ }));
4096
+ var PaginationEllipsis = ({ size = "md" }) => /* @__PURE__ */ jsxRuntime.jsx(StyledEllipsis, { $size: size, "aria-hidden": "true", children: "\u2026" });
4097
+ PaginationEllipsis.displayName = "PaginationEllipsis";
4098
+ var Nav = styles.styled("nav")({
4099
+ display: "inline-flex",
4100
+ alignItems: "center",
4101
+ gap: "0.25rem"
4102
+ });
4103
+ var DOTS = "DOTS";
4104
+ function buildPageItems(currentPage, totalPages, siblingCount) {
4105
+ const totalSlots = siblingCount * 2 + 5;
4106
+ if (totalPages <= totalSlots) {
4107
+ return Array.from({ length: totalPages }, (_, i) => i + 1);
4108
+ }
4109
+ const leftSibling = Math.max(currentPage - siblingCount, 1);
4110
+ const rightSibling = Math.min(currentPage + siblingCount, totalPages);
4111
+ const showLeftDots = leftSibling > 2;
4112
+ const showRightDots = rightSibling < totalPages - 1;
4113
+ if (!showLeftDots && showRightDots) {
4114
+ const leftRange = Array.from({ length: 3 + siblingCount * 2 }, (_, i) => i + 1);
4115
+ return [...leftRange, DOTS, totalPages];
4116
+ }
4117
+ if (showLeftDots && !showRightDots) {
4118
+ const rightRange = Array.from(
4119
+ { length: 3 + siblingCount * 2 },
4120
+ (_, i) => totalPages - (3 + siblingCount * 2) + 1 + i
4121
+ );
4122
+ return [1, DOTS, ...rightRange];
4123
+ }
4124
+ const middleRange = Array.from(
4125
+ { length: rightSibling - leftSibling + 1 },
4126
+ (_, i) => leftSibling + i
4127
+ );
4128
+ return [1, DOTS, ...middleRange, DOTS, totalPages];
4129
+ }
4130
+ var ChevronLeft = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "15 18 9 12 15 6" }) });
4131
+ var ChevronRight = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "9 18 15 12 9 6" }) });
4132
+ var ChevronsLeft = () => /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
4133
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "11 17 6 12 11 7" }),
4134
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "18 17 13 12 18 7" })
4135
+ ] });
4136
+ var ChevronsRight = () => /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
4137
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "13 17 18 12 13 7" }),
4138
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "6 17 11 12 6 7" })
4139
+ ] });
4140
+ var PaginationBar = ({
4141
+ currentPage,
4142
+ totalPages,
4143
+ onPageChange,
4144
+ siblingCount = 1,
4145
+ showFirstLast = true,
4146
+ size = "md",
4147
+ disabled = false
4148
+ }) => {
4149
+ const pageItems = buildPageItems(currentPage, totalPages, siblingCount);
4150
+ const isFirst = currentPage === 1;
4151
+ const isLast = currentPage === totalPages;
4152
+ return /* @__PURE__ */ jsxRuntime.jsxs(Nav, { "aria-label": "Pagination", children: [
4153
+ showFirstLast && /* @__PURE__ */ jsxRuntime.jsx(
4154
+ PaginationButton,
4155
+ {
4156
+ size,
4157
+ disabled: disabled || isFirst,
4158
+ onClick: () => onPageChange(1),
4159
+ "aria-label": "First page",
4160
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChevronsLeft, {})
4161
+ }
4162
+ ),
4163
+ /* @__PURE__ */ jsxRuntime.jsx(
4164
+ PaginationButton,
4165
+ {
4166
+ size,
4167
+ disabled: disabled || isFirst,
4168
+ onClick: () => onPageChange(currentPage - 1),
4169
+ "aria-label": "Previous page",
4170
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeft, {})
4171
+ }
4172
+ ),
4173
+ pageItems.map(
4174
+ (item, index) => item === DOTS ? /* @__PURE__ */ jsxRuntime.jsx(PaginationEllipsis, { size }, `dots-${index}`) : /* @__PURE__ */ jsxRuntime.jsx(
4175
+ PaginationButton,
4176
+ {
4177
+ size,
4178
+ isActive: item === currentPage,
4179
+ disabled,
4180
+ onClick: () => onPageChange(item),
4181
+ "aria-label": `Page ${item}`,
4182
+ children: item
4183
+ },
4184
+ item
4185
+ )
4186
+ ),
4187
+ /* @__PURE__ */ jsxRuntime.jsx(
4188
+ PaginationButton,
4189
+ {
4190
+ size,
4191
+ disabled: disabled || isLast,
4192
+ onClick: () => onPageChange(currentPage + 1),
4193
+ "aria-label": "Next page",
4194
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRight, {})
4195
+ }
4196
+ ),
4197
+ showFirstLast && /* @__PURE__ */ jsxRuntime.jsx(
4198
+ PaginationButton,
4199
+ {
4200
+ size,
4201
+ disabled: disabled || isLast,
4202
+ onClick: () => onPageChange(totalPages),
4203
+ "aria-label": "Last page",
4204
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChevronsRight, {})
4205
+ }
4206
+ )
4207
+ ] });
4208
+ };
4209
+ PaginationBar.displayName = "PaginationBar";
143
4210
  var ss = "sans-serif";
144
4211
  var typographyOptions = {
145
4212
  fontFamily: ["'Lato'", ss].join(","),
@@ -245,8 +4312,31 @@ var MyThemeProvider = ({
245
4312
  ] });
246
4313
  };
247
4314
 
4315
+ exports.Article = Article;
4316
+ exports.BaseInput = BaseInput;
4317
+ exports.BaseSelectInput = BaseSelectInput;
4318
+ exports.Box = Box2;
248
4319
  exports.Button = Button;
4320
+ exports.CheckboxInput = CheckboxInput;
4321
+ exports.Container = Container;
4322
+ exports.CountryFlag = CountryFlag;
4323
+ exports.EmailInput = EmailInput;
4324
+ exports.FileInput = FileInput;
4325
+ exports.Main = Main;
4326
+ exports.MultiSelectInput = MultiSelectInput;
249
4327
  exports.MyThemeProvider = MyThemeProvider;
4328
+ exports.NumberInput = NumberInput;
4329
+ exports.PaginationBar = PaginationBar;
4330
+ exports.PaginationButton = PaginationButton;
4331
+ exports.PaginationEllipsis = PaginationEllipsis;
4332
+ exports.PasswordInput = PasswordInput;
4333
+ exports.PhoneInput = PhoneInput;
4334
+ exports.Prose = Prose;
4335
+ exports.SearchInput = SearchInput;
4336
+ exports.Section = Section;
4337
+ exports.SelectInput = SelectInput;
4338
+ exports.TextInput = TextInput;
4339
+ exports.TextareaInput = TextareaInput;
250
4340
  exports.createMyTheme = createMyTheme;
251
4341
  exports.myTheme = myTheme;
252
4342
  exports.themeDark = themeDark;