@aspprev/versi-ds 0.4.0 → 0.4.2

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 (80) hide show
  1. package/README.md +7 -0
  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-LPLXAKPJ.js → chunk-6NVJWI5B.js} +551 -603
  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-LTW323JQ.js → chunk-JGCZAVYV.js} +420 -594
  12. package/dist/{chunk-LTW323JQ.js.map → chunk-JGCZAVYV.js.map} +1 -1
  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-WOD44OEH.js → chunk-ZPY72ILO.js} +41 -58
  18. package/dist/{chunk-WOD44OEH.js.map → chunk-ZPY72ILO.js.map} +1 -1
  19. package/dist/core.d.ts +1 -1
  20. package/dist/core.js +3 -4
  21. package/dist/countries-browser.d.ts +11 -0
  22. package/dist/countries-browser.js +294 -0
  23. package/dist/countries-browser.js.map +1 -0
  24. package/dist/countries.d.ts +6 -46
  25. package/dist/countries.js +280 -7
  26. package/dist/countries.js.map +1 -1
  27. package/dist/country-metadata-DOgzawAc.d.ts +27 -0
  28. package/dist/documents.js +2 -3
  29. package/dist/flags-00-MPU4ISEM.js +85 -0
  30. package/dist/flags-00-MPU4ISEM.js.map +1 -0
  31. package/dist/flags-01-PWC64NSQ.js +13 -0
  32. package/dist/flags-01-PWC64NSQ.js.map +1 -0
  33. package/dist/flags-02-GNF7X6MP.js +10 -0
  34. package/dist/flags-02-GNF7X6MP.js.map +1 -0
  35. package/dist/flags-03-STVDA6UG.js +82 -0
  36. package/dist/flags-03-STVDA6UG.js.map +1 -0
  37. package/dist/flags-04-Z6AHZIWG.js +31 -0
  38. package/dist/flags-04-Z6AHZIWG.js.map +1 -0
  39. package/dist/flags-05-QBADBC6C.js +13 -0
  40. package/dist/flags-05-QBADBC6C.js.map +1 -0
  41. package/dist/flags-06-O55E67OI.js +28 -0
  42. package/dist/flags-06-O55E67OI.js.map +1 -0
  43. package/dist/flags-07-RSWJQIRW.js +64 -0
  44. package/dist/flags-07-RSWJQIRW.js.map +1 -0
  45. package/dist/flags-08-HHXIPTKX.js +31 -0
  46. package/dist/flags-08-HHXIPTKX.js.map +1 -0
  47. package/dist/flags-09-OEZBQ62G.js +64 -0
  48. package/dist/flags-09-OEZBQ62G.js.map +1 -0
  49. package/dist/flags-10-XJY5UMQR.js +73 -0
  50. package/dist/flags-10-XJY5UMQR.js.map +1 -0
  51. package/dist/flags-11-7M75OPUJ.js +34 -0
  52. package/dist/flags-11-7M75OPUJ.js.map +1 -0
  53. package/dist/flags-12-JY22PFQH.js +31 -0
  54. package/dist/flags-12-JY22PFQH.js.map +1 -0
  55. package/dist/flags-13-BERDGZCT.js +52 -0
  56. package/dist/flags-13-BERDGZCT.js.map +1 -0
  57. package/dist/flags-14-XVPM2GQ2.js +31 -0
  58. package/dist/flags-14-XVPM2GQ2.js.map +1 -0
  59. package/dist/flags-15-WESIXIDR.js +64 -0
  60. package/dist/flags-15-WESIXIDR.js.map +1 -0
  61. package/dist/flags-16-PTNHBPYG.js +40 -0
  62. package/dist/flags-16-PTNHBPYG.js.map +1 -0
  63. package/dist/flags-17-UYXBV5BH.js +10 -0
  64. package/dist/flags-17-UYXBV5BH.js.map +1 -0
  65. package/dist/flags-18-VMKDO7W4.js +91 -0
  66. package/dist/flags-18-VMKDO7W4.js.map +1 -0
  67. package/dist/flags-19-635PQOEQ.js +43 -0
  68. package/dist/flags-19-635PQOEQ.js.map +1 -0
  69. package/dist/forms.d.ts +2 -2
  70. package/dist/forms.js +3 -4
  71. package/dist/index.d.ts +1 -1
  72. package/dist/index.js +8 -9
  73. package/dist/manifest.json +32 -10
  74. package/dist/overlays.js +1 -2
  75. package/package.json +4 -2
  76. package/dist/chunk-2NMEKWO5.js +0 -38
  77. package/dist/chunk-2NMEKWO5.js.map +0 -1
  78. package/dist/chunk-LPLXAKPJ.js.map +0 -1
  79. package/dist/chunk-YCW3REQK.js +0 -3102
  80. package/dist/chunk-YCW3REQK.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/loadingDots/LoadingDotsView.tsx","../src/components/button/Button.tsx","../src/components/typography/typography.tsx","../src/components/divider/Divider.tsx","../src/components/surface/Surface.tsx","../src/components/modalCard/ModalCardView.tsx","../src/components/notice/NoticeView.tsx","../src/components/pageState/PageState.tsx","../src/components/avatar/Avatar.tsx","../src/components/avatar/AvatarIcon.tsx","../src/components/avatar/AvatarImage.tsx","../src/types/themed-image.ts","../src/components/themed-image/ThemedImage.tsx","../src/components/icon-provider/PortalIconProvider.tsx","../src/components/circularLoading/CircularLoading.tsx","../src/components/text-group/TextGroup.tsx","../src/components/pagination/PaginationView.tsx","../src/components/pagination/components/PageButtons.tsx","../src/components/checkbox/checkbox.tsx","../src/components/slider/Slider.tsx","../src/components/inputSlider/InputSliderView.tsx","../src/components/form-layout/FormActions.tsx","../src/components/form-layout/FormGrid.tsx","../src/components/page-heading/PageHeading.tsx","../src/components/page-tabs/PageTabsHeader.tsx","../src/components/info-grid/InfoGrid.tsx","../src/utils/optional-value.ts","../src/components/filter-bar/FilterBar.tsx","../src/utils/resolve-status-appearance.ts","../src/components/status-badge/StatusBadge.tsx","../src/components/status-badge/DomainStatusBadge.tsx","../src/components/skipLink/SkipLink.tsx","../src/components/focus-navigation/FocusNavigationMode.tsx","../src/components/form-error-navigation/FormErrorNavigation.tsx","../src/components/table/Table.tsx","../src/components/table/TableView.tsx","../src/components/table/components/filter/FilterView.tsx","../src/components/table/components/filter/Filter.tsx","../src/components/table/components/notFound/NotFoundView.tsx","../src/components/table/MobileCardTable.tsx","../src/hooks/useContainerBreakpoint.ts"],"sourcesContent":["import React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\nconst colorVariant = cva(`w-[14px] h-[14px] rounded-full`, {\n variants: {\n color: {\n white: \"bg-content-inverse\",\n primary: \"bg-content-link\",\n secondary: \"bg-content-brand-secondary\",\n tertiary: \"bg-content-primary\",\n danger: \"bg-feedback-danger-content\",\n warning: \"bg-feedback-warning-content\",\n success: \"bg-feedback-success-content\",\n actionPrimary: \"bg-action-primary-content\",\n actionWarning: \"bg-action-warning-content\",\n },\n defaultVariants: {\n color: \"white\",\n },\n },\n});\n\nexport type LoadingDotsProps = VariantProps<typeof colorVariant> & {\n color?:\n | \"white\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"danger\"\n | \"warning\"\n | \"success\"\n | \"actionPrimary\"\n | \"actionWarning\";\n fullContainer?: boolean;\n announce?: boolean;\n ariaLabel?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst LoadingDots: React.FC<LoadingDotsProps> = ({\n color = \"white\",\n fullContainer = false,\n announce = true,\n ariaLabel,\n className,\n \"aria-label\": ariaLabelAttribute,\n ...rest\n}) => {\n const accessibleLabel = ariaLabel ?? ariaLabelAttribute ?? \"Carregando\";\n\n return (\n <div\n {...rest}\n className={`flex items-center justify-center gap-[10px]${fullContainer ? \" w-full h-full min-h-[400px]\" : \"\"}${className ? ` ${className}` : \"\"}`}\n role={announce ? \"status\" : undefined}\n aria-live={announce ? \"polite\" : undefined}\n aria-atomic={announce || undefined}\n aria-hidden={!announce || undefined}\n >\n {announce && <span className=\"sr-only\">{accessibleLabel}</span>}\n <span\n className={`animate-[1s_pulse_0s_ease-in-out_infinite] ${colorVariant({\n color,\n })}`}\n ></span>\n <span\n className={`animate-[1s_pulse_0.3s_ease-in-out_infinite] ${colorVariant(\n { color },\n )}`}\n ></span>\n <span\n className={`animate-[1s_pulse_0.6s_ease-in-out_infinite] ${colorVariant(\n { color },\n )}`}\n ></span>\n </div>\n );\n};\n\nexport default LoadingDots;\n\n","import React from \"react\";\nimport type { IconBaseProps } from \"react-icons\";\nimport LoadingDots from \"../loadingDots\";\n\nexport type ButtonProps = {\n children?: React.ReactNode;\n disabled?: boolean;\n variant?: \"flat\" | \"outline\" | \"plain\";\n color?: \"primary\" | \"secondary\" | \"tertiary\" | \"danger\" | \"warning\";\n size?: \"small\" | \"medium\" | \"large\";\n width?: \"auto\" | \"full\";\n loading?: boolean;\n loadingLabel?: string;\n leadIcon?: React.ComponentType<IconBaseProps>;\n endIcon?: React.ComponentType<IconBaseProps>;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nfunction getTextContent(node: React.ReactNode): string {\n if (typeof node === \"string\" || typeof node === \"number\") {\n return String(node);\n }\n\n if (Array.isArray(node)) {\n return node.map(getTextContent).filter(Boolean).join(\" \");\n }\n\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) {\n return getTextContent(node.props.children);\n }\n\n return \"\";\n}\n\nconst VARIANT_STYLES = {\n flat: {\n disabled: `cursor-not-allowed border-disabled bg-surface-disabled text-content-disabled`,\n default: {\n primary: `bg-action-primary text-action-primary-content hover:bg-action-primary-hover active:bg-action-primary-active`,\n secondary: `bg-action-secondary text-action-secondary-content hover:bg-action-secondary-hover active:bg-action-secondary-active`,\n tertiary: `bg-action-tertiary text-action-tertiary-content opacity-100 hover:bg-action-tertiary-hover active:bg-action-tertiary-active`,\n danger: `bg-action-danger text-action-danger-content hover:bg-action-danger-hover active:bg-action-danger-active`,\n warning: `bg-action-warning text-action-warning-content hover:bg-action-warning-hover active:bg-action-warning-active`,\n },\n },\n outline: {\n disabled: `cursor-not-allowed border-disabled bg-surface-disabled text-content-disabled`,\n default: {\n primary: `border-content-link text-content-link hover:border-action-primary-hover hover:text-content-link active:bg-selection-background active:border-action-primary-active active:text-content-on-brand`,\n secondary: `border-content-brand-secondary text-content-brand-secondary hover:border-action-secondary-hover hover:text-content-brand-secondary active:bg-action-secondary active:border-action-secondary-active active:text-action-secondary-content`,\n tertiary: `border-border-strong text-content-primary hover:text-content-secondary active:bg-surface-muted active:text-content-muted`,\n danger: `border-feedback-danger-border text-feedback-danger-content hover:border-action-danger-hover hover:text-feedback-danger-content active:bg-feedback-danger-soft active:border-action-danger-active active:text-feedback-danger-content`,\n warning: `border-feedback-warning-border text-feedback-warning-content hover:text-feedback-warning-content active:bg-feedback-warning-soft active:border-feedback-warning-content active:text-feedback-warning-content`,\n },\n },\n plain: {\n disabled: `cursor-not-allowed border-none text-content-disabled`,\n default: {\n primary: `border-transparent text-content-link hover:bg-action-primary-ghost hover:text-content-link active:border-content-link`,\n secondary: `border-transparent text-content-brand-secondary hover:bg-action-secondary-ghost hover:text-content-brand-secondary active:border-content-brand-secondary`,\n tertiary: `border-transparent text-content-primary hover:bg-surface-muted hover:text-content-muted active:border-border-default`,\n danger: `border-transparent text-feedback-danger-content hover:bg-feedback-danger-soft hover:text-feedback-danger-content active:border-feedback-danger-content`,\n warning: `border-transparent text-feedback-warning-content hover:bg-feedback-warning-soft hover:text-feedback-warning-content active:border-feedback-warning-content`,\n },\n },\n};\n\nfunction getVariant(\n color: ButtonProps[\"color\"],\n variant: ButtonProps[\"variant\"],\n disabled: ButtonProps[\"disabled\"],\n) {\n const variantStyles =\n VARIANT_STYLES[variant === undefined ? \"flat\" : variant];\n return disabled\n ? variantStyles.disabled\n : variantStyles.default[color === undefined ? \"primary\" : color];\n}\n\nfunction getSize(size: ButtonProps[\"size\"]) {\n switch (size) {\n case \"small\":\n return `h-control-sm`;\n case \"medium\":\n return `h-control-md`;\n case \"large\":\n return `h-control-lg`;\n }\n}\n\nconst WIDTH_STYLES: Record<NonNullable<ButtonProps[\"width\"]>, string> = {\n auto: \"w-auto\",\n full: \"w-full\",\n};\n\nconst Button: React.FC<ButtonProps> = ({\n variant = \"flat\",\n children,\n className,\n disabled = false,\n size = \"medium\",\n width = \"auto\",\n color = \"primary\",\n leadIcon: LeadIcon,\n endIcon: EndIcon,\n loading = false,\n loadingLabel,\n ...rest\n}) => {\n const actionName =\n rest[\"aria-label\"] ?? getTextContent(children).replace(/\\s+/g, \" \").trim();\n const loadingAnnouncement =\n loadingLabel ??\n (actionName ? `Carregando: ${actionName}` : \"Carregando ação solicitada\");\n\n return (\n <>\n <button\n className={`\n flex items-center justify-center rounded-sm px-xs border-[1px] gap-4xs leading-none\n focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\n ${getVariant(color, variant, disabled)}\n ${className}\n ${getSize(size)}\n ${WIDTH_STYLES[width]}\n `}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...rest}\n >\n {LeadIcon && !loading && (\n <LeadIcon aria-hidden=\"true\" focusable=\"false\" className=\"h-3 w-3\" />\n )}\n {loading && (\n <span aria-hidden=\"true\">\n <LoadingDots\n color={\n variant !== \"flat\"\n ? color\n : color === \"primary\"\n ? \"actionPrimary\"\n : color === \"warning\"\n ? \"actionWarning\"\n : \"white\"\n }\n announce={false}\n />\n </span>\n )}\n {loading && <span className=\"sr-only\">{actionName || \"Ação\"}</span>}\n {!loading && children}\n {EndIcon && !loading && (\n <EndIcon aria-hidden=\"true\" focusable=\"false\" className=\"h-3 w-3\" />\n )}\n </button>\n <span\n className=\"sr-only\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {loading ? loadingAnnouncement : \"\"}\n </span>\n </>\n );\n};\n\nexport default Button;\n\n","import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nconst textVariants = cva(\"font-nunito\", {\n variants: {\n variant: {\n primary: \"text-content-primary\",\n secondary: \"text-content-secondary\",\n tertiary: \"text-content-muted\",\n disabled: \"text-content-disabled\",\n link: \"text-content-link\",\n },\n size: {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-md\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n title1: \"text-titlexl\",\n title2: \"text-titlelg\",\n title3: \"text-titlemd\",\n },\n weight: {\n thin: \"font-thin\",\n extralight: \"font-extralight\",\n light: \"font-light\",\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n extrabold: \"font-extrabold\",\n black: \"font-black\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n weight: \"normal\",\n },\n});\n\nexport type TypographySemanticRole =\n | \"page-title\"\n | \"section-title\"\n | \"body\"\n | \"label\"\n | \"caption\"\n | \"helper\";\n\nconst semanticRoleDefaults: Record<\n TypographySemanticRole,\n {\n size: NonNullable<VariantProps<typeof textVariants>[\"size\"]>;\n weight: NonNullable<VariantProps<typeof textVariants>[\"weight\"]>;\n variant: NonNullable<VariantProps<typeof textVariants>[\"variant\"]>;\n }\n> = {\n \"page-title\": { size: \"2xl\", weight: \"extrabold\", variant: \"primary\" },\n \"section-title\": { size: \"xl\", weight: \"extrabold\", variant: \"primary\" },\n body: { size: \"md\", weight: \"normal\", variant: \"primary\" },\n label: { size: \"md\", weight: \"normal\", variant: \"primary\" },\n caption: { size: \"sm\", weight: \"normal\", variant: \"secondary\" },\n helper: { size: \"sm\", weight: \"normal\", variant: \"tertiary\" },\n};\n\ntype TextElement =\n | \"p\"\n | \"span\"\n | \"div\"\n | \"label\"\n | \"strong\"\n | \"em\"\n | \"small\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\";\n\nexport type TypographyProps = VariantProps<typeof textVariants> & {\n children: React.ReactNode;\n element?: TextElement;\n semanticRole?: TypographySemanticRole;\n className?: string;\n} & React.HTMLAttributes<HTMLElement>;\n\nexport function Typography({\n children,\n element = \"p\",\n semanticRole,\n className,\n variant,\n size,\n weight,\n ...rest\n}: TypographyProps) {\n const Component = element;\n const semanticDefaults = semanticRole\n ? semanticRoleDefaults[semanticRole]\n : undefined;\n\n return (\n <Component\n className={textVariants({\n variant: variant ?? semanticDefaults?.variant,\n size: size ?? semanticDefaults?.size,\n weight: weight ?? semanticDefaults?.weight,\n className,\n })}\n {...rest}\n >\n {children}\n </Component>\n );\n}\n\nexport default Typography;\n\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nconst colorClassMap = {\n light: \"bg-border-subtle\",\n dark: \"bg-border-strong\",\n black: \"bg-content-primary\",\n};\n\nexport type DividerProps = {\n width?: string;\n height?: string;\n bgColor?: \"light\" | \"dark\" | \"black\";\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst Divider: React.FC<DividerProps> = ({\n width,\n height = \"h-[1px]\",\n children,\n bgColor = \"black\",\n ...rest\n}) => {\n const colorClass = colorClassMap[bgColor];\n const barClass = classNames(children ? \"w-1/3\" : \"w-1/2\", height, colorClass);\n\n return (\n <div className={classNames(width, \"flex items-center justify-center\")}>\n <div className={barClass}></div>\n {children && <div className=\"px-3\">{children} </div>}\n <div className={barClass}></div>\n </div>\n );\n};\n\nexport default Divider;\n\n","import classNames from \"classnames\";\nimport React from \"react\";\n\nexport type SurfaceProps = React.HTMLAttributes<HTMLDivElement> & {\n elevation?: \"none\" | \"sm\" | \"md\";\n padding?: \"none\" | \"compact\" | \"default\";\n radius?: \"none\" | \"sm\" | \"md\";\n tone?:\n | \"card\"\n | \"subtle\"\n | \"muted\"\n | \"disabled\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"transparent\";\n};\n\nconst ELEVATION_STYLES: Record<\n NonNullable<SurfaceProps[\"elevation\"]>,\n string\n> = {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n};\n\nconst PADDING_STYLES: Record<NonNullable<SurfaceProps[\"padding\"]>, string> = {\n none: \"p-0\",\n compact: \"p-2\",\n default: \"p-3 desktop:p-5\",\n};\n\nconst RADIUS_STYLES: Record<NonNullable<SurfaceProps[\"radius\"]>, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n};\n\nconst TONE_STYLES: Record<NonNullable<SurfaceProps[\"tone\"]>, string> = {\n card: \"bg-surface-card\",\n subtle: \"bg-surface-subtle\",\n muted: \"bg-surface-muted\",\n disabled: \"bg-surface-disabled\",\n info: \"bg-feedback-info-soft text-feedback-info-content\",\n success: \"bg-feedback-success-soft text-feedback-success-content\",\n warning: \"bg-feedback-warning-soft text-feedback-warning-content\",\n danger: \"bg-feedback-danger-soft text-feedback-danger-content\",\n transparent: \"bg-transparent\",\n};\n\nexport default function Surface({\n children,\n className,\n elevation = \"sm\",\n padding = \"default\",\n radius = \"md\",\n tone = \"card\",\n ...rest\n}: SurfaceProps) {\n return (\n <div\n className={classNames(\n \"w-full\",\n ELEVATION_STYLES[elevation],\n PADDING_STYLES[padding],\n RADIUS_STYLES[radius],\n TONE_STYLES[tone],\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\n","import React, { ReactNode } from \"react\";\nimport Surface from \"../surface\";\n\nexport type ModalCardProps = {\n children?: ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction ModalCardView(props: ModalCardProps) {\n const { children, className, ...rest } = props;\n return (\n <Surface\n className={`gap-2 ${className ?? \"\"}`}\n {...rest}\n >\n {children}\n </Surface>\n );\n}\n\nexport default ModalCardView;\n\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { IconBaseProps } from \"react-icons\";\nimport { MdClose, MdHelpOutline } from \"react-icons/md\";\n\nexport type BoxProps = {\n rounded?: boolean;\n type?:\n | \"info\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"gray\"\n | \"success\"\n | \"warning\"\n | \"danger\";\n children: React.ReactNode;\n textColor?: \"default\" | \"color\";\n onDismiss?: () => void;\n onTriggerHelp?: () => void;\n icon?: React.ComponentType<IconBaseProps>;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst boxClassMap = {\n info: \"bg-feedback-info-soft\",\n primary: \"border border-selection-border bg-selection-background\",\n secondary: \"bg-action-secondary\",\n tertiary: \"bg-action-tertiary\",\n gray: \"bg-surface-muted\",\n success: \"bg-feedback-success-soft\",\n warning: \"bg-feedback-warning-soft\",\n danger: \"bg-feedback-danger-soft\",\n};\n\nconst colorTextClassMap = {\n info: \"text-feedback-info-content\",\n primary: \"text-selection-content\",\n secondary: \"text-action-secondary-content\",\n tertiary: \"text-action-tertiary-content\",\n gray: \"text-content-link\",\n success: \"text-feedback-success-content\",\n warning: \"text-feedback-warning-content\",\n danger: \"text-feedback-danger-content\",\n};\n\nconst defaultTextClassMap = {\n info: \"text-content-primary\",\n primary: \"text-selection-content\",\n secondary: \"text-action-secondary-content\",\n tertiary: \"text-action-tertiary-content\",\n gray: \"text-content-primary\",\n success: \"text-content-primary\",\n warning: \"text-content-primary\",\n danger: \"text-content-primary\",\n};\n\nconst NoticeView: React.FC<BoxProps> = ({\n rounded = false,\n type = \"info\",\n children,\n className,\n onDismiss,\n onTriggerHelp,\n icon: Icon,\n textColor = \"default\",\n ...rest\n}) => {\n const classes = classNames(boxClassMap[type], {\n \"rounded-md\": rounded,\n });\n\n return (\n <div className={classes} {...rest}>\n <div className={`flex p-3 gap-3 ${className}`}>\n {Icon && (\n <div className=\"flex gap-2\">\n <Icon\n aria-hidden=\"true\"\n focusable=\"false\"\n className={`h-5 w-5 ${colorTextClassMap[type]}`}\n />\n </div>\n )}\n\n <div\n className={\n textColor === \"color\"\n ? colorTextClassMap[type]\n : defaultTextClassMap[type]\n }\n >\n {children}\n </div>\n\n <div className=\"flex gap-2 ml-auto\">\n {onTriggerHelp && (\n <button\n type=\"button\"\n aria-label=\"Obter ajuda sobre este aviso\"\n className={`inline-flex h-6 w-6 items-center justify-center rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-current ${colorTextClassMap[type]}`}\n onClick={onTriggerHelp}\n >\n <MdHelpOutline\n aria-hidden=\"true\"\n focusable=\"false\"\n className=\"h-5 w-5\"\n />\n </button>\n )}\n {onDismiss && (\n <button\n type=\"button\"\n aria-label=\"Fechar aviso\"\n className={`inline-flex h-6 w-6 items-center justify-center rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-current ${colorTextClassMap[type]}`}\n onClick={onDismiss}\n >\n <MdClose\n aria-hidden=\"true\"\n focusable=\"false\"\n className=\"h-5 w-5\"\n />\n </button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default NoticeView;\n\n","\"use client\";\n\nimport Button from \"../button/Button\";\nimport classNames from \"classnames\";\nimport { ReactNode, useEffect, useId, useRef } from \"react\";\nimport {\n MdErrorOutline,\n MdInfoOutline,\n MdRefresh,\n MdSearchOff,\n} from \"react-icons/md\";\n\ntype PageStateVariant = \"error\" | \"empty\" | \"unavailable\" | \"not-found\";\n\nexport type PageStateProps = {\n variant: PageStateVariant;\n title: string;\n description?: ReactNode;\n illustration?: ReactNode;\n actions?: ReactNode;\n onRetry?: () => void;\n retryLabel?: string;\n compact?: boolean;\n focusOnMount?: boolean;\n headingLevel?: 1 | 2;\n className?: string;\n titleClassName?: string;\n children?: ReactNode;\n};\n\nconst icons = {\n error: MdErrorOutline,\n empty: MdSearchOff,\n unavailable: MdInfoOutline,\n \"not-found\": MdSearchOff,\n};\n\nexport default function PageState({\n variant,\n title,\n description,\n illustration,\n actions,\n onRetry,\n retryLabel = \"Tentar novamente\",\n compact = false,\n focusOnMount = false,\n headingLevel = 1,\n className,\n titleClassName,\n children,\n}: PageStateProps) {\n const titleId = useId();\n const stateRef = useRef<HTMLElement>(null);\n const Icon = icons[variant];\n const TitleTag = headingLevel === 2 ? \"h2\" : \"h1\";\n\n useEffect(() => {\n if (focusOnMount) {\n stateRef.current?.focus();\n }\n }, [focusOnMount]);\n\n return (\n <section\n ref={stateRef}\n role={variant === \"error\" ? \"alert\" : \"status\"}\n aria-labelledby={titleId}\n tabIndex={focusOnMount ? -1 : undefined}\n className={classNames(\n \"grid w-full items-center gap-6 rounded-md bg-surface-card\",\n compact\n ? \"min-h-40 p-4\"\n : \"p-4 mobile:p-6 tablet:p-10 desktop:grid-cols-[minmax(0,1fr)_minmax(240px,420px)]\",\n className,\n )}\n >\n <div className=\"min-w-0 space-y-5\">\n <div className=\"space-y-2\">\n <div className=\"flex items-start gap-2\">\n {!illustration && (\n <Icon\n aria-hidden=\"true\"\n className=\"mt-0.5 h-5 w-5 shrink-0 text-content-link\"\n />\n )}\n <TitleTag\n id={titleId}\n className={classNames(\n \"font-extrabold text-content-primary\",\n compact ? \"text-lg\" : \"text-xl tablet:text-2xl\",\n titleClassName,\n )}\n >\n {title}\n </TitleTag>\n </div>\n {description && (\n <div className=\"text-md text-content-primary\">{description}</div>\n )}\n </div>\n\n {children}\n\n {(onRetry || actions) && (\n <div className=\"flex w-full flex-col gap-2 mobile:flex-row mobile:flex-wrap\">\n {onRetry && (\n <Button\n type=\"button\"\n variant=\"outline\"\n leadIcon={MdRefresh}\n onClick={onRetry}\n className=\"w-full mobile:w-auto\"\n >\n {retryLabel}\n </Button>\n )}\n {actions}\n </div>\n )}\n </div>\n\n {illustration && (\n <div\n aria-hidden=\"true\"\n className=\"flex min-w-0 justify-center desktop:justify-end\"\n >\n {illustration}\n </div>\n )}\n </section>\n );\n}\n\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport AvatarIcon from \"./AvatarIcon\";\nimport AvatarImage from \"./AvatarImage\";\n\nexport type AvatarProps = {\n name?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n image?: string;\n description?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst avatarSizeMap = {\n xs: \"w-5 h-5 text-2xs\",\n sm: \"w-6 h-6 text-sm\",\n md: \"w-8 h-8 text-xl\",\n lg: \"w-9 h-9 text-2xl\",\n};\n\nfunction Inicials(name: string) {\n const nome = name;\n if (!!nome) {\n const array = nome.split(\" \");\n const primeiraLetra = nome.charAt(0);\n const posicaoUltimoEspaco = nome.lastIndexOf(\" \");\n const primeiraLetraUltimoNome = nome.substring(\n posicaoUltimoEspaco + 1,\n posicaoUltimoEspaco + 2,\n );\n\n if (array.length > 1) {\n return `${(primeiraLetra + primeiraLetraUltimoNome).toUpperCase()}`;\n } else {\n return `${primeiraLetra.toUpperCase()}`;\n }\n }\n}\n\nconst Avatar: React.FC<AvatarProps> = ({\n name = \"\",\n size = \"xs\",\n className,\n image,\n description = \"\",\n ...rest\n}) => {\n // const Avatar = ({\n // name = \"\",\n // size = \"xs\",\n // className,\n // image,\n // description = \"\",\n // ...rest\n // }: AvatarProps) => {\n const avatarSizeClass = avatarSizeMap[size];\n\n const avatarComponent = image ? (\n <AvatarImage src={image} altDescription={description} />\n ) : !!name ? (\n <span\n className={classNames(\n `flex items-center justify-center`,\n avatarSizeClass,\n )}\n >\n {Inicials(name)}\n </span>\n ) : (\n <AvatarIcon />\n );\n\n return (\n <div\n className={classNames(\n `relative rounded-full bg-surface-muted flex items-center justify-center text-content-muted`,\n avatarSizeClass,\n className,\n )}\n {...rest}\n >\n {avatarComponent}\n </div>\n );\n};\n\nexport default Avatar;\n\n","import React from \"react\";\nimport { MdOutlinePersonOutline } from \"react-icons/md\";\nexport type AvatarIconProps = {\n name?: string;\n};\n\nconst AvatarIcon = () => {\n return <MdOutlinePersonOutline className=\"absolute w-1/2 h-1/2\" />;\n};\n\nexport default AvatarIcon;\n\n","import React from \"react\";\n\nexport type AvatarImageProps = {\n src: string;\n altDescription: string | \"\";\n};\n\nconst AvatarImage = ({ src, altDescription }: AvatarImageProps) => {\n return (\n <img\n src={src}\n alt={altDescription}\n className=\"rounded-full object-cover\"\n />\n );\n};\n\nexport default AvatarImage;\n\n","export type ThemedImageSource =\n | string\n | {\n light: string;\n dark?: string;\n };\n\nexport function normalizeThemedImageSource(source: ThemedImageSource) {\n if (typeof source === \"string\") {\n return { light: source, dark: undefined };\n }\n\n return source;\n}\n","import {\n normalizeThemedImageSource,\n type ThemedImageSource,\n} from \"../../types/themed-image\";\nimport classNames from \"classnames\";\nimport type { ImgHTMLAttributes } from \"react\";\n\nexport type ThemedImageProps = Omit<ImgHTMLAttributes<HTMLImageElement>, \"src\"> & {\n source: ThemedImageSource;\n basePath?: string;\n svgClassName?: string;\n};\n\nconst DEFAULT_LOGOS_BASE_PATH = \"/logos\";\n\nfunction resolvePath(\n source: string,\n basePath: string = DEFAULT_LOGOS_BASE_PATH,\n) {\n if (!basePath || source.startsWith(\"/\") || source.includes(\":\")) {\n return source;\n }\n\n return `${basePath.replace(/\\/?$/, \"/\")}${source.replace(/^\\/+/, \"\")}`;\n}\n\nfunction isSvgSource(source: string) {\n return source.split(/[?#]/, 1)[0].toLowerCase().endsWith(\".svg\");\n}\n\nexport default function ThemedImage({\n source,\n basePath,\n svgClassName,\n className,\n alt,\n ...props\n}: ThemedImageProps) {\n const sources = normalizeThemedImageSource(source);\n const lightSource = resolvePath(sources.light, basePath);\n const darkSource = sources.dark\n ? resolvePath(sources.dark, basePath)\n : undefined;\n\n return (\n <>\n <img\n {...props}\n src={lightSource}\n alt={alt}\n data-color-scheme-logo=\"light\"\n className={classNames(\n className,\n isSvgSource(lightSource) && svgClassName,\n \"themed-image-light\",\n {\n \"themed-image-has-dark\": Boolean(darkSource),\n },\n )}\n />\n {darkSource && (\n <img\n {...props}\n src={darkSource}\n alt={alt}\n data-color-scheme-logo=\"dark\"\n className={classNames(\n className,\n isSvgSource(darkSource) && svgClassName,\n \"themed-image-dark\",\n )}\n />\n )}\n </>\n );\n}\n\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { IconContext } from \"react-icons\";\n\nconst PORTAL_ICON_CONTEXT = {\n className: \"shrink-0\",\n};\n\nexport type IconProviderProps = {\n children: ReactNode;\n};\n\n/** Keeps every react-icons glyph at its declared size inside flex layouts. */\nexport function IconProvider({ children }: IconProviderProps) {\n return (\n <IconContext.Provider value={PORTAL_ICON_CONTEXT}>\n {children}\n </IconContext.Provider>\n );\n}\n\nexport { IconProvider as PortalIconProvider };\n\n","\"use client\";\n\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\nimport React from \"react\";\n\nexport type CircularLoadingProps = {\n size?: number;\n thickness?: number;\n trackColor?: string;\n indicatorColor?: string;\n withTrack?: boolean;\n color?:\n | \"white\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"danger\"\n | \"warning\"\n | \"success\";\n message?: string;\n className?: string;\n ariaLabel?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst colorMap = {\n white: \"rgb(var(--white))\",\n primary: \"rgb(var(--loading-circular-indicator))\",\n secondary: \"rgb(var(--secondary-1))\",\n tertiary: \"rgb(var(--tertiary-1))\",\n danger: \"rgb(var(--feedback-danger-strong))\",\n warning: \"rgb(var(--feedback-warning-strong))\",\n success: \"rgb(var(--feedback-success-strong))\",\n} as const;\n\nexport default function CircularLoading({\n size = 48,\n thickness = 6,\n trackColor = \"rgb(var(--loading-circular-track))\",\n indicatorColor,\n withTrack = true,\n color = \"primary\",\n message,\n className,\n ariaLabel = \"Carregando\",\n ...rest\n}: CircularLoadingProps) {\n const breakpoint = useBreakpoint();\n const finalSize = breakpoint === \"mobile\" ? Math.min(size, 100) : size;\n const finalThickness =\n breakpoint === \"mobile\" ? Math.min(thickness, 16) : thickness;\n const radius = (finalSize - finalThickness) / 2;\n const circumference = 2 * Math.PI * radius;\n const center = finalSize / 2;\n const finalIndicatorColor = indicatorColor ?? colorMap[color];\n\n return (\n <div\n role=\"status\"\n aria-label={ariaLabel}\n className={`inline-flex flex-col items-center justify-center gap-4 leading-none ${className ?? \"\"}`.trim()}\n {...rest}\n >\n <svg\n className=\"shrink-0\"\n width={finalSize}\n height={finalSize}\n viewBox={`0 0 ${finalSize} ${finalSize}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {withTrack && (\n <circle\n className=\"circular-loading-track\"\n cx={finalSize / 2}\n cy={finalSize / 2}\n r={radius}\n stroke={trackColor}\n strokeWidth={finalThickness}\n fill=\"none\"\n />\n )}\n <circle\n className=\"circular-loading-indicator\"\n cx={finalSize / 2}\n cy={finalSize / 2}\n r={radius}\n stroke={finalIndicatorColor}\n strokeWidth={finalThickness}\n strokeLinecap=\"round\"\n fill=\"none\"\n strokeDasharray={circumference}\n strokeDashoffset={circumference * 0.75}\n >\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from={`0 ${center} ${center}`}\n to={`360 ${center} ${center}`}\n dur=\"1.4s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n </svg>\n {message && (\n <p className=\"text-center text-sm font-medium text-content-secondary\">\n {message}\n </p>\n )}\n </div>\n );\n}\n\n\n","import Typography from \"../typography/typography\";\nimport type { HTMLAttributes } from \"react\";\n\nexport type TextGroupProps = {\n title: string;\n text: string;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport default function TextGroup({\n title,\n text = \"-\",\n className,\n ...rest\n}: TextGroupProps) {\n return (\n <div className={className} {...rest}>\n <Typography size=\"sm\" className=\"text-content-primary\">\n {title}\n </Typography>\n <Typography size=\"md\" className=\"break-words font-semibold text-content-primary\">\n {text || \"-\"}\n </Typography>\n </div>\n );\n}\n\n\n","import { MdChevronLeft, MdChevronRight } from 'react-icons/md';\nimport cs from 'classnames';\nimport PageButtons from './components/PageButtons';\n\nexport interface PaginationProps {\n currentPage: number;\n totalResults: number;\n perPage: number;\n onClick: (page: number) => void;\n}\n\nfunction PaginationView(props: PaginationProps) {\n const { currentPage, totalResults, perPage, onClick } = props;\n\n return (\n <nav\n aria-label=\"Paginação\"\n className=\"flex flex-wrap justify-between mt-auto mb-5\"\n >\n <span className=\"text-sm text-content-primary\">\n Visualizando de {(currentPage * perPage) - (perPage - 1)}{' '}\n até {totalResults > (currentPage * perPage) ? currentPage * perPage : totalResults}{' '}\n de {totalResults} resultados\n </span>\n <div className=\"flex items-stretch gap-1.5\">\n {currentPage > 1 && (\n <button\n type=\"button\"\n className={cs('h-7 w-24 rounded-sm border border-border-default',\n 'flex items-center justify-center gap-1 text-content-primary text-sm',\n 'cursor-pointer focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring')}\n onClick={() => onClick(currentPage - 1)}>\n <MdChevronLeft size={10} aria-hidden=\"true\" focusable=\"false\" />\n Anterior\n </button>\n )}\n <PageButtons\n currentPage={currentPage}\n totalResults={totalResults}\n perPage={perPage}\n onClick={onClick}\n />\n {currentPage < Math.ceil((totalResults / 10)) && (\n <button\n type=\"button\"\n className={cs('h-7 w-24 rounded-sm border border-border-default',\n 'flex items-center justify-center gap-1 text-content-primary text-sm',\n 'cursor-pointer focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring')}\n onClick={() => onClick(currentPage + 1)}>\n Próxima\n <MdChevronRight size={10} aria-hidden=\"true\" focusable=\"false\" />\n </button>\n )}\n </div>\n </nav>\n );\n};\n\nexport default PaginationView;\n\n","import cs from 'classnames';\nimport { ReactNode } from 'react';\n\ninterface IProps {\n currentPage: number;\n totalResults: number;\n perPage: number;\n onClick: (page: number) => void;\n}\n\nfunction PageButtons(props: IProps) {\n const { currentPage, totalResults, perPage, onClick } = props;\n const pages = totalResults > 10 ? Math.ceil(totalResults / perPage) : 1;\n let pagesAfter = (pages - currentPage) > 2 ? 2 : (pages - currentPage);\n let pagesBefore = currentPage > 2 ? 2 : currentPage === 2 ? 1 : 0;\n let buttonsBefore: ReactNode[] = [];\n let buttonsAfter: ReactNode[] = [];\n\n for (let i = 1; i <= pagesBefore; i++) {\n const page = currentPage - i;\n buttonsBefore = [\n <button\n key={`page-${page}`}\n type='button'\n aria-label={`Página ${page}`}\n className={cs('flex h-7 w-8 items-center justify-center rounded border border-border-default',\n 'cursor-pointer bg-surface-card text-sm text-content-primary hover:bg-surface-muted',\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring')}\n onClick={() => onClick(page)}>\n {page}\n </button>,\n ...buttonsBefore\n ];\n }\n\n for (let i = 1; i <= pagesAfter; i++) {\n const page = currentPage + i;\n buttonsAfter.push(\n <button\n key={`page-${page}`}\n type='button'\n aria-label={`Página ${page}`}\n className={cs('flex h-7 w-8 items-center justify-center rounded border border-border-default',\n 'cursor-pointer bg-surface-card text-sm text-content-primary hover:bg-surface-muted',\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring')}\n onClick={() => onClick(page)}>\n {page}\n </button>\n );\n }\n\n return [\n ...buttonsBefore,\n <button\n key={`page-${currentPage}`}\n type='button'\n aria-label={`Página ${currentPage}, atual`}\n aria-current='page'\n disabled\n className={cs('flex h-7 w-8 items-center justify-center rounded border border-selection-border',\n 'cursor-default bg-selection-background text-sm text-selection-content')}>\n {currentPage}\n </button>,\n ...buttonsAfter\n ];\n}\n\nexport default PageButtons;\n\n","import type React from \"react\";\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n options: {\n label: string;\n value: string;\n }[];\n value: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n layout?: \"row\" | \"col\" | \"grid-2\";\n}\n\nexport function Checkbox({\n options,\n value,\n onChange,\n layout = \"row\",\n ...props\n}: CheckboxProps) {\n let containerClass = \"\";\n if (layout === \"col\") {\n containerClass = \"flex flex-col gap-y-3 mt-3\";\n } else if (layout === \"grid-2\") {\n containerClass = \"grid grid-cols-2 gap-y-2 mt-3\";\n } else {\n containerClass = \"flex flex-row mt-3\";\n }\n\n return (\n <div className={containerClass}>\n {options.map((option) => (\n <label\n key={option.value}\n className=\"mr-6 flex min-h-7 cursor-pointer items-center gap-2\"\n >\n <input\n type=\"checkbox\"\n className=\"checkbox-control\"\n value={option.value}\n checked={value === option.value}\n onChange={onChange}\n {...props}\n />\n <span className=\"text-content-secondary\">{option.label}</span>\n </label>\n ))}\n </div>\n );\n}\n\n/** @deprecated Use Checkbox. */\nexport const CheckBox = Checkbox;\n/** @deprecated Use CheckboxProps. */\nexport type CheckBoxProps = CheckboxProps;","\"use client\";\n\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport interface SliderProps {\n min: number;\n max: number;\n step: number;\n initialValue?: number;\n value?: number;\n onChange?: (value: number) => void;\n onDragOver?: (value: number) => void;\n disabled?: boolean;\n marks?: number[];\n ariaLabel: string;\n getAriaValueText: (value: number) => string;\n}\n\nconst Slider: React.FC<SliderProps> = ({\n min,\n max,\n step,\n initialValue = min,\n value,\n onChange,\n onDragOver,\n disabled = false,\n marks,\n ariaLabel,\n getAriaValueText,\n}) => {\n const [internalValue, setInternalValue] = useState(initialValue);\n const sliderRef = useRef<HTMLDivElement>(null);\n const thumbRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const progressRef = useRef<HTMLDivElement>(null);\n const tickRefs = useRef<Array<HTMLDivElement | null>>([]);\n const markRefs = useRef<Array<HTMLSpanElement | null>>([]);\n const isDraggingRef = useRef(false);\n const [tooltipOffset, setTooltipOffset] = useState(0);\n\n const currentValue = value !== undefined ? value : internalValue;\n\n useEffect(() => {\n if (value === undefined) {\n setInternalValue(initialValue);\n }\n }, [initialValue, value]);\n\n const roundToStep = (val: number) => {\n const precision = Math.max(0, Math.ceil(-Math.log10(step)));\n return parseFloat((Math.round(val / step) * step).toFixed(precision));\n };\n\n const updateValueFromPosition = (clientX: number) => {\n if (!sliderRef.current) return undefined;\n const sliderRect = sliderRef.current.getBoundingClientRect();\n const newLeft = Math.min(\n Math.max(clientX - sliderRect.left, 0),\n sliderRect.width,\n );\n const rawValue = min + ((max - min) * newLeft) / sliderRect.width;\n return roundToStep(rawValue);\n };\n\n // ---- Mouse ----\n const handleMouseMove = (event: MouseEvent) => {\n if (disabled || !isDraggingRef.current) return;\n const roundedValue = updateValueFromPosition(event.clientX);\n if (roundedValue === undefined) return;\n\n if (value === undefined) setInternalValue(roundedValue);\n if (onChange) onChange(roundedValue);\n };\n\n const handleMouseUp = (event: MouseEvent) => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n\n if (isDraggingRef.current) {\n const finalValue = updateValueFromPosition(event.clientX);\n if (finalValue !== undefined) {\n if (value === undefined) setInternalValue(finalValue);\n if (onChange) onChange(finalValue);\n if (onDragOver) onDragOver(finalValue);\n } else {\n if (onDragOver) onDragOver(currentValue);\n }\n }\n\n isDraggingRef.current = false;\n };\n\n const handleMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled || !sliderRef.current) return;\n isDraggingRef.current = true;\n\n const roundedValue = updateValueFromPosition(event.clientX);\n if (roundedValue !== undefined) {\n if (value === undefined) setInternalValue(roundedValue);\n if (onChange) onChange(roundedValue);\n }\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n };\n\n // ---- Touch ----\n const handleTouchMove = (event: TouchEvent) => {\n if (disabled || !isDraggingRef.current) return;\n const touch = event.touches[0];\n const roundedValue = updateValueFromPosition(touch.clientX);\n if (roundedValue === undefined) return;\n\n if (value === undefined) setInternalValue(roundedValue);\n if (onChange) onChange(roundedValue);\n };\n\n const handleTouchEnd = (event: TouchEvent) => {\n document.removeEventListener(\"touchmove\", handleTouchMove);\n document.removeEventListener(\"touchend\", handleTouchEnd);\n\n if (isDraggingRef.current) {\n const touch = event.changedTouches[0];\n const finalValue = updateValueFromPosition(touch.clientX);\n\n if (finalValue !== undefined) {\n if (value === undefined) setInternalValue(finalValue);\n if (onChange) onChange(finalValue);\n if (onDragOver) onDragOver(finalValue);\n } else {\n if (onDragOver) onDragOver(currentValue);\n }\n }\n\n isDraggingRef.current = false;\n };\n\n const handleTouchStart = (event: React.TouchEvent<HTMLDivElement>) => {\n if (disabled || !sliderRef.current) return;\n isDraggingRef.current = true;\n\n const touch = event.touches[0];\n const roundedValue = updateValueFromPosition(touch.clientX);\n if (roundedValue !== undefined) {\n if (value === undefined) setInternalValue(roundedValue);\n if (onChange) onChange(roundedValue);\n }\n\n document.addEventListener(\"touchmove\", handleTouchMove);\n document.addEventListener(\"touchend\", handleTouchEnd);\n };\n\n // ---- Atualiza posição do thumb e barra ----\n const updateThumbPosition = useCallback(() => {\n if (thumbRef.current && sliderRef.current && progressRef.current) {\n const sliderRect = sliderRef.current.getBoundingClientRect();\n if (max <= min || sliderRect.width <= 0) {\n thumbRef.current.style.left = \"0px\";\n progressRef.current.style.width = \"0px\";\n setTooltipOffset(0);\n return;\n }\n const clampedValue = Math.max(min, Math.min(max, currentValue));\n const left = ((clampedValue - min) / (max - min)) * sliderRect.width;\n const tooltipWidth =\n tooltipRef.current?.getBoundingClientRect().width ?? 48;\n const tooltipHalfWidth = tooltipWidth / 2;\n const thumbHalfWidth = thumbRef.current.getBoundingClientRect().width / 2;\n const clampedTooltipCenter = Math.min(\n Math.max(left, tooltipHalfWidth - thumbHalfWidth),\n sliderRect.width - (tooltipHalfWidth - thumbHalfWidth),\n );\n\n thumbRef.current.style.left = `${left}px`;\n progressRef.current.style.width = `${left}px`;\n setTooltipOffset(clampedTooltipCenter - left);\n }\n }, [currentValue, max, min]);\n\n useEffect(() => {\n updateThumbPosition();\n\n if (typeof ResizeObserver === \"undefined\") {\n window.addEventListener(\"resize\", updateThumbPosition);\n return () => window.removeEventListener(\"resize\", updateThumbPosition);\n }\n\n const resizeObserver = new ResizeObserver(updateThumbPosition);\n if (sliderRef.current) resizeObserver.observe(sliderRef.current);\n return () => resizeObserver.disconnect();\n }, [currentValue, max, min, updateThumbPosition]);\n\n const effectiveMarks = useMemo(\n () => (marks && marks.length > 0 ? marks : [min, max]),\n [marks, max, min],\n );\n\n const ticks = useMemo(() => {\n if (max <= min || step <= 0) return [min];\n\n const maxTicks = 50;\n const interval = (max - min) / Math.min(maxTicks, (max - min) / step);\n const calculatedTicks: number[] = [];\n\n for (let tick = min; tick <= max; tick += interval) {\n calculatedTicks.push(tick);\n }\n\n return calculatedTicks;\n }, [max, min, step]);\n\n useEffect(() => {\n ticks.forEach((tick, idx) => {\n const element = tickRefs.current[idx];\n if (!element) return;\n\n const percent = ((tick - min) / (max - min)) * 100;\n const isMain = effectiveMarks.includes(Math.round(tick * 100) / 100);\n element.style.left = `${percent}%`;\n element.style.height = `${isMain ? 10 : 6}px`;\n });\n\n effectiveMarks.forEach((mark, idx) => {\n const element = markRefs.current[idx];\n if (!element) return;\n\n const percent = ((mark - min) / (max - min)) * 100;\n element.style.left = `${percent}%`;\n });\n }, [effectiveMarks, max, min, ticks]);\n\n return (\n <div className=\"block relative w-full h-12\">\n <div\n className={`relative w-full ${\n disabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n } mt-10`}\n ref={sliderRef}\n onMouseDown={handleMouseDown}\n onTouchStart={handleTouchStart}\n tabIndex={disabled ? -1 : 0} // foco do teclado\n onKeyDown={(event) => {\n if (disabled) return;\n\n const setValue = (val: number) => {\n const clamped = Math.max(min, Math.min(max, roundToStep(val)));\n if (value === undefined) setInternalValue(clamped);\n if (onChange) onChange(clamped);\n if (onDragOver) onDragOver(clamped);\n };\n\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowDown\":\n setValue(currentValue - step);\n event.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowUp\":\n setValue(currentValue + step);\n event.preventDefault();\n break;\n case \"Home\":\n setValue(min);\n event.preventDefault();\n break;\n case \"End\":\n setValue(max);\n event.preventDefault();\n break;\n default:\n break;\n }\n }}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={currentValue}\n aria-valuetext={getAriaValueText(currentValue)}\n aria-label={ariaLabel}\n aria-disabled={disabled}\n >\n {/* trilha */}\n <div className=\"absolute left-0 top-1/2 h-[4px] w-full -translate-y-1/2 transform rounded bg-border-default\" />\n\n {/* progresso */}\n <div\n className={`absolute top-1/2 left-0 h-[4px] rounded ${\n disabled ? \"bg-surface-disabled\" : \"bg-action-primary\"\n } transform -translate-y-1/2`}\n ref={progressRef}\n />\n\n {/* thumb */}\n <div\n className=\"absolute top-1/2 w-4 h-4 bg-surface-card border border-border-default rounded-full transform -translate-x-1/2 -translate-y-1/2 select-none\"\n ref={thumbRef}\n >\n {!disabled && (\n <div\n ref={tooltipRef}\n className=\"absolute left-1/2 bottom-full transform -translate-x-1/2 mb-1 font-semibold rounded px-1 py-[2px] text-center text-content-inverse bg-surface-tooltip text-sm \"\n style={{ marginLeft: `${tooltipOffset}px` }}\n >\n {currentValue}\n </div>\n )}\n </div>\n </div>\n\n {/* risquinhos */}\n {ticks.map((tick, idx) => {\n return (\n <div\n key={idx}\n ref={(element) => {\n tickRefs.current[idx] = element;\n }}\n className=\"absolute top-2 w-px -translate-x-1/2 bg-border-strong\"\n />\n );\n })}\n\n {/* números principais */}\n {effectiveMarks.map((mark, idx) => {\n return (\n <span\n key={idx}\n ref={(element) => {\n markRefs.current[idx] = element;\n }}\n className=\"absolute top-5 -translate-x-1/2 text-xs text-content-primary\"\n >\n {mark}\n </span>\n );\n })}\n </div>\n );\n};\n\nexport default Slider;\n\n\n","\"use client\";\n\nimport React, { useCallback, useState, useEffect } from \"react\";\n\nexport interface InputSliderProps {\n name: string;\n start: number;\n end: number;\n initialValue: number;\n functionChange: React.Dispatch<React.SetStateAction<number>>;\n step?: number | null;\n prefix?: string;\n sufix?: string;\n marks?: boolean | ReadonlyArray<{ value: number; label?: React.ReactNode }>;\n valueLabelDisplay?: \"off\" | \"on\" | \"auto\";\n showLabel?: boolean;\n disabled?: boolean;\n inputDisabled?: boolean;\n valueFormmated?: string;\n showInput?: boolean;\n ariaLabel?: string;\n}\n\nconst InputSlider: React.FC<InputSliderProps> = ({\n name,\n start,\n step = 1,\n end,\n functionChange,\n initialValue,\n prefix,\n sufix,\n marks,\n valueLabelDisplay = \"auto\",\n showLabel = false,\n disabled = false,\n inputDisabled = false,\n valueFormmated,\n showInput = false,\n ariaLabel,\n ...rest\n}) => {\n const [value, setValue] = useState(initialValue);\n const controlLabel = ariaLabel || name;\n const valueInputId = `${name}-value`;\n\n const handleSliderChange = useCallback(\n (newValue: number | string) => {\n const parsedValue = Number(newValue);\n setValue(parsedValue);\n },\n [functionChange]\n );\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.value === \"\") {\n setValue(start);\n return;\n }\n\n const nextValue = Number(event.target.value);\n if (Number.isFinite(nextValue)) setValue(nextValue);\n },\n [start],\n );\n\n const handleBlur = useCallback(() => {\n if (value < start) {\n setValue(start);\n } else if (value > end) {\n setValue(end);\n }\n }, [end, start, value]);\n\n useEffect(() => {\n functionChange(value);\n }, [functionChange, value]);\n\n return (\n <div className=\"w-full flex flex-row gap-2\">\n <input\n className=\"w-full range pr-6 accent-primary-1\"\n type=\"range\"\n name={name}\n id={name}\n min={start}\n max={end}\n step={step ?? 1}\n disabled={disabled}\n value={value}\n aria-label={controlLabel}\n onChange={(e) => handleSliderChange(e.target.value)}\n />\n {showInput && (\n <input\n id={valueInputId}\n className=\"min-w-0\"\n value={inputDisabled ? \"-\" : value}\n onChange={handleInputChange}\n onBlur={handleBlur}\n type=\"number\"\n step={step ?? 1}\n min={start}\n max={end}\n aria-label={`${controlLabel} valor`}\n disabled={disabled || inputDisabled}\n />\n )}\n </div>\n );\n};\n\nexport default InputSlider;\n\n","import classNames from \"classnames\";\nimport type { HTMLAttributes } from \"react\";\n\nexport interface FormActionsProps extends HTMLAttributes<HTMLDivElement> {\n align?: \"start\" | \"center\" | \"end\" | \"between\";\n fullWidthOnMobile?: boolean;\n}\n\nconst ALIGN_STYLES = {\n start: \"tablet:justify-start\",\n center: \"tablet:justify-center\",\n end: \"tablet:justify-end\",\n between: \"tablet:justify-between\",\n} as const;\n\nexport function FormActions({\n align = \"end\",\n fullWidthOnMobile = true,\n className,\n ...rest\n}: FormActionsProps) {\n return (\n <div\n className={classNames(\n \"flex w-full flex-col gap-3 tablet:flex-row tablet:items-end\",\n ALIGN_STYLES[align],\n fullWidthOnMobile && \"[&>*]:w-full tablet:[&>*]:w-auto\",\n className,\n )}\n {...rest}\n />\n );\n}\n","import classNames from \"classnames\";\nimport type { HTMLAttributes } from \"react\";\n\nconst COLUMN_STYLES = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 tablet:grid-cols-2\",\n 3: \"grid-cols-1 tablet:grid-cols-3\",\n 4: \"grid-cols-1 tablet:grid-cols-4\",\n 5: \"grid-cols-1 tablet:grid-cols-5\",\n 6: \"grid-cols-1 tablet:grid-cols-6\",\n 7: \"grid-cols-1 tablet:grid-cols-7\",\n 8: \"grid-cols-1 tablet:grid-cols-8\",\n 10: \"grid-cols-1 tablet:grid-cols-10\",\n 12: \"grid-cols-1 tablet:grid-cols-12\",\n} as const;\n\nexport interface FormGridProps extends HTMLAttributes<HTMLDivElement> {\n columns?: keyof typeof COLUMN_STYLES;\n}\n\nexport function FormGrid({ columns = 2, className, ...rest }: FormGridProps) {\n return (\n <div\n className={classNames(\n \"field-alignment-grid grid w-full gap-x-4 gap-y-5\",\n COLUMN_STYLES[columns],\n className,\n )}\n {...rest}\n />\n );\n}\n","\"use client\";\n\nimport Typography from \"../typography/typography\";\nimport classNames from \"classnames\";\nimport type { ReactNode } from \"react\";\nimport { MdArrowBack } from \"react-icons/md\";\n\nexport type PageHeadingBackAction = {\n label: string;\n href?: string;\n onClick?: () => void;\n};\n\nexport type PageHeadingProps = {\n title: ReactNode;\n subtitle?: ReactNode;\n back?: PageHeadingBackAction;\n actions?: ReactNode;\n className?: string;\n contentClassName?: string;\n spacing?: \"default\" | \"none\";\n};\n\nfunction BackContent({ label }: Pick<PageHeadingBackAction, \"label\">) {\n return (\n <>\n <MdArrowBack aria-hidden=\"true\" className=\"h-5 w-5 shrink-0\" />\n <span>{label}</span>\n </>\n );\n}\n\nfunction getBackHref(href?: string) {\n if (!href) return undefined;\n // React 18 only warns about javascript: links. Match browser URL parsing\n // without requiring window/document, including ignored tabs and newlines.\n const protocol = href\n .replace(/^[\\u0000-\\u0020]+/, \"\")\n .replace(/[\\t\\r\\n]/g, \"\");\n return /^javascript:/i.test(protocol) ? undefined : href;\n}\n\nexport default function PageHeading({\n title,\n subtitle,\n back,\n actions,\n className,\n contentClassName,\n spacing = \"default\",\n}: PageHeadingProps) {\n const backHref = getBackHref(back?.href);\n const backClassName =\n \"mb-2 inline-flex w-fit items-center gap-1 text-sm font-semibold text-content-link hover:underline focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\";\n\n return (\n <header\n className={classNames(\n \"flex flex-col gap-3 tablet:flex-row tablet:items-start tablet:justify-between\",\n { \"mb-sm\": spacing === \"default\" },\n className,\n )}\n >\n <div className={classNames(\"min-w-0\", contentClassName)}>\n {back && backHref ? (\n <a className={backClassName} href={backHref}>\n <BackContent label={back.label} />\n </a>\n ) : back ? (\n <button\n type=\"button\"\n className={backClassName}\n onClick={back.onClick}\n >\n <BackContent label={back.label} />\n </button>\n ) : null}\n\n <Typography element=\"h1\" semanticRole=\"page-title\">\n {title}\n </Typography>\n {subtitle !== undefined && subtitle !== null && (\n <Typography\n element=\"p\"\n semanticRole=\"section-title\"\n className=\"mt-2 font-normal\"\n >\n {subtitle}\n </Typography>\n )}\n </div>\n\n {actions && (\n <div className=\"flex w-full flex-wrap items-center gap-2 tablet:w-auto tablet:justify-end\">\n {actions}\n </div>\n )}\n </header>\n );\n}\n","\"use client\";\n\nimport PageHeading from \"../page-heading\";\nimport type { ComponentType, ReactNode } from \"react\";\nimport type { IconBaseProps } from \"react-icons\";\n\nexport type PageTabItem = {\n id: string;\n label: string;\n icon?: ComponentType<IconBaseProps>;\n notification?: ReactNode;\n disabled?: boolean;\n};\n\ninterface PageTabsHeaderProps {\n title: string;\n tabs: PageTabItem[];\n activeTab: string;\n onTabChange: (tabId: string) => void;\n className?: string;\n size?: \"small\" | \"default\";\n}\n\nexport default function PageTabsHeader({\n title,\n tabs,\n activeTab,\n onTabChange,\n className = \"\",\n size = \"default\",\n}: PageTabsHeaderProps) {\n return (\n <div\n className={`flex flex-col gap-4 tablet:flex-row tablet:items-end tablet:justify-between ${className}`}\n >\n <PageHeading title={title} spacing=\"none\" />\n\n {tabs.length > 1 && (\n <nav\n aria-label={title}\n className=\"flex w-full max-w-full flex-row flex-nowrap items-end gap-3 overflow-x-auto tablet:w-fit tablet:justify-end tablet:overflow-visible\"\n >\n <div role=\"tablist\" className=\"flex flex-nowrap items-end gap-3\">\n {tabs.map((tab) => {\n const Icon = tab.icon;\n const isActive = activeTab === tab.id;\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-current={isActive ? \"page\" : undefined}\n disabled={tab.disabled}\n key={tab.id}\n onClick={() => onTabChange(tab.id)}\n className={`inline-flex items-center gap-1 whitespace-nowrap border-b-[3px] transition-colors duration-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-1 disabled:cursor-not-allowed disabled:opacity-50 tablet:px-1 ${\n size === \"small\" ? \"px-0.5 py-0 text-sm\" : \"p-0.5 text-base\"\n } ${\n isActive\n ? \"border-primary-1 font-semibold text-primary-1\"\n : \"border-transparent text-content-secondary hover:text-content-muted\"\n }`}\n >\n {Icon && (\n <Icon aria-hidden=\"true\" className=\"h-4 w-4 shrink-0\" />\n )}\n <span>{tab.label}</span>\n {tab.notification !== undefined &&\n tab.notification !== null && (\n <span className=\"inline-flex min-h-4 min-w-4 items-center justify-center rounded-full bg-feedback-danger-strong px-1 text-2xs font-bold text-feedback-danger-on-strong\">\n {tab.notification}\n </span>\n )}\n </button>\n );\n })}\n </div>\n </nav>\n )}\n </div>\n );\n}\n","import classNames from \"classnames\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { resolveOptionalValue, type OptionalValuePolicy } from \"../../utils/optional-value\";\n\nconst COLUMN_STYLES = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 mobile:grid-cols-2\",\n 3: \"grid-cols-1 mobile:grid-cols-2 tablet:grid-cols-3\",\n 4: \"grid-cols-1 mobile:grid-cols-2 desktop:grid-cols-4\",\n 6: \"grid-cols-1 mobile:grid-cols-2 tablet:grid-cols-3 desktop:grid-cols-6\",\n} as const;\n\nexport interface InfoGridProps extends ComponentProps<\"dl\"> {\n columns?: keyof typeof COLUMN_STYLES;\n}\n\nexport function InfoGrid({ columns = 3, className, ...rest }: InfoGridProps) {\n return (\n <dl\n className={classNames(\n \"grid gap-x-8 gap-y-5\",\n COLUMN_STYLES[columns],\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport interface InfoItemProps extends ComponentProps<\"div\"> {\n label: ReactNode;\n value?: ReactNode;\n optional?: OptionalValuePolicy;\n placeholder?: string;\n numeric?: boolean;\n variant?: \"default\" | \"metric\";\n valueClassName?: string;\n}\n\nexport function InfoItem({\n label,\n value,\n optional = \"placeholder\",\n placeholder = \"-\",\n numeric = false,\n variant = \"default\",\n className,\n valueClassName,\n children,\n ...rest\n}: InfoItemProps) {\n const resolved = resolveOptionalValue(value, { policy: optional, placeholder });\n if (resolved === null) return null;\n\n return (\n <div className={classNames(\"min-w-0\", className)} {...rest}>\n <dt className=\"break-words text-sm text-content-secondary\">{label}</dt>\n <dd\n className={classNames(\n \"mt-1 break-words\",\n variant === \"metric\" ? \"text-md font-bold\" : \"text-md font-semibold\",\n numeric && \"tabular-nums\",\n valueClassName,\n )}\n >\n {children ?? resolved}\n </dd>\n </div>\n );\n}\n","export type OptionalValuePolicy = \"hide\" | \"placeholder\";\n\nexport const hasOptionalValue = (value: unknown): boolean => {\n if (value === null || value === undefined) return false;\n if (typeof value !== \"string\") return true;\n\n const normalized = value.trim().toUpperCase();\n return normalized !== \"\" && normalized !== \"N/A\";\n};\n\nexport function resolveOptionalValue<T>(\n value: T | null | undefined,\n options: {\n policy?: OptionalValuePolicy;\n placeholder?: string;\n } = {},\n): T | string | null {\n if (hasOptionalValue(value)) return value as T;\n if (options.policy === \"hide\") return null;\n return options.placeholder ?? \"-\";\n}\n","import classNames from \"classnames\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { FormActions, FormGrid } from \"../form-layout\";\n\nexport interface FilterBarProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n filters: ReactNode;\n actions?: ReactNode;\n columns?: 1 | 2 | 3 | 4 | 5 | 6;\n actionClassName?: string;\n}\n\nexport function FilterBar({\n filters,\n actions,\n columns = 3,\n className,\n actionClassName,\n ...rest\n}: FilterBarProps) {\n return (\n <div\n className={classNames(\n \"flex w-full flex-col gap-5 desktop:flex-row desktop:items-end\",\n className,\n )}\n {...rest}\n >\n <FormGrid columns={columns} className=\"min-w-0 flex-1\">\n {filters}\n </FormGrid>\n {actions ? (\n <FormActions className={classNames(\"desktop:w-auto\", actionClassName)}>\n {actions}\n </FormActions>\n ) : null}\n </div>\n );\n}\n","export type StatusDomain =\n | \"generic\"\n | \"beneficiary\"\n | \"document\"\n | \"loan\"\n | \"benefit\"\n | \"signature\"\n | \"participation\"\n | \"claim\"\n | \"payment\"\n | \"protocol\"\n | \"request\";\n\nexport type StatusTone = \"info\" | \"warning\" | \"success\" | \"danger\" | \"neutral\";\nexport type StatusAppearance = \"outline\" | \"soft\" | \"solid\";\n\nexport interface ResolvedStatusAppearance {\n tone: StatusTone;\n appearance: StatusAppearance;\n}\n\n/**\n * Map owned by the consuming application. Keys are normalized with\n * `normalizeStatus` before lookup, so accented and differently-cased labels\n * can be used safely by consumers.\n */\nexport type StatusAppearanceMap = Readonly<\n Record<string, ResolvedStatusAppearance>\n>;\n\nexport interface StatusResolverOptions {\n map?: StatusAppearanceMap;\n fallback?: ResolvedStatusAppearance;\n}\n\nconst NORMALIZED_STATUS = {\n infoOutline: new Set([\"ABERTO\", \"PAGO\", \"EM PAGAMENTO\"]),\n infoSolid: new Set([\n \"EM ANDAMENTO\",\n \"SOLICITADO\",\n \"NAO ASSINADO\",\n \"AGUARDANDO ASSINATURA\",\n ]),\n warning: new Set([\n \"EM ANALISE\",\n \"PENDENTE\",\n \"SUSPENSO\",\n \"AGUARDANDO PARTICIPANTE\",\n ]),\n success: new Set([\n \"DEFERIDO\",\n \"QUITADO\",\n \"LIBERADO\",\n \"ATIVO\",\n \"VIGENTE\",\n \"RESPONDIDO\",\n \"ASSINADO\",\n ]),\n danger: new Set([\"INDEFERIDO\", \"VENCIDO\", \"CANCELADO\", \"ERRO\"]),\n neutral: new Set([\n \"CONCLUIDO\",\n \"ENCERRADO\",\n \"FINALIZADO\",\n \"RENEGOCIADO\",\n \"INATIVO\",\n ]),\n};\n\nexport const normalizeStatus = (status: unknown): string =>\n String(status ?? \"\")\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/\\s+/g, \" \")\n .trim()\n .toUpperCase();\n\nconst resolveGenericStatus = (status: string): ResolvedStatusAppearance => {\n if (NORMALIZED_STATUS.infoOutline.has(status)) {\n return { tone: \"info\", appearance: \"outline\" };\n }\n if (NORMALIZED_STATUS.infoSolid.has(status)) {\n return { tone: \"info\", appearance: \"solid\" };\n }\n if (NORMALIZED_STATUS.warning.has(status)) {\n return { tone: \"warning\", appearance: \"soft\" };\n }\n if (NORMALIZED_STATUS.success.has(status)) {\n return { tone: \"success\", appearance: \"solid\" };\n }\n if (NORMALIZED_STATUS.danger.has(status)) {\n return { tone: \"danger\", appearance: \"solid\" };\n }\n if (NORMALIZED_STATUS.neutral.has(status)) {\n return { tone: \"neutral\", appearance: \"solid\" };\n }\n return { tone: \"neutral\", appearance: \"outline\" };\n};\n\nexport const resolveStatusAppearance = (\n status: unknown,\n domain: StatusDomain = \"generic\",\n options?: StatusResolverOptions,\n): ResolvedStatusAppearance => {\n const normalized = normalizeStatus(status);\n\n if (!normalized) {\n return options?.fallback ?? { tone: \"neutral\", appearance: \"outline\" };\n }\n\n const mappedAppearance = options?.map\n ? Object.entries(options.map).find(\n ([key]) => normalizeStatus(key) === normalized,\n )?.[1]\n : undefined;\n\n if (mappedAppearance) return mappedAppearance;\n\n if (domain === \"beneficiary\") {\n if (normalized === \"VIGENTE\") return { tone: \"success\", appearance: \"solid\" };\n if (normalized === \"ENCERRADO\") return { tone: \"neutral\", appearance: \"solid\" };\n }\n\n if (domain === \"document\") {\n if ([\"ANEXADO\", \"ASSINADO\", \"CONCLUIDO\"].includes(normalized)) {\n return { tone: \"success\", appearance: \"solid\" };\n }\n if (normalized.includes(\"AGUARDANDO\") || normalized === \"PENDENTE\") {\n return { tone: \"warning\", appearance: \"soft\" };\n }\n if (normalized === \"BLOQUEADO\") return { tone: \"neutral\", appearance: \"solid\" };\n }\n\n if (domain === \"signature\") {\n if (normalized === \"ASSINADO\") return { tone: \"success\", appearance: \"solid\" };\n if (normalized.includes(\"AGUARDANDO\")) return { tone: \"warning\", appearance: \"soft\" };\n if (normalized === \"NAO ASSINADO\") return { tone: \"info\", appearance: \"solid\" };\n }\n\n if (domain === \"benefit\") {\n if (normalized === \"EM PAGAMENTO\") return { tone: \"info\", appearance: \"outline\" };\n if (normalized === \"SUSPENSO\") return { tone: \"warning\", appearance: \"soft\" };\n }\n\n if (domain === \"participation\") {\n return { tone: \"neutral\", appearance: \"solid\" };\n }\n\n if (domain === \"payment\") {\n if ([\"PAGO\", \"QUITADO\", \"LIBERADO\"].includes(normalized)) {\n return { tone: \"success\", appearance: \"solid\" };\n }\n if ([\"EM PAGAMENTO\", \"AGUARDANDO PAGAMENTO\"].includes(normalized)) {\n return { tone: \"info\", appearance: \"outline\" };\n }\n if ([\"VENCIDO\", \"ESTORNADO\", \"FALHOU\"].includes(normalized)) {\n return { tone: \"danger\", appearance: \"solid\" };\n }\n }\n\n if (domain === \"claim\" || domain === \"request\" || domain === \"protocol\") {\n if ([\"RECEBIDO\", \"PROTOCOLADO\", \"EMITIDO\"].includes(normalized)) {\n return { tone: \"info\", appearance: \"outline\" };\n }\n if ([\"EM ANALISE\", \"AGUARDANDO DOCUMENTACAO\", \"AGUARDANDO ANALISE\"].includes(normalized)) {\n return { tone: \"warning\", appearance: \"soft\" };\n }\n if ([\"APROVADO\", \"CONCEDIDO\", \"ATENDIDO\"].includes(normalized)) {\n return { tone: \"success\", appearance: \"solid\" };\n }\n if ([\"NEGADO\", \"ARQUIVADO\", \"RECUSADO\"].includes(normalized)) {\n return { tone: \"danger\", appearance: \"solid\" };\n }\n }\n\n return options?.fallback ?? resolveGenericStatus(normalized);\n};\n","import type {\n StatusAppearance,\n StatusTone,\n} from \"../../utils/resolve-status-appearance\";\nimport classNames from \"classnames\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\n\nconst TONE_STYLES: Record<StatusTone, Record<StatusAppearance, string>> = {\n info: {\n outline: \"border-feedback-info-border text-feedback-info-content\",\n soft: \"border-feedback-info-border bg-feedback-info-soft text-feedback-info-content\",\n solid:\n \"border-feedback-info-strong bg-feedback-info-strong text-surface-subtle\",\n },\n warning: {\n outline: \"border-feedback-warning-border text-feedback-warning-content\",\n soft: \"border-feedback-warning-border bg-feedback-warning-soft text-feedback-warning-content\",\n solid:\n \"border-feedback-warning-strong bg-feedback-warning-strong text-surface-subtle\",\n },\n success: {\n outline: \"border-feedback-success-border text-feedback-success-content\",\n soft: \"border-feedback-success-border bg-feedback-success-soft text-feedback-success-content\",\n solid:\n \"border-feedback-success-strong bg-feedback-success-strong text-surface-subtle\",\n },\n danger: {\n outline: \"border-feedback-danger-border text-feedback-danger-content\",\n soft: \"border-feedback-danger-border bg-feedback-danger-soft text-feedback-danger-content\",\n solid:\n \"border-feedback-danger-strong bg-feedback-danger-strong text-surface-subtle\",\n },\n neutral: {\n outline: \"border-border-strong text-content-secondary\",\n soft: \"border-border-default bg-surface-subtle text-content-secondary\",\n solid: \"border-surface-action-neutral bg-surface-action-neutral text-surface-subtle\",\n },\n};\n\nconst SIZE_STYLES = {\n sm: \"min-h-5 px-1 py-0.5 text-xs\",\n md: \"min-h-6 px-2 py-0.5 text-sm\",\n} as const;\n\nexport interface StatusBadgeProps extends Omit<\n HTMLAttributes<HTMLSpanElement>,\n \"children\"\n> {\n children: ReactNode;\n tone?: StatusTone;\n appearance?: StatusAppearance;\n size?: keyof typeof SIZE_STYLES;\n overflow?: \"wrap\" | \"truncate\";\n /** Adds a non-color status announcement for assistive technology. */\n statusLabel?: string;\n}\n\nexport function StatusBadge({\n children,\n tone = \"neutral\",\n appearance = \"outline\",\n size = \"md\",\n overflow = \"wrap\",\n statusLabel,\n className,\n title,\n ...rest\n}: StatusBadgeProps) {\n return (\n <span\n className={classNames(\n \"inline-flex w-fit max-w-full items-center justify-center rounded-sm border-2 text-center font-bold uppercase tracking-wide\",\n SIZE_STYLES[size],\n TONE_STYLES[tone][appearance],\n overflow === \"truncate\"\n ? \"overflow-hidden text-ellipsis whitespace-nowrap\"\n : \"whitespace-normal break-words\",\n className,\n )}\n title={title ?? (typeof children === \"string\" ? children : undefined)}\n aria-label={statusLabel}\n {...rest}\n >\n {children}\n </span>\n );\n}\n\nexport const getStatusBadgeClassName = (\n tone: StatusTone,\n appearance: StatusAppearance,\n) => TONE_STYLES[tone][appearance];\n","\"use client\";\n\nimport type { ComponentProps } from \"react\";\nimport {\n resolveStatusAppearance,\n type StatusAppearanceMap,\n type StatusDomain,\n} from \"../../utils/resolve-status-appearance\";\nimport { StatusBadge } from \"./StatusBadge\";\n\nexport interface DomainStatusBadgeProps\n extends Omit<\n ComponentProps<typeof StatusBadge>,\n \"children\" | \"tone\" | \"appearance\"\n > {\n status?: string | null;\n domain?: StatusDomain;\n empty?: \"hide\" | \"placeholder\";\n placeholder?: string;\n /** Optional consumer-owned map for statuses specific to a product domain. */\n statusMap?: StatusAppearanceMap;\n}\n\nexport function DomainStatusBadge({\n status,\n domain = \"generic\",\n empty = \"hide\",\n placeholder = \"-\",\n statusMap,\n ...rest\n}: DomainStatusBadgeProps) {\n const label = status?.trim();\n if (!label && empty === \"hide\") return null;\n\n const resolved = resolveStatusAppearance(label, domain, { map: statusMap });\n return (\n <StatusBadge\n tone={resolved.tone}\n appearance={resolved.appearance}\n {...rest}\n >\n {label || placeholder}\n </StatusBadge>\n );\n}\n","import classNames from \"classnames\";\n\nexport interface SkipLinkProps {\n targetId?: string;\n label?: string;\n className?: string;\n}\n\nexport default function SkipLink({\n targetId = \"main-content\",\n label = \"Pular para o conteúdo\",\n className,\n}: SkipLinkProps) {\n return (\n <a\n href={`#${targetId}`}\n className={classNames(\n \"fixed left-2 top-0 z-drawer -translate-y-[calc(100%+0.5rem)] whitespace-nowrap rounded-sm border border-border-default bg-surface-card px-3 py-2 font-bold text-content-primary shadow-md transition-transform focus:translate-y-0 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring motion-reduce:transition-none\",\n className,\n )}\n >\n {label}\n </a>\n );\n}\n","\"use client\";\n\nimport { useEffect } from \"react\";\n\nconst FOCUS_NAVIGATION_ATTRIBUTE = \"data-focus-navigation\";\n\nexport function FocusNavigationMode() {\n useEffect(() => {\n const root = document.documentElement;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === \"Tab\" &&\n !event.altKey &&\n !event.ctrlKey &&\n !event.metaKey\n ) {\n root.setAttribute(FOCUS_NAVIGATION_ATTRIBUTE, \"keyboard\");\n }\n };\n\n const handlePointerDown = () => {\n root.setAttribute(FOCUS_NAVIGATION_ATTRIBUTE, \"pointer\");\n };\n\n document.addEventListener(\"keydown\", handleKeyDown, true);\n document.addEventListener(\"pointerdown\", handlePointerDown, true);\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown, true);\n document.removeEventListener(\"pointerdown\", handlePointerDown, true);\n };\n }, []);\n\n return null;\n}\n","\"use client\";\n\nimport { useEffect } from \"react\";\n\nfunction shouldReduceMotion() {\n return window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches ?? false;\n}\n\nconst INVALID_FIELD_SELECTOR = [\n '[aria-invalid=\"true\"]',\n \"input:invalid\",\n \"select:invalid\",\n \"textarea:invalid\",\n].join(\",\");\n\nconst RETRY_DELAYS = [50, 150, 300, 600, 1000];\n\nfunction isVisible(element: HTMLElement) {\n const styles = window.getComputedStyle(element);\n const bounds = element.getBoundingClientRect();\n\n return (\n styles.display !== \"none\" &&\n styles.visibility !== \"hidden\" &&\n bounds.width > 0 &&\n bounds.height > 0\n );\n}\n\nfunction getFocusTarget(field: HTMLElement) {\n if (\n field.matches(\n \"input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex='-1'])\",\n )\n ) {\n return field;\n }\n\n return field.querySelector<HTMLElement>(\n \"input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex='-1'])\",\n );\n}\n\nexport function findFirstInvalidField(form: HTMLFormElement) {\n return [...form.querySelectorAll<HTMLElement>(INVALID_FIELD_SELECTOR)]\n .filter(isVisible)\n .sort((first, second) => {\n const firstBounds = first.getBoundingClientRect();\n const secondBounds = second.getBoundingClientRect();\n\n if (firstBounds.top !== secondBounds.top) {\n return firstBounds.top - secondBounds.top;\n }\n\n return firstBounds.left - secondBounds.left;\n })[0];\n}\n\nfunction navigateToInvalidField(field: HTMLElement) {\n const focusTarget = getFocusTarget(field);\n const behavior = shouldReduceMotion() ? \"auto\" : \"smooth\";\n\n focusTarget?.focus({ preventScroll: true });\n field.scrollIntoView({ behavior, block: \"center\", inline: \"nearest\" });\n}\n\nexport function FormErrorNavigation() {\n useEffect(() => {\n let cleanupPendingNavigation: (() => void) | undefined;\n\n const handleSubmit = (event: SubmitEvent) => {\n if (!(event.target instanceof HTMLFormElement)) return;\n\n cleanupPendingNavigation?.();\n\n const form = event.target;\n let handled = false;\n let observer: MutationObserver | undefined;\n const timers: number[] = [];\n\n const cleanup = () => {\n observer?.disconnect();\n timers.forEach(window.clearTimeout);\n };\n\n const tryNavigate = () => {\n if (handled || !form.isConnected) return;\n\n const field = findFirstInvalidField(form);\n if (!field) return;\n\n handled = true;\n cleanup();\n navigateToInvalidField(field);\n };\n\n observer = new MutationObserver(tryNavigate);\n observer.observe(form, {\n attributeFilter: [\"aria-invalid\"],\n attributes: true,\n subtree: true,\n });\n\n RETRY_DELAYS.forEach((delay) => {\n timers.push(window.setTimeout(tryNavigate, delay));\n });\n\n cleanupPendingNavigation = cleanup;\n };\n\n document.addEventListener(\"submit\", handleSubmit, true);\n\n return () => {\n cleanupPendingNavigation?.();\n document.removeEventListener(\"submit\", handleSubmit, true);\n };\n }, []);\n\n return null;\n}\n","\"use client\";\n\nimport React, { ReactNode, useEffect, useId, useMemo, useState } from \"react\";\nimport TableView from \"./TableView\";\nimport { IFilterControl, IFilterProps } from \"./components/filter/Filter\";\n\ntype TablePrimitive = string | number | null | undefined;\n\nexport interface ITableColumnConfig<TData = unknown> {\n key: string;\n title: string;\n className?: string;\n cellClassName?: string;\n widthUnits?: number;\n renderCell?: (item: TData, index: number) => ReactNode;\n accessor?: (item: TData) => TablePrimitive;\n searchAccessor?: (item: TData) => string;\n sortAccessor?: (item: TData) => string | number;\n filterAccessor?: (item: TData) => TablePrimitive;\n filters?: {\n controls: IFilterControl[];\n matchOption?: (\n item: TData,\n value: string,\n control: IFilterControl,\n ) => boolean;\n matchSearch?: (\n item: TData,\n value: string,\n control: IFilterControl,\n ) => boolean;\n compare?: (\n a: TData,\n b: TData,\n value: string,\n control: IFilterControl,\n ) => number;\n };\n}\n\nexport interface IHeaderItem<TData = unknown> {\n title: string;\n onClick?: () => void;\n isFilterOpen?: boolean;\n filters?: IFilterProps;\n className?: string;\n key?: string;\n cellClassName?: string;\n widthUnits?: number;\n renderCell?: (item: TData, index: number) => ReactNode;\n}\n\nexport interface ITablePaginationProps {\n currentPage: number;\n totalPages: number;\n totalItems: number;\n startItem: number;\n endItem: number;\n onPrevious: () => void;\n onNext: () => void;\n variant?: \"default\" | \"arrows\";\n}\n\nexport interface ITableExpandableConfig<TData = unknown> {\n getRowId: (item: TData, index: number) => string | number;\n expandedRowId: string | number | null;\n onToggleRow: (rowId: string | number, item: TData, index: number) => void;\n renderExpandedRow: (item: TData, index: number) => ReactNode;\n expandedRowClassName?: string;\n expandedContentClassName?: string;\n rowClassName?: (item: TData, isExpanded: boolean) => string | undefined;\n}\n\nexport type TableOverflowMode = \"fit\" | \"adaptive\" | \"scroll\";\nexport type TableRowVariant = \"plain\" | \"striped\";\nexport type TableHeaderVariant = \"default\" | \"brand\" | \"dark\" | \"neutral\";\nexport type TableDensity = \"comfortable\" | \"compact\";\n\nexport interface TableProps<TData = unknown>\n extends React.HTMLAttributes<HTMLDivElement> {\n header: IHeaderItem<TData>[] | ITableColumnConfig<TData>[];\n accessibleName?: string;\n caption?: ReactNode;\n children?: ReactNode;\n onFilterChange?: (value: string) => void;\n showPagination?: boolean;\n pagination?: ITablePaginationProps;\n data?: TData[];\n itemsPerPage?: number;\n emptyMessage?: string;\n errorMessage?: ReactNode;\n totalWidthUnits?: number;\n showRowDivider?: boolean;\n enableRowHover?: boolean;\n paginationVariant?: \"default\" | \"arrows\";\n expandable?: ITableExpandableConfig<TData>;\n overflowMode?: TableOverflowMode;\n adaptiveBreakpoint?: number;\n stickyHeader?: boolean;\n scrollAreaMaxHeight?: React.CSSProperties[\"maxHeight\"];\n rowVariant?: TableRowVariant;\n headerVariant?: TableHeaderVariant;\n density?: TableDensity;\n}\n\nfunction Table<TData = unknown>(props: TableProps<TData>) {\n const {\n children,\n header,\n accessibleName,\n caption,\n className,\n onFilterChange,\n showPagination = false,\n pagination,\n data,\n itemsPerPage = 10,\n emptyMessage = \"Nenhum item encontrado\",\n errorMessage,\n totalWidthUnits,\n showRowDivider = false,\n enableRowHover = false,\n paginationVariant = \"default\",\n expandable,\n overflowMode,\n adaptiveBreakpoint,\n stickyHeader = false,\n scrollAreaMaxHeight,\n rowVariant = \"plain\",\n headerVariant = \"default\",\n density = \"comfortable\",\n } = props;\n const tableId = useId();\n const resolvedOverflowMode = overflowMode ?? (data ? \"adaptive\" : \"scroll\");\n const resolvedAdaptiveBreakpoint =\n adaptiveBreakpoint ??\n Math.min(920, 320 + Math.max(header.length - 2, 0) * 120);\n\n const [currentPage, setCurrentPage] = useState(1);\n const [filterValues, setFilterValues] = useState<Record<string, string>>({});\n const [visibleExpandedRowId, setVisibleExpandedRowId] = useState<\n string | null\n >(() =>\n expandable?.expandedRowId !== null &&\n expandable?.expandedRowId !== undefined\n ? String(expandable.expandedRowId)\n : null,\n );\n const [closingExpandedRowId, setClosingExpandedRowId] = useState<\n string | null\n >(null);\n const safeItemsPerPage = Number.isFinite(itemsPerPage)\n ? Math.max(1, Math.floor(itemsPerPage))\n : 10;\n\n const normalizedHeader = useMemo(() => {\n return header.map((item) => {\n const typedItem = item as ITableColumnConfig<TData>;\n return {\n ...typedItem,\n title: typedItem.title,\n };\n });\n }, [header]);\n\n const controlledHeader = useMemo(() => {\n if (!data) {\n return normalizedHeader as IHeaderItem<TData>[];\n }\n\n return normalizedHeader.map((item) => {\n const controls = item.filters?.controls?.map((control) => ({\n ...control,\n value:\n filterValues[`${item.key}-${control.id}`] ??\n control.value ??\n (control.type === \"search\" ? \"\" : \"__all__\"),\n }));\n\n return {\n ...item,\n filters: controls?.length\n ? {\n controls,\n }\n : undefined,\n };\n }) as IHeaderItem<TData>[];\n }, [data, filterValues, normalizedHeader]);\n\n const filteredAndSortedData = useMemo(() => {\n if (!data) return [];\n\n let result = [...data];\n const sorters: Array<(a: TData, b: TData) => number> = [];\n\n normalizedHeader.forEach((column) => {\n const controls = column.filters?.controls ?? [];\n\n controls.forEach((control) => {\n const stateKey = `${column.key}-${control.id}`;\n const value =\n filterValues[stateKey] ??\n control.value ??\n (control.type === \"search\" ? \"\" : \"__all__\");\n\n if (!value || value === \"__all__\") {\n return;\n }\n\n if (control.type === \"options\") {\n result = result.filter((item) => {\n if (column.filters?.matchOption) {\n return column.filters.matchOption(item, value, control);\n }\n\n const resolvedValue =\n column.filterAccessor?.(item) ?? column.accessor?.(item);\n return String(resolvedValue ?? \"\") === value;\n });\n return;\n }\n\n if (control.type === \"search\") {\n const normalizedSearch = value.toLowerCase().trim();\n result = result.filter((item) => {\n if (column.filters?.matchSearch) {\n return column.filters.matchSearch(item, value, control);\n }\n\n const searchableValue =\n column.searchAccessor?.(item) ??\n String(\n column.filterAccessor?.(item) ?? column.accessor?.(item) ?? \"\",\n );\n\n return searchableValue.toLowerCase().includes(normalizedSearch);\n });\n return;\n }\n\n if (control.type === \"sort\") {\n sorters.push((a, b) => {\n if (column.filters?.compare) {\n return column.filters.compare(a, b, value, control);\n }\n\n const valueA = column.sortAccessor?.(a) ?? column.accessor?.(a);\n const valueB = column.sortAccessor?.(b) ?? column.accessor?.(b);\n\n if (typeof valueA === \"number\" && typeof valueB === \"number\") {\n return value === \"desc\" ? valueB - valueA : valueA - valueB;\n }\n\n const stringA = String(valueA ?? \"\");\n const stringB = String(valueB ?? \"\");\n return value === \"desc\"\n ? stringB.localeCompare(stringA)\n : stringA.localeCompare(stringB);\n });\n }\n });\n });\n\n if (!sorters.length) {\n return result;\n }\n\n return [...result].sort((a, b) => {\n for (const sorter of sorters) {\n const comparison = sorter(a, b);\n if (comparison !== 0) {\n return comparison;\n }\n }\n\n return 0;\n });\n }, [data, filterValues, normalizedHeader]);\n\n useEffect(() => {\n setCurrentPage(1);\n }, [filterValues]);\n\n useEffect(() => {\n if (!expandable) {\n setVisibleExpandedRowId(null);\n setClosingExpandedRowId(null);\n return;\n }\n\n const nextExpandedRowId =\n expandable.expandedRowId !== null &&\n expandable.expandedRowId !== undefined\n ? String(expandable.expandedRowId)\n : null;\n\n if (nextExpandedRowId) {\n setVisibleExpandedRowId(nextExpandedRowId);\n setClosingExpandedRowId(null);\n return;\n }\n\n if (!visibleExpandedRowId) {\n return;\n }\n\n setClosingExpandedRowId(visibleExpandedRowId);\n const timeoutId = window.setTimeout(() => {\n setVisibleExpandedRowId(null);\n setClosingExpandedRowId(null);\n }, 220);\n\n return () => window.clearTimeout(timeoutId);\n }, [expandable, visibleExpandedRowId]);\n\n const internalPagination = useMemo(() => {\n if (!data) return null;\n\n const totalItems = filteredAndSortedData.length;\n const totalPages = Math.max(1, Math.ceil(totalItems / safeItemsPerPage));\n const safeCurrentPage = Math.min(currentPage, totalPages);\n const startIndex = (safeCurrentPage - 1) * safeItemsPerPage;\n const endIndex = startIndex + safeItemsPerPage;\n\n return {\n currentPage: safeCurrentPage,\n totalPages,\n totalItems,\n startItem: totalItems === 0 ? 0 : startIndex + 1,\n endItem: Math.min(endIndex, totalItems),\n pageData: filteredAndSortedData.slice(startIndex, endIndex),\n };\n }, [currentPage, data, filteredAndSortedData, safeItemsPerPage]);\n\n const managedCellClassName =\n density === \"compact\"\n ? \"px-3 py-1.5 text-sm text-content-primary\"\n : \"px-4 py-2 text-sm text-content-primary\";\n const expandedContentClassName =\n density === \"compact\"\n ? \"bg-surface-card px-3 py-3\"\n : \"bg-surface-card px-4 py-4\";\n const emptyCellClassName =\n density === \"compact\"\n ? \"px-3 py-4 text-center text-sm text-content-muted\"\n : \"px-4 py-6 text-center text-sm text-content-muted\";\n\n const renderedChildren = useMemo(() => {\n if (!data || !internalPagination) {\n return children;\n }\n\n return (\n <tbody data-managed-rows=\"true\">\n {internalPagination.pageData.map((item, index) =>\n (() => {\n const rowId = expandable?.getRowId(item, index);\n const normalizedRowId =\n rowId !== undefined ? String(rowId) : undefined;\n const isExpanded =\n normalizedRowId !== undefined &&\n expandable?.expandedRowId !== null &&\n expandable?.expandedRowId !== undefined &&\n String(expandable.expandedRowId) === normalizedRowId;\n const isVisibleExpandedRow =\n normalizedRowId !== undefined &&\n visibleExpandedRowId === normalizedRowId;\n const isClosingExpandedRow =\n normalizedRowId !== undefined &&\n closingExpandedRowId === normalizedRowId;\n const rowNumber = internalPagination.startItem + index;\n const rowContentIds = normalizedHeader.map(\n (_, columnIndex) =>\n `${tableId}-row-${rowNumber}-cell-${columnIndex + 1}`,\n );\n const expandedContentId = `${tableId}-row-${rowNumber}-details-content`;\n\n return (\n <React.Fragment\n key={`row-group-${normalizedRowId ?? `${index}-${JSON.stringify(item)}`}`}\n >\n <tr\n tabIndex={0}\n aria-label={`Linha ${rowNumber} de ${internalPagination.totalItems}`}\n aria-describedby={rowContentIds.join(\" \")}\n data-table-row-stripe={\n rowVariant === \"striped\" && index % 2 === 1 && !isExpanded\n ? \"true\"\n : undefined\n }\n className={[\n \"focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-focus-ring\",\n showRowDivider ? \"border-b border-border-default\" : \"\",\n enableRowHover ? \"hover:bg-primary-5\" : \"\",\n expandable?.rowClassName?.(item, Boolean(isExpanded)) ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {normalizedHeader.map((column, columnIndex) => (\n <td\n key={column.key}\n id={rowContentIds[columnIndex]}\n data-label={column.title}\n className={\n column.cellClassName ?? managedCellClassName\n }\n >\n {column.renderCell\n ? column.renderCell(item, index)\n : String(column.accessor?.(item) ?? \"-\")}\n </td>\n ))}\n </tr>\n {isVisibleExpandedRow && expandable && (\n <tr className={expandable?.expandedRowClassName}>\n <td\n colSpan={normalizedHeader.length}\n className={\n expandable?.expandedContentClassName ??\n expandedContentClassName\n }\n >\n <div\n role=\"region\"\n tabIndex={isExpanded && !isClosingExpandedRow ? 0 : -1}\n aria-label={`Detalhes da linha ${rowNumber}`}\n aria-describedby={expandedContentId}\n aria-hidden={\n !isExpanded || isClosingExpandedRow || undefined\n }\n className={`overflow-hidden transition-all duration-200 ease-out motion-reduce:transition-none ${\n isExpanded && !isClosingExpandedRow\n ? \"max-h-[1200px] opacity-100\"\n : \"max-h-0 opacity-0\"\n }`}\n >\n <div id={expandedContentId}>\n {expandable.renderExpandedRow(item, index)}\n </div>\n </div>\n </td>\n </tr>\n )}\n </React.Fragment>\n );\n })(),\n )}\n {internalPagination.pageData.length === 0 && (\n <tr>\n <td\n colSpan={normalizedHeader.length}\n className={emptyCellClassName}\n >\n {errorMessage ? (\n <span role=\"alert\">{errorMessage}</span>\n ) : (\n <span role=\"status\">{emptyMessage}</span>\n )}\n </td>\n </tr>\n )}\n </tbody>\n );\n }, [\n children,\n data,\n emptyMessage,\n errorMessage,\n emptyCellClassName,\n enableRowHover,\n expandable,\n expandedContentClassName,\n internalPagination,\n managedCellClassName,\n normalizedHeader,\n rowVariant,\n showRowDivider,\n tableId,\n visibleExpandedRowId,\n closingExpandedRowId,\n ]);\n\n const resolvedPagination = data\n ? internalPagination && {\n currentPage: internalPagination.currentPage,\n totalPages: internalPagination.totalPages,\n totalItems: internalPagination.totalItems,\n startItem: internalPagination.startItem,\n endItem: internalPagination.endItem,\n variant: paginationVariant,\n onPrevious: () => setCurrentPage((prev) => Math.max(prev - 1, 1)),\n onNext: () =>\n setCurrentPage((prev) =>\n Math.min(prev + 1, internalPagination.totalPages),\n ),\n }\n : pagination\n ? {\n ...pagination,\n variant: pagination.variant ?? \"default\",\n }\n : pagination;\n\n const resolvedShowPagination = data\n ? Boolean(\n internalPagination &&\n internalPagination.totalItems > safeItemsPerPage,\n )\n : showPagination;\n\n const handleInternalFilterChange = (\n columnKey: string,\n controlId: string,\n value: string,\n ) => {\n setFilterValues((prev) => ({\n ...prev,\n [`${columnKey}-${controlId}`]: value,\n }));\n };\n\n const resolvedHeader = data\n ? controlledHeader.map((item) => ({\n ...item,\n filters: item.filters?.controls?.length\n ? {\n controls: item.filters.controls,\n onControlChange: (control: IFilterControl, value: string) =>\n handleInternalFilterChange(\n item.key ?? item.title,\n control.id,\n value,\n ),\n }\n : undefined,\n }))\n : controlledHeader;\n\n return (\n <TableView<TData>\n header={resolvedHeader}\n accessibleName={accessibleName}\n caption={caption}\n onFilterChange={onFilterChange}\n className={className}\n showPagination={resolvedShowPagination}\n pagination={resolvedPagination ?? undefined}\n totalWidthUnits={totalWidthUnits}\n overflowMode={resolvedOverflowMode}\n adaptiveBreakpoint={resolvedAdaptiveBreakpoint}\n stickyHeader={stickyHeader}\n scrollAreaMaxHeight={scrollAreaMaxHeight}\n rowVariant={rowVariant}\n headerVariant={headerVariant}\n density={density}\n >\n {renderedChildren}\n </TableView>\n );\n}\n\nexport default Table;\n","\"use client\";\n\nimport {\n type CSSProperties,\n ReactNode,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport {\n MdArrowDownward,\n MdArrowUpward,\n MdFilterList,\n MdKeyboardArrowLeft,\n MdKeyboardArrowRight,\n MdOutlineFilterAlt,\n} from \"react-icons/md\";\nimport Filter, { IFilterControl } from \"./components/filter/Filter\";\nimport NotFound from \"./components/notFound\";\nimport {\n IHeaderItem,\n ITablePaginationProps,\n type TableDensity,\n type TableHeaderVariant,\n type TableOverflowMode,\n type TableRowVariant,\n} from \"./Table\";\n\ninterface IProps<TData = unknown> extends React.HTMLAttributes<HTMLDivElement> {\n header: IHeaderItem<TData>[];\n accessibleName?: string;\n caption?: ReactNode;\n onFilterChange?: (value: string) => void;\n children?: ReactNode;\n showPagination?: boolean;\n pagination?: ITablePaginationProps;\n totalWidthUnits?: number;\n overflowMode?: TableOverflowMode;\n adaptiveBreakpoint?: number;\n stickyHeader?: boolean;\n scrollAreaMaxHeight?: CSSProperties[\"maxHeight\"];\n rowVariant?: TableRowVariant;\n headerVariant?: TableHeaderVariant;\n density?: TableDensity;\n}\n\nconst HEADER_VARIANT_CLASSES: Record<TableHeaderVariant, string> = {\n default: \"bg-surface-card text-content-muted\",\n brand: \"bg-action-primary text-action-primary-content\",\n dark: \"bg-surface-action-neutral text-content-inverse\",\n neutral: \"bg-surface-muted text-content-primary\",\n};\n\nconst HEADER_DENSITY_CLASSES: Record<\n TableDensity,\n { row: string; cell: string }\n> = {\n comfortable: { row: \"h-10\", cell: \"px-2\" },\n compact: { row: \"h-8\", cell: \"px-2 py-1\" },\n};\n\nfunction TableView<TData>({\n children,\n header,\n accessibleName,\n caption,\n className,\n onFilterChange,\n showPagination,\n pagination,\n totalWidthUnits,\n overflowMode = \"scroll\",\n adaptiveBreakpoint = 440,\n stickyHeader = false,\n scrollAreaMaxHeight,\n rowVariant = \"plain\",\n headerVariant = \"default\",\n density = \"comfortable\",\n}: IProps<TData>) {\n const tableId = useId();\n const [openFilter, setOpenFilter] = useState<number | null>(null);\n const [filterMaxHeight, setFilterMaxHeight] = useState<number>();\n const [filterCoords, setFilterCoords] = useState<{\n top: number;\n left?: number;\n } | null>(null);\n const [tableWidth, setTableWidth] = useState<number>();\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const tableWrapperRef = useRef<HTMLDivElement>(null);\n const headerCellRefs = useRef<Array<HTMLTableCellElement | null>>([]);\n const filterTriggerRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const filterRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const wrapper = tableWrapperRef.current;\n if (!wrapper) return;\n\n const updateWidth = () => setTableWidth(wrapper.clientWidth);\n if (typeof ResizeObserver === \"undefined\") {\n updateWidth();\n window.addEventListener(\"resize\", updateWidth);\n return () => window.removeEventListener(\"resize\", updateWidth);\n }\n\n const observer = new ResizeObserver(updateWidth);\n observer.observe(wrapper);\n updateWidth();\n\n return () => observer.disconnect();\n }, []);\n\n useEffect(() => {\n if (openFilter === null) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n setOpenFilter(null);\n setFilterCoords(null);\n window.requestAnimationFrame(() => {\n filterTriggerRefs.current[openFilter]?.focus();\n });\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [openFilter]);\n\n useEffect(() => {\n const updateFilterMaxHeight = () => {\n const nextHeight = scrollContainerRef.current?.clientHeight;\n if (!nextHeight) return;\n setFilterMaxHeight(Math.max(nextHeight - 24, 160));\n };\n\n updateFilterMaxHeight();\n window.addEventListener(\"resize\", updateFilterMaxHeight);\n\n return () => {\n window.removeEventListener(\"resize\", updateFilterMaxHeight);\n };\n }, []);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n tableWrapperRef.current &&\n !tableWrapperRef.current.contains(event.target as Node)\n ) {\n setOpenFilter(null);\n setFilterCoords(null);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n useEffect(() => {\n if (!filterRef.current || !filterCoords) return;\n\n filterRef.current.style.top = `${filterCoords.top}px`;\n filterRef.current.style.left =\n typeof filterCoords.left === \"number\" ? `${filterCoords.left}px` : \"\";\n }, [filterCoords]);\n\n useEffect(() => {\n if (openFilter === null) return;\n\n const frame = window.requestAnimationFrame(() => {\n filterRef.current\n ?.querySelector<HTMLElement>(\n \"input, button, [tabindex]:not([tabindex='-1'])\",\n )\n ?.focus();\n });\n\n return () => window.cancelAnimationFrame(frame);\n }, [openFilter]);\n\n const handleOpenFilter = (index: number) => {\n const next = openFilter === index ? null : index;\n setOpenFilter(next);\n\n if (next !== null) {\n const wrapperRect = tableWrapperRef.current?.getBoundingClientRect();\n const cellRect = headerCellRefs.current[next]?.getBoundingClientRect();\n\n if (wrapperRect && cellRect) {\n const top = cellRect.bottom - wrapperRect.top + 8;\n const dropdownWidth = Math.min(\n 320,\n Math.max(wrapperRect.width - 16, 0),\n );\n const desiredLeft = cellRect.left - wrapperRect.left;\n const minLeft = 8;\n const maxLeft = Math.max(\n minLeft,\n wrapperRect.width - dropdownWidth - 8,\n );\n const left = Math.min(Math.max(desiredLeft, minLeft), maxLeft);\n\n setFilterCoords({ top, left });\n }\n } else {\n setFilterCoords(null);\n }\n };\n\n const closeFilterAndRestoreFocus = () => {\n const activeFilter = openFilter;\n setOpenFilter(null);\n setFilterCoords(null);\n if (activeFilter !== null) {\n window.requestAnimationFrame(() => {\n filterTriggerRefs.current[activeFilter]?.focus();\n });\n }\n };\n\n const hasFilterEnabled = (item: IHeaderItem<TData>) =>\n Boolean(item.filters?.optionList?.length || item.filters?.controls?.length);\n\n const getHeaderIcon = (item: IHeaderItem<TData>) => {\n if (!hasFilterEnabled(item)) {\n return null;\n }\n\n const controls = item.filters?.controls ?? [];\n const hasActiveSearchOrOptionFilter = controls.some((control) => {\n if (control.type === \"search\") {\n return Boolean(control.value?.trim());\n }\n\n if (control.type === \"options\") {\n return Boolean(control.value && control.value !== \"__all__\");\n }\n\n return false;\n });\n\n if (hasActiveSearchOrOptionFilter) {\n return <MdFilterList className=\"h-3.5 w-3.5\" />;\n }\n\n const activeSort = controls.find(\n (control) =>\n control.type === \"sort\" &&\n control.value &&\n control.value !== \"__all__\" &&\n control.value !== \"default\",\n );\n\n if (activeSort?.value === \"asc\") {\n return <MdArrowUpward className=\"h-3.5 w-3.5\" />;\n }\n\n if (activeSort?.value === \"desc\") {\n return <MdArrowDownward className=\"h-3.5 w-3.5\" />;\n }\n\n const legacyOptionActive =\n item.filters?.optionChecked &&\n item.filters.optionChecked !== \"__all__\" &&\n item.filters.optionChecked !== \"default\";\n\n if (legacyOptionActive) {\n return <MdFilterList className=\"h-3.5 w-3.5\" />;\n }\n\n return <MdOutlineFilterAlt className=\"h-3.5 w-3.5\" />;\n };\n\n const getSortDirection = (item: IHeaderItem<TData>) => {\n const sortControl = item.filters?.controls?.find(\n (control) => control.type === \"sort\",\n );\n\n if (!sortControl) return undefined;\n if (sortControl.value === \"asc\") return \"ascending\" as const;\n if (sortControl.value === \"desc\") return \"descending\" as const;\n return \"none\" as const;\n };\n\n const handleHeaderAction = (item: IHeaderItem<TData>, index: number) => {\n if (hasFilterEnabled(item)) {\n handleOpenFilter(index);\n return;\n }\n };\n\n const handleFilterChange = (\n item: IHeaderItem<TData>,\n value: string,\n control?: IFilterControl,\n ) => {\n if (control?.type !== \"search\") {\n setOpenFilter(null);\n }\n\n if (control) {\n item.filters?.onControlChange?.(control, value);\n } else {\n item.filters?.onChange?.(value);\n }\n\n if (onFilterChange) {\n onFilterChange(value);\n }\n };\n\n const resolvedTotalWidthUnits =\n totalWidthUnits ??\n (header.reduce((sum, item) => sum + (item.widthUnits ?? 0), 0) ||\n undefined);\n\n const getColumnWidth = (widthUnits?: number) => {\n if (!resolvedTotalWidthUnits || !widthUnits) {\n return undefined;\n }\n\n return `${(widthUnits / resolvedTotalWidthUnits) * 100}%`;\n };\n\n const isNarrowContainer = tableWidth !== undefined && tableWidth < 640;\n const paginationVariant = isNarrowContainer\n ? \"arrows\"\n : (pagination?.variant ?? \"default\");\n const isAdaptiveCompact =\n overflowMode === \"adaptive\" &&\n tableWidth !== undefined &&\n tableWidth < adaptiveBreakpoint;\n const overflowClass =\n overflowMode === \"scroll\" ? \"overflow-x-auto\" : \"overflow-x-hidden\";\n const resolvedScrollAreaMaxHeight = stickyHeader\n ? (scrollAreaMaxHeight ?? \"calc(100dvh - 240px)\")\n : scrollAreaMaxHeight;\n const headerFocusClass =\n headerVariant === \"brand\" || headerVariant === \"dark\"\n ? \"focus-visible:outline-current\"\n : \"focus-visible:outline-focus-ring\";\n\n return (\n <div\n ref={tableWrapperRef}\n className={`relative flex h-full min-h-0 min-w-0 flex-col ${\n isAdaptiveCompact ? \"table-adaptive-compact\" : \"\"\n }`}\n >\n <div\n ref={scrollContainerRef}\n data-sticky-header={stickyHeader}\n data-row-variant={rowVariant}\n data-header-variant={headerVariant}\n data-table-density={density}\n data-responsive-mode={overflowMode}\n style={{ maxHeight: resolvedScrollAreaMaxHeight }}\n className={`min-h-0 min-w-0 flex-1 overflow-y-auto ${overflowClass}`}\n >\n <table\n aria-label={\n caption\n ? undefined\n : (accessibleName ??\n `Tabela: ${header.map((item) => item.title).join(\", \")}`)\n }\n className={`w-full max-w-full ${\n resolvedTotalWidthUnits && !isAdaptiveCompact ? \"table-fixed\" : \"\"\n } ${className ?? \"\"}`}\n >\n {caption && <caption className=\"sr-only\">{caption}</caption>}\n {resolvedTotalWidthUnits && !isAdaptiveCompact && (\n <colgroup>\n {header.map((item, index) => (\n <col key={index} width={getColumnWidth(item.widthUnits)} />\n ))}\n </colgroup>\n )}\n <thead className=\"border-b border-border-default\">\n <tr className={HEADER_DENSITY_CLASSES[density].row}>\n {header.map((item, index) => {\n const canOpenFilter = hasFilterEnabled(item);\n const headerIcon = getHeaderIcon(item);\n\n return (\n <th\n scope=\"col\"\n aria-sort={getSortDirection(item)}\n key={index}\n ref={(element) => {\n headerCellRefs.current[index] = element;\n }}\n className={`${\n stickyHeader ? \"sticky top-0 z-[1]\" : \"relative\"\n } ${HEADER_VARIANT_CLASSES[headerVariant]} ${HEADER_DENSITY_CLASSES[density].cell} text-left text-md font-bold ${item.className ?? \"\"}`}\n data-has-filter={canOpenFilter}\n >\n {canOpenFilter ? (\n <button\n type=\"button\"\n aria-expanded={openFilter === index}\n aria-controls={\n openFilter === index\n ? `${tableId}-filter-${index}`\n : undefined\n }\n ref={(element) => {\n filterTriggerRefs.current[index] = element;\n }}\n aria-label={`Filtrar ou ordenar por ${item.title}`}\n className={`flex min-h-11 w-full items-center gap-1.5 rounded-sm text-left focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ${headerFocusClass} ${\n item.className?.includes(\"text-right\")\n ? \"justify-end\"\n : \"\"\n }`}\n onClick={() => handleHeaderAction(item, index)}\n >\n <span className=\"min-w-0 truncate\">{item.title}</span>\n {headerIcon && (\n <span className=\"flex-shrink-0\" aria-hidden=\"true\">\n {headerIcon}\n </span>\n )}\n </button>\n ) : (\n <span\n className={`flex items-center gap-1.5 ${\n item.className?.includes(\"text-right\")\n ? \"justify-end\"\n : \"\"\n }`}\n >\n <span className=\"min-w-0 truncate\">{item.title}</span>\n </span>\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n {children ? (\n children\n ) : (\n <tbody>\n <tr>\n <td colSpan={header.length}>\n <NotFound />\n </td>\n </tr>\n </tbody>\n )}\n </table>\n </div>\n {openFilter !== null && filterCoords && header[openFilter]?.filters && (\n <div ref={filterRef} className=\"absolute z-popover\">\n <Filter\n id={`${tableId}-filter-${openFilter}`}\n accessibleName={`Filtros da coluna ${header[openFilter].title}`}\n groupName={`${tableId}-${openFilter}`}\n optionChecked={header[openFilter].filters!.optionChecked}\n optionList={header[openFilter].filters!.optionList}\n controls={header[openFilter].filters!.controls}\n onChange={(value) => {\n handleFilterChange(header[openFilter], value);\n closeFilterAndRestoreFocus();\n }}\n onControlChange={(control, value) => {\n handleFilterChange(header[openFilter], value, control);\n if (control.type !== \"search\") closeFilterAndRestoreFocus();\n }}\n maxHeight={filterMaxHeight}\n />\n </div>\n )}\n {showPagination && pagination && (\n <div className=\"flex flex-col tablet:flex-row items-end tablet:items-center justify-between mt-6 gap-2 tablet:gap-4\">\n <p\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"text-sm text-content-primary\"\n >\n Visualizando de {pagination.startItem} até {pagination.endItem} de{\" \"}\n {pagination.totalItems} resultados\n </p>\n\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={pagination.onPrevious}\n disabled={pagination.currentPage === 1}\n aria-label=\"Ir para a página anterior\"\n className={`inline-flex min-h-11 min-w-11 items-center justify-center gap-1 rounded border border-border-default px-2 text-sm leading-none text-content-primary hover:border-border-strong disabled:cursor-not-allowed disabled:border-border-default disabled:opacity-50 ${\n paginationVariant === \"arrows\" ? \"min-w-6 tablet:min-w-7\" : \"\"\n }`}\n >\n <MdKeyboardArrowLeft className=\"h-3 w-3 text-content-muted\" />\n {paginationVariant !== \"arrows\" && \"Anterior\"}\n </button>\n\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"inline-flex h-6 min-w-6 items-center justify-center rounded border border-selection-border bg-selection-background px-1.5 text-sm font-bold leading-none text-selection-content tablet:h-7 tablet:min-w-7\"\n >\n {pagination.currentPage}\n </div>\n\n <button\n type=\"button\"\n onClick={pagination.onNext}\n disabled={pagination.currentPage === pagination.totalPages}\n aria-label=\"Ir para a próxima página\"\n className={`inline-flex min-h-11 min-w-11 items-center justify-center gap-1 rounded border border-border-default px-2 text-sm leading-none text-content-primary hover:border-border-strong disabled:cursor-not-allowed disabled:border-border-default disabled:opacity-50 ${\n paginationVariant === \"arrows\" ? \"min-w-6 tablet:min-w-7\" : \"\"\n }`}\n >\n {paginationVariant !== \"arrows\" && \"Próxima\"}\n <MdKeyboardArrowRight className=\"h-3 w-3 text-content-muted\" />\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport default TableView;\n","\"use client\";\n\nimport cs from \"classnames\";\nimport { ChangeEvent, useEffect, useRef } from \"react\";\nimport { IFilterControl } from \"./Filter\";\n\ninterface IFilterProps {\n id?: string;\n accessibleName?: string;\n groupName?: string;\n optionList?: { label: string; value: string }[];\n optionChecked?: string;\n onChange?: (value: string) => void;\n controls?: IFilterControl[];\n onControlChange?: (control: IFilterControl, value: string) => void;\n maxHeight?: number;\n}\n\nfunction FilterView({\n id,\n accessibleName,\n groupName,\n optionList,\n optionChecked,\n onChange,\n controls,\n onControlChange,\n maxHeight,\n}: IFilterProps) {\n const handleChangeCheckbox = (event: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(event.target.value);\n }\n };\n\n const handleControlChange = (\n control: IFilterControl,\n event: ChangeEvent<HTMLInputElement>,\n ) => {\n onControlChange?.(control, event.target.value);\n };\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!containerRef.current) return;\n containerRef.current.style.maxHeight = maxHeight ? `${maxHeight}px` : \"\";\n }, [maxHeight]);\n\n if (controls?.length) {\n return (\n <div\n ref={containerRef}\n id={id}\n role=\"dialog\"\n aria-label={accessibleName ?? \"Filtros da tabela\"}\n className=\"bg-surface-card rounded shadow-sm p-3 font-normal w-[calc(100vw-16px)] max-w-[320px] overflow-y-auto text-sm\"\n >\n <div className=\"flex flex-col gap-3\">\n {controls.map((control) => (\n <div\n key={control.id}\n className=\"flex flex-col gap-2 border-b border-border-default pb-3 last:border-b-0 last:pb-0\"\n >\n {control.label && (\n <span\n id={`${control.id}-label`}\n className=\"text-xs font-bold uppercase tracking-wide text-content-muted\"\n >\n {control.label}\n </span>\n )}\n\n {control.type === \"search\" ? (\n <input\n type=\"text\"\n aria-label={control.label ?? control.placeholder ?? \"Buscar\"}\n aria-describedby={control.label ? `${control.id}-label` : undefined}\n value={control.value ?? \"\"}\n placeholder={control.placeholder ?? \"Buscar\"}\n onChange={(event) => handleControlChange(control, event)}\n className=\"field-keyboard-focus-ring h-10 rounded border border-field-border-default bg-field-surface px-3 text-sm text-field-content outline-none placeholder:text-field-placeholder focus:border-field-border-active focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\"\n />\n ) : (\n <div className=\"flex flex-col gap-1\">\n {control.optionList?.map((option, index) => (\n <label\n key={`${control.id}-${index}`}\n className={cs(\n \"min-h-6 flex items-start gap-2 px-3 py-0.5 cursor-pointer rounded\",\n control.value === option.value\n ? \"bg-primary-5 text-primary-1\"\n : \"text-content-primary\",\n )}\n >\n <input\n type=\"radio\"\n className=\"peer sr-only\"\n value={option.value}\n checked={control.value === option.value}\n name={`table-filter-${groupName ?? \"default\"}-${control.id}`}\n onChange={(event) =>\n handleControlChange(control, event)\n }\n />\n <span\n aria-hidden=\"true\"\n className=\"radio-control-proxy mt-1 peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-focus-ring\"\n />\n <span className=\"min-w-0 flex-1 mt-[4px]\">\n {option.label}\n </span>\n </label>\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div\n ref={containerRef}\n id={id}\n role=\"dialog\"\n aria-label={accessibleName ?? \"Filtros da tabela\"}\n className=\"bg-surface-card rounded shadow-sm p-2 font-normal w-[calc(100vw-16px)] max-w-[320px] overflow-y-auto\"\n >\n {optionList &&\n optionList.map((option, index) => (\n <label\n key={index}\n className={cs(\n \"min-h-10 flex items-start gap-2 px-3 py-1 cursor-pointer rounded\",\n optionChecked === option.value\n ? \"bg-primary-5 text-primary-1\"\n : \"text-content-primary\",\n )}\n >\n <input\n type=\"radio\"\n className=\"peer sr-only\"\n value={option.value}\n checked={optionChecked === option.value}\n name={`table-filter-${groupName ?? \"default\"}`}\n onChange={handleChangeCheckbox}\n />\n <span\n aria-hidden=\"true\"\n className=\"radio-control-proxy mt-1 peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-focus-ring\"\n />\n <span className=\"min-w-0 flex-1\">\n {option.label}\n </span>\n </label>\n ))}\n </div>\n );\n}\n\nexport default FilterView;\n","import FilterView from \"./FilterView\";\n\nexport interface IFilterOption {\n label: string;\n value: string;\n}\n\nexport interface IFilterControl {\n id: string;\n label?: string;\n type: \"options\" | \"sort\" | \"search\";\n optionList?: IFilterOption[];\n value?: string;\n placeholder?: string;\n}\n\nexport interface IFilterProps {\n /** Stable id used to associate the popup with its trigger. */\n id?: string;\n /** Accessible name for the filter popup. */\n accessibleName?: string;\n /** Unique radio group prefix when multiple filters are rendered together. */\n groupName?: string;\n optionList?: IFilterOption[];\n optionChecked?: string;\n onChange?: (value: string) => void;\n controls?: IFilterControl[];\n onControlChange?: (control: IFilterControl, value: string) => void;\n maxHeight?: number;\n}\n\nfunction Filter(props: IFilterProps) {\n const {\n optionList,\n optionChecked,\n onChange,\n controls,\n onControlChange,\n maxHeight,\n } = props;\n\n return (\n <FilterView\n optionList={optionList}\n id={props.id}\n accessibleName={props.accessibleName}\n groupName={props.groupName}\n optionChecked={optionChecked}\n onChange={onChange}\n controls={controls}\n onControlChange={onControlChange}\n maxHeight={maxHeight}\n />\n );\n}\n\nexport default Filter;\n","function NotFoundView() {\n return (\n <div className=\"flex-1 flex flex-col items-center justify-center my-14 tablet:my-20\">\n {/* <Image\n alt='Mulher ilustrada debruçada sobre um campo de pesquisa'\n src='/images/vector-no-results-found.svg'\n priority\n width={347}\n height={253}\n /> */}\n <p className=\"mt-6 text-center text-base font-bold text-content-secondary\">\n Nenhum resultado encontrado.\n </p>\n </div>\n );\n}\n\nexport default NotFoundView;\n","\"use client\";\n\nimport { ReactNode, useEffect, useId, useMemo, useState } from \"react\";\nimport { MdKeyboardArrowLeft, MdKeyboardArrowRight } from \"react-icons/md\";\n\nexport interface IMobileCardTableHeader {\n label: string;\n className?: string;\n}\n\nexport interface IMobileCardTableExpandableConfig<TData> {\n getRowId: (item: TData, index: number) => string | number;\n expandedRowId: string | number | null;\n onToggleRow: (rowId: string | number, item: TData, index: number) => void;\n renderExpandedRow: (item: TData, index: number) => ReactNode;\n expandedContentClassName?: string;\n rowClassName?: (item: TData, isExpanded: boolean) => string | undefined;\n}\n\nexport interface MobileCardTableProps<TData> {\n headers: IMobileCardTableHeader[];\n accessibleName?: string;\n data: TData[] | null | undefined | false;\n renderCard: (item: TData, index: number) => ReactNode;\n keyExtractor: (item: TData, index: number) => string;\n itemsPerPage?: number;\n emptyMessage?: string;\n wrapperClassName?: string;\n headerClassName?: string;\n emptyClassName?: string;\n showPagination?: boolean;\n expandable?: IMobileCardTableExpandableConfig<TData>;\n}\n\nfunction MobileCardTable<TData>({\n headers,\n accessibleName,\n data,\n renderCard,\n keyExtractor,\n itemsPerPage = 10,\n emptyMessage = \"Nenhum item encontrado.\",\n wrapperClassName = \"\",\n headerClassName = \"\",\n emptyClassName = \"\",\n showPagination = true,\n expandable,\n}: MobileCardTableProps<TData>) {\n const listId = useId();\n const [currentPage, setCurrentPage] = useState(1);\n const [visibleExpandedRowId, setVisibleExpandedRowId] = useState<string | null>(\n () =>\n expandable?.expandedRowId !== null &&\n expandable?.expandedRowId !== undefined\n ? String(expandable.expandedRowId)\n : null,\n );\n const [closingExpandedRowId, setClosingExpandedRowId] = useState<string | null>(\n null,\n );\n\n const normalizedData = useMemo(\n () => (Array.isArray(data) ? data : []),\n [data],\n );\n const safeItemsPerPage = Number.isFinite(itemsPerPage)\n ? Math.max(1, Math.floor(itemsPerPage))\n : 10;\n\n const pagination = useMemo(() => {\n const totalItems = normalizedData.length;\n const totalPages = Math.max(1, Math.ceil(totalItems / safeItemsPerPage));\n const safeCurrentPage = Math.min(currentPage, totalPages);\n const startIndex = (safeCurrentPage - 1) * safeItemsPerPage;\n const endIndex = startIndex + safeItemsPerPage;\n\n return {\n currentPage: safeCurrentPage,\n totalPages,\n totalItems,\n startItem: totalItems === 0 ? 0 : startIndex + 1,\n endItem: Math.min(endIndex, totalItems),\n pageData: normalizedData.slice(startIndex, endIndex),\n };\n }, [currentPage, normalizedData, safeItemsPerPage]);\n\n useEffect(() => {\n setCurrentPage(1);\n }, [normalizedData]);\n\n useEffect(() => {\n if (!expandable) {\n setVisibleExpandedRowId(null);\n setClosingExpandedRowId(null);\n return;\n }\n\n const nextExpandedRowId =\n expandable.expandedRowId !== null &&\n expandable.expandedRowId !== undefined\n ? String(expandable.expandedRowId)\n : null;\n\n if (nextExpandedRowId) {\n setVisibleExpandedRowId(nextExpandedRowId);\n setClosingExpandedRowId(null);\n return;\n }\n\n if (!visibleExpandedRowId) {\n return;\n }\n\n setClosingExpandedRowId(visibleExpandedRowId);\n const timeoutId = window.setTimeout(() => {\n setVisibleExpandedRowId(null);\n setClosingExpandedRowId(null);\n }, 220);\n\n return () => window.clearTimeout(timeoutId);\n }, [expandable, visibleExpandedRowId]);\n\n return (\n <>\n <div\n role=\"region\"\n aria-label={\n accessibleName ??\n `Lista: ${headers.map((header) => header.label).join(\", \")}`\n }\n className={`overflow-hidden rounded-sm border border-border-default bg-surface-card ${wrapperClassName}`.trim()}\n >\n <div\n className={`border-b border-border-default bg-surface-card px-3 py-2 text-left text-xs font-bold tracking-wider text-content-secondary ${headerClassName}`.trim()}\n >\n {headers.map((header) => (\n <span key={header.label} className={header.className}>\n {header.label}\n </span>\n ))}\n </div>\n\n {pagination.totalItems > 0 ? (\n <div role=\"list\" aria-label=\"Itens da lista\">\n {pagination.pageData.map((item, index) => (\n (() => {\n const rowId = expandable?.getRowId(item, index);\n const normalizedRowId =\n rowId !== undefined ? String(rowId) : undefined;\n const isExpanded =\n normalizedRowId !== undefined &&\n expandable?.expandedRowId !== null &&\n expandable?.expandedRowId !== undefined &&\n String(expandable.expandedRowId) === normalizedRowId;\n const isVisibleExpandedRow =\n normalizedRowId !== undefined &&\n visibleExpandedRowId === normalizedRowId;\n const isClosingExpandedRow =\n normalizedRowId !== undefined &&\n closingExpandedRowId === normalizedRowId;\n const itemNumber = pagination.startItem + index;\n const cardContentId = `${listId}-item-${itemNumber}-content`;\n const expandedContentId = `${listId}-item-${itemNumber}-details-content`;\n\n return (\n <div\n key={keyExtractor(item, index)}\n role=\"listitem\"\n tabIndex={0}\n aria-label={`Item ${itemNumber} de ${pagination.totalItems}`}\n aria-describedby={cardContentId}\n className=\"focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-focus-ring\"\n >\n <div\n id={cardContentId}\n className={expandable?.rowClassName?.(item, Boolean(isExpanded))}\n >\n {renderCard(item, index)}\n </div>\n {expandable && isVisibleExpandedRow && (\n <div\n className={\n expandable.expandedContentClassName ??\n \"border-b border-border-default bg-surface-card px-3 py-4\"\n }\n >\n <div\n role=\"region\"\n tabIndex={isExpanded && !isClosingExpandedRow ? 0 : -1}\n aria-label={`Detalhes do item ${itemNumber}`}\n aria-describedby={expandedContentId}\n aria-hidden={\n !isExpanded || isClosingExpandedRow || undefined\n }\n className={`overflow-hidden transition-all duration-200 ease-out motion-reduce:transition-none ${\n isExpanded && !isClosingExpandedRow\n ? \"max-h-[1200px] opacity-100\"\n : \"max-h-0 opacity-0\"\n }`}\n >\n <div id={expandedContentId}>\n {expandable.renderExpandedRow(item, index)}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n })()\n ))}\n </div>\n ) : (\n <div\n role=\"status\"\n className={`px-3 py-4 text-center text-md text-content-secondary ${emptyClassName}`.trim()}\n >\n {emptyMessage}\n </div>\n )}\n </div>\n\n {showPagination && pagination.totalItems > safeItemsPerPage && (\n <div className=\"mt-4 flex flex-col items-center justify-center gap-3 text-center\">\n <p\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"text-sm text-content-primary\"\n >\n Visualizando de {pagination.startItem} até {pagination.endItem} de{\" \"}\n {pagination.totalItems} resultados\n </p>\n\n <div className=\"flex items-center justify-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setCurrentPage((prev) => Math.max(prev - 1, 1))}\n disabled={pagination.currentPage === 1}\n aria-label=\"Ir para a página anterior\"\n className=\"inline-flex h-7 items-center justify-center gap-1 rounded border border-border-default px-3 text-sm leading-none text-content-primary hover:border-border-strong disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <MdKeyboardArrowLeft className=\"h-3 w-3 text-content-muted\" />\n Anterior\n </button>\n\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"inline-flex h-7 min-w-7 items-center justify-center rounded border border-selection-border bg-selection-background px-2 text-sm font-bold leading-none text-selection-content\"\n >\n {pagination.currentPage}\n </div>\n\n <button\n type=\"button\"\n onClick={() =>\n setCurrentPage((prev) =>\n Math.min(prev + 1, pagination.totalPages),\n )\n }\n disabled={pagination.currentPage === pagination.totalPages}\n aria-label=\"Ir para a próxima página\"\n className=\"inline-flex h-7 items-center justify-center gap-1 rounded border border-border-default px-3 text-sm leading-none text-content-primary hover:border-border-strong disabled:cursor-not-allowed disabled:opacity-50\"\n >\n Próximo\n <MdKeyboardArrowRight className=\"h-3 w-3 text-content-muted\" />\n </button>\n </div>\n </div>\n )}\n </>\n );\n}\n\nexport default MobileCardTable;\n","\"use client\";\n\nimport { useEffect, useMemo, useState, type RefObject } from \"react\";\n\nexport type ContainerBreakpointMap = Record<string, number>;\nexport type ContainerBreakpoint = string | undefined;\n\nexport interface UseContainerBreakpointOptions {\n breakpoints?: ContainerBreakpointMap;\n}\n\nexport const defaultContainerBreakpoints: ContainerBreakpointMap = {\n mobile: 0,\n tablet: 640,\n desktop: 1024,\n wide: 1440,\n};\n\nexport function resolveContainerBreakpoint(\n width: number,\n breakpoints: ContainerBreakpointMap = defaultContainerBreakpoints,\n): ContainerBreakpoint {\n const entries = Object.entries(breakpoints).sort(([, first], [, second]) =>\n first === second ? 0 : first - second,\n );\n\n return entries.reduce<string | undefined>(\n (result, [name, threshold]) =>\n width >= threshold ? name : result,\n undefined,\n );\n}\n\nfunction getBreakpointMapKey(breakpoints: ContainerBreakpointMap) {\n return Object.entries(breakpoints)\n .sort(([first], [second]) => first.localeCompare(second))\n .map(([name, threshold]) => `${name}:${threshold}`)\n .join(\"|\");\n}\n\nexport function useContainerBreakpoint<TElement extends HTMLElement = HTMLElement>(\n ref: RefObject<TElement | null>,\n options: UseContainerBreakpointOptions = {},\n): ContainerBreakpoint {\n const thresholds = options.breakpoints ?? defaultContainerBreakpoints;\n const thresholdsKey = getBreakpointMapKey(thresholds);\n const sortedThresholds = useMemo(\n () =>\n Object.entries(thresholds).sort(([, first], [, second]) =>\n first === second ? 0 : first - second,\n ),\n [thresholdsKey],\n );\n const [current, setCurrent] = useState<ContainerBreakpoint>();\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n const resolve = (width: number) =>\n sortedThresholds.reduce<string | undefined>(\n (result, [name, threshold]) =>\n width >= threshold ? name : result,\n undefined,\n );\n const update = () =>\n setCurrent(resolve(element.getBoundingClientRect().width));\n\n if (typeof ResizeObserver === \"undefined\") {\n update();\n return undefined;\n }\n const observer = new ResizeObserver(update);\n observer.observe(element);\n update();\n return () => observer.disconnect();\n }, [ref, sortedThresholds]);\n\n return current;\n}\n"],"mappings":"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","names":["_a","jsx","jsxs","_a","cva","jsx","cva","jsx","jsxs","classNames","jsx","classNames","jsx","classNames","jsx","jsxs","classNames","classNames","jsx","jsxs","classNames","jsx","jsx","jsx","classNames","classNames","Fragment","jsx","jsxs","classNames","jsx","jsx","jsxs","jsx","jsxs","cs","jsx","jsx","jsxs","cs","jsx","jsxs","useEffect","useRef","jsx","jsxs","useCallback","useState","useEffect","jsx","jsxs","useState","useCallback","useEffect","classNames","jsx","classNames","classNames","jsx","classNames","classNames","Fragment","jsx","jsxs","jsx","jsxs","classNames","jsx","jsxs","COLUMN_STYLES","classNames","classNames","jsx","jsxs","classNames","classNames","jsx","TONE_STYLES","classNames","jsx","classNames","jsx","useEffect","useEffect","React","useEffect","useId","useMemo","useState","useEffect","useId","useRef","useState","cs","useEffect","useRef","jsx","jsxs","jsx","jsx","jsx","jsxs","useId","useState","useRef","useEffect","_a","_b","jsx","jsxs","useId","useState","useMemo","_a","_b","useEffect","React","_c","useEffect","useId","useMemo","useState","MdKeyboardArrowLeft","MdKeyboardArrowRight","Fragment","jsx","jsxs","useEffect","useMemo","useState"]}
1
+ {"version":3,"sources":["../src/components/loadingDots/LoadingDotsView.tsx","../src/components/button/Button.tsx","../src/components/typography/typography.tsx","../src/components/divider/Divider.tsx","../src/components/surface/Surface.tsx","../src/components/modalCard/ModalCardView.tsx","../src/components/notice/NoticeView.tsx","../src/components/pageState/PageState.tsx","../src/components/avatar/Avatar.tsx","../src/components/avatar/AvatarIcon.tsx","../src/components/avatar/AvatarImage.tsx","../src/types/themed-image.ts","../src/components/themed-image/ThemedImage.tsx","../src/components/icon-provider/PortalIconProvider.tsx","../src/components/circularLoading/CircularLoading.tsx","../src/components/text-group/TextGroup.tsx","../src/components/pagination/PaginationView.tsx","../src/components/pagination/components/PageButtons.tsx","../src/components/checkbox/checkbox.tsx","../src/components/slider/Slider.tsx","../src/components/inputSlider/InputSliderView.tsx","../src/components/form-layout/FormActions.tsx","../src/components/form-layout/FormGrid.tsx","../src/components/page-heading/PageHeading.tsx","../src/components/page-tabs/PageTabsHeader.tsx","../src/components/info-grid/InfoGrid.tsx","../src/utils/optional-value.ts","../src/components/filter-bar/FilterBar.tsx","../src/utils/resolve-status-appearance.ts","../src/components/status-badge/StatusBadge.tsx","../src/components/status-badge/DomainStatusBadge.tsx","../src/components/skipLink/SkipLink.tsx","../src/components/focus-navigation/FocusNavigationMode.tsx","../src/components/form-error-navigation/FormErrorNavigation.tsx","../src/components/table/Table.tsx","../src/components/table/TableView.tsx","../src/components/table/components/filter/FilterView.tsx","../src/components/table/components/filter/Filter.tsx","../src/components/table/components/notFound/NotFoundView.tsx","../src/components/table/MobileCardTable.tsx","../src/hooks/useContainerBreakpoint.ts"],"sourcesContent":["import React from \"react\";\nimport { cva, VariantProps } from \"class-variance-authority\";\n\nconst colorVariant = cva(`w-[14px] h-[14px] rounded-full`, {\n variants: {\n color: {\n white: \"bg-content-inverse\",\n primary: \"bg-content-link\",\n secondary: \"bg-content-brand-secondary\",\n tertiary: \"bg-content-primary\",\n danger: \"bg-feedback-danger-content\",\n warning: \"bg-feedback-warning-content\",\n success: \"bg-feedback-success-content\",\n actionPrimary: \"bg-action-primary-content\",\n actionWarning: \"bg-action-warning-content\",\n },\n defaultVariants: {\n color: \"white\",\n },\n },\n});\n\nexport type LoadingDotsProps = VariantProps<typeof colorVariant> & {\n color?:\n | \"white\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"danger\"\n | \"warning\"\n | \"success\"\n | \"actionPrimary\"\n | \"actionWarning\";\n fullContainer?: boolean;\n announce?: boolean;\n ariaLabel?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst LoadingDots: React.FC<LoadingDotsProps> = ({\n color = \"white\",\n fullContainer = false,\n announce = true,\n ariaLabel,\n className,\n \"aria-label\": ariaLabelAttribute,\n ...rest\n}) => {\n const accessibleLabel = ariaLabel ?? ariaLabelAttribute ?? \"Carregando\";\n\n return (\n <div\n {...rest}\n className={`flex items-center justify-center gap-[10px]${fullContainer ? \" w-full h-full min-h-[400px]\" : \"\"}${className ? ` ${className}` : \"\"}`}\n role={announce ? \"status\" : undefined}\n aria-live={announce ? \"polite\" : undefined}\n aria-atomic={announce || undefined}\n aria-hidden={!announce || undefined}\n >\n {announce && <span className=\"sr-only\">{accessibleLabel}</span>}\n <span\n className={`animate-[1s_pulse_0s_ease-in-out_infinite] ${colorVariant({\n color,\n })}`}\n ></span>\n <span\n className={`animate-[1s_pulse_0.3s_ease-in-out_infinite] ${colorVariant(\n { color },\n )}`}\n ></span>\n <span\n className={`animate-[1s_pulse_0.6s_ease-in-out_infinite] ${colorVariant(\n { color },\n )}`}\n ></span>\n </div>\n );\n};\n\nexport default LoadingDots;\n\n","import React from \"react\";\nimport type { IconBaseProps } from \"react-icons\";\nimport LoadingDots from \"../loadingDots\";\n\nexport type ButtonProps = {\n children?: React.ReactNode;\n disabled?: boolean;\n variant?: \"flat\" | \"outline\" | \"plain\";\n color?: \"primary\" | \"secondary\" | \"tertiary\" | \"danger\" | \"warning\";\n size?: \"small\" | \"medium\" | \"large\";\n width?: \"auto\" | \"full\";\n loading?: boolean;\n loadingLabel?: string;\n leadIcon?: React.ComponentType<IconBaseProps>;\n endIcon?: React.ComponentType<IconBaseProps>;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nfunction getTextContent(node: React.ReactNode): string {\n if (typeof node === \"string\" || typeof node === \"number\") {\n return String(node);\n }\n\n if (Array.isArray(node)) {\n return node.map(getTextContent).filter(Boolean).join(\" \");\n }\n\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) {\n return getTextContent(node.props.children);\n }\n\n return \"\";\n}\n\nconst VARIANT_STYLES = {\n flat: {\n disabled: `cursor-not-allowed border-disabled bg-surface-disabled text-content-disabled`,\n default: {\n primary: `bg-action-primary text-action-primary-content hover:bg-action-primary-hover active:bg-action-primary-active`,\n secondary: `bg-action-secondary text-action-secondary-content hover:bg-action-secondary-hover active:bg-action-secondary-active`,\n tertiary: `bg-action-tertiary text-action-tertiary-content opacity-100 hover:bg-action-tertiary-hover active:bg-action-tertiary-active`,\n danger: `bg-action-danger text-action-danger-content hover:bg-action-danger-hover active:bg-action-danger-active`,\n warning: `bg-action-warning text-action-warning-content hover:bg-action-warning-hover active:bg-action-warning-active`,\n },\n },\n outline: {\n disabled: `cursor-not-allowed border-disabled bg-surface-disabled text-content-disabled`,\n default: {\n primary: `border-content-link text-content-link hover:border-action-primary-hover hover:text-content-link active:bg-selection-background active:border-action-primary-active active:text-content-on-brand`,\n secondary: `border-content-brand-secondary text-content-brand-secondary hover:border-action-secondary-hover hover:text-content-brand-secondary active:bg-action-secondary active:border-action-secondary-active active:text-action-secondary-content`,\n tertiary: `border-border-strong text-content-primary hover:text-content-secondary active:bg-surface-muted active:text-content-muted`,\n danger: `border-feedback-danger-border text-feedback-danger-content hover:border-action-danger-hover hover:text-feedback-danger-content active:bg-feedback-danger-soft active:border-action-danger-active active:text-feedback-danger-content`,\n warning: `border-feedback-warning-border text-feedback-warning-content hover:text-feedback-warning-content active:bg-feedback-warning-soft active:border-feedback-warning-content active:text-feedback-warning-content`,\n },\n },\n plain: {\n disabled: `cursor-not-allowed border-none text-content-disabled`,\n default: {\n primary: `border-transparent text-content-link hover:bg-action-primary-ghost hover:text-content-link active:border-content-link`,\n secondary: `border-transparent text-content-brand-secondary hover:bg-action-secondary-ghost hover:text-content-brand-secondary active:border-content-brand-secondary`,\n tertiary: `border-transparent text-content-primary hover:bg-surface-muted hover:text-content-muted active:border-border-default`,\n danger: `border-transparent text-feedback-danger-content hover:bg-feedback-danger-soft hover:text-feedback-danger-content active:border-feedback-danger-content`,\n warning: `border-transparent text-feedback-warning-content hover:bg-feedback-warning-soft hover:text-feedback-warning-content active:border-feedback-warning-content`,\n },\n },\n};\n\nfunction getVariant(\n color: ButtonProps[\"color\"],\n variant: ButtonProps[\"variant\"],\n disabled: ButtonProps[\"disabled\"],\n) {\n const variantStyles =\n VARIANT_STYLES[variant === undefined ? \"flat\" : variant];\n return disabled\n ? variantStyles.disabled\n : variantStyles.default[color === undefined ? \"primary\" : color];\n}\n\nfunction getSize(size: ButtonProps[\"size\"]) {\n switch (size) {\n case \"small\":\n return `h-control-sm`;\n case \"medium\":\n return `h-control-md`;\n case \"large\":\n return `h-control-lg`;\n }\n}\n\nconst WIDTH_STYLES: Record<NonNullable<ButtonProps[\"width\"]>, string> = {\n auto: \"w-auto\",\n full: \"w-full\",\n};\n\nconst Button: React.FC<ButtonProps> = ({\n variant = \"flat\",\n children,\n className,\n disabled = false,\n size = \"medium\",\n width = \"auto\",\n color = \"primary\",\n leadIcon: LeadIcon,\n endIcon: EndIcon,\n loading = false,\n loadingLabel,\n ...rest\n}) => {\n const actionName =\n rest[\"aria-label\"] ?? getTextContent(children).replace(/\\s+/g, \" \").trim();\n const loadingAnnouncement =\n loadingLabel ??\n (actionName ? `Carregando: ${actionName}` : \"Carregando ação solicitada\");\n\n return (\n <>\n <button\n className={`\n flex items-center justify-center rounded-sm px-xs border-[1px] gap-4xs leading-none\n focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\n ${getVariant(color, variant, disabled)}\n ${className}\n ${getSize(size)}\n ${WIDTH_STYLES[width]}\n `}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...rest}\n >\n {LeadIcon && !loading && (\n <LeadIcon aria-hidden=\"true\" focusable=\"false\" className=\"h-3 w-3\" />\n )}\n {loading && (\n <span aria-hidden=\"true\">\n <LoadingDots\n color={\n variant !== \"flat\"\n ? color\n : color === \"primary\"\n ? \"actionPrimary\"\n : color === \"warning\"\n ? \"actionWarning\"\n : \"white\"\n }\n announce={false}\n />\n </span>\n )}\n {loading && <span className=\"sr-only\">{actionName || \"Ação\"}</span>}\n {!loading && children}\n {EndIcon && !loading && (\n <EndIcon aria-hidden=\"true\" focusable=\"false\" className=\"h-3 w-3\" />\n )}\n </button>\n <span\n className=\"sr-only\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {loading ? loadingAnnouncement : \"\"}\n </span>\n </>\n );\n};\n\nexport default Button;\n\n","import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nconst textVariants = cva(\"font-nunito\", {\n variants: {\n variant: {\n primary: \"text-content-primary\",\n secondary: \"text-content-secondary\",\n tertiary: \"text-content-muted\",\n disabled: \"text-content-disabled\",\n link: \"text-content-link\",\n },\n size: {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-md\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n title1: \"text-titlexl\",\n title2: \"text-titlelg\",\n title3: \"text-titlemd\",\n },\n weight: {\n thin: \"font-thin\",\n extralight: \"font-extralight\",\n light: \"font-light\",\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n extrabold: \"font-extrabold\",\n black: \"font-black\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n weight: \"normal\",\n },\n});\n\nexport type TypographySemanticRole =\n | \"page-title\"\n | \"section-title\"\n | \"body\"\n | \"label\"\n | \"caption\"\n | \"helper\";\n\nconst semanticRoleDefaults: Record<\n TypographySemanticRole,\n {\n size: NonNullable<VariantProps<typeof textVariants>[\"size\"]>;\n weight: NonNullable<VariantProps<typeof textVariants>[\"weight\"]>;\n variant: NonNullable<VariantProps<typeof textVariants>[\"variant\"]>;\n }\n> = {\n \"page-title\": { size: \"2xl\", weight: \"extrabold\", variant: \"primary\" },\n \"section-title\": { size: \"xl\", weight: \"extrabold\", variant: \"primary\" },\n body: { size: \"md\", weight: \"normal\", variant: \"primary\" },\n label: { size: \"md\", weight: \"normal\", variant: \"primary\" },\n caption: { size: \"sm\", weight: \"normal\", variant: \"secondary\" },\n helper: { size: \"sm\", weight: \"normal\", variant: \"tertiary\" },\n};\n\ntype TextElement =\n | \"p\"\n | \"span\"\n | \"div\"\n | \"label\"\n | \"strong\"\n | \"em\"\n | \"small\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\";\n\nexport type TypographyProps = VariantProps<typeof textVariants> & {\n children: React.ReactNode;\n element?: TextElement;\n semanticRole?: TypographySemanticRole;\n className?: string;\n} & React.HTMLAttributes<HTMLElement>;\n\nexport function Typography({\n children,\n element = \"p\",\n semanticRole,\n className,\n variant,\n size,\n weight,\n ...rest\n}: TypographyProps) {\n const Component = element;\n const semanticDefaults = semanticRole\n ? semanticRoleDefaults[semanticRole]\n : undefined;\n\n return (\n <Component\n className={textVariants({\n variant: variant ?? semanticDefaults?.variant,\n size: size ?? semanticDefaults?.size,\n weight: weight ?? semanticDefaults?.weight,\n className,\n })}\n {...rest}\n >\n {children}\n </Component>\n );\n}\n\nexport default Typography;\n\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nconst colorClassMap = {\n light: \"bg-border-subtle\",\n dark: \"bg-border-strong\",\n black: \"bg-content-primary\",\n};\n\nexport type DividerProps = {\n width?: string;\n height?: string;\n bgColor?: \"light\" | \"dark\" | \"black\";\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst Divider: React.FC<DividerProps> = ({\n width,\n height = \"h-[1px]\",\n children,\n bgColor = \"black\",\n ...rest\n}) => {\n const colorClass = colorClassMap[bgColor];\n const barClass = classNames(children ? \"w-1/3\" : \"w-1/2\", height, colorClass);\n\n return (\n <div className={classNames(width, \"flex items-center justify-center\")}>\n <div className={barClass}></div>\n {children && <div className=\"px-3\">{children} </div>}\n <div className={barClass}></div>\n </div>\n );\n};\n\nexport default Divider;\n\n","import classNames from \"classnames\";\nimport React from \"react\";\n\nexport type SurfaceProps = React.HTMLAttributes<HTMLDivElement> & {\n elevation?: \"none\" | \"sm\" | \"md\";\n padding?: \"none\" | \"compact\" | \"default\";\n radius?: \"none\" | \"sm\" | \"md\";\n tone?:\n | \"card\"\n | \"subtle\"\n | \"muted\"\n | \"disabled\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"transparent\";\n};\n\nconst ELEVATION_STYLES: Record<\n NonNullable<SurfaceProps[\"elevation\"]>,\n string\n> = {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n};\n\nconst PADDING_STYLES: Record<NonNullable<SurfaceProps[\"padding\"]>, string> = {\n none: \"p-0\",\n compact: \"p-2\",\n default: \"p-3 desktop:p-5\",\n};\n\nconst RADIUS_STYLES: Record<NonNullable<SurfaceProps[\"radius\"]>, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n};\n\nconst TONE_STYLES: Record<NonNullable<SurfaceProps[\"tone\"]>, string> = {\n card: \"bg-surface-card\",\n subtle: \"bg-surface-subtle\",\n muted: \"bg-surface-muted\",\n disabled: \"bg-surface-disabled\",\n info: \"bg-feedback-info-soft text-feedback-info-content\",\n success: \"bg-feedback-success-soft text-feedback-success-content\",\n warning: \"bg-feedback-warning-soft text-feedback-warning-content\",\n danger: \"bg-feedback-danger-soft text-feedback-danger-content\",\n transparent: \"bg-transparent\",\n};\n\nexport default function Surface({\n children,\n className,\n elevation = \"sm\",\n padding = \"default\",\n radius = \"md\",\n tone = \"card\",\n ...rest\n}: SurfaceProps) {\n return (\n <div\n className={classNames(\n \"w-full\",\n ELEVATION_STYLES[elevation],\n PADDING_STYLES[padding],\n RADIUS_STYLES[radius],\n TONE_STYLES[tone],\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\n","import React, { ReactNode } from \"react\";\nimport Surface from \"../surface\";\n\nexport type ModalCardProps = {\n children?: ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction ModalCardView(props: ModalCardProps) {\n const { children, className, ...rest } = props;\n return (\n <Surface\n className={`gap-2 ${className ?? \"\"}`}\n {...rest}\n >\n {children}\n </Surface>\n );\n}\n\nexport default ModalCardView;\n\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { IconBaseProps } from \"react-icons\";\nimport { MdClose, MdHelpOutline } from \"react-icons/md\";\n\nexport type BoxProps = {\n rounded?: boolean;\n type?:\n | \"info\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"gray\"\n | \"success\"\n | \"warning\"\n | \"danger\";\n children: React.ReactNode;\n textColor?: \"default\" | \"color\";\n onDismiss?: () => void;\n onTriggerHelp?: () => void;\n icon?: React.ComponentType<IconBaseProps>;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst boxClassMap = {\n info: \"bg-feedback-info-soft\",\n primary: \"border border-selection-border bg-selection-background\",\n secondary: \"bg-action-secondary\",\n tertiary: \"bg-action-tertiary\",\n gray: \"bg-surface-muted\",\n success: \"bg-feedback-success-soft\",\n warning: \"bg-feedback-warning-soft\",\n danger: \"bg-feedback-danger-soft\",\n};\n\nconst colorTextClassMap = {\n info: \"text-feedback-info-content\",\n primary: \"text-selection-content\",\n secondary: \"text-action-secondary-content\",\n tertiary: \"text-action-tertiary-content\",\n gray: \"text-content-link\",\n success: \"text-feedback-success-content\",\n warning: \"text-feedback-warning-content\",\n danger: \"text-feedback-danger-content\",\n};\n\nconst defaultTextClassMap = {\n info: \"text-content-primary\",\n primary: \"text-selection-content\",\n secondary: \"text-action-secondary-content\",\n tertiary: \"text-action-tertiary-content\",\n gray: \"text-content-primary\",\n success: \"text-content-primary\",\n warning: \"text-content-primary\",\n danger: \"text-content-primary\",\n};\n\nconst NoticeView: React.FC<BoxProps> = ({\n rounded = false,\n type = \"info\",\n children,\n className,\n onDismiss,\n onTriggerHelp,\n icon: Icon,\n textColor = \"default\",\n ...rest\n}) => {\n const classes = classNames(boxClassMap[type], {\n \"rounded-md\": rounded,\n });\n\n return (\n <div className={classes} {...rest}>\n <div className={`flex p-3 gap-3 ${className}`}>\n {Icon && (\n <div className=\"flex gap-2\">\n <Icon\n aria-hidden=\"true\"\n focusable=\"false\"\n className={`h-5 w-5 ${colorTextClassMap[type]}`}\n />\n </div>\n )}\n\n <div\n className={\n textColor === \"color\"\n ? colorTextClassMap[type]\n : defaultTextClassMap[type]\n }\n >\n {children}\n </div>\n\n <div className=\"flex gap-2 ml-auto\">\n {onTriggerHelp && (\n <button\n type=\"button\"\n aria-label=\"Obter ajuda sobre este aviso\"\n className={`inline-flex h-6 w-6 items-center justify-center rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-current ${colorTextClassMap[type]}`}\n onClick={onTriggerHelp}\n >\n <MdHelpOutline\n aria-hidden=\"true\"\n focusable=\"false\"\n className=\"h-5 w-5\"\n />\n </button>\n )}\n {onDismiss && (\n <button\n type=\"button\"\n aria-label=\"Fechar aviso\"\n className={`inline-flex h-6 w-6 items-center justify-center rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-current ${colorTextClassMap[type]}`}\n onClick={onDismiss}\n >\n <MdClose\n aria-hidden=\"true\"\n focusable=\"false\"\n className=\"h-5 w-5\"\n />\n </button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default NoticeView;\n\n","\"use client\";\n\nimport Button from \"../button/Button\";\nimport classNames from \"classnames\";\nimport { ReactNode, useEffect, useId, useRef } from \"react\";\nimport {\n MdErrorOutline,\n MdInfoOutline,\n MdRefresh,\n MdSearchOff,\n} from \"react-icons/md\";\n\ntype PageStateVariant = \"error\" | \"empty\" | \"unavailable\" | \"not-found\";\n\nexport type PageStateProps = {\n variant: PageStateVariant;\n title: string;\n description?: ReactNode;\n illustration?: ReactNode;\n actions?: ReactNode;\n onRetry?: () => void;\n retryLabel?: string;\n compact?: boolean;\n focusOnMount?: boolean;\n headingLevel?: 1 | 2;\n className?: string;\n titleClassName?: string;\n children?: ReactNode;\n};\n\nconst icons = {\n error: MdErrorOutline,\n empty: MdSearchOff,\n unavailable: MdInfoOutline,\n \"not-found\": MdSearchOff,\n};\n\nexport default function PageState({\n variant,\n title,\n description,\n illustration,\n actions,\n onRetry,\n retryLabel = \"Tentar novamente\",\n compact = false,\n focusOnMount = false,\n headingLevel = 1,\n className,\n titleClassName,\n children,\n}: PageStateProps) {\n const titleId = useId();\n const stateRef = useRef<HTMLElement>(null);\n const Icon = icons[variant];\n const TitleTag = headingLevel === 2 ? \"h2\" : \"h1\";\n\n useEffect(() => {\n if (focusOnMount) {\n stateRef.current?.focus();\n }\n }, [focusOnMount]);\n\n return (\n <section\n ref={stateRef}\n role={variant === \"error\" ? \"alert\" : \"status\"}\n aria-labelledby={titleId}\n tabIndex={focusOnMount ? -1 : undefined}\n className={classNames(\n \"grid w-full items-center gap-6 rounded-md bg-surface-card\",\n compact\n ? \"min-h-40 p-4\"\n : \"p-4 mobile:p-6 tablet:p-10 desktop:grid-cols-[minmax(0,1fr)_minmax(240px,420px)]\",\n className,\n )}\n >\n <div className=\"min-w-0 space-y-5\">\n <div className=\"space-y-2\">\n <div className=\"flex items-start gap-2\">\n {!illustration && (\n <Icon\n aria-hidden=\"true\"\n className=\"mt-0.5 h-5 w-5 shrink-0 text-content-link\"\n />\n )}\n <TitleTag\n id={titleId}\n className={classNames(\n \"font-extrabold text-content-primary\",\n compact ? \"text-lg\" : \"text-xl tablet:text-2xl\",\n titleClassName,\n )}\n >\n {title}\n </TitleTag>\n </div>\n {description && (\n <div className=\"text-md text-content-primary\">{description}</div>\n )}\n </div>\n\n {children}\n\n {(onRetry || actions) && (\n <div className=\"flex w-full flex-col gap-2 mobile:flex-row mobile:flex-wrap\">\n {onRetry && (\n <Button\n type=\"button\"\n variant=\"outline\"\n leadIcon={MdRefresh}\n onClick={onRetry}\n className=\"w-full mobile:w-auto\"\n >\n {retryLabel}\n </Button>\n )}\n {actions}\n </div>\n )}\n </div>\n\n {illustration && (\n <div\n aria-hidden=\"true\"\n className=\"flex min-w-0 justify-center desktop:justify-end\"\n >\n {illustration}\n </div>\n )}\n </section>\n );\n}\n\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport AvatarIcon from \"./AvatarIcon\";\nimport AvatarImage from \"./AvatarImage\";\n\nexport type AvatarProps = {\n name?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n image?: string;\n description?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst avatarSizeMap = {\n xs: \"w-5 h-5 text-2xs\",\n sm: \"w-6 h-6 text-sm\",\n md: \"w-8 h-8 text-xl\",\n lg: \"w-9 h-9 text-2xl\",\n};\n\nfunction Inicials(name: string) {\n const nome = name;\n if (!!nome) {\n const array = nome.split(\" \");\n const primeiraLetra = nome.charAt(0);\n const posicaoUltimoEspaco = nome.lastIndexOf(\" \");\n const primeiraLetraUltimoNome = nome.substring(\n posicaoUltimoEspaco + 1,\n posicaoUltimoEspaco + 2,\n );\n\n if (array.length > 1) {\n return `${(primeiraLetra + primeiraLetraUltimoNome).toUpperCase()}`;\n } else {\n return `${primeiraLetra.toUpperCase()}`;\n }\n }\n}\n\nconst Avatar: React.FC<AvatarProps> = ({\n name = \"\",\n size = \"xs\",\n className,\n image,\n description = \"\",\n ...rest\n}) => {\n // const Avatar = ({\n // name = \"\",\n // size = \"xs\",\n // className,\n // image,\n // description = \"\",\n // ...rest\n // }: AvatarProps) => {\n const avatarSizeClass = avatarSizeMap[size];\n\n const avatarComponent = image ? (\n <AvatarImage src={image} altDescription={description} />\n ) : !!name ? (\n <span\n className={classNames(\n `flex items-center justify-center`,\n avatarSizeClass,\n )}\n >\n {Inicials(name)}\n </span>\n ) : (\n <AvatarIcon />\n );\n\n return (\n <div\n className={classNames(\n `relative rounded-full bg-surface-muted flex items-center justify-center text-content-muted`,\n avatarSizeClass,\n className,\n )}\n {...rest}\n >\n {avatarComponent}\n </div>\n );\n};\n\nexport default Avatar;\n\n","import React from \"react\";\nimport { MdOutlinePersonOutline } from \"react-icons/md\";\nexport type AvatarIconProps = {\n name?: string;\n};\n\nconst AvatarIcon = () => {\n return <MdOutlinePersonOutline className=\"absolute w-1/2 h-1/2\" />;\n};\n\nexport default AvatarIcon;\n\n","import React from \"react\";\n\nexport type AvatarImageProps = {\n src: string;\n altDescription: string | \"\";\n};\n\nconst AvatarImage = ({ src, altDescription }: AvatarImageProps) => {\n return (\n <img\n src={src}\n alt={altDescription}\n className=\"rounded-full object-cover\"\n />\n );\n};\n\nexport default AvatarImage;\n\n","export type ThemedImageSource =\n | string\n | {\n light: string;\n dark?: string;\n };\n\nexport function normalizeThemedImageSource(source: ThemedImageSource) {\n if (typeof source === \"string\") {\n return { light: source, dark: undefined };\n }\n\n return source;\n}\n","import {\n normalizeThemedImageSource,\n type ThemedImageSource,\n} from \"../../types/themed-image\";\nimport classNames from \"classnames\";\nimport type { ImgHTMLAttributes } from \"react\";\n\nexport type ThemedImageProps = Omit<ImgHTMLAttributes<HTMLImageElement>, \"src\"> & {\n source: ThemedImageSource;\n basePath?: string;\n svgClassName?: string;\n};\n\nconst DEFAULT_LOGOS_BASE_PATH = \"/logos\";\n\nfunction resolvePath(\n source: string,\n basePath: string = DEFAULT_LOGOS_BASE_PATH,\n) {\n if (!basePath || source.startsWith(\"/\") || source.includes(\":\")) {\n return source;\n }\n\n return `${basePath.replace(/\\/?$/, \"/\")}${source.replace(/^\\/+/, \"\")}`;\n}\n\nfunction isSvgSource(source: string) {\n return source.split(/[?#]/, 1)[0].toLowerCase().endsWith(\".svg\");\n}\n\nexport default function ThemedImage({\n source,\n basePath,\n svgClassName,\n className,\n alt,\n ...props\n}: ThemedImageProps) {\n const sources = normalizeThemedImageSource(source);\n const lightSource = resolvePath(sources.light, basePath);\n const darkSource = sources.dark\n ? resolvePath(sources.dark, basePath)\n : undefined;\n\n return (\n <>\n <img\n {...props}\n src={lightSource}\n alt={alt}\n data-color-scheme-logo=\"light\"\n className={classNames(\n className,\n isSvgSource(lightSource) && svgClassName,\n \"themed-image-light\",\n {\n \"themed-image-has-dark\": Boolean(darkSource),\n },\n )}\n />\n {darkSource && (\n <img\n {...props}\n src={darkSource}\n alt={alt}\n data-color-scheme-logo=\"dark\"\n className={classNames(\n className,\n isSvgSource(darkSource) && svgClassName,\n \"themed-image-dark\",\n )}\n />\n )}\n </>\n );\n}\n\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { IconContext } from \"react-icons\";\n\nconst PORTAL_ICON_CONTEXT = {\n className: \"shrink-0\",\n};\n\nexport type IconProviderProps = {\n children: ReactNode;\n};\n\n/** Keeps every react-icons glyph at its declared size inside flex layouts. */\nexport function IconProvider({ children }: IconProviderProps) {\n return (\n <IconContext.Provider value={PORTAL_ICON_CONTEXT}>\n {children}\n </IconContext.Provider>\n );\n}\n\nexport { IconProvider as PortalIconProvider };\n\n","\"use client\";\n\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\nimport React from \"react\";\n\nexport type CircularLoadingProps = {\n size?: number;\n thickness?: number;\n trackColor?: string;\n indicatorColor?: string;\n withTrack?: boolean;\n color?:\n | \"white\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"danger\"\n | \"warning\"\n | \"success\";\n message?: string;\n className?: string;\n ariaLabel?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst colorMap = {\n white: \"rgb(var(--white))\",\n primary: \"rgb(var(--loading-circular-indicator))\",\n secondary: \"rgb(var(--secondary-1))\",\n tertiary: \"rgb(var(--tertiary-1))\",\n danger: \"rgb(var(--feedback-danger-strong))\",\n warning: \"rgb(var(--feedback-warning-strong))\",\n success: \"rgb(var(--feedback-success-strong))\",\n} as const;\n\nexport default function CircularLoading({\n size = 48,\n thickness = 6,\n trackColor = \"rgb(var(--loading-circular-track))\",\n indicatorColor,\n withTrack = true,\n color = \"primary\",\n message,\n className,\n ariaLabel = \"Carregando\",\n ...rest\n}: CircularLoadingProps) {\n const breakpoint = useBreakpoint();\n const finalSize = breakpoint === \"mobile\" ? Math.min(size, 100) : size;\n const finalThickness =\n breakpoint === \"mobile\" ? Math.min(thickness, 16) : thickness;\n const radius = (finalSize - finalThickness) / 2;\n const circumference = 2 * Math.PI * radius;\n const center = finalSize / 2;\n const finalIndicatorColor = indicatorColor ?? colorMap[color];\n\n return (\n <div\n role=\"status\"\n aria-label={ariaLabel}\n className={`inline-flex flex-col items-center justify-center gap-4 leading-none ${className ?? \"\"}`.trim()}\n {...rest}\n >\n <svg\n className=\"shrink-0\"\n width={finalSize}\n height={finalSize}\n viewBox={`0 0 ${finalSize} ${finalSize}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {withTrack && (\n <circle\n className=\"circular-loading-track\"\n cx={finalSize / 2}\n cy={finalSize / 2}\n r={radius}\n stroke={trackColor}\n strokeWidth={finalThickness}\n fill=\"none\"\n />\n )}\n <circle\n className=\"circular-loading-indicator\"\n cx={finalSize / 2}\n cy={finalSize / 2}\n r={radius}\n stroke={finalIndicatorColor}\n strokeWidth={finalThickness}\n strokeLinecap=\"round\"\n fill=\"none\"\n strokeDasharray={circumference}\n strokeDashoffset={circumference * 0.75}\n >\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from={`0 ${center} ${center}`}\n to={`360 ${center} ${center}`}\n dur=\"1.4s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n </svg>\n {message && (\n <p className=\"text-center text-sm font-medium text-content-secondary\">\n {message}\n </p>\n )}\n </div>\n );\n}\n\n\n","import Typography from \"../typography/typography\";\nimport type { HTMLAttributes } from \"react\";\n\nexport type TextGroupProps = {\n title: string;\n text: string;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport default function TextGroup({\n title,\n text = \"-\",\n className,\n ...rest\n}: TextGroupProps) {\n return (\n <div className={className} {...rest}>\n <Typography size=\"sm\" className=\"text-content-primary\">\n {title}\n </Typography>\n <Typography size=\"md\" className=\"break-words font-semibold text-content-primary\">\n {text || \"-\"}\n </Typography>\n </div>\n );\n}\n\n\n","import { MdChevronLeft, MdChevronRight } from 'react-icons/md';\nimport cs from 'classnames';\nimport PageButtons from './components/PageButtons';\n\nexport interface PaginationProps {\n currentPage: number;\n totalResults: number;\n perPage: number;\n onClick: (page: number) => void;\n}\n\nfunction PaginationView(props: PaginationProps) {\n const { currentPage, totalResults, perPage, onClick } = props;\n\n return (\n <nav\n aria-label=\"Paginação\"\n className=\"flex flex-wrap justify-between mt-auto mb-5\"\n >\n <span className=\"text-sm text-content-primary\">\n Visualizando de {(currentPage * perPage) - (perPage - 1)}{' '}\n até {totalResults > (currentPage * perPage) ? currentPage * perPage : totalResults}{' '}\n de {totalResults} resultados\n </span>\n <div className=\"flex items-stretch gap-1.5\">\n {currentPage > 1 && (\n <button\n type=\"button\"\n className={cs('h-7 w-24 rounded-sm border border-border-default',\n 'flex items-center justify-center gap-1 text-content-primary text-sm',\n 'cursor-pointer focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring')}\n onClick={() => onClick(currentPage - 1)}>\n <MdChevronLeft size={10} aria-hidden=\"true\" focusable=\"false\" />\n Anterior\n </button>\n )}\n <PageButtons\n currentPage={currentPage}\n totalResults={totalResults}\n perPage={perPage}\n onClick={onClick}\n />\n {currentPage < Math.ceil((totalResults / 10)) && (\n <button\n type=\"button\"\n className={cs('h-7 w-24 rounded-sm border border-border-default',\n 'flex items-center justify-center gap-1 text-content-primary text-sm',\n 'cursor-pointer focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring')}\n onClick={() => onClick(currentPage + 1)}>\n Próxima\n <MdChevronRight size={10} aria-hidden=\"true\" focusable=\"false\" />\n </button>\n )}\n </div>\n </nav>\n );\n};\n\nexport default PaginationView;\n\n","import cs from 'classnames';\nimport { ReactNode } from 'react';\n\ninterface IProps {\n currentPage: number;\n totalResults: number;\n perPage: number;\n onClick: (page: number) => void;\n}\n\nfunction PageButtons(props: IProps) {\n const { currentPage, totalResults, perPage, onClick } = props;\n const pages = totalResults > 10 ? Math.ceil(totalResults / perPage) : 1;\n let pagesAfter = (pages - currentPage) > 2 ? 2 : (pages - currentPage);\n let pagesBefore = currentPage > 2 ? 2 : currentPage === 2 ? 1 : 0;\n let buttonsBefore: ReactNode[] = [];\n let buttonsAfter: ReactNode[] = [];\n\n for (let i = 1; i <= pagesBefore; i++) {\n const page = currentPage - i;\n buttonsBefore = [\n <button\n key={`page-${page}`}\n type='button'\n aria-label={`Página ${page}`}\n className={cs('flex h-7 w-8 items-center justify-center rounded border border-border-default',\n 'cursor-pointer bg-surface-card text-sm text-content-primary hover:bg-surface-muted',\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring')}\n onClick={() => onClick(page)}>\n {page}\n </button>,\n ...buttonsBefore\n ];\n }\n\n for (let i = 1; i <= pagesAfter; i++) {\n const page = currentPage + i;\n buttonsAfter.push(\n <button\n key={`page-${page}`}\n type='button'\n aria-label={`Página ${page}`}\n className={cs('flex h-7 w-8 items-center justify-center rounded border border-border-default',\n 'cursor-pointer bg-surface-card text-sm text-content-primary hover:bg-surface-muted',\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring')}\n onClick={() => onClick(page)}>\n {page}\n </button>\n );\n }\n\n return [\n ...buttonsBefore,\n <button\n key={`page-${currentPage}`}\n type='button'\n aria-label={`Página ${currentPage}, atual`}\n aria-current='page'\n disabled\n className={cs('flex h-7 w-8 items-center justify-center rounded border border-selection-border',\n 'cursor-default bg-selection-background text-sm text-selection-content')}>\n {currentPage}\n </button>,\n ...buttonsAfter\n ];\n}\n\nexport default PageButtons;\n\n","import type React from \"react\";\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n options: {\n label: string;\n value: string;\n }[];\n value: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n layout?: \"row\" | \"col\" | \"grid-2\";\n}\n\nexport function Checkbox({\n options,\n value,\n onChange,\n layout = \"row\",\n ...props\n}: CheckboxProps) {\n let containerClass = \"\";\n if (layout === \"col\") {\n containerClass = \"flex flex-col gap-y-3 mt-3\";\n } else if (layout === \"grid-2\") {\n containerClass = \"grid grid-cols-2 gap-y-2 mt-3\";\n } else {\n containerClass = \"flex flex-row mt-3\";\n }\n\n return (\n <div className={containerClass}>\n {options.map((option) => (\n <label\n key={option.value}\n className=\"mr-6 flex min-h-7 cursor-pointer items-center gap-2\"\n >\n <input\n type=\"checkbox\"\n className=\"checkbox-control\"\n value={option.value}\n checked={value === option.value}\n onChange={onChange}\n {...props}\n />\n <span className=\"text-content-secondary\">{option.label}</span>\n </label>\n ))}\n </div>\n );\n}\n\n/** @deprecated Use Checkbox. */\nexport const CheckBox = Checkbox;\n/** @deprecated Use CheckboxProps. */\nexport type CheckBoxProps = CheckboxProps;","\"use client\";\n\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport interface SliderProps {\n min: number;\n max: number;\n step: number;\n initialValue?: number;\n value?: number;\n onChange?: (value: number) => void;\n onDragOver?: (value: number) => void;\n disabled?: boolean;\n marks?: number[];\n ariaLabel: string;\n getAriaValueText: (value: number) => string;\n}\n\nconst Slider: React.FC<SliderProps> = ({\n min,\n max,\n step,\n initialValue = min,\n value,\n onChange,\n onDragOver,\n disabled = false,\n marks,\n ariaLabel,\n getAriaValueText,\n}) => {\n const [internalValue, setInternalValue] = useState(initialValue);\n const sliderRef = useRef<HTMLDivElement>(null);\n const thumbRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const progressRef = useRef<HTMLDivElement>(null);\n const tickRefs = useRef<Array<HTMLDivElement | null>>([]);\n const markRefs = useRef<Array<HTMLSpanElement | null>>([]);\n const isDraggingRef = useRef(false);\n const [tooltipOffset, setTooltipOffset] = useState(0);\n\n const currentValue = value !== undefined ? value : internalValue;\n\n useEffect(() => {\n if (value === undefined) {\n setInternalValue(initialValue);\n }\n }, [initialValue, value]);\n\n const roundToStep = (val: number) => {\n const precision = Math.max(0, Math.ceil(-Math.log10(step)));\n return parseFloat((Math.round(val / step) * step).toFixed(precision));\n };\n\n const updateValueFromPosition = (clientX: number) => {\n if (!sliderRef.current) return undefined;\n const sliderRect = sliderRef.current.getBoundingClientRect();\n const newLeft = Math.min(\n Math.max(clientX - sliderRect.left, 0),\n sliderRect.width,\n );\n const rawValue = min + ((max - min) * newLeft) / sliderRect.width;\n return roundToStep(rawValue);\n };\n\n // ---- Mouse ----\n const handleMouseMove = (event: MouseEvent) => {\n if (disabled || !isDraggingRef.current) return;\n const roundedValue = updateValueFromPosition(event.clientX);\n if (roundedValue === undefined) return;\n\n if (value === undefined) setInternalValue(roundedValue);\n if (onChange) onChange(roundedValue);\n };\n\n const handleMouseUp = (event: MouseEvent) => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n\n if (isDraggingRef.current) {\n const finalValue = updateValueFromPosition(event.clientX);\n if (finalValue !== undefined) {\n if (value === undefined) setInternalValue(finalValue);\n if (onChange) onChange(finalValue);\n if (onDragOver) onDragOver(finalValue);\n } else {\n if (onDragOver) onDragOver(currentValue);\n }\n }\n\n isDraggingRef.current = false;\n };\n\n const handleMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled || !sliderRef.current) return;\n isDraggingRef.current = true;\n\n const roundedValue = updateValueFromPosition(event.clientX);\n if (roundedValue !== undefined) {\n if (value === undefined) setInternalValue(roundedValue);\n if (onChange) onChange(roundedValue);\n }\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n };\n\n // ---- Touch ----\n const handleTouchMove = (event: TouchEvent) => {\n if (disabled || !isDraggingRef.current) return;\n const touch = event.touches[0];\n const roundedValue = updateValueFromPosition(touch.clientX);\n if (roundedValue === undefined) return;\n\n if (value === undefined) setInternalValue(roundedValue);\n if (onChange) onChange(roundedValue);\n };\n\n const handleTouchEnd = (event: TouchEvent) => {\n document.removeEventListener(\"touchmove\", handleTouchMove);\n document.removeEventListener(\"touchend\", handleTouchEnd);\n\n if (isDraggingRef.current) {\n const touch = event.changedTouches[0];\n const finalValue = updateValueFromPosition(touch.clientX);\n\n if (finalValue !== undefined) {\n if (value === undefined) setInternalValue(finalValue);\n if (onChange) onChange(finalValue);\n if (onDragOver) onDragOver(finalValue);\n } else {\n if (onDragOver) onDragOver(currentValue);\n }\n }\n\n isDraggingRef.current = false;\n };\n\n const handleTouchStart = (event: React.TouchEvent<HTMLDivElement>) => {\n if (disabled || !sliderRef.current) return;\n isDraggingRef.current = true;\n\n const touch = event.touches[0];\n const roundedValue = updateValueFromPosition(touch.clientX);\n if (roundedValue !== undefined) {\n if (value === undefined) setInternalValue(roundedValue);\n if (onChange) onChange(roundedValue);\n }\n\n document.addEventListener(\"touchmove\", handleTouchMove);\n document.addEventListener(\"touchend\", handleTouchEnd);\n };\n\n // ---- Atualiza posição do thumb e barra ----\n const updateThumbPosition = useCallback(() => {\n if (thumbRef.current && sliderRef.current && progressRef.current) {\n const sliderRect = sliderRef.current.getBoundingClientRect();\n if (max <= min || sliderRect.width <= 0) {\n thumbRef.current.style.left = \"0px\";\n progressRef.current.style.width = \"0px\";\n setTooltipOffset(0);\n return;\n }\n const clampedValue = Math.max(min, Math.min(max, currentValue));\n const left = ((clampedValue - min) / (max - min)) * sliderRect.width;\n const tooltipWidth =\n tooltipRef.current?.getBoundingClientRect().width ?? 48;\n const tooltipHalfWidth = tooltipWidth / 2;\n const thumbHalfWidth = thumbRef.current.getBoundingClientRect().width / 2;\n const clampedTooltipCenter = Math.min(\n Math.max(left, tooltipHalfWidth - thumbHalfWidth),\n sliderRect.width - (tooltipHalfWidth - thumbHalfWidth),\n );\n\n thumbRef.current.style.left = `${left}px`;\n progressRef.current.style.width = `${left}px`;\n setTooltipOffset(clampedTooltipCenter - left);\n }\n }, [currentValue, max, min]);\n\n useEffect(() => {\n updateThumbPosition();\n\n if (typeof ResizeObserver === \"undefined\") {\n window.addEventListener(\"resize\", updateThumbPosition);\n return () => window.removeEventListener(\"resize\", updateThumbPosition);\n }\n\n const resizeObserver = new ResizeObserver(updateThumbPosition);\n if (sliderRef.current) resizeObserver.observe(sliderRef.current);\n return () => resizeObserver.disconnect();\n }, [currentValue, max, min, updateThumbPosition]);\n\n const effectiveMarks = useMemo(\n () => (marks && marks.length > 0 ? marks : [min, max]),\n [marks, max, min],\n );\n\n const ticks = useMemo(() => {\n if (max <= min || step <= 0) return [min];\n\n const maxTicks = 50;\n const interval = (max - min) / Math.min(maxTicks, (max - min) / step);\n const calculatedTicks: number[] = [];\n\n for (let tick = min; tick <= max; tick += interval) {\n calculatedTicks.push(tick);\n }\n\n return calculatedTicks;\n }, [max, min, step]);\n\n useEffect(() => {\n ticks.forEach((tick, idx) => {\n const element = tickRefs.current[idx];\n if (!element) return;\n\n const percent = ((tick - min) / (max - min)) * 100;\n const isMain = effectiveMarks.includes(Math.round(tick * 100) / 100);\n element.style.left = `${percent}%`;\n element.style.height = `${isMain ? 10 : 6}px`;\n });\n\n effectiveMarks.forEach((mark, idx) => {\n const element = markRefs.current[idx];\n if (!element) return;\n\n const percent = ((mark - min) / (max - min)) * 100;\n element.style.left = `${percent}%`;\n });\n }, [effectiveMarks, max, min, ticks]);\n\n return (\n <div className=\"block relative w-full h-12\">\n <div\n className={`relative w-full ${\n disabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n } mt-10`}\n ref={sliderRef}\n onMouseDown={handleMouseDown}\n onTouchStart={handleTouchStart}\n tabIndex={disabled ? -1 : 0} // foco do teclado\n onKeyDown={(event) => {\n if (disabled) return;\n\n const setValue = (val: number) => {\n const clamped = Math.max(min, Math.min(max, roundToStep(val)));\n if (value === undefined) setInternalValue(clamped);\n if (onChange) onChange(clamped);\n if (onDragOver) onDragOver(clamped);\n };\n\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowDown\":\n setValue(currentValue - step);\n event.preventDefault();\n break;\n case \"ArrowRight\":\n case \"ArrowUp\":\n setValue(currentValue + step);\n event.preventDefault();\n break;\n case \"Home\":\n setValue(min);\n event.preventDefault();\n break;\n case \"End\":\n setValue(max);\n event.preventDefault();\n break;\n default:\n break;\n }\n }}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={currentValue}\n aria-valuetext={getAriaValueText(currentValue)}\n aria-label={ariaLabel}\n aria-disabled={disabled}\n >\n {/* trilha */}\n <div className=\"absolute left-0 top-1/2 h-[4px] w-full -translate-y-1/2 transform rounded bg-border-default\" />\n\n {/* progresso */}\n <div\n className={`absolute top-1/2 left-0 h-[4px] rounded ${\n disabled ? \"bg-surface-disabled\" : \"bg-action-primary\"\n } transform -translate-y-1/2`}\n ref={progressRef}\n />\n\n {/* thumb */}\n <div\n className=\"absolute top-1/2 w-4 h-4 bg-surface-card border border-border-default rounded-full transform -translate-x-1/2 -translate-y-1/2 select-none\"\n ref={thumbRef}\n >\n {!disabled && (\n <div\n ref={tooltipRef}\n className=\"absolute left-1/2 bottom-full transform -translate-x-1/2 mb-1 font-semibold rounded px-1 py-[2px] text-center text-content-inverse bg-surface-tooltip text-sm \"\n style={{ marginLeft: `${tooltipOffset}px` }}\n >\n {currentValue}\n </div>\n )}\n </div>\n </div>\n\n {/* risquinhos */}\n {ticks.map((tick, idx) => {\n return (\n <div\n key={idx}\n ref={(element) => {\n tickRefs.current[idx] = element;\n }}\n className=\"absolute top-2 w-px -translate-x-1/2 bg-border-strong\"\n />\n );\n })}\n\n {/* números principais */}\n {effectiveMarks.map((mark, idx) => {\n return (\n <span\n key={idx}\n ref={(element) => {\n markRefs.current[idx] = element;\n }}\n className=\"absolute top-5 -translate-x-1/2 text-xs text-content-primary\"\n >\n {mark}\n </span>\n );\n })}\n </div>\n );\n};\n\nexport default Slider;\n\n\n","\"use client\";\n\nimport React, { useCallback, useState, useEffect } from \"react\";\n\nexport interface InputSliderProps {\n name: string;\n start: number;\n end: number;\n initialValue: number;\n functionChange: React.Dispatch<React.SetStateAction<number>>;\n step?: number | null;\n prefix?: string;\n sufix?: string;\n marks?: boolean | ReadonlyArray<{ value: number; label?: React.ReactNode }>;\n valueLabelDisplay?: \"off\" | \"on\" | \"auto\";\n showLabel?: boolean;\n disabled?: boolean;\n inputDisabled?: boolean;\n valueFormmated?: string;\n showInput?: boolean;\n ariaLabel?: string;\n}\n\nconst InputSlider: React.FC<InputSliderProps> = ({\n name,\n start,\n step = 1,\n end,\n functionChange,\n initialValue,\n prefix,\n sufix,\n marks,\n valueLabelDisplay = \"auto\",\n showLabel = false,\n disabled = false,\n inputDisabled = false,\n valueFormmated,\n showInput = false,\n ariaLabel,\n ...rest\n}) => {\n const [value, setValue] = useState(initialValue);\n const controlLabel = ariaLabel || name;\n const valueInputId = `${name}-value`;\n\n const handleSliderChange = useCallback(\n (newValue: number | string) => {\n const parsedValue = Number(newValue);\n setValue(parsedValue);\n },\n [functionChange]\n );\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.value === \"\") {\n setValue(start);\n return;\n }\n\n const nextValue = Number(event.target.value);\n if (Number.isFinite(nextValue)) setValue(nextValue);\n },\n [start],\n );\n\n const handleBlur = useCallback(() => {\n if (value < start) {\n setValue(start);\n } else if (value > end) {\n setValue(end);\n }\n }, [end, start, value]);\n\n useEffect(() => {\n functionChange(value);\n }, [functionChange, value]);\n\n return (\n <div className=\"w-full flex flex-row gap-2\">\n <input\n className=\"w-full range pr-6 accent-primary-1\"\n type=\"range\"\n name={name}\n id={name}\n min={start}\n max={end}\n step={step ?? 1}\n disabled={disabled}\n value={value}\n aria-label={controlLabel}\n onChange={(e) => handleSliderChange(e.target.value)}\n />\n {showInput && (\n <input\n id={valueInputId}\n className=\"min-w-0\"\n value={inputDisabled ? \"-\" : value}\n onChange={handleInputChange}\n onBlur={handleBlur}\n type=\"number\"\n step={step ?? 1}\n min={start}\n max={end}\n aria-label={`${controlLabel} valor`}\n disabled={disabled || inputDisabled}\n />\n )}\n </div>\n );\n};\n\nexport default InputSlider;\n\n","import classNames from \"classnames\";\nimport type { HTMLAttributes } from \"react\";\n\nexport interface FormActionsProps extends HTMLAttributes<HTMLDivElement> {\n align?: \"start\" | \"center\" | \"end\" | \"between\";\n fullWidthOnMobile?: boolean;\n}\n\nconst ALIGN_STYLES = {\n start: \"tablet:justify-start\",\n center: \"tablet:justify-center\",\n end: \"tablet:justify-end\",\n between: \"tablet:justify-between\",\n} as const;\n\nexport function FormActions({\n align = \"end\",\n fullWidthOnMobile = true,\n className,\n ...rest\n}: FormActionsProps) {\n return (\n <div\n className={classNames(\n \"flex w-full flex-col gap-3 tablet:flex-row tablet:items-end\",\n ALIGN_STYLES[align],\n fullWidthOnMobile && \"[&>*]:w-full tablet:[&>*]:w-auto\",\n className,\n )}\n {...rest}\n />\n );\n}\n","import classNames from \"classnames\";\nimport type { HTMLAttributes } from \"react\";\n\nconst COLUMN_STYLES = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 tablet:grid-cols-2\",\n 3: \"grid-cols-1 tablet:grid-cols-3\",\n 4: \"grid-cols-1 tablet:grid-cols-4\",\n 5: \"grid-cols-1 tablet:grid-cols-5\",\n 6: \"grid-cols-1 tablet:grid-cols-6\",\n 7: \"grid-cols-1 tablet:grid-cols-7\",\n 8: \"grid-cols-1 tablet:grid-cols-8\",\n 10: \"grid-cols-1 tablet:grid-cols-10\",\n 12: \"grid-cols-1 tablet:grid-cols-12\",\n} as const;\n\nexport interface FormGridProps extends HTMLAttributes<HTMLDivElement> {\n columns?: keyof typeof COLUMN_STYLES;\n}\n\nexport function FormGrid({ columns = 2, className, ...rest }: FormGridProps) {\n return (\n <div\n className={classNames(\n \"field-alignment-grid grid w-full gap-x-4 gap-y-5\",\n COLUMN_STYLES[columns],\n className,\n )}\n {...rest}\n />\n );\n}\n","\"use client\";\n\nimport Typography from \"../typography/typography\";\nimport classNames from \"classnames\";\nimport type { ReactNode } from \"react\";\nimport { MdArrowBack } from \"react-icons/md\";\n\nexport type PageHeadingBackAction = {\n label: string;\n href?: string;\n onClick?: () => void;\n};\n\nexport type PageHeadingProps = {\n title: ReactNode;\n subtitle?: ReactNode;\n back?: PageHeadingBackAction;\n actions?: ReactNode;\n className?: string;\n contentClassName?: string;\n spacing?: \"default\" | \"none\";\n};\n\nfunction BackContent({ label }: Pick<PageHeadingBackAction, \"label\">) {\n return (\n <>\n <MdArrowBack aria-hidden=\"true\" className=\"h-5 w-5 shrink-0\" />\n <span>{label}</span>\n </>\n );\n}\n\nfunction getBackHref(href?: string) {\n if (!href) return undefined;\n // React 18 only warns about javascript: links. Match browser URL parsing\n // without requiring window/document, including ignored tabs and newlines.\n const protocol = href\n .replace(/^[\\u0000-\\u0020]+/, \"\")\n .replace(/[\\t\\r\\n]/g, \"\");\n return /^javascript:/i.test(protocol) ? undefined : href;\n}\n\nexport default function PageHeading({\n title,\n subtitle,\n back,\n actions,\n className,\n contentClassName,\n spacing = \"default\",\n}: PageHeadingProps) {\n const backHref = getBackHref(back?.href);\n const backClassName =\n \"mb-2 inline-flex w-fit items-center gap-1 text-sm font-semibold text-content-link hover:underline focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\";\n\n return (\n <header\n className={classNames(\n \"flex flex-col gap-3 tablet:flex-row tablet:items-start tablet:justify-between\",\n { \"mb-sm\": spacing === \"default\" },\n className,\n )}\n >\n <div className={classNames(\"min-w-0\", contentClassName)}>\n {back && backHref ? (\n <a className={backClassName} href={backHref}>\n <BackContent label={back.label} />\n </a>\n ) : back ? (\n <button\n type=\"button\"\n className={backClassName}\n onClick={back.onClick}\n >\n <BackContent label={back.label} />\n </button>\n ) : null}\n\n <Typography element=\"h1\" semanticRole=\"page-title\">\n {title}\n </Typography>\n {subtitle !== undefined && subtitle !== null && (\n <Typography\n element=\"p\"\n semanticRole=\"section-title\"\n className=\"mt-2 font-normal\"\n >\n {subtitle}\n </Typography>\n )}\n </div>\n\n {actions && (\n <div className=\"flex w-full flex-wrap items-center gap-2 tablet:w-auto tablet:justify-end\">\n {actions}\n </div>\n )}\n </header>\n );\n}\n","\"use client\";\n\nimport PageHeading from \"../page-heading\";\nimport type { ComponentType, ReactNode } from \"react\";\nimport type { IconBaseProps } from \"react-icons\";\n\nexport type PageTabItem = {\n id: string;\n label: string;\n icon?: ComponentType<IconBaseProps>;\n notification?: ReactNode;\n disabled?: boolean;\n};\n\ninterface PageTabsHeaderProps {\n title: string;\n tabs: PageTabItem[];\n activeTab: string;\n onTabChange: (tabId: string) => void;\n className?: string;\n size?: \"small\" | \"default\";\n}\n\nexport default function PageTabsHeader({\n title,\n tabs,\n activeTab,\n onTabChange,\n className = \"\",\n size = \"default\",\n}: PageTabsHeaderProps) {\n return (\n <div\n className={`flex flex-col gap-4 tablet:flex-row tablet:items-end tablet:justify-between ${className}`}\n >\n <PageHeading title={title} spacing=\"none\" />\n\n {tabs.length > 1 && (\n <nav\n aria-label={title}\n className=\"flex w-full max-w-full flex-row flex-nowrap items-end gap-3 overflow-x-auto tablet:w-fit tablet:justify-end tablet:overflow-visible\"\n >\n <div role=\"tablist\" className=\"flex flex-nowrap items-end gap-3\">\n {tabs.map((tab) => {\n const Icon = tab.icon;\n const isActive = activeTab === tab.id;\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-current={isActive ? \"page\" : undefined}\n disabled={tab.disabled}\n key={tab.id}\n onClick={() => onTabChange(tab.id)}\n className={`inline-flex items-center gap-1 whitespace-nowrap border-b-[3px] transition-colors duration-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-1 disabled:cursor-not-allowed disabled:opacity-50 tablet:px-1 ${\n size === \"small\" ? \"px-0.5 py-0 text-sm\" : \"p-0.5 text-base\"\n } ${\n isActive\n ? \"border-primary-1 font-semibold text-primary-1\"\n : \"border-transparent text-content-secondary hover:text-content-muted\"\n }`}\n >\n {Icon && (\n <Icon aria-hidden=\"true\" className=\"h-4 w-4 shrink-0\" />\n )}\n <span>{tab.label}</span>\n {tab.notification !== undefined &&\n tab.notification !== null && (\n <span className=\"inline-flex min-h-4 min-w-4 items-center justify-center rounded-full bg-feedback-danger-strong px-1 text-2xs font-bold text-feedback-danger-on-strong\">\n {tab.notification}\n </span>\n )}\n </button>\n );\n })}\n </div>\n </nav>\n )}\n </div>\n );\n}\n","import classNames from \"classnames\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { resolveOptionalValue, type OptionalValuePolicy } from \"../../utils/optional-value\";\n\nconst COLUMN_STYLES = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 mobile:grid-cols-2\",\n 3: \"grid-cols-1 mobile:grid-cols-2 tablet:grid-cols-3\",\n 4: \"grid-cols-1 mobile:grid-cols-2 desktop:grid-cols-4\",\n 6: \"grid-cols-1 mobile:grid-cols-2 tablet:grid-cols-3 desktop:grid-cols-6\",\n} as const;\n\nexport interface InfoGridProps extends ComponentProps<\"dl\"> {\n columns?: keyof typeof COLUMN_STYLES;\n}\n\nexport function InfoGrid({ columns = 3, className, ...rest }: InfoGridProps) {\n return (\n <dl\n className={classNames(\n \"grid gap-x-8 gap-y-5\",\n COLUMN_STYLES[columns],\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport interface InfoItemProps extends ComponentProps<\"div\"> {\n label: ReactNode;\n value?: ReactNode;\n optional?: OptionalValuePolicy;\n placeholder?: string;\n numeric?: boolean;\n variant?: \"default\" | \"metric\";\n valueClassName?: string;\n}\n\nexport function InfoItem({\n label,\n value,\n optional = \"placeholder\",\n placeholder = \"-\",\n numeric = false,\n variant = \"default\",\n className,\n valueClassName,\n children,\n ...rest\n}: InfoItemProps) {\n const resolved = resolveOptionalValue(value, { policy: optional, placeholder });\n if (resolved === null) return null;\n\n return (\n <div className={classNames(\"min-w-0\", className)} {...rest}>\n <dt className=\"break-words text-sm text-content-secondary\">{label}</dt>\n <dd\n className={classNames(\n \"mt-1 break-words\",\n variant === \"metric\" ? \"text-md font-bold\" : \"text-md font-semibold\",\n numeric && \"tabular-nums\",\n valueClassName,\n )}\n >\n {children ?? resolved}\n </dd>\n </div>\n );\n}\n","export type OptionalValuePolicy = \"hide\" | \"placeholder\";\n\nexport const hasOptionalValue = (value: unknown): boolean => {\n if (value === null || value === undefined) return false;\n if (typeof value !== \"string\") return true;\n\n const normalized = value.trim().toUpperCase();\n return normalized !== \"\" && normalized !== \"N/A\";\n};\n\nexport function resolveOptionalValue<T>(\n value: T | null | undefined,\n options: {\n policy?: OptionalValuePolicy;\n placeholder?: string;\n } = {},\n): T | string | null {\n if (hasOptionalValue(value)) return value as T;\n if (options.policy === \"hide\") return null;\n return options.placeholder ?? \"-\";\n}\n","import classNames from \"classnames\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { FormActions, FormGrid } from \"../form-layout\";\n\nexport interface FilterBarProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n filters: ReactNode;\n actions?: ReactNode;\n columns?: 1 | 2 | 3 | 4 | 5 | 6;\n actionClassName?: string;\n}\n\nexport function FilterBar({\n filters,\n actions,\n columns = 3,\n className,\n actionClassName,\n ...rest\n}: FilterBarProps) {\n return (\n <div\n className={classNames(\n \"flex w-full flex-col gap-5 desktop:flex-row desktop:items-end\",\n className,\n )}\n {...rest}\n >\n <FormGrid columns={columns} className=\"min-w-0 flex-1\">\n {filters}\n </FormGrid>\n {actions ? (\n <FormActions className={classNames(\"desktop:w-auto\", actionClassName)}>\n {actions}\n </FormActions>\n ) : null}\n </div>\n );\n}\n","export type StatusDomain =\n | \"generic\"\n | \"beneficiary\"\n | \"document\"\n | \"loan\"\n | \"benefit\"\n | \"signature\"\n | \"participation\"\n | \"claim\"\n | \"payment\"\n | \"protocol\"\n | \"request\";\n\nexport type StatusTone = \"info\" | \"warning\" | \"success\" | \"danger\" | \"neutral\";\nexport type StatusAppearance = \"outline\" | \"soft\" | \"solid\";\n\nexport interface ResolvedStatusAppearance {\n tone: StatusTone;\n appearance: StatusAppearance;\n}\n\n/**\n * Map owned by the consuming application. Keys are normalized with\n * `normalizeStatus` before lookup, so accented and differently-cased labels\n * can be used safely by consumers.\n */\nexport type StatusAppearanceMap = Readonly<\n Record<string, ResolvedStatusAppearance>\n>;\n\nexport interface StatusResolverOptions {\n map?: StatusAppearanceMap;\n fallback?: ResolvedStatusAppearance;\n}\n\nconst NORMALIZED_STATUS = {\n infoOutline: new Set([\"ABERTO\", \"PAGO\", \"EM PAGAMENTO\"]),\n infoSolid: new Set([\n \"EM ANDAMENTO\",\n \"SOLICITADO\",\n \"NAO ASSINADO\",\n \"AGUARDANDO ASSINATURA\",\n ]),\n warning: new Set([\n \"EM ANALISE\",\n \"PENDENTE\",\n \"SUSPENSO\",\n \"AGUARDANDO PARTICIPANTE\",\n ]),\n success: new Set([\n \"DEFERIDO\",\n \"QUITADO\",\n \"LIBERADO\",\n \"ATIVO\",\n \"VIGENTE\",\n \"RESPONDIDO\",\n \"ASSINADO\",\n ]),\n danger: new Set([\"INDEFERIDO\", \"VENCIDO\", \"CANCELADO\", \"ERRO\"]),\n neutral: new Set([\n \"CONCLUIDO\",\n \"ENCERRADO\",\n \"FINALIZADO\",\n \"RENEGOCIADO\",\n \"INATIVO\",\n ]),\n};\n\nexport const normalizeStatus = (status: unknown): string =>\n String(status ?? \"\")\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/\\s+/g, \" \")\n .trim()\n .toUpperCase();\n\nconst resolveGenericStatus = (status: string): ResolvedStatusAppearance => {\n if (NORMALIZED_STATUS.infoOutline.has(status)) {\n return { tone: \"info\", appearance: \"outline\" };\n }\n if (NORMALIZED_STATUS.infoSolid.has(status)) {\n return { tone: \"info\", appearance: \"solid\" };\n }\n if (NORMALIZED_STATUS.warning.has(status)) {\n return { tone: \"warning\", appearance: \"soft\" };\n }\n if (NORMALIZED_STATUS.success.has(status)) {\n return { tone: \"success\", appearance: \"solid\" };\n }\n if (NORMALIZED_STATUS.danger.has(status)) {\n return { tone: \"danger\", appearance: \"solid\" };\n }\n if (NORMALIZED_STATUS.neutral.has(status)) {\n return { tone: \"neutral\", appearance: \"solid\" };\n }\n return { tone: \"neutral\", appearance: \"outline\" };\n};\n\nexport const resolveStatusAppearance = (\n status: unknown,\n domain: StatusDomain = \"generic\",\n options?: StatusResolverOptions,\n): ResolvedStatusAppearance => {\n const normalized = normalizeStatus(status);\n\n if (!normalized) {\n return options?.fallback ?? { tone: \"neutral\", appearance: \"outline\" };\n }\n\n const mappedAppearance = options?.map\n ? Object.entries(options.map).find(\n ([key]) => normalizeStatus(key) === normalized,\n )?.[1]\n : undefined;\n\n if (mappedAppearance) return mappedAppearance;\n\n if (domain === \"beneficiary\") {\n if (normalized === \"VIGENTE\") return { tone: \"success\", appearance: \"solid\" };\n if (normalized === \"ENCERRADO\") return { tone: \"neutral\", appearance: \"solid\" };\n }\n\n if (domain === \"document\") {\n if ([\"ANEXADO\", \"ASSINADO\", \"CONCLUIDO\"].includes(normalized)) {\n return { tone: \"success\", appearance: \"solid\" };\n }\n if (normalized.includes(\"AGUARDANDO\") || normalized === \"PENDENTE\") {\n return { tone: \"warning\", appearance: \"soft\" };\n }\n if (normalized === \"BLOQUEADO\") return { tone: \"neutral\", appearance: \"solid\" };\n }\n\n if (domain === \"signature\") {\n if (normalized === \"ASSINADO\") return { tone: \"success\", appearance: \"solid\" };\n if (normalized.includes(\"AGUARDANDO\")) return { tone: \"warning\", appearance: \"soft\" };\n if (normalized === \"NAO ASSINADO\") return { tone: \"info\", appearance: \"solid\" };\n }\n\n if (domain === \"benefit\") {\n if (normalized === \"EM PAGAMENTO\") return { tone: \"info\", appearance: \"outline\" };\n if (normalized === \"SUSPENSO\") return { tone: \"warning\", appearance: \"soft\" };\n }\n\n if (domain === \"participation\") {\n return { tone: \"neutral\", appearance: \"solid\" };\n }\n\n if (domain === \"payment\") {\n if ([\"PAGO\", \"QUITADO\", \"LIBERADO\"].includes(normalized)) {\n return { tone: \"success\", appearance: \"solid\" };\n }\n if ([\"EM PAGAMENTO\", \"AGUARDANDO PAGAMENTO\"].includes(normalized)) {\n return { tone: \"info\", appearance: \"outline\" };\n }\n if ([\"VENCIDO\", \"ESTORNADO\", \"FALHOU\"].includes(normalized)) {\n return { tone: \"danger\", appearance: \"solid\" };\n }\n }\n\n if (domain === \"claim\" || domain === \"request\" || domain === \"protocol\") {\n if ([\"RECEBIDO\", \"PROTOCOLADO\", \"EMITIDO\"].includes(normalized)) {\n return { tone: \"info\", appearance: \"outline\" };\n }\n if ([\"EM ANALISE\", \"AGUARDANDO DOCUMENTACAO\", \"AGUARDANDO ANALISE\"].includes(normalized)) {\n return { tone: \"warning\", appearance: \"soft\" };\n }\n if ([\"APROVADO\", \"CONCEDIDO\", \"ATENDIDO\"].includes(normalized)) {\n return { tone: \"success\", appearance: \"solid\" };\n }\n if ([\"NEGADO\", \"ARQUIVADO\", \"RECUSADO\"].includes(normalized)) {\n return { tone: \"danger\", appearance: \"solid\" };\n }\n }\n\n return options?.fallback ?? resolveGenericStatus(normalized);\n};\n","import type {\n StatusAppearance,\n StatusTone,\n} from \"../../utils/resolve-status-appearance\";\nimport classNames from \"classnames\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\n\nconst TONE_STYLES: Record<StatusTone, Record<StatusAppearance, string>> = {\n info: {\n outline: \"border-feedback-info-border text-feedback-info-content\",\n soft: \"border-feedback-info-border bg-feedback-info-soft text-feedback-info-content\",\n solid:\n \"border-feedback-info-strong bg-feedback-info-strong text-surface-subtle\",\n },\n warning: {\n outline: \"border-feedback-warning-border text-feedback-warning-content\",\n soft: \"border-feedback-warning-border bg-feedback-warning-soft text-feedback-warning-content\",\n solid:\n \"border-feedback-warning-strong bg-feedback-warning-strong text-surface-subtle\",\n },\n success: {\n outline: \"border-feedback-success-border text-feedback-success-content\",\n soft: \"border-feedback-success-border bg-feedback-success-soft text-feedback-success-content\",\n solid:\n \"border-feedback-success-strong bg-feedback-success-strong text-surface-subtle\",\n },\n danger: {\n outline: \"border-feedback-danger-border text-feedback-danger-content\",\n soft: \"border-feedback-danger-border bg-feedback-danger-soft text-feedback-danger-content\",\n solid:\n \"border-feedback-danger-strong bg-feedback-danger-strong text-surface-subtle\",\n },\n neutral: {\n outline: \"border-border-strong text-content-secondary\",\n soft: \"border-border-default bg-surface-subtle text-content-secondary\",\n solid: \"border-surface-action-neutral bg-surface-action-neutral text-surface-subtle\",\n },\n};\n\nconst SIZE_STYLES = {\n sm: \"min-h-5 px-1 py-0.5 text-xs\",\n md: \"min-h-6 px-2 py-0.5 text-sm\",\n} as const;\n\nexport interface StatusBadgeProps extends Omit<\n HTMLAttributes<HTMLSpanElement>,\n \"children\"\n> {\n children: ReactNode;\n tone?: StatusTone;\n appearance?: StatusAppearance;\n size?: keyof typeof SIZE_STYLES;\n overflow?: \"wrap\" | \"truncate\";\n /** Adds a non-color status announcement for assistive technology. */\n statusLabel?: string;\n}\n\nexport function StatusBadge({\n children,\n tone = \"neutral\",\n appearance = \"outline\",\n size = \"md\",\n overflow = \"wrap\",\n statusLabel,\n className,\n title,\n ...rest\n}: StatusBadgeProps) {\n return (\n <span\n className={classNames(\n \"inline-flex w-fit max-w-full items-center justify-center rounded-sm border-2 text-center font-bold uppercase tracking-wide\",\n SIZE_STYLES[size],\n TONE_STYLES[tone][appearance],\n overflow === \"truncate\"\n ? \"overflow-hidden text-ellipsis whitespace-nowrap\"\n : \"whitespace-normal break-words\",\n className,\n )}\n title={title ?? (typeof children === \"string\" ? children : undefined)}\n aria-label={statusLabel}\n {...rest}\n >\n {children}\n </span>\n );\n}\n\nexport const getStatusBadgeClassName = (\n tone: StatusTone,\n appearance: StatusAppearance,\n) => TONE_STYLES[tone][appearance];\n","\"use client\";\n\nimport type { ComponentProps } from \"react\";\nimport {\n resolveStatusAppearance,\n type StatusAppearanceMap,\n type StatusDomain,\n} from \"../../utils/resolve-status-appearance\";\nimport { StatusBadge } from \"./StatusBadge\";\n\nexport interface DomainStatusBadgeProps\n extends Omit<\n ComponentProps<typeof StatusBadge>,\n \"children\" | \"tone\" | \"appearance\"\n > {\n status?: string | null;\n domain?: StatusDomain;\n empty?: \"hide\" | \"placeholder\";\n placeholder?: string;\n /** Optional consumer-owned map for statuses specific to a product domain. */\n statusMap?: StatusAppearanceMap;\n}\n\nexport function DomainStatusBadge({\n status,\n domain = \"generic\",\n empty = \"hide\",\n placeholder = \"-\",\n statusMap,\n ...rest\n}: DomainStatusBadgeProps) {\n const label = status?.trim();\n if (!label && empty === \"hide\") return null;\n\n const resolved = resolveStatusAppearance(label, domain, { map: statusMap });\n return (\n <StatusBadge\n tone={resolved.tone}\n appearance={resolved.appearance}\n {...rest}\n >\n {label || placeholder}\n </StatusBadge>\n );\n}\n","import classNames from \"classnames\";\n\nexport interface SkipLinkProps {\n targetId?: string;\n label?: string;\n className?: string;\n}\n\nexport default function SkipLink({\n targetId = \"main-content\",\n label = \"Pular para o conteúdo\",\n className,\n}: SkipLinkProps) {\n return (\n <a\n href={`#${targetId}`}\n className={classNames(\n \"fixed left-2 top-0 z-drawer -translate-y-[calc(100%+0.5rem)] whitespace-nowrap rounded-sm border border-border-default bg-surface-card px-3 py-2 font-bold text-content-primary shadow-md transition-transform focus:translate-y-0 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring motion-reduce:transition-none\",\n className,\n )}\n >\n {label}\n </a>\n );\n}\n","\"use client\";\n\nimport { useEffect } from \"react\";\n\nconst FOCUS_NAVIGATION_ATTRIBUTE = \"data-focus-navigation\";\n\nexport function FocusNavigationMode() {\n useEffect(() => {\n const root = document.documentElement;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === \"Tab\" &&\n !event.altKey &&\n !event.ctrlKey &&\n !event.metaKey\n ) {\n root.setAttribute(FOCUS_NAVIGATION_ATTRIBUTE, \"keyboard\");\n }\n };\n\n const handlePointerDown = () => {\n root.setAttribute(FOCUS_NAVIGATION_ATTRIBUTE, \"pointer\");\n };\n\n document.addEventListener(\"keydown\", handleKeyDown, true);\n document.addEventListener(\"pointerdown\", handlePointerDown, true);\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown, true);\n document.removeEventListener(\"pointerdown\", handlePointerDown, true);\n };\n }, []);\n\n return null;\n}\n","\"use client\";\n\nimport { useEffect } from \"react\";\n\nfunction shouldReduceMotion() {\n return window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches ?? false;\n}\n\nconst INVALID_FIELD_SELECTOR = [\n '[aria-invalid=\"true\"]',\n \"input:invalid\",\n \"select:invalid\",\n \"textarea:invalid\",\n].join(\",\");\n\nconst RETRY_DELAYS = [50, 150, 300, 600, 1000];\n\nfunction isVisible(element: HTMLElement) {\n const styles = window.getComputedStyle(element);\n const bounds = element.getBoundingClientRect();\n\n return (\n styles.display !== \"none\" &&\n styles.visibility !== \"hidden\" &&\n bounds.width > 0 &&\n bounds.height > 0\n );\n}\n\nfunction getFocusTarget(field: HTMLElement) {\n if (\n field.matches(\n \"input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex='-1'])\",\n )\n ) {\n return field;\n }\n\n return field.querySelector<HTMLElement>(\n \"input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex='-1'])\",\n );\n}\n\nexport function findFirstInvalidField(form: HTMLFormElement) {\n return [...form.querySelectorAll<HTMLElement>(INVALID_FIELD_SELECTOR)]\n .filter(isVisible)\n .sort((first, second) => {\n const firstBounds = first.getBoundingClientRect();\n const secondBounds = second.getBoundingClientRect();\n\n if (firstBounds.top !== secondBounds.top) {\n return firstBounds.top - secondBounds.top;\n }\n\n return firstBounds.left - secondBounds.left;\n })[0];\n}\n\nfunction navigateToInvalidField(field: HTMLElement) {\n const focusTarget = getFocusTarget(field);\n const behavior = shouldReduceMotion() ? \"auto\" : \"smooth\";\n\n focusTarget?.focus({ preventScroll: true });\n field.scrollIntoView({ behavior, block: \"center\", inline: \"nearest\" });\n}\n\nexport function FormErrorNavigation() {\n useEffect(() => {\n let cleanupPendingNavigation: (() => void) | undefined;\n\n const handleSubmit = (event: SubmitEvent) => {\n if (!(event.target instanceof HTMLFormElement)) return;\n\n cleanupPendingNavigation?.();\n\n const form = event.target;\n let handled = false;\n let observer: MutationObserver | undefined;\n const timers: number[] = [];\n\n const cleanup = () => {\n observer?.disconnect();\n timers.forEach(window.clearTimeout);\n };\n\n const tryNavigate = () => {\n if (handled || !form.isConnected) return;\n\n const field = findFirstInvalidField(form);\n if (!field) return;\n\n handled = true;\n cleanup();\n navigateToInvalidField(field);\n };\n\n observer = new MutationObserver(tryNavigate);\n observer.observe(form, {\n attributeFilter: [\"aria-invalid\"],\n attributes: true,\n subtree: true,\n });\n\n RETRY_DELAYS.forEach((delay) => {\n timers.push(window.setTimeout(tryNavigate, delay));\n });\n\n cleanupPendingNavigation = cleanup;\n };\n\n document.addEventListener(\"submit\", handleSubmit, true);\n\n return () => {\n cleanupPendingNavigation?.();\n document.removeEventListener(\"submit\", handleSubmit, true);\n };\n }, []);\n\n return null;\n}\n","\"use client\";\n\nimport React, { ReactNode, useEffect, useId, useMemo, useState } from \"react\";\nimport TableView from \"./TableView\";\nimport { IFilterControl, IFilterProps } from \"./components/filter/Filter\";\n\ntype TablePrimitive = string | number | null | undefined;\n\nexport interface ITableColumnConfig<TData = unknown> {\n key: string;\n title: string;\n className?: string;\n cellClassName?: string;\n widthUnits?: number;\n renderCell?: (item: TData, index: number) => ReactNode;\n accessor?: (item: TData) => TablePrimitive;\n searchAccessor?: (item: TData) => string;\n sortAccessor?: (item: TData) => string | number;\n filterAccessor?: (item: TData) => TablePrimitive;\n filters?: {\n controls: IFilterControl[];\n matchOption?: (\n item: TData,\n value: string,\n control: IFilterControl,\n ) => boolean;\n matchSearch?: (\n item: TData,\n value: string,\n control: IFilterControl,\n ) => boolean;\n compare?: (\n a: TData,\n b: TData,\n value: string,\n control: IFilterControl,\n ) => number;\n };\n}\n\nexport interface IHeaderItem<TData = unknown> {\n title: string;\n onClick?: () => void;\n isFilterOpen?: boolean;\n filters?: IFilterProps;\n className?: string;\n key?: string;\n cellClassName?: string;\n widthUnits?: number;\n renderCell?: (item: TData, index: number) => ReactNode;\n}\n\nexport interface ITablePaginationProps {\n currentPage: number;\n totalPages: number;\n totalItems: number;\n startItem: number;\n endItem: number;\n onPrevious: () => void;\n onNext: () => void;\n variant?: \"default\" | \"arrows\";\n}\n\nexport interface ITableExpandableConfig<TData = unknown> {\n getRowId: (item: TData, index: number) => string | number;\n expandedRowId: string | number | null;\n onToggleRow: (rowId: string | number, item: TData, index: number) => void;\n renderExpandedRow: (item: TData, index: number) => ReactNode;\n expandedRowClassName?: string;\n expandedContentClassName?: string;\n rowClassName?: (item: TData, isExpanded: boolean) => string | undefined;\n}\n\nexport type TableOverflowMode = \"fit\" | \"adaptive\" | \"scroll\";\nexport type TableRowVariant = \"plain\" | \"striped\";\nexport type TableHeaderVariant = \"default\" | \"brand\" | \"dark\" | \"neutral\";\nexport type TableDensity = \"comfortable\" | \"compact\";\n\nexport interface TableProps<TData = unknown>\n extends React.HTMLAttributes<HTMLDivElement> {\n header: IHeaderItem<TData>[] | ITableColumnConfig<TData>[];\n accessibleName?: string;\n caption?: ReactNode;\n children?: ReactNode;\n onFilterChange?: (value: string) => void;\n showPagination?: boolean;\n pagination?: ITablePaginationProps;\n data?: TData[];\n itemsPerPage?: number;\n emptyMessage?: string;\n errorMessage?: ReactNode;\n totalWidthUnits?: number;\n showRowDivider?: boolean;\n enableRowHover?: boolean;\n paginationVariant?: \"default\" | \"arrows\";\n expandable?: ITableExpandableConfig<TData>;\n overflowMode?: TableOverflowMode;\n adaptiveBreakpoint?: number;\n stickyHeader?: boolean;\n scrollAreaMaxHeight?: React.CSSProperties[\"maxHeight\"];\n rowVariant?: TableRowVariant;\n headerVariant?: TableHeaderVariant;\n density?: TableDensity;\n}\n\nfunction Table<TData = unknown>(props: TableProps<TData>) {\n const {\n children,\n header,\n accessibleName,\n caption,\n className,\n onFilterChange,\n showPagination = false,\n pagination,\n data,\n itemsPerPage = 10,\n emptyMessage = \"Nenhum item encontrado\",\n errorMessage,\n totalWidthUnits,\n showRowDivider = false,\n enableRowHover = false,\n paginationVariant = \"default\",\n expandable,\n overflowMode,\n adaptiveBreakpoint,\n stickyHeader = false,\n scrollAreaMaxHeight,\n rowVariant = \"plain\",\n headerVariant = \"default\",\n density = \"comfortable\",\n } = props;\n const tableId = useId();\n const resolvedOverflowMode = overflowMode ?? (data ? \"adaptive\" : \"scroll\");\n const resolvedAdaptiveBreakpoint =\n adaptiveBreakpoint ??\n Math.min(920, 320 + Math.max(header.length - 2, 0) * 120);\n\n const [currentPage, setCurrentPage] = useState(1);\n const [filterValues, setFilterValues] = useState<Record<string, string>>({});\n const [visibleExpandedRowId, setVisibleExpandedRowId] = useState<\n string | null\n >(() =>\n expandable?.expandedRowId !== null &&\n expandable?.expandedRowId !== undefined\n ? String(expandable.expandedRowId)\n : null,\n );\n const [closingExpandedRowId, setClosingExpandedRowId] = useState<\n string | null\n >(null);\n const safeItemsPerPage = Number.isFinite(itemsPerPage)\n ? Math.max(1, Math.floor(itemsPerPage))\n : 10;\n\n const normalizedHeader = useMemo(() => {\n return header.map((item) => {\n const typedItem = item as ITableColumnConfig<TData>;\n return {\n ...typedItem,\n title: typedItem.title,\n };\n });\n }, [header]);\n\n const controlledHeader = useMemo(() => {\n if (!data) {\n return normalizedHeader as IHeaderItem<TData>[];\n }\n\n return normalizedHeader.map((item) => {\n const controls = item.filters?.controls?.map((control) => ({\n ...control,\n value:\n filterValues[`${item.key}-${control.id}`] ??\n control.value ??\n (control.type === \"search\" ? \"\" : \"__all__\"),\n }));\n\n return {\n ...item,\n filters: controls?.length\n ? {\n controls,\n }\n : undefined,\n };\n }) as IHeaderItem<TData>[];\n }, [data, filterValues, normalizedHeader]);\n\n const filteredAndSortedData = useMemo(() => {\n if (!data) return [];\n\n let result = [...data];\n const sorters: Array<(a: TData, b: TData) => number> = [];\n\n normalizedHeader.forEach((column) => {\n const controls = column.filters?.controls ?? [];\n\n controls.forEach((control) => {\n const stateKey = `${column.key}-${control.id}`;\n const value =\n filterValues[stateKey] ??\n control.value ??\n (control.type === \"search\" ? \"\" : \"__all__\");\n\n if (!value || value === \"__all__\") {\n return;\n }\n\n if (control.type === \"options\") {\n result = result.filter((item) => {\n if (column.filters?.matchOption) {\n return column.filters.matchOption(item, value, control);\n }\n\n const resolvedValue =\n column.filterAccessor?.(item) ?? column.accessor?.(item);\n return String(resolvedValue ?? \"\") === value;\n });\n return;\n }\n\n if (control.type === \"search\") {\n const normalizedSearch = value.toLowerCase().trim();\n result = result.filter((item) => {\n if (column.filters?.matchSearch) {\n return column.filters.matchSearch(item, value, control);\n }\n\n const searchableValue =\n column.searchAccessor?.(item) ??\n String(\n column.filterAccessor?.(item) ?? column.accessor?.(item) ?? \"\",\n );\n\n return searchableValue.toLowerCase().includes(normalizedSearch);\n });\n return;\n }\n\n if (control.type === \"sort\") {\n sorters.push((a, b) => {\n if (column.filters?.compare) {\n return column.filters.compare(a, b, value, control);\n }\n\n const valueA = column.sortAccessor?.(a) ?? column.accessor?.(a);\n const valueB = column.sortAccessor?.(b) ?? column.accessor?.(b);\n\n if (typeof valueA === \"number\" && typeof valueB === \"number\") {\n return value === \"desc\" ? valueB - valueA : valueA - valueB;\n }\n\n const stringA = String(valueA ?? \"\");\n const stringB = String(valueB ?? \"\");\n return value === \"desc\"\n ? stringB.localeCompare(stringA)\n : stringA.localeCompare(stringB);\n });\n }\n });\n });\n\n if (!sorters.length) {\n return result;\n }\n\n return [...result].sort((a, b) => {\n for (const sorter of sorters) {\n const comparison = sorter(a, b);\n if (comparison !== 0) {\n return comparison;\n }\n }\n\n return 0;\n });\n }, [data, filterValues, normalizedHeader]);\n\n useEffect(() => {\n setCurrentPage(1);\n }, [filterValues]);\n\n useEffect(() => {\n if (!expandable) {\n setVisibleExpandedRowId(null);\n setClosingExpandedRowId(null);\n return;\n }\n\n const nextExpandedRowId =\n expandable.expandedRowId !== null &&\n expandable.expandedRowId !== undefined\n ? String(expandable.expandedRowId)\n : null;\n\n if (nextExpandedRowId) {\n setVisibleExpandedRowId(nextExpandedRowId);\n setClosingExpandedRowId(null);\n return;\n }\n\n if (!visibleExpandedRowId) {\n return;\n }\n\n setClosingExpandedRowId(visibleExpandedRowId);\n const timeoutId = window.setTimeout(() => {\n setVisibleExpandedRowId(null);\n setClosingExpandedRowId(null);\n }, 220);\n\n return () => window.clearTimeout(timeoutId);\n }, [expandable, visibleExpandedRowId]);\n\n const internalPagination = useMemo(() => {\n if (!data) return null;\n\n const totalItems = filteredAndSortedData.length;\n const totalPages = Math.max(1, Math.ceil(totalItems / safeItemsPerPage));\n const safeCurrentPage = Math.min(currentPage, totalPages);\n const startIndex = (safeCurrentPage - 1) * safeItemsPerPage;\n const endIndex = startIndex + safeItemsPerPage;\n\n return {\n currentPage: safeCurrentPage,\n totalPages,\n totalItems,\n startItem: totalItems === 0 ? 0 : startIndex + 1,\n endItem: Math.min(endIndex, totalItems),\n pageData: filteredAndSortedData.slice(startIndex, endIndex),\n };\n }, [currentPage, data, filteredAndSortedData, safeItemsPerPage]);\n\n const managedCellClassName =\n density === \"compact\"\n ? \"px-3 py-1.5 text-sm text-content-primary\"\n : \"px-4 py-2 text-sm text-content-primary\";\n const expandedContentClassName =\n density === \"compact\"\n ? \"bg-surface-card px-3 py-3\"\n : \"bg-surface-card px-4 py-4\";\n const emptyCellClassName =\n density === \"compact\"\n ? \"px-3 py-4 text-center text-sm text-content-muted\"\n : \"px-4 py-6 text-center text-sm text-content-muted\";\n\n const renderedChildren = useMemo(() => {\n if (!data || !internalPagination) {\n return children;\n }\n\n return (\n <tbody data-managed-rows=\"true\">\n {internalPagination.pageData.map((item, index) =>\n (() => {\n const rowId = expandable?.getRowId(item, index);\n const normalizedRowId =\n rowId !== undefined ? String(rowId) : undefined;\n const isExpanded =\n normalizedRowId !== undefined &&\n expandable?.expandedRowId !== null &&\n expandable?.expandedRowId !== undefined &&\n String(expandable.expandedRowId) === normalizedRowId;\n const isVisibleExpandedRow =\n normalizedRowId !== undefined &&\n visibleExpandedRowId === normalizedRowId;\n const isClosingExpandedRow =\n normalizedRowId !== undefined &&\n closingExpandedRowId === normalizedRowId;\n const rowNumber = internalPagination.startItem + index;\n const rowContentIds = normalizedHeader.map(\n (_, columnIndex) =>\n `${tableId}-row-${rowNumber}-cell-${columnIndex + 1}`,\n );\n const expandedContentId = `${tableId}-row-${rowNumber}-details-content`;\n\n return (\n <React.Fragment\n key={`row-group-${normalizedRowId ?? `${index}-${JSON.stringify(item)}`}`}\n >\n <tr\n tabIndex={0}\n aria-label={`Linha ${rowNumber} de ${internalPagination.totalItems}`}\n aria-describedby={rowContentIds.join(\" \")}\n data-table-row-stripe={\n rowVariant === \"striped\" && index % 2 === 1 && !isExpanded\n ? \"true\"\n : undefined\n }\n className={[\n \"focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-focus-ring\",\n showRowDivider ? \"border-b border-border-default\" : \"\",\n enableRowHover ? \"hover:bg-primary-5\" : \"\",\n expandable?.rowClassName?.(item, Boolean(isExpanded)) ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {normalizedHeader.map((column, columnIndex) => (\n <td\n key={column.key}\n id={rowContentIds[columnIndex]}\n data-label={column.title}\n className={\n column.cellClassName ?? managedCellClassName\n }\n >\n {column.renderCell\n ? column.renderCell(item, index)\n : String(column.accessor?.(item) ?? \"-\")}\n </td>\n ))}\n </tr>\n {isVisibleExpandedRow && expandable && (\n <tr className={expandable?.expandedRowClassName}>\n <td\n colSpan={normalizedHeader.length}\n className={\n expandable?.expandedContentClassName ??\n expandedContentClassName\n }\n >\n <div\n role=\"region\"\n tabIndex={isExpanded && !isClosingExpandedRow ? 0 : -1}\n aria-label={`Detalhes da linha ${rowNumber}`}\n aria-describedby={expandedContentId}\n aria-hidden={\n !isExpanded || isClosingExpandedRow || undefined\n }\n className={`overflow-hidden transition-all duration-200 ease-out motion-reduce:transition-none ${\n isExpanded && !isClosingExpandedRow\n ? \"max-h-[1200px] opacity-100\"\n : \"max-h-0 opacity-0\"\n }`}\n >\n <div id={expandedContentId}>\n {expandable.renderExpandedRow(item, index)}\n </div>\n </div>\n </td>\n </tr>\n )}\n </React.Fragment>\n );\n })(),\n )}\n {internalPagination.pageData.length === 0 && (\n <tr>\n <td\n colSpan={normalizedHeader.length}\n className={emptyCellClassName}\n >\n {errorMessage ? (\n <span role=\"alert\">{errorMessage}</span>\n ) : (\n <span role=\"status\">{emptyMessage}</span>\n )}\n </td>\n </tr>\n )}\n </tbody>\n );\n }, [\n children,\n data,\n emptyMessage,\n errorMessage,\n emptyCellClassName,\n enableRowHover,\n expandable,\n expandedContentClassName,\n internalPagination,\n managedCellClassName,\n normalizedHeader,\n rowVariant,\n showRowDivider,\n tableId,\n visibleExpandedRowId,\n closingExpandedRowId,\n ]);\n\n const resolvedPagination = data\n ? internalPagination && {\n currentPage: internalPagination.currentPage,\n totalPages: internalPagination.totalPages,\n totalItems: internalPagination.totalItems,\n startItem: internalPagination.startItem,\n endItem: internalPagination.endItem,\n variant: paginationVariant,\n onPrevious: () => setCurrentPage((prev) => Math.max(prev - 1, 1)),\n onNext: () =>\n setCurrentPage((prev) =>\n Math.min(prev + 1, internalPagination.totalPages),\n ),\n }\n : pagination\n ? {\n ...pagination,\n variant: pagination.variant ?? \"default\",\n }\n : pagination;\n\n const resolvedShowPagination = data\n ? Boolean(\n internalPagination &&\n internalPagination.totalItems > safeItemsPerPage,\n )\n : showPagination;\n\n const handleInternalFilterChange = (\n columnKey: string,\n controlId: string,\n value: string,\n ) => {\n setFilterValues((prev) => ({\n ...prev,\n [`${columnKey}-${controlId}`]: value,\n }));\n };\n\n const resolvedHeader = data\n ? controlledHeader.map((item) => ({\n ...item,\n filters: item.filters?.controls?.length\n ? {\n controls: item.filters.controls,\n onControlChange: (control: IFilterControl, value: string) =>\n handleInternalFilterChange(\n item.key ?? item.title,\n control.id,\n value,\n ),\n }\n : undefined,\n }))\n : controlledHeader;\n\n return (\n <TableView<TData>\n header={resolvedHeader}\n accessibleName={accessibleName}\n caption={caption}\n onFilterChange={onFilterChange}\n className={className}\n showPagination={resolvedShowPagination}\n pagination={resolvedPagination ?? undefined}\n totalWidthUnits={totalWidthUnits}\n overflowMode={resolvedOverflowMode}\n adaptiveBreakpoint={resolvedAdaptiveBreakpoint}\n stickyHeader={stickyHeader}\n scrollAreaMaxHeight={scrollAreaMaxHeight}\n rowVariant={rowVariant}\n headerVariant={headerVariant}\n density={density}\n >\n {renderedChildren}\n </TableView>\n );\n}\n\nexport default Table;\n","\"use client\";\n\nimport {\n type CSSProperties,\n ReactNode,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport {\n MdArrowDownward,\n MdArrowUpward,\n MdFilterList,\n MdKeyboardArrowLeft,\n MdKeyboardArrowRight,\n MdOutlineFilterAlt,\n} from \"react-icons/md\";\nimport Filter, { IFilterControl } from \"./components/filter/Filter\";\nimport NotFound from \"./components/notFound\";\nimport {\n IHeaderItem,\n ITablePaginationProps,\n type TableDensity,\n type TableHeaderVariant,\n type TableOverflowMode,\n type TableRowVariant,\n} from \"./Table\";\n\ninterface IProps<TData = unknown> extends React.HTMLAttributes<HTMLDivElement> {\n header: IHeaderItem<TData>[];\n accessibleName?: string;\n caption?: ReactNode;\n onFilterChange?: (value: string) => void;\n children?: ReactNode;\n showPagination?: boolean;\n pagination?: ITablePaginationProps;\n totalWidthUnits?: number;\n overflowMode?: TableOverflowMode;\n adaptiveBreakpoint?: number;\n stickyHeader?: boolean;\n scrollAreaMaxHeight?: CSSProperties[\"maxHeight\"];\n rowVariant?: TableRowVariant;\n headerVariant?: TableHeaderVariant;\n density?: TableDensity;\n}\n\nconst HEADER_VARIANT_CLASSES: Record<TableHeaderVariant, string> = {\n default: \"bg-surface-card text-content-muted\",\n brand: \"bg-action-primary text-action-primary-content\",\n dark: \"bg-surface-action-neutral text-content-inverse\",\n neutral: \"bg-surface-muted text-content-primary\",\n};\n\nconst HEADER_DENSITY_CLASSES: Record<\n TableDensity,\n { row: string; cell: string }\n> = {\n comfortable: { row: \"h-10\", cell: \"px-2\" },\n compact: { row: \"h-8\", cell: \"px-2 py-1\" },\n};\n\nfunction TableView<TData>({\n children,\n header,\n accessibleName,\n caption,\n className,\n onFilterChange,\n showPagination,\n pagination,\n totalWidthUnits,\n overflowMode = \"scroll\",\n adaptiveBreakpoint = 440,\n stickyHeader = false,\n scrollAreaMaxHeight,\n rowVariant = \"plain\",\n headerVariant = \"default\",\n density = \"comfortable\",\n}: IProps<TData>) {\n const tableId = useId();\n const [openFilter, setOpenFilter] = useState<number | null>(null);\n const [filterMaxHeight, setFilterMaxHeight] = useState<number>();\n const [filterCoords, setFilterCoords] = useState<{\n top: number;\n left?: number;\n } | null>(null);\n const [tableWidth, setTableWidth] = useState<number>();\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const tableWrapperRef = useRef<HTMLDivElement>(null);\n const headerCellRefs = useRef<Array<HTMLTableCellElement | null>>([]);\n const filterTriggerRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const filterRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const wrapper = tableWrapperRef.current;\n if (!wrapper) return;\n\n const updateWidth = () => setTableWidth(wrapper.clientWidth);\n if (typeof ResizeObserver === \"undefined\") {\n updateWidth();\n window.addEventListener(\"resize\", updateWidth);\n return () => window.removeEventListener(\"resize\", updateWidth);\n }\n\n const observer = new ResizeObserver(updateWidth);\n observer.observe(wrapper);\n updateWidth();\n\n return () => observer.disconnect();\n }, []);\n\n useEffect(() => {\n if (openFilter === null) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n setOpenFilter(null);\n setFilterCoords(null);\n window.requestAnimationFrame(() => {\n filterTriggerRefs.current[openFilter]?.focus();\n });\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [openFilter]);\n\n useEffect(() => {\n const updateFilterMaxHeight = () => {\n const nextHeight = scrollContainerRef.current?.clientHeight;\n if (!nextHeight) return;\n setFilterMaxHeight(Math.max(nextHeight - 24, 160));\n };\n\n updateFilterMaxHeight();\n window.addEventListener(\"resize\", updateFilterMaxHeight);\n\n return () => {\n window.removeEventListener(\"resize\", updateFilterMaxHeight);\n };\n }, []);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n tableWrapperRef.current &&\n !tableWrapperRef.current.contains(event.target as Node)\n ) {\n setOpenFilter(null);\n setFilterCoords(null);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n useEffect(() => {\n if (!filterRef.current || !filterCoords) return;\n\n filterRef.current.style.top = `${filterCoords.top}px`;\n filterRef.current.style.left =\n typeof filterCoords.left === \"number\" ? `${filterCoords.left}px` : \"\";\n }, [filterCoords]);\n\n useEffect(() => {\n if (openFilter === null) return;\n\n const frame = window.requestAnimationFrame(() => {\n filterRef.current\n ?.querySelector<HTMLElement>(\n \"input, button, [tabindex]:not([tabindex='-1'])\",\n )\n ?.focus();\n });\n\n return () => window.cancelAnimationFrame(frame);\n }, [openFilter]);\n\n const handleOpenFilter = (index: number) => {\n const next = openFilter === index ? null : index;\n setOpenFilter(next);\n\n if (next !== null) {\n const wrapperRect = tableWrapperRef.current?.getBoundingClientRect();\n const cellRect = headerCellRefs.current[next]?.getBoundingClientRect();\n\n if (wrapperRect && cellRect) {\n const top = cellRect.bottom - wrapperRect.top + 8;\n const dropdownWidth = Math.min(\n 320,\n Math.max(wrapperRect.width - 16, 0),\n );\n const desiredLeft = cellRect.left - wrapperRect.left;\n const minLeft = 8;\n const maxLeft = Math.max(\n minLeft,\n wrapperRect.width - dropdownWidth - 8,\n );\n const left = Math.min(Math.max(desiredLeft, minLeft), maxLeft);\n\n setFilterCoords({ top, left });\n }\n } else {\n setFilterCoords(null);\n }\n };\n\n const closeFilterAndRestoreFocus = () => {\n const activeFilter = openFilter;\n setOpenFilter(null);\n setFilterCoords(null);\n if (activeFilter !== null) {\n window.requestAnimationFrame(() => {\n filterTriggerRefs.current[activeFilter]?.focus();\n });\n }\n };\n\n const hasFilterEnabled = (item: IHeaderItem<TData>) =>\n Boolean(item.filters?.optionList?.length || item.filters?.controls?.length);\n\n const getHeaderIcon = (item: IHeaderItem<TData>) => {\n if (!hasFilterEnabled(item)) {\n return null;\n }\n\n const controls = item.filters?.controls ?? [];\n const hasActiveSearchOrOptionFilter = controls.some((control) => {\n if (control.type === \"search\") {\n return Boolean(control.value?.trim());\n }\n\n if (control.type === \"options\") {\n return Boolean(control.value && control.value !== \"__all__\");\n }\n\n return false;\n });\n\n if (hasActiveSearchOrOptionFilter) {\n return <MdFilterList className=\"h-3.5 w-3.5\" />;\n }\n\n const activeSort = controls.find(\n (control) =>\n control.type === \"sort\" &&\n control.value &&\n control.value !== \"__all__\" &&\n control.value !== \"default\",\n );\n\n if (activeSort?.value === \"asc\") {\n return <MdArrowUpward className=\"h-3.5 w-3.5\" />;\n }\n\n if (activeSort?.value === \"desc\") {\n return <MdArrowDownward className=\"h-3.5 w-3.5\" />;\n }\n\n const legacyOptionActive =\n item.filters?.optionChecked &&\n item.filters.optionChecked !== \"__all__\" &&\n item.filters.optionChecked !== \"default\";\n\n if (legacyOptionActive) {\n return <MdFilterList className=\"h-3.5 w-3.5\" />;\n }\n\n return <MdOutlineFilterAlt className=\"h-3.5 w-3.5\" />;\n };\n\n const getSortDirection = (item: IHeaderItem<TData>) => {\n const sortControl = item.filters?.controls?.find(\n (control) => control.type === \"sort\",\n );\n\n if (!sortControl) return undefined;\n if (sortControl.value === \"asc\") return \"ascending\" as const;\n if (sortControl.value === \"desc\") return \"descending\" as const;\n return \"none\" as const;\n };\n\n const handleHeaderAction = (item: IHeaderItem<TData>, index: number) => {\n if (hasFilterEnabled(item)) {\n handleOpenFilter(index);\n return;\n }\n };\n\n const handleFilterChange = (\n item: IHeaderItem<TData>,\n value: string,\n control?: IFilterControl,\n ) => {\n if (control?.type !== \"search\") {\n setOpenFilter(null);\n }\n\n if (control) {\n item.filters?.onControlChange?.(control, value);\n } else {\n item.filters?.onChange?.(value);\n }\n\n if (onFilterChange) {\n onFilterChange(value);\n }\n };\n\n const resolvedTotalWidthUnits =\n totalWidthUnits ??\n (header.reduce((sum, item) => sum + (item.widthUnits ?? 0), 0) ||\n undefined);\n\n const getColumnWidth = (widthUnits?: number) => {\n if (!resolvedTotalWidthUnits || !widthUnits) {\n return undefined;\n }\n\n return `${(widthUnits / resolvedTotalWidthUnits) * 100}%`;\n };\n\n const isNarrowContainer = tableWidth !== undefined && tableWidth < 640;\n const paginationVariant = isNarrowContainer\n ? \"arrows\"\n : (pagination?.variant ?? \"default\");\n const isAdaptiveCompact =\n overflowMode === \"adaptive\" &&\n tableWidth !== undefined &&\n tableWidth < adaptiveBreakpoint;\n const overflowClass =\n overflowMode === \"scroll\" ? \"overflow-x-auto\" : \"overflow-x-hidden\";\n const resolvedScrollAreaMaxHeight = stickyHeader\n ? (scrollAreaMaxHeight ?? \"calc(100dvh - 240px)\")\n : scrollAreaMaxHeight;\n const headerFocusClass =\n headerVariant === \"brand\" || headerVariant === \"dark\"\n ? \"focus-visible:outline-current\"\n : \"focus-visible:outline-focus-ring\";\n\n return (\n <div\n ref={tableWrapperRef}\n className={`relative flex h-full min-h-0 min-w-0 flex-col ${\n isAdaptiveCompact ? \"table-adaptive-compact\" : \"\"\n }`}\n >\n <div\n ref={scrollContainerRef}\n data-sticky-header={stickyHeader}\n data-row-variant={rowVariant}\n data-header-variant={headerVariant}\n data-table-density={density}\n data-responsive-mode={overflowMode}\n style={{ maxHeight: resolvedScrollAreaMaxHeight }}\n className={`min-h-0 min-w-0 flex-1 overflow-y-auto ${overflowClass}`}\n >\n <table\n aria-label={\n caption\n ? undefined\n : (accessibleName ??\n `Tabela: ${header.map((item) => item.title).join(\", \")}`)\n }\n className={`w-full max-w-full ${\n resolvedTotalWidthUnits && !isAdaptiveCompact ? \"table-fixed\" : \"\"\n } ${className ?? \"\"}`}\n >\n {caption && <caption className=\"sr-only\">{caption}</caption>}\n {resolvedTotalWidthUnits && !isAdaptiveCompact && (\n <colgroup>\n {header.map((item, index) => (\n <col key={index} width={getColumnWidth(item.widthUnits)} />\n ))}\n </colgroup>\n )}\n <thead className=\"border-b border-border-default\">\n <tr className={HEADER_DENSITY_CLASSES[density].row}>\n {header.map((item, index) => {\n const canOpenFilter = hasFilterEnabled(item);\n const headerIcon = getHeaderIcon(item);\n\n return (\n <th\n scope=\"col\"\n aria-sort={getSortDirection(item)}\n key={index}\n ref={(element) => {\n headerCellRefs.current[index] = element;\n }}\n className={`${\n stickyHeader ? \"sticky top-0 z-[1]\" : \"relative\"\n } ${HEADER_VARIANT_CLASSES[headerVariant]} ${HEADER_DENSITY_CLASSES[density].cell} text-left text-md font-bold ${item.className ?? \"\"}`}\n data-has-filter={canOpenFilter}\n >\n {canOpenFilter ? (\n <button\n type=\"button\"\n aria-expanded={openFilter === index}\n aria-controls={\n openFilter === index\n ? `${tableId}-filter-${index}`\n : undefined\n }\n ref={(element) => {\n filterTriggerRefs.current[index] = element;\n }}\n aria-label={`Filtrar ou ordenar por ${item.title}`}\n className={`flex min-h-11 w-full items-center gap-1.5 rounded-sm text-left focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ${headerFocusClass} ${\n item.className?.includes(\"text-right\")\n ? \"justify-end\"\n : \"\"\n }`}\n onClick={() => handleHeaderAction(item, index)}\n >\n <span className=\"min-w-0 truncate\">{item.title}</span>\n {headerIcon && (\n <span className=\"flex-shrink-0\" aria-hidden=\"true\">\n {headerIcon}\n </span>\n )}\n </button>\n ) : (\n <span\n className={`flex items-center gap-1.5 ${\n item.className?.includes(\"text-right\")\n ? \"justify-end\"\n : \"\"\n }`}\n >\n <span className=\"min-w-0 truncate\">{item.title}</span>\n </span>\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n {children ? (\n children\n ) : (\n <tbody>\n <tr>\n <td colSpan={header.length}>\n <NotFound />\n </td>\n </tr>\n </tbody>\n )}\n </table>\n </div>\n {openFilter !== null && filterCoords && header[openFilter]?.filters && (\n <div ref={filterRef} className=\"absolute z-popover\">\n <Filter\n id={`${tableId}-filter-${openFilter}`}\n accessibleName={`Filtros da coluna ${header[openFilter].title}`}\n groupName={`${tableId}-${openFilter}`}\n optionChecked={header[openFilter].filters!.optionChecked}\n optionList={header[openFilter].filters!.optionList}\n controls={header[openFilter].filters!.controls}\n onChange={(value) => {\n handleFilterChange(header[openFilter], value);\n closeFilterAndRestoreFocus();\n }}\n onControlChange={(control, value) => {\n handleFilterChange(header[openFilter], value, control);\n if (control.type !== \"search\") closeFilterAndRestoreFocus();\n }}\n maxHeight={filterMaxHeight}\n />\n </div>\n )}\n {showPagination && pagination && (\n <div className=\"flex flex-col tablet:flex-row items-end tablet:items-center justify-between mt-6 gap-2 tablet:gap-4\">\n <p\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"text-sm text-content-primary\"\n >\n Visualizando de {pagination.startItem} até {pagination.endItem} de{\" \"}\n {pagination.totalItems} resultados\n </p>\n\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={pagination.onPrevious}\n disabled={pagination.currentPage === 1}\n aria-label=\"Ir para a página anterior\"\n className={`inline-flex min-h-11 min-w-11 items-center justify-center gap-1 rounded border border-border-default px-2 text-sm leading-none text-content-primary hover:border-border-strong disabled:cursor-not-allowed disabled:border-border-default disabled:opacity-50 ${\n paginationVariant === \"arrows\" ? \"min-w-6 tablet:min-w-7\" : \"\"\n }`}\n >\n <MdKeyboardArrowLeft className=\"h-3 w-3 text-content-muted\" />\n {paginationVariant !== \"arrows\" && \"Anterior\"}\n </button>\n\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"inline-flex h-6 min-w-6 items-center justify-center rounded border border-selection-border bg-selection-background px-1.5 text-sm font-bold leading-none text-selection-content tablet:h-7 tablet:min-w-7\"\n >\n {pagination.currentPage}\n </div>\n\n <button\n type=\"button\"\n onClick={pagination.onNext}\n disabled={pagination.currentPage === pagination.totalPages}\n aria-label=\"Ir para a próxima página\"\n className={`inline-flex min-h-11 min-w-11 items-center justify-center gap-1 rounded border border-border-default px-2 text-sm leading-none text-content-primary hover:border-border-strong disabled:cursor-not-allowed disabled:border-border-default disabled:opacity-50 ${\n paginationVariant === \"arrows\" ? \"min-w-6 tablet:min-w-7\" : \"\"\n }`}\n >\n {paginationVariant !== \"arrows\" && \"Próxima\"}\n <MdKeyboardArrowRight className=\"h-3 w-3 text-content-muted\" />\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport default TableView;\n","\"use client\";\n\nimport cs from \"classnames\";\nimport { ChangeEvent, useEffect, useRef } from \"react\";\nimport { IFilterControl } from \"./Filter\";\n\ninterface IFilterProps {\n id?: string;\n accessibleName?: string;\n groupName?: string;\n optionList?: { label: string; value: string }[];\n optionChecked?: string;\n onChange?: (value: string) => void;\n controls?: IFilterControl[];\n onControlChange?: (control: IFilterControl, value: string) => void;\n maxHeight?: number;\n}\n\nfunction FilterView({\n id,\n accessibleName,\n groupName,\n optionList,\n optionChecked,\n onChange,\n controls,\n onControlChange,\n maxHeight,\n}: IFilterProps) {\n const handleChangeCheckbox = (event: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(event.target.value);\n }\n };\n\n const handleControlChange = (\n control: IFilterControl,\n event: ChangeEvent<HTMLInputElement>,\n ) => {\n onControlChange?.(control, event.target.value);\n };\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!containerRef.current) return;\n containerRef.current.style.maxHeight = maxHeight ? `${maxHeight}px` : \"\";\n }, [maxHeight]);\n\n if (controls?.length) {\n return (\n <div\n ref={containerRef}\n id={id}\n role=\"dialog\"\n aria-label={accessibleName ?? \"Filtros da tabela\"}\n className=\"bg-surface-card rounded shadow-sm p-3 font-normal w-[calc(100vw-16px)] max-w-[320px] overflow-y-auto text-sm\"\n >\n <div className=\"flex flex-col gap-3\">\n {controls.map((control) => (\n <div\n key={control.id}\n className=\"flex flex-col gap-2 border-b border-border-default pb-3 last:border-b-0 last:pb-0\"\n >\n {control.label && (\n <span\n id={`${control.id}-label`}\n className=\"text-xs font-bold uppercase tracking-wide text-content-muted\"\n >\n {control.label}\n </span>\n )}\n\n {control.type === \"search\" ? (\n <input\n type=\"text\"\n aria-label={control.label ?? control.placeholder ?? \"Buscar\"}\n aria-describedby={control.label ? `${control.id}-label` : undefined}\n value={control.value ?? \"\"}\n placeholder={control.placeholder ?? \"Buscar\"}\n onChange={(event) => handleControlChange(control, event)}\n className=\"field-keyboard-focus-ring h-10 rounded border border-field-border-default bg-field-surface px-3 text-sm text-field-content outline-none placeholder:text-field-placeholder focus:border-field-border-active focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\"\n />\n ) : (\n <div className=\"flex flex-col gap-1\">\n {control.optionList?.map((option, index) => (\n <label\n key={`${control.id}-${index}`}\n className={cs(\n \"min-h-6 flex items-start gap-2 px-3 py-0.5 cursor-pointer rounded\",\n control.value === option.value\n ? \"bg-primary-5 text-primary-1\"\n : \"text-content-primary\",\n )}\n >\n <input\n type=\"radio\"\n className=\"peer sr-only\"\n value={option.value}\n checked={control.value === option.value}\n name={`table-filter-${groupName ?? \"default\"}-${control.id}`}\n onChange={(event) =>\n handleControlChange(control, event)\n }\n />\n <span\n aria-hidden=\"true\"\n className=\"radio-control-proxy mt-1 peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-focus-ring\"\n />\n <span className=\"min-w-0 flex-1 mt-[4px]\">\n {option.label}\n </span>\n </label>\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div\n ref={containerRef}\n id={id}\n role=\"dialog\"\n aria-label={accessibleName ?? \"Filtros da tabela\"}\n className=\"bg-surface-card rounded shadow-sm p-2 font-normal w-[calc(100vw-16px)] max-w-[320px] overflow-y-auto\"\n >\n {optionList &&\n optionList.map((option, index) => (\n <label\n key={index}\n className={cs(\n \"min-h-10 flex items-start gap-2 px-3 py-1 cursor-pointer rounded\",\n optionChecked === option.value\n ? \"bg-primary-5 text-primary-1\"\n : \"text-content-primary\",\n )}\n >\n <input\n type=\"radio\"\n className=\"peer sr-only\"\n value={option.value}\n checked={optionChecked === option.value}\n name={`table-filter-${groupName ?? \"default\"}`}\n onChange={handleChangeCheckbox}\n />\n <span\n aria-hidden=\"true\"\n className=\"radio-control-proxy mt-1 peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-focus-ring\"\n />\n <span className=\"min-w-0 flex-1\">\n {option.label}\n </span>\n </label>\n ))}\n </div>\n );\n}\n\nexport default FilterView;\n","import FilterView from \"./FilterView\";\n\nexport interface IFilterOption {\n label: string;\n value: string;\n}\n\nexport interface IFilterControl {\n id: string;\n label?: string;\n type: \"options\" | \"sort\" | \"search\";\n optionList?: IFilterOption[];\n value?: string;\n placeholder?: string;\n}\n\nexport interface IFilterProps {\n /** Stable id used to associate the popup with its trigger. */\n id?: string;\n /** Accessible name for the filter popup. */\n accessibleName?: string;\n /** Unique radio group prefix when multiple filters are rendered together. */\n groupName?: string;\n optionList?: IFilterOption[];\n optionChecked?: string;\n onChange?: (value: string) => void;\n controls?: IFilterControl[];\n onControlChange?: (control: IFilterControl, value: string) => void;\n maxHeight?: number;\n}\n\nfunction Filter(props: IFilterProps) {\n const {\n optionList,\n optionChecked,\n onChange,\n controls,\n onControlChange,\n maxHeight,\n } = props;\n\n return (\n <FilterView\n optionList={optionList}\n id={props.id}\n accessibleName={props.accessibleName}\n groupName={props.groupName}\n optionChecked={optionChecked}\n onChange={onChange}\n controls={controls}\n onControlChange={onControlChange}\n maxHeight={maxHeight}\n />\n );\n}\n\nexport default Filter;\n","function NotFoundView() {\n return (\n <div className=\"flex-1 flex flex-col items-center justify-center my-14 tablet:my-20\">\n {/* <Image\n alt='Mulher ilustrada debruçada sobre um campo de pesquisa'\n src='/images/vector-no-results-found.svg'\n priority\n width={347}\n height={253}\n /> */}\n <p className=\"mt-6 text-center text-base font-bold text-content-secondary\">\n Nenhum resultado encontrado.\n </p>\n </div>\n );\n}\n\nexport default NotFoundView;\n","\"use client\";\n\nimport { ReactNode, useEffect, useId, useMemo, useState } from \"react\";\nimport { MdKeyboardArrowLeft, MdKeyboardArrowRight } from \"react-icons/md\";\n\nexport interface IMobileCardTableHeader {\n label: string;\n className?: string;\n}\n\nexport interface IMobileCardTableExpandableConfig<TData> {\n getRowId: (item: TData, index: number) => string | number;\n expandedRowId: string | number | null;\n onToggleRow: (rowId: string | number, item: TData, index: number) => void;\n renderExpandedRow: (item: TData, index: number) => ReactNode;\n expandedContentClassName?: string;\n rowClassName?: (item: TData, isExpanded: boolean) => string | undefined;\n}\n\nexport interface MobileCardTableProps<TData> {\n headers: IMobileCardTableHeader[];\n accessibleName?: string;\n data: TData[] | null | undefined | false;\n renderCard: (item: TData, index: number) => ReactNode;\n keyExtractor: (item: TData, index: number) => string;\n itemsPerPage?: number;\n emptyMessage?: string;\n wrapperClassName?: string;\n headerClassName?: string;\n emptyClassName?: string;\n showPagination?: boolean;\n expandable?: IMobileCardTableExpandableConfig<TData>;\n}\n\nfunction MobileCardTable<TData>({\n headers,\n accessibleName,\n data,\n renderCard,\n keyExtractor,\n itemsPerPage = 10,\n emptyMessage = \"Nenhum item encontrado.\",\n wrapperClassName = \"\",\n headerClassName = \"\",\n emptyClassName = \"\",\n showPagination = true,\n expandable,\n}: MobileCardTableProps<TData>) {\n const listId = useId();\n const [currentPage, setCurrentPage] = useState(1);\n const [visibleExpandedRowId, setVisibleExpandedRowId] = useState<string | null>(\n () =>\n expandable?.expandedRowId !== null &&\n expandable?.expandedRowId !== undefined\n ? String(expandable.expandedRowId)\n : null,\n );\n const [closingExpandedRowId, setClosingExpandedRowId] = useState<string | null>(\n null,\n );\n\n const normalizedData = useMemo(\n () => (Array.isArray(data) ? data : []),\n [data],\n );\n const safeItemsPerPage = Number.isFinite(itemsPerPage)\n ? Math.max(1, Math.floor(itemsPerPage))\n : 10;\n\n const pagination = useMemo(() => {\n const totalItems = normalizedData.length;\n const totalPages = Math.max(1, Math.ceil(totalItems / safeItemsPerPage));\n const safeCurrentPage = Math.min(currentPage, totalPages);\n const startIndex = (safeCurrentPage - 1) * safeItemsPerPage;\n const endIndex = startIndex + safeItemsPerPage;\n\n return {\n currentPage: safeCurrentPage,\n totalPages,\n totalItems,\n startItem: totalItems === 0 ? 0 : startIndex + 1,\n endItem: Math.min(endIndex, totalItems),\n pageData: normalizedData.slice(startIndex, endIndex),\n };\n }, [currentPage, normalizedData, safeItemsPerPage]);\n\n useEffect(() => {\n setCurrentPage(1);\n }, [normalizedData]);\n\n useEffect(() => {\n if (!expandable) {\n setVisibleExpandedRowId(null);\n setClosingExpandedRowId(null);\n return;\n }\n\n const nextExpandedRowId =\n expandable.expandedRowId !== null &&\n expandable.expandedRowId !== undefined\n ? String(expandable.expandedRowId)\n : null;\n\n if (nextExpandedRowId) {\n setVisibleExpandedRowId(nextExpandedRowId);\n setClosingExpandedRowId(null);\n return;\n }\n\n if (!visibleExpandedRowId) {\n return;\n }\n\n setClosingExpandedRowId(visibleExpandedRowId);\n const timeoutId = window.setTimeout(() => {\n setVisibleExpandedRowId(null);\n setClosingExpandedRowId(null);\n }, 220);\n\n return () => window.clearTimeout(timeoutId);\n }, [expandable, visibleExpandedRowId]);\n\n return (\n <>\n <div\n role=\"region\"\n aria-label={\n accessibleName ??\n `Lista: ${headers.map((header) => header.label).join(\", \")}`\n }\n className={`overflow-hidden rounded-sm border border-border-default bg-surface-card ${wrapperClassName}`.trim()}\n >\n <div\n className={`border-b border-border-default bg-surface-card px-3 py-2 text-left text-xs font-bold tracking-wider text-content-secondary ${headerClassName}`.trim()}\n >\n {headers.map((header) => (\n <span key={header.label} className={header.className}>\n {header.label}\n </span>\n ))}\n </div>\n\n {pagination.totalItems > 0 ? (\n <div role=\"list\" aria-label=\"Itens da lista\">\n {pagination.pageData.map((item, index) => (\n (() => {\n const rowId = expandable?.getRowId(item, index);\n const normalizedRowId =\n rowId !== undefined ? String(rowId) : undefined;\n const isExpanded =\n normalizedRowId !== undefined &&\n expandable?.expandedRowId !== null &&\n expandable?.expandedRowId !== undefined &&\n String(expandable.expandedRowId) === normalizedRowId;\n const isVisibleExpandedRow =\n normalizedRowId !== undefined &&\n visibleExpandedRowId === normalizedRowId;\n const isClosingExpandedRow =\n normalizedRowId !== undefined &&\n closingExpandedRowId === normalizedRowId;\n const itemNumber = pagination.startItem + index;\n const cardContentId = `${listId}-item-${itemNumber}-content`;\n const expandedContentId = `${listId}-item-${itemNumber}-details-content`;\n\n return (\n <div\n key={keyExtractor(item, index)}\n role=\"listitem\"\n tabIndex={0}\n aria-label={`Item ${itemNumber} de ${pagination.totalItems}`}\n aria-describedby={cardContentId}\n className=\"focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-focus-ring\"\n >\n <div\n id={cardContentId}\n className={expandable?.rowClassName?.(item, Boolean(isExpanded))}\n >\n {renderCard(item, index)}\n </div>\n {expandable && isVisibleExpandedRow && (\n <div\n className={\n expandable.expandedContentClassName ??\n \"border-b border-border-default bg-surface-card px-3 py-4\"\n }\n >\n <div\n role=\"region\"\n tabIndex={isExpanded && !isClosingExpandedRow ? 0 : -1}\n aria-label={`Detalhes do item ${itemNumber}`}\n aria-describedby={expandedContentId}\n aria-hidden={\n !isExpanded || isClosingExpandedRow || undefined\n }\n className={`overflow-hidden transition-all duration-200 ease-out motion-reduce:transition-none ${\n isExpanded && !isClosingExpandedRow\n ? \"max-h-[1200px] opacity-100\"\n : \"max-h-0 opacity-0\"\n }`}\n >\n <div id={expandedContentId}>\n {expandable.renderExpandedRow(item, index)}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n })()\n ))}\n </div>\n ) : (\n <div\n role=\"status\"\n className={`px-3 py-4 text-center text-md text-content-secondary ${emptyClassName}`.trim()}\n >\n {emptyMessage}\n </div>\n )}\n </div>\n\n {showPagination && pagination.totalItems > safeItemsPerPage && (\n <div className=\"mt-4 flex flex-col items-center justify-center gap-3 text-center\">\n <p\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"text-sm text-content-primary\"\n >\n Visualizando de {pagination.startItem} até {pagination.endItem} de{\" \"}\n {pagination.totalItems} resultados\n </p>\n\n <div className=\"flex items-center justify-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setCurrentPage((prev) => Math.max(prev - 1, 1))}\n disabled={pagination.currentPage === 1}\n aria-label=\"Ir para a página anterior\"\n className=\"inline-flex h-7 items-center justify-center gap-1 rounded border border-border-default px-3 text-sm leading-none text-content-primary hover:border-border-strong disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <MdKeyboardArrowLeft className=\"h-3 w-3 text-content-muted\" />\n Anterior\n </button>\n\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"inline-flex h-7 min-w-7 items-center justify-center rounded border border-selection-border bg-selection-background px-2 text-sm font-bold leading-none text-selection-content\"\n >\n {pagination.currentPage}\n </div>\n\n <button\n type=\"button\"\n onClick={() =>\n setCurrentPage((prev) =>\n Math.min(prev + 1, pagination.totalPages),\n )\n }\n disabled={pagination.currentPage === pagination.totalPages}\n aria-label=\"Ir para a próxima página\"\n className=\"inline-flex h-7 items-center justify-center gap-1 rounded border border-border-default px-3 text-sm leading-none text-content-primary hover:border-border-strong disabled:cursor-not-allowed disabled:opacity-50\"\n >\n Próximo\n <MdKeyboardArrowRight className=\"h-3 w-3 text-content-muted\" />\n </button>\n </div>\n </div>\n )}\n </>\n );\n}\n\nexport default MobileCardTable;\n","\"use client\";\n\nimport { useEffect, useMemo, useState, type RefObject } from \"react\";\n\nexport type ContainerBreakpointMap = Record<string, number>;\nexport type ContainerBreakpoint = string | undefined;\n\nexport interface UseContainerBreakpointOptions {\n breakpoints?: ContainerBreakpointMap;\n}\n\nexport const defaultContainerBreakpoints: ContainerBreakpointMap = {\n mobile: 0,\n tablet: 640,\n desktop: 1024,\n wide: 1440,\n};\n\nexport function resolveContainerBreakpoint(\n width: number,\n breakpoints: ContainerBreakpointMap = defaultContainerBreakpoints,\n): ContainerBreakpoint {\n const entries = Object.entries(breakpoints).sort(([, first], [, second]) =>\n first === second ? 0 : first - second,\n );\n\n return entries.reduce<string | undefined>(\n (result, [name, threshold]) =>\n width >= threshold ? name : result,\n undefined,\n );\n}\n\nfunction getBreakpointMapKey(breakpoints: ContainerBreakpointMap) {\n return Object.entries(breakpoints)\n .sort(([first], [second]) => first.localeCompare(second))\n .map(([name, threshold]) => `${name}:${threshold}`)\n .join(\"|\");\n}\n\nexport function useContainerBreakpoint<TElement extends HTMLElement = HTMLElement>(\n ref: RefObject<TElement | null>,\n options: UseContainerBreakpointOptions = {},\n): ContainerBreakpoint {\n const thresholds = options.breakpoints ?? defaultContainerBreakpoints;\n const thresholdsKey = getBreakpointMapKey(thresholds);\n const sortedThresholds = useMemo(\n () =>\n Object.entries(thresholds).sort(([, first], [, second]) =>\n first === second ? 0 : first - second,\n ),\n [thresholdsKey],\n );\n const [current, setCurrent] = useState<ContainerBreakpoint>();\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n const resolve = (width: number) =>\n sortedThresholds.reduce<string | undefined>(\n (result, [name, threshold]) =>\n width >= threshold ? name : result,\n undefined,\n );\n const update = () =>\n setCurrent(resolve(element.getBoundingClientRect().width));\n\n if (typeof ResizeObserver === \"undefined\") {\n update();\n return undefined;\n }\n const observer = new ResizeObserver(update);\n observer.observe(element);\n update();\n return () => observer.disconnect();\n }, [ref, sortedThresholds]);\n\n return current;\n}\n"],"mappings":";;;;;AACA,SAAS,WAAyB;AAiD9B,SAQe,KARf;AA/CJ,IAAM,eAAe,IAAI,kCAAkC;AAAA,EACzD,UAAU;AAAA,IACR,OAAO;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,MACT,eAAe;AAAA,MACf,eAAe;AAAA,IACjB;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO;AAAA,IACT;AAAA,EACF;AACF,CAAC;AAkBD,IAAM,cAA0C,CAAC;AAAA,EAC/C,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,MAAM;AACJ,QAAM,kBAAkB,aAAa,sBAAsB;AAE3D,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW,8CAA8C,gBAAgB,iCAAiC,EAAE,GAAG,YAAY,IAAI,SAAS,KAAK,EAAE;AAAA,MAC/I,MAAM,WAAW,WAAW;AAAA,MAC5B,aAAW,WAAW,WAAW;AAAA,MACjC,eAAa,YAAY;AAAA,MACzB,eAAa,CAAC,YAAY;AAAA,MAEzB;AAAA,oBAAY,oBAAC,UAAK,WAAU,WAAW,2BAAgB;AAAA,QACxD;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,8CAA8C,aAAa;AAAA,cACpE;AAAA,YACF,CAAC,CAAC;AAAA;AAAA,QACH;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,gDAAgD;AAAA,cACzD,EAAE,MAAM;AAAA,YACV,CAAC;AAAA;AAAA,QACF;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,gDAAgD;AAAA,cACzD,EAAE,MAAM;AAAA,YACV,CAAC;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,0BAAQ;;;AC9Ed,OAAO,WAAW;AAmHf,mBAeM,OAAAA,MAdJ,QAAAC,aADF;AAlGJ,SAAS,eAAe,MAA+B;AACrD,MAAI,OAAO,SAAS,YAAY,OAAO,SAAS,UAAU;AACxD,WAAO,OAAO,IAAI;AAAA,EACpB;AAEA,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,IAAI,cAAc,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAC1D;AAEA,MAAI,MAAM,eAA+C,IAAI,GAAG;AAC9D,WAAO,eAAe,KAAK,MAAM,QAAQ;AAAA,EAC3C;AAEA,SAAO;AACT;AAEA,IAAM,iBAAiB;AAAA,EACrB,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AAAA,IACV,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,WACP,OACA,SACA,UACA;AACA,QAAM,gBACJ,eAAe,YAAY,SAAY,SAAS,OAAO;AACzD,SAAO,WACH,cAAc,WACd,cAAc,QAAQ,UAAU,SAAY,YAAY,KAAK;AACnE;AAEA,SAAS,QAAQ,MAA2B;AAC1C,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,IAAM,eAAkE;AAAA,EACtE,MAAM;AAAA,EACN,MAAM;AACR;AAEA,IAAM,SAAgC,CAAC;AAAA,EACrC,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,aACJ,KAAK,YAAY,KAAK,eAAe,QAAQ,EAAE,QAAQ,QAAQ,GAAG,EAAE,KAAK;AAC3E,QAAM,sBACJ,iBACC,aAAa,eAAe,UAAU,KAAK;AAE9C,SACE,gBAAAA,MAAA,YACE;AAAA,oBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA;AAAA;AAAA,YAGP,WAAW,OAAO,SAAS,QAAQ,CAAC;AAAA,YACpC,SAAS;AAAA,YACT,QAAQ,IAAI,CAAC;AAAA,YACb,aAAa,KAAK,CAAC;AAAA;AAAA,QAEvB,UAAU,YAAY;AAAA,QACtB,aAAW,WAAW;AAAA,QACrB,GAAG;AAAA,QAEH;AAAA,sBAAY,CAAC,WACZ,gBAAAD,KAAC,YAAS,eAAY,QAAO,WAAU,SAAQ,WAAU,WAAU;AAAA,UAEpE,WACC,gBAAAA,KAAC,UAAK,eAAY,QAChB,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,OACE,YAAY,SACR,QACA,UAAU,YACR,kBACA,UAAU,YACR,kBACA;AAAA,cAEV,UAAU;AAAA;AAAA,UACZ,GACF;AAAA,UAED,WAAW,gBAAAA,KAAC,UAAK,WAAU,WAAW,wBAAc,cAAO;AAAA,UAC3D,CAAC,WAAW;AAAA,UACZ,WAAW,CAAC,WACX,gBAAAA,KAAC,WAAQ,eAAY,QAAO,WAAU,SAAQ,WAAU,WAAU;AAAA;AAAA;AAAA,IAEtE;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QACL,aAAU;AAAA,QACV,eAAY;AAAA,QAEX,oBAAU,sBAAsB;AAAA;AAAA,IACnC;AAAA,KACF;AAEJ;AAEA,IAAO,iBAAQ;;;ACrKf,SAAS,OAAAE,YAA8B;AAuGnC,gBAAAC,YAAA;AArGJ,IAAM,eAAeD,KAAI,eAAe;AAAA,EACtC,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF,CAAC;AAUD,IAAM,uBAOF;AAAA,EACF,cAAc,EAAE,MAAM,OAAO,QAAQ,aAAa,SAAS,UAAU;AAAA,EACrE,iBAAiB,EAAE,MAAM,MAAM,QAAQ,aAAa,SAAS,UAAU;AAAA,EACvE,MAAM,EAAE,MAAM,MAAM,QAAQ,UAAU,SAAS,UAAU;AAAA,EACzD,OAAO,EAAE,MAAM,MAAM,QAAQ,UAAU,SAAS,UAAU;AAAA,EAC1D,SAAS,EAAE,MAAM,MAAM,QAAQ,UAAU,SAAS,YAAY;AAAA,EAC9D,QAAQ,EAAE,MAAM,MAAM,QAAQ,UAAU,SAAS,WAAW;AAC9D;AAwBO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,QAAM,YAAY;AAClB,QAAM,mBAAmB,eACrB,qBAAqB,YAAY,IACjC;AAEJ,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,aAAa;AAAA,QACtB,SAAS,WAAW,kBAAkB;AAAA,QACtC,MAAM,QAAQ,kBAAkB;AAAA,QAChC,QAAQ,UAAU,kBAAkB;AAAA,QACpC;AAAA,MACF,CAAC;AAAA,MACA,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,qBAAQ;;;ACrHf,OAAO,gBAAgB;AA2BjB,gBAAAC,MACa,QAAAC,aADb;AAzBN,IAAM,gBAAgB;AAAA,EACpB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AACT;AASA,IAAM,UAAkC,CAAC;AAAA,EACvC;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,MAAM;AACJ,QAAM,aAAa,cAAc,OAAO;AACxC,QAAM,WAAW,WAAW,WAAW,UAAU,SAAS,QAAQ,UAAU;AAE5E,SACE,gBAAAA,MAAC,SAAI,WAAW,WAAW,OAAO,kCAAkC,GAClE;AAAA,oBAAAD,KAAC,SAAI,WAAW,UAAU;AAAA,IACzB,YAAY,gBAAAC,MAAC,SAAI,WAAU,QAAQ;AAAA;AAAA,MAAS;AAAA,OAAC;AAAA,IAC9C,gBAAAD,KAAC,SAAI,WAAW,UAAU;AAAA,KAC5B;AAEJ;AAEA,IAAO,kBAAQ;;;ACnCd,OAAOE,iBAAgB;AA8DpB,gBAAAC,YAAA;AA3CJ,IAAM,mBAGF;AAAA,EACF,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,iBAAuE;AAAA,EAC3E,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AACX;AAEA,IAAM,gBAAqE;AAAA,EACzE,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,cAAiE;AAAA,EACrE,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AACf;AAEe,SAAR,QAAyB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,GAAG;AACL,GAAiB;AACf,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAWD;AAAA,QACT;AAAA,QACA,iBAAiB,SAAS;AAAA,QAC1B,eAAe,OAAO;AAAA,QACtB,cAAc,MAAM;AAAA,QACpB,YAAY,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;AClEI,gBAAAE,YAAA;AAHJ,SAAS,cAAc,OAAuB;AAC5C,QAAM,EAAE,UAAU,WAAW,GAAG,KAAK,IAAI;AACzC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,SAAS,aAAa,EAAE;AAAA,MAClC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,wBAAQ;;;ACnBd,OAAOC,iBAAgB;AAGxB,SAAS,SAAS,qBAAqB;AAyE3B,gBAAAC,MAkBJ,QAAAC,aAlBI;AArDZ,IAAM,cAAc;AAAA,EAClB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAEA,IAAM,oBAAoB;AAAA,EACxB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAEA,IAAM,sBAAsB;AAAA,EAC1B,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAEA,IAAM,aAAiC,CAAC;AAAA,EACtC,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,GAAG;AACL,MAAM;AACJ,QAAM,UAAUF,YAAW,YAAY,IAAI,GAAG;AAAA,IAC5C,cAAc;AAAA,EAChB,CAAC;AAED,SACE,gBAAAC,KAAC,SAAI,WAAW,SAAU,GAAG,MAC3B,0BAAAC,MAAC,SAAI,WAAW,kBAAkB,SAAS,IACxC;AAAA,YACC,gBAAAD,KAAC,SAAI,WAAU,cACb,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,eAAY;AAAA,QACZ,WAAU;AAAA,QACV,WAAW,WAAW,kBAAkB,IAAI,CAAC;AAAA;AAAA,IAC/C,GACF;AAAA,IAGF,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WACE,cAAc,UACV,kBAAkB,IAAI,IACtB,oBAAoB,IAAI;AAAA,QAG7B;AAAA;AAAA,IACH;AAAA,IAEA,gBAAAC,MAAC,SAAI,WAAU,sBACZ;AAAA,uBACC,gBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAW;AAAA,UACX,WAAW,yKAAyK,kBAAkB,IAAI,CAAC;AAAA,UAC3M,SAAS;AAAA,UAET,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,eAAY;AAAA,cACZ,WAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA,MACF;AAAA,MAED,aACC,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAW;AAAA,UACX,WAAW,yKAAyK,kBAAkB,IAAI,CAAC;AAAA,UAC3M,SAAS;AAAA,UAET,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,eAAY;AAAA,cACZ,WAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA,MACF;AAAA,OAEJ;AAAA,KACF,GACF;AAEJ;AAEA,IAAO,qBAAQ;;;AC9Hf,OAAOE,iBAAgB;AACvB,SAAoB,WAAW,OAAO,cAAc;AACpD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAqEG,SAEI,OAAAC,MAFJ,QAAAC,aAAA;AAjDV,IAAM,QAAQ;AAAA,EACZ,OAAO;AAAA,EACP,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AACf;AAEe,SAAR,UAA2B;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AAAA,EACV,eAAe;AAAA,EACf,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACjB,QAAM,UAAU,MAAM;AACtB,QAAM,WAAW,OAAoB,IAAI;AACzC,QAAM,OAAO,MAAM,OAAO;AAC1B,QAAM,WAAW,iBAAiB,IAAI,OAAO;AAE7C,YAAU,MAAM;AACd,QAAI,cAAc;AAChB,eAAS,SAAS,MAAM;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,YAAY,CAAC;AAEjB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,MAAM,YAAY,UAAU,UAAU;AAAA,MACtC,mBAAiB;AAAA,MACjB,UAAU,eAAe,KAAK;AAAA,MAC9B,WAAWF;AAAA,QACT;AAAA,QACA,UACI,iBACA;AAAA,QACJ;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAE,MAAC,SAAI,WAAU,qBACb;AAAA,0BAAAA,MAAC,SAAI,WAAU,aACb;AAAA,4BAAAA,MAAC,SAAI,WAAU,0BACZ;AAAA,eAAC,gBACA,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,WAAU;AAAA;AAAA,cACZ;AAAA,cAEF,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,IAAI;AAAA,kBACJ,WAAWD;AAAA,oBACT;AAAA,oBACA,UAAU,YAAY;AAAA,oBACtB;AAAA,kBACF;AAAA,kBAEC;AAAA;AAAA,cACH;AAAA,eACF;AAAA,YACC,eACC,gBAAAC,KAAC,SAAI,WAAU,gCAAgC,uBAAY;AAAA,aAE/D;AAAA,UAEC;AAAA,WAEC,WAAW,YACX,gBAAAC,MAAC,SAAI,WAAU,+DACZ;AAAA,uBACC,gBAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,UAAU;AAAA,gBACV,SAAS;AAAA,gBACT,WAAU;AAAA,gBAET;AAAA;AAAA,YACH;AAAA,YAED;AAAA,aACH;AAAA,WAEJ;AAAA,QAEC,gBACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;ACpIC,OAAOE,iBAAgB;;;ACCxB,SAAS,8BAA8B;AAM9B,gBAAAC,YAAA;AADT,IAAM,aAAa,MAAM;AACvB,SAAO,gBAAAA,KAAC,0BAAuB,WAAU,wBAAuB;AAClE;AAEA,IAAO,qBAAQ;;;ACDX,gBAAAC,aAAA;AAFJ,IAAM,cAAc,CAAC,EAAE,KAAK,eAAe,MAAwB;AACjE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,KAAK;AAAA,MACL,WAAU;AAAA;AAAA,EACZ;AAEJ;AAEA,IAAO,sBAAQ;;;AFwCX,gBAAAC,aAAA;AA7CJ,IAAM,gBAAgB;AAAA,EACpB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,SAAS,SAAS,MAAc;AAC9B,QAAM,OAAO;AACb,MAAI,CAAC,CAAC,MAAM;AACV,UAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,UAAM,gBAAgB,KAAK,OAAO,CAAC;AACnC,UAAM,sBAAsB,KAAK,YAAY,GAAG;AAChD,UAAM,0BAA0B,KAAK;AAAA,MACnC,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,IACxB;AAEA,QAAI,MAAM,SAAS,GAAG;AACpB,aAAO,IAAI,gBAAgB,yBAAyB,YAAY,CAAC;AAAA,IACnE,OAAO;AACL,aAAO,GAAG,cAAc,YAAY,CAAC;AAAA,IACvC;AAAA,EACF;AACF;AAEA,IAAM,SAAgC,CAAC;AAAA,EACrC,OAAO;AAAA,EACP,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,MAAM;AASJ,QAAM,kBAAkB,cAAc,IAAI;AAE1C,QAAM,kBAAkB,QACtB,gBAAAA,MAAC,uBAAY,KAAK,OAAO,gBAAgB,aAAa,IACpD,CAAC,CAAC,OACJ,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC,mBAAS,IAAI;AAAA;AAAA,EAChB,IAEA,gBAAAD,MAAC,sBAAW;AAGd,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,iBAAQ;;;AG9ER,SAAS,2BAA2B,QAA2B;AACpE,MAAI,OAAO,WAAW,UAAU;AAC9B,WAAO,EAAE,OAAO,QAAQ,MAAM,OAAU;AAAA,EAC1C;AAEA,SAAO;AACT;;;ACTA,OAAOC,iBAAgB;AAyCnB,qBAAAC,WACE,OAAAC,OADF,QAAAC,aAAA;AAhCJ,IAAM,0BAA0B;AAEhC,SAAS,YACP,QACA,WAAmB,yBACnB;AACA,MAAI,CAAC,YAAY,OAAO,WAAW,GAAG,KAAK,OAAO,SAAS,GAAG,GAAG;AAC/D,WAAO;AAAA,EACT;AAEA,SAAO,GAAG,SAAS,QAAQ,QAAQ,GAAG,CAAC,GAAG,OAAO,QAAQ,QAAQ,EAAE,CAAC;AACtE;AAEA,SAAS,YAAY,QAAgB;AACnC,SAAO,OAAO,MAAM,QAAQ,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,MAAM;AACjE;AAEe,SAAR,YAA6B;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,QAAM,UAAU,2BAA2B,MAAM;AACjD,QAAM,cAAc,YAAY,QAAQ,OAAO,QAAQ;AACvD,QAAM,aAAa,QAAQ,OACvB,YAAY,QAAQ,MAAM,QAAQ,IAClC;AAEJ,SACE,gBAAAA,MAAAF,WAAA,EACE;AAAA,oBAAAC;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,KAAK;AAAA,QACL;AAAA,QACA,0BAAuB;AAAA,QACvB,WAAWF;AAAA,UACT;AAAA,UACA,YAAY,WAAW,KAAK;AAAA,UAC5B;AAAA,UACA;AAAA,YACE,yBAAyB,QAAQ,UAAU;AAAA,UAC7C;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACC,cACC,gBAAAE;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,KAAK;AAAA,QACL;AAAA,QACA,0BAAuB;AAAA,QACvB,WAAWF;AAAA,UACT;AAAA,UACA,YAAY,UAAU,KAAK;AAAA,UAC3B;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KAEJ;AAEJ;;;ACxEA,SAAS,mBAAmB;AAaxB,gBAAAI,aAAA;AAXJ,IAAM,sBAAsB;AAAA,EAC1B,WAAW;AACb;AAOO,SAAS,aAAa,EAAE,SAAS,GAAsB;AAC5D,SACE,gBAAAA,MAAC,YAAY,UAAZ,EAAqB,OAAO,qBAC1B,UACH;AAEJ;;;AC0CM,SASI,OAAAC,OATJ,QAAAC,aAAA;AAtCN,IAAM,WAAW;AAAA,EACf,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AACX;AAEe,SAAR,gBAAiC;AAAA,EACtC,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,aAAa;AAAA,EACb;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,GAAG;AACL,GAAyB;AACvB,QAAM,aAAa,cAAc;AACjC,QAAM,YAAY,eAAe,WAAW,KAAK,IAAI,MAAM,GAAG,IAAI;AAClE,QAAM,iBACJ,eAAe,WAAW,KAAK,IAAI,WAAW,EAAE,IAAI;AACtD,QAAM,UAAU,YAAY,kBAAkB;AAC9C,QAAM,gBAAgB,IAAI,KAAK,KAAK;AACpC,QAAM,SAAS,YAAY;AAC3B,QAAM,sBAAsB,kBAAkB,SAAS,KAAK;AAE5D,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,WAAW,uEAAuE,aAAa,EAAE,GAAG,KAAK;AAAA,MACxG,GAAG;AAAA,MAEJ;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,SAAS,OAAO,SAAS,IAAI,SAAS;AAAA,YACtC,OAAM;AAAA,YACN,eAAY;AAAA,YAEX;AAAA,2BACC,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,IAAI,YAAY;AAAA,kBAChB,IAAI,YAAY;AAAA,kBAChB,GAAG;AAAA,kBACH,QAAQ;AAAA,kBACR,aAAa;AAAA,kBACb,MAAK;AAAA;AAAA,cACP;AAAA,cAEF,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,IAAI,YAAY;AAAA,kBAChB,IAAI,YAAY;AAAA,kBAChB,GAAG;AAAA,kBACH,QAAQ;AAAA,kBACR,aAAa;AAAA,kBACb,eAAc;AAAA,kBACd,MAAK;AAAA,kBACL,iBAAiB;AAAA,kBACjB,kBAAkB,gBAAgB;AAAA,kBAElC,0BAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,eAAc;AAAA,sBACd,MAAK;AAAA,sBACL,MAAM,KAAK,MAAM,IAAI,MAAM;AAAA,sBAC3B,IAAI,OAAO,MAAM,IAAI,MAAM;AAAA,sBAC3B,KAAI;AAAA,sBACJ,aAAY;AAAA;AAAA,kBACd;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA,QACC,WACC,gBAAAA,MAAC,OAAE,WAAU,0DACV,mBACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;AC/FI,SACE,OAAAE,OADF,QAAAC,aAAA;AAPW,SAAR,UAA2B;AAAA,EAChC;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,GAAG;AACL,GAAmB;AACjB,SACE,gBAAAA,MAAC,SAAI,WAAuB,GAAG,MAC7B;AAAA,oBAAAD,MAAC,sBAAW,MAAK,MAAK,WAAU,wBAC7B,iBACH;AAAA,IACA,gBAAAA,MAAC,sBAAW,MAAK,MAAK,WAAU,kDAC7B,kBAAQ,KACX;AAAA,KACF;AAEJ;;;ACxBC,SAAS,eAAe,sBAAsB;AAC/C,OAAOE,SAAQ;;;ACDd,OAAO,QAAQ;AAqBV,gBAAAC,aAAA;AAXN,SAAS,YAAY,OAAe;AAClC,QAAM,EAAE,aAAa,cAAc,SAAS,QAAQ,IAAI;AACxD,QAAM,QAAQ,eAAe,KAAK,KAAK,KAAK,eAAe,OAAO,IAAI;AACtE,MAAI,aAAc,QAAQ,cAAe,IAAI,IAAK,QAAQ;AAC1D,MAAI,cAAc,cAAc,IAAI,IAAI,gBAAgB,IAAI,IAAI;AAChE,MAAI,gBAA6B,CAAC;AAClC,MAAI,eAA4B,CAAC;AAEjC,WAAS,IAAI,GAAG,KAAK,aAAa,KAAK;AACrC,UAAM,OAAO,cAAc;AAC3B,oBAAgB;AAAA,MACd,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,MAAK;AAAA,UACL,cAAY,aAAU,IAAI;AAAA,UAC1B,WAAW;AAAA,YAAG;AAAA,YACZ;AAAA,YACA;AAAA,UAA+G;AAAA,UACjH,SAAS,MAAM,QAAQ,IAAI;AAAA,UAC1B;AAAA;AAAA,QAPI,QAAQ,IAAI;AAAA,MAQnB;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EACF;AAEA,WAAS,IAAI,GAAG,KAAK,YAAY,KAAK;AACpC,UAAM,OAAO,cAAc;AAC3B,iBAAa;AAAA,MACX,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,MAAK;AAAA,UACL,cAAY,aAAU,IAAI;AAAA,UAC1B,WAAW;AAAA,YAAG;AAAA,YACZ;AAAA,YACA;AAAA,UAA+G;AAAA,UACjH,SAAS,MAAM,QAAQ,IAAI;AAAA,UAC1B;AAAA;AAAA,QAPI,QAAQ,IAAI;AAAA,MAQnB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,MAAK;AAAA,QACH,cAAY,aAAU,WAAW;AAAA,QACnC,gBAAa;AAAA,QACb,UAAQ;AAAA,QACR,WAAW;AAAA,UAAG;AAAA,UACZ;AAAA,QAAuE;AAAA,QACxE;AAAA;AAAA,MAPI,QAAQ,WAAW;AAAA,IAQ1B;AAAA,IACA,GAAG;AAAA,EACL;AACF;AAEA,IAAO,sBAAQ;;;ADhDT,SAaM,OAAAC,OAbN,QAAAC,aAAA;AARN,SAAS,eAAe,OAAwB;AAC9C,QAAM,EAAE,aAAa,cAAc,SAAS,QAAQ,IAAI;AAExD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,cAAW;AAAA,MACX,WAAU;AAAA,MAEV;AAAA,wBAAAA,MAAC,UAAK,WAAU,gCAA+B;AAAA;AAAA,UAC3B,cAAc,WAAY,UAAU;AAAA,UAAI;AAAA,UAAI;AAAA,UACzD,eAAgB,cAAc,UAAW,cAAc,UAAU;AAAA,UAAc;AAAA,UAAI;AAAA,UACpF;AAAA,UAAa;AAAA,WACnB;AAAA,QACA,gBAAAA,MAAC,SAAI,WAAU,8BACZ;AAAA,wBAAc,KACb,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWC;AAAA,gBAAG;AAAA,gBACZ;AAAA,gBACA;AAAA,cAA8H;AAAA,cAChI,SAAS,MAAM,QAAQ,cAAc,CAAC;AAAA,cACtC;AAAA,gCAAAF,MAAC,iBAAc,MAAM,IAAI,eAAY,QAAO,WAAU,SAAQ;AAAA,gBAAE;AAAA;AAAA;AAAA,UAElE;AAAA,UAEF,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,UACF;AAAA,UACC,cAAc,KAAK,KAAM,eAAe,EAAG,KAC1C,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWC;AAAA,gBAAG;AAAA,gBACZ;AAAA,gBACA;AAAA,cAA8H;AAAA,cAChI,SAAS,MAAM,QAAQ,cAAc,CAAC;AAAA,cAAG;AAAA;AAAA,gBAEzC,gBAAAF,MAAC,kBAAe,MAAM,IAAI,eAAY,QAAO,WAAU,SAAQ;AAAA;AAAA;AAAA,UACjE;AAAA,WAEJ;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,yBAAQ;;;AE3BP,SAIE,OAAAG,OAJF,QAAAC,cAAA;AAnBD,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,GAAG;AACL,GAAkB;AAChB,MAAI,iBAAiB;AACrB,MAAI,WAAW,OAAO;AACpB,qBAAiB;AAAA,EACnB,WAAW,WAAW,UAAU;AAC9B,qBAAiB;AAAA,EACnB,OAAO;AACL,qBAAiB;AAAA,EACnB;AAEA,SACE,gBAAAD,MAAC,SAAI,WAAW,gBACb,kBAAQ,IAAI,CAAC,WACZ,gBAAAC;AAAA,IAAC;AAAA;AAAA,MAEC,WAAU;AAAA,MAEV;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,OAAO,OAAO;AAAA,YACd,SAAS,UAAU,OAAO;AAAA,YAC1B;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA,QACA,gBAAAA,MAAC,UAAK,WAAU,0BAA0B,iBAAO,OAAM;AAAA;AAAA;AAAA,IAXlD,OAAO;AAAA,EAYd,CACD,GACH;AAEJ;AAGO,IAAM,WAAW;;;ACjDxB;AAAA,EACE;AAAA,EACA,aAAAE;AAAA,EACA;AAAA,EACA,UAAAC;AAAA,EACA;AAAA,OACK;AAwOD,SAkDE,OAAAC,OAlDF,QAAAC,cAAA;AAxNN,IAAM,SAAgC,CAAC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,YAAY;AAC/D,QAAM,YAAYF,QAAuB,IAAI;AAC7C,QAAM,WAAWA,QAAuB,IAAI;AAC5C,QAAM,aAAaA,QAAuB,IAAI;AAC9C,QAAM,cAAcA,QAAuB,IAAI;AAC/C,QAAM,WAAWA,QAAqC,CAAC,CAAC;AACxD,QAAM,WAAWA,QAAsC,CAAC,CAAC;AACzD,QAAM,gBAAgBA,QAAO,KAAK;AAClC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,CAAC;AAEpD,QAAM,eAAe,UAAU,SAAY,QAAQ;AAEnD,EAAAD,WAAU,MAAM;AACd,QAAI,UAAU,QAAW;AACvB,uBAAiB,YAAY;AAAA,IAC/B;AAAA,EACF,GAAG,CAAC,cAAc,KAAK,CAAC;AAExB,QAAM,cAAc,CAAC,QAAgB;AACnC,UAAM,YAAY,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC;AAC1D,WAAO,YAAY,KAAK,MAAM,MAAM,IAAI,IAAI,MAAM,QAAQ,SAAS,CAAC;AAAA,EACtE;AAEA,QAAM,0BAA0B,CAAC,YAAoB;AACnD,QAAI,CAAC,UAAU,QAAS,QAAO;AAC/B,UAAM,aAAa,UAAU,QAAQ,sBAAsB;AAC3D,UAAM,UAAU,KAAK;AAAA,MACnB,KAAK,IAAI,UAAU,WAAW,MAAM,CAAC;AAAA,MACrC,WAAW;AAAA,IACb;AACA,UAAM,WAAW,OAAQ,MAAM,OAAO,UAAW,WAAW;AAC5D,WAAO,YAAY,QAAQ;AAAA,EAC7B;AAGA,QAAM,kBAAkB,CAAC,UAAsB;AAC7C,QAAI,YAAY,CAAC,cAAc,QAAS;AACxC,UAAM,eAAe,wBAAwB,MAAM,OAAO;AAC1D,QAAI,iBAAiB,OAAW;AAEhC,QAAI,UAAU,OAAW,kBAAiB,YAAY;AACtD,QAAI,SAAU,UAAS,YAAY;AAAA,EACrC;AAEA,QAAM,gBAAgB,CAAC,UAAsB;AAC3C,aAAS,oBAAoB,aAAa,eAAe;AACzD,aAAS,oBAAoB,WAAW,aAAa;AAErD,QAAI,cAAc,SAAS;AACzB,YAAM,aAAa,wBAAwB,MAAM,OAAO;AACxD,UAAI,eAAe,QAAW;AAC5B,YAAI,UAAU,OAAW,kBAAiB,UAAU;AACpD,YAAI,SAAU,UAAS,UAAU;AACjC,YAAI,WAAY,YAAW,UAAU;AAAA,MACvC,OAAO;AACL,YAAI,WAAY,YAAW,YAAY;AAAA,MACzC;AAAA,IACF;AAEA,kBAAc,UAAU;AAAA,EAC1B;AAEA,QAAM,kBAAkB,CAAC,UAA4C;AACnE,QAAI,YAAY,CAAC,UAAU,QAAS;AACpC,kBAAc,UAAU;AAExB,UAAM,eAAe,wBAAwB,MAAM,OAAO;AAC1D,QAAI,iBAAiB,QAAW;AAC9B,UAAI,UAAU,OAAW,kBAAiB,YAAY;AACtD,UAAI,SAAU,UAAS,YAAY;AAAA,IACrC;AAEA,aAAS,iBAAiB,aAAa,eAAe;AACtD,aAAS,iBAAiB,WAAW,aAAa;AAAA,EACpD;AAGA,QAAM,kBAAkB,CAAC,UAAsB;AAC7C,QAAI,YAAY,CAAC,cAAc,QAAS;AACxC,UAAM,QAAQ,MAAM,QAAQ,CAAC;AAC7B,UAAM,eAAe,wBAAwB,MAAM,OAAO;AAC1D,QAAI,iBAAiB,OAAW;AAEhC,QAAI,UAAU,OAAW,kBAAiB,YAAY;AACtD,QAAI,SAAU,UAAS,YAAY;AAAA,EACrC;AAEA,QAAM,iBAAiB,CAAC,UAAsB;AAC5C,aAAS,oBAAoB,aAAa,eAAe;AACzD,aAAS,oBAAoB,YAAY,cAAc;AAEvD,QAAI,cAAc,SAAS;AACzB,YAAM,QAAQ,MAAM,eAAe,CAAC;AACpC,YAAM,aAAa,wBAAwB,MAAM,OAAO;AAExD,UAAI,eAAe,QAAW;AAC5B,YAAI,UAAU,OAAW,kBAAiB,UAAU;AACpD,YAAI,SAAU,UAAS,UAAU;AACjC,YAAI,WAAY,YAAW,UAAU;AAAA,MACvC,OAAO;AACL,YAAI,WAAY,YAAW,YAAY;AAAA,MACzC;AAAA,IACF;AAEA,kBAAc,UAAU;AAAA,EAC1B;AAEA,QAAM,mBAAmB,CAAC,UAA4C;AACpE,QAAI,YAAY,CAAC,UAAU,QAAS;AACpC,kBAAc,UAAU;AAExB,UAAM,QAAQ,MAAM,QAAQ,CAAC;AAC7B,UAAM,eAAe,wBAAwB,MAAM,OAAO;AAC1D,QAAI,iBAAiB,QAAW;AAC9B,UAAI,UAAU,OAAW,kBAAiB,YAAY;AACtD,UAAI,SAAU,UAAS,YAAY;AAAA,IACrC;AAEA,aAAS,iBAAiB,aAAa,eAAe;AACtD,aAAS,iBAAiB,YAAY,cAAc;AAAA,EACtD;AAGA,QAAM,sBAAsB,YAAY,MAAM;AAC5C,QAAI,SAAS,WAAW,UAAU,WAAW,YAAY,SAAS;AAChE,YAAM,aAAa,UAAU,QAAQ,sBAAsB;AAC3D,UAAI,OAAO,OAAO,WAAW,SAAS,GAAG;AACvC,iBAAS,QAAQ,MAAM,OAAO;AAC9B,oBAAY,QAAQ,MAAM,QAAQ;AAClC,yBAAiB,CAAC;AAClB;AAAA,MACF;AACA,YAAM,eAAe,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,YAAY,CAAC;AAC9D,YAAM,QAAS,eAAe,QAAQ,MAAM,OAAQ,WAAW;AAC/D,YAAM,eACJ,WAAW,SAAS,sBAAsB,EAAE,SAAS;AACvD,YAAM,mBAAmB,eAAe;AACxC,YAAM,iBAAiB,SAAS,QAAQ,sBAAsB,EAAE,QAAQ;AACxE,YAAM,uBAAuB,KAAK;AAAA,QAChC,KAAK,IAAI,MAAM,mBAAmB,cAAc;AAAA,QAChD,WAAW,SAAS,mBAAmB;AAAA,MACzC;AAEA,eAAS,QAAQ,MAAM,OAAO,GAAG,IAAI;AACrC,kBAAY,QAAQ,MAAM,QAAQ,GAAG,IAAI;AACzC,uBAAiB,uBAAuB,IAAI;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,cAAc,KAAK,GAAG,CAAC;AAE3B,EAAAA,WAAU,MAAM;AACd,wBAAoB;AAEpB,QAAI,OAAO,mBAAmB,aAAa;AACzC,aAAO,iBAAiB,UAAU,mBAAmB;AACrD,aAAO,MAAM,OAAO,oBAAoB,UAAU,mBAAmB;AAAA,IACvE;AAEA,UAAM,iBAAiB,IAAI,eAAe,mBAAmB;AAC7D,QAAI,UAAU,QAAS,gBAAe,QAAQ,UAAU,OAAO;AAC/D,WAAO,MAAM,eAAe,WAAW;AAAA,EACzC,GAAG,CAAC,cAAc,KAAK,KAAK,mBAAmB,CAAC;AAEhD,QAAM,iBAAiB;AAAA,IACrB,MAAO,SAAS,MAAM,SAAS,IAAI,QAAQ,CAAC,KAAK,GAAG;AAAA,IACpD,CAAC,OAAO,KAAK,GAAG;AAAA,EAClB;AAEA,QAAM,QAAQ,QAAQ,MAAM;AAC1B,QAAI,OAAO,OAAO,QAAQ,EAAG,QAAO,CAAC,GAAG;AAExC,UAAM,WAAW;AACjB,UAAM,YAAY,MAAM,OAAO,KAAK,IAAI,WAAW,MAAM,OAAO,IAAI;AACpE,UAAM,kBAA4B,CAAC;AAEnC,aAAS,OAAO,KAAK,QAAQ,KAAK,QAAQ,UAAU;AAClD,sBAAgB,KAAK,IAAI;AAAA,IAC3B;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC;AAEnB,EAAAA,WAAU,MAAM;AACd,UAAM,QAAQ,CAAC,MAAM,QAAQ;AAC3B,YAAM,UAAU,SAAS,QAAQ,GAAG;AACpC,UAAI,CAAC,QAAS;AAEd,YAAM,WAAY,OAAO,QAAQ,MAAM,OAAQ;AAC/C,YAAM,SAAS,eAAe,SAAS,KAAK,MAAM,OAAO,GAAG,IAAI,GAAG;AACnE,cAAQ,MAAM,OAAO,GAAG,OAAO;AAC/B,cAAQ,MAAM,SAAS,GAAG,SAAS,KAAK,CAAC;AAAA,IAC3C,CAAC;AAED,mBAAe,QAAQ,CAAC,MAAM,QAAQ;AACpC,YAAM,UAAU,SAAS,QAAQ,GAAG;AACpC,UAAI,CAAC,QAAS;AAEd,YAAM,WAAY,OAAO,QAAQ,MAAM,OAAQ;AAC/C,cAAQ,MAAM,OAAO,GAAG,OAAO;AAAA,IACjC,CAAC;AAAA,EACH,GAAG,CAAC,gBAAgB,KAAK,KAAK,KAAK,CAAC;AAEpC,SACE,gBAAAG,OAAC,SAAI,WAAU,8BACb;AAAA,oBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,mBACT,WAAW,uBAAuB,gBACpC;AAAA,QACA,KAAK;AAAA,QACL,aAAa;AAAA,QACb,cAAc;AAAA,QACd,UAAU,WAAW,KAAK;AAAA,QAC1B,WAAW,CAAC,UAAU;AACpB,cAAI,SAAU;AAEd,gBAAM,WAAW,CAAC,QAAgB;AAChC,kBAAM,UAAU,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,YAAY,GAAG,CAAC,CAAC;AAC7D,gBAAI,UAAU,OAAW,kBAAiB,OAAO;AACjD,gBAAI,SAAU,UAAS,OAAO;AAC9B,gBAAI,WAAY,YAAW,OAAO;AAAA,UACpC;AAEA,kBAAQ,MAAM,KAAK;AAAA,YACjB,KAAK;AAAA,YACL,KAAK;AACH,uBAAS,eAAe,IAAI;AAC5B,oBAAM,eAAe;AACrB;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH,uBAAS,eAAe,IAAI;AAC5B,oBAAM,eAAe;AACrB;AAAA,YACF,KAAK;AACH,uBAAS,GAAG;AACZ,oBAAM,eAAe;AACrB;AAAA,YACF,KAAK;AACH,uBAAS,GAAG;AACZ,oBAAM,eAAe;AACrB;AAAA,YACF;AACE;AAAA,UACJ;AAAA,QACF;AAAA,QACA,MAAK;AAAA,QACL,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,kBAAgB,iBAAiB,YAAY;AAAA,QAC7C,cAAY;AAAA,QACZ,iBAAe;AAAA,QAGf;AAAA,0BAAAD,MAAC,SAAI,WAAU,+FAA8F;AAAA,UAG7G,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,2CACT,WAAW,wBAAwB,mBACrC;AAAA,cACA,KAAK;AAAA;AAAA,UACP;AAAA,UAGA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,KAAK;AAAA,cAEJ,WAAC,YACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,KAAK;AAAA,kBACL,WAAU;AAAA,kBACV,OAAO,EAAE,YAAY,GAAG,aAAa,KAAK;AAAA,kBAEzC;AAAA;AAAA,cACH;AAAA;AAAA,UAEJ;AAAA;AAAA;AAAA,IACF;AAAA,IAGC,MAAM,IAAI,CAAC,MAAM,QAAQ;AACxB,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,KAAK,CAAC,YAAY;AAChB,qBAAS,QAAQ,GAAG,IAAI;AAAA,UAC1B;AAAA,UACA,WAAU;AAAA;AAAA,QAJL;AAAA,MAKP;AAAA,IAEJ,CAAC;AAAA,IAGA,eAAe,IAAI,CAAC,MAAM,QAAQ;AACjC,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,KAAK,CAAC,YAAY;AAChB,qBAAS,QAAQ,GAAG,IAAI;AAAA,UAC1B;AAAA,UACA,WAAU;AAAA,UAET;AAAA;AAAA,QANI;AAAA,MAOP;AAAA,IAEJ,CAAC;AAAA,KACH;AAEJ;AAEA,IAAO,iBAAQ;;;AC1Vf,SAAgB,eAAAE,cAAa,YAAAC,WAAU,aAAAC,kBAAiB;AA8EpD,SACE,OAAAC,OADF,QAAAC,cAAA;AAzDJ,IAAM,cAA0C,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,CAAC,OAAO,QAAQ,IAAIH,UAAS,YAAY;AAC/C,QAAM,eAAe,aAAa;AAClC,QAAM,eAAe,GAAG,IAAI;AAE5B,QAAM,qBAAqBD;AAAA,IACzB,CAAC,aAA8B;AAC7B,YAAM,cAAc,OAAO,QAAQ;AACnC,eAAS,WAAW;AAAA,IACtB;AAAA,IACA,CAAC,cAAc;AAAA,EACjB;AAEA,QAAM,oBAAoBA;AAAA,IACxB,CAAC,UAA+C;AAC9C,UAAI,MAAM,OAAO,UAAU,IAAI;AAC7B,iBAAS,KAAK;AACd;AAAA,MACF;AAEA,YAAM,YAAY,OAAO,MAAM,OAAO,KAAK;AAC3C,UAAI,OAAO,SAAS,SAAS,EAAG,UAAS,SAAS;AAAA,IACpD;AAAA,IACA,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,aAAaA,aAAY,MAAM;AACnC,QAAI,QAAQ,OAAO;AACjB,eAAS,KAAK;AAAA,IAChB,WAAW,QAAQ,KAAK;AACtB,eAAS,GAAG;AAAA,IACd;AAAA,EACF,GAAG,CAAC,KAAK,OAAO,KAAK,CAAC;AAEtB,EAAAE,WAAU,MAAM;AACd,mBAAe,KAAK;AAAA,EACtB,GAAG,CAAC,gBAAgB,KAAK,CAAC;AAE1B,SACE,gBAAAE,OAAC,SAAI,WAAU,8BACb;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QACL;AAAA,QACA,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM,QAAQ;AAAA,QACd;AAAA,QACA;AAAA,QACA,cAAY;AAAA,QACZ,UAAU,CAAC,MAAM,mBAAmB,EAAE,OAAO,KAAK;AAAA;AAAA,IACpD;AAAA,IACC,aACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,IAAI;AAAA,QACJ,WAAU;AAAA,QACV,OAAO,gBAAgB,MAAM;AAAA,QAC7B,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,MAAK;AAAA,QACL,MAAM,QAAQ;AAAA,QACd,KAAK;AAAA,QACL,KAAK;AAAA,QACL,cAAY,GAAG,YAAY;AAAA,QAC3B,UAAU,YAAY;AAAA;AAAA,IACxB;AAAA,KAEJ;AAEJ;AAEA,IAAO,0BAAQ;;;ACjHf,OAAOE,iBAAgB;AAsBnB,gBAAAC,aAAA;AAdJ,IAAM,eAAe;AAAA,EACnB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,SAAS;AACX;AAEO,SAAS,YAAY;AAAA,EAC1B,QAAQ;AAAA,EACR,oBAAoB;AAAA,EACpB;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAWD;AAAA,QACT;AAAA,QACA,aAAa,KAAK;AAAA,QAClB,qBAAqB;AAAA,QACrB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AChCA,OAAOE,iBAAgB;AAsBnB,gBAAAC,aAAA;AAnBJ,IAAM,gBAAgB;AAAA,EACpB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AACN;AAMO,SAAS,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,KAAK,GAAkB;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAWD;AAAA,QACT;AAAA,QACA,cAAc,OAAO;AAAA,QACrB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC5BA,OAAOE,iBAAgB;AAEvB,SAAS,mBAAmB;AAoBxB,qBAAAC,WACE,OAAAC,OADF,QAAAC,cAAA;AAFJ,SAAS,YAAY,EAAE,MAAM,GAAyC;AACpE,SACE,gBAAAA,OAAAF,WAAA,EACE;AAAA,oBAAAC,MAAC,eAAY,eAAY,QAAO,WAAU,oBAAmB;AAAA,IAC7D,gBAAAA,MAAC,UAAM,iBAAM;AAAA,KACf;AAEJ;AAEA,SAAS,YAAY,MAAe;AAClC,MAAI,CAAC,KAAM,QAAO;AAGlB,QAAM,WAAW,KACd,QAAQ,qBAAqB,EAAE,EAC/B,QAAQ,aAAa,EAAE;AAC1B,SAAO,gBAAgB,KAAK,QAAQ,IAAI,SAAY;AACtD;AAEe,SAAR,YAA6B;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAAqB;AACnB,QAAM,WAAW,YAAY,MAAM,IAAI;AACvC,QAAM,gBACJ;AAEF,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAWH;AAAA,QACT;AAAA,QACA,EAAE,SAAS,YAAY,UAAU;AAAA,QACjC;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAG,OAAC,SAAI,WAAWH,YAAW,WAAW,gBAAgB,GACnD;AAAA,kBAAQ,WACP,gBAAAE,MAAC,OAAE,WAAW,eAAe,MAAM,UACjC,0BAAAA,MAAC,eAAY,OAAO,KAAK,OAAO,GAClC,IACE,OACF,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAW;AAAA,cACX,SAAS,KAAK;AAAA,cAEd,0BAAAA,MAAC,eAAY,OAAO,KAAK,OAAO;AAAA;AAAA,UAClC,IACE;AAAA,UAEJ,gBAAAA,MAAC,sBAAW,SAAQ,MAAK,cAAa,cACnC,iBACH;AAAA,UACC,aAAa,UAAa,aAAa,QACtC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,cAAa;AAAA,cACb,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,WAEJ;AAAA,QAEC,WACC,gBAAAA,MAAC,SAAI,WAAU,6EACZ,mBACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;AChEM,gBAAAE,OAaU,QAAAC,cAbV;AAZS,SAAR,eAAgC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,OAAO;AACT,GAAwB;AACtB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,+EAA+E,SAAS;AAAA,MAEnG;AAAA,wBAAAD,MAAC,eAAY,OAAc,SAAQ,QAAO;AAAA,QAEzC,KAAK,SAAS,KACb,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,cAAY;AAAA,YACZ,WAAU;AAAA,YAEV,0BAAAA,MAAC,SAAI,MAAK,WAAU,WAAU,oCAC3B,eAAK,IAAI,CAAC,QAAQ;AACjB,oBAAM,OAAO,IAAI;AACjB,oBAAM,WAAW,cAAc,IAAI;AAEnC,qBACE,gBAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,MAAK;AAAA,kBACL,iBAAe;AAAA,kBACf,gBAAc,WAAW,SAAS;AAAA,kBAClC,UAAU,IAAI;AAAA,kBAEd,SAAS,MAAM,YAAY,IAAI,EAAE;AAAA,kBACjC,WAAW,2QACT,SAAS,UAAU,wBAAwB,iBAC7C,IACE,WACI,kDACA,oEACN;AAAA,kBAEC;AAAA,4BACC,gBAAAD,MAAC,QAAK,eAAY,QAAO,WAAU,oBAAmB;AAAA,oBAExD,gBAAAA,MAAC,UAAM,cAAI,OAAM;AAAA,oBAChB,IAAI,iBAAiB,UACpB,IAAI,iBAAiB,QACnB,gBAAAA,MAAC,UAAK,WAAU,yJACb,cAAI,cACP;AAAA;AAAA;AAAA,gBAlBC,IAAI;AAAA,cAoBX;AAAA,YAEJ,CAAC,GACH;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;AClFA,OAAOE,kBAAgB;;;ACEhB,IAAM,mBAAmB,CAAC,UAA4B;AAC3D,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,MAAI,OAAO,UAAU,SAAU,QAAO;AAEtC,QAAM,aAAa,MAAM,KAAK,EAAE,YAAY;AAC5C,SAAO,eAAe,MAAM,eAAe;AAC7C;AAEO,SAAS,qBACd,OACA,UAGI,CAAC,GACc;AACnB,MAAI,iBAAiB,KAAK,EAAG,QAAO;AACpC,MAAI,QAAQ,WAAW,OAAQ,QAAO;AACtC,SAAO,QAAQ,eAAe;AAChC;;;ADFI,gBAAAC,OAqCA,QAAAC,cArCA;AAdJ,IAAMC,iBAAgB;AAAA,EACpB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAMO,SAAS,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,KAAK,GAAkB;AAC3E,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,WAAWG;AAAA,QACT;AAAA,QACAD,eAAc,OAAO;AAAA,QACrB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAYO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,UAAU;AAAA,EACV,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAkB;AAChB,QAAM,WAAW,qBAAqB,OAAO,EAAE,QAAQ,UAAU,YAAY,CAAC;AAC9E,MAAI,aAAa,KAAM,QAAO;AAE9B,SACE,gBAAAD,OAAC,SAAI,WAAWE,aAAW,WAAW,SAAS,GAAI,GAAG,MACpD;AAAA,oBAAAH,MAAC,QAAG,WAAU,8CAA8C,iBAAM;AAAA,IAClE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAWG;AAAA,UACT;AAAA,UACA,YAAY,WAAW,sBAAsB;AAAA,UAC7C,WAAW;AAAA,UACX;AAAA,QACF;AAAA,QAEC,sBAAY;AAAA;AAAA,IACf;AAAA,KACF;AAEJ;;;AErEA,OAAOC,kBAAgB;AAoBnB,SAOE,OAAAC,OAPF,QAAAC,cAAA;AATG,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmB;AACjB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAF,MAAC,YAAS,SAAkB,WAAU,kBACnC,mBACH;AAAA,QACC,UACC,gBAAAA,MAAC,eAAY,WAAWE,aAAW,kBAAkB,eAAe,GACjE,mBACH,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;;;ACFA,IAAM,oBAAoB;AAAA,EACxB,aAAa,oBAAI,IAAI,CAAC,UAAU,QAAQ,cAAc,CAAC;AAAA,EACvD,WAAW,oBAAI,IAAI;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,SAAS,oBAAI,IAAI;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,SAAS,oBAAI,IAAI;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,QAAQ,oBAAI,IAAI,CAAC,cAAc,WAAW,aAAa,MAAM,CAAC;AAAA,EAC9D,SAAS,oBAAI,IAAI;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEO,IAAM,kBAAkB,CAAC,WAC9B,OAAO,UAAU,EAAE,EAChB,UAAU,KAAK,EACf,QAAQ,oBAAoB,EAAE,EAC9B,QAAQ,QAAQ,GAAG,EACnB,KAAK,EACL,YAAY;AAEjB,IAAM,uBAAuB,CAAC,WAA6C;AACzE,MAAI,kBAAkB,YAAY,IAAI,MAAM,GAAG;AAC7C,WAAO,EAAE,MAAM,QAAQ,YAAY,UAAU;AAAA,EAC/C;AACA,MAAI,kBAAkB,UAAU,IAAI,MAAM,GAAG;AAC3C,WAAO,EAAE,MAAM,QAAQ,YAAY,QAAQ;AAAA,EAC7C;AACA,MAAI,kBAAkB,QAAQ,IAAI,MAAM,GAAG;AACzC,WAAO,EAAE,MAAM,WAAW,YAAY,OAAO;AAAA,EAC/C;AACA,MAAI,kBAAkB,QAAQ,IAAI,MAAM,GAAG;AACzC,WAAO,EAAE,MAAM,WAAW,YAAY,QAAQ;AAAA,EAChD;AACA,MAAI,kBAAkB,OAAO,IAAI,MAAM,GAAG;AACxC,WAAO,EAAE,MAAM,UAAU,YAAY,QAAQ;AAAA,EAC/C;AACA,MAAI,kBAAkB,QAAQ,IAAI,MAAM,GAAG;AACzC,WAAO,EAAE,MAAM,WAAW,YAAY,QAAQ;AAAA,EAChD;AACA,SAAO,EAAE,MAAM,WAAW,YAAY,UAAU;AAClD;AAEO,IAAM,0BAA0B,CACrC,QACA,SAAuB,WACvB,YAC6B;AAC7B,QAAM,aAAa,gBAAgB,MAAM;AAEzC,MAAI,CAAC,YAAY;AACf,WAAO,SAAS,YAAY,EAAE,MAAM,WAAW,YAAY,UAAU;AAAA,EACvE;AAEA,QAAM,mBAAmB,SAAS,MAC9B,OAAO,QAAQ,QAAQ,GAAG,EAAE;AAAA,IAC1B,CAAC,CAAC,GAAG,MAAM,gBAAgB,GAAG,MAAM;AAAA,EACtC,IAAI,CAAC,IACL;AAEJ,MAAI,iBAAkB,QAAO;AAE7B,MAAI,WAAW,eAAe;AAC5B,QAAI,eAAe,UAAW,QAAO,EAAE,MAAM,WAAW,YAAY,QAAQ;AAC5E,QAAI,eAAe,YAAa,QAAO,EAAE,MAAM,WAAW,YAAY,QAAQ;AAAA,EAChF;AAEA,MAAI,WAAW,YAAY;AACzB,QAAI,CAAC,WAAW,YAAY,WAAW,EAAE,SAAS,UAAU,GAAG;AAC7D,aAAO,EAAE,MAAM,WAAW,YAAY,QAAQ;AAAA,IAChD;AACA,QAAI,WAAW,SAAS,YAAY,KAAK,eAAe,YAAY;AAClE,aAAO,EAAE,MAAM,WAAW,YAAY,OAAO;AAAA,IAC/C;AACA,QAAI,eAAe,YAAa,QAAO,EAAE,MAAM,WAAW,YAAY,QAAQ;AAAA,EAChF;AAEA,MAAI,WAAW,aAAa;AAC1B,QAAI,eAAe,WAAY,QAAO,EAAE,MAAM,WAAW,YAAY,QAAQ;AAC7E,QAAI,WAAW,SAAS,YAAY,EAAG,QAAO,EAAE,MAAM,WAAW,YAAY,OAAO;AACpF,QAAI,eAAe,eAAgB,QAAO,EAAE,MAAM,QAAQ,YAAY,QAAQ;AAAA,EAChF;AAEA,MAAI,WAAW,WAAW;AACxB,QAAI,eAAe,eAAgB,QAAO,EAAE,MAAM,QAAQ,YAAY,UAAU;AAChF,QAAI,eAAe,WAAY,QAAO,EAAE,MAAM,WAAW,YAAY,OAAO;AAAA,EAC9E;AAEA,MAAI,WAAW,iBAAiB;AAC9B,WAAO,EAAE,MAAM,WAAW,YAAY,QAAQ;AAAA,EAChD;AAEA,MAAI,WAAW,WAAW;AACxB,QAAI,CAAC,QAAQ,WAAW,UAAU,EAAE,SAAS,UAAU,GAAG;AACxD,aAAO,EAAE,MAAM,WAAW,YAAY,QAAQ;AAAA,IAChD;AACA,QAAI,CAAC,gBAAgB,sBAAsB,EAAE,SAAS,UAAU,GAAG;AACjE,aAAO,EAAE,MAAM,QAAQ,YAAY,UAAU;AAAA,IAC/C;AACA,QAAI,CAAC,WAAW,aAAa,QAAQ,EAAE,SAAS,UAAU,GAAG;AAC3D,aAAO,EAAE,MAAM,UAAU,YAAY,QAAQ;AAAA,IAC/C;AAAA,EACF;AAEA,MAAI,WAAW,WAAW,WAAW,aAAa,WAAW,YAAY;AACvE,QAAI,CAAC,YAAY,eAAe,SAAS,EAAE,SAAS,UAAU,GAAG;AAC/D,aAAO,EAAE,MAAM,QAAQ,YAAY,UAAU;AAAA,IAC/C;AACA,QAAI,CAAC,cAAc,2BAA2B,oBAAoB,EAAE,SAAS,UAAU,GAAG;AACxF,aAAO,EAAE,MAAM,WAAW,YAAY,OAAO;AAAA,IAC/C;AACA,QAAI,CAAC,YAAY,aAAa,UAAU,EAAE,SAAS,UAAU,GAAG;AAC9D,aAAO,EAAE,MAAM,WAAW,YAAY,QAAQ;AAAA,IAChD;AACA,QAAI,CAAC,UAAU,aAAa,UAAU,EAAE,SAAS,UAAU,GAAG;AAC5D,aAAO,EAAE,MAAM,UAAU,YAAY,QAAQ;AAAA,IAC/C;AAAA,EACF;AAEA,SAAO,SAAS,YAAY,qBAAqB,UAAU;AAC7D;;;AC3KA,OAAOC,kBAAgB;AAiEnB,gBAAAC,aAAA;AA9DJ,IAAMC,eAAoE;AAAA,EACxE,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OACE;AAAA,EACJ;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OACE;AAAA,EACJ;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OACE;AAAA,EACJ;AAAA,EACA,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OACE;AAAA,EACJ;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACF;AAEA,IAAM,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AACN;AAeO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,EACP,aAAa;AAAA,EACb,OAAO;AAAA,EACP,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAWD;AAAA,QACT;AAAA,QACA,YAAY,IAAI;AAAA,QAChBE,aAAY,IAAI,EAAE,UAAU;AAAA,QAC5B,aAAa,aACT,oDACA;AAAA,QACJ;AAAA,MACF;AAAA,MACA,OAAO,UAAU,OAAO,aAAa,WAAW,WAAW;AAAA,MAC3D,cAAY;AAAA,MACX,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEO,IAAM,0BAA0B,CACrC,MACA,eACGA,aAAY,IAAI,EAAE,UAAU;;;ACvD7B,gBAAAC,aAAA;AAbG,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd;AAAA,EACA,GAAG;AACL,GAA2B;AACzB,QAAM,QAAQ,QAAQ,KAAK;AAC3B,MAAI,CAAC,SAAS,UAAU,OAAQ,QAAO;AAEvC,QAAM,WAAW,wBAAwB,OAAO,QAAQ,EAAE,KAAK,UAAU,CAAC;AAC1E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,SAAS;AAAA,MACf,YAAY,SAAS;AAAA,MACpB,GAAG;AAAA,MAEH,mBAAS;AAAA;AAAA,EACZ;AAEJ;;;AC5CA,OAAOC,kBAAgB;AAcnB,gBAAAC,aAAA;AANW,SAAR,SAA0B;AAAA,EAC/B,WAAW;AAAA,EACX,QAAQ;AAAA,EACR;AACF,GAAkB;AAChB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,IAAI,QAAQ;AAAA,MAClB,WAAWD;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;ACtBA,SAAS,aAAAE,kBAAiB;AAE1B,IAAM,6BAA6B;AAE5B,SAAS,sBAAsB;AACpC,EAAAA,WAAU,MAAM;AACd,UAAM,OAAO,SAAS;AAEtB,UAAM,gBAAgB,CAAC,UAAyB;AAC9C,UACE,MAAM,QAAQ,SACd,CAAC,MAAM,UACP,CAAC,MAAM,WACP,CAAC,MAAM,SACP;AACA,aAAK,aAAa,4BAA4B,UAAU;AAAA,MAC1D;AAAA,IACF;AAEA,UAAM,oBAAoB,MAAM;AAC9B,WAAK,aAAa,4BAA4B,SAAS;AAAA,IACzD;AAEA,aAAS,iBAAiB,WAAW,eAAe,IAAI;AACxD,aAAS,iBAAiB,eAAe,mBAAmB,IAAI;AAEhE,WAAO,MAAM;AACX,eAAS,oBAAoB,WAAW,eAAe,IAAI;AAC3D,eAAS,oBAAoB,eAAe,mBAAmB,IAAI;AAAA,IACrE;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;;;ACjCA,SAAS,aAAAC,kBAAiB;AAE1B,SAAS,qBAAqB;AAC5B,SAAO,OAAO,aAAa,kCAAkC,EAAE,WAAW;AAC5E;AAEA,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEV,IAAM,eAAe,CAAC,IAAI,KAAK,KAAK,KAAK,GAAI;AAE7C,SAAS,UAAU,SAAsB;AACvC,QAAM,SAAS,OAAO,iBAAiB,OAAO;AAC9C,QAAM,SAAS,QAAQ,sBAAsB;AAE7C,SACE,OAAO,YAAY,UACnB,OAAO,eAAe,YACtB,OAAO,QAAQ,KACf,OAAO,SAAS;AAEpB;AAEA,SAAS,eAAe,OAAoB;AAC1C,MACE,MAAM;AAAA,IACJ;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AAEA,SAAO,MAAM;AAAA,IACX;AAAA,EACF;AACF;AAEO,SAAS,sBAAsB,MAAuB;AAC3D,SAAO,CAAC,GAAG,KAAK,iBAA8B,sBAAsB,CAAC,EAClE,OAAO,SAAS,EAChB,KAAK,CAAC,OAAO,WAAW;AACvB,UAAM,cAAc,MAAM,sBAAsB;AAChD,UAAM,eAAe,OAAO,sBAAsB;AAElD,QAAI,YAAY,QAAQ,aAAa,KAAK;AACxC,aAAO,YAAY,MAAM,aAAa;AAAA,IACxC;AAEA,WAAO,YAAY,OAAO,aAAa;AAAA,EACzC,CAAC,EAAE,CAAC;AACR;AAEA,SAAS,uBAAuB,OAAoB;AAClD,QAAM,cAAc,eAAe,KAAK;AACxC,QAAM,WAAW,mBAAmB,IAAI,SAAS;AAEjD,eAAa,MAAM,EAAE,eAAe,KAAK,CAAC;AAC1C,QAAM,eAAe,EAAE,UAAU,OAAO,UAAU,QAAQ,UAAU,CAAC;AACvE;AAEO,SAAS,sBAAsB;AACpC,EAAAA,WAAU,MAAM;AACd,QAAI;AAEJ,UAAM,eAAe,CAAC,UAAuB;AAC3C,UAAI,EAAE,MAAM,kBAAkB,iBAAkB;AAEhD,iCAA2B;AAE3B,YAAM,OAAO,MAAM;AACnB,UAAI,UAAU;AACd,UAAI;AACJ,YAAM,SAAmB,CAAC;AAE1B,YAAM,UAAU,MAAM;AACpB,kBAAU,WAAW;AACrB,eAAO,QAAQ,OAAO,YAAY;AAAA,MACpC;AAEA,YAAM,cAAc,MAAM;AACxB,YAAI,WAAW,CAAC,KAAK,YAAa;AAElC,cAAM,QAAQ,sBAAsB,IAAI;AACxC,YAAI,CAAC,MAAO;AAEZ,kBAAU;AACV,gBAAQ;AACR,+BAAuB,KAAK;AAAA,MAC9B;AAEA,iBAAW,IAAI,iBAAiB,WAAW;AAC3C,eAAS,QAAQ,MAAM;AAAA,QACrB,iBAAiB,CAAC,cAAc;AAAA,QAChC,YAAY;AAAA,QACZ,SAAS;AAAA,MACX,CAAC;AAED,mBAAa,QAAQ,CAAC,UAAU;AAC9B,eAAO,KAAK,OAAO,WAAW,aAAa,KAAK,CAAC;AAAA,MACnD,CAAC;AAED,iCAA2B;AAAA,IAC7B;AAEA,aAAS,iBAAiB,UAAU,cAAc,IAAI;AAEtD,WAAO,MAAM;AACX,iCAA2B;AAC3B,eAAS,oBAAoB,UAAU,cAAc,IAAI;AAAA,IAC3D;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;;;ACrHA,OAAOC,UAAoB,aAAAC,YAAW,SAAAC,QAAO,WAAAC,UAAS,YAAAC,iBAAgB;;;ACAtE;AAAA,EAGE,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACfP,OAAOC,SAAQ;AACf,SAAsB,aAAAC,YAAW,UAAAC,eAAc;AA6D/B,gBAAAC,OAqBI,QAAAC,cArBJ;AA9ChB,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiB;AACf,QAAM,uBAAuB,CAAC,UAAyC;AACrE,QAAI,UAAU;AACZ,eAAS,MAAM,OAAO,KAAK;AAAA,IAC7B;AAAA,EACF;AAEA,QAAM,sBAAsB,CAC1B,SACA,UACG;AACH,sBAAkB,SAAS,MAAM,OAAO,KAAK;AAAA,EAC/C;AACA,QAAM,eAAeF,QAAuB,IAAI;AAEhD,EAAAD,WAAU,MAAM;AACd,QAAI,CAAC,aAAa,QAAS;AAC3B,iBAAa,QAAQ,MAAM,YAAY,YAAY,GAAG,SAAS,OAAO;AAAA,EACxE,GAAG,CAAC,SAAS,CAAC;AAEd,MAAI,UAAU,QAAQ;AACpB,WACE,gBAAAE;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL;AAAA,QACA,MAAK;AAAA,QACL,cAAY,kBAAkB;AAAA,QAC9B,WAAU;AAAA,QAEV,0BAAAA,MAAC,SAAI,WAAU,uBACZ,mBAAS,IAAI,CAAC,YACb,gBAAAC;AAAA,UAAC;AAAA;AAAA,YAEC,WAAU;AAAA,YAET;AAAA,sBAAQ,SACP,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,IAAI,GAAG,QAAQ,EAAE;AAAA,kBACjB,WAAU;AAAA,kBAET,kBAAQ;AAAA;AAAA,cACX;AAAA,cAGD,QAAQ,SAAS,WAChB,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,cAAY,QAAQ,SAAS,QAAQ,eAAe;AAAA,kBACpD,oBAAkB,QAAQ,QAAQ,GAAG,QAAQ,EAAE,WAAW;AAAA,kBAC1D,OAAO,QAAQ,SAAS;AAAA,kBACxB,aAAa,QAAQ,eAAe;AAAA,kBACpC,UAAU,CAAC,UAAU,oBAAoB,SAAS,KAAK;AAAA,kBACvD,WAAU;AAAA;AAAA,cACZ,IAEA,gBAAAA,MAAC,SAAI,WAAU,uBACZ,kBAAQ,YAAY,IAAI,CAAC,QAAQ,UAChC,gBAAAC;AAAA,gBAAC;AAAA;AAAA,kBAEC,WAAWJ;AAAA,oBACT;AAAA,oBACA,QAAQ,UAAU,OAAO,QACrB,gCACA;AAAA,kBACN;AAAA,kBAEA;AAAA,oCAAAG;AAAA,sBAAC;AAAA;AAAA,wBACC,MAAK;AAAA,wBACL,WAAU;AAAA,wBACV,OAAO,OAAO;AAAA,wBACd,SAAS,QAAQ,UAAU,OAAO;AAAA,wBAClC,MAAM,gBAAgB,aAAa,SAAS,IAAI,QAAQ,EAAE;AAAA,wBAC1D,UAAU,CAAC,UACT,oBAAoB,SAAS,KAAK;AAAA;AAAA,oBAEtC;AAAA,oBACA,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,eAAY;AAAA,wBACZ,WAAU;AAAA;AAAA,oBACZ;AAAA,oBACA,gBAAAA,MAAC,UAAK,WAAU,2BACb,iBAAO,OACV;AAAA;AAAA;AAAA,gBAxBK,GAAG,QAAQ,EAAE,IAAI,KAAK;AAAA,cAyB7B,CACD,GACH;AAAA;AAAA;AAAA,UArDG,QAAQ;AAAA,QAuDf,CACD,GACH;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL;AAAA,MACA,MAAK;AAAA,MACL,cAAY,kBAAkB;AAAA,MAC9B,WAAU;AAAA,MAET,wBACC,WAAW,IAAI,CAAC,QAAQ,UACtB,gBAAAC;AAAA,QAAC;AAAA;AAAA,UAEC,WAAWJ;AAAA,YACT;AAAA,YACA,kBAAkB,OAAO,QACrB,gCACA;AAAA,UACN;AAAA,UAEA;AAAA,4BAAAG;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,OAAO,OAAO;AAAA,gBACd,SAAS,kBAAkB,OAAO;AAAA,gBAClC,MAAM,gBAAgB,aAAa,SAAS;AAAA,gBAC5C,UAAU;AAAA;AAAA,YACZ;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,eAAY;AAAA,gBACZ,WAAU;AAAA;AAAA,YACZ;AAAA,YACA,gBAAAA,MAAC,UAAK,WAAU,kBACb,iBAAO,OACV;AAAA;AAAA;AAAA,QAtBK;AAAA,MAuBP,CACD;AAAA;AAAA,EACL;AAEJ;AAEA,IAAO,qBAAQ;;;ACxHX,gBAAAE,aAAA;AAXJ,SAAS,OAAO,OAAqB;AACnC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,IAAI,MAAM;AAAA,MACV,gBAAgB,MAAM;AAAA,MACtB,WAAW,MAAM;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,iBAAQ;;;AC9CT,gBAAAC,aAAA;AAVN,SAAS,eAAe;AACtB,SACE,gBAAAA,MAAC,SAAI,WAAU,uEAQb,0BAAAA,MAAC,OAAE,WAAU,+DAA8D,0CAE3E,GACF;AAEJ;AAEA,IAAO,uBAAQ;;;AHqOF,gBAAAC,OA4JS,QAAAC,cA5JT;AAvMb,IAAM,yBAA6D;AAAA,EACjE,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AACX;AAEA,IAAM,yBAGF;AAAA,EACF,aAAa,EAAE,KAAK,QAAQ,MAAM,OAAO;AAAA,EACzC,SAAS,EAAE,KAAK,OAAO,MAAM,YAAY;AAC3C;AAEA,SAAS,UAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,eAAe;AAAA,EACf;AAAA,EACA,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,UAAU;AACZ,GAAkB;AAChB,QAAM,UAAUC,OAAM;AACtB,QAAM,CAAC,YAAY,aAAa,IAAIC,UAAwB,IAAI;AAChE,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,UAAiB;AAC/D,QAAM,CAAC,cAAc,eAAe,IAAIA,UAG9B,IAAI;AACd,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAiB;AACrD,QAAM,qBAAqBC,QAAuB,IAAI;AACtD,QAAM,kBAAkBA,QAAuB,IAAI;AACnD,QAAM,iBAAiBA,QAA2C,CAAC,CAAC;AACpE,QAAM,oBAAoBA,QAAwC,CAAC,CAAC;AACpE,QAAM,YAAYA,QAAuB,IAAI;AAE7C,EAAAC,WAAU,MAAM;AACd,UAAM,UAAU,gBAAgB;AAChC,QAAI,CAAC,QAAS;AAEd,UAAM,cAAc,MAAM,cAAc,QAAQ,WAAW;AAC3D,QAAI,OAAO,mBAAmB,aAAa;AACzC,kBAAY;AACZ,aAAO,iBAAiB,UAAU,WAAW;AAC7C,aAAO,MAAM,OAAO,oBAAoB,UAAU,WAAW;AAAA,IAC/D;AAEA,UAAM,WAAW,IAAI,eAAe,WAAW;AAC/C,aAAS,QAAQ,OAAO;AACxB,gBAAY;AAEZ,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,CAAC;AAEL,EAAAA,WAAU,MAAM;AACd,QAAI,eAAe,KAAM;AAEzB,UAAM,gBAAgB,CAAC,UAAyB;AAC9C,UAAI,MAAM,QAAQ,SAAU;AAC5B,YAAM,eAAe;AACrB,oBAAc,IAAI;AAClB,sBAAgB,IAAI;AACpB,aAAO,sBAAsB,MAAM;AACjC,0BAAkB,QAAQ,UAAU,GAAG,MAAM;AAAA,MAC/C,CAAC;AAAA,IACH;AAEA,aAAS,iBAAiB,WAAW,aAAa;AAClD,WAAO,MAAM,SAAS,oBAAoB,WAAW,aAAa;AAAA,EACpE,GAAG,CAAC,UAAU,CAAC;AAEf,EAAAA,WAAU,MAAM;AACd,UAAM,wBAAwB,MAAM;AAClC,YAAM,aAAa,mBAAmB,SAAS;AAC/C,UAAI,CAAC,WAAY;AACjB,yBAAmB,KAAK,IAAI,aAAa,IAAI,GAAG,CAAC;AAAA,IACnD;AAEA,0BAAsB;AACtB,WAAO,iBAAiB,UAAU,qBAAqB;AAEvD,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,qBAAqB;AAAA,IAC5D;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,EAAAA,WAAU,MAAM;AACd,UAAM,qBAAqB,CAAC,UAAsB;AAChD,UACE,gBAAgB,WAChB,CAAC,gBAAgB,QAAQ,SAAS,MAAM,MAAc,GACtD;AACA,sBAAc,IAAI;AAClB,wBAAgB,IAAI;AAAA,MACtB;AAAA,IACF;AAEA,aAAS,iBAAiB,aAAa,kBAAkB;AAEzD,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,kBAAkB;AAAA,IAC9D;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,UAAU,WAAW,CAAC,aAAc;AAEzC,cAAU,QAAQ,MAAM,MAAM,GAAG,aAAa,GAAG;AACjD,cAAU,QAAQ,MAAM,OACtB,OAAO,aAAa,SAAS,WAAW,GAAG,aAAa,IAAI,OAAO;AAAA,EACvE,GAAG,CAAC,YAAY,CAAC;AAEjB,EAAAA,WAAU,MAAM;AACd,QAAI,eAAe,KAAM;AAEzB,UAAM,QAAQ,OAAO,sBAAsB,MAAM;AAC/C,gBAAU,SACN;AAAA,QACA;AAAA,MACF,GACE,MAAM;AAAA,IACZ,CAAC;AAED,WAAO,MAAM,OAAO,qBAAqB,KAAK;AAAA,EAChD,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,mBAAmB,CAAC,UAAkB;AAC1C,UAAM,OAAO,eAAe,QAAQ,OAAO;AAC3C,kBAAc,IAAI;AAElB,QAAI,SAAS,MAAM;AACjB,YAAM,cAAc,gBAAgB,SAAS,sBAAsB;AACnE,YAAM,WAAW,eAAe,QAAQ,IAAI,GAAG,sBAAsB;AAErE,UAAI,eAAe,UAAU;AAC3B,cAAM,MAAM,SAAS,SAAS,YAAY,MAAM;AAChD,cAAM,gBAAgB,KAAK;AAAA,UACzB;AAAA,UACA,KAAK,IAAI,YAAY,QAAQ,IAAI,CAAC;AAAA,QACpC;AACA,cAAM,cAAc,SAAS,OAAO,YAAY;AAChD,cAAM,UAAU;AAChB,cAAM,UAAU,KAAK;AAAA,UACnB;AAAA,UACA,YAAY,QAAQ,gBAAgB;AAAA,QACtC;AACA,cAAM,OAAO,KAAK,IAAI,KAAK,IAAI,aAAa,OAAO,GAAG,OAAO;AAE7D,wBAAgB,EAAE,KAAK,KAAK,CAAC;AAAA,MAC/B;AAAA,IACF,OAAO;AACL,sBAAgB,IAAI;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,6BAA6B,MAAM;AACvC,UAAM,eAAe;AACrB,kBAAc,IAAI;AAClB,oBAAgB,IAAI;AACpB,QAAI,iBAAiB,MAAM;AACzB,aAAO,sBAAsB,MAAM;AACjC,0BAAkB,QAAQ,YAAY,GAAG,MAAM;AAAA,MACjD,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,mBAAmB,CAAC,SACxB,QAAQ,KAAK,SAAS,YAAY,UAAU,KAAK,SAAS,UAAU,MAAM;AAE5E,QAAM,gBAAgB,CAAC,SAA6B;AAClD,QAAI,CAAC,iBAAiB,IAAI,GAAG;AAC3B,aAAO;AAAA,IACT;AAEA,UAAM,WAAW,KAAK,SAAS,YAAY,CAAC;AAC5C,UAAM,gCAAgC,SAAS,KAAK,CAAC,YAAY;AAC/D,UAAI,QAAQ,SAAS,UAAU;AAC7B,eAAO,QAAQ,QAAQ,OAAO,KAAK,CAAC;AAAA,MACtC;AAEA,UAAI,QAAQ,SAAS,WAAW;AAC9B,eAAO,QAAQ,QAAQ,SAAS,QAAQ,UAAU,SAAS;AAAA,MAC7D;AAEA,aAAO;AAAA,IACT,CAAC;AAED,QAAI,+BAA+B;AACjC,aAAO,gBAAAL,MAAC,gBAAa,WAAU,eAAc;AAAA,IAC/C;AAEA,UAAM,aAAa,SAAS;AAAA,MAC1B,CAAC,YACC,QAAQ,SAAS,UACjB,QAAQ,SACR,QAAQ,UAAU,aAClB,QAAQ,UAAU;AAAA,IACtB;AAEA,QAAI,YAAY,UAAU,OAAO;AAC/B,aAAO,gBAAAA,MAAC,iBAAc,WAAU,eAAc;AAAA,IAChD;AAEA,QAAI,YAAY,UAAU,QAAQ;AAChC,aAAO,gBAAAA,MAAC,mBAAgB,WAAU,eAAc;AAAA,IAClD;AAEA,UAAM,qBACJ,KAAK,SAAS,iBACd,KAAK,QAAQ,kBAAkB,aAC/B,KAAK,QAAQ,kBAAkB;AAEjC,QAAI,oBAAoB;AACtB,aAAO,gBAAAA,MAAC,gBAAa,WAAU,eAAc;AAAA,IAC/C;AAEA,WAAO,gBAAAA,MAAC,sBAAmB,WAAU,eAAc;AAAA,EACrD;AAEA,QAAM,mBAAmB,CAAC,SAA6B;AACrD,UAAM,cAAc,KAAK,SAAS,UAAU;AAAA,MAC1C,CAAC,YAAY,QAAQ,SAAS;AAAA,IAChC;AAEA,QAAI,CAAC,YAAa,QAAO;AACzB,QAAI,YAAY,UAAU,MAAO,QAAO;AACxC,QAAI,YAAY,UAAU,OAAQ,QAAO;AACzC,WAAO;AAAA,EACT;AAEA,QAAM,qBAAqB,CAAC,MAA0B,UAAkB;AACtE,QAAI,iBAAiB,IAAI,GAAG;AAC1B,uBAAiB,KAAK;AACtB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,qBAAqB,CACzB,MACA,OACA,YACG;AACH,QAAI,SAAS,SAAS,UAAU;AAC9B,oBAAc,IAAI;AAAA,IACpB;AAEA,QAAI,SAAS;AACX,WAAK,SAAS,kBAAkB,SAAS,KAAK;AAAA,IAChD,OAAO;AACL,WAAK,SAAS,WAAW,KAAK;AAAA,IAChC;AAEA,QAAI,gBAAgB;AAClB,qBAAe,KAAK;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,0BACJ,oBACC,OAAO,OAAO,CAAC,KAAK,SAAS,OAAO,KAAK,cAAc,IAAI,CAAC,KAC3D;AAEJ,QAAM,iBAAiB,CAAC,eAAwB;AAC9C,QAAI,CAAC,2BAA2B,CAAC,YAAY;AAC3C,aAAO;AAAA,IACT;AAEA,WAAO,GAAI,aAAa,0BAA2B,GAAG;AAAA,EACxD;AAEA,QAAM,oBAAoB,eAAe,UAAa,aAAa;AACnE,QAAM,oBAAoB,oBACtB,WACC,YAAY,WAAW;AAC5B,QAAM,oBACJ,iBAAiB,cACjB,eAAe,UACf,aAAa;AACf,QAAM,gBACJ,iBAAiB,WAAW,oBAAoB;AAClD,QAAM,8BAA8B,eAC/B,uBAAuB,yBACxB;AACJ,QAAM,mBACJ,kBAAkB,WAAW,kBAAkB,SAC3C,kCACA;AAEN,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,iDACT,oBAAoB,2BAA2B,EACjD;AAAA,MAEA;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,sBAAoB;AAAA,YACpB,oBAAkB;AAAA,YAClB,uBAAqB;AAAA,YACrB,sBAAoB;AAAA,YACpB,wBAAsB;AAAA,YACtB,OAAO,EAAE,WAAW,4BAA4B;AAAA,YAChD,WAAW,0CAA0C,aAAa;AAAA,YAElE,0BAAAC;AAAA,cAAC;AAAA;AAAA,gBACC,cACE,UACI,SACC,kBACD,WAAW,OAAO,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,KAAK,IAAI,CAAC;AAAA,gBAE5D,WAAW,qBACT,2BAA2B,CAAC,oBAAoB,gBAAgB,EAClE,IAAI,aAAa,EAAE;AAAA,gBAElB;AAAA,6BAAW,gBAAAD,MAAC,aAAQ,WAAU,WAAW,mBAAQ;AAAA,kBACjD,2BAA2B,CAAC,qBAC3B,gBAAAA,MAAC,cACE,iBAAO,IAAI,CAAC,MAAM,UACjB,gBAAAA,MAAC,SAAgB,OAAO,eAAe,KAAK,UAAU,KAA5C,KAA+C,CAC1D,GACH;AAAA,kBAEF,gBAAAA,MAAC,WAAM,WAAU,kCACf,0BAAAA,MAAC,QAAG,WAAW,uBAAuB,OAAO,EAAE,KAC5C,iBAAO,IAAI,CAAC,MAAM,UAAU;AAC3B,0BAAM,gBAAgB,iBAAiB,IAAI;AAC3C,0BAAM,aAAa,cAAc,IAAI;AAErC,2BACE,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAM;AAAA,wBACN,aAAW,iBAAiB,IAAI;AAAA,wBAEhC,KAAK,CAAC,YAAY;AAChB,yCAAe,QAAQ,KAAK,IAAI;AAAA,wBAClC;AAAA,wBACA,WAAW,GACT,eAAe,uBAAuB,UACxC,IAAI,uBAAuB,aAAa,CAAC,IAAI,uBAAuB,OAAO,EAAE,IAAI,gCAAgC,KAAK,aAAa,EAAE;AAAA,wBACrI,mBAAiB;AAAA,wBAEhB,0BACC,gBAAAC;AAAA,0BAAC;AAAA;AAAA,4BACC,MAAK;AAAA,4BACP,iBAAe,eAAe;AAAA,4BAC5B,iBACE,eAAe,QACX,GAAG,OAAO,WAAW,KAAK,KAC1B;AAAA,4BAEN,KAAK,CAAC,YAAY;AAChB,gDAAkB,QAAQ,KAAK,IAAI;AAAA,4BACrC;AAAA,4BACA,cAAY,0BAA0B,KAAK,KAAK;AAAA,4BAChD,WAAW,+IAA+I,gBAAgB,IACxK,KAAK,WAAW,SAAS,YAAY,IACjC,gBACA,EACN;AAAA,4BACA,SAAS,MAAM,mBAAmB,MAAM,KAAK;AAAA,4BAE7C;AAAA,8CAAAD,MAAC,UAAK,WAAU,oBAAoB,eAAK,OAAM;AAAA,8BAC9C,cACC,gBAAAA,MAAC,UAAK,WAAU,iBAAgB,eAAY,QACzC,sBACH;AAAA;AAAA;AAAA,wBAEJ,IAEA,gBAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,WAAW,6BACT,KAAK,WAAW,SAAS,YAAY,IACjC,gBACA,EACN;AAAA,4BAEA,0BAAAA,MAAC,UAAK,WAAU,oBAAoB,eAAK,OAAM;AAAA;AAAA,wBACjD;AAAA;AAAA,sBA7CG;AAAA,oBA+CP;AAAA,kBAEJ,CAAC,GACH,GACF;AAAA,kBACC,WACC,WAEA,gBAAAA,MAAC,WACC,0BAAAA,MAAC,QACC,0BAAAA,MAAC,QAAG,SAAS,OAAO,QAClB,0BAAAA,MAAC,wBAAS,GACZ,GACF,GACF;AAAA;AAAA;AAAA,YAEJ;AAAA;AAAA,QACF;AAAA,QACC,eAAe,QAAQ,gBAAgB,OAAO,UAAU,GAAG,WAC1D,gBAAAA,MAAC,SAAI,KAAK,WAAW,WAAU,sBAC7B,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI,GAAG,OAAO,WAAW,UAAU;AAAA,YACnC,gBAAgB,qBAAqB,OAAO,UAAU,EAAE,KAAK;AAAA,YAC7D,WAAW,GAAG,OAAO,IAAI,UAAU;AAAA,YACnC,eAAe,OAAO,UAAU,EAAE,QAAS;AAAA,YAC3C,YAAY,OAAO,UAAU,EAAE,QAAS;AAAA,YACxC,UAAU,OAAO,UAAU,EAAE,QAAS;AAAA,YACtC,UAAU,CAAC,UAAU;AACnB,iCAAmB,OAAO,UAAU,GAAG,KAAK;AAC5C,yCAA2B;AAAA,YAC7B;AAAA,YACA,iBAAiB,CAAC,SAAS,UAAU;AACnC,iCAAmB,OAAO,UAAU,GAAG,OAAO,OAAO;AACrD,kBAAI,QAAQ,SAAS,SAAU,4BAA2B;AAAA,YAC5D;AAAA,YACA,WAAW;AAAA;AAAA,QACb,GACF;AAAA,QAED,kBAAkB,cACjB,gBAAAC,OAAC,SAAI,WAAU,uGACb;AAAA,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,aAAU;AAAA,cACV,eAAY;AAAA,cACZ,WAAU;AAAA,cACX;AAAA;AAAA,gBACkB,WAAW;AAAA,gBAAU;AAAA,gBAAM,WAAW;AAAA,gBAAQ;AAAA,gBAAI;AAAA,gBAClE,WAAW;AAAA,gBAAW;AAAA;AAAA;AAAA,UACzB;AAAA,UAEA,gBAAAA,OAAC,SAAI,WAAU,2BACb;AAAA,4BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS,WAAW;AAAA,gBACpB,UAAU,WAAW,gBAAgB;AAAA,gBACrC,cAAW;AAAA,gBACX,WAAW,iQACT,sBAAsB,WAAW,2BAA2B,EAC9D;AAAA,gBAEA;AAAA,kCAAAD,MAAC,uBAAoB,WAAU,8BAA6B;AAAA,kBAC3D,sBAAsB,YAAY;AAAA;AAAA;AAAA,YACrC;AAAA,YAEA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,aAAU;AAAA,gBACV,eAAY;AAAA,gBACZ,WAAU;AAAA,gBAET,qBAAW;AAAA;AAAA,YACd;AAAA,YAEA,gBAAAC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS,WAAW;AAAA,gBACpB,UAAU,WAAW,gBAAgB,WAAW;AAAA,gBAChD,cAAW;AAAA,gBACT,WAAW,iQACX,sBAAsB,WAAW,2BAA2B,EAC9D;AAAA,gBAEC;AAAA,wCAAsB,YAAY;AAAA,kBACnC,gBAAAD,MAAC,wBAAqB,WAAU,8BAA6B;AAAA;AAAA;AAAA,YAC/D;AAAA,aACF;AAAA,WACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,IAAO,oBAAQ;;;ADxJD,SAsBM,OAAAM,OAtBN,QAAAC,cAAA;AAlRd,SAAS,MAAuB,OAA0B;AACxD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,oBAAoB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,UAAU;AAAA,EACZ,IAAI;AACJ,QAAM,UAAUC,OAAM;AACtB,QAAM,uBAAuB,iBAAiB,OAAO,aAAa;AAClE,QAAM,6BACJ,sBACA,KAAK,IAAI,KAAK,MAAM,KAAK,IAAI,OAAO,SAAS,GAAG,CAAC,IAAI,GAAG;AAE1D,QAAM,CAAC,aAAa,cAAc,IAAIC,UAAS,CAAC;AAChD,QAAM,CAAC,cAAc,eAAe,IAAIA,UAAiC,CAAC,CAAC;AAC3E,QAAM,CAAC,sBAAsB,uBAAuB,IAAIA;AAAA,IAEtD,MACA,YAAY,kBAAkB,QAC9B,YAAY,kBAAkB,SAC1B,OAAO,WAAW,aAAa,IAC/B;AAAA,EACN;AACA,QAAM,CAAC,sBAAsB,uBAAuB,IAAIA,UAEtD,IAAI;AACN,QAAM,mBAAmB,OAAO,SAAS,YAAY,IACjD,KAAK,IAAI,GAAG,KAAK,MAAM,YAAY,CAAC,IACpC;AAEJ,QAAM,mBAAmBC,SAAQ,MAAM;AACrC,WAAO,OAAO,IAAI,CAAC,SAAS;AAC1B,YAAM,YAAY;AAClB,aAAO;AAAA,QACL,GAAG;AAAA,QACH,OAAO,UAAU;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,mBAAmBA,SAAQ,MAAM;AACrC,QAAI,CAAC,MAAM;AACT,aAAO;AAAA,IACT;AAEA,WAAO,iBAAiB,IAAI,CAAC,SAAS;AACpC,YAAM,WAAW,KAAK,SAAS,UAAU,IAAI,CAAC,aAAa;AAAA,QACzD,GAAG;AAAA,QACH,OACE,aAAa,GAAG,KAAK,GAAG,IAAI,QAAQ,EAAE,EAAE,KACxC,QAAQ,UACP,QAAQ,SAAS,WAAW,KAAK;AAAA,MACtC,EAAE;AAEF,aAAO;AAAA,QACL,GAAG;AAAA,QACH,SAAS,UAAU,SACf;AAAA,UACE;AAAA,QACF,IACA;AAAA,MACN;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,MAAM,cAAc,gBAAgB,CAAC;AAEzC,QAAM,wBAAwBA,SAAQ,MAAM;AAC1C,QAAI,CAAC,KAAM,QAAO,CAAC;AAEnB,QAAI,SAAS,CAAC,GAAG,IAAI;AACrB,UAAM,UAAiD,CAAC;AAExD,qBAAiB,QAAQ,CAAC,WAAW;AACnC,YAAM,WAAW,OAAO,SAAS,YAAY,CAAC;AAE9C,eAAS,QAAQ,CAAC,YAAY;AAC5B,cAAM,WAAW,GAAG,OAAO,GAAG,IAAI,QAAQ,EAAE;AAC5C,cAAM,QACJ,aAAa,QAAQ,KACrB,QAAQ,UACP,QAAQ,SAAS,WAAW,KAAK;AAEpC,YAAI,CAAC,SAAS,UAAU,WAAW;AACjC;AAAA,QACF;AAEA,YAAI,QAAQ,SAAS,WAAW;AAC9B,mBAAS,OAAO,OAAO,CAAC,SAAS;AAC/B,gBAAI,OAAO,SAAS,aAAa;AAC/B,qBAAO,OAAO,QAAQ,YAAY,MAAM,OAAO,OAAO;AAAA,YACxD;AAEA,kBAAM,gBACJ,OAAO,iBAAiB,IAAI,KAAK,OAAO,WAAW,IAAI;AACzD,mBAAO,OAAO,iBAAiB,EAAE,MAAM;AAAA,UACzC,CAAC;AACD;AAAA,QACF;AAEA,YAAI,QAAQ,SAAS,UAAU;AAC7B,gBAAM,mBAAmB,MAAM,YAAY,EAAE,KAAK;AAClD,mBAAS,OAAO,OAAO,CAAC,SAAS;AAC/B,gBAAI,OAAO,SAAS,aAAa;AAC/B,qBAAO,OAAO,QAAQ,YAAY,MAAM,OAAO,OAAO;AAAA,YACxD;AAEA,kBAAM,kBACJ,OAAO,iBAAiB,IAAI,KAC5B;AAAA,cACE,OAAO,iBAAiB,IAAI,KAAK,OAAO,WAAW,IAAI,KAAK;AAAA,YAC9D;AAEF,mBAAO,gBAAgB,YAAY,EAAE,SAAS,gBAAgB;AAAA,UAChE,CAAC;AACD;AAAA,QACF;AAEA,YAAI,QAAQ,SAAS,QAAQ;AAC3B,kBAAQ,KAAK,CAAC,GAAG,MAAM;AACrB,gBAAI,OAAO,SAAS,SAAS;AAC3B,qBAAO,OAAO,QAAQ,QAAQ,GAAG,GAAG,OAAO,OAAO;AAAA,YACpD;AAEA,kBAAM,SAAS,OAAO,eAAe,CAAC,KAAK,OAAO,WAAW,CAAC;AAC9D,kBAAM,SAAS,OAAO,eAAe,CAAC,KAAK,OAAO,WAAW,CAAC;AAE9D,gBAAI,OAAO,WAAW,YAAY,OAAO,WAAW,UAAU;AAC5D,qBAAO,UAAU,SAAS,SAAS,SAAS,SAAS;AAAA,YACvD;AAEA,kBAAM,UAAU,OAAO,UAAU,EAAE;AACnC,kBAAM,UAAU,OAAO,UAAU,EAAE;AACnC,mBAAO,UAAU,SACb,QAAQ,cAAc,OAAO,IAC7B,QAAQ,cAAc,OAAO;AAAA,UACnC,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,QAAI,CAAC,QAAQ,QAAQ;AACnB,aAAO;AAAA,IACT;AAEA,WAAO,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM;AAChC,iBAAW,UAAU,SAAS;AAC5B,cAAM,aAAa,OAAO,GAAG,CAAC;AAC9B,YAAI,eAAe,GAAG;AACpB,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,MAAM,cAAc,gBAAgB,CAAC;AAEzC,EAAAC,WAAU,MAAM;AACd,mBAAe,CAAC;AAAA,EAClB,GAAG,CAAC,YAAY,CAAC;AAEjB,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,YAAY;AACf,8BAAwB,IAAI;AAC5B,8BAAwB,IAAI;AAC5B;AAAA,IACF;AAEA,UAAM,oBACJ,WAAW,kBAAkB,QAC7B,WAAW,kBAAkB,SACzB,OAAO,WAAW,aAAa,IAC/B;AAEN,QAAI,mBAAmB;AACrB,8BAAwB,iBAAiB;AACzC,8BAAwB,IAAI;AAC5B;AAAA,IACF;AAEA,QAAI,CAAC,sBAAsB;AACzB;AAAA,IACF;AAEA,4BAAwB,oBAAoB;AAC5C,UAAM,YAAY,OAAO,WAAW,MAAM;AACxC,8BAAwB,IAAI;AAC5B,8BAAwB,IAAI;AAAA,IAC9B,GAAG,GAAG;AAEN,WAAO,MAAM,OAAO,aAAa,SAAS;AAAA,EAC5C,GAAG,CAAC,YAAY,oBAAoB,CAAC;AAErC,QAAM,qBAAqBD,SAAQ,MAAM;AACvC,QAAI,CAAC,KAAM,QAAO;AAElB,UAAM,aAAa,sBAAsB;AACzC,UAAM,aAAa,KAAK,IAAI,GAAG,KAAK,KAAK,aAAa,gBAAgB,CAAC;AACvE,UAAM,kBAAkB,KAAK,IAAI,aAAa,UAAU;AACxD,UAAM,cAAc,kBAAkB,KAAK;AAC3C,UAAM,WAAW,aAAa;AAE9B,WAAO;AAAA,MACL,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA,WAAW,eAAe,IAAI,IAAI,aAAa;AAAA,MAC/C,SAAS,KAAK,IAAI,UAAU,UAAU;AAAA,MACtC,UAAU,sBAAsB,MAAM,YAAY,QAAQ;AAAA,IAC5D;AAAA,EACF,GAAG,CAAC,aAAa,MAAM,uBAAuB,gBAAgB,CAAC;AAE/D,QAAM,uBACJ,YAAY,YACR,6CACA;AACN,QAAM,2BACJ,YAAY,YACR,8BACA;AACN,QAAM,qBACJ,YAAY,YACR,qDACA;AAEN,QAAM,mBAAmBA,SAAQ,MAAM;AACrC,QAAI,CAAC,QAAQ,CAAC,oBAAoB;AAChC,aAAO;AAAA,IACT;AAEA,WACE,gBAAAH,OAAC,WAAM,qBAAkB,QACtB;AAAA,yBAAmB,SAAS;AAAA,QAAI,CAAC,MAAM,WACrC,MAAM;AACL,gBAAM,QAAQ,YAAY,SAAS,MAAM,KAAK;AAC9C,gBAAM,kBACJ,UAAU,SAAY,OAAO,KAAK,IAAI;AACxC,gBAAM,aACJ,oBAAoB,UACpB,YAAY,kBAAkB,QAC9B,YAAY,kBAAkB,UAC9B,OAAO,WAAW,aAAa,MAAM;AACvC,gBAAM,uBACJ,oBAAoB,UACpB,yBAAyB;AAC3B,gBAAM,uBACJ,oBAAoB,UACpB,yBAAyB;AAC3B,gBAAM,YAAY,mBAAmB,YAAY;AACjD,gBAAM,gBAAgB,iBAAiB;AAAA,YACrC,CAAC,GAAG,gBACF,GAAG,OAAO,QAAQ,SAAS,SAAS,cAAc,CAAC;AAAA,UACvD;AACA,gBAAM,oBAAoB,GAAG,OAAO,QAAQ,SAAS;AAErD,iBACE,gBAAAA;AAAA,YAACK,OAAM;AAAA,YAAN;AAAA,cAGC;AAAA,gCAAAN;AAAA,kBAAC;AAAA;AAAA,oBACC,UAAU;AAAA,oBACV,cAAY,SAAS,SAAS,OAAO,mBAAmB,UAAU;AAAA,oBAClE,oBAAkB,cAAc,KAAK,GAAG;AAAA,oBACxC,yBACE,eAAe,aAAa,QAAQ,MAAM,KAAK,CAAC,aAC5C,SACA;AAAA,oBAEN,WAAW;AAAA,sBACT;AAAA,sBACA,iBAAiB,mCAAmC;AAAA,sBACpD,iBAAiB,uBAAuB;AAAA,sBACxC,YAAY,eAAe,MAAM,QAAQ,UAAU,CAAC,KAAK;AAAA,oBAC3D,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,oBAEV,2BAAiB,IAAI,CAAC,QAAQ,gBAC7B,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBAEC,IAAI,cAAc,WAAW;AAAA,wBAC7B,cAAY,OAAO;AAAA,wBACnB,WACE,OAAO,iBAAiB;AAAA,wBAGzB,iBAAO,aACJ,OAAO,WAAW,MAAM,KAAK,IAC7B,OAAO,OAAO,WAAW,IAAI,KAAK,GAAG;AAAA;AAAA,sBATpC,OAAO;AAAA,oBAUd,CACD;AAAA;AAAA,gBACH;AAAA,gBACC,wBAAwB,cACvB,gBAAAA,MAAC,QAAG,WAAW,YAAY,sBACzB,0BAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAS,iBAAiB;AAAA,oBAC1B,WACE,YAAY,4BACZ;AAAA,oBAGF,0BAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,MAAK;AAAA,wBACL,UAAU,cAAc,CAAC,uBAAuB,IAAI;AAAA,wBACpD,cAAY,qBAAqB,SAAS;AAAA,wBAC1C,oBAAkB;AAAA,wBAClB,eACE,CAAC,cAAc,wBAAwB;AAAA,wBAEzC,WAAW,sFACT,cAAc,CAAC,uBACX,+BACA,mBACN;AAAA,wBAEA,0BAAAA,MAAC,SAAI,IAAI,mBACN,qBAAW,kBAAkB,MAAM,KAAK,GAC3C;AAAA;AAAA,oBACF;AAAA;AAAA,gBACF,GACF;AAAA;AAAA;AAAA,YA/DG,aAAa,mBAAmB,GAAG,KAAK,IAAI,KAAK,UAAU,IAAI,CAAC,EAAE;AAAA,UAiEzE;AAAA,QAEJ,GAAG;AAAA,MACL;AAAA,MACC,mBAAmB,SAAS,WAAW,KACtC,gBAAAA,MAAC,QACC,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,iBAAiB;AAAA,UAC1B,WAAW;AAAA,UAEV,yBACC,gBAAAA,MAAC,UAAK,MAAK,SAAS,wBAAa,IAEjC,gBAAAA,MAAC,UAAK,MAAK,UAAU,wBAAa;AAAA;AAAA,MAEtC,GACF;AAAA,OAEJ;AAAA,EAEJ,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,qBAAqB,OACvB,sBAAsB;AAAA,IACpB,aAAa,mBAAmB;AAAA,IAChC,YAAY,mBAAmB;AAAA,IAC/B,YAAY,mBAAmB;AAAA,IAC/B,WAAW,mBAAmB;AAAA,IAC9B,SAAS,mBAAmB;AAAA,IAC5B,SAAS;AAAA,IACT,YAAY,MAAM,eAAe,CAAC,SAAS,KAAK,IAAI,OAAO,GAAG,CAAC,CAAC;AAAA,IAChE,QAAQ,MACN;AAAA,MAAe,CAAC,SACd,KAAK,IAAI,OAAO,GAAG,mBAAmB,UAAU;AAAA,IAClD;AAAA,EACJ,IACA,aACE;AAAA,IACE,GAAG;AAAA,IACH,SAAS,WAAW,WAAW;AAAA,EACjC,IACA;AAEN,QAAM,yBAAyB,OAC3B;AAAA,IACE,sBACA,mBAAmB,aAAa;AAAA,EAClC,IACA;AAEJ,QAAM,6BAA6B,CACjC,WACA,WACA,UACG;AACH,oBAAgB,CAAC,UAAU;AAAA,MACzB,GAAG;AAAA,MACH,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,GAAG;AAAA,IACjC,EAAE;AAAA,EACJ;AAEA,QAAM,iBAAiB,OACnB,iBAAiB,IAAI,CAAC,UAAU;AAAA,IAC9B,GAAG;AAAA,IACH,SAAS,KAAK,SAAS,UAAU,SAC7B;AAAA,MACE,UAAU,KAAK,QAAQ;AAAA,MACvB,iBAAiB,CAAC,SAAyB,UACzC;AAAA,QACE,KAAK,OAAO,KAAK;AAAA,QACjB,QAAQ;AAAA,QACR;AAAA,MACF;AAAA,IACJ,IACA;AAAA,EACN,EAAE,IACF;AAEJ,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,YAAY,sBAAsB;AAAA,MAClC;AAAA,MACA,cAAc;AAAA,MACd,oBAAoB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,gBAAQ;;;AKjjBf,SAAoB,aAAAO,YAAW,SAAAC,QAAO,WAAAC,UAAS,YAAAC,iBAAgB;AAC/D,SAAS,uBAAAC,sBAAqB,wBAAAC,6BAA4B;AAwHtD,qBAAAC,WAaQ,OAAAC,OA6BI,QAAAC,cA1CZ;AAzFJ,SAAS,gBAAuB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB;AACF,GAAgC;AAC9B,QAAM,SAASP,OAAM;AACrB,QAAM,CAAC,aAAa,cAAc,IAAIE,UAAS,CAAC;AAChD,QAAM,CAAC,sBAAsB,uBAAuB,IAAIA;AAAA,IACtD,MACE,YAAY,kBAAkB,QAC9B,YAAY,kBAAkB,SAC1B,OAAO,WAAW,aAAa,IAC/B;AAAA,EACR;AACA,QAAM,CAAC,sBAAsB,uBAAuB,IAAIA;AAAA,IACtD;AAAA,EACF;AAEA,QAAM,iBAAiBD;AAAA,IACrB,MAAO,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC;AAAA,IACrC,CAAC,IAAI;AAAA,EACP;AACA,QAAM,mBAAmB,OAAO,SAAS,YAAY,IACjD,KAAK,IAAI,GAAG,KAAK,MAAM,YAAY,CAAC,IACpC;AAEJ,QAAM,aAAaA,SAAQ,MAAM;AAC/B,UAAM,aAAa,eAAe;AAClC,UAAM,aAAa,KAAK,IAAI,GAAG,KAAK,KAAK,aAAa,gBAAgB,CAAC;AACvE,UAAM,kBAAkB,KAAK,IAAI,aAAa,UAAU;AACxD,UAAM,cAAc,kBAAkB,KAAK;AAC3C,UAAM,WAAW,aAAa;AAE9B,WAAO;AAAA,MACL,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA,WAAW,eAAe,IAAI,IAAI,aAAa;AAAA,MAC/C,SAAS,KAAK,IAAI,UAAU,UAAU;AAAA,MACtC,UAAU,eAAe,MAAM,YAAY,QAAQ;AAAA,IACrD;AAAA,EACF,GAAG,CAAC,aAAa,gBAAgB,gBAAgB,CAAC;AAElD,EAAAF,WAAU,MAAM;AACd,mBAAe,CAAC;AAAA,EAClB,GAAG,CAAC,cAAc,CAAC;AAEnB,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,YAAY;AACf,8BAAwB,IAAI;AAC5B,8BAAwB,IAAI;AAC5B;AAAA,IACF;AAEA,UAAM,oBACJ,WAAW,kBAAkB,QAC7B,WAAW,kBAAkB,SACzB,OAAO,WAAW,aAAa,IAC/B;AAEN,QAAI,mBAAmB;AACrB,8BAAwB,iBAAiB;AACzC,8BAAwB,IAAI;AAC5B;AAAA,IACF;AAEA,QAAI,CAAC,sBAAsB;AACzB;AAAA,IACF;AAEA,4BAAwB,oBAAoB;AAC5C,UAAM,YAAY,OAAO,WAAW,MAAM;AACxC,8BAAwB,IAAI;AAC5B,8BAAwB,IAAI;AAAA,IAC9B,GAAG,GAAG;AAEN,WAAO,MAAM,OAAO,aAAa,SAAS;AAAA,EAC5C,GAAG,CAAC,YAAY,oBAAoB,CAAC;AAErC,SACE,gBAAAQ,OAAAF,WAAA,EACE;AAAA,oBAAAE;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,cACE,kBACA,UAAU,QAAQ,IAAI,CAAC,WAAW,OAAO,KAAK,EAAE,KAAK,IAAI,CAAC;AAAA,QAE5D,WAAW,2EAA2E,gBAAgB,GAAG,KAAK;AAAA,QAE9G;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,8HAA8H,eAAe,GAAG,KAAK;AAAA,cAE/J,kBAAQ,IAAI,CAAC,WACZ,gBAAAA,MAAC,UAAwB,WAAW,OAAO,WACxC,iBAAO,SADC,OAAO,KAElB,CACD;AAAA;AAAA,UACH;AAAA,UAEC,WAAW,aAAa,IACvB,gBAAAA,MAAC,SAAI,MAAK,QAAO,cAAW,kBACzB,qBAAW,SAAS,IAAI,CAAC,MAAM,WAC/B,MAAM;AACL,kBAAM,QAAQ,YAAY,SAAS,MAAM,KAAK;AAC9C,kBAAM,kBACJ,UAAU,SAAY,OAAO,KAAK,IAAI;AACxC,kBAAM,aACJ,oBAAoB,UACpB,YAAY,kBAAkB,QAC9B,YAAY,kBAAkB,UAC9B,OAAO,WAAW,aAAa,MAAM;AACvC,kBAAM,uBACJ,oBAAoB,UACpB,yBAAyB;AAC3B,kBAAM,uBACJ,oBAAoB,UACpB,yBAAyB;AAC3B,kBAAM,aAAa,WAAW,YAAY;AAC1C,kBAAM,gBAAgB,GAAG,MAAM,SAAS,UAAU;AAClD,kBAAM,oBAAoB,GAAG,MAAM,SAAS,UAAU;AAEtD,mBACE,gBAAAC;AAAA,cAAC;AAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,UAAU;AAAA,gBACV,cAAY,QAAQ,UAAU,OAAO,WAAW,UAAU;AAAA,gBAC1D,oBAAkB;AAAA,gBAClB,WAAU;AAAA,gBAEV;AAAA,kCAAAD;AAAA,oBAAC;AAAA;AAAA,sBACC,IAAI;AAAA,sBACJ,WAAW,YAAY,eAAe,MAAM,QAAQ,UAAU,CAAC;AAAA,sBAE9D,qBAAW,MAAM,KAAK;AAAA;AAAA,kBACzB;AAAA,kBACC,cAAc,wBACb,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,WACE,WAAW,4BACX;AAAA,sBAGF,0BAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,MAAK;AAAA,0BACL,UAAU,cAAc,CAAC,uBAAuB,IAAI;AAAA,0BACpD,cAAY,oBAAoB,UAAU;AAAA,0BAC1C,oBAAkB;AAAA,0BAClB,eACE,CAAC,cAAc,wBAAwB;AAAA,0BAEzC,WAAW,sFACT,cAAc,CAAC,uBACX,+BACA,mBACN;AAAA,0BAEA,0BAAAA,MAAC,SAAI,IAAI,mBACN,qBAAW,kBAAkB,MAAM,KAAK,GAC3C;AAAA;AAAA,sBACF;AAAA;AAAA,kBACF;AAAA;AAAA;AAAA,cAtCG,aAAa,MAAM,KAAK;AAAA,YAwC/B;AAAA,UAEJ,GAAG,CACF,GACH,IAEA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAW,wDAAwD,cAAc,GAAG,KAAK;AAAA,cAExF;AAAA;AAAA,UACH;AAAA;AAAA;AAAA,IAEJ;AAAA,IAEC,kBAAkB,WAAW,aAAa,oBACzC,gBAAAC,OAAC,SAAI,WAAU,oEACb;AAAA,sBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,aAAU;AAAA,UACV,eAAY;AAAA,UACZ,WAAU;AAAA,UACX;AAAA;AAAA,YACkB,WAAW;AAAA,YAAU;AAAA,YAAM,WAAW;AAAA,YAAQ;AAAA,YAAI;AAAA,YAClE,WAAW;AAAA,YAAW;AAAA;AAAA;AAAA,MACzB;AAAA,MAEA,gBAAAA,OAAC,SAAI,WAAU,0CACb;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,eAAe,CAAC,SAAS,KAAK,IAAI,OAAO,GAAG,CAAC,CAAC;AAAA,YAC7D,UAAU,WAAW,gBAAgB;AAAA,YACrC,cAAW;AAAA,YACX,WAAU;AAAA,YAEV;AAAA,8BAAAD,MAACH,sBAAA,EAAoB,WAAU,8BAA6B;AAAA,cAAE;AAAA;AAAA;AAAA,QAEhE;AAAA,QAEA,gBAAAG;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,eAAY;AAAA,YACZ,WAAU;AAAA,YAET,qBAAW;AAAA;AAAA,QACd;AAAA,QAEA,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MACP;AAAA,cAAe,CAAC,SACd,KAAK,IAAI,OAAO,GAAG,WAAW,UAAU;AAAA,YAC1C;AAAA,YAEF,UAAU,WAAW,gBAAgB,WAAW;AAAA,YAChD,cAAW;AAAA,YACX,WAAU;AAAA,YACX;AAAA;AAAA,cAEC,gBAAAD,MAACF,uBAAA,EAAqB,WAAU,8BAA6B;AAAA;AAAA;AAAA,QAC/D;AAAA,SACF;AAAA,OACF;AAAA,KAEJ;AAEJ;AAEA,IAAO,0BAAQ;;;AChRf,SAAS,aAAAI,aAAW,WAAAC,UAAS,YAAAC,iBAAgC;AAStD,IAAM,8BAAsD;AAAA,EACjE,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AACR;AAEO,SAAS,2BACd,OACA,cAAsC,6BACjB;AACrB,QAAM,UAAU,OAAO,QAAQ,WAAW,EAAE;AAAA,IAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,MACpE,UAAU,SAAS,IAAI,QAAQ;AAAA,EACjC;AAEA,SAAO,QAAQ;AAAA,IACb,CAAC,QAAQ,CAAC,MAAM,SAAS,MACvB,SAAS,YAAY,OAAO;AAAA,IAC9B;AAAA,EACF;AACF;AAEA,SAAS,oBAAoB,aAAqC;AAChE,SAAO,OAAO,QAAQ,WAAW,EAC9B,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,MAAM,MAAM,cAAc,MAAM,CAAC,EACvD,IAAI,CAAC,CAAC,MAAM,SAAS,MAAM,GAAG,IAAI,IAAI,SAAS,EAAE,EACjD,KAAK,GAAG;AACb;AAEO,SAAS,uBACd,KACA,UAAyC,CAAC,GACrB;AACrB,QAAM,aAAa,QAAQ,eAAe;AAC1C,QAAM,gBAAgB,oBAAoB,UAAU;AACpD,QAAM,mBAAmBD;AAAA,IACvB,MACE,OAAO,QAAQ,UAAU,EAAE;AAAA,MAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,MACnD,UAAU,SAAS,IAAI,QAAQ;AAAA,IACjC;AAAA,IACF,CAAC,aAAa;AAAA,EAChB;AACA,QAAM,CAAC,SAAS,UAAU,IAAIC,UAA8B;AAE5D,EAAAF,YAAU,MAAM;AACd,UAAM,UAAU,IAAI;AACpB,QAAI,CAAC,QAAS;AAEd,UAAM,UAAU,CAAC,UACf,iBAAiB;AAAA,MACf,CAAC,QAAQ,CAAC,MAAM,SAAS,MACvB,SAAS,YAAY,OAAO;AAAA,MAC9B;AAAA,IACF;AACF,UAAM,SAAS,MACb,WAAW,QAAQ,QAAQ,sBAAsB,EAAE,KAAK,CAAC;AAE3D,QAAI,OAAO,mBAAmB,aAAa;AACzC,aAAO;AACP,aAAO;AAAA,IACT;AACA,UAAM,WAAW,IAAI,eAAe,MAAM;AAC1C,aAAS,QAAQ,OAAO;AACxB,WAAO;AACP,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,KAAK,gBAAgB,CAAC;AAE1B,SAAO;AACT;","names":["jsx","jsxs","cva","jsx","jsx","jsxs","classNames","jsx","jsx","classNames","jsx","jsxs","classNames","jsx","jsxs","classNames","jsx","jsx","jsx","classNames","classNames","Fragment","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","cs","jsx","jsx","jsxs","cs","jsx","jsxs","useEffect","useRef","jsx","jsxs","useCallback","useState","useEffect","jsx","jsxs","classNames","jsx","classNames","jsx","classNames","Fragment","jsx","jsxs","jsx","jsxs","classNames","jsx","jsxs","COLUMN_STYLES","classNames","classNames","jsx","jsxs","classNames","classNames","jsx","TONE_STYLES","jsx","classNames","jsx","useEffect","useEffect","React","useEffect","useId","useMemo","useState","useEffect","useId","useRef","useState","cs","useEffect","useRef","jsx","jsxs","jsx","jsx","jsx","jsxs","useId","useState","useRef","useEffect","jsx","jsxs","useId","useState","useMemo","useEffect","React","useEffect","useId","useMemo","useState","MdKeyboardArrowLeft","MdKeyboardArrowRight","Fragment","jsx","jsxs","useEffect","useMemo","useState"]}