@aspprev/versi-ds 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +14 -1
  2. package/dist/charts.js +1 -2
  3. package/dist/{chunk-ATWH3MA6.js → chunk-2XXVEFFY.js} +18 -35
  4. package/dist/{chunk-ATWH3MA6.js.map → chunk-2XXVEFFY.js.map} +1 -1
  5. package/dist/{chunk-V66QL3TD.js → chunk-5MRS4PDD.js} +200 -211
  6. package/dist/{chunk-V66QL3TD.js.map → chunk-5MRS4PDD.js.map} +1 -1
  7. package/dist/{chunk-OQECJKGA.js → chunk-6NVJWI5B.js} +556 -608
  8. package/dist/chunk-6NVJWI5B.js.map +1 -0
  9. package/dist/chunk-7IY43S3Y.js +2833 -0
  10. package/dist/chunk-7IY43S3Y.js.map +1 -0
  11. package/dist/{chunk-EPV6UNUQ.js → chunk-JGCZAVYV.js} +424 -595
  12. package/dist/chunk-JGCZAVYV.js.map +1 -0
  13. package/dist/{chunk-FTRF27XF.js → chunk-MMTKCHRP.js} +7 -17
  14. package/dist/{chunk-FTRF27XF.js.map → chunk-MMTKCHRP.js.map} +1 -1
  15. package/dist/{chunk-7JI5637G.js → chunk-YIUITJ4V.js} +45 -77
  16. package/dist/{chunk-7JI5637G.js.map → chunk-YIUITJ4V.js.map} +1 -1
  17. package/dist/{chunk-DO5C67KS.js → chunk-ZPY72ILO.js} +87 -75
  18. package/dist/chunk-ZPY72ILO.js.map +1 -0
  19. package/dist/core.js +3 -4
  20. package/dist/countries-browser.d.ts +11 -0
  21. package/dist/countries-browser.js +44 -0
  22. package/dist/countries-browser.js.map +1 -0
  23. package/dist/countries.d.ts +6 -46
  24. package/dist/countries.js +280 -7
  25. package/dist/countries.js.map +1 -1
  26. package/dist/country-metadata-DOgzawAc.d.ts +27 -0
  27. package/dist/documents.js +2 -3
  28. package/dist/flags-00-MPU4ISEM.js +85 -0
  29. package/dist/flags-00-MPU4ISEM.js.map +1 -0
  30. package/dist/flags-01-PWC64NSQ.js +13 -0
  31. package/dist/flags-01-PWC64NSQ.js.map +1 -0
  32. package/dist/flags-02-GNF7X6MP.js +10 -0
  33. package/dist/flags-02-GNF7X6MP.js.map +1 -0
  34. package/dist/flags-03-STVDA6UG.js +82 -0
  35. package/dist/flags-03-STVDA6UG.js.map +1 -0
  36. package/dist/flags-04-Z6AHZIWG.js +31 -0
  37. package/dist/flags-04-Z6AHZIWG.js.map +1 -0
  38. package/dist/flags-05-QBADBC6C.js +13 -0
  39. package/dist/flags-05-QBADBC6C.js.map +1 -0
  40. package/dist/flags-06-O55E67OI.js +28 -0
  41. package/dist/flags-06-O55E67OI.js.map +1 -0
  42. package/dist/flags-07-RSWJQIRW.js +64 -0
  43. package/dist/flags-07-RSWJQIRW.js.map +1 -0
  44. package/dist/flags-08-HHXIPTKX.js +31 -0
  45. package/dist/flags-08-HHXIPTKX.js.map +1 -0
  46. package/dist/flags-09-OEZBQ62G.js +64 -0
  47. package/dist/flags-09-OEZBQ62G.js.map +1 -0
  48. package/dist/flags-10-XJY5UMQR.js +73 -0
  49. package/dist/flags-10-XJY5UMQR.js.map +1 -0
  50. package/dist/flags-11-7M75OPUJ.js +34 -0
  51. package/dist/flags-11-7M75OPUJ.js.map +1 -0
  52. package/dist/flags-12-JY22PFQH.js +31 -0
  53. package/dist/flags-12-JY22PFQH.js.map +1 -0
  54. package/dist/flags-13-BERDGZCT.js +52 -0
  55. package/dist/flags-13-BERDGZCT.js.map +1 -0
  56. package/dist/flags-14-XVPM2GQ2.js +31 -0
  57. package/dist/flags-14-XVPM2GQ2.js.map +1 -0
  58. package/dist/flags-15-WESIXIDR.js +64 -0
  59. package/dist/flags-15-WESIXIDR.js.map +1 -0
  60. package/dist/flags-16-PTNHBPYG.js +40 -0
  61. package/dist/flags-16-PTNHBPYG.js.map +1 -0
  62. package/dist/flags-17-UYXBV5BH.js +10 -0
  63. package/dist/flags-17-UYXBV5BH.js.map +1 -0
  64. package/dist/flags-18-VMKDO7W4.js +91 -0
  65. package/dist/flags-18-VMKDO7W4.js.map +1 -0
  66. package/dist/flags-19-635PQOEQ.js +43 -0
  67. package/dist/flags-19-635PQOEQ.js.map +1 -0
  68. package/dist/forms.d.ts +2 -2
  69. package/dist/forms.js +3 -4
  70. package/dist/index.d.ts +1 -1
  71. package/dist/index.js +8 -9
  72. package/dist/manifest.json +32 -10
  73. package/dist/overlays.d.ts +1 -1
  74. package/dist/overlays.js +1 -2
  75. package/package.json +10 -2
  76. package/dist/chunk-2NMEKWO5.js +0 -38
  77. package/dist/chunk-2NMEKWO5.js.map +0 -1
  78. package/dist/chunk-DO5C67KS.js.map +0 -1
  79. package/dist/chunk-EPV6UNUQ.js.map +0 -1
  80. package/dist/chunk-OQECJKGA.js.map +0 -1
  81. package/dist/chunk-YCW3REQK.js +0 -3102
  82. package/dist/chunk-YCW3REQK.js.map +0 -1
@@ -1,9 +1,3 @@
1
- import {
2
- __objRest,
3
- __spreadProps,
4
- __spreadValues
5
- } from "./chunk-2NMEKWO5.js";
6
-
7
1
  // src/components/Modal/Modal.tsx
8
2
  import { Fragment } from "react";
9
3
  import {
@@ -92,11 +86,12 @@ var Modal = ({
92
86
  /* @__PURE__ */ jsx("div", { className: "portal-safe-modal fixed inset-0 overflow-y-auto gap-0", children: /* @__PURE__ */ jsx("div", { className: "flex min-h-full items-center justify-center p-5 gap-0", children: /* @__PURE__ */ jsxs(
93
87
  DialogPanel,
94
88
  {
95
- className: `relative flex max-h-[calc(100dvh-40px)] max-w-[calc(100vw-40px)] flex-col space-y-5 overflow-x-hidden overflow-y-auto rounded-sm bg-surface-card p-5 shadow-md transition-all ${className != null ? className : ""}`,
96
- style: __spreadProps(__spreadValues({}, style), {
89
+ className: `relative flex max-h-[calc(100dvh-40px)] max-w-[calc(100vw-40px)] flex-col space-y-5 overflow-x-hidden overflow-y-auto rounded-sm bg-surface-card p-5 shadow-md transition-all ${className ?? ""}`,
90
+ style: {
91
+ ...style,
97
92
  width: "100%",
98
93
  maxWidth: modalMaxWidths[size]
99
- }),
94
+ },
100
95
  children: [
101
96
  /* @__PURE__ */ jsx("div", { className: "absolute right-5 top-5 flex items-center justify-end", children: /* @__PURE__ */ jsx(
102
97
  "button",
@@ -143,9 +138,6 @@ var Modal = ({
143
138
  var Modal_default = Modal;
144
139
 
145
140
  // src/components/InputSwitch/InputSwitch.tsx
146
- import {
147
- Switch as HeadlessSwitch
148
- } from "@headlessui/react";
149
141
  import { useState } from "react";
150
142
 
151
143
  // src/components/InputSwitch/InputSwitch.style.ts
@@ -256,26 +248,24 @@ var InputSwitch_style_default = getInputSwitchStyles;
256
248
 
257
249
  // src/components/InputSwitch/InputSwitch.tsx
258
250
  import { MdCheck, MdOutlineClose as MdOutlineClose2, MdSunny, MdNightsStay } from "react-icons/md";
259
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
260
- var InputSwitch = (_a) => {
261
- var _b = _a, {
262
- defaultEnable: enabledByDefault,
263
- variant = "primary",
264
- size = "md",
265
- disabled,
266
- onChange,
267
- checked,
268
- icon: Icon
269
- } = _b, rest = __objRest(_b, [
270
- "defaultEnable",
271
- "variant",
272
- "size",
273
- "disabled",
274
- "onChange",
275
- "checked",
276
- "icon"
277
- ]);
278
- const [enabled, setEnabled] = useState(enabledByDefault != null ? enabledByDefault : false);
251
+ import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
252
+ var InputSwitch = ({
253
+ defaultEnable: enabledByDefault,
254
+ id,
255
+ name,
256
+ value,
257
+ form,
258
+ autoFocus,
259
+ tabIndex,
260
+ variant = "primary",
261
+ size = "md",
262
+ disabled,
263
+ onChange,
264
+ checked,
265
+ icon: Icon,
266
+ ...rest
267
+ }) => {
268
+ const [enabled, setEnabled] = useState(enabledByDefault ?? false);
279
269
  const resolvedEnabled = typeof checked === "boolean" ? checked : enabled;
280
270
  const style = InputSwitch_style_default({
281
271
  variant,
@@ -288,35 +278,56 @@ var InputSwitch = (_a) => {
288
278
  if (typeof checked !== "boolean") {
289
279
  setEnabled(newState);
290
280
  }
291
- onChange == null ? void 0 : onChange(newState);
281
+ onChange?.(newState);
292
282
  };
293
- return /* @__PURE__ */ jsxs2(
294
- HeadlessSwitch,
295
- __spreadProps(__spreadValues({
296
- checked: resolvedEnabled,
297
- onChange: toggle,
298
- disabled: disabled != null ? disabled : false,
299
- className: style.Container
300
- }, rest), {
301
- children: [
302
- variant !== "contract" && variant !== "theme" && /* @__PURE__ */ jsx2("span", { className: style.Switch, children: Icon && /* @__PURE__ */ jsx2(Icon, { "aria-hidden": "true", className: style.Icon }) }),
303
- variant === "contract" && /* @__PURE__ */ jsxs2("span", { className: style.Switch, children: [
304
- resolvedEnabled && /* @__PURE__ */ jsx2(MdCheck, { className: style.Icon, "aria-disabled": disabled }),
305
- resolvedEnabled || /* @__PURE__ */ jsx2(MdOutlineClose2, { className: style.Icon, "aria-disabled": disabled })
306
- ] }),
307
- variant === "theme" && /* @__PURE__ */ jsxs2("span", { className: style.SwitchTheme, children: [
308
- resolvedEnabled && /* @__PURE__ */ jsx2(
309
- MdNightsStay,
310
- {
311
- className: style.IconTheme,
312
- "aria-disabled": disabled
313
- }
314
- ),
315
- resolvedEnabled || /* @__PURE__ */ jsx2(MdSunny, { className: style.IconTheme, "aria-disabled": disabled })
316
- ] })
317
- ]
318
- })
319
- );
283
+ return /* @__PURE__ */ jsxs2(Fragment2, { children: [
284
+ name && /* @__PURE__ */ jsx2(
285
+ "input",
286
+ {
287
+ type: "checkbox",
288
+ name,
289
+ value: value ?? "on",
290
+ form,
291
+ checked: resolvedEnabled,
292
+ readOnly: true,
293
+ tabIndex: -1,
294
+ "aria-hidden": "true",
295
+ className: "sr-only"
296
+ }
297
+ ),
298
+ /* @__PURE__ */ jsxs2(
299
+ "button",
300
+ {
301
+ ...rest,
302
+ id,
303
+ type: "button",
304
+ role: "switch",
305
+ "aria-checked": resolvedEnabled,
306
+ disabled: disabled ?? false,
307
+ autoFocus,
308
+ tabIndex,
309
+ onClick: toggle,
310
+ className: style.Container,
311
+ children: [
312
+ variant !== "contract" && variant !== "theme" && /* @__PURE__ */ jsx2("span", { className: style.Switch, children: Icon && /* @__PURE__ */ jsx2(Icon, { "aria-hidden": "true", className: style.Icon }) }),
313
+ variant === "contract" && /* @__PURE__ */ jsxs2("span", { className: style.Switch, children: [
314
+ resolvedEnabled && /* @__PURE__ */ jsx2(MdCheck, { className: style.Icon, "aria-disabled": disabled }),
315
+ resolvedEnabled || /* @__PURE__ */ jsx2(MdOutlineClose2, { className: style.Icon, "aria-disabled": disabled })
316
+ ] }),
317
+ variant === "theme" && /* @__PURE__ */ jsxs2("span", { className: style.SwitchTheme, children: [
318
+ resolvedEnabled && /* @__PURE__ */ jsx2(
319
+ MdNightsStay,
320
+ {
321
+ className: style.IconTheme,
322
+ "aria-disabled": disabled
323
+ }
324
+ ),
325
+ resolvedEnabled || /* @__PURE__ */ jsx2(MdSunny, { className: style.IconTheme, "aria-disabled": disabled })
326
+ ] })
327
+ ]
328
+ }
329
+ )
330
+ ] });
320
331
  };
321
332
  var InputSwitch_default = InputSwitch;
322
333
 
@@ -335,7 +346,7 @@ function PreferenceSection({
335
346
  return /* @__PURE__ */ jsxs3(
336
347
  "fieldset",
337
348
  {
338
- className: `rounded-md border border-border-default bg-surface-subtle p-4 tablet:p-5 ${className != null ? className : ""}`.trim(),
349
+ className: `rounded-md border border-border-default bg-surface-subtle p-4 tablet:p-5 ${className ?? ""}`.trim(),
339
350
  children: [
340
351
  /* @__PURE__ */ jsx3("legend", { className: "sr-only", children: title }),
341
352
  /* @__PURE__ */ jsxs3("div", { className: "mb-4 flex items-start gap-3", children: [
@@ -474,7 +485,7 @@ function ReadingPreferences({
474
485
  title: "Leitura e navega\xE7\xE3o",
475
486
  description: "Ajustes para reduzir distra\xE7\xF5es e facilitar a orienta\xE7\xE3o.",
476
487
  icon: MdAccessibilityNew,
477
- className: `desktop:col-span-2 ${className != null ? className : ""}`.trim(),
488
+ className: `desktop:col-span-2 ${className ?? ""}`.trim(),
478
489
  children: /* @__PURE__ */ jsx6("div", { className: "grid gap-3 tablet:grid-cols-3", children: READING_OPTIONS.map(({ key, label, description, Icon }) => /* @__PURE__ */ jsxs6(
479
490
  "label",
480
491
  {
@@ -560,7 +571,7 @@ function ThemePreference({
560
571
  // src/components/accessibility-preferences/AccessibilityPreferencesPanel.tsx
561
572
  import { useState as useState2 } from "react";
562
573
  import { MdAccessibilityNew as MdAccessibilityNew2, MdRestartAlt } from "react-icons/md";
563
- import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
574
+ import { Fragment as Fragment3, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
564
575
  function AccessibilityPreferencesPanel({
565
576
  preferences,
566
577
  onPreferencesChange,
@@ -573,16 +584,16 @@ function AccessibilityPreferencesPanel({
573
584
  }) {
574
585
  const [internalOpen, setInternalOpen] = useState2(false);
575
586
  const [announcement, setAnnouncement] = useState2("");
576
- const isOpen = controlledOpen != null ? controlledOpen : internalOpen;
587
+ const isOpen = controlledOpen ?? internalOpen;
577
588
  const setOpen = (open) => {
578
589
  if (controlledOpen === void 0) setInternalOpen(open);
579
- onOpenChange == null ? void 0 : onOpenChange(open);
590
+ onOpenChange?.(open);
580
591
  };
581
592
  const update = (changes, message) => {
582
593
  onPreferencesChange(changes);
583
594
  setAnnouncement(message);
584
595
  };
585
- return /* @__PURE__ */ jsxs8(Fragment2, { children: [
596
+ return /* @__PURE__ */ jsxs8(Fragment3, { children: [
586
597
  showTrigger && /* @__PURE__ */ jsxs8(
587
598
  "button",
588
599
  {
@@ -590,7 +601,7 @@ function AccessibilityPreferencesPanel({
590
601
  "aria-haspopup": "dialog",
591
602
  "aria-expanded": isOpen,
592
603
  onClick: () => setOpen(true),
593
- className: `inline-flex min-h-11 items-center justify-center gap-2 rounded-sm border-2 border-action-primary-content bg-action-primary px-3 text-sm font-bold text-action-primary-content shadow-sm hover:bg-action-primary-hover focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring ${className != null ? className : ""}`.trim(),
604
+ className: `inline-flex min-h-11 items-center justify-center gap-2 rounded-sm border-2 border-action-primary-content bg-action-primary px-3 text-sm font-bold text-action-primary-content shadow-sm hover:bg-action-primary-hover focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring ${className ?? ""}`.trim(),
594
605
  children: [
595
606
  /* @__PURE__ */ jsx8(MdAccessibilityNew2, { "aria-hidden": "true", className: "h-5 w-5" }),
596
607
  /* @__PURE__ */ jsx8("span", { children: triggerLabel })
@@ -613,11 +624,12 @@ function AccessibilityPreferencesPanel({
613
624
  {
614
625
  value: preferences.colorScheme,
615
626
  onChange: (colorScheme) => update(
616
- __spreadValues({
617
- colorScheme
618
- }, colorScheme === "system" ? {} : {
619
- highContrastTheme: colorScheme === "dark" ? "dark" : "light"
620
- }),
627
+ {
628
+ colorScheme,
629
+ ...colorScheme === "system" ? {} : {
630
+ highContrastTheme: colorScheme === "dark" ? "dark" : "light"
631
+ }
632
+ },
621
633
  `Tema ${colorScheme === "dark" ? "escuro" : colorScheme === "light" ? "claro" : "do dispositivo"} ativado.`
622
634
  )
623
635
  }
@@ -661,7 +673,7 @@ function AccessibilityPreferencesPanel({
661
673
  {
662
674
  type: "button",
663
675
  onClick: () => {
664
- onReset == null ? void 0 : onReset();
676
+ onReset?.();
665
677
  setAnnouncement("Configura\xE7\xF5es padr\xE3o restauradas.");
666
678
  },
667
679
  className: "inline-flex min-h-11 items-center gap-2 rounded-sm border-2 border-action-primary px-4 font-bold text-content-link hover:bg-surface-muted focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring",
@@ -704,7 +716,7 @@ function HighContrastToggle({
704
716
  type: "button",
705
717
  "aria-pressed": checked,
706
718
  onClick: () => onChange(!checked),
707
- className: `inline-flex min-h-11 items-center justify-center gap-2 rounded-sm border-2 border-action-primary-content bg-action-primary px-3 text-sm font-bold text-action-primary-content shadow-sm hover:bg-action-primary-hover active:bg-action-primary-active focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring ${className != null ? className : ""}`.trim(),
719
+ className: `inline-flex min-h-11 items-center justify-center gap-2 rounded-sm border-2 border-action-primary-content bg-action-primary px-3 text-sm font-bold text-action-primary-content shadow-sm hover:bg-action-primary-hover active:bg-action-primary-active focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring ${className ?? ""}`.trim(),
708
720
  children: [
709
721
  /* @__PURE__ */ jsx9(MdContrast2, { "aria-hidden": "true", className: "h-5 w-5" }),
710
722
  /* @__PURE__ */ jsx9("span", { children: label }),
@@ -725,4 +737,4 @@ export {
725
737
  DEFAULT_ACCESSIBILITY_PREFERENCES,
726
738
  HighContrastToggle
727
739
  };
728
- //# sourceMappingURL=chunk-DO5C67KS.js.map
740
+ //# sourceMappingURL=chunk-ZPY72ILO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Modal/Modal.tsx","../src/components/InputSwitch/InputSwitch.tsx","../src/components/InputSwitch/InputSwitch.style.ts","../src/components/accessibility-preferences/ContrastPreference.tsx","../src/components/accessibility-preferences/PreferenceSection.tsx","../src/components/accessibility-preferences/FontSizePreference.tsx","../src/components/accessibility-preferences/ReadingPreferences.tsx","../src/components/accessibility-preferences/ThemePreference.tsx","../src/components/accessibility-preferences/AccessibilityPreferencesPanel.tsx","../src/components/accessibility-preferences/types.ts","../src/components/accessibility-preferences/HighContrastToggle.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { Fragment } from \"react\";\nimport {\n MdCheckCircle,\n MdCancel,\n MdDeleteForever,\n MdOutlineClose,\n MdDownload,\n MdSend,\n MdErrorOutline,\n} from \"react-icons/md\";\nimport {\n Transition,\n Dialog,\n TransitionChild,\n DialogTitle,\n DialogPanel,\n} from \"@headlessui/react\";\n\nexport type ModalProps = {\n children?: React.ReactNode;\n isOpen: boolean;\n title?: string;\n onClose: () => void;\n showIcon?: boolean;\n variant?:\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"delete\"\n | \"downloading\"\n | \"sendMessage\";\n size?: \"small\" | \"medium\" | \"large\" | \"viewer\" | \"full\";\n className?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst modalMaxWidths = {\n small: \"28rem\",\n medium: \"42rem\",\n large: \"56rem\",\n viewer: \"72rem\",\n full: \"calc(100vw - 40px)\",\n} as const;\n\nconst Modal = ({\n children,\n isOpen,\n onClose,\n className,\n style,\n title,\n showIcon = true,\n variant = \"success\",\n size = \"small\",\n}: ModalProps) => {\n const variantStyles = {\n success: {\n bgColor: \"bg-feedback-success-soft\",\n icon: <MdCheckCircle className=\"h-6 w-6 text-feedback-success-content\" />,\n },\n error: {\n bgColor: \"bg-feedback-danger-soft\",\n icon: <MdCancel className=\"h-6 w-6 text-feedback-danger-content\" />,\n },\n warning: {\n bgColor: \"bg-feedback-warning-soft\",\n icon: (\n <MdErrorOutline className=\"h-6 w-6 text-feedback-warning-content\" />\n ),\n },\n downloading: {\n bgColor: \"bg-feedback-info-soft\",\n icon: <MdDownload className=\"h-6 w-6 text-feedback-info-content\" />,\n },\n delete: {\n bgColor: \"bg-feedback-info-soft\",\n icon: <MdDeleteForever className=\"h-6 w-6 text-feedback-info-content\" />,\n },\n sendMessage: {\n bgColor: \"bg-feedback-info-soft\",\n icon: <MdSend className=\"h-6 w-6 text-feedback-info-content\" />,\n },\n };\n\n const { bgColor, icon } = variantStyles[variant];\n\n return (\n <Transition appear show={isOpen} as={Fragment}>\n <Dialog\n as=\"div\"\n className=\"relative z-modal gap-0\"\n aria-label={title ? undefined : \"Janela de diálogo\"}\n onClose={onClose}\n >\n <TransitionChild\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 bg-overlay/50 backdrop-blur-[1px]\" />\n </TransitionChild>\n <div className=\"portal-safe-modal fixed inset-0 overflow-y-auto gap-0\">\n <div className=\"flex min-h-full items-center justify-center p-5 gap-0\">\n <DialogPanel\n className={`relative flex max-h-[calc(100dvh-40px)] max-w-[calc(100vw-40px)] flex-col space-y-5 overflow-x-hidden overflow-y-auto rounded-sm bg-surface-card p-5 shadow-md transition-all ${className ?? \"\"}`}\n style={{\n ...style,\n width: \"100%\",\n maxWidth: modalMaxWidths[size],\n }}\n >\n <div className=\"absolute right-5 top-5 flex items-center justify-end\">\n <button\n type=\"button\"\n aria-label=\"Fechar janela\"\n onClick={onClose}\n className=\"inline-flex h-6 w-6 touch-manipulation items-center justify-center rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\"\n >\n <MdOutlineClose\n aria-hidden=\"true\"\n size={20}\n className=\"text-content-secondary\"\n />\n </button>\n </div>\n\n {showIcon && (\n <div aria-hidden=\"true\" className=\"flex justify-center p-0\">\n <div\n className={`inline-flex items-center justify-center w-12 h-12 rounded-full ${bgColor}`}\n >\n {icon}\n </div>\n </div>\n )}\n\n <div className=\"space-y-3\">\n {title && (\n <DialogTitle\n as=\"h3\"\n className=\"text-xl font-extrabold text-center\"\n >\n {title}\n </DialogTitle>\n )}\n {children}\n </div>\n </DialogPanel>\n </div>\n </div>\n </Dialog>\n </Transition>\n );\n};\n\nexport default Modal;\n\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport useStyle from \"./InputSwitch.style\";\nimport { MdCheck, MdOutlineClose, MdSunny, MdNightsStay } from \"react-icons/md\";\nimport type { IconType } from \"react-icons\";\n\ntype NativeSwitchProps = {\n id?: string;\n name?: string;\n value?: string;\n form?: string;\n autoFocus?: boolean;\n tabIndex?: number;\n} & React.AriaAttributes & (\n | {\n \"aria-label\": string;\n \"aria-labelledby\"?: never;\n }\n | {\n \"aria-label\"?: never;\n \"aria-labelledby\": string;\n }\n);\n\nexport type InputSwitchProps = {\n defaultEnable?: boolean;\n checked?: boolean;\n variant?: \"primary\" | \"secondary\" | \"tertiary\" | \"contract\" | \"theme\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n onChange?: (enabled: boolean) => void;\n icon?: IconType;\n} & NativeSwitchProps;\n\nexport type InputSwitchStyleProps = Pick<\n InputSwitchProps,\n \"variant\" | \"disabled\" | \"size\"\n> & {\n enabled: boolean;\n};\n\nexport type SwitchProps = InputSwitchProps;\n\nconst InputSwitch: React.FC<InputSwitchProps> = ({\n defaultEnable: enabledByDefault,\n id,\n name,\n value,\n form,\n autoFocus,\n tabIndex,\n variant = \"primary\",\n size = \"md\",\n disabled,\n onChange,\n checked,\n icon: Icon,\n ...rest\n}) => {\n const [enabled, setEnabled] = useState(enabledByDefault ?? false);\n const resolvedEnabled = typeof checked === \"boolean\" ? checked : enabled;\n const style = useStyle({\n variant,\n enabled: resolvedEnabled,\n disabled,\n size,\n });\n\n const toggle = () => {\n const newState = !resolvedEnabled;\n if (typeof checked !== \"boolean\") {\n setEnabled(newState);\n }\n onChange?.(newState);\n };\n return (\n <>\n {name && (\n <input\n type=\"checkbox\"\n name={name}\n value={value ?? \"on\"}\n form={form}\n checked={resolvedEnabled}\n readOnly\n tabIndex={-1}\n aria-hidden=\"true\"\n className=\"sr-only\"\n />\n )}\n <button\n {...rest}\n id={id}\n type=\"button\"\n role=\"switch\"\n aria-checked={resolvedEnabled}\n disabled={disabled ?? false}\n autoFocus={autoFocus}\n tabIndex={tabIndex}\n onClick={toggle}\n className={style.Container}\n >\n {variant !== \"contract\" && variant !== \"theme\" && (\n <span className={style.Switch}>\n {Icon && <Icon aria-hidden=\"true\" className={style.Icon} />}\n </span>\n )}\n {variant === \"contract\" && (\n <span className={style.Switch}>\n {resolvedEnabled && (\n <MdCheck className={style.Icon} aria-disabled={disabled} />\n )}\n {resolvedEnabled || (\n <MdOutlineClose className={style.Icon} aria-disabled={disabled} />\n )}\n </span>\n )}\n\n {variant === \"theme\" && (\n <span className={style.SwitchTheme}>\n {resolvedEnabled && (\n <MdNightsStay\n className={style.IconTheme}\n aria-disabled={disabled}\n />\n )}\n {resolvedEnabled || (\n <MdSunny className={style.IconTheme} aria-disabled={disabled} />\n )}\n </span>\n )}\n </button>\n </>\n );\n};\n\nexport default InputSwitch;\n\n","import { cva } from \"class-variance-authority\";\nimport classNames from \"classnames\";\nimport { InputSwitchProps, InputSwitchStyleProps } from \"./InputSwitch\";\n\nconst SIZE_STYLES: Record<\n NonNullable<InputSwitchProps[\"size\"]>,\n {\n container: string;\n knob: string;\n icon: string;\n }\n> = {\n sm: {\n container:\n \"h-[1rem] w-[1.75rem] [--switch-padding:2px] [--switch-knob-size:0.75rem] [--switch-width:1.75rem]\",\n knob: \"h-[var(--switch-knob-size)] w-[var(--switch-knob-size)]\",\n icon: \"h-2 w-2\",\n },\n md: {\n container:\n \"h-[1.25rem] w-[3rem] [--switch-padding:2px] [--switch-knob-size:1rem] [--switch-width:3rem]\",\n knob: \"h-[var(--switch-knob-size)] w-[var(--switch-knob-size)]\",\n icon: \"h-3 w-3\",\n },\n lg: {\n container:\n \"h-[1.5rem] w-[3.5rem] [--switch-padding:2px] [--switch-knob-size:1.25rem] [--switch-width:3.5rem]\",\n knob: \"h-[var(--switch-knob-size)] w-[var(--switch-knob-size)]\",\n icon: \"h-4 w-4\",\n },\n};\n\nconst getInputSwitchStyles = ({\n variant,\n enabled,\n disabled,\n size = \"md\",\n}: InputSwitchStyleProps) => {\n const sizeStyle = SIZE_STYLES[size];\n const containerVariant = cva(\n classNames(\n \"switch-control relative inline-flex shrink-0 items-center rounded-full transition-colors before:absolute before:left-1/2 before:top-1/2 before:h-5 before:w-full before:min-w-5 before:-translate-x-1/2 before:-translate-y-1/2 before:content-[''] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-1 disabled:bg-switch-track-disabled\",\n sizeStyle.container,\n { \"pointer-events-none\": disabled },\n ),\n {\n variants: {\n variant: {\n primary: classNames(\n \"[--switch-state-layer:var(--switch-track-primary-on)]\",\n { \"bg-switch-track-primary-on\": enabled },\n { \"bg-switch-track-off\": !enabled },\n ),\n secondary: classNames(\n \"[--switch-state-layer:var(--switch-track-secondary-on)]\",\n { \"bg-switch-track-secondary-on\": enabled },\n { \"bg-switch-track-off\": !enabled },\n ),\n tertiary: classNames(\n \"[--switch-state-layer:var(--switch-track-tertiary-on)]\",\n { \"bg-switch-track-tertiary-on\": enabled },\n { \"bg-switch-track-off\": !enabled },\n ),\n contract: classNames(\n enabled\n ? \"bg-switch-track-contract-on [--switch-state-layer:var(--switch-track-contract-on)]\"\n : \"bg-switch-track-contract-off [--switch-state-layer:var(--switch-track-contract-off)]\",\n ),\n theme: classNames(\n enabled\n ? \"bg-switch-track-theme-on [--switch-state-layer:var(--switch-track-theme-on)]\"\n : \"bg-switch-track-theme-off [--switch-state-layer:var(--switch-track-theme-off)]\",\n ),\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n },\n );\n const containerClasses = containerVariant({ variant });\n\n const switchClasses = classNames(\n \"switch-knob absolute left-[var(--switch-padding)] top-1/2 flex items-center justify-center rounded-full transition-[transform,box-shadow,background-color] duration-200 ease-in-out -translate-y-1/2\",\n sizeStyle.knob,\n disabled ? \"bg-switch-knob-disabled\" : \"bg-switch-knob\",\n enabled\n ? \"translate-x-[calc(var(--switch-width)-var(--switch-knob-size)-var(--switch-padding)*2)]\"\n : \"translate-x-0\",\n );\n\n const switchClassesTheme = classNames(\n \"switch-knob absolute left-[var(--switch-padding)] top-1/2 flex items-center justify-center rounded-full transition-[transform,box-shadow,background-color] duration-200 ease-in-out -translate-y-1/2\",\n sizeStyle.knob,\n {\n \"bg-switch-knob-theme-on\": enabled && !disabled,\n \"bg-switch-knob\": !enabled && !disabled,\n \"bg-switch-knob-disabled\": disabled,\n \"translate-x-[calc(var(--switch-width)-var(--switch-knob-size)-var(--switch-padding)*2)]\":\n enabled,\n \"translate-x-0\": !enabled,\n },\n );\n\n const iconClasses = classNames(\n \"aria-disabled:text-font-disabled\",\n sizeStyle.icon,\n { \"text-feedback-success-content\": enabled && !disabled },\n { \"text-feedback-danger-content\": !enabled && !disabled },\n { \"text-content-disabled\": disabled },\n );\n\n const iconClassesTheme = classNames(\n \"aria-disabled:text-font-disabled\",\n sizeStyle.icon,\n { \"text-content-inverse\": enabled && !disabled },\n { \"text-feedback-warning-content\": !enabled && !disabled },\n { \"text-content-disabled\": disabled },\n );\n\n return {\n Icon: iconClasses,\n IconTheme: iconClassesTheme,\n Switch: switchClasses,\n SwitchTheme: switchClassesTheme,\n Container: containerClasses,\n };\n};\n\nexport default getInputSwitchStyles;\n\n","import { MdContrast } from \"react-icons/md\";\nimport InputSwitch from \"../InputSwitch/InputSwitch\";\nimport PreferenceSection from \"./PreferenceSection\";\n\nexport type ContrastPreferenceProps = {\n checked: boolean;\n onChange: (checked: boolean) => void;\n className?: string;\n};\n\nexport default function ContrastPreference({\n checked,\n onChange,\n className,\n}: ContrastPreferenceProps) {\n return (\n <PreferenceSection\n title=\"Contraste\"\n description=\"Aumente a diferenciação entre conteúdo e superfície.\"\n icon={MdContrast}\n className={className}\n >\n <div className=\"flex min-h-16 items-center justify-between gap-4 rounded-sm border border-border-default bg-surface-card px-3 py-3\">\n <span className=\"flex items-center gap-1.5 font-semibold\">\n <MdContrast aria-hidden=\"true\" className=\"h-4 w-4\" />\n Alto contraste\n </span>\n <InputSwitch\n aria-label=\"Alternar alto contraste\"\n checked={checked}\n size=\"lg\"\n onChange={onChange}\n />\n </div>\n </PreferenceSection>\n );\n}\n","import type { IconType } from \"react-icons\";\n\nexport type PreferenceSectionProps = {\n title: string;\n description: string;\n icon: IconType;\n children: React.ReactNode;\n className?: string;\n};\n\nexport default function PreferenceSection({\n title,\n description,\n icon: Icon,\n children,\n className,\n}: PreferenceSectionProps) {\n return (\n <fieldset\n className={`rounded-md border border-border-default bg-surface-subtle p-4 tablet:p-5 ${className ?? \"\"}`.trim()}\n >\n <legend className=\"sr-only\">{title}</legend>\n <div className=\"mb-4 flex items-start gap-3\">\n <span className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary-5 text-primary-1\">\n <Icon aria-hidden=\"true\" className=\"h-5 w-5\" />\n </span>\n <div>\n <h3 className=\"font-bold\">{title}</h3>\n <p className=\"text-sm text-content-secondary\">{description}</p>\n </div>\n </div>\n {children}\n </fieldset>\n );\n}\n","import { useId } from \"react\";\nimport { MdTextFields } from \"react-icons/md\";\nimport PreferenceSection from \"./PreferenceSection\";\nimport type { AccessibilityFontScale } from \"./types\";\n\nconst FONT_SCALE_OPTIONS: Array<{\n value: AccessibilityFontScale;\n label: string;\n}> = [\n { value: \"standard\", label: \"Padrão\" },\n { value: \"large\", label: \"Grande\" },\n { value: \"extra-large\", label: \"Muito grande\" },\n];\n\nexport type FontSizePreferenceProps = {\n value: AccessibilityFontScale;\n onChange: (value: AccessibilityFontScale) => void;\n className?: string;\n};\n\nexport default function FontSizePreference({\n value,\n onChange,\n className,\n}: FontSizePreferenceProps) {\n const groupId = useId();\n\n return (\n <PreferenceSection\n title=\"Tamanho do texto\"\n description=\"Amplie os textos para facilitar a leitura.\"\n icon={MdTextFields}\n className={className}\n >\n <div className=\"grid gap-2\">\n {FONT_SCALE_OPTIONS.map((option) => (\n <label\n key={option.value}\n className=\"flex min-h-11 cursor-pointer items-center gap-3 rounded-sm border border-border-default bg-surface-card p-3 text-content-primary transition-colors hover:border-border-strong hover:bg-surface-muted\"\n >\n <input\n type=\"radio\"\n name={`${groupId}-font-scale`}\n value={option.value}\n checked={value === option.value}\n onChange={() => onChange(option.value)}\n className=\"radio-control shrink-0\"\n />\n <span className=\"flex w-9 shrink-0 justify-center font-extrabold text-primary-1\">\n Aa\n </span>\n <span className=\"font-semibold\">{option.label}</span>\n </label>\n ))}\n </div>\n </PreferenceSection>\n );\n}\n","import {\n MdAccessibilityNew,\n MdAnimation,\n MdCenterFocusStrong,\n MdLink,\n} from \"react-icons/md\";\nimport PreferenceSection from \"./PreferenceSection\";\nimport type { AccessibilityPreferences } from \"./types\";\n\ntype ReadingPreferenceKey =\n | \"reduceMotion\"\n | \"emphasizeFocus\"\n | \"underlineLinks\";\n\nconst READING_OPTIONS: Array<{\n key: ReadingPreferenceKey;\n label: string;\n description: string;\n Icon: typeof MdAnimation;\n}> = [\n {\n key: \"reduceMotion\",\n label: \"Reduzir animações\",\n description: \"Minimiza animações, transições e rolagens suaves.\",\n Icon: MdAnimation,\n },\n {\n key: \"emphasizeFocus\",\n label: \"Destacar foco\",\n description: \"Evidencia o elemento selecionado durante o uso do teclado.\",\n Icon: MdCenterFocusStrong,\n },\n {\n key: \"underlineLinks\",\n label: \"Sublinhar links\",\n description: \"Mantém links de texto sublinhados fora do foco.\",\n Icon: MdLink,\n },\n];\n\nexport type ReadingPreferencesProps = Pick<\n AccessibilityPreferences,\n ReadingPreferenceKey\n> & {\n onChange: (\n changes: Partial<Pick<AccessibilityPreferences, ReadingPreferenceKey>>,\n ) => void;\n className?: string;\n};\n\nexport default function ReadingPreferences({\n reduceMotion,\n emphasizeFocus,\n underlineLinks,\n onChange,\n className,\n}: ReadingPreferencesProps) {\n const values = { reduceMotion, emphasizeFocus, underlineLinks };\n\n return (\n <PreferenceSection\n title=\"Leitura e navegação\"\n description=\"Ajustes para reduzir distrações e facilitar a orientação.\"\n icon={MdAccessibilityNew}\n className={`desktop:col-span-2 ${className ?? \"\"}`.trim()}\n >\n <div className=\"grid gap-3 tablet:grid-cols-3\">\n {READING_OPTIONS.map(({ key, label, description, Icon }) => (\n <label\n key={key}\n className=\"flex min-h-11 cursor-pointer items-start gap-3 rounded-sm border border-border-default bg-surface-card p-3 text-content-primary transition-colors hover:border-border-strong hover:bg-surface-muted\"\n >\n <input\n type=\"checkbox\"\n aria-label={label}\n checked={values[key]}\n onChange={(event) => onChange({ [key]: event.target.checked })}\n className=\"checkbox-control mt-1\"\n />\n <span>\n <span className=\"flex items-center gap-2 font-semibold\">\n <Icon aria-hidden=\"true\" className=\"h-5 w-5 shrink-0 text-primary-1\" />\n {label}\n </span>\n <span className=\"mt-1 block text-sm text-content-secondary\">\n {description}\n </span>\n </span>\n </label>\n ))}\n </div>\n </PreferenceSection>\n );\n}\n","import { MdPalette } from \"react-icons/md\";\nimport InputSwitch from \"../InputSwitch/InputSwitch\";\nimport PreferenceSection from \"./PreferenceSection\";\nimport type { AccessibilityColorScheme } from \"./types\";\n\nexport type ThemePreferenceProps = {\n value: AccessibilityColorScheme;\n onChange: (value: AccessibilityColorScheme) => void;\n className?: string;\n};\n\nexport default function ThemePreference({\n value,\n onChange,\n className,\n}: ThemePreferenceProps) {\n const isDark = value === \"dark\";\n const isSystem = value === \"system\";\n\n return (\n <PreferenceSection\n title=\"Aparência\"\n description=\"Tema e esquema de cores da interface.\"\n icon={MdPalette}\n className={className}\n >\n <div className=\"divide-y divide-border-subtle rounded-sm border border-border-default bg-surface-card px-3\">\n <div className=\"flex min-h-16 items-center justify-between gap-4 py-3\">\n <span className=\"font-semibold\">Tema {isDark ? \"escuro\" : \"claro\"}</span>\n <InputSwitch\n aria-label=\"Alternar tema claro ou escuro\"\n variant=\"theme\"\n size=\"lg\"\n checked={isDark}\n disabled={isSystem}\n onChange={(enabled) => onChange(enabled ? \"dark\" : \"light\")}\n />\n </div>\n <label className=\"flex min-h-14 cursor-pointer items-start gap-3 py-3\">\n <input\n type=\"checkbox\"\n className=\"checkbox-control mt-0.5\"\n checked={isSystem}\n onChange={(event) =>\n onChange(event.target.checked ? \"system\" : isDark ? \"dark\" : \"light\")\n }\n />\n <span className=\"font-semibold\">Usar configuração do dispositivo</span>\n </label>\n </div>\n </PreferenceSection>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { MdAccessibilityNew, MdRestartAlt } from \"react-icons/md\";\nimport Modal from \"../Modal/Modal\";\nimport ContrastPreference from \"./ContrastPreference\";\nimport FontSizePreference from \"./FontSizePreference\";\nimport ReadingPreferences from \"./ReadingPreferences\";\nimport ThemePreference from \"./ThemePreference\";\nimport type { AccessibilityPreferences } from \"./types\";\n\nexport type AccessibilityPreferencesPanelProps = {\n preferences: AccessibilityPreferences;\n onPreferencesChange: (\n changes: Partial<AccessibilityPreferences>,\n ) => void;\n onReset?: () => void;\n isOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n showTrigger?: boolean;\n triggerLabel?: string;\n className?: string;\n};\n\nexport default function AccessibilityPreferencesPanel({\n preferences,\n onPreferencesChange,\n onReset,\n isOpen: controlledOpen,\n onOpenChange,\n showTrigger = true,\n triggerLabel = \"Preferências de acessibilidade\",\n className,\n}: AccessibilityPreferencesPanelProps) {\n const [internalOpen, setInternalOpen] = useState(false);\n const [announcement, setAnnouncement] = useState(\"\");\n const isOpen = controlledOpen ?? internalOpen;\n\n const setOpen = (open: boolean) => {\n if (controlledOpen === undefined) setInternalOpen(open);\n onOpenChange?.(open);\n };\n\n const update = (\n changes: Partial<AccessibilityPreferences>,\n message: string,\n ) => {\n onPreferencesChange(changes);\n setAnnouncement(message);\n };\n\n return (\n <>\n {showTrigger && (\n <button\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n onClick={() => setOpen(true)}\n className={`inline-flex min-h-11 items-center justify-center gap-2 rounded-sm border-2 border-action-primary-content bg-action-primary px-3 text-sm font-bold text-action-primary-content shadow-sm hover:bg-action-primary-hover focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring ${className ?? \"\"}`.trim()}\n >\n <MdAccessibilityNew aria-hidden=\"true\" className=\"h-5 w-5\" />\n <span>{triggerLabel}</span>\n </button>\n )}\n\n <Modal\n isOpen={isOpen}\n onClose={() => setOpen(false)}\n title={triggerLabel}\n showIcon={false}\n size=\"large\"\n >\n <p className=\"mt-2 text-center text-sm text-content-secondary\">\n As alterações são aplicadas pelo consumidor do componente.\n </p>\n\n <div className=\"mt-5 grid gap-4 desktop:grid-cols-2\">\n <ThemePreference\n value={preferences.colorScheme}\n onChange={(colorScheme) =>\n update(\n {\n colorScheme,\n ...(colorScheme === \"system\"\n ? {}\n : {\n highContrastTheme:\n colorScheme === \"dark\" ? \"dark\" : \"light\",\n }),\n },\n `Tema ${colorScheme === \"dark\" ? \"escuro\" : colorScheme === \"light\" ? \"claro\" : \"do dispositivo\"} ativado.`,\n )\n }\n />\n <ContrastPreference\n checked={preferences.highContrast}\n onChange={(highContrast) =>\n update(\n { highContrast },\n `Alto contraste ${highContrast ? \"ativado\" : \"desativado\"}.`,\n )\n }\n />\n <FontSizePreference\n value={preferences.fontScale}\n onChange={(fontScale) =>\n update({ fontScale }, \"Tamanho do texto alterado.\")\n }\n />\n <ReadingPreferences\n reduceMotion={preferences.reduceMotion}\n emphasizeFocus={preferences.emphasizeFocus}\n underlineLinks={preferences.underlineLinks}\n onChange={(changes) => {\n const key = Object.keys(changes)[0] as\n | \"reduceMotion\"\n | \"emphasizeFocus\"\n | \"underlineLinks\";\n const label =\n key === \"reduceMotion\"\n ? \"Reduzir animações\"\n : key === \"emphasizeFocus\"\n ? \"Destacar foco\"\n : \"Sublinhar links\";\n update(\n changes,\n `${label} ${changes[key] ? \"ativado\" : \"desativado\"}.`,\n );\n }}\n />\n </div>\n <div className=\"mt-5 flex justify-center border-t border-border-subtle pt-4 tablet:justify-start\">\n <button\n type=\"button\"\n onClick={() => {\n onReset?.();\n setAnnouncement(\"Configurações padrão restauradas.\");\n }}\n className=\"inline-flex min-h-11 items-center gap-2 rounded-sm border-2 border-action-primary px-4 font-bold text-content-link hover:bg-surface-muted focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\"\n >\n <MdRestartAlt aria-hidden=\"true\" className=\"h-5 w-5\" />\n Restaurar configurações padrão\n </button>\n </div>\n <p className=\"sr-only\" role=\"status\" aria-live=\"polite\">\n {announcement}\n </p>\n </Modal>\n </>\n );\n}\n","export type AccessibilityColorScheme = \"system\" | \"light\" | \"dark\";\nexport type AccessibilityHighContrastTheme = \"light\" | \"dark\";\nexport type AccessibilityFontScale = \"standard\" | \"large\" | \"extra-large\";\n\nexport interface AccessibilityPreferences {\n colorScheme: AccessibilityColorScheme;\n highContrast: boolean;\n highContrastTheme: AccessibilityHighContrastTheme;\n fontScale: AccessibilityFontScale;\n reduceMotion: boolean;\n emphasizeFocus: boolean;\n underlineLinks: boolean;\n}\n\nexport const DEFAULT_ACCESSIBILITY_PREFERENCES: AccessibilityPreferences = {\n colorScheme: \"light\",\n highContrast: false,\n highContrastTheme: \"light\",\n fontScale: \"standard\",\n reduceMotion: false,\n emphasizeFocus: false,\n underlineLinks: false,\n};\n","\"use client\";\n\nimport { MdContrast } from \"react-icons/md\";\n\nexport interface HighContrastToggleProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n label?: string;\n className?: string;\n}\n\nexport default function HighContrastToggle({\n checked,\n onChange,\n label = \"Alto contraste\",\n className,\n}: HighContrastToggleProps) {\n return (\n <button\n type=\"button\"\n aria-pressed={checked}\n onClick={() => onChange(!checked)}\n className={`inline-flex min-h-11 items-center justify-center gap-2 rounded-sm border-2 border-action-primary-content bg-action-primary px-3 text-sm font-bold text-action-primary-content shadow-sm hover:bg-action-primary-hover active:bg-action-primary-active focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring ${className ?? \"\"}`.trim()}\n >\n <MdContrast aria-hidden=\"true\" className=\"h-5 w-5\" />\n <span>{label}</span>\n <span aria-hidden=\"true\" className=\"rounded-sm bg-surface-card px-1.5 py-0.5 text-xs text-content-primary\">\n {checked ? \"Ativado\" : \"Desativado\"}\n </span>\n </button>\n );\n}\n"],"mappings":"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","names":["MdOutlineClose","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","useState","MdAccessibilityNew","Fragment","jsx","jsxs","useState","MdAccessibilityNew","MdContrast","jsx","jsxs"]}
package/dist/core.js CHANGED
@@ -39,17 +39,16 @@ import {
39
39
  resolveStatusAppearance,
40
40
  typography_default,
41
41
  useContainerBreakpoint
42
- } from "./chunk-EPV6UNUQ.js";
42
+ } from "./chunk-JGCZAVYV.js";
43
43
  import {
44
44
  DocumentItem
45
- } from "./chunk-ATWH3MA6.js";
45
+ } from "./chunk-2XXVEFFY.js";
46
46
  import {
47
47
  Tooltip_default,
48
48
  breakpoints,
49
49
  getBreakpoint,
50
50
  useBreakpoint
51
- } from "./chunk-FTRF27XF.js";
52
- import "./chunk-2NMEKWO5.js";
51
+ } from "./chunk-MMTKCHRP.js";
53
52
  export {
54
53
  Avatar_default as Avatar,
55
54
  Button_default as Button,
@@ -0,0 +1,11 @@
1
+ import { D as DesignSystemCountryOption } from './country-metadata-DOgzawAc.js';
2
+ export { C as CountryListFilter, a as CountryListMode, f as filterCountryOptions } from './country-metadata-DOgzawAc.js';
3
+
4
+ /** Browser-safe synchronous URL for a flag shipped by this package. */
5
+ declare function getCountryFlagUrl(cca2?: string | null): string;
6
+ /** Browser entrypoint: light metadata and package-local flag URLs. */
7
+ declare const COUNTRY_OPTIONS: DesignSystemCountryOption[];
8
+ declare const PHONE_COUNTRY_OPTIONS: DesignSystemCountryOption[];
9
+ declare function getCountryOptions(): DesignSystemCountryOption[];
10
+
11
+ export { COUNTRY_OPTIONS, DesignSystemCountryOption, PHONE_COUNTRY_OPTIONS, COUNTRY_OPTIONS as default, getCountryFlagUrl, getCountryOptions };
@@ -0,0 +1,44 @@
1
+ import {
2
+ COUNTRY_OPTIONS,
3
+ filterCountryOptions,
4
+ getCountryOptions
5
+ } from "./chunk-7IY43S3Y.js";
6
+
7
+ // src/countries-browser.ts
8
+ var countryFlagFiles = new Set(
9
+ COUNTRY_OPTIONS.map((country) => country.cca2.toLowerCase())
10
+ );
11
+ function normalizedCode(cca2) {
12
+ const code = String(cca2 || "").trim().toLowerCase();
13
+ return /^[a-z]{2}$/.test(code) && countryFlagFiles.has(code) ? code : "";
14
+ }
15
+ function getCountryFlagUrl(cca2) {
16
+ const code = normalizedCode(cca2);
17
+ return code ? new URL(`./flags/${code}.svg`, import.meta.url).toString() : "";
18
+ }
19
+ function withCountryFlag(option) {
20
+ return {
21
+ ...option,
22
+ flags: {
23
+ ...option.flags,
24
+ svg: getCountryFlagUrl(option.cca2)
25
+ }
26
+ };
27
+ }
28
+ var COUNTRY_OPTIONS2 = COUNTRY_OPTIONS.map(
29
+ withCountryFlag
30
+ );
31
+ var PHONE_COUNTRY_OPTIONS = COUNTRY_OPTIONS2;
32
+ function getCountryOptions2() {
33
+ return getCountryOptions().map(withCountryFlag);
34
+ }
35
+ var countries_browser_default = COUNTRY_OPTIONS2;
36
+ export {
37
+ COUNTRY_OPTIONS2 as COUNTRY_OPTIONS,
38
+ PHONE_COUNTRY_OPTIONS,
39
+ countries_browser_default as default,
40
+ filterCountryOptions,
41
+ getCountryFlagUrl,
42
+ getCountryOptions2 as getCountryOptions
43
+ };
44
+ //# sourceMappingURL=countries-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/countries-browser.ts"],"sourcesContent":["import {\n COUNTRY_OPTIONS as COUNTRY_METADATA_OPTIONS,\n filterCountryOptions,\n getCountryOptions as getMetadataCountryOptions,\n type DesignSystemCountryOption,\n} from \"./data/country-metadata\";\n\nexport type {\n CountryListFilter,\n CountryListMode,\n DesignSystemCountryOption,\n} from \"./data/country-metadata\";\n\nexport { filterCountryOptions };\n\nconst countryFlagFiles = new Set(\n COUNTRY_METADATA_OPTIONS.map((country) => country.cca2.toLowerCase()),\n);\n\nfunction normalizedCode(cca2?: string | null) {\n const code = String(cca2 || \"\").trim().toLowerCase();\n return /^[a-z]{2}$/.test(code) && countryFlagFiles.has(code) ? code : \"\";\n}\n\n/** Browser-safe synchronous URL for a flag shipped by this package. */\nexport function getCountryFlagUrl(cca2?: string | null) {\n const code = normalizedCode(cca2);\n return code ? new URL(`./flags/${code}.svg`, import.meta.url).toString() : \"\";\n}\n\nfunction withCountryFlag(option: DesignSystemCountryOption): DesignSystemCountryOption {\n return {\n ...option,\n flags: {\n ...option.flags,\n svg: getCountryFlagUrl(option.cca2),\n },\n };\n}\n\n/** Browser entrypoint: light metadata and package-local flag URLs. */\nexport const COUNTRY_OPTIONS: DesignSystemCountryOption[] = COUNTRY_METADATA_OPTIONS.map(\n withCountryFlag,\n);\n\nexport const PHONE_COUNTRY_OPTIONS = COUNTRY_OPTIONS;\n\nexport function getCountryOptions() {\n return getMetadataCountryOptions().map(withCountryFlag);\n}\n\nexport default COUNTRY_OPTIONS;\n"],"mappings":";;;;;;;AAeA,IAAM,mBAAmB,IAAI;AAAA,EAC3B,gBAAyB,IAAI,CAAC,YAAY,QAAQ,KAAK,YAAY,CAAC;AACtE;AAEA,SAAS,eAAe,MAAsB;AAC5C,QAAM,OAAO,OAAO,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY;AACnD,SAAO,aAAa,KAAK,IAAI,KAAK,iBAAiB,IAAI,IAAI,IAAI,OAAO;AACxE;AAGO,SAAS,kBAAkB,MAAsB;AACtD,QAAM,OAAO,eAAe,IAAI;AAChC,SAAO,OAAO,IAAI,IAAI,WAAW,IAAI,QAAQ,YAAY,GAAG,EAAE,SAAS,IAAI;AAC7E;AAEA,SAAS,gBAAgB,QAA8D;AACrF,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO;AAAA,MACL,GAAG,OAAO;AAAA,MACV,KAAK,kBAAkB,OAAO,IAAI;AAAA,IACpC;AAAA,EACF;AACF;AAGO,IAAMA,mBAA+C,gBAAyB;AAAA,EACnF;AACF;AAEO,IAAM,wBAAwBA;AAE9B,SAASC,qBAAoB;AAClC,SAAO,kBAA0B,EAAE,IAAI,eAAe;AACxD;AAEA,IAAO,4BAAQD;","names":["COUNTRY_OPTIONS","getCountryOptions"]}
@@ -1,52 +1,12 @@
1
- type DesignSystemCountryOption = {
2
- label: string;
3
- value: string;
4
- cca2: string;
5
- idd: {
6
- root: string;
7
- suffixes: string[];
8
- display: string;
9
- };
10
- flags: {
11
- png: string;
12
- svg: string;
13
- alt: string;
14
- };
15
- };
16
- type CountryListMode = "all" | "include" | "exclude";
17
- /**
18
- * Configura quais paises ficam disponiveis nos seletores.
19
- * `codes` usa os codigos ISO-2 (`BR`, `US`, `PT`, ...).
20
- */
21
- type CountryListFilter = {
22
- mode?: CountryListMode;
23
- codes?: string[];
24
- };
1
+ import { D as DesignSystemCountryOption } from './country-metadata-DOgzawAc.js';
2
+ export { C as CountryListFilter, a as CountryListMode, f as filterCountryOptions } from './country-metadata-DOgzawAc.js';
3
+
25
4
  declare function getCountryFlagUrl(cca2?: string | null): string;
26
- declare function filterCountryOptions<T extends {
27
- cca2?: string;
28
- value?: string;
29
- label?: string;
30
- }>(options: T[], filter?: CountryListFilter): T[];
31
- /** Países com nome, bandeira SVG local e código de discagem válidos. */
5
+ /** Countries with their complete synchronous flag data for the `/countries` entrypoint. */
32
6
  declare const COUNTRY_OPTIONS: DesignSystemCountryOption[];
33
7
  /** Alias semântico para uso direto com o InputPhone. */
34
8
  declare const PHONE_COUNTRY_OPTIONS: DesignSystemCountryOption[];
35
9
  /** Retorna uma cópia para consumidores que precisam ordenar ou filtrar localmente. */
36
- declare function getCountryOptions(): {
37
- idd: {
38
- suffixes: string[];
39
- root: string;
40
- display: string;
41
- };
42
- flags: {
43
- png: string;
44
- svg: string;
45
- alt: string;
46
- };
47
- label: string;
48
- value: string;
49
- cca2: string;
50
- }[];
10
+ declare function getCountryOptions(): DesignSystemCountryOption[];
51
11
 
52
- export { COUNTRY_OPTIONS, type CountryListFilter, type CountryListMode, type DesignSystemCountryOption, PHONE_COUNTRY_OPTIONS, COUNTRY_OPTIONS as default, filterCountryOptions, getCountryFlagUrl, getCountryOptions };
12
+ export { COUNTRY_OPTIONS, DesignSystemCountryOption, PHONE_COUNTRY_OPTIONS, COUNTRY_OPTIONS as default, getCountryFlagUrl, getCountryOptions };