@aspprev/versi-ds 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -143,9 +143,6 @@ var Modal = ({
143
143
  var Modal_default = Modal;
144
144
 
145
145
  // src/components/InputSwitch/InputSwitch.tsx
146
- import {
147
- Switch as HeadlessSwitch
148
- } from "@headlessui/react";
149
146
  import { useState } from "react";
150
147
 
151
148
  // src/components/InputSwitch/InputSwitch.style.ts
@@ -256,10 +253,16 @@ var InputSwitch_style_default = getInputSwitchStyles;
256
253
 
257
254
  // src/components/InputSwitch/InputSwitch.tsx
258
255
  import { MdCheck, MdOutlineClose as MdOutlineClose2, MdSunny, MdNightsStay } from "react-icons/md";
259
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
256
+ import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
260
257
  var InputSwitch = (_a) => {
261
258
  var _b = _a, {
262
259
  defaultEnable: enabledByDefault,
260
+ id,
261
+ name,
262
+ value,
263
+ form,
264
+ autoFocus,
265
+ tabIndex,
263
266
  variant = "primary",
264
267
  size = "md",
265
268
  disabled,
@@ -268,6 +271,12 @@ var InputSwitch = (_a) => {
268
271
  icon: Icon
269
272
  } = _b, rest = __objRest(_b, [
270
273
  "defaultEnable",
274
+ "id",
275
+ "name",
276
+ "value",
277
+ "form",
278
+ "autoFocus",
279
+ "tabIndex",
271
280
  "variant",
272
281
  "size",
273
282
  "disabled",
@@ -290,33 +299,53 @@ var InputSwitch = (_a) => {
290
299
  }
291
300
  onChange == null ? void 0 : onChange(newState);
292
301
  };
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
- );
302
+ return /* @__PURE__ */ jsxs2(Fragment2, { children: [
303
+ name && /* @__PURE__ */ jsx2(
304
+ "input",
305
+ {
306
+ type: "checkbox",
307
+ name,
308
+ value: value != null ? value : "on",
309
+ form,
310
+ checked: resolvedEnabled,
311
+ readOnly: true,
312
+ tabIndex: -1,
313
+ "aria-hidden": "true",
314
+ className: "sr-only"
315
+ }
316
+ ),
317
+ /* @__PURE__ */ jsxs2(
318
+ "button",
319
+ __spreadProps(__spreadValues({}, rest), {
320
+ id,
321
+ type: "button",
322
+ role: "switch",
323
+ "aria-checked": resolvedEnabled,
324
+ disabled: disabled != null ? disabled : false,
325
+ autoFocus,
326
+ tabIndex,
327
+ onClick: toggle,
328
+ className: style.Container,
329
+ children: [
330
+ variant !== "contract" && variant !== "theme" && /* @__PURE__ */ jsx2("span", { className: style.Switch, children: Icon && /* @__PURE__ */ jsx2(Icon, { "aria-hidden": "true", className: style.Icon }) }),
331
+ variant === "contract" && /* @__PURE__ */ jsxs2("span", { className: style.Switch, children: [
332
+ resolvedEnabled && /* @__PURE__ */ jsx2(MdCheck, { className: style.Icon, "aria-disabled": disabled }),
333
+ resolvedEnabled || /* @__PURE__ */ jsx2(MdOutlineClose2, { className: style.Icon, "aria-disabled": disabled })
334
+ ] }),
335
+ variant === "theme" && /* @__PURE__ */ jsxs2("span", { className: style.SwitchTheme, children: [
336
+ resolvedEnabled && /* @__PURE__ */ jsx2(
337
+ MdNightsStay,
338
+ {
339
+ className: style.IconTheme,
340
+ "aria-disabled": disabled
341
+ }
342
+ ),
343
+ resolvedEnabled || /* @__PURE__ */ jsx2(MdSunny, { className: style.IconTheme, "aria-disabled": disabled })
344
+ ] })
345
+ ]
346
+ })
347
+ )
348
+ ] });
320
349
  };
321
350
  var InputSwitch_default = InputSwitch;
322
351
 
@@ -560,7 +589,7 @@ function ThemePreference({
560
589
  // src/components/accessibility-preferences/AccessibilityPreferencesPanel.tsx
561
590
  import { useState as useState2 } from "react";
562
591
  import { MdAccessibilityNew as MdAccessibilityNew2, MdRestartAlt } from "react-icons/md";
563
- import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
592
+ import { Fragment as Fragment3, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
564
593
  function AccessibilityPreferencesPanel({
565
594
  preferences,
566
595
  onPreferencesChange,
@@ -582,7 +611,7 @@ function AccessibilityPreferencesPanel({
582
611
  onPreferencesChange(changes);
583
612
  setAnnouncement(message);
584
613
  };
585
- return /* @__PURE__ */ jsxs8(Fragment2, { children: [
614
+ return /* @__PURE__ */ jsxs8(Fragment3, { children: [
586
615
  showTrigger && /* @__PURE__ */ jsxs8(
587
616
  "button",
588
617
  {
@@ -725,4 +754,4 @@ export {
725
754
  DEFAULT_ACCESSIBILITY_PREFERENCES,
726
755
  HighContrastToggle
727
756
  };
728
- //# sourceMappingURL=chunk-DO5C67KS.js.map
757
+ //# sourceMappingURL=chunk-WOD44OEH.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","MdOutlineClose","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,7 +39,7 @@ import {
39
39
  resolveStatusAppearance,
40
40
  typography_default,
41
41
  useContainerBreakpoint
42
- } from "./chunk-EPV6UNUQ.js";
42
+ } from "./chunk-LTW323JQ.js";
43
43
  import {
44
44
  DocumentItem
45
45
  } from "./chunk-ATWH3MA6.js";
package/dist/forms.js CHANGED
@@ -17,7 +17,7 @@ import {
17
17
  buildPhonePayload,
18
18
  datePicker_default,
19
19
  parsePhonePayload
20
- } from "./chunk-OQECJKGA.js";
20
+ } from "./chunk-LPLXAKPJ.js";
21
21
  import "./chunk-FTRF27XF.js";
22
22
  import "./chunk-YCW3REQK.js";
23
23
  import "./chunk-2NMEKWO5.js";
package/dist/index.js CHANGED
@@ -53,7 +53,7 @@ import {
53
53
  resolveStatusAppearance,
54
54
  typography_default,
55
55
  useContainerBreakpoint
56
- } from "./chunk-EPV6UNUQ.js";
56
+ } from "./chunk-LTW323JQ.js";
57
57
  import {
58
58
  BoletoBarCode,
59
59
  FileDropzone_default,
@@ -84,7 +84,7 @@ import {
84
84
  buildPhonePayload,
85
85
  datePicker_default,
86
86
  parsePhonePayload
87
- } from "./chunk-OQECJKGA.js";
87
+ } from "./chunk-LPLXAKPJ.js";
88
88
  import {
89
89
  Tooltip_default,
90
90
  breakpoints,
@@ -102,7 +102,7 @@ import {
102
102
  Modal_default,
103
103
  ReadingPreferences,
104
104
  ThemePreference
105
- } from "./chunk-DO5C67KS.js";
105
+ } from "./chunk-WOD44OEH.js";
106
106
  import "./chunk-2NMEKWO5.js";
107
107
  export {
108
108
  AccessibilityPreferencesPanel,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aspprev/versi-ds",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "files": [
5
5
  "DocumentItem-BU0J2QGP.d.ts",
6
6
  "charts.d.ts",
@@ -8,11 +8,11 @@
8
8
  "chunk-2NMEKWO5.js",
9
9
  "chunk-7JI5637G.js",
10
10
  "chunk-ATWH3MA6.js",
11
- "chunk-DO5C67KS.js",
12
- "chunk-EPV6UNUQ.js",
13
11
  "chunk-FTRF27XF.js",
14
- "chunk-OQECJKGA.js",
12
+ "chunk-LPLXAKPJ.js",
13
+ "chunk-LTW323JQ.js",
15
14
  "chunk-V66QL3TD.js",
15
+ "chunk-WOD44OEH.js",
16
16
  "chunk-YCW3REQK.js",
17
17
  "core.d.ts",
18
18
  "core.js",
@@ -21,7 +21,7 @@ type NativeSwitchProps = {
21
21
  form?: string;
22
22
  autoFocus?: boolean;
23
23
  tabIndex?: number;
24
- } & ({
24
+ } & React__default.AriaAttributes & ({
25
25
  "aria-label": string;
26
26
  "aria-labelledby"?: never;
27
27
  } | {
package/dist/overlays.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  Modal_default,
10
10
  ReadingPreferences,
11
11
  ThemePreference
12
- } from "./chunk-DO5C67KS.js";
12
+ } from "./chunk-WOD44OEH.js";
13
13
  import "./chunk-2NMEKWO5.js";
14
14
  export {
15
15
  AccessibilityPreferencesPanel,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aspprev/versi-ds",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -98,6 +98,7 @@
98
98
  },
99
99
  "devDependencies": {
100
100
  "@axe-core/playwright": "^4.13.0",
101
+ "@eslint/js": "^10.0.1",
101
102
  "@headlessui/react": "^2.2.9",
102
103
  "@playwright/test": "^1.62.0",
103
104
  "@storybook/addon-a11y": "^10.6.0",
@@ -111,7 +112,10 @@
111
112
  "apexcharts": "5.3.6",
112
113
  "autoprefixer": "^10.4.22",
113
114
  "date-fns": "^4.1.0",
115
+ "eslint": "^10.11.0",
116
+ "eslint-plugin-react-hooks": "^7.1.1",
114
117
  "formik": "^2.4.9",
118
+ "globals": "^17.12.0",
115
119
  "jsbarcode": "^3.12.3",
116
120
  "postcss": "8.5.26",
117
121
  "react": "^19.2.3",
@@ -122,6 +126,7 @@
122
126
  "tailwindcss": "3.4.13",
123
127
  "tsup": "^8.5.0",
124
128
  "typescript": "5.9.3",
129
+ "typescript-eslint": "^8.70.1",
125
130
  "vitest": "^4.1.10"
126
131
  },
127
132
  "scripts": {
@@ -135,12 +140,13 @@
135
140
  "storybook": "storybook dev -p 6006",
136
141
  "storybook:standalone": "storybook dev -p 6007",
137
142
  "build-storybook": "storybook build",
143
+ "lint": "eslint \"src/**/*.{ts,tsx}\" \"stories/**/*.{ts,tsx}\" \".storybook/**/*.{ts,tsx}\" \"tests/**/*.{ts,tsx}\" \"scripts/**/*.mjs\" \"playwright.config.ts\" \"playwright.pilot.config.ts\"",
138
144
  "test": "vitest run --config vitest.config.ts --pool=threads --maxWorkers=1",
139
145
  "test:watch": "vitest --config vitest.config.ts",
140
146
  "typecheck": "tsc --noEmit -p tsconfig.json && tsc -p tsconfig.stories.json",
141
147
  "test:visual": "playwright test --config=playwright.config.ts",
142
148
  "test:visual:update": "playwright test --config=playwright.config.ts --update-snapshots",
143
- "prepack": "npm run tokens:check && npm run check:governance && npm run check:security && npm run typecheck && npm run build && npm run check:size && npm run check:package",
149
+ "prepack": "npm run tokens:check && npm run check:governance && npm run check:security && npm run lint && npm run typecheck && npm run build && npm run check:size && npm run check:package",
144
150
  "check:package": "node scripts/check-package.mjs",
145
151
  "test:package": "node scripts/test-package.mjs",
146
152
  "pilot:prepare": "node scripts/prepare-pilot.mjs",
@@ -1 +0,0 @@
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 {\n Switch as HeadlessSwitch,\n} from \"@headlessui/react\";\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} & (\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 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 <HeadlessSwitch\n checked={resolvedEnabled}\n onChange={toggle}\n disabled={disabled ?? false}\n className={style.Container}\n {...rest}\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 </HeadlessSwitch>\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","jsx","jsxs","MdOutlineClose","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","useState","MdAccessibilityNew","Fragment","jsx","jsxs","useState","MdAccessibilityNew","MdContrast","jsx","jsxs"]}