@fabio.caffarello/react-design-system 3.5.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/ui/tokens/radius.ts","../../src/ui/tokens/spacing.ts","../../src/ui/tokens/typography.ts","../../src/ui/utils/cn.ts","../../src/ui/utils/cva.ts","../../src/ui/primitives/Badge/Badge.tsx","../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../node_modules/@radix-ui/react-slot/dist/index.mjs","../../src/ui/primitives/Chip/Chip.tsx","../../src/ui/primitives/ErrorMessage/ErrorMessage.tsx","../../src/ui/primitives/Info/Info.tsx","../../src/ui/primitives/Label/Label.tsx","../../src/ui/tokens/colors/brand.ts","../../src/ui/tokens/colors/primitives.ts","../../src/ui/tokens/shadows.ts","../../src/ui/tokens/borders.ts","../../src/ui/tokens/breakpoints.ts","../../src/ui/tokens/animations.ts","../../src/ui/tokens/z-index.ts","../../src/ui/tokens/opacity.ts","../../src/ui/primitives/Progress/Progress.tsx","../../src/ui/primitives/Separator/Separator.tsx","../../src/ui/primitives/Skeleton/Skeleton.tsx","../../src/ui/primitives/Spinner/Spinner.tsx","../../src/ui/primitives/Text/Text.tsx","../../src/ui/layouts/Container/Container.tsx","../../src/ui/layouts/Stack/Stack.tsx","../../src/ui/components/Breadcrumb/Breadcrumb.tsx","../../src/ui/components/Card/CardHeader.tsx","../../src/ui/components/Card/CardTitle.tsx","../../src/ui/components/Card/CardSubtitle.tsx","../../src/ui/components/Card/CardActions.tsx","../../src/ui/components/Card/CardBody.tsx","../../src/ui/components/Card/Card.tsx","../../src/ui/components/Dialog/DialogHeader.tsx","../../src/ui/components/Dialog/DialogFooter.tsx","../../src/ui/components/Drawer/DrawerHeader.tsx","../../src/ui/components/Drawer/DrawerFooter.tsx","../../src/ui/components/Header/components/HeaderActions.tsx","../../src/ui/components/Header/components/HeaderNavigation.tsx","../../src/ui/components/Menu/MenuSeparator.tsx","../../src/ui/components/SideNavbar/components/Navbar/NavbarSeparator.tsx","../../src/ui/components/PageHeader/PageHeader.tsx","../../src/ui/components/Table/TableCell.tsx","../../src/ui/components/Timeline/Timeline.tsx"],"sourcesContent":["/**\n * Border Radius Tokens\n *\n * Centralized border radius system for consistent rounded corners.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type RadiusSize =\n | \"none\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"full\";\n\nexport interface RadiusToken {\n value: number;\n rem: string;\n px: string;\n tailwind: string;\n description: string;\n}\n\n/**\n * Radius Token Factory\n * Creates radius tokens with consistent values\n */\nexport class RadiusTokenFactory {\n /**\n * Create a radius token\n */\n static create(size: RadiusSize): RadiusToken {\n const radiusMap: Record<\n RadiusSize,\n { px: number; tailwind: string; description: string }\n > = {\n none: {\n px: 0,\n tailwind: \"rounded-none\",\n description: \"No border radius\",\n },\n sm: {\n px: 2,\n tailwind: \"rounded-sm\",\n description: \"Small radius (2px) for subtle rounding\",\n },\n md: {\n px: 6,\n tailwind: \"rounded-md\",\n description: \"Medium radius (6px) for buttons and inputs\",\n },\n lg: {\n px: 8,\n tailwind: \"rounded-lg\",\n description: \"Large radius (8px) for cards and containers\",\n },\n xl: {\n px: 12,\n tailwind: \"rounded-xl\",\n description: \"Extra large radius (12px) for prominent elements\",\n },\n \"2xl\": {\n px: 16,\n tailwind: \"rounded-2xl\",\n description: \"2X large radius (16px) for large containers\",\n },\n \"3xl\": {\n px: 24,\n tailwind: \"rounded-3xl\",\n description: \"3X large radius (24px) for very large containers\",\n },\n full: {\n px: 9999,\n tailwind: \"rounded-full\",\n description: \"Full radius for circular elements\",\n },\n };\n\n const config = radiusMap[size];\n return {\n value: config.px,\n rem: `${config.px / 16}rem`,\n px: `${config.px}px`,\n tailwind: config.tailwind,\n description: config.description,\n };\n }\n}\n\n/**\n * Pre-defined radius tokens\n */\nexport const RADIUS_TOKENS = {\n none: RadiusTokenFactory.create(\"none\"),\n sm: RadiusTokenFactory.create(\"sm\"),\n md: RadiusTokenFactory.create(\"md\"),\n lg: RadiusTokenFactory.create(\"lg\"),\n xl: RadiusTokenFactory.create(\"xl\"),\n \"2xl\": RadiusTokenFactory.create(\"2xl\"),\n \"3xl\": RadiusTokenFactory.create(\"3xl\"),\n full: RadiusTokenFactory.create(\"full\"),\n} as const;\n\n/**\n * Helper function to get radius token\n */\nexport function getRadius(size: keyof typeof RADIUS_TOKENS): RadiusToken {\n return RADIUS_TOKENS[size];\n}\n\n/**\n * Helper function to get radius as Tailwind class\n */\nexport function getRadiusClass(size: keyof typeof RADIUS_TOKENS): string {\n return RADIUS_TOKENS[size].tailwind;\n}\n","/**\n * Spacing Tokens\n *\n * Centralized spacing scale based on 4px base unit.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type SpacingScale =\n | 0\n | 0.5\n | 1\n | 1.5\n | 2\n | 2.5\n | 3\n | 3.5\n | 4\n | 5\n | 6\n | 8\n | 10\n | 12\n | 16\n | 20\n | 24\n | 32\n | 40\n | 48\n | 64\n | 80\n | 96;\n\nexport interface SpacingToken {\n value: number;\n rem: string;\n px: string;\n tailwind: string;\n}\n\n/**\n * Spacing Token Factory\n * Creates spacing tokens with consistent naming and values\n */\nexport class SpacingTokenFactory {\n private static readonly BASE_UNIT = 4; // 4px base\n\n /**\n * Create a spacing token from scale value\n */\n static create(scale: SpacingScale): SpacingToken {\n const px = scale * this.BASE_UNIT;\n const rem = px / 16; // 16px = 1rem\n\n return {\n value: px,\n rem: `${rem}rem`,\n px: `${px}px`,\n tailwind: this.getTailwindClass(scale),\n };\n }\n\n /**\n * Get Tailwind class for spacing value\n */\n private static getTailwindClass(scale: SpacingScale): string {\n const tailwindMap: Record<SpacingScale, string> = {\n 0: \"0\",\n 0.5: \"0.5\", // 2px — half-step, used by fine UI (badges, switches, separators)\n 1: \"1\", // 4px\n 1.5: \"1.5\", // 6px — half-step\n 2: \"2\", // 8px\n 2.5: \"2.5\", // 10px — half-step\n 3: \"3\", // 12px\n 3.5: \"3.5\", // 14px — half-step\n 4: \"4\", // 16px\n 5: \"5\", // 20px\n 6: \"6\", // 24px\n 8: \"8\", // 32px\n 10: \"10\", // 40px\n 12: \"12\", // 48px\n 16: \"16\", // 64px\n 20: \"20\", // 80px\n 24: \"24\", // 96px\n 32: \"32\", // 128px\n 40: \"40\", // 160px\n 48: \"48\", // 192px\n 64: \"64\", // 256px\n 80: \"80\", // 320px\n 96: \"96\", // 384px\n };\n\n return tailwindMap[scale] || String(scale);\n }\n}\n\n/**\n * Pre-defined spacing tokens\n */\nexport const SPACING_TOKENS = {\n // Micro spacing (0-14px)\n none: SpacingTokenFactory.create(0),\n \"0.5\": SpacingTokenFactory.create(0.5), // 2px (half-step)\n xs: SpacingTokenFactory.create(1), // 4px\n \"1.5\": SpacingTokenFactory.create(1.5), // 6px (half-step)\n sm: SpacingTokenFactory.create(2), // 8px\n \"2.5\": SpacingTokenFactory.create(2.5), // 10px (half-step)\n md: SpacingTokenFactory.create(3), // 12px\n \"3.5\": SpacingTokenFactory.create(3.5), // 14px (half-step)\n\n // Standard spacing (16-32px)\n base: SpacingTokenFactory.create(4), // 16px\n lg: SpacingTokenFactory.create(6), // 24px\n xl: SpacingTokenFactory.create(8), // 32px\n\n // Large spacing (40-64px)\n \"2xl\": SpacingTokenFactory.create(10), // 40px\n \"3xl\": SpacingTokenFactory.create(12), // 48px\n \"4xl\": SpacingTokenFactory.create(16), // 64px\n\n // Extra large spacing (80px+)\n \"5xl\": SpacingTokenFactory.create(20), // 80px\n \"6xl\": SpacingTokenFactory.create(24), // 96px\n} as const;\n\n/**\n * Helper function to get spacing value\n */\nexport function getSpacing(scale: keyof typeof SPACING_TOKENS): SpacingToken {\n return SPACING_TOKENS[scale];\n}\n\n/**\n * Helper function to get spacing as Tailwind class\n */\nexport function getSpacingClass(\n scale: keyof typeof SPACING_TOKENS,\n direction:\n | \"p\"\n | \"m\"\n | \"px\"\n | \"mx\"\n | \"py\"\n | \"my\"\n | \"pt\"\n | \"mt\"\n | \"pr\"\n | \"mr\"\n | \"pb\"\n | \"mb\"\n | \"pl\"\n | \"ml\"\n | \"gap\"\n | \"gap-x\"\n | \"gap-y\"\n | \"space-x\"\n | \"space-y\" = \"p\",\n): string {\n const token = SPACING_TOKENS[scale];\n const value = token.tailwind;\n\n const prefixMap: Record<string, string> = {\n p: \"p\",\n m: \"m\",\n px: \"px\",\n mx: \"mx\",\n py: \"py\",\n my: \"my\",\n pt: \"pt\",\n mt: \"mt\",\n pr: \"pr\",\n mr: \"mr\",\n pb: \"pb\",\n mb: \"mb\",\n pl: \"pl\",\n ml: \"ml\",\n gap: \"gap\",\n \"gap-x\": \"gap-x\",\n \"gap-y\": \"gap-y\",\n \"space-x\": \"space-x\",\n \"space-y\": \"space-y\",\n };\n\n return `${prefixMap[direction]}-${value}`;\n}\n","/**\n * Typography Tokens\n *\n * Centralized typography system with font families, sizes, weights, and line heights.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type FontFamily = \"sans\" | \"serif\" | \"mono\";\nexport type FontWeight = \"light\" | \"normal\" | \"medium\" | \"semibold\" | \"bold\";\nexport type FontSize =\n | \"2xs\"\n | \"xs\"\n | \"sm\"\n | \"base\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"5xl\"\n | \"6xl\";\nexport type LineHeight =\n | \"none\"\n | \"tight\"\n | \"snug\"\n | \"normal\"\n | \"relaxed\"\n | \"loose\";\n\nexport interface TypographyToken {\n fontSize: {\n value: number;\n rem: string;\n px: string;\n tailwind: string;\n };\n lineHeight: {\n value: number;\n tailwind: string;\n };\n fontWeight: {\n value: number;\n tailwind: string;\n };\n}\n\nexport interface FontFamilyToken {\n name: string;\n stack: string;\n tailwind: string;\n}\n\nexport interface FontWeightToken {\n value: number;\n tailwind: string;\n}\n\n/**\n * Typography Token Factory\n * Creates typography tokens with consistent values\n */\nexport class TypographyTokenFactory {\n /**\n * Create font size token\n */\n static createFontSize(size: FontSize): TypographyToken[\"fontSize\"] {\n const sizeMap: Record<FontSize, { px: number; tailwind: string }> = {\n \"2xs\": { px: 10, tailwind: \"text-2xs\" }, // micro-text (badge counters, mini chips)\n xs: { px: 12, tailwind: \"text-xs\" },\n sm: { px: 14, tailwind: \"text-sm\" },\n base: { px: 16, tailwind: \"text-base\" },\n lg: { px: 18, tailwind: \"text-lg\" },\n xl: { px: 20, tailwind: \"text-xl\" },\n \"2xl\": { px: 24, tailwind: \"text-2xl\" },\n \"3xl\": { px: 30, tailwind: \"text-3xl\" },\n \"4xl\": { px: 36, tailwind: \"text-4xl\" },\n \"5xl\": { px: 48, tailwind: \"text-5xl\" },\n \"6xl\": { px: 60, tailwind: \"text-6xl\" },\n };\n\n const config = sizeMap[size];\n return {\n value: config.px,\n rem: `${config.px / 16}rem`,\n px: `${config.px}px`,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create line height token\n */\n static createLineHeight(height: LineHeight): TypographyToken[\"lineHeight\"] {\n const heightMap: Record<LineHeight, { value: number; tailwind: string }> = {\n none: { value: 1, tailwind: \"leading-none\" },\n tight: { value: 1.25, tailwind: \"leading-tight\" },\n snug: { value: 1.375, tailwind: \"leading-snug\" },\n normal: { value: 1.5, tailwind: \"leading-normal\" },\n relaxed: { value: 1.625, tailwind: \"leading-relaxed\" },\n loose: { value: 2, tailwind: \"leading-loose\" },\n };\n\n const config = heightMap[height];\n return {\n value: config.value,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create font weight token\n */\n static createFontWeight(weight: FontWeight): FontWeightToken {\n const weightMap: Record<FontWeight, { value: number; tailwind: string }> = {\n light: { value: 300, tailwind: \"font-light\" },\n normal: { value: 400, tailwind: \"font-normal\" },\n medium: { value: 500, tailwind: \"font-medium\" },\n semibold: { value: 600, tailwind: \"font-semibold\" },\n bold: { value: 700, tailwind: \"font-bold\" },\n };\n\n const config = weightMap[weight];\n return {\n value: config.value,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create complete typography token\n */\n static create(\n size: FontSize,\n lineHeight: LineHeight = \"normal\",\n weight: FontWeight = \"normal\",\n ): TypographyToken {\n return {\n fontSize: this.createFontSize(size),\n lineHeight: this.createLineHeight(lineHeight),\n fontWeight: this.createFontWeight(weight),\n };\n }\n}\n\n/**\n * Font family tokens\n */\nexport const FONT_FAMILY_TOKENS: Record<FontFamily, FontFamilyToken> = {\n sans: {\n name: \"sans\",\n stack:\n 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif',\n tailwind: \"font-sans\",\n },\n serif: {\n name: \"serif\",\n stack: 'ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif',\n tailwind: \"font-serif\",\n },\n mono: {\n name: \"mono\",\n stack:\n 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n tailwind: \"font-mono\",\n },\n} as const;\n\n/**\n * Font weight tokens\n */\nexport const FONT_WEIGHT_TOKENS: Record<FontWeight, FontWeightToken> = {\n light: TypographyTokenFactory.createFontWeight(\"light\"),\n normal: TypographyTokenFactory.createFontWeight(\"normal\"),\n medium: TypographyTokenFactory.createFontWeight(\"medium\"),\n semibold: TypographyTokenFactory.createFontWeight(\"semibold\"),\n bold: TypographyTokenFactory.createFontWeight(\"bold\"),\n} as const;\n\n/**\n * Pre-defined typography tokens for common use cases\n */\nexport const TYPOGRAPHY_TOKENS = {\n // Headings\n h1: TypographyTokenFactory.create(\"4xl\", \"tight\", \"bold\"),\n h2: TypographyTokenFactory.create(\"3xl\", \"tight\", \"bold\"),\n h3: TypographyTokenFactory.create(\"2xl\", \"snug\", \"semibold\"),\n h4: TypographyTokenFactory.create(\"xl\", \"snug\", \"semibold\"),\n h5: TypographyTokenFactory.create(\"lg\", \"normal\", \"medium\"),\n h6: TypographyTokenFactory.create(\"base\", \"normal\", \"medium\"),\n\n // Body text\n body: TypographyTokenFactory.create(\"base\", \"relaxed\", \"normal\"),\n bodySmall: TypographyTokenFactory.create(\"sm\", \"relaxed\", \"normal\"),\n bodyLarge: TypographyTokenFactory.create(\"lg\", \"relaxed\", \"normal\"),\n\n // UI elements\n label: TypographyTokenFactory.create(\"sm\", \"normal\", \"medium\"),\n caption: TypographyTokenFactory.create(\"xs\", \"normal\", \"normal\"),\n button: TypographyTokenFactory.create(\"base\", \"normal\", \"medium\"),\n} as const;\n\n/**\n * Helper function to get typography token\n */\nexport function getTypography(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): TypographyToken {\n return TYPOGRAPHY_TOKENS[variant];\n}\n\n/**\n * Helper function to get typography classes as string\n */\nexport function getTypographyClasses(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n const token = TYPOGRAPHY_TOKENS[variant];\n return `${token.fontSize.tailwind} ${token.lineHeight.tailwind} ${token.fontWeight.tailwind}`;\n}\n\n/**\n * Helper function to get only font size class\n */\nexport function getTypographySize(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n return TYPOGRAPHY_TOKENS[variant].fontSize.tailwind;\n}\n\n/**\n * Helper function to get font size class directly from FontSize\n * This is a convenience function for when you just need a size, not a full typography variant\n */\nexport function getTypographySizeFromFontSize(size: FontSize): string {\n return TypographyTokenFactory.createFontSize(size).tailwind;\n}\n\n/**\n * Helper function to get only font weight class\n */\nexport function getTypographyWeight(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n return TYPOGRAPHY_TOKENS[variant].fontWeight.tailwind;\n}\n\n/**\n * Helper function to get font weight class directly from FontWeight\n * This is a convenience function for when you just need a weight, not a full typography variant\n */\nexport function getTypographyWeightFromFontWeight(weight: FontWeight): string {\n return TypographyTokenFactory.createFontWeight(weight).tailwind;\n}\n\n/**\n * Helper function to get only line height class\n */\nexport function getTypographyLineHeight(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n return TYPOGRAPHY_TOKENS[variant].lineHeight.tailwind;\n}\n","/**\n * CN Utility - ClassName Merge\n *\n * Utility function for merging classNames with Tailwind conflict resolution.\n * Combines clsx for conditional classes and tailwind-merge for conflict resolution.\n *\n * @example\n * ```tsx\n * cn('base-class', condition && 'conditional-class', className)\n * cn(['class1', 'class2'], { 'class3': true })\n * ```\n */\n\nimport { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges classNames and resolves Tailwind class conflicts.\n *\n * Uses clsx for conditional class handling and tailwind-merge\n * to intelligently merge Tailwind classes, resolving conflicts\n * (e.g., 'p-2' and 'p-4' -> 'p-4').\n *\n * @param inputs - Class values to merge (strings, arrays, objects)\n * @returns Merged className string with conflicts resolved\n *\n * @example\n * ```tsx\n * // Basic usage\n * cn('base-class', 'another-class') // 'base-class another-class'\n *\n * // Conditional classes\n * cn('base', isActive && 'active', className)\n *\n * // Arrays and objects\n * cn(['class1', 'class2'], { 'class3': true, 'class4': false })\n *\n * // Tailwind conflict resolution\n * cn('p-2', 'p-4') // 'p-4' (p-2 is overridden)\n * cn('text-red-500', 'text-blue-500') // 'text-blue-500'\n * ```\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","/**\n * CVA Utility - Class Variance Authority\n *\n * Type-safe utility for creating component variants with compound variants support.\n * Based on class-variance-authority but integrated with our design system.\n *\n * @example\n * ```tsx\n * const buttonVariants = cva('base-class', {\n * variants: {\n * variant: { primary: 'bg-blue-500', secondary: 'bg-gray-500' },\n * size: { sm: 'text-sm', md: 'text-base' }\n * },\n * defaultVariants: { variant: 'primary', size: 'md' }\n * })\n * ```\n */\n\nimport { type VariantProps, cva as cvaLib } from \"class-variance-authority\";\nimport type { ClassValue } from \"clsx\";\nimport { cn } from \"./cn\";\n\n/**\n * Re-export VariantProps for type inference\n */\nexport type { VariantProps };\n\n/**\n * Creates a type-safe variant function with compound variants support.\n *\n * Integrates with our cn() utility for proper Tailwind conflict resolution.\n * This is a thin wrapper around class-variance-authority's cva function\n * that ensures cn() is used for final class merging.\n *\n * @param base - Base classes that always apply\n * @param config - Variant configuration with variants, compoundVariants, and defaultVariants\n * @returns Function that returns className based on variant props\n *\n * @example\n * ```tsx\n * // Simple variants\n * const buttonVariants = cva('base-class', {\n * variants: {\n * variant: {\n * primary: 'bg-blue-500 text-white',\n * secondary: 'bg-gray-500 text-white'\n * },\n * size: {\n * sm: 'px-2 py-1 text-sm',\n * md: 'px-4 py-2 text-base'\n * }\n * },\n * defaultVariants: {\n * variant: 'primary',\n * size: 'md'\n * }\n * });\n *\n * // Usage\n * buttonVariants({ variant: 'primary', size: 'sm' })\n *\n * // Compound variants\n * const badgeVariants = cva('base', {\n * variants: {\n * variant: { success: '', error: '' },\n * style: { solid: '', outline: '' }\n * },\n * compoundVariants: [\n * { variant: 'success', style: 'solid', class: 'bg-green-500' },\n * { variant: 'error', style: 'outline', class: 'border-red-500' }\n * ]\n * });\n * ```\n */\nexport const cva = <T extends Record<string, Record<string, ClassValue>>>(\n base?: ClassValue,\n config?: Parameters<typeof cvaLib<T>>[1],\n) => {\n const variantFn = cvaLib(base, config);\n\n // Wrap to ensure cn() is used for final merge\n return ((props?: Parameters<typeof variantFn>[0]) => {\n const variantClasses = variantFn(props);\n return cn(variantClasses);\n }) as typeof variantFn;\n};\n","import { memo, forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport {\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\n\nexport type BadgeVariant =\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\"\n | \"neutral\"\n | \"primary\"\n | \"secondary\";\nexport type BadgeSize = \"sm\" | \"md\" | \"lg\";\nexport type BadgeStyle = \"solid\" | \"outline\";\n\nexport interface BadgeProps extends Omit<\n HTMLAttributes<HTMLSpanElement>,\n \"style\"\n> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n style?: BadgeStyle;\n children: ReactNode;\n \"aria-label\"?: string;\n}\n\n/**\n * Badge Component\n *\n * A versatile badge component for displaying status, priority, and other labels.\n * Follows Atomic Design principles as an Atom component.\n * Uses tokens for consistent theming.\n *\n * @example\n * ```tsx\n * <Badge variant=\"success\">Active</Badge>\n * <Badge variant=\"error\" size=\"lg\">Critical</Badge>\n * <Badge variant=\"info\" style=\"outline\">New</Badge>\n * ```\n */\n// Badge variants using CVA\nconst badgeVariants = cva(\n // Base classes\n cn(\n \"inline-flex\",\n \"items-center\",\n \"justify-center\",\n getTypographyWeight(\"label\"),\n getRadiusClass(\"md\"),\n \"border\",\n ),\n {\n variants: {\n variant: {\n success: \"\",\n warning: \"\",\n error: \"\",\n info: \"\",\n neutral: \"\",\n primary: \"\",\n secondary: \"\",\n },\n size: {\n sm: cn(\n getSpacingClass(\"1.5\", \"px\"),\n getSpacingClass(\"0.5\", \"py\"),\n getTypographySize(\"caption\"),\n ),\n md: cn(\n getSpacingClass(\"sm\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getTypographySize(\"caption\"),\n ),\n lg: cn(\n getSpacingClass(\"sm\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getTypographySize(\"bodySmall\"),\n ),\n },\n style: {\n solid: \"\",\n outline: \"\",\n },\n },\n compoundVariants: [\n // Solid style variants\n {\n variant: \"success\",\n style: \"solid\",\n class: cn(\"bg-success-bg\", \"text-success-dark\", \"border-success\"),\n },\n {\n variant: \"warning\",\n style: \"solid\",\n class: cn(\"bg-warning-bg\", \"text-warning-dark\", \"border-warning\"),\n },\n {\n variant: \"error\",\n style: \"solid\",\n class: cn(\"bg-error-bg\", \"text-error-dark\", \"border-error\"),\n },\n {\n variant: \"info\",\n style: \"solid\",\n class: cn(\"bg-info-bg\", \"text-info-dark\", \"border-info\"),\n },\n {\n variant: \"neutral\",\n style: \"solid\",\n class: cn(\"bg-surface-muted\", \"text-fg-primary\", \"border-line-default\"),\n },\n {\n variant: \"primary\",\n style: \"solid\",\n class: cn(\n \"bg-surface-brand-subtle\",\n \"text-fg-brand-emphasis\",\n \"border-line-brand\",\n ),\n },\n {\n variant: \"secondary\",\n style: \"solid\",\n // bg-pink-300: secondary solid badge — no semantic equivalent\n // (would shift 2 shades to bg-surface-secondary). Kept literal until\n // secondary brand surface palette expands beyond DEFAULT.\n class: cn(\n \"bg-pink-300\",\n \"text-fg-brand-secondary-emphasis\",\n \"border-line-secondary\",\n ),\n },\n // Outline style variants\n {\n variant: \"success\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-success\", \"text-fg-success\"),\n },\n {\n variant: \"warning\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-warning\", \"text-fg-warning\"),\n },\n {\n variant: \"error\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-error\", \"text-fg-error\"),\n },\n {\n variant: \"info\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-info\", \"text-fg-info\"),\n },\n {\n variant: \"neutral\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-line-default\", \"text-fg-secondary\"),\n },\n {\n variant: \"primary\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-line-brand\", \"text-fg-brand\"),\n },\n {\n variant: \"secondary\",\n style: \"outline\",\n class: cn(\n \"bg-transparent\",\n \"border-line-secondary\",\n \"text-fg-brand-secondary\",\n ),\n },\n ],\n defaultVariants: {\n variant: \"neutral\",\n size: \"md\",\n style: \"solid\",\n },\n },\n);\n\nconst Badge = memo(\n forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n {\n variant = \"neutral\",\n size = \"md\",\n style = \"solid\",\n className = \"\",\n children,\n \"aria-label\": ariaLabel,\n ...props\n },\n ref,\n ) {\n const classes = cn(badgeVariants({ variant, size, style }), className);\n\n // Best-effort accessible name resolution: explicit aria-label wins;\n // string children become the label; single-wrapped string children\n // (e.g. <Badge><span>Active</span></Badge>) are unwrapped one level.\n // Otherwise undefined and the consumer is responsible for naming\n // the badge externally.\n let accessibleLabel: string | undefined;\n if (ariaLabel) {\n accessibleLabel = ariaLabel;\n } else if (typeof children === \"string\") {\n accessibleLabel = children;\n } else if (\n typeof children === \"object\" &&\n children !== null &&\n \"props\" in children\n ) {\n const childProps = (children as { props?: { children?: unknown } }).props;\n if (childProps?.children && typeof childProps.children === \"string\") {\n accessibleLabel = childProps.children;\n }\n }\n\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={accessibleLabel}\n className={classes}\n {...props}\n >\n {children}\n </span>\n );\n }),\n);\n\nBadge.displayName = \"Badge\";\n\nexport default Badge;\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\nimport { forwardRef, type ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getTypographySize } from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\n\nexport type ChipVariant = \"default\" | \"outlined\" | \"filled\";\nexport type ChipSize = \"sm\" | \"md\" | \"lg\";\n\ninterface ChipBaseProps {\n children: ReactNode;\n variant?: ChipVariant;\n size?: ChipSize;\n selected?: boolean;\n disabled?: boolean;\n className?: string;\n \"aria-label\"?: string;\n tabIndex?: number;\n}\n\ninterface ChipStandardProps extends ChipBaseProps {\n asChild?: false;\n onRemove?: () => void;\n onClick?: () => void;\n}\n\n/**\n * `asChild` collapses the chip into a single node provided by the\n * consumer (typically `<Link>`). The non-interactive frame + inner\n * label-button + X structure is intentionally NOT rendered — the child\n * IS the chip. As a consequence:\n *\n * - `onClick` and `onRemove` are forbidden at the type level. The\n * child's own click handler (and `href`) is what fires; consumers\n * who need a removable selected filter use the standard\n * (non-asChild) form.\n * - `selected` still applies the visual classes via `chipVariants`,\n * but NO `aria-pressed` is emitted. Toggle-button semantics on\n * `<a>` would lie — a link isn't a two-state control. Consumers\n * that need the selected route surfaced to AT users should pass\n * `aria-current=\"page\"` (or similar) directly on the child Link.\n *\n * @see `.claude/rules/components.md` and the inline a11y notes below.\n */\ninterface ChipAsChildProps extends ChipBaseProps {\n asChild: true;\n /**\n * `onClick` is forbidden when `asChild` is true — the child element\n * owns interaction. Pass the handler (or `href`) on the child.\n */\n onClick?: never;\n /**\n * `onRemove` is forbidden when `asChild` is true — the collapsed\n * node has no slot for an X button. Use the standard (non-asChild)\n * form when removal is required.\n */\n onRemove?: never;\n}\n\nexport type ChipProps = ChipStandardProps | ChipAsChildProps;\n\n/**\n * Chip Component\n *\n * A chip/tag for labels, filters, or selected items.\n *\n * Standard form: an outer `<div>` frame (never interactive) with an\n * inner `<button>` label (when `onClick`) and a sibling X `<button>`\n * (when `onRemove`). This shape closes two axe violations the older\n * implementation hit — `aria-required-parent` (role=option without a\n * listbox) and `nested-interactive` (clickable outer + clickable X).\n *\n * `asChild` form: a single node provided by the consumer (e.g.\n * `<Link>`), with the chip's classes projected via Radix `Slot`. See\n * the `ChipAsChildProps` JSDoc for the a11y responsibility transfer\n * — the consumer's child carries `href`, focus behavior, and any\n * route-state ARIA (`aria-current`). Forbidden in this form:\n * `onClick`, `onRemove` (TS-level).\n *\n * @example\n * ```tsx\n * <Chip>Tag</Chip>\n * <Chip onRemove={() => console.log('removed')}>Removable</Chip>\n *\n * // Navigation chip — server-rendered, zero-JS-friendly.\n * <Chip asChild variant=\"filled\">\n * <Link href=\"/filtros/ativo\" prefetch aria-current=\"page\">Active</Link>\n * </Chip>\n * ```\n */\n// Chip variants using CVA\nconst chipVariants = cva(\n // Base classes\n cn(\n \"inline-flex\",\n \"items-center\",\n \"font-medium\",\n getRadiusClass(\"full\"),\n getSpacingClass(\"xs\", \"gap\"),\n ),\n {\n variants: {\n variant: {\n default: cn(\n \"bg-surface-muted\",\n \"text-fg-primary\",\n \"border\",\n \"border-line-default\",\n ),\n outlined: cn(\n \"bg-transparent\",\n \"text-fg-primary\",\n \"border\",\n \"border-line-default\",\n ),\n filled: cn(\n \"bg-surface-brand-strong\",\n \"text-fg-inverse\",\n \"border\",\n \"border-transparent\",\n ),\n },\n size: {\n sm: cn(\n getSpacingClass(\"xs\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getTypographySize(\"caption\"),\n ),\n md: cn(\n getSpacingClass(\"sm\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getTypographySize(\"bodySmall\"),\n ),\n lg: cn(\n getSpacingClass(\"md\", \"px\"),\n getSpacingClass(\"sm\", \"py\"),\n getTypographySize(\"body\"),\n ),\n },\n selected: {\n true: cn(\n \"bg-surface-brand-strong\",\n \"text-fg-inverse\",\n \"border\",\n \"border-line-brand\",\n ),\n false: \"\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n selected: true,\n variant: \"default\",\n class: \"\", // Override variant when selected\n },\n {\n selected: true,\n variant: \"outlined\",\n class: \"\", // Override variant when selected\n },\n {\n selected: true,\n variant: \"filled\",\n class: \"\", // Override variant when selected\n },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n selected: false,\n disabled: false,\n },\n },\n);\n\nconst Chip = forwardRef<HTMLDivElement, ChipProps>(function Chip(props, ref) {\n const {\n children,\n variant = \"default\",\n size = \"md\",\n selected = false,\n disabled = false,\n className = \"\",\n \"aria-label\": ariaLabel,\n tabIndex,\n asChild = false,\n } = props;\n\n // Generate accessible label\n const getAccessibleLabel = (): string | undefined => {\n if (ariaLabel) return ariaLabel;\n if (typeof children === \"string\") return children;\n // For non-string children, try to extract text content\n if (\n typeof children === \"object\" &&\n children !== null &&\n \"props\" in children\n ) {\n const childProps = (children as { props?: { children?: unknown } }).props;\n if (childProps?.children && typeof childProps.children === \"string\") {\n return childProps.children;\n }\n }\n return undefined;\n };\n\n const accessibleLabel = getAccessibleLabel();\n\n // asChild path: collapse the entire chip structure (frame + label\n // button + X) into the single consumer-provided node. The frame's\n // visual classes are projected onto the child via Slot.\n //\n // A11Y RESPONSIBILITY TRANSFER. The child element owns:\n // - focus (its native focus ring, or its own focus utilities)\n // - activation (its own click handler / href for navigation)\n // - route-state semantics: `aria-current=\"page\"` on a selected\n // Link is the right tool. `aria-pressed` is intentionally NOT\n // emitted here — a link is not a toggle button.\n // - disabled semantics: `aria-disabled` is set when `disabled` is\n // true, but it does NOT block navigation. Consumers that must\n // truly disable navigation should also gate `href` upstream.\n //\n // TS forbids `onClick` / `onRemove` in this form (see ChipAsChildProps).\n if (asChild) {\n return (\n <Slot\n ref={ref}\n className={cn(\n chipVariants({ variant, size, selected, disabled }),\n className,\n )}\n aria-label={ariaLabel}\n aria-disabled={disabled || undefined}\n tabIndex={tabIndex}\n >\n {children}\n </Slot>\n );\n }\n\n // Standard form below. Narrow `props` so the union picks up\n // onClick/onRemove handlers (forbidden when asChild=true at TS level).\n const { onRemove, onClick } = props as ChipStandardProps;\n\n // Architecture:\n // The label is a real `<button>` whenever the chip is meant to be\n // activated (`onClick` provided). The X is a sibling `<button>` when\n // `onRemove` is provided. The outer `<div>` is NEVER interactive —\n // no `role`, no `tabIndex`, no event handlers. This unifies what\n // used to be three structural variants:\n // - `onClick` only → outer `role=\"button\"` [old]\n // - `onClick` + `onRemove` (no selected) → label-button [PR68]\n // - `selected` → outer `role=\"option\"` [old, axe-flagged]\n // into one consistent shape: label is the actor, outer is the chip\n // chrome (visual frame).\n //\n // Why this matters for a11y:\n // - `role=\"option\"` outside `role=\"listbox\"` violates `aria-required-\n // parent`. The old `selected` path failed axe in every standalone\n // chip. Moving the action to a native `<button>` with\n // `aria-pressed={selected}` (toggle button pattern) communicates\n // state correctly without requiring a listbox parent.\n // - The interactive outer + inner X button produced nested-interactive\n // whenever the consumer combined `selected` (or `onClick`) with\n // `onRemove`. Outer non-interactive + sibling buttons fixes both\n // cases at once.\n //\n // `selected` with no `onClick` is decorative only — the chip CANNOT\n // toggle, so it gets no `aria-pressed` (which would lie) and no role.\n // The visual `selected` styling (chipVariants.selected) applies, but\n // AT users read it as static text. Consumers who want the state\n // communicated must also pass `onClick` to make it a real toggle.\n const useLabelButton = onClick !== undefined;\n const interactive = useLabelButton && !disabled;\n\n // Keyboard handler for the label-button. Native `<button>` activates on\n // Enter/Space in real browsers, but JSDOM does NOT simulate Enter → click,\n // so this preserves the previous test-friendly behavior AND adds explicit\n // `preventDefault` (the original outer-as-button needed it; on a native\n // button this is mostly belt-and-suspenders but harmless).\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.();\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n chipVariants({ variant, size, selected, disabled }),\n onRemove && getSpacingClass(\"xs\", \"pr\"),\n className,\n )}\n aria-disabled={disabled}\n >\n {useLabelButton ? (\n <button\n type=\"button\"\n onClick={disabled ? undefined : onClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n aria-pressed={selected ? true : undefined}\n aria-label={ariaLabel || accessibleLabel}\n tabIndex={\n tabIndex !== undefined ? tabIndex : interactive ? 0 : undefined\n }\n className={cn(\n \"flex-1\",\n \"bg-transparent\",\n \"border-0\",\n getSpacingClass(\"none\", \"p\"),\n \"text-inherit\",\n \"text-left\",\n \"cursor-pointer\",\n \"focus:outline-none\",\n \"focus:ring-2\",\n \"focus:ring-line-focus\",\n \"focus:ring-offset-2\",\n getRadiusClass(\"full\"),\n )}\n >\n {children}\n </button>\n ) : (\n <span>{children}</span>\n )}\n {onRemove && !disabled && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n className={cn(\n getSpacingClass(\"xs\", \"ml\"),\n \"hover:bg-tint-hover\",\n getRadiusClass(\"full\"),\n getSpacingClass(\"xs\", \"p\"),\n \"transition-colors\",\n \"focus:outline-none\",\n \"focus:ring-2\",\n \"focus:ring-line-focus\",\n \"focus:ring-offset-1\",\n )}\n aria-label={`Remove ${accessibleLabel || \"chip\"}`}\n >\n <X className=\"h-3 w-3\" aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n});\n\nChip.displayName = \"Chip\";\n\nexport default Chip;\n","import type { HTMLAttributes } from \"react\";\nimport { AlertCircle } from \"lucide-react\";\nimport { getTypographySize } from \"../../tokens/typography\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { cn } from \"../../utils\";\n\nexport interface ErrorMessageProps extends HTMLAttributes<HTMLDivElement> {\n message: string;\n id?: string;\n}\n\n/**\n * ErrorMessage Component\n *\n * A component for displaying validation error messages.\n * Follows Atomic Design principles as an Atom component.\n *\n * @example\n * ```tsx\n * <ErrorMessage message=\"This field is required\" id=\"email-error\" />\n * ```\n */\nexport default function ErrorMessage({\n message,\n id,\n className = \"\",\n ...props\n}: ErrorMessageProps) {\n const baseClasses = [\n getSpacingClass(\"xs\", \"mt\"),\n getTypographySize(\"bodySmall\"),\n \"text-fg-error\",\n \"flex\",\n \"items-center\",\n getSpacingClass(\"xs\", \"gap\"),\n ];\n\n const classes = cn(...baseClasses, className);\n\n return (\n <div role=\"alert\" id={id} className={classes} aria-live=\"polite\" {...props}>\n <AlertCircle className=\"h-4 w-4 shrink-0\" aria-hidden=\"true\" />\n <span>{message}</span>\n </div>\n );\n}\n","import type { HTMLAttributes } from \"react\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { cn } from \"../../utils\";\n\nexport interface InfoProps extends HTMLAttributes<HTMLDivElement> {\n variant?: \"info\" | \"warning\" | \"error\";\n}\n\nexport default function Info({\n variant = \"info\",\n className,\n ...props\n}: InfoProps) {\n const variantClasses = {\n warning: cn(\"bg-warning-bg\", \"text-warning-dark\", \"border-warning\"),\n error: cn(\"bg-error-bg\", \"text-error-dark\", \"border-error\"),\n info: cn(\"bg-info-bg\", \"text-info-dark\", \"border-info\"),\n };\n\n return (\n <div\n role=\"alert\"\n className={cn(\n \"border\",\n getSpacingClass(\"base\", \"px\"),\n getSpacingClass(\"sm\", \"py\"),\n getRadiusClass(\"lg\"),\n variantClasses[variant],\n className,\n )}\n {...props}\n />\n );\n}\n","import type { LabelHTMLAttributes } from \"react\";\nimport { forwardRef, memo } from \"react\";\nimport {\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens/typography\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { cn } from \"../../utils\";\n\ninterface Props extends LabelHTMLAttributes<HTMLLabelElement> {\n variant?: \"default\" | \"required\" | \"optional\";\n children: React.ReactNode;\n}\n\nconst labelBaseClasses = cn(\n \"block\",\n getTypographySize(\"label\"),\n getTypographyWeight(\"label\"),\n \"text-fg-primary\",\n);\n\nconst labelVariantClasses: Record<NonNullable<Props[\"variant\"]>, string> = {\n default: \"\",\n required: cn(\n \"after:content-['*']\",\n `after:${getSpacingClass(\"0.5\", \"ml\")}`,\n \"after:text-fg-error\",\n ),\n optional: cn(\n \"after:content-['(optional)']\",\n `after:${getSpacingClass(\"xs\", \"ml\")}`,\n \"after:text-fg-tertiary\",\n \"after:font-normal\",\n ),\n};\n\n/**\n * Label Component\n *\n * A styled label component for form inputs.\n * Follows Atomic Design principles as an Atom component.\n *\n * @example\n * ```tsx\n * <Label htmlFor=\"email\" variant=\"required\">\n * Email Address\n * </Label>\n * ```\n */\nconst Label = memo(\n forwardRef<HTMLLabelElement, Props>(function Label(\n { variant = \"default\", className = \"\", children, ...props },\n ref,\n ) {\n const classes = cn(\n labelBaseClasses,\n labelVariantClasses[variant],\n className,\n );\n\n return (\n <label ref={ref} className={classes} {...props}>\n {children}\n </label>\n );\n }),\n);\n\nLabel.displayName = \"Label\";\n\nexport default Label;\n","/**\n * Brand Primitive Palettes — TS mirror of src/styles/primitives/brand.css\n *\n * Brand-primary: institutional navy from brasil-a-vera globals.css.\n * Brand-secondary: OKLCH-derived from ADR-024 brasil-a-vera purple\n * (reproducible via scripts/derive-brand-secondary.mjs).\n *\n * Distinct from PRIMITIVE_COLORS Tailwind tones (indigo/pink/cyan/...)\n * which stay honest to their official Tailwind v4 values. Semantic tokens\n * point at these brand palettes, not at Tailwind tones.\n *\n * @brand brasil-a-vera (default, overridable)\n */\n\nimport type { ColorPalette, ColorScale, ColorToken } from \"./types\";\n\nfunction createBrandToken(\n hex: string,\n family: \"brand-primary\" | \"brand-secondary\",\n scale: ColorScale,\n): ColorToken {\n const rgb = hexToRgb(hex);\n const hsl = hexToHsl(hex);\n return {\n hex,\n rgb,\n hsl,\n cssVar: `var(--color-${family}-${scale})`,\n tailwind: `${family}-${scale}`,\n };\n}\n\nfunction hexToRgb(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return \"0, 0, 0\";\n return `${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(result[3], 16)}`;\n}\n\nfunction hexToHsl(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return \"0, 0%, 0%\";\n\n const r = parseInt(result[1], 16) / 255;\n const g = parseInt(result[2], 16) / 255;\n const b = parseInt(result[3], 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return `${Math.round(h * 360)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%`;\n}\n\n/**\n * Brand Primary — institutional navy\n */\nexport const BRAND_PRIMARY: ColorPalette = {\n 50: createBrandToken(\"#f0f4f8\", \"brand-primary\", 50),\n 100: createBrandToken(\"#d9e2ec\", \"brand-primary\", 100),\n 200: createBrandToken(\"#bcccdc\", \"brand-primary\", 200),\n 300: createBrandToken(\"#9fb3c8\", \"brand-primary\", 300),\n 400: createBrandToken(\"#7390ad\", \"brand-primary\", 400),\n 500: createBrandToken(\"#486581\", \"brand-primary\", 500),\n 600: createBrandToken(\"#334e68\", \"brand-primary\", 600),\n 700: createBrandToken(\"#243b53\", \"brand-primary\", 700),\n 800: createBrandToken(\"#1a2a3a\", \"brand-primary\", 800),\n 900: createBrandToken(\"#102a43\", \"brand-primary\", 900),\n 950: createBrandToken(\"#061a35\", \"brand-primary\", 950),\n};\n\n/**\n * Brand Secondary — ADR-024 purple, OKLCH-derived (hue 295)\n */\nexport const BRAND_SECONDARY: ColorPalette = {\n 50: createBrandToken(\"#f7f5ff\", \"brand-secondary\", 50),\n 100: createBrandToken(\"#eee9ff\", \"brand-secondary\", 100),\n 200: createBrandToken(\"#e0d6ff\", \"brand-secondary\", 200),\n 300: createBrandToken(\"#cbb8ff\", \"brand-secondary\", 300),\n 400: createBrandToken(\"#aa89fc\", \"brand-secondary\", 400),\n 500: createBrandToken(\"#8e58f2\", \"brand-secondary\", 500),\n 600: createBrandToken(\"#703bc8\", \"brand-secondary\", 600),\n 700: createBrandToken(\"#582aa2\", \"brand-secondary\", 700),\n 800: createBrandToken(\"#44227e\", \"brand-secondary\", 800),\n 900: createBrandToken(\"#32185d\", \"brand-secondary\", 900),\n 950: createBrandToken(\"#180635\", \"brand-secondary\", 950),\n};\n","/**\n * Design System - Primitive Color Tokens\n *\n * Complete color palettes with all shades (50-950).\n * These match the CSS variables defined in primitives/colors.css\n *\n * @brand brasil-a-vera (default, overridable)\n * @version 1.0.0\n */\n\nimport type {\n ColorPalette,\n ColorToken,\n ColorScale,\n PrimitiveColorName,\n PrimitiveColors,\n} from \"./types\";\nimport { BRAND_PRIMARY, BRAND_SECONDARY } from \"./brand\";\n\n/**\n * Helper to create a color token\n */\nfunction createToken(\n hex: string,\n colorName: string,\n scale: ColorScale,\n): ColorToken {\n const rgb = hexToRgb(hex);\n const hsl = hexToHsl(hex);\n return {\n hex,\n rgb,\n hsl,\n cssVar: `var(--color-${colorName}-${scale})`,\n tailwind: `${colorName}-${scale}`,\n };\n}\n\n/**\n * Convert hex to RGB string\n */\nfunction hexToRgb(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return \"0, 0, 0\";\n return `${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(result[3], 16)}`;\n}\n\n/**\n * Convert hex to HSL string\n */\nfunction hexToHsl(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return \"0, 0%, 0%\";\n\n const r = parseInt(result[1], 16) / 255;\n const g = parseInt(result[2], 16) / 255;\n const b = parseInt(result[3], 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return `${Math.round(h * 360)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%`;\n}\n\n/**\n * Indigo - Primary Brand Color\n */\nexport const INDIGO: ColorPalette = {\n 50: createToken(\"#eef2ff\", \"indigo\", 50),\n 100: createToken(\"#e0e7ff\", \"indigo\", 100),\n 200: createToken(\"#c7d2fe\", \"indigo\", 200),\n 300: createToken(\"#a5b4fc\", \"indigo\", 300),\n 400: createToken(\"#818cf8\", \"indigo\", 400),\n 500: createToken(\"#6366f1\", \"indigo\", 500),\n 600: createToken(\"#4f46e5\", \"indigo\", 600),\n 700: createToken(\"#4338ca\", \"indigo\", 700),\n 800: createToken(\"#3730a3\", \"indigo\", 800),\n 900: createToken(\"#312e81\", \"indigo\", 900),\n 950: createToken(\"#1e1b4b\", \"indigo\", 950),\n};\n\n/**\n * Violet - Secondary Brand Color\n */\nexport const VIOLET: ColorPalette = {\n 50: createToken(\"#f5f3ff\", \"violet\", 50),\n 100: createToken(\"#ede9fe\", \"violet\", 100),\n 200: createToken(\"#ddd6fe\", \"violet\", 200),\n 300: createToken(\"#c4b5fd\", \"violet\", 300),\n 400: createToken(\"#a78bfa\", \"violet\", 400),\n 500: createToken(\"#8b5cf6\", \"violet\", 500),\n 600: createToken(\"#7c3aed\", \"violet\", 600),\n 700: createToken(\"#6d28d9\", \"violet\", 700),\n 800: createToken(\"#5b21b6\", \"violet\", 800),\n 900: createToken(\"#4c1d95\", \"violet\", 900),\n 950: createToken(\"#2e1065\", \"violet\", 950),\n};\n\n/**\n * Cyan - Accent Color\n */\nexport const CYAN: ColorPalette = {\n 50: createToken(\"#ecfeff\", \"cyan\", 50),\n 100: createToken(\"#cffafe\", \"cyan\", 100),\n 200: createToken(\"#a5f3fc\", \"cyan\", 200),\n 300: createToken(\"#67e8f9\", \"cyan\", 300),\n 400: createToken(\"#22d3ee\", \"cyan\", 400),\n 500: createToken(\"#06b6d4\", \"cyan\", 500),\n 600: createToken(\"#0891b2\", \"cyan\", 600),\n 700: createToken(\"#0e7490\", \"cyan\", 700),\n 800: createToken(\"#155e75\", \"cyan\", 800),\n 900: createToken(\"#164e63\", \"cyan\", 900),\n 950: createToken(\"#083344\", \"cyan\", 950),\n};\n\n/**\n * Slate - Neutral Color\n */\nexport const SLATE: ColorPalette = {\n 50: createToken(\"#f8fafc\", \"slate\", 50),\n 100: createToken(\"#f1f5f9\", \"slate\", 100),\n 200: createToken(\"#e2e8f0\", \"slate\", 200),\n 300: createToken(\"#cbd5e1\", \"slate\", 300),\n 400: createToken(\"#94a3b8\", \"slate\", 400),\n 500: createToken(\"#64748b\", \"slate\", 500),\n 600: createToken(\"#475569\", \"slate\", 600),\n 700: createToken(\"#334155\", \"slate\", 700),\n 800: createToken(\"#1e293b\", \"slate\", 800),\n 900: createToken(\"#0f172a\", \"slate\", 900),\n 950: createToken(\"#020617\", \"slate\", 950),\n};\n\n/**\n * Gray - Alternative Neutral\n */\nexport const GRAY: ColorPalette = {\n 50: createToken(\"#f9fafb\", \"gray\", 50),\n 100: createToken(\"#f3f4f6\", \"gray\", 100),\n 200: createToken(\"#e5e7eb\", \"gray\", 200),\n 300: createToken(\"#d1d5db\", \"gray\", 300),\n 400: createToken(\"#9ca3af\", \"gray\", 400),\n 500: createToken(\"#6b7280\", \"gray\", 500),\n 600: createToken(\"#4b5563\", \"gray\", 600),\n 700: createToken(\"#374151\", \"gray\", 700),\n 800: createToken(\"#1f2937\", \"gray\", 800),\n 900: createToken(\"#111827\", \"gray\", 900),\n 950: createToken(\"#030712\", \"gray\", 950),\n};\n\n/**\n * Emerald - Success Color\n */\nexport const EMERALD: ColorPalette = {\n 50: createToken(\"#ecfdf5\", \"emerald\", 50),\n 100: createToken(\"#d1fae5\", \"emerald\", 100),\n 200: createToken(\"#a7f3d0\", \"emerald\", 200),\n 300: createToken(\"#6ee7b7\", \"emerald\", 300),\n 400: createToken(\"#34d399\", \"emerald\", 400),\n 500: createToken(\"#10b981\", \"emerald\", 500),\n 600: createToken(\"#059669\", \"emerald\", 600),\n 700: createToken(\"#047857\", \"emerald\", 700),\n 800: createToken(\"#065f46\", \"emerald\", 800),\n 900: createToken(\"#064e3b\", \"emerald\", 900),\n 950: createToken(\"#022c22\", \"emerald\", 950),\n};\n\n/**\n * Green - Alternative Success\n */\nexport const GREEN: ColorPalette = {\n 50: createToken(\"#f0fdf4\", \"green\", 50),\n 100: createToken(\"#dcfce7\", \"green\", 100),\n 200: createToken(\"#bbf7d0\", \"green\", 200),\n 300: createToken(\"#86efac\", \"green\", 300),\n 400: createToken(\"#4ade80\", \"green\", 400),\n 500: createToken(\"#22c55e\", \"green\", 500),\n 600: createToken(\"#16a34a\", \"green\", 600),\n 700: createToken(\"#15803d\", \"green\", 700),\n 800: createToken(\"#166534\", \"green\", 800),\n 900: createToken(\"#14532d\", \"green\", 900),\n 950: createToken(\"#052e16\", \"green\", 950),\n};\n\n/**\n * Amber - Warning Color\n */\nexport const AMBER: ColorPalette = {\n 50: createToken(\"#fffbeb\", \"amber\", 50),\n 100: createToken(\"#fef3c7\", \"amber\", 100),\n 200: createToken(\"#fde68a\", \"amber\", 200),\n 300: createToken(\"#fcd34d\", \"amber\", 300),\n 400: createToken(\"#fbbf24\", \"amber\", 400),\n 500: createToken(\"#f59e0b\", \"amber\", 500),\n 600: createToken(\"#d97706\", \"amber\", 600),\n 700: createToken(\"#b45309\", \"amber\", 700),\n 800: createToken(\"#92400e\", \"amber\", 800),\n 900: createToken(\"#78350f\", \"amber\", 900),\n 950: createToken(\"#451a03\", \"amber\", 950),\n};\n\n/**\n * Yellow - Alternative Warning\n */\nexport const YELLOW: ColorPalette = {\n 50: createToken(\"#fefce8\", \"yellow\", 50),\n 100: createToken(\"#fef9c3\", \"yellow\", 100),\n 200: createToken(\"#fef08a\", \"yellow\", 200),\n 300: createToken(\"#fde047\", \"yellow\", 300),\n 400: createToken(\"#facc15\", \"yellow\", 400),\n 500: createToken(\"#eab308\", \"yellow\", 500),\n 600: createToken(\"#ca8a04\", \"yellow\", 600),\n 700: createToken(\"#a16207\", \"yellow\", 700),\n 800: createToken(\"#854d0e\", \"yellow\", 800),\n 900: createToken(\"#713f12\", \"yellow\", 900),\n 950: createToken(\"#422006\", \"yellow\", 950),\n};\n\n/**\n * Orange - Energetic Accent\n */\nexport const ORANGE: ColorPalette = {\n 50: createToken(\"#fff7ed\", \"orange\", 50),\n 100: createToken(\"#ffedd5\", \"orange\", 100),\n 200: createToken(\"#fed7aa\", \"orange\", 200),\n 300: createToken(\"#fdba74\", \"orange\", 300),\n 400: createToken(\"#fb923c\", \"orange\", 400),\n 500: createToken(\"#f97316\", \"orange\", 500),\n 600: createToken(\"#ea580c\", \"orange\", 600),\n 700: createToken(\"#c2410c\", \"orange\", 700),\n 800: createToken(\"#9a3412\", \"orange\", 800),\n 900: createToken(\"#7c2d12\", \"orange\", 900),\n 950: createToken(\"#431407\", \"orange\", 950),\n};\n\n/**\n * Rose - Error Color\n */\nexport const ROSE: ColorPalette = {\n 50: createToken(\"#fff1f2\", \"rose\", 50),\n 100: createToken(\"#ffe4e6\", \"rose\", 100),\n 200: createToken(\"#fecdd3\", \"rose\", 200),\n 300: createToken(\"#fda4af\", \"rose\", 300),\n 400: createToken(\"#fb7185\", \"rose\", 400),\n 500: createToken(\"#f43f5e\", \"rose\", 500),\n 600: createToken(\"#e11d48\", \"rose\", 600),\n 700: createToken(\"#be123c\", \"rose\", 700),\n 800: createToken(\"#9f1239\", \"rose\", 800),\n 900: createToken(\"#881337\", \"rose\", 900),\n 950: createToken(\"#4c0519\", \"rose\", 950),\n};\n\n/**\n * Red - Alternative Error\n */\nexport const RED: ColorPalette = {\n 50: createToken(\"#fef2f2\", \"red\", 50),\n 100: createToken(\"#fee2e2\", \"red\", 100),\n 200: createToken(\"#fecaca\", \"red\", 200),\n 300: createToken(\"#fca5a5\", \"red\", 300),\n 400: createToken(\"#f87171\", \"red\", 400),\n 500: createToken(\"#ef4444\", \"red\", 500),\n 600: createToken(\"#dc2626\", \"red\", 600),\n 700: createToken(\"#b91c1c\", \"red\", 700),\n 800: createToken(\"#991b1b\", \"red\", 800),\n 900: createToken(\"#7f1d1d\", \"red\", 900),\n 950: createToken(\"#450a0a\", \"red\", 950),\n};\n\n/**\n * Sky - Info Color\n */\nexport const SKY: ColorPalette = {\n 50: createToken(\"#f0f9ff\", \"sky\", 50),\n 100: createToken(\"#e0f2fe\", \"sky\", 100),\n 200: createToken(\"#bae6fd\", \"sky\", 200),\n 300: createToken(\"#7dd3fc\", \"sky\", 300),\n 400: createToken(\"#38bdf8\", \"sky\", 400),\n 500: createToken(\"#0ea5e9\", \"sky\", 500),\n 600: createToken(\"#0284c7\", \"sky\", 600),\n 700: createToken(\"#0369a1\", \"sky\", 700),\n 800: createToken(\"#075985\", \"sky\", 800),\n 900: createToken(\"#0c4a6e\", \"sky\", 900),\n 950: createToken(\"#082f49\", \"sky\", 950),\n};\n\n/**\n * Blue - Alternative Info\n */\nexport const BLUE: ColorPalette = {\n 50: createToken(\"#eff6ff\", \"blue\", 50),\n 100: createToken(\"#dbeafe\", \"blue\", 100),\n 200: createToken(\"#bfdbfe\", \"blue\", 200),\n 300: createToken(\"#93c5fd\", \"blue\", 300),\n 400: createToken(\"#60a5fa\", \"blue\", 400),\n 500: createToken(\"#3b82f6\", \"blue\", 500),\n 600: createToken(\"#2563eb\", \"blue\", 600),\n 700: createToken(\"#1d4ed8\", \"blue\", 700),\n 800: createToken(\"#1e40af\", \"blue\", 800),\n 900: createToken(\"#1e3a8a\", \"blue\", 900),\n 950: createToken(\"#172554\", \"blue\", 950),\n};\n\n/**\n * Fuchsia - Creative Accent\n */\nexport const FUCHSIA: ColorPalette = {\n 50: createToken(\"#fdf4ff\", \"fuchsia\", 50),\n 100: createToken(\"#fae8ff\", \"fuchsia\", 100),\n 200: createToken(\"#f5d0fe\", \"fuchsia\", 200),\n 300: createToken(\"#f0abfc\", \"fuchsia\", 300),\n 400: createToken(\"#e879f9\", \"fuchsia\", 400),\n 500: createToken(\"#d946ef\", \"fuchsia\", 500),\n 600: createToken(\"#c026d3\", \"fuchsia\", 600),\n 700: createToken(\"#a21caf\", \"fuchsia\", 700),\n 800: createToken(\"#86198f\", \"fuchsia\", 800),\n 900: createToken(\"#701a75\", \"fuchsia\", 900),\n 950: createToken(\"#4a044e\", \"fuchsia\", 950),\n};\n\n/**\n * Pink - Soft Accent\n */\nexport const PINK: ColorPalette = {\n 50: createToken(\"#fdf2f8\", \"pink\", 50),\n 100: createToken(\"#fce7f3\", \"pink\", 100),\n 200: createToken(\"#fbcfe8\", \"pink\", 200),\n 300: createToken(\"#f9a8d4\", \"pink\", 300),\n 400: createToken(\"#f472b6\", \"pink\", 400),\n 500: createToken(\"#ec4899\", \"pink\", 500),\n 600: createToken(\"#db2777\", \"pink\", 600),\n 700: createToken(\"#be185d\", \"pink\", 700),\n 800: createToken(\"#9d174d\", \"pink\", 800),\n 900: createToken(\"#831843\", \"pink\", 900),\n 950: createToken(\"#500724\", \"pink\", 950),\n};\n\n/**\n * Purple - Deep Accent\n */\nexport const PURPLE: ColorPalette = {\n 50: createToken(\"#faf5ff\", \"purple\", 50),\n 100: createToken(\"#f3e8ff\", \"purple\", 100),\n 200: createToken(\"#e9d5ff\", \"purple\", 200),\n 300: createToken(\"#d8b4fe\", \"purple\", 300),\n 400: createToken(\"#c084fc\", \"purple\", 400),\n 500: createToken(\"#a855f7\", \"purple\", 500),\n 600: createToken(\"#9333ea\", \"purple\", 600),\n 700: createToken(\"#7e22ce\", \"purple\", 700),\n 800: createToken(\"#6b21a8\", \"purple\", 800),\n 900: createToken(\"#581c87\", \"purple\", 900),\n 950: createToken(\"#3b0764\", \"purple\", 950),\n};\n\n/**\n * Teal - Fresh Accent\n */\nexport const TEAL: ColorPalette = {\n 50: createToken(\"#f0fdfa\", \"teal\", 50),\n 100: createToken(\"#ccfbf1\", \"teal\", 100),\n 200: createToken(\"#99f6e4\", \"teal\", 200),\n 300: createToken(\"#5eead4\", \"teal\", 300),\n 400: createToken(\"#2dd4bf\", \"teal\", 400),\n 500: createToken(\"#14b8a6\", \"teal\", 500),\n 600: createToken(\"#0d9488\", \"teal\", 600),\n 700: createToken(\"#0f766e\", \"teal\", 700),\n 800: createToken(\"#115e59\", \"teal\", 800),\n 900: createToken(\"#134e4a\", \"teal\", 900),\n 950: createToken(\"#042f2e\", \"teal\", 950),\n};\n\n/**\n * Lime - Vibrant Success\n */\nexport const LIME: ColorPalette = {\n 50: createToken(\"#f7fee7\", \"lime\", 50),\n 100: createToken(\"#ecfccb\", \"lime\", 100),\n 200: createToken(\"#d9f99d\", \"lime\", 200),\n 300: createToken(\"#bef264\", \"lime\", 300),\n 400: createToken(\"#a3e635\", \"lime\", 400),\n 500: createToken(\"#84cc16\", \"lime\", 500),\n 600: createToken(\"#65a30d\", \"lime\", 600),\n 700: createToken(\"#4d7c0f\", \"lime\", 700),\n 800: createToken(\"#3f6212\", \"lime\", 800),\n 900: createToken(\"#365314\", \"lime\", 900),\n 950: createToken(\"#1a2e05\", \"lime\", 950),\n};\n\n/**\n * All primitive colors combined\n */\nexport const PRIMITIVE_COLORS: PrimitiveColors = {\n \"brand-primary\": BRAND_PRIMARY,\n \"brand-secondary\": BRAND_SECONDARY,\n indigo: INDIGO,\n violet: VIOLET,\n cyan: CYAN,\n slate: SLATE,\n gray: GRAY,\n emerald: EMERALD,\n green: GREEN,\n amber: AMBER,\n yellow: YELLOW,\n orange: ORANGE,\n rose: ROSE,\n red: RED,\n sky: SKY,\n blue: BLUE,\n fuchsia: FUCHSIA,\n pink: PINK,\n purple: PURPLE,\n teal: TEAL,\n lime: LIME,\n};\n\n/**\n * Get a primitive color by name and scale\n */\nexport function getPrimitiveColor(\n name: PrimitiveColorName,\n scale: ColorScale,\n): ColorToken {\n return PRIMITIVE_COLORS[name][scale];\n}\n\n/**\n * Get all scales for a primitive color\n */\nexport function getPrimitiveColorPalette(\n name: PrimitiveColorName,\n): ColorPalette {\n return PRIMITIVE_COLORS[name];\n}\n","/**\n * Shadow Tokens\n *\n * Centralized shadow system for consistent elevation and depth.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type ShadowSize = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"inner\";\n\nexport interface ShadowToken {\n value: string;\n tailwind: string;\n description: string;\n}\n\n/**\n * Shadow Token Factory\n * Creates shadow tokens with consistent values\n */\nexport class ShadowTokenFactory {\n /**\n * Create a shadow token\n */\n static create(size: ShadowSize): ShadowToken {\n const shadowMap: Record<\n ShadowSize,\n { value: string; tailwind: string; description: string }\n > = {\n none: {\n value: \"none\",\n tailwind: \"shadow-none\",\n description: \"No shadow\",\n },\n sm: {\n value: \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n tailwind: \"shadow-sm\",\n description: \"Small shadow for subtle elevation\",\n },\n md: {\n value: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-md\",\n description: \"Medium shadow for cards and elevated elements\",\n },\n lg: {\n value:\n \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-lg\",\n description: \"Large shadow for modals and dropdowns\",\n },\n xl: {\n value:\n \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-xl\",\n description: \"Extra large shadow for prominent modals\",\n },\n \"2xl\": {\n value:\n \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-2xl\",\n description: \"2X large shadow for maximum elevation\",\n },\n inner: {\n value: \"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)\",\n tailwind: \"shadow-inner\",\n description: \"Inner shadow for inset elements\",\n },\n };\n\n return shadowMap[size];\n }\n}\n\n/**\n * Pre-defined shadow tokens\n */\nexport const SHADOW_TOKENS = {\n none: ShadowTokenFactory.create(\"none\"),\n sm: ShadowTokenFactory.create(\"sm\"),\n md: ShadowTokenFactory.create(\"md\"),\n lg: ShadowTokenFactory.create(\"lg\"),\n xl: ShadowTokenFactory.create(\"xl\"),\n \"2xl\": ShadowTokenFactory.create(\"2xl\"),\n inner: ShadowTokenFactory.create(\"inner\"),\n} as const;\n\n/**\n * Helper function to get shadow token\n */\nexport function getShadow(size: keyof typeof SHADOW_TOKENS): ShadowToken {\n return SHADOW_TOKENS[size];\n}\n\n/**\n * Helper function to get shadow as Tailwind class\n */\nexport function getShadowClass(size: keyof typeof SHADOW_TOKENS): string {\n return SHADOW_TOKENS[size].tailwind;\n}\n","/**\n * Border Tokens\n *\n * Centralized border system for consistent borders and dividers.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type BorderWidth = \"none\" | \"thin\" | \"base\" | \"medium\" | \"thick\";\nexport type BorderStyle = \"solid\" | \"dashed\" | \"dotted\";\n\nexport interface BorderToken {\n width: {\n value: number;\n px: string;\n tailwind: string;\n };\n style: BorderStyle;\n description: string;\n}\n\n/**\n * Border Token Factory\n * Creates border tokens with consistent values\n */\nexport class BorderTokenFactory {\n /**\n * Create a border width token\n */\n static createWidth(width: BorderWidth): BorderToken[\"width\"] {\n const widthMap: Record<BorderWidth, { px: number; tailwind: string }> = {\n none: {\n px: 0,\n tailwind: \"border-0\",\n },\n thin: {\n px: 1,\n tailwind: \"border\",\n },\n base: {\n px: 1,\n tailwind: \"border\",\n },\n medium: {\n px: 2,\n tailwind: \"border-2\",\n },\n thick: {\n px: 4,\n tailwind: \"border-4\",\n },\n };\n\n const config = widthMap[width];\n return {\n value: config.px,\n px: `${config.px}px`,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create a complete border token\n */\n static create(width: BorderWidth, style: BorderStyle = \"solid\"): BorderToken {\n return {\n width: this.createWidth(width),\n style,\n description: `${width} ${style} border`,\n };\n }\n}\n\n/**\n * Pre-defined border tokens\n */\nexport const BORDER_TOKENS = {\n none: BorderTokenFactory.create(\"none\"),\n thin: BorderTokenFactory.create(\"thin\"),\n base: BorderTokenFactory.create(\"base\"),\n medium: BorderTokenFactory.create(\"medium\"),\n thick: BorderTokenFactory.create(\"thick\"),\n // Dashed variants\n thinDashed: BorderTokenFactory.create(\"thin\", \"dashed\"),\n baseDashed: BorderTokenFactory.create(\"base\", \"dashed\"),\n // Dotted variants\n thinDotted: BorderTokenFactory.create(\"thin\", \"dotted\"),\n baseDotted: BorderTokenFactory.create(\"base\", \"dotted\"),\n} as const;\n\n/**\n * Helper function to get border token\n */\nexport function getBorder(size: keyof typeof BORDER_TOKENS): BorderToken {\n return BORDER_TOKENS[size];\n}\n\n/**\n * Helper function to get border width as Tailwind class\n */\nexport function getBorderWidthClass(width: BorderWidth): string {\n return BorderTokenFactory.createWidth(width).tailwind;\n}\n\n/**\n * Helper function to get border style as Tailwind class\n */\nexport function getBorderStyleClass(style: BorderStyle): string {\n const styleMap: Record<BorderStyle, string> = {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n dotted: \"border-dotted\",\n };\n return styleMap[style];\n}\n\n/**\n * Helper function to get complete border classes\n */\nexport function getBorderClasses(\n width: BorderWidth,\n style: BorderStyle = \"solid\",\n): string {\n return `${getBorderWidthClass(width)} ${getBorderStyleClass(style)}`;\n}\n","/**\n * Breakpoint Tokens\n *\n * Responsive breakpoints for consistent media queries.\n * Uses Factory Pattern for type-safe breakpoint creation.\n */\n\nexport type BreakpointName = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nexport interface BreakpointToken {\n name: BreakpointName;\n minWidth: number;\n px: string;\n rem: string;\n tailwind: string;\n}\n\n/**\n * Breakpoint Token Factory\n * Creates breakpoint tokens with consistent values\n */\nexport class BreakpointTokenFactory {\n /**\n * Create breakpoint token\n */\n static create(name: BreakpointName): BreakpointToken {\n const breakpointMap: Record<\n BreakpointName,\n { minWidth: number; tailwind: string }\n > = {\n sm: { minWidth: 640, tailwind: \"sm\" },\n md: { minWidth: 768, tailwind: \"md\" },\n lg: { minWidth: 1024, tailwind: \"lg\" },\n xl: { minWidth: 1280, tailwind: \"xl\" },\n \"2xl\": { minWidth: 1536, tailwind: \"2xl\" },\n };\n\n const config = breakpointMap[name];\n return {\n name,\n minWidth: config.minWidth,\n px: `${config.minWidth}px`,\n rem: `${config.minWidth / 16}rem`,\n tailwind: config.tailwind,\n };\n }\n}\n\n/**\n * Pre-defined breakpoint tokens\n */\nexport const BREAKPOINT_TOKENS: Record<BreakpointName, BreakpointToken> = {\n sm: BreakpointTokenFactory.create(\"sm\"),\n md: BreakpointTokenFactory.create(\"md\"),\n lg: BreakpointTokenFactory.create(\"lg\"),\n xl: BreakpointTokenFactory.create(\"xl\"),\n \"2xl\": BreakpointTokenFactory.create(\"2xl\"),\n} as const;\n\n/**\n * Helper function to get breakpoint token\n */\nexport function getBreakpoint(name: BreakpointName): BreakpointToken {\n return BREAKPOINT_TOKENS[name];\n}\n\n/**\n * Helper function to create media query string\n */\nexport function getMediaQuery(\n name: BreakpointName,\n direction: \"min\" | \"max\" = \"min\",\n): string {\n const breakpoint = BREAKPOINT_TOKENS[name];\n const operator = direction === \"min\" ? \"min-width\" : \"max-width\";\n return `@media (${operator}: ${breakpoint.px})`;\n}\n","/**\n * Animation Tokens\n *\n * Centralized animation and transition system for consistent timing and easing.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type AnimationDuration = \"fast\" | \"base\" | \"slow\" | \"slower\";\nexport type EasingFunction = \"ease-in\" | \"ease-out\" | \"ease-in-out\" | \"spring\";\n\nexport interface AnimationToken {\n duration: {\n value: string;\n ms: number;\n tailwind: string;\n };\n easing: {\n value: string;\n tailwind: string;\n description: string;\n };\n}\n\nexport interface TransitionToken {\n property: string;\n duration: string;\n timingFunction: string;\n tailwind: string;\n}\n\n/**\n * Animation Token Factory\n * Creates animation tokens with consistent timing and easing\n */\nexport class AnimationTokenFactory {\n /**\n * Create an animation token\n */\n static create(\n duration: AnimationDuration,\n easing: EasingFunction = \"ease-in-out\",\n ): AnimationToken {\n const durationMap: Record<\n AnimationDuration,\n { value: string; ms: number; tailwind: string }\n > = {\n fast: {\n value: \"150ms\",\n ms: 150,\n tailwind: \"duration-150\",\n },\n base: {\n value: \"200ms\",\n ms: 200,\n tailwind: \"duration-200\",\n },\n slow: {\n value: \"300ms\",\n ms: 300,\n tailwind: \"duration-300\",\n },\n slower: {\n value: \"500ms\",\n ms: 500,\n tailwind: \"duration-500\",\n },\n };\n\n const easingMap: Record<\n EasingFunction,\n { value: string; tailwind: string; description: string }\n > = {\n \"ease-in\": {\n value: \"cubic-bezier(0.4, 0, 1, 1)\",\n tailwind: \"ease-in\",\n description: \"Slow start, fast end\",\n },\n \"ease-out\": {\n value: \"cubic-bezier(0, 0, 0.2, 1)\",\n tailwind: \"ease-out\",\n description: \"Fast start, slow end\",\n },\n \"ease-in-out\": {\n value: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n tailwind: \"ease-in-out\",\n description: \"Slow start and end, fast middle\",\n },\n spring: {\n value: \"cubic-bezier(0.68, -0.55, 0.265, 1.55)\",\n tailwind: \"ease-[cubic-bezier(0.68,-0.55,0.265,1.55)]\",\n description: \"Spring-like bounce effect\",\n },\n };\n\n return {\n duration: durationMap[duration],\n easing: easingMap[easing],\n };\n }\n\n /**\n * Create a transition token\n */\n static createTransition(\n property: string | string[],\n duration: AnimationDuration = \"base\",\n easing: EasingFunction = \"ease-in-out\",\n ): TransitionToken {\n const durationToken = this.create(duration, easing);\n const properties = Array.isArray(property) ? property.join(\", \") : property;\n const tailwindClasses = [\n durationToken.duration.tailwind,\n durationToken.easing.tailwind,\n ].join(\" \");\n\n return {\n property: properties,\n duration: durationToken.duration.value,\n timingFunction: durationToken.easing.value,\n tailwind: tailwindClasses,\n };\n }\n}\n\n/**\n * Pre-defined animation tokens\n */\nexport const ANIMATION_TOKENS = {\n fast: AnimationTokenFactory.create(\"fast\"),\n base: AnimationTokenFactory.create(\"base\"),\n slow: AnimationTokenFactory.create(\"slow\"),\n slower: AnimationTokenFactory.create(\"slower\"),\n\n // Common transitions\n colors: AnimationTokenFactory.createTransition(\n [\"color\", \"background-color\", \"border-color\"],\n \"base\",\n ),\n opacity: AnimationTokenFactory.createTransition(\"opacity\", \"fast\"),\n transform: AnimationTokenFactory.createTransition(\"transform\", \"base\"),\n all: AnimationTokenFactory.createTransition(\"all\", \"base\"),\n} as const;\n\n/**\n * Helper function to get animation token\n */\nexport function getAnimation(\n duration: AnimationDuration,\n easing?: EasingFunction,\n): AnimationToken {\n return AnimationTokenFactory.create(duration, easing);\n}\n\n/**\n * Helper function to get animation classes\n */\nexport function getAnimationClass(\n duration: AnimationDuration,\n easing: EasingFunction = \"ease-in-out\",\n): string {\n const token = AnimationTokenFactory.create(duration, easing);\n return `${token.duration.tailwind} ${token.easing.tailwind}`;\n}\n\n/**\n * Helper function to get transition classes\n */\nexport function getTransitionClass(\n property: string | string[],\n duration: AnimationDuration = \"base\",\n easing: EasingFunction = \"ease-in-out\",\n): string {\n const transition = AnimationTokenFactory.createTransition(\n property,\n duration,\n easing,\n );\n return transition.tailwind;\n}\n","/**\n * Z-Index Tokens\n *\n * Centralized z-index system for consistent layering.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type ZIndexLayer =\n | \"base\"\n | \"dropdown\"\n | \"sticky\"\n | \"fixed\"\n | \"modal-backdrop\"\n | \"modal\"\n | \"popover\"\n | \"tooltip\"\n | \"toast\";\n\nexport interface ZIndexToken {\n value: number;\n tailwind: string;\n description: string;\n}\n\n/**\n * Z-Index Token Factory\n * Creates z-index tokens with consistent layering\n */\nexport class ZIndexTokenFactory {\n /**\n * Create a z-index token\n */\n static create(layer: ZIndexLayer): ZIndexToken {\n const layerMap: Record<\n ZIndexLayer,\n { value: number; tailwind: string; description: string }\n > = {\n base: {\n value: 0,\n tailwind: \"z-0\",\n description: \"Base layer for normal content\",\n },\n dropdown: {\n value: 1000,\n tailwind: \"z-[1000]\",\n description: \"Dropdown menus and select options\",\n },\n sticky: {\n value: 1020,\n tailwind: \"z-[1020]\",\n description: \"Sticky headers and navigation\",\n },\n fixed: {\n value: 1030,\n tailwind: \"z-[1030]\",\n description: \"Fixed position elements\",\n },\n \"modal-backdrop\": {\n value: 1040,\n tailwind: \"z-[1040]\",\n description: \"Modal backdrop/overlay\",\n },\n modal: {\n value: 1050,\n tailwind: \"z-[1050]\",\n description: \"Modal dialogs and drawers\",\n },\n popover: {\n value: 1060,\n tailwind: \"z-[1060]\",\n description: \"Popovers and tooltips\",\n },\n tooltip: {\n value: 1070,\n tailwind: \"z-[1070]\",\n description: \"Tooltips (highest priority)\",\n },\n toast: {\n value: 1080,\n tailwind: \"z-[1080]\",\n description: \"Toast notifications (highest priority)\",\n },\n };\n\n return layerMap[layer];\n }\n}\n\n/**\n * Pre-defined z-index tokens\n */\nexport const Z_INDEX_TOKENS = {\n base: ZIndexTokenFactory.create(\"base\"),\n dropdown: ZIndexTokenFactory.create(\"dropdown\"),\n sticky: ZIndexTokenFactory.create(\"sticky\"),\n fixed: ZIndexTokenFactory.create(\"fixed\"),\n \"modal-backdrop\": ZIndexTokenFactory.create(\"modal-backdrop\"),\n modal: ZIndexTokenFactory.create(\"modal\"),\n popover: ZIndexTokenFactory.create(\"popover\"),\n tooltip: ZIndexTokenFactory.create(\"tooltip\"),\n toast: ZIndexTokenFactory.create(\"toast\"),\n} as const;\n\n/**\n * Helper function to get z-index token\n */\nexport function getZIndex(layer: ZIndexLayer): ZIndexToken {\n return ZIndexTokenFactory.create(layer);\n}\n\n/**\n * Helper function to get z-index as Tailwind class\n */\nexport function getZIndexClass(layer: ZIndexLayer): string {\n return ZIndexTokenFactory.create(layer).tailwind;\n}\n","/**\n * Opacity Tokens\n *\n * Centralized opacity system for consistent transparency values.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type OpacityValue =\n | 0\n | 5\n | 10\n | 20\n | 25\n | 30\n | 40\n | 50\n | 60\n | 70\n | 75\n | 80\n | 90\n | 95\n | 100;\n\nexport interface OpacityToken {\n value: OpacityValue;\n decimal: number;\n tailwind: string;\n description: string;\n}\n\n/**\n * Opacity Token Factory\n * Creates opacity tokens with consistent values\n */\nexport class OpacityTokenFactory {\n /**\n * Create an opacity token\n */\n static create(value: OpacityValue): OpacityToken {\n const decimal = value / 100;\n\n const descriptionMap: Record<OpacityValue, string> = {\n 0: \"Fully transparent\",\n 5: \"Very light overlay\",\n 10: \"Light overlay\",\n 20: \"Subtle overlay\",\n 25: \"Quarter opacity\",\n 30: \"Light background\",\n 40: \"Semi-transparent\",\n 50: \"Half opacity\",\n 60: \"Semi-opaque\",\n 70: \"Mostly opaque\",\n 75: \"Three-quarter opacity\",\n 80: \"High opacity\",\n 90: \"Very high opacity\",\n 95: \"Nearly opaque\",\n 100: \"Fully opaque\",\n };\n\n // Map to Tailwind classes\n const tailwindMap: Record<OpacityValue, string> = {\n 0: \"opacity-0\",\n 5: \"opacity-5\",\n 10: \"opacity-10\",\n 20: \"opacity-20\",\n 25: \"opacity-25\",\n 30: \"opacity-30\",\n 40: \"opacity-40\",\n 50: \"opacity-50\",\n 60: \"opacity-60\",\n 70: \"opacity-70\",\n 75: \"opacity-75\",\n 80: \"opacity-80\",\n 90: \"opacity-90\",\n 95: \"opacity-95\",\n 100: \"opacity-100\",\n };\n\n return {\n value,\n decimal,\n tailwind: tailwindMap[value],\n description: descriptionMap[value],\n };\n }\n}\n\n/**\n * Pre-defined opacity tokens\n */\nexport const OPACITY_TOKENS = {\n transparent: OpacityTokenFactory.create(0),\n \"5\": OpacityTokenFactory.create(5),\n \"10\": OpacityTokenFactory.create(10),\n \"20\": OpacityTokenFactory.create(20),\n \"25\": OpacityTokenFactory.create(25),\n \"30\": OpacityTokenFactory.create(30),\n \"40\": OpacityTokenFactory.create(40),\n \"50\": OpacityTokenFactory.create(50),\n \"60\": OpacityTokenFactory.create(60),\n \"70\": OpacityTokenFactory.create(70),\n \"75\": OpacityTokenFactory.create(75),\n \"80\": OpacityTokenFactory.create(80),\n \"90\": OpacityTokenFactory.create(90),\n \"95\": OpacityTokenFactory.create(95),\n opaque: OpacityTokenFactory.create(100),\n} as const;\n\n/**\n * Helper function to get opacity token\n */\nexport function getOpacity(value: OpacityValue): OpacityToken {\n return OpacityTokenFactory.create(value);\n}\n\n/**\n * Helper function to get opacity as Tailwind class\n */\nexport function getOpacityClass(value: OpacityValue): string {\n return OpacityTokenFactory.create(value).tailwind;\n}\n","\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef } from \"react\";\nimport { getRadiusClass } from \"../../tokens\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport {\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\nimport \"./Progress.css\";\n\nexport type ProgressVariant =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\";\nexport type ProgressSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ProgressProps extends HTMLAttributes<HTMLDivElement> {\n value?: number; // 0-100, undefined for indeterminate\n max?: number; // Default 100\n variant?: ProgressVariant;\n size?: ProgressSize;\n showLabel?: boolean;\n label?: string;\n \"aria-label\"?: string;\n}\n\n/**\n * Progress Component\n *\n * A progress bar component for displaying progress or loading states.\n * Supports both determinate (with value) and indeterminate (without value) modes.\n * Fully accessible with ARIA attributes.\n *\n * @example\n * ```tsx\n * // Determinate progress\n * <Progress value={75} variant=\"primary\" />\n *\n * // Indeterminate progress\n * <Progress variant=\"primary\" />\n *\n * // With label\n * <Progress value={50} showLabel label=\"Uploading...\" />\n * ```\n */\n// Progress variants using CVA\nconst progressTrackVariants = cva(\"w-full\", {\n variants: {\n size: {\n sm: \"h-1\",\n md: \"h-2\",\n lg: \"h-3\",\n },\n variant: {\n primary: \"bg-surface-muted\",\n secondary: \"bg-surface-muted\",\n success: \"bg-success-bg-emphasis\",\n error: \"bg-error-bg-emphasis\",\n warning: \"bg-warning-bg-emphasis\",\n info: \"bg-info-bg-emphasis\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"primary\",\n },\n});\n\nconst progressBarVariants = cva(\"transition-all\", {\n variants: {\n variant: {\n primary: \"bg-surface-brand\",\n secondary: \"bg-surface-secondary\",\n success: \"bg-success\",\n error: \"bg-error\",\n warning: \"bg-warning\",\n info: \"bg-info\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n});\n\nconst Progress = forwardRef<HTMLDivElement, ProgressProps>(function Progress(\n {\n value,\n max = 100,\n variant = \"primary\",\n size = \"md\",\n showLabel = false,\n label,\n \"aria-label\": ariaLabel,\n className = \"\",\n ...props\n },\n ref,\n) {\n const isIndeterminate = value === undefined;\n const percentage = isIndeterminate\n ? undefined\n : Math.min(Math.max((value / max) * 100, 0), 100);\n\n const defaultAriaLabel =\n ariaLabel ||\n (isIndeterminate\n ? \"Loading in progress\"\n : `Progress: ${percentage?.toFixed(0)}%`);\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n {showLabel && (label || !isIndeterminate) && (\n <div\n className={cn(\n \"flex\",\n \"items-center\",\n \"justify-between\",\n getSpacingClass(\"xs\", \"mb\"),\n )}\n >\n {label && (\n <span\n className={cn(\n getTypographySize(\"bodySmall\"),\n getTypographyWeight(\"label\"),\n \"text-fg-primary\",\n )}\n >\n {label}\n </span>\n )}\n {!isIndeterminate && percentage !== undefined && (\n <span\n className={cn(\n getTypographySize(\"bodySmall\"),\n \"text-fg-secondary\",\n )}\n >\n {percentage.toFixed(0)}%\n </span>\n )}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-valuemin={isIndeterminate ? undefined : 0}\n aria-valuemax={isIndeterminate ? undefined : max}\n aria-valuenow={isIndeterminate ? undefined : value}\n aria-label={defaultAriaLabel}\n aria-busy={isIndeterminate}\n className={cn(\n \"relative\",\n \"w-full\",\n \"overflow-hidden\",\n progressTrackVariants({ size, variant }),\n getRadiusClass(\"full\"),\n )}\n >\n {isIndeterminate ? (\n <div\n className={cn(\n \"absolute\",\n \"top-0\",\n \"left-0\",\n \"bottom-0\",\n progressBarVariants({ variant }),\n getRadiusClass(\"full\"),\n \"motion-reduce:animate-none\",\n )}\n style={{\n width: \"30%\",\n animation: \"progress-indeterminate 1.5s ease-in-out infinite\",\n }}\n />\n ) : (\n <div\n className={cn(\n \"h-full\",\n progressBarVariants({ variant }),\n getRadiusClass(\"full\"),\n \"transition-all\",\n \"duration-300\",\n \"ease-out\",\n )}\n style={{\n width: `${percentage}%`,\n }}\n aria-hidden=\"true\"\n />\n )}\n </div>\n </div>\n );\n});\n\nProgress.displayName = \"Progress\";\n\nexport default Progress;\n","import { memo } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils\";\n\nexport type SeparatorOrientation = \"horizontal\" | \"vertical\";\nexport type SeparatorVariant = \"solid\" | \"dashed\" | \"dotted\";\n\nexport interface SeparatorProps extends HTMLAttributes<HTMLHRElement> {\n orientation?: SeparatorOrientation;\n variant?: SeparatorVariant;\n}\n\n/**\n * Separator Component\n *\n * A visual separator component for dividing content.\n * Follows Atomic Design principles as an Atom component.\n * Optimized with React.memo to prevent unnecessary re-renders.\n *\n * @example\n * ```tsx\n * <Separator />\n *\n * <Separator orientation=\"vertical\" variant=\"dashed\" />\n * ```\n */\nconst separatorOrientationClasses = {\n horizontal: \"w-full border-t\",\n vertical: \"h-full border-l self-stretch\",\n} as const;\n\nconst separatorVariantClasses = {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n dotted: \"border-dotted\",\n} as const;\n\nconst Separator = memo(function Separator({\n orientation = \"horizontal\",\n variant = \"solid\",\n className = \"\",\n ...props\n}: SeparatorProps) {\n const classes = cn(\n \"border-0\",\n \"border-line-default\",\n separatorOrientationClasses[orientation],\n separatorVariantClasses[variant],\n className,\n );\n\n if (orientation === \"vertical\") {\n return (\n <div\n className={classes}\n role=\"separator\"\n aria-orientation=\"vertical\"\n {...(props as HTMLAttributes<HTMLDivElement>)}\n />\n );\n }\n\n return (\n <hr\n className={classes}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n {...props}\n />\n );\n});\n\nSeparator.displayName = \"Separator\";\n\nexport default Separator;\n","import type { HTMLAttributes } from \"react\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { cn } from \"../../utils\";\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n variant?: \"text\" | \"card\" | \"list\" | \"circle\";\n width?: string;\n height?: string;\n lines?: number;\n}\n\n/**\n * Skeleton Component\n *\n * A skeleton loader component for displaying loading states.\n * Follows Atomic Design principles as an Atom component.\n *\n * @example\n * ```tsx\n * <Skeleton variant=\"card\" />\n * <Skeleton variant=\"text\" lines={3} />\n * ```\n */\nexport default function Skeleton({\n variant = \"text\",\n width,\n height,\n lines = 1,\n className = \"\",\n \"aria-label\": ariaLabel,\n ...props\n}: SkeletonProps) {\n const baseClasses = [\n \"motion-safe:animate-pulse\",\n \"bg-surface-muted\",\n getRadiusClass(\"sm\"),\n ];\n\n const variantClasses: Record<\n NonNullable<SkeletonProps[\"variant\"]>,\n string\n > = {\n text: \"h-4\",\n card: \"h-32\",\n list: \"h-12\",\n circle: getRadiusClass(\"full\"),\n };\n\n const classes = cn(...baseClasses, variantClasses[variant], className);\n\n const style: React.CSSProperties = {};\n if (width) style.width = width;\n if (height) style.height = height;\n\n const defaultAriaLabel = ariaLabel || `Loading ${variant} content`;\n\n if (variant === \"text\" && lines > 1) {\n return (\n <div\n className={getSpacingClass(\"sm\", \"space-y\")}\n role=\"status\"\n aria-busy=\"true\"\n aria-label={defaultAriaLabel}\n {...props}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n className={classes}\n style={index === lines - 1 ? { width: \"75%\" } : style}\n aria-hidden=\"true\"\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n className={classes}\n style={style}\n role=\"status\"\n aria-busy=\"true\"\n aria-label={defaultAriaLabel}\n {...props}\n />\n );\n}\n","\"use client\";\n\nimport { memo } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { Loader2 } from \"lucide-react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getTypographySize } from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\n\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\nexport type SpinnerVariant = \"primary\" | \"secondary\" | \"neutral\";\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {\n size?: SpinnerSize;\n variant?: SpinnerVariant;\n label?: string;\n}\n\n/**\n * Spinner Component\n *\n * A loading spinner component for indicating loading states.\n * Follows Atomic Design principles as an Atom component.\n * Uses Strategy Pattern for different size/variant combinations.\n *\n * @example\n * ```tsx\n * <Spinner size=\"md\" variant=\"primary\" label=\"Loading...\" />\n * ```\n */\n// Spinner variants using CVA\nconst spinnerVariants = cva(\"motion-safe:animate-spin\", {\n variants: {\n size: {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-8 w-8\",\n },\n variant: {\n primary: \"text-fg-brand\",\n secondary: \"text-fg-brand-secondary\",\n neutral: \"text-fg-secondary\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"primary\",\n },\n});\n\nconst Spinner = memo(function Spinner({\n size = \"md\",\n variant = \"primary\",\n label,\n className = \"\",\n ...props\n}: SpinnerProps) {\n return (\n <div\n className={cn(\"inline-flex\", \"items-center\", className)}\n role=\"status\"\n aria-label={label || \"Loading\"}\n aria-live=\"polite\"\n {...props}\n >\n <Loader2\n className={cn(spinnerVariants({ size, variant }))}\n aria-hidden=\"true\"\n />\n {label && (\n <span\n className={cn(\n getSpacingClass(\"sm\", \"ml\"),\n getTypographySize(\"bodySmall\"),\n \"text-fg-secondary\",\n \"sr-only\",\n )}\n >\n {label}\n </span>\n )}\n </div>\n );\n});\n\nSpinner.displayName = \"Spinner\";\n\nexport default Spinner;\n","import type {\n ComponentPropsWithoutRef,\n ElementType,\n HTMLAttributes,\n JSX,\n} from \"react\";\nimport { forwardRef } from \"react\";\nimport { getTypographyClasses } from \"../../tokens/typography\";\nimport { cn } from \"../../utils\";\n\ntype TextColorRole =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\"\n | \"neutral\";\ntype TextColorShade = \"light\" | \"DEFAULT\" | \"dark\" | \"contrast\";\n\n// Lookup table: literal Tailwind classes so v4 can detect them at build.\n// Brand/feedback DEFAULT cells use semantic tokens; light/dark cells stay\n// primitive (no semantic equivalent for shade variants). Neutral cells\n// use the Phase 7 semantic suggestions (text-fg-{primary,secondary,...}).\nconst TEXT_COLOR_CLASSES: Record<\n TextColorRole,\n Record<TextColorShade, string>\n> = {\n primary: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-indigo-400\",\n DEFAULT: \"text-fg-brand\",\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n dark: \"text-indigo-600\",\n contrast: \"text-fg-inverse\",\n },\n secondary: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-pink-300\",\n DEFAULT: \"text-fg-brand-secondary\",\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n dark: \"text-pink-600\",\n contrast: \"text-fg-inverse\",\n },\n success: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-green-300\",\n DEFAULT: \"text-fg-success\",\n dark: \"text-success-dark\",\n contrast: \"text-fg-inverse\",\n },\n warning: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-yellow-300\",\n DEFAULT: \"text-fg-warning\",\n dark: \"text-warning-dark\",\n contrast: \"text-fg-inverse\",\n },\n error: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-red-300\",\n DEFAULT: \"text-fg-error\",\n dark: \"text-error-dark\",\n contrast: \"text-fg-inverse\",\n },\n info: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-blue-300\",\n DEFAULT: \"text-fg-info\",\n dark: \"text-info-dark\",\n contrast: \"text-fg-inverse\",\n },\n neutral: {\n light: \"text-fg-tertiary\",\n DEFAULT: \"text-fg-secondary\",\n dark: \"text-fg-primary\",\n contrast: \"text-fg-inverse\",\n },\n};\n\nexport interface TextProps<\n T extends ElementType,\n> extends HTMLAttributes<JSX.IntrinsicElements> {\n variant?:\n | \"heading\"\n | \"list\"\n | \"paragraph\"\n | \"body\"\n | \"bodySmall\"\n | \"bodyLarge\"\n | \"caption\"\n | \"label\";\n as?: T;\n bold?: boolean;\n italic?: boolean;\n colorRole?: TextColorRole;\n colorShade?: TextColorShade;\n}\n\ntype ReturnProps<P extends ElementType> = TextProps<P> &\n Omit<ComponentPropsWithoutRef<P>, keyof TextProps<P>>;\n\nfunction TextComponent<T extends ElementType = \"p\">(\n {\n variant = \"paragraph\",\n bold,\n italic,\n className,\n as,\n colorRole = \"neutral\",\n colorShade = \"dark\",\n ...rest\n }: ReturnProps<T>,\n ref: React.Ref<unknown>,\n) {\n const classNames: string[] = [];\n let Tag: ElementType;\n\n if (as) {\n Tag = as;\n } else {\n switch (variant) {\n case \"heading\":\n Tag = \"h2\";\n break;\n case \"list\":\n Tag = \"li\";\n break;\n case \"paragraph\":\n default:\n Tag = \"p\";\n break;\n }\n }\n\n // Apply typography tokens based on variant\n if (variant === \"heading\") {\n classNames.push(getTypographyClasses(\"h2\"));\n } else if (variant === \"body\" || variant === \"paragraph\") {\n classNames.push(getTypographyClasses(\"body\"));\n } else if (variant === \"bodySmall\") {\n classNames.push(getTypographyClasses(\"bodySmall\"));\n } else if (variant === \"bodyLarge\") {\n classNames.push(getTypographyClasses(\"bodyLarge\"));\n } else if (variant === \"caption\") {\n classNames.push(getTypographyClasses(\"caption\"));\n } else if (variant === \"label\") {\n classNames.push(getTypographyClasses(\"label\"));\n } else {\n // Default to body for list and other variants\n classNames.push(getTypographyClasses(\"body\"));\n }\n\n // Override font weight if bold is specified\n if (bold) {\n classNames.push(\"font-bold\");\n }\n\n if (italic) {\n classNames.push(\"italic\");\n }\n\n // Apply color via lookup table. Tailwind v4 needs literal class names\n // at build time, so role/shade resolve to a fixed entry in\n // TEXT_COLOR_CLASSES rather than constructing `text-${...}` dynamically.\n classNames.push(TEXT_COLOR_CLASSES[colorRole][colorShade]);\n\n return <Tag ref={ref} className={cn(...classNames, className)} {...rest} />;\n}\n\n// Use forwardRef with proper typing for polymorphic component\nconst Text = forwardRef(TextComponent) as <T extends ElementType = \"p\">(\n props: ReturnProps<T> & { ref?: React.Ref<HTMLElement> },\n) => JSX.Element;\n\nexport default Text;\n","import React from \"react\";\nimport { cn } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Maximum width of the container\n * @default 'lg'\n */\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n /**\n * Horizontal padding\n * @default 'base'\n */\n paddingX?: \"xs\" | \"sm\" | \"md\" | \"base\" | \"lg\" | \"xl\";\n /**\n * Vertical padding\n * @default 'base'\n */\n paddingY?: \"xs\" | \"sm\" | \"md\" | \"base\" | \"lg\" | \"xl\";\n /**\n * Center the container content\n * @default true\n */\n center?: boolean;\n}\n\nconst maxWidthClasses = {\n sm: \"max-w-screen-sm\",\n md: \"max-w-screen-md\",\n lg: \"max-w-screen-lg\",\n xl: \"max-w-screen-xl\",\n \"2xl\": \"max-w-screen-2xl\",\n full: \"max-w-full\",\n};\n\n/**\n * Container component for constraining content width and providing consistent padding\n *\n * @example\n * ```tsx\n * <Container maxWidth=\"lg\" paddingX=\"base\">\n * <h1>Content</h1>\n * </Container>\n * ```\n */\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n (\n {\n className,\n maxWidth = \"lg\",\n paddingX = \"base\",\n paddingY = \"base\",\n center = true,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full\",\n maxWidthClasses[maxWidth],\n getSpacingClass(paddingX, \"px\"),\n getSpacingClass(paddingY, \"py\"),\n center && \"mx-auto\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nContainer.displayName = \"Container\";\n","import React from \"react\";\nimport { cn } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Spacing between children\n * @default 'base'\n */\n spacing?: \"xs\" | \"sm\" | \"md\" | \"base\" | \"lg\" | \"xl\" | \"2xl\";\n /**\n * Alignment of children\n * @default 'stretch'\n */\n align?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /**\n * Justification of children\n * @default 'start'\n */\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\n /**\n * Direction of stack\n * @default 'column'\n */\n direction?: \"row\" | \"column\";\n}\n\n/**\n * Stack component for vertical or horizontal layout with consistent spacing\n *\n * @example\n * ```tsx\n * <Stack spacing=\"md\" align=\"center\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * </Stack>\n * ```\n */\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(\n (\n {\n className,\n spacing = \"base\",\n align = \"stretch\",\n justify = \"start\",\n direction = \"column\",\n children,\n ...props\n },\n ref,\n ) => {\n const spacingClass =\n direction === \"column\"\n ? getSpacingClass(spacing, \"gap-y\")\n : getSpacingClass(spacing, \"gap-x\");\n\n const alignClasses = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n };\n\n const justifyClasses = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex\",\n direction === \"column\" ? \"flex-col\" : \"flex-row\",\n spacingClass,\n alignClasses[align],\n justifyClasses[justify],\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nStack.displayName = \"Stack\";\n","\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils\";\nimport {\n getSpacingClass,\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens\";\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n}\n\ninterface Props extends HTMLAttributes<HTMLElement> {\n items: BreadcrumbItem[];\n separator?: string;\n}\n\n/**\n * Breadcrumb Component\n *\n * A breadcrumb navigation component for hierarchical navigation.\n * Follows Atomic Design principles as a Molecule component.\n *\n * @example\n * ```tsx\n * <Breadcrumb\n * items={[\n * { label: \"Home\", href: \"/\" },\n * { label: \"Epics\", href: \"/epics\" },\n * { label: \"Epic Details\" }\n * ]}\n * />\n * ```\n */\nexport default function Breadcrumb({\n items,\n separator = \"/\",\n className = \"\",\n ...props\n}: Props) {\n const baseClasses = [\n \"flex\",\n \"items-center\",\n getSpacingClass(\"sm\", \"space-x\"),\n getTypographySize(\"bodySmall\"),\n ];\n\n const classes = cn(...baseClasses, className);\n\n return (\n <nav aria-label=\"Breadcrumb\" className={classes} {...props}>\n <ol\n className={cn(\"flex\", \"items-center\", getSpacingClass(\"sm\", \"space-x\"))}\n >\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n\n return (\n <li key={index} className=\"flex items-center\">\n {index > 0 && (\n <span\n className={cn(\n getSpacingClass(\"sm\", \"mx\"),\n \"text-fg-tertiary\",\n )}\n aria-hidden=\"true\"\n >\n {separator}\n </span>\n )}\n {isLast ? (\n <span\n className={cn(\n \"text-fg-primary\",\n getTypographyWeight(\"label\"),\n )}\n aria-current=\"page\"\n >\n {item.label}\n </span>\n ) : item.href ? (\n <a\n href={item.href}\n className={cn(\n \"inline-flex\",\n \"items-center\",\n getSpacingClass(\"xs\", \"px\"),\n getSpacingClass(\"xs\", \"pt\"),\n \"border-b-2\",\n \"border-transparent\",\n getTypographySize(\"bodySmall\"),\n getTypographyWeight(\"label\"),\n \"transition-colors\",\n \"text-fg-secondary\",\n \"hover:border-line-emphasis\",\n \"hover:text-fg-primary\",\n )}\n >\n {item.label}\n </a>\n ) : (\n <span className=\"text-fg-secondary\">{item.label}</span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport function CardHeader({ children, className, ...props }: CardHeaderProps) {\n return (\n <div\n className={cn(\n \"grid items-start\",\n getSpacingClass(\"1.5\", \"gap\"),\n getSpacingClass(\"base\", \"mb\"),\n \"[&:has([data-card-actions])]:grid-cols-[1fr_auto]\",\n \"[&:has([data-card-actions])>[data-card-actions]]:row-span-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport default CardHeader;\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport type CardTitleAs = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\nexport interface CardTitleProps extends HTMLAttributes<HTMLHeadingElement> {\n children: ReactNode;\n /**\n * Optional icon rendered before the title text.\n */\n icon?: ReactNode;\n /**\n * Optional badge rendered after the title text.\n */\n badge?: ReactNode;\n /**\n * Heading level. Default `h2` — the typical depth for a card title\n * inside a page that already has an `h1`. Use `h3` (or deeper) when\n * the card sits inside a nested section.\n * @default 'h2'\n */\n as?: CardTitleAs;\n}\n\nexport function CardTitle({\n children,\n icon,\n badge,\n as: As = \"h2\",\n className,\n ...props\n}: CardTitleProps) {\n return (\n <As\n className={cn(\n \"text-base font-semibold text-fg-primary\",\n \"flex items-center\",\n getSpacingClass(\"sm\", \"gap\"),\n className,\n )}\n {...props}\n >\n {icon ? <span className=\"shrink-0 inline-flex\">{icon}</span> : null}\n <span>{children}</span>\n {badge ? <span className=\"inline-flex\">{badge}</span> : null}\n </As>\n );\n}\n\nexport default CardTitle;\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\n\nexport interface CardSubtitleProps extends HTMLAttributes<HTMLParagraphElement> {\n children: ReactNode;\n}\n\nexport function CardSubtitle({\n children,\n className,\n ...props\n}: CardSubtitleProps) {\n return (\n <p className={cn(\"text-sm text-fg-secondary\", className)} {...props}>\n {children}\n </p>\n );\n}\n\nexport default CardSubtitle;\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface CardActionsProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\n/**\n * CardActions — wrapper that hosts consumer-supplied action buttons\n * within a `Card.Header`.\n *\n * The `data-card-actions` attribute is the structural marker `CardHeader`\n * uses (via Tailwind v4 `:has()` selectors) to switch its grid layout\n * from a single column to `[1fr auto]` when actions are present, so\n * Title/Subtitle stack in column 1 and the action row spans both rows\n * in column 2. Consumers should not override this attribute.\n *\n * This component is presentational: it emits no handlers on the DOM\n * itself. The action elements (typically `<Button>`) are consumer-supplied\n * and React's RSC boundary keeps them as client references — the\n * wrapper stays server-safe.\n */\nexport function CardActions({\n children,\n className,\n ...props\n}: CardActionsProps) {\n return (\n <div\n data-card-actions=\"\"\n className={cn(\n \"flex items-center self-start\",\n getSpacingClass(\"sm\", \"gap\"),\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport default CardActions;\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\n\nexport interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport function CardBody({ children, className, ...props }: CardBodyProps) {\n return (\n <div className={cn(className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport default CardBody;\n","import { memo, type FC, type HTMLAttributes } from \"react\";\nimport { cn, cva } from \"../../utils\";\nimport { getRadiusClass, getShadowClass, getSpacingClass } from \"../../tokens\";\nimport { CardHeader } from \"./CardHeader\";\nimport { CardTitle } from \"./CardTitle\";\nimport { CardSubtitle } from \"./CardSubtitle\";\nimport { CardActions } from \"./CardActions\";\nimport { CardBody } from \"./CardBody\";\n\n// Ambient declaration so the dev-only warn typechecks without pulling\n// @types/node into the app tsconfig. At runtime the consumer's bundler\n// replaces `process.env.NODE_ENV` with a literal; the `typeof process`\n// guard keeps the branch safe in browser/edge runtimes where `process`\n// doesn't exist. Mirrors the precedent in Button.tsx.\ndeclare const process: { env: { NODE_ENV?: string } };\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"hover\" | \"selected\";\n padding?: \"none\" | \"small\" | \"medium\" | \"large\";\n onClick?: () => void;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n /**\n * Render the root as a semantic `<section>` instead of `<div>`.\n * When `true`, the Card becomes a landmark — a screen-reader-visible\n * region in the document outline — so it MUST carry an accessible\n * name (either `aria-labelledby` pointing to a `Card.Title` `id` or\n * `aria-label`). A dev-only warning is emitted when this contract\n * isn't met; an anonymous landmark hurts navigation by announcing\n * \"region\" without a name.\n * @default false\n */\n asSection?: boolean;\n}\n\n/**\n * Card — versatile container.\n *\n * Supports the compound pattern via dot-notation:\n *\n * ```tsx\n * <Card asSection aria-labelledby=\"parlamentares-title\">\n * <Card.Header>\n * <Card.Title id=\"parlamentares-title\" icon={<Users />} badge={<Badge>Beta</Badge>}>\n * Parlamentares\n * </Card.Title>\n * <Card.Subtitle>Câmara e Senado</Card.Subtitle>\n * <Card.Actions>\n * <Button variant=\"ghost\">Editar</Button>\n * </Card.Actions>\n * </Card.Header>\n * <Card.Body>{children}</Card.Body>\n * </Card>\n * ```\n *\n * Backward compat: the flat form (`<Card>{children}</Card>`) and the\n * interactive form (`<Card onClick={...}>`) are unchanged.\n *\n * Server/client boundary: every subcomponent (Card, Card.Header,\n * Card.Title, Card.Subtitle, Card.Actions, Card.Body) is presentational\n * and ships in `./server`. Interactive children (Button with onClick,\n * Link, etc.) supplied via `<Card.Actions>` cross the RSC boundary\n * naturally — the wrapper stays server-safe.\n */\nfunction CardComponent({\n variant = \"default\",\n padding = \"medium\",\n className = \"\",\n onClick,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n asSection = false,\n children,\n ...props\n}: CardProps) {\n if (\n typeof process !== \"undefined\" &&\n process.env.NODE_ENV !== \"production\" &&\n asSection &&\n !ariaLabel &&\n !ariaLabelledBy\n ) {\n console.warn(\n \"[Card] `asSection={true}` requires an accessible name. Pass `aria-labelledby` pointing to your Card.Title `id`, or `aria-label`. A <section> without a name is an anonymous landmark that hurts screen-reader navigation.\",\n );\n }\n\n const cardVariants = cva(\n cn(\n \"bg-surface-base\",\n getRadiusClass(\"lg\"),\n \"border\",\n \"border-line-default\",\n getShadowClass(\"sm\"),\n ),\n {\n variants: {\n variant: {\n default: \"\",\n hover: cn(\n `hover:${getShadowClass(\"md\")}`,\n \"transition-shadow\",\n \"cursor-pointer\",\n ),\n selected: cn(\"border-line-brand\", getShadowClass(\"md\")),\n },\n padding: {\n none: \"\",\n small: getSpacingClass(\"xs\", \"p\"),\n medium: getSpacingClass(\"base\", \"p\"),\n large: getSpacingClass(\"lg\", \"p\"),\n },\n },\n defaultVariants: {\n variant: \"default\",\n padding: \"medium\",\n },\n },\n );\n\n // ARIA interactivity is driven by `onClick` ONLY. `variant=\"hover\"` is\n // a visual style (hover shadow + cursor hint via cardVariants) — not a\n // declaration that the card is clickable. The previous coupling made\n // any `variant=\"hover\"` Card a `role=\"button\" tabindex=0` outer, which\n // triggered axe `nested-interactive` whenever the consumer composed\n // Buttons inside. Decoupling fixes that without changing the visual\n // behavior. Stories that want a clickable card already pass `onClick`.\n const isInteractive = onClick !== undefined;\n const role = isInteractive ? \"button\" : undefined;\n const tabIndex = isInteractive ? 0 : undefined;\n\n const classes = cn(cardVariants({ variant, padding }), className);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isInteractive && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.();\n }\n };\n\n // Polymorphic root: <section> when asSection, <div> otherwise. Both\n // accept the same HTMLAttributes via `...props` (HTMLDivElement and\n // HTMLElement attribute sets overlap on the props we use).\n const commonProps = {\n className: classes,\n role,\n tabIndex,\n onClick,\n onKeyDown: isInteractive ? handleKeyDown : undefined,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props,\n } as const;\n\n if (asSection) {\n return <section {...commonProps}>{children}</section>;\n }\n return <div {...commonProps}>{children}</div>;\n}\n\nconst MemoCard = memo(CardComponent);\nMemoCard.displayName = \"Card\";\n\n// Compound components (dot-notation). Pattern follows Tabs.tsx — define\n// the function, attach subcomponents, cast to a type that exposes them.\ntype CardCompound = FC<CardProps> & {\n Header: typeof CardHeader;\n Title: typeof CardTitle;\n Subtitle: typeof CardSubtitle;\n Actions: typeof CardActions;\n Body: typeof CardBody;\n};\n\nconst Card = MemoCard as unknown as CardCompound;\nCard.Header = CardHeader;\nCard.Title = CardTitle;\nCard.Subtitle = CardSubtitle;\nCard.Actions = CardActions;\nCard.Body = CardBody;\n\nexport default Card;\n","\"use client\";\n\nimport { type HTMLAttributes, type ReactNode } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface DialogHeaderProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport function DialogHeader({\n children,\n className = \"\",\n ...props\n}: DialogHeaderProps) {\n return (\n <div\n className={`flex flex-col ${getSpacingClass(\"1.5\", \"space-y\")} ${getSpacingClass(\"lg\", \"p\")} ${getSpacingClass(\"base\", \"pb\")} ${className}`}\n {...props}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { type HTMLAttributes, type ReactNode } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface DialogFooterProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport function DialogFooter({\n children,\n className = \"\",\n ...props\n}: DialogFooterProps) {\n return (\n <div\n className={`flex flex-col-reverse sm:flex-row sm:justify-end sm:${getSpacingClass(\"sm\", \"space-x\")} ${getSpacingClass(\"lg\", \"p\")} ${getSpacingClass(\"base\", \"pt\")} ${className}`}\n {...props}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { type ReactNode, type HTMLAttributes } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface DrawerHeaderProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\n/**\n * DrawerHeader Component\n *\n * Header section for drawer content.\n *\n * @example\n * ```tsx\n * <DrawerHeader>\n * <h2>Drawer Title</h2>\n * </DrawerHeader>\n * ```\n */\nexport default function DrawerHeader({\n children,\n className = \"\",\n ...props\n}: DrawerHeaderProps) {\n return (\n <div\n className={`\n ${getSpacingClass(\"lg\", \"p\")}\n border-b\n border-line-default\n ${className}\n `}\n {...props}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { type ReactNode, type HTMLAttributes } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface DrawerFooterProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\n/**\n * DrawerFooter Component\n *\n * Footer section for drawer content, typically contains action buttons.\n *\n * @example\n * ```tsx\n * <DrawerFooter>\n * <Button>Save</Button>\n * <Button variant=\"outline\">Cancel</Button>\n * </DrawerFooter>\n * ```\n */\nexport default function DrawerFooter({\n children,\n className = \"\",\n ...props\n}: DrawerFooterProps) {\n return (\n <div\n className={`\n ${getSpacingClass(\"lg\", \"p\")}\n border-t\n border-line-default\n flex\n justify-end\n ${getSpacingClass(\"sm\", \"gap\")}\n ${className}\n `}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * HeaderActions Component\n *\n * Actions slot component for Header (typically buttons, user menu, etc.).\n *\n * @see EPIC-002: Header Component (Molecule)\n * @see RFC-003: Header Composition Pattern (APPROVED)\n */\n\n\"use client\";\n\nimport { type ReactNode } from \"react\";\nimport { cn } from \"../../../utils\";\nimport { getSpacingClass } from \"../../../tokens/spacing\";\n\nexport interface HeaderActionsProps {\n /**\n * Actions content (typically Button components)\n */\n children: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * HeaderActions Component\n *\n * Actions slot for Header. Typically contains Button components or user menu.\n *\n * @example\n * ```tsx\n * <Header.Actions>\n * <Button variant=\"outline\">Sign In</Button>\n * <Button variant=\"primary\">Sign Up</Button>\n * </Header.Actions>\n * ```\n */\nexport function HeaderActions({ children, className }: HeaderActionsProps) {\n return (\n <div\n className={cn(\n \"flex-shrink-0 flex items-center\",\n getSpacingClass(\"sm\", \"gap\"),\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","/**\n * HeaderNavigation Component\n *\n * Navigation slot component for Header.\n *\n * @see EPIC-002: Header Component (Molecule)\n * @see RFC-003: Header Composition Pattern (APPROVED)\n */\n\n\"use client\";\n\nimport { type ReactNode } from \"react\";\nimport { cn } from \"../../../utils\";\nimport { getSpacingClass } from \"../../../tokens/spacing\";\n\nexport interface HeaderNavigationProps {\n /**\n * Navigation content (typically NavLink components)\n */\n children: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * HeaderNavigation Component\n *\n * Navigation slot for Header. Typically contains NavLink components.\n *\n * @example\n * ```tsx\n * <Header.Navigation>\n * <NavLink href=\"/home\">Home</NavLink>\n * <NavLink href=\"/about\">About</NavLink>\n * </Header.Navigation>\n * ```\n */\nexport function HeaderNavigation({\n children,\n className,\n}: HeaderNavigationProps) {\n return (\n <nav\n className={cn(\n \"flex-1 flex items-center justify-center\",\n getSpacingClass(\"base\", \"gap\"),\n \"hidden md:flex\", // Hidden on mobile, visible on desktop\n className,\n )}\n aria-label=\"Main navigation\"\n >\n {children}\n </nav>\n );\n}\n","\"use client\";\n\nimport { type HTMLAttributes } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport type MenuSeparatorProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * MenuSeparator Component\n *\n * A visual separator for menu items.\n *\n * @example\n * ```tsx\n * <MenuSeparator />\n * ```\n */\nexport default function MenuSeparator({\n className = \"\",\n ...props\n}: MenuSeparatorProps) {\n return (\n <div\n role=\"separator\"\n className={`\n h-px\n bg-line-default\n ${getSpacingClass(\"sm\", \"my\")}\n ${className}\n `}\n {...props}\n />\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../../../utils\";\nimport { getSpacingClass } from \"../../../../tokens/spacing\";\nimport type { NavbarSeparatorProps } from \"../../types\";\n\n/**\n * Separator for the Navbar subcomponent\n *\n * Creates visual separation between groups of navigation items.\n *\n * @example\n * ```tsx\n * <SideNavbar.Navbar>\n * <SideNavbar.Navbar.Item icon={<Home />} label=\"Home\" />\n * <SideNavbar.Navbar.Separator />\n * <SideNavbar.Navbar.Item icon={<Settings />} label=\"Settings\" />\n * </SideNavbar.Navbar>\n * ```\n */\nexport default function NavbarSeparator({\n orientation = \"horizontal\",\n className = \"\",\n ...props\n}: NavbarSeparatorProps) {\n if (orientation === \"vertical\") {\n return (\n <div\n className={cn(\"w-px\", \"h-6\", \"bg-line-default\", \"mx-auto\", className)}\n role=\"separator\"\n aria-orientation=\"vertical\"\n {...props}\n />\n );\n }\n\n return (\n <div\n className={cn(\n \"w-full\",\n \"h-px\",\n \"bg-line-default\",\n getSpacingClass(\"sm\", \"my\"), // my-2 (8px) para consistência com gap-2 usado em outros lugares\n \"flex-shrink-0\", // Prevenir que separator encolha\n className,\n )}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n style={{\n // Garantir que separator não seja afetado por transformações\n willChange: \"auto\",\n transform: \"none\",\n }}\n {...props}\n />\n );\n}\n","/**\n * PageHeader Component\n *\n * Page header component with title, description, breadcrumb, and actions.\n *\n * @see EPIC-004: PageHeader Component (Molecule)\n */\n\nimport Breadcrumb from \"../Breadcrumb/Breadcrumb\";\nimport Text from \"../../primitives/Text/Text\";\nimport type { PageHeaderProps } from \"./types\";\nimport { cn, cva } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\n/**\n * PageHeader Variants using CVA\n * Type-safe variant system for PageHeader component\n */\nconst pageHeaderVariants = cva(\n // Base classes\n cn(\"w-full\", \"flex\", \"flex-col\", getSpacingClass(\"sm\", \"gap\")),\n {\n variants: {\n variant: {\n default: cn(getSpacingClass(\"base\", \"mb\")),\n compact: cn(getSpacingClass(\"sm\", \"mb\")),\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\n/**\n * PageHeader Component\n *\n * Page header with title, description, breadcrumb, and actions.\n *\n * @example\n * ```tsx\n * <PageHeader\n * title=\"Page Title\"\n * description=\"Page description\"\n * breadcrumb={[\n * { label: 'Home', href: '/' },\n * { label: 'Page', href: '/page' },\n * ]}\n * actions={<Button>Action</Button>}\n * />\n * ```\n */\nexport function PageHeader({\n title,\n description,\n breadcrumb,\n actions,\n variant = \"default\",\n className,\n ...props\n}: PageHeaderProps) {\n return (\n <div className={cn(pageHeaderVariants({ variant }), className)} {...props}>\n {/* Breadcrumb */}\n {breadcrumb && breadcrumb.length > 0 && <Breadcrumb items={breadcrumb} />}\n\n {/* Title and Actions Row */}\n <div\n className={`flex items-start justify-between ${getSpacingClass(\"base\", \"gap\")}`}\n >\n {/* Title and Description */}\n <div className=\"flex-1 min-w-0\">\n <Text\n variant=\"heading\"\n as=\"h1\"\n className={`${getSpacingClass(\"sm\", \"mb\")} text-2xl font-bold`}\n >\n {title}\n </Text>\n {description && (\n <Text variant=\"body\" className=\"text-fg-secondary\">\n {description}\n </Text>\n )}\n </div>\n\n {/* Actions */}\n {actions && (\n <div\n className={`flex items-center ${getSpacingClass(\"sm\", \"gap\")} flex-shrink-0`}\n >\n {actions}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nexport default PageHeader;\n","\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport type { TableColumn } from \"./TableTypes\";\n\nexport interface TableCellProps<\n T = unknown,\n> extends HTMLAttributes<HTMLTableCellElement> {\n column: TableColumn<T>;\n row: T;\n}\n\n/**\n * TableCell Component\n *\n * Renders a table cell (td) for a column.\n * Uses column.render if available, otherwise renders the raw value.\n * Must be used within a Table component.\n */\nexport default function TableCell<\n T extends Record<string, unknown> = Record<string, unknown>,\n>({ column, row, className = \"\", ...props }: TableCellProps<T>) {\n const value = column.key in row ? row[column.key as keyof T] : undefined;\n\n return (\n <td\n className={`${getSpacingClass(\"lg\", \"px\")} ${getSpacingClass(\"base\", \"py\")} whitespace-nowrap text-sm text-fg-primary ${\n column.hiddenOnMobile ? \"hidden md:table-cell\" : \"\"\n } ${className}`}\n {...props}\n >\n {column.render ? column.render(value, row) : String(value ?? \"\")}\n </td>\n );\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { CheckCircle2 } from \"lucide-react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getRadiusClass } from \"../../tokens/radius\";\n\nexport type TimelineOrientation = \"horizontal\" | \"vertical\";\n\nexport interface TimelineItem {\n id: string;\n title: string;\n description?: string;\n content?: ReactNode;\n timestamp?: string;\n icon?: ReactNode;\n status?: \"default\" | \"active\" | \"completed\" | \"error\";\n}\n\nexport interface TimelineProps {\n items: TimelineItem[];\n orientation?: TimelineOrientation;\n className?: string;\n}\n\n/**\n * Timeline Component\n *\n * A timeline component for displaying events in chronological order.\n * Supports horizontal and vertical orientations.\n * Follows Atomic Design principles as an Organism component.\n *\n * @example\n * ```tsx\n * <Timeline\n * items={[\n * { id: '1', title: 'Event 1', description: 'Description 1', timestamp: '2024-01-01' },\n * { id: '2', title: 'Event 2', description: 'Description 2', timestamp: '2024-01-02' },\n * ]}\n * />\n * ```\n */\nexport default function Timeline({\n items,\n orientation = \"vertical\",\n className = \"\",\n}: TimelineProps) {\n if (orientation === \"horizontal\") {\n return (\n <div className={`flex items-start ${className}`}>\n {items.map((item, index) => {\n const status =\n item.status ||\n (index === 0\n ? \"active\"\n : index < items.findIndex((i) => i.status === \"active\")\n ? \"completed\"\n : \"default\");\n const isLast = index === items.length - 1;\n\n return (\n <div key={item.id} className=\"flex items-start flex-1\">\n <div className=\"flex flex-col items-center flex-1\">\n {/* Icon/Indicator */}\n <div\n // data-marker=\"pending\" — see .claude/rules/colors.md\n // \"fg-quaternary: AA-by-construction exception\".\n {...(status === \"default\"\n ? { \"data-marker\": \"pending\" }\n : {})}\n className={`\n flex\n items-center\n justify-center\n w-10\n h-10\n ${getRadiusClass(\"full\")}\n border-2\n ${\n status === \"completed\"\n ? \"bg-success border-success text-fg-inverse\"\n : status === \"active\"\n ? \"bg-surface-brand-strong border-line-brand text-fg-inverse\"\n : status === \"error\"\n ? \"bg-error border-error text-fg-inverse\"\n : \"bg-surface-base border-line-emphasis text-fg-quaternary\"\n }\n `}\n >\n {item.icon ||\n (status === \"completed\" ? (\n <CheckCircle2 className=\"h-4 w-4\" />\n ) : (\n index + 1\n ))}\n </div>\n\n {/* Connector Line */}\n {!isLast && (\n <div\n className={`\n w-full\n h-0.5\n ${getSpacingClass(\"sm\", \"mt\")}\n ${status === \"completed\" ? \"bg-success\" : \"bg-line-emphasis\"}\n `}\n />\n )}\n\n {/* Content */}\n <div\n className={`${getSpacingClass(\"base\", \"mt\")} text-center ${getSpacingClass(\"base\", \"px\")}`}\n >\n {item.timestamp && (\n <p\n className={`text-xs text-fg-tertiary ${getSpacingClass(\"xs\", \"mb\")}`}\n >\n {item.timestamp}\n </p>\n )}\n <h3 className=\"text-sm font-semibold text-fg-primary\">\n {item.title}\n </h3>\n {item.description && (\n <p\n className={`text-xs text-fg-secondary ${getSpacingClass(\"xs\", \"mt\")}`}\n >\n {item.description}\n </p>\n )}\n {item.content && (\n <div className={getSpacingClass(\"sm\", \"mt\")}>\n {item.content}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n\n // Vertical orientation\n return (\n <div className={`${getSpacingClass(\"none\", \"space-y\")} ${className}`}>\n {items.map((item, index) => {\n const status =\n item.status ||\n (index === 0\n ? \"active\"\n : index < items.findIndex((i) => i.status === \"active\")\n ? \"completed\"\n : \"default\");\n const isLast = index === items.length - 1;\n\n return (\n <div\n key={item.id}\n className={`flex items-start ${getSpacingClass(\"base\", \"gap\")}`}\n >\n {/* Timeline Line & Icon */}\n <div className=\"flex flex-col items-center\">\n <div\n // data-marker=\"pending\" — see .claude/rules/colors.md\n // \"fg-quaternary: AA-by-construction exception\".\n {...(status === \"default\" ? { \"data-marker\": \"pending\" } : {})}\n className={`\n flex\n items-center\n justify-center\n w-10\n h-10\n ${getRadiusClass(\"full\")}\n border-2\n ${\n status === \"completed\"\n ? \"bg-success border-success text-fg-inverse\"\n : status === \"active\"\n ? \"bg-surface-brand-strong border-line-brand text-fg-inverse\"\n : status === \"error\"\n ? \"bg-error border-error text-fg-inverse\"\n : \"bg-surface-base border-line-emphasis text-fg-quaternary\"\n }\n `}\n >\n {item.icon ||\n (status === \"completed\" ? (\n <CheckCircle2 className=\"h-4 w-4\" />\n ) : (\n index + 1\n ))}\n </div>\n {!isLast && (\n <div\n className={`\n w-0.5\n flex-1\n min-h-16\n ${getSpacingClass(\"sm\", \"mt\")}\n ${status === \"completed\" ? \"bg-success\" : \"bg-line-emphasis\"}\n `}\n />\n )}\n </div>\n\n {/* Content */}\n <div className={`flex-1 ${getSpacingClass(\"xl\", \"pb\")}`}>\n {item.timestamp && (\n <p\n className={`text-xs text-fg-tertiary ${getSpacingClass(\"xs\", \"mb\")}`}\n >\n {item.timestamp}\n </p>\n )}\n <h3\n className={`\n text-base\n font-semibold\n ${status === \"active\" ? \"text-fg-brand-emphasis\" : \"text-fg-primary\"}\n `}\n >\n {item.title}\n </h3>\n {item.description && (\n <p\n className={`text-sm text-fg-secondary ${getSpacingClass(\"xs\", \"mt\")}`}\n >\n {item.description}\n </p>\n )}\n {item.content && (\n <div className={getSpacingClass(\"md\", \"mt\")}>\n {item.content}\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n"],"names":["RadiusTokenFactory","size","config","RADIUS_TOKENS","getRadiusClass","SpacingTokenFactory","scale","px","rem","__publicField","SPACING_TOKENS","getSpacingClass","direction","value","TypographyTokenFactory","height","weight","lineHeight","TYPOGRAPHY_TOKENS","getTypographyClasses","variant","token","getTypographySize","getTypographyWeight","cn","inputs","twMerge","clsx","cva","base","variantFn","cvaLib","props","variantClasses","badgeVariants","Badge","memo","forwardRef","_a","ref","_b","style","className","children","ariaLabel","__objRest","classes","accessibleLabel","childProps","jsx","__spreadProps","__spreadValues","setRef","composeRefs","refs","node","hasCleanup","cleanups","cleanup","i","REACT_LAZY_TYPE","use","React","isPromiseLike","isLazyComponent","element","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","Slot","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","overrideProps","propName","slotPropValue","childPropValue","args","result","getter","mayWarn","chipVariants","Chip","selected","disabled","tabIndex","asChild","onRemove","onClick","useLabelButton","interactive","handleKeyDown","e","jsxs","X","ErrorMessage","message","id","baseClasses","AlertCircle","Info","labelBaseClasses","labelVariantClasses","Label","createBrandToken","hex","family","rgb","hexToRgb","hsl","hexToHsl","r","g","b","max","min","h","s","l","d","createToken","colorName","ShadowTokenFactory","SHADOW_TOKENS","getShadowClass","BorderTokenFactory","width","BreakpointTokenFactory","name","AnimationTokenFactory","duration","easing","durationMap","easingMap","property","durationToken","properties","tailwindClasses","ZIndexTokenFactory","layer","OpacityTokenFactory","decimal","descriptionMap","progressTrackVariants","progressBarVariants","Progress","showLabel","label","isIndeterminate","percentage","defaultAriaLabel","separatorOrientationClasses","separatorVariantClasses","Separator","orientation","Skeleton","lines","_","index","spinnerVariants","Spinner","Loader2","TEXT_COLOR_CLASSES","TextComponent","bold","italic","as","colorRole","colorShade","rest","classNames","Tag","Text","maxWidthClasses","Container","maxWidth","paddingX","paddingY","center","Stack","spacing","align","justify","spacingClass","alignClasses","justifyClasses","Breadcrumb","items","separator","item","isLast","CardHeader","CardTitle","icon","badge","As","CardSubtitle","CardActions","CardBody","CardComponent","padding","ariaLabelledBy","asSection","cardVariants","isInteractive","role","commonProps","MemoCard","Card","DialogHeader","DialogFooter","DrawerHeader","DrawerFooter","HeaderActions","HeaderNavigation","MenuSeparator","NavbarSeparator","pageHeaderVariants","PageHeader","title","description","breadcrumb","actions","TableCell","column","row","Timeline","status","CheckCircle2"],"mappings":"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","x_google_ignoreList":[6,7]}
1
+ {"version":3,"file":"index.js","sources":["../../src/ui/tokens/radius.ts","../../src/ui/tokens/spacing.ts","../../src/ui/tokens/typography.ts","../../src/ui/utils/cn.ts","../../src/ui/utils/cva.ts","../../src/ui/primitives/Badge/Badge.tsx","../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../node_modules/@radix-ui/react-slot/dist/index.mjs","../../src/ui/primitives/Chip/Chip.tsx","../../src/ui/primitives/ErrorMessage/ErrorMessage.tsx","../../src/ui/primitives/Info/Info.tsx","../../src/ui/primitives/Label/Label.tsx","../../src/ui/tokens/colors/brand.ts","../../src/ui/tokens/colors/primitives.ts","../../src/ui/tokens/shadows.ts","../../src/ui/tokens/borders.ts","../../src/ui/tokens/breakpoints.ts","../../src/ui/tokens/animations.ts","../../src/ui/tokens/z-index.ts","../../src/ui/tokens/opacity.ts","../../src/ui/primitives/Progress/Progress.tsx","../../src/ui/primitives/Separator/Separator.tsx","../../src/ui/primitives/Skeleton/Skeleton.tsx","../../src/ui/primitives/Spinner/Spinner.tsx","../../src/ui/primitives/Text/Text.tsx","../../src/ui/layouts/Container/Container.tsx","../../src/ui/layouts/Stack/Stack.tsx","../../src/ui/components/Breadcrumb/Breadcrumb.tsx","../../src/ui/components/Card/CardHeader.tsx","../../src/ui/components/Card/CardTitle.tsx","../../src/ui/components/Card/CardSubtitle.tsx","../../src/ui/components/Card/CardActions.tsx","../../src/ui/components/Card/CardBody.tsx","../../src/ui/components/Card/Card.tsx","../../src/ui/components/Dialog/DialogHeader.tsx","../../src/ui/components/Dialog/DialogFooter.tsx","../../src/ui/components/Drawer/DrawerHeader.tsx","../../src/ui/components/Drawer/DrawerFooter.tsx","../../src/ui/components/Header/components/HeaderActions.tsx","../../src/ui/components/Header/components/HeaderNavigation.tsx","../../src/ui/components/Menu/MenuSeparator.tsx","../../src/ui/components/SideNavbar/components/Navbar/NavbarSeparator.tsx","../../src/ui/components/PageHeader/PageHeader.tsx","../../src/ui/components/Stat/Stat.tsx","../../src/ui/components/Stat/StatGroup.tsx","../../src/ui/components/Table/TableCell.tsx","../../src/ui/components/Timeline/Timeline.tsx"],"sourcesContent":["/**\n * Border Radius Tokens\n *\n * Centralized border radius system for consistent rounded corners.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type RadiusSize =\n | \"none\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"full\";\n\nexport interface RadiusToken {\n value: number;\n rem: string;\n px: string;\n tailwind: string;\n description: string;\n}\n\n/**\n * Radius Token Factory\n * Creates radius tokens with consistent values\n */\nexport class RadiusTokenFactory {\n /**\n * Create a radius token\n */\n static create(size: RadiusSize): RadiusToken {\n const radiusMap: Record<\n RadiusSize,\n { px: number; tailwind: string; description: string }\n > = {\n none: {\n px: 0,\n tailwind: \"rounded-none\",\n description: \"No border radius\",\n },\n sm: {\n px: 2,\n tailwind: \"rounded-sm\",\n description: \"Small radius (2px) for subtle rounding\",\n },\n md: {\n px: 6,\n tailwind: \"rounded-md\",\n description: \"Medium radius (6px) for buttons and inputs\",\n },\n lg: {\n px: 8,\n tailwind: \"rounded-lg\",\n description: \"Large radius (8px) for cards and containers\",\n },\n xl: {\n px: 12,\n tailwind: \"rounded-xl\",\n description: \"Extra large radius (12px) for prominent elements\",\n },\n \"2xl\": {\n px: 16,\n tailwind: \"rounded-2xl\",\n description: \"2X large radius (16px) for large containers\",\n },\n \"3xl\": {\n px: 24,\n tailwind: \"rounded-3xl\",\n description: \"3X large radius (24px) for very large containers\",\n },\n full: {\n px: 9999,\n tailwind: \"rounded-full\",\n description: \"Full radius for circular elements\",\n },\n };\n\n const config = radiusMap[size];\n return {\n value: config.px,\n rem: `${config.px / 16}rem`,\n px: `${config.px}px`,\n tailwind: config.tailwind,\n description: config.description,\n };\n }\n}\n\n/**\n * Pre-defined radius tokens\n */\nexport const RADIUS_TOKENS = {\n none: RadiusTokenFactory.create(\"none\"),\n sm: RadiusTokenFactory.create(\"sm\"),\n md: RadiusTokenFactory.create(\"md\"),\n lg: RadiusTokenFactory.create(\"lg\"),\n xl: RadiusTokenFactory.create(\"xl\"),\n \"2xl\": RadiusTokenFactory.create(\"2xl\"),\n \"3xl\": RadiusTokenFactory.create(\"3xl\"),\n full: RadiusTokenFactory.create(\"full\"),\n} as const;\n\n/**\n * Helper function to get radius token\n */\nexport function getRadius(size: keyof typeof RADIUS_TOKENS): RadiusToken {\n return RADIUS_TOKENS[size];\n}\n\n/**\n * Helper function to get radius as Tailwind class\n */\nexport function getRadiusClass(size: keyof typeof RADIUS_TOKENS): string {\n return RADIUS_TOKENS[size].tailwind;\n}\n","/**\n * Spacing Tokens\n *\n * Centralized spacing scale based on 4px base unit.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type SpacingScale =\n | 0\n | 0.5\n | 1\n | 1.5\n | 2\n | 2.5\n | 3\n | 3.5\n | 4\n | 5\n | 6\n | 8\n | 10\n | 12\n | 16\n | 20\n | 24\n | 32\n | 40\n | 48\n | 64\n | 80\n | 96;\n\nexport interface SpacingToken {\n value: number;\n rem: string;\n px: string;\n tailwind: string;\n}\n\n/**\n * Spacing Token Factory\n * Creates spacing tokens with consistent naming and values\n */\nexport class SpacingTokenFactory {\n private static readonly BASE_UNIT = 4; // 4px base\n\n /**\n * Create a spacing token from scale value\n */\n static create(scale: SpacingScale): SpacingToken {\n const px = scale * this.BASE_UNIT;\n const rem = px / 16; // 16px = 1rem\n\n return {\n value: px,\n rem: `${rem}rem`,\n px: `${px}px`,\n tailwind: this.getTailwindClass(scale),\n };\n }\n\n /**\n * Get Tailwind class for spacing value\n */\n private static getTailwindClass(scale: SpacingScale): string {\n const tailwindMap: Record<SpacingScale, string> = {\n 0: \"0\",\n 0.5: \"0.5\", // 2px — half-step, used by fine UI (badges, switches, separators)\n 1: \"1\", // 4px\n 1.5: \"1.5\", // 6px — half-step\n 2: \"2\", // 8px\n 2.5: \"2.5\", // 10px — half-step\n 3: \"3\", // 12px\n 3.5: \"3.5\", // 14px — half-step\n 4: \"4\", // 16px\n 5: \"5\", // 20px\n 6: \"6\", // 24px\n 8: \"8\", // 32px\n 10: \"10\", // 40px\n 12: \"12\", // 48px\n 16: \"16\", // 64px\n 20: \"20\", // 80px\n 24: \"24\", // 96px\n 32: \"32\", // 128px\n 40: \"40\", // 160px\n 48: \"48\", // 192px\n 64: \"64\", // 256px\n 80: \"80\", // 320px\n 96: \"96\", // 384px\n };\n\n return tailwindMap[scale] || String(scale);\n }\n}\n\n/**\n * Pre-defined spacing tokens\n */\nexport const SPACING_TOKENS = {\n // Micro spacing (0-14px)\n none: SpacingTokenFactory.create(0),\n \"0.5\": SpacingTokenFactory.create(0.5), // 2px (half-step)\n xs: SpacingTokenFactory.create(1), // 4px\n \"1.5\": SpacingTokenFactory.create(1.5), // 6px (half-step)\n sm: SpacingTokenFactory.create(2), // 8px\n \"2.5\": SpacingTokenFactory.create(2.5), // 10px (half-step)\n md: SpacingTokenFactory.create(3), // 12px\n \"3.5\": SpacingTokenFactory.create(3.5), // 14px (half-step)\n\n // Standard spacing (16-32px)\n base: SpacingTokenFactory.create(4), // 16px\n lg: SpacingTokenFactory.create(6), // 24px\n xl: SpacingTokenFactory.create(8), // 32px\n\n // Large spacing (40-64px)\n \"2xl\": SpacingTokenFactory.create(10), // 40px\n \"3xl\": SpacingTokenFactory.create(12), // 48px\n \"4xl\": SpacingTokenFactory.create(16), // 64px\n\n // Extra large spacing (80px+)\n \"5xl\": SpacingTokenFactory.create(20), // 80px\n \"6xl\": SpacingTokenFactory.create(24), // 96px\n} as const;\n\n/**\n * Helper function to get spacing value\n */\nexport function getSpacing(scale: keyof typeof SPACING_TOKENS): SpacingToken {\n return SPACING_TOKENS[scale];\n}\n\n/**\n * Helper function to get spacing as Tailwind class\n */\nexport function getSpacingClass(\n scale: keyof typeof SPACING_TOKENS,\n direction:\n | \"p\"\n | \"m\"\n | \"px\"\n | \"mx\"\n | \"py\"\n | \"my\"\n | \"pt\"\n | \"mt\"\n | \"pr\"\n | \"mr\"\n | \"pb\"\n | \"mb\"\n | \"pl\"\n | \"ml\"\n | \"gap\"\n | \"gap-x\"\n | \"gap-y\"\n | \"space-x\"\n | \"space-y\" = \"p\",\n): string {\n const token = SPACING_TOKENS[scale];\n const value = token.tailwind;\n\n const prefixMap: Record<string, string> = {\n p: \"p\",\n m: \"m\",\n px: \"px\",\n mx: \"mx\",\n py: \"py\",\n my: \"my\",\n pt: \"pt\",\n mt: \"mt\",\n pr: \"pr\",\n mr: \"mr\",\n pb: \"pb\",\n mb: \"mb\",\n pl: \"pl\",\n ml: \"ml\",\n gap: \"gap\",\n \"gap-x\": \"gap-x\",\n \"gap-y\": \"gap-y\",\n \"space-x\": \"space-x\",\n \"space-y\": \"space-y\",\n };\n\n return `${prefixMap[direction]}-${value}`;\n}\n","/**\n * Typography Tokens\n *\n * Centralized typography system with font families, sizes, weights, and line heights.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type FontFamily = \"sans\" | \"serif\" | \"mono\";\nexport type FontWeight = \"light\" | \"normal\" | \"medium\" | \"semibold\" | \"bold\";\nexport type FontSize =\n | \"2xs\"\n | \"xs\"\n | \"sm\"\n | \"base\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"5xl\"\n | \"6xl\";\nexport type LineHeight =\n | \"none\"\n | \"tight\"\n | \"snug\"\n | \"normal\"\n | \"relaxed\"\n | \"loose\";\n\nexport interface TypographyToken {\n fontSize: {\n value: number;\n rem: string;\n px: string;\n tailwind: string;\n };\n lineHeight: {\n value: number;\n tailwind: string;\n };\n fontWeight: {\n value: number;\n tailwind: string;\n };\n}\n\nexport interface FontFamilyToken {\n name: string;\n stack: string;\n tailwind: string;\n}\n\nexport interface FontWeightToken {\n value: number;\n tailwind: string;\n}\n\n/**\n * Typography Token Factory\n * Creates typography tokens with consistent values\n */\nexport class TypographyTokenFactory {\n /**\n * Create font size token\n */\n static createFontSize(size: FontSize): TypographyToken[\"fontSize\"] {\n const sizeMap: Record<FontSize, { px: number; tailwind: string }> = {\n \"2xs\": { px: 10, tailwind: \"text-2xs\" }, // micro-text (badge counters, mini chips)\n xs: { px: 12, tailwind: \"text-xs\" },\n sm: { px: 14, tailwind: \"text-sm\" },\n base: { px: 16, tailwind: \"text-base\" },\n lg: { px: 18, tailwind: \"text-lg\" },\n xl: { px: 20, tailwind: \"text-xl\" },\n \"2xl\": { px: 24, tailwind: \"text-2xl\" },\n \"3xl\": { px: 30, tailwind: \"text-3xl\" },\n \"4xl\": { px: 36, tailwind: \"text-4xl\" },\n \"5xl\": { px: 48, tailwind: \"text-5xl\" },\n \"6xl\": { px: 60, tailwind: \"text-6xl\" },\n };\n\n const config = sizeMap[size];\n return {\n value: config.px,\n rem: `${config.px / 16}rem`,\n px: `${config.px}px`,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create line height token\n */\n static createLineHeight(height: LineHeight): TypographyToken[\"lineHeight\"] {\n const heightMap: Record<LineHeight, { value: number; tailwind: string }> = {\n none: { value: 1, tailwind: \"leading-none\" },\n tight: { value: 1.25, tailwind: \"leading-tight\" },\n snug: { value: 1.375, tailwind: \"leading-snug\" },\n normal: { value: 1.5, tailwind: \"leading-normal\" },\n relaxed: { value: 1.625, tailwind: \"leading-relaxed\" },\n loose: { value: 2, tailwind: \"leading-loose\" },\n };\n\n const config = heightMap[height];\n return {\n value: config.value,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create font weight token\n */\n static createFontWeight(weight: FontWeight): FontWeightToken {\n const weightMap: Record<FontWeight, { value: number; tailwind: string }> = {\n light: { value: 300, tailwind: \"font-light\" },\n normal: { value: 400, tailwind: \"font-normal\" },\n medium: { value: 500, tailwind: \"font-medium\" },\n semibold: { value: 600, tailwind: \"font-semibold\" },\n bold: { value: 700, tailwind: \"font-bold\" },\n };\n\n const config = weightMap[weight];\n return {\n value: config.value,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create complete typography token\n */\n static create(\n size: FontSize,\n lineHeight: LineHeight = \"normal\",\n weight: FontWeight = \"normal\",\n ): TypographyToken {\n return {\n fontSize: this.createFontSize(size),\n lineHeight: this.createLineHeight(lineHeight),\n fontWeight: this.createFontWeight(weight),\n };\n }\n}\n\n/**\n * Font family tokens\n */\nexport const FONT_FAMILY_TOKENS: Record<FontFamily, FontFamilyToken> = {\n sans: {\n name: \"sans\",\n stack:\n 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif',\n tailwind: \"font-sans\",\n },\n serif: {\n name: \"serif\",\n stack: 'ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif',\n tailwind: \"font-serif\",\n },\n mono: {\n name: \"mono\",\n stack:\n 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n tailwind: \"font-mono\",\n },\n} as const;\n\n/**\n * Font weight tokens\n */\nexport const FONT_WEIGHT_TOKENS: Record<FontWeight, FontWeightToken> = {\n light: TypographyTokenFactory.createFontWeight(\"light\"),\n normal: TypographyTokenFactory.createFontWeight(\"normal\"),\n medium: TypographyTokenFactory.createFontWeight(\"medium\"),\n semibold: TypographyTokenFactory.createFontWeight(\"semibold\"),\n bold: TypographyTokenFactory.createFontWeight(\"bold\"),\n} as const;\n\n/**\n * Pre-defined typography tokens for common use cases\n */\nexport const TYPOGRAPHY_TOKENS = {\n // Headings\n h1: TypographyTokenFactory.create(\"4xl\", \"tight\", \"bold\"),\n h2: TypographyTokenFactory.create(\"3xl\", \"tight\", \"bold\"),\n h3: TypographyTokenFactory.create(\"2xl\", \"snug\", \"semibold\"),\n h4: TypographyTokenFactory.create(\"xl\", \"snug\", \"semibold\"),\n h5: TypographyTokenFactory.create(\"lg\", \"normal\", \"medium\"),\n h6: TypographyTokenFactory.create(\"base\", \"normal\", \"medium\"),\n\n // Body text\n body: TypographyTokenFactory.create(\"base\", \"relaxed\", \"normal\"),\n bodySmall: TypographyTokenFactory.create(\"sm\", \"relaxed\", \"normal\"),\n bodyLarge: TypographyTokenFactory.create(\"lg\", \"relaxed\", \"normal\"),\n\n // UI elements\n label: TypographyTokenFactory.create(\"sm\", \"normal\", \"medium\"),\n caption: TypographyTokenFactory.create(\"xs\", \"normal\", \"normal\"),\n button: TypographyTokenFactory.create(\"base\", \"normal\", \"medium\"),\n} as const;\n\n/**\n * Helper function to get typography token\n */\nexport function getTypography(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): TypographyToken {\n return TYPOGRAPHY_TOKENS[variant];\n}\n\n/**\n * Helper function to get typography classes as string\n */\nexport function getTypographyClasses(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n const token = TYPOGRAPHY_TOKENS[variant];\n return `${token.fontSize.tailwind} ${token.lineHeight.tailwind} ${token.fontWeight.tailwind}`;\n}\n\n/**\n * Helper function to get only font size class\n */\nexport function getTypographySize(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n return TYPOGRAPHY_TOKENS[variant].fontSize.tailwind;\n}\n\n/**\n * Helper function to get font size class directly from FontSize\n * This is a convenience function for when you just need a size, not a full typography variant\n */\nexport function getTypographySizeFromFontSize(size: FontSize): string {\n return TypographyTokenFactory.createFontSize(size).tailwind;\n}\n\n/**\n * Helper function to get only font weight class\n */\nexport function getTypographyWeight(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n return TYPOGRAPHY_TOKENS[variant].fontWeight.tailwind;\n}\n\n/**\n * Helper function to get font weight class directly from FontWeight\n * This is a convenience function for when you just need a weight, not a full typography variant\n */\nexport function getTypographyWeightFromFontWeight(weight: FontWeight): string {\n return TypographyTokenFactory.createFontWeight(weight).tailwind;\n}\n\n/**\n * Helper function to get only line height class\n */\nexport function getTypographyLineHeight(\n variant: keyof typeof TYPOGRAPHY_TOKENS,\n): string {\n return TYPOGRAPHY_TOKENS[variant].lineHeight.tailwind;\n}\n","/**\n * CN Utility - ClassName Merge\n *\n * Utility function for merging classNames with Tailwind conflict resolution.\n * Combines clsx for conditional classes and tailwind-merge for conflict resolution.\n *\n * @example\n * ```tsx\n * cn('base-class', condition && 'conditional-class', className)\n * cn(['class1', 'class2'], { 'class3': true })\n * ```\n */\n\nimport { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges classNames and resolves Tailwind class conflicts.\n *\n * Uses clsx for conditional class handling and tailwind-merge\n * to intelligently merge Tailwind classes, resolving conflicts\n * (e.g., 'p-2' and 'p-4' -> 'p-4').\n *\n * @param inputs - Class values to merge (strings, arrays, objects)\n * @returns Merged className string with conflicts resolved\n *\n * @example\n * ```tsx\n * // Basic usage\n * cn('base-class', 'another-class') // 'base-class another-class'\n *\n * // Conditional classes\n * cn('base', isActive && 'active', className)\n *\n * // Arrays and objects\n * cn(['class1', 'class2'], { 'class3': true, 'class4': false })\n *\n * // Tailwind conflict resolution\n * cn('p-2', 'p-4') // 'p-4' (p-2 is overridden)\n * cn('text-red-500', 'text-blue-500') // 'text-blue-500'\n * ```\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","/**\n * CVA Utility - Class Variance Authority\n *\n * Type-safe utility for creating component variants with compound variants support.\n * Based on class-variance-authority but integrated with our design system.\n *\n * @example\n * ```tsx\n * const buttonVariants = cva('base-class', {\n * variants: {\n * variant: { primary: 'bg-blue-500', secondary: 'bg-gray-500' },\n * size: { sm: 'text-sm', md: 'text-base' }\n * },\n * defaultVariants: { variant: 'primary', size: 'md' }\n * })\n * ```\n */\n\nimport { type VariantProps, cva as cvaLib } from \"class-variance-authority\";\nimport type { ClassValue } from \"clsx\";\nimport { cn } from \"./cn\";\n\n/**\n * Re-export VariantProps for type inference\n */\nexport type { VariantProps };\n\n/**\n * Creates a type-safe variant function with compound variants support.\n *\n * Integrates with our cn() utility for proper Tailwind conflict resolution.\n * This is a thin wrapper around class-variance-authority's cva function\n * that ensures cn() is used for final class merging.\n *\n * @param base - Base classes that always apply\n * @param config - Variant configuration with variants, compoundVariants, and defaultVariants\n * @returns Function that returns className based on variant props\n *\n * @example\n * ```tsx\n * // Simple variants\n * const buttonVariants = cva('base-class', {\n * variants: {\n * variant: {\n * primary: 'bg-blue-500 text-white',\n * secondary: 'bg-gray-500 text-white'\n * },\n * size: {\n * sm: 'px-2 py-1 text-sm',\n * md: 'px-4 py-2 text-base'\n * }\n * },\n * defaultVariants: {\n * variant: 'primary',\n * size: 'md'\n * }\n * });\n *\n * // Usage\n * buttonVariants({ variant: 'primary', size: 'sm' })\n *\n * // Compound variants\n * const badgeVariants = cva('base', {\n * variants: {\n * variant: { success: '', error: '' },\n * style: { solid: '', outline: '' }\n * },\n * compoundVariants: [\n * { variant: 'success', style: 'solid', class: 'bg-green-500' },\n * { variant: 'error', style: 'outline', class: 'border-red-500' }\n * ]\n * });\n * ```\n */\nexport const cva = <T extends Record<string, Record<string, ClassValue>>>(\n base?: ClassValue,\n config?: Parameters<typeof cvaLib<T>>[1],\n) => {\n const variantFn = cvaLib(base, config);\n\n // Wrap to ensure cn() is used for final merge\n return ((props?: Parameters<typeof variantFn>[0]) => {\n const variantClasses = variantFn(props);\n return cn(variantClasses);\n }) as typeof variantFn;\n};\n","import { memo, forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport {\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\n\nexport type BadgeVariant =\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\"\n | \"neutral\"\n | \"primary\"\n | \"secondary\";\nexport type BadgeSize = \"sm\" | \"md\" | \"lg\";\nexport type BadgeStyle = \"solid\" | \"outline\";\n\nexport interface BadgeProps extends Omit<\n HTMLAttributes<HTMLSpanElement>,\n \"style\"\n> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n style?: BadgeStyle;\n children: ReactNode;\n \"aria-label\"?: string;\n}\n\n/**\n * Badge Component\n *\n * A versatile badge component for displaying status, priority, and other labels.\n * Follows Atomic Design principles as an Atom component.\n * Uses tokens for consistent theming.\n *\n * @example\n * ```tsx\n * <Badge variant=\"success\">Active</Badge>\n * <Badge variant=\"error\" size=\"lg\">Critical</Badge>\n * <Badge variant=\"info\" style=\"outline\">New</Badge>\n * ```\n */\n// Badge variants using CVA\nconst badgeVariants = cva(\n // Base classes\n cn(\n \"inline-flex\",\n \"items-center\",\n \"justify-center\",\n getTypographyWeight(\"label\"),\n getRadiusClass(\"md\"),\n \"border\",\n ),\n {\n variants: {\n variant: {\n success: \"\",\n warning: \"\",\n error: \"\",\n info: \"\",\n neutral: \"\",\n primary: \"\",\n secondary: \"\",\n },\n size: {\n sm: cn(\n getSpacingClass(\"1.5\", \"px\"),\n getSpacingClass(\"0.5\", \"py\"),\n getTypographySize(\"caption\"),\n ),\n md: cn(\n getSpacingClass(\"sm\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getTypographySize(\"caption\"),\n ),\n lg: cn(\n getSpacingClass(\"sm\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getTypographySize(\"bodySmall\"),\n ),\n },\n style: {\n solid: \"\",\n outline: \"\",\n },\n },\n compoundVariants: [\n // Solid style variants\n {\n variant: \"success\",\n style: \"solid\",\n class: cn(\"bg-success-bg\", \"text-success-dark\", \"border-success\"),\n },\n {\n variant: \"warning\",\n style: \"solid\",\n class: cn(\"bg-warning-bg\", \"text-warning-dark\", \"border-warning\"),\n },\n {\n variant: \"error\",\n style: \"solid\",\n class: cn(\"bg-error-bg\", \"text-error-dark\", \"border-error\"),\n },\n {\n variant: \"info\",\n style: \"solid\",\n class: cn(\"bg-info-bg\", \"text-info-dark\", \"border-info\"),\n },\n {\n variant: \"neutral\",\n style: \"solid\",\n class: cn(\"bg-surface-muted\", \"text-fg-primary\", \"border-line-default\"),\n },\n {\n variant: \"primary\",\n style: \"solid\",\n class: cn(\n \"bg-surface-brand-subtle\",\n \"text-fg-brand-emphasis\",\n \"border-line-brand\",\n ),\n },\n {\n variant: \"secondary\",\n style: \"solid\",\n // bg-pink-300: secondary solid badge — no semantic equivalent\n // (would shift 2 shades to bg-surface-secondary). Kept literal until\n // secondary brand surface palette expands beyond DEFAULT.\n class: cn(\n \"bg-pink-300\",\n \"text-fg-brand-secondary-emphasis\",\n \"border-line-secondary\",\n ),\n },\n // Outline style variants\n {\n variant: \"success\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-success\", \"text-fg-success\"),\n },\n {\n variant: \"warning\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-warning\", \"text-fg-warning\"),\n },\n {\n variant: \"error\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-error\", \"text-fg-error\"),\n },\n {\n variant: \"info\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-info\", \"text-fg-info\"),\n },\n {\n variant: \"neutral\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-line-default\", \"text-fg-secondary\"),\n },\n {\n variant: \"primary\",\n style: \"outline\",\n class: cn(\"bg-transparent\", \"border-line-brand\", \"text-fg-brand\"),\n },\n {\n variant: \"secondary\",\n style: \"outline\",\n class: cn(\n \"bg-transparent\",\n \"border-line-secondary\",\n \"text-fg-brand-secondary\",\n ),\n },\n ],\n defaultVariants: {\n variant: \"neutral\",\n size: \"md\",\n style: \"solid\",\n },\n },\n);\n\nconst Badge = memo(\n forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n {\n variant = \"neutral\",\n size = \"md\",\n style = \"solid\",\n className = \"\",\n children,\n \"aria-label\": ariaLabel,\n ...props\n },\n ref,\n ) {\n const classes = cn(badgeVariants({ variant, size, style }), className);\n\n // Best-effort accessible name resolution: explicit aria-label wins;\n // string children become the label; single-wrapped string children\n // (e.g. <Badge><span>Active</span></Badge>) are unwrapped one level.\n // Otherwise undefined and the consumer is responsible for naming\n // the badge externally.\n let accessibleLabel: string | undefined;\n if (ariaLabel) {\n accessibleLabel = ariaLabel;\n } else if (typeof children === \"string\") {\n accessibleLabel = children;\n } else if (\n typeof children === \"object\" &&\n children !== null &&\n \"props\" in children\n ) {\n const childProps = (children as { props?: { children?: unknown } }).props;\n if (childProps?.children && typeof childProps.children === \"string\") {\n accessibleLabel = childProps.children;\n }\n }\n\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={accessibleLabel}\n className={classes}\n {...props}\n >\n {children}\n </span>\n );\n }),\n);\n\nBadge.displayName = \"Badge\";\n\nexport default Badge;\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\nimport { forwardRef, type ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getTypographySize } from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\n\nexport type ChipVariant = \"default\" | \"outlined\" | \"filled\";\nexport type ChipSize = \"sm\" | \"md\" | \"lg\";\n\ninterface ChipBaseProps {\n children: ReactNode;\n variant?: ChipVariant;\n size?: ChipSize;\n selected?: boolean;\n disabled?: boolean;\n className?: string;\n \"aria-label\"?: string;\n tabIndex?: number;\n}\n\ninterface ChipStandardProps extends ChipBaseProps {\n asChild?: false;\n onRemove?: () => void;\n onClick?: () => void;\n}\n\n/**\n * `asChild` collapses the chip into a single node provided by the\n * consumer (typically `<Link>`). The non-interactive frame + inner\n * label-button + X structure is intentionally NOT rendered — the child\n * IS the chip. As a consequence:\n *\n * - `onClick` and `onRemove` are forbidden at the type level. The\n * child's own click handler (and `href`) is what fires; consumers\n * who need a removable selected filter use the standard\n * (non-asChild) form.\n * - `selected` still applies the visual classes via `chipVariants`,\n * but NO `aria-pressed` is emitted. Toggle-button semantics on\n * `<a>` would lie — a link isn't a two-state control. Consumers\n * that need the selected route surfaced to AT users should pass\n * `aria-current=\"page\"` (or similar) directly on the child Link.\n *\n * @see `.claude/rules/components.md` and the inline a11y notes below.\n */\ninterface ChipAsChildProps extends ChipBaseProps {\n asChild: true;\n /**\n * `onClick` is forbidden when `asChild` is true — the child element\n * owns interaction. Pass the handler (or `href`) on the child.\n */\n onClick?: never;\n /**\n * `onRemove` is forbidden when `asChild` is true — the collapsed\n * node has no slot for an X button. Use the standard (non-asChild)\n * form when removal is required.\n */\n onRemove?: never;\n}\n\nexport type ChipProps = ChipStandardProps | ChipAsChildProps;\n\n/**\n * Chip Component\n *\n * A chip/tag for labels, filters, or selected items.\n *\n * Standard form: an outer `<div>` frame (never interactive) with an\n * inner `<button>` label (when `onClick`) and a sibling X `<button>`\n * (when `onRemove`). This shape closes two axe violations the older\n * implementation hit — `aria-required-parent` (role=option without a\n * listbox) and `nested-interactive` (clickable outer + clickable X).\n *\n * `asChild` form: a single node provided by the consumer (e.g.\n * `<Link>`), with the chip's classes projected via Radix `Slot`. See\n * the `ChipAsChildProps` JSDoc for the a11y responsibility transfer\n * — the consumer's child carries `href`, focus behavior, and any\n * route-state ARIA (`aria-current`). Forbidden in this form:\n * `onClick`, `onRemove` (TS-level).\n *\n * @example\n * ```tsx\n * <Chip>Tag</Chip>\n * <Chip onRemove={() => console.log('removed')}>Removable</Chip>\n *\n * // Navigation chip — server-rendered, zero-JS-friendly.\n * <Chip asChild variant=\"filled\">\n * <Link href=\"/filtros/ativo\" prefetch aria-current=\"page\">Active</Link>\n * </Chip>\n * ```\n */\n// Chip variants using CVA\nconst chipVariants = cva(\n // Base classes\n cn(\n \"inline-flex\",\n \"items-center\",\n \"font-medium\",\n getRadiusClass(\"full\"),\n getSpacingClass(\"xs\", \"gap\"),\n ),\n {\n variants: {\n variant: {\n default: cn(\n \"bg-surface-muted\",\n \"text-fg-primary\",\n \"border\",\n \"border-line-default\",\n ),\n outlined: cn(\n \"bg-transparent\",\n \"text-fg-primary\",\n \"border\",\n \"border-line-default\",\n ),\n filled: cn(\n \"bg-surface-brand-strong\",\n \"text-fg-inverse\",\n \"border\",\n \"border-transparent\",\n ),\n },\n size: {\n sm: cn(\n getSpacingClass(\"xs\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getTypographySize(\"caption\"),\n ),\n md: cn(\n getSpacingClass(\"sm\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getTypographySize(\"bodySmall\"),\n ),\n lg: cn(\n getSpacingClass(\"md\", \"px\"),\n getSpacingClass(\"sm\", \"py\"),\n getTypographySize(\"body\"),\n ),\n },\n selected: {\n true: cn(\n \"bg-surface-brand-strong\",\n \"text-fg-inverse\",\n \"border\",\n \"border-line-brand\",\n ),\n false: \"\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n selected: true,\n variant: \"default\",\n class: \"\", // Override variant when selected\n },\n {\n selected: true,\n variant: \"outlined\",\n class: \"\", // Override variant when selected\n },\n {\n selected: true,\n variant: \"filled\",\n class: \"\", // Override variant when selected\n },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n selected: false,\n disabled: false,\n },\n },\n);\n\nconst Chip = forwardRef<HTMLDivElement, ChipProps>(function Chip(props, ref) {\n const {\n children,\n variant = \"default\",\n size = \"md\",\n selected = false,\n disabled = false,\n className = \"\",\n \"aria-label\": ariaLabel,\n tabIndex,\n asChild = false,\n } = props;\n\n // Generate accessible label\n const getAccessibleLabel = (): string | undefined => {\n if (ariaLabel) return ariaLabel;\n if (typeof children === \"string\") return children;\n // For non-string children, try to extract text content\n if (\n typeof children === \"object\" &&\n children !== null &&\n \"props\" in children\n ) {\n const childProps = (children as { props?: { children?: unknown } }).props;\n if (childProps?.children && typeof childProps.children === \"string\") {\n return childProps.children;\n }\n }\n return undefined;\n };\n\n const accessibleLabel = getAccessibleLabel();\n\n // asChild path: collapse the entire chip structure (frame + label\n // button + X) into the single consumer-provided node. The frame's\n // visual classes are projected onto the child via Slot.\n //\n // A11Y RESPONSIBILITY TRANSFER. The child element owns:\n // - focus (its native focus ring, or its own focus utilities)\n // - activation (its own click handler / href for navigation)\n // - route-state semantics: `aria-current=\"page\"` on a selected\n // Link is the right tool. `aria-pressed` is intentionally NOT\n // emitted here — a link is not a toggle button.\n // - disabled semantics: `aria-disabled` is set when `disabled` is\n // true, but it does NOT block navigation. Consumers that must\n // truly disable navigation should also gate `href` upstream.\n //\n // TS forbids `onClick` / `onRemove` in this form (see ChipAsChildProps).\n if (asChild) {\n return (\n <Slot\n ref={ref}\n className={cn(\n chipVariants({ variant, size, selected, disabled }),\n className,\n )}\n aria-label={ariaLabel}\n aria-disabled={disabled || undefined}\n tabIndex={tabIndex}\n >\n {children}\n </Slot>\n );\n }\n\n // Standard form below. Narrow `props` so the union picks up\n // onClick/onRemove handlers (forbidden when asChild=true at TS level).\n const { onRemove, onClick } = props as ChipStandardProps;\n\n // Architecture:\n // The label is a real `<button>` whenever the chip is meant to be\n // activated (`onClick` provided). The X is a sibling `<button>` when\n // `onRemove` is provided. The outer `<div>` is NEVER interactive —\n // no `role`, no `tabIndex`, no event handlers. This unifies what\n // used to be three structural variants:\n // - `onClick` only → outer `role=\"button\"` [old]\n // - `onClick` + `onRemove` (no selected) → label-button [PR68]\n // - `selected` → outer `role=\"option\"` [old, axe-flagged]\n // into one consistent shape: label is the actor, outer is the chip\n // chrome (visual frame).\n //\n // Why this matters for a11y:\n // - `role=\"option\"` outside `role=\"listbox\"` violates `aria-required-\n // parent`. The old `selected` path failed axe in every standalone\n // chip. Moving the action to a native `<button>` with\n // `aria-pressed={selected}` (toggle button pattern) communicates\n // state correctly without requiring a listbox parent.\n // - The interactive outer + inner X button produced nested-interactive\n // whenever the consumer combined `selected` (or `onClick`) with\n // `onRemove`. Outer non-interactive + sibling buttons fixes both\n // cases at once.\n //\n // `selected` with no `onClick` is decorative only — the chip CANNOT\n // toggle, so it gets no `aria-pressed` (which would lie) and no role.\n // The visual `selected` styling (chipVariants.selected) applies, but\n // AT users read it as static text. Consumers who want the state\n // communicated must also pass `onClick` to make it a real toggle.\n const useLabelButton = onClick !== undefined;\n const interactive = useLabelButton && !disabled;\n\n // Keyboard handler for the label-button. Native `<button>` activates on\n // Enter/Space in real browsers, but JSDOM does NOT simulate Enter → click,\n // so this preserves the previous test-friendly behavior AND adds explicit\n // `preventDefault` (the original outer-as-button needed it; on a native\n // button this is mostly belt-and-suspenders but harmless).\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.();\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n chipVariants({ variant, size, selected, disabled }),\n onRemove && getSpacingClass(\"xs\", \"pr\"),\n className,\n )}\n aria-disabled={disabled}\n >\n {useLabelButton ? (\n <button\n type=\"button\"\n onClick={disabled ? undefined : onClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n aria-pressed={selected ? true : undefined}\n aria-label={ariaLabel || accessibleLabel}\n tabIndex={\n tabIndex !== undefined ? tabIndex : interactive ? 0 : undefined\n }\n className={cn(\n \"flex-1\",\n \"bg-transparent\",\n \"border-0\",\n getSpacingClass(\"none\", \"p\"),\n \"text-inherit\",\n \"text-left\",\n \"cursor-pointer\",\n \"focus:outline-none\",\n \"focus:ring-2\",\n \"focus:ring-line-focus\",\n \"focus:ring-offset-2\",\n getRadiusClass(\"full\"),\n )}\n >\n {children}\n </button>\n ) : (\n <span>{children}</span>\n )}\n {onRemove && !disabled && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n className={cn(\n getSpacingClass(\"xs\", \"ml\"),\n \"hover:bg-tint-hover\",\n getRadiusClass(\"full\"),\n getSpacingClass(\"xs\", \"p\"),\n \"transition-colors\",\n \"focus:outline-none\",\n \"focus:ring-2\",\n \"focus:ring-line-focus\",\n \"focus:ring-offset-1\",\n )}\n aria-label={`Remove ${accessibleLabel || \"chip\"}`}\n >\n <X className=\"h-3 w-3\" aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n});\n\nChip.displayName = \"Chip\";\n\nexport default Chip;\n","import type { HTMLAttributes } from \"react\";\nimport { AlertCircle } from \"lucide-react\";\nimport { getTypographySize } from \"../../tokens/typography\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { cn } from \"../../utils\";\n\nexport interface ErrorMessageProps extends HTMLAttributes<HTMLDivElement> {\n message: string;\n id?: string;\n}\n\n/**\n * ErrorMessage Component\n *\n * A component for displaying validation error messages.\n * Follows Atomic Design principles as an Atom component.\n *\n * @example\n * ```tsx\n * <ErrorMessage message=\"This field is required\" id=\"email-error\" />\n * ```\n */\nexport default function ErrorMessage({\n message,\n id,\n className = \"\",\n ...props\n}: ErrorMessageProps) {\n const baseClasses = [\n getSpacingClass(\"xs\", \"mt\"),\n getTypographySize(\"bodySmall\"),\n \"text-fg-error\",\n \"flex\",\n \"items-center\",\n getSpacingClass(\"xs\", \"gap\"),\n ];\n\n const classes = cn(...baseClasses, className);\n\n return (\n <div role=\"alert\" id={id} className={classes} aria-live=\"polite\" {...props}>\n <AlertCircle className=\"h-4 w-4 shrink-0\" aria-hidden=\"true\" />\n <span>{message}</span>\n </div>\n );\n}\n","import type { HTMLAttributes } from \"react\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { cn } from \"../../utils\";\n\nexport interface InfoProps extends HTMLAttributes<HTMLDivElement> {\n variant?: \"info\" | \"warning\" | \"error\";\n}\n\nexport default function Info({\n variant = \"info\",\n className,\n ...props\n}: InfoProps) {\n const variantClasses = {\n warning: cn(\"bg-warning-bg\", \"text-warning-dark\", \"border-warning\"),\n error: cn(\"bg-error-bg\", \"text-error-dark\", \"border-error\"),\n info: cn(\"bg-info-bg\", \"text-info-dark\", \"border-info\"),\n };\n\n return (\n <div\n role=\"alert\"\n className={cn(\n \"border\",\n getSpacingClass(\"base\", \"px\"),\n getSpacingClass(\"sm\", \"py\"),\n getRadiusClass(\"lg\"),\n variantClasses[variant],\n className,\n )}\n {...props}\n />\n );\n}\n","import type { LabelHTMLAttributes } from \"react\";\nimport { forwardRef, memo } from \"react\";\nimport {\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens/typography\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { cn } from \"../../utils\";\n\ninterface Props extends LabelHTMLAttributes<HTMLLabelElement> {\n variant?: \"default\" | \"required\" | \"optional\";\n children: React.ReactNode;\n}\n\nconst labelBaseClasses = cn(\n \"block\",\n getTypographySize(\"label\"),\n getTypographyWeight(\"label\"),\n \"text-fg-primary\",\n);\n\nconst labelVariantClasses: Record<NonNullable<Props[\"variant\"]>, string> = {\n default: \"\",\n required: cn(\n \"after:content-['*']\",\n `after:${getSpacingClass(\"0.5\", \"ml\")}`,\n \"after:text-fg-error\",\n ),\n optional: cn(\n \"after:content-['(optional)']\",\n `after:${getSpacingClass(\"xs\", \"ml\")}`,\n \"after:text-fg-tertiary\",\n \"after:font-normal\",\n ),\n};\n\n/**\n * Label Component\n *\n * A styled label component for form inputs.\n * Follows Atomic Design principles as an Atom component.\n *\n * @example\n * ```tsx\n * <Label htmlFor=\"email\" variant=\"required\">\n * Email Address\n * </Label>\n * ```\n */\nconst Label = memo(\n forwardRef<HTMLLabelElement, Props>(function Label(\n { variant = \"default\", className = \"\", children, ...props },\n ref,\n ) {\n const classes = cn(\n labelBaseClasses,\n labelVariantClasses[variant],\n className,\n );\n\n return (\n <label ref={ref} className={classes} {...props}>\n {children}\n </label>\n );\n }),\n);\n\nLabel.displayName = \"Label\";\n\nexport default Label;\n","/**\n * Brand Primitive Palettes — TS mirror of src/styles/primitives/brand.css\n *\n * Brand-primary: institutional navy from brasil-a-vera globals.css.\n * Brand-secondary: OKLCH-derived from ADR-024 brasil-a-vera purple\n * (reproducible via scripts/derive-brand-secondary.mjs).\n *\n * Distinct from PRIMITIVE_COLORS Tailwind tones (indigo/pink/cyan/...)\n * which stay honest to their official Tailwind v4 values. Semantic tokens\n * point at these brand palettes, not at Tailwind tones.\n *\n * @brand brasil-a-vera (default, overridable)\n */\n\nimport type { ColorPalette, ColorScale, ColorToken } from \"./types\";\n\nfunction createBrandToken(\n hex: string,\n family: \"brand-primary\" | \"brand-secondary\",\n scale: ColorScale,\n): ColorToken {\n const rgb = hexToRgb(hex);\n const hsl = hexToHsl(hex);\n return {\n hex,\n rgb,\n hsl,\n cssVar: `var(--color-${family}-${scale})`,\n tailwind: `${family}-${scale}`,\n };\n}\n\nfunction hexToRgb(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return \"0, 0, 0\";\n return `${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(result[3], 16)}`;\n}\n\nfunction hexToHsl(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return \"0, 0%, 0%\";\n\n const r = parseInt(result[1], 16) / 255;\n const g = parseInt(result[2], 16) / 255;\n const b = parseInt(result[3], 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return `${Math.round(h * 360)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%`;\n}\n\n/**\n * Brand Primary — institutional navy\n */\nexport const BRAND_PRIMARY: ColorPalette = {\n 50: createBrandToken(\"#f0f4f8\", \"brand-primary\", 50),\n 100: createBrandToken(\"#d9e2ec\", \"brand-primary\", 100),\n 200: createBrandToken(\"#bcccdc\", \"brand-primary\", 200),\n 300: createBrandToken(\"#9fb3c8\", \"brand-primary\", 300),\n 400: createBrandToken(\"#7390ad\", \"brand-primary\", 400),\n 500: createBrandToken(\"#486581\", \"brand-primary\", 500),\n 600: createBrandToken(\"#334e68\", \"brand-primary\", 600),\n 700: createBrandToken(\"#243b53\", \"brand-primary\", 700),\n 800: createBrandToken(\"#1a2a3a\", \"brand-primary\", 800),\n 900: createBrandToken(\"#102a43\", \"brand-primary\", 900),\n 950: createBrandToken(\"#061a35\", \"brand-primary\", 950),\n};\n\n/**\n * Brand Secondary — ADR-024 purple, OKLCH-derived (hue 295)\n */\nexport const BRAND_SECONDARY: ColorPalette = {\n 50: createBrandToken(\"#f7f5ff\", \"brand-secondary\", 50),\n 100: createBrandToken(\"#eee9ff\", \"brand-secondary\", 100),\n 200: createBrandToken(\"#e0d6ff\", \"brand-secondary\", 200),\n 300: createBrandToken(\"#cbb8ff\", \"brand-secondary\", 300),\n 400: createBrandToken(\"#aa89fc\", \"brand-secondary\", 400),\n 500: createBrandToken(\"#8e58f2\", \"brand-secondary\", 500),\n 600: createBrandToken(\"#703bc8\", \"brand-secondary\", 600),\n 700: createBrandToken(\"#582aa2\", \"brand-secondary\", 700),\n 800: createBrandToken(\"#44227e\", \"brand-secondary\", 800),\n 900: createBrandToken(\"#32185d\", \"brand-secondary\", 900),\n 950: createBrandToken(\"#180635\", \"brand-secondary\", 950),\n};\n","/**\n * Design System - Primitive Color Tokens\n *\n * Complete color palettes with all shades (50-950).\n * These match the CSS variables defined in primitives/colors.css\n *\n * @brand brasil-a-vera (default, overridable)\n * @version 1.0.0\n */\n\nimport type {\n ColorPalette,\n ColorToken,\n ColorScale,\n PrimitiveColorName,\n PrimitiveColors,\n} from \"./types\";\nimport { BRAND_PRIMARY, BRAND_SECONDARY } from \"./brand\";\n\n/**\n * Helper to create a color token\n */\nfunction createToken(\n hex: string,\n colorName: string,\n scale: ColorScale,\n): ColorToken {\n const rgb = hexToRgb(hex);\n const hsl = hexToHsl(hex);\n return {\n hex,\n rgb,\n hsl,\n cssVar: `var(--color-${colorName}-${scale})`,\n tailwind: `${colorName}-${scale}`,\n };\n}\n\n/**\n * Convert hex to RGB string\n */\nfunction hexToRgb(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return \"0, 0, 0\";\n return `${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(result[3], 16)}`;\n}\n\n/**\n * Convert hex to HSL string\n */\nfunction hexToHsl(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return \"0, 0%, 0%\";\n\n const r = parseInt(result[1], 16) / 255;\n const g = parseInt(result[2], 16) / 255;\n const b = parseInt(result[3], 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return `${Math.round(h * 360)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%`;\n}\n\n/**\n * Indigo - Primary Brand Color\n */\nexport const INDIGO: ColorPalette = {\n 50: createToken(\"#eef2ff\", \"indigo\", 50),\n 100: createToken(\"#e0e7ff\", \"indigo\", 100),\n 200: createToken(\"#c7d2fe\", \"indigo\", 200),\n 300: createToken(\"#a5b4fc\", \"indigo\", 300),\n 400: createToken(\"#818cf8\", \"indigo\", 400),\n 500: createToken(\"#6366f1\", \"indigo\", 500),\n 600: createToken(\"#4f46e5\", \"indigo\", 600),\n 700: createToken(\"#4338ca\", \"indigo\", 700),\n 800: createToken(\"#3730a3\", \"indigo\", 800),\n 900: createToken(\"#312e81\", \"indigo\", 900),\n 950: createToken(\"#1e1b4b\", \"indigo\", 950),\n};\n\n/**\n * Violet - Secondary Brand Color\n */\nexport const VIOLET: ColorPalette = {\n 50: createToken(\"#f5f3ff\", \"violet\", 50),\n 100: createToken(\"#ede9fe\", \"violet\", 100),\n 200: createToken(\"#ddd6fe\", \"violet\", 200),\n 300: createToken(\"#c4b5fd\", \"violet\", 300),\n 400: createToken(\"#a78bfa\", \"violet\", 400),\n 500: createToken(\"#8b5cf6\", \"violet\", 500),\n 600: createToken(\"#7c3aed\", \"violet\", 600),\n 700: createToken(\"#6d28d9\", \"violet\", 700),\n 800: createToken(\"#5b21b6\", \"violet\", 800),\n 900: createToken(\"#4c1d95\", \"violet\", 900),\n 950: createToken(\"#2e1065\", \"violet\", 950),\n};\n\n/**\n * Cyan - Accent Color\n */\nexport const CYAN: ColorPalette = {\n 50: createToken(\"#ecfeff\", \"cyan\", 50),\n 100: createToken(\"#cffafe\", \"cyan\", 100),\n 200: createToken(\"#a5f3fc\", \"cyan\", 200),\n 300: createToken(\"#67e8f9\", \"cyan\", 300),\n 400: createToken(\"#22d3ee\", \"cyan\", 400),\n 500: createToken(\"#06b6d4\", \"cyan\", 500),\n 600: createToken(\"#0891b2\", \"cyan\", 600),\n 700: createToken(\"#0e7490\", \"cyan\", 700),\n 800: createToken(\"#155e75\", \"cyan\", 800),\n 900: createToken(\"#164e63\", \"cyan\", 900),\n 950: createToken(\"#083344\", \"cyan\", 950),\n};\n\n/**\n * Slate - Neutral Color\n */\nexport const SLATE: ColorPalette = {\n 50: createToken(\"#f8fafc\", \"slate\", 50),\n 100: createToken(\"#f1f5f9\", \"slate\", 100),\n 200: createToken(\"#e2e8f0\", \"slate\", 200),\n 300: createToken(\"#cbd5e1\", \"slate\", 300),\n 400: createToken(\"#94a3b8\", \"slate\", 400),\n 500: createToken(\"#64748b\", \"slate\", 500),\n 600: createToken(\"#475569\", \"slate\", 600),\n 700: createToken(\"#334155\", \"slate\", 700),\n 800: createToken(\"#1e293b\", \"slate\", 800),\n 900: createToken(\"#0f172a\", \"slate\", 900),\n 950: createToken(\"#020617\", \"slate\", 950),\n};\n\n/**\n * Gray - Alternative Neutral\n */\nexport const GRAY: ColorPalette = {\n 50: createToken(\"#f9fafb\", \"gray\", 50),\n 100: createToken(\"#f3f4f6\", \"gray\", 100),\n 200: createToken(\"#e5e7eb\", \"gray\", 200),\n 300: createToken(\"#d1d5db\", \"gray\", 300),\n 400: createToken(\"#9ca3af\", \"gray\", 400),\n 500: createToken(\"#6b7280\", \"gray\", 500),\n 600: createToken(\"#4b5563\", \"gray\", 600),\n 700: createToken(\"#374151\", \"gray\", 700),\n 800: createToken(\"#1f2937\", \"gray\", 800),\n 900: createToken(\"#111827\", \"gray\", 900),\n 950: createToken(\"#030712\", \"gray\", 950),\n};\n\n/**\n * Emerald - Success Color\n */\nexport const EMERALD: ColorPalette = {\n 50: createToken(\"#ecfdf5\", \"emerald\", 50),\n 100: createToken(\"#d1fae5\", \"emerald\", 100),\n 200: createToken(\"#a7f3d0\", \"emerald\", 200),\n 300: createToken(\"#6ee7b7\", \"emerald\", 300),\n 400: createToken(\"#34d399\", \"emerald\", 400),\n 500: createToken(\"#10b981\", \"emerald\", 500),\n 600: createToken(\"#059669\", \"emerald\", 600),\n 700: createToken(\"#047857\", \"emerald\", 700),\n 800: createToken(\"#065f46\", \"emerald\", 800),\n 900: createToken(\"#064e3b\", \"emerald\", 900),\n 950: createToken(\"#022c22\", \"emerald\", 950),\n};\n\n/**\n * Green - Alternative Success\n */\nexport const GREEN: ColorPalette = {\n 50: createToken(\"#f0fdf4\", \"green\", 50),\n 100: createToken(\"#dcfce7\", \"green\", 100),\n 200: createToken(\"#bbf7d0\", \"green\", 200),\n 300: createToken(\"#86efac\", \"green\", 300),\n 400: createToken(\"#4ade80\", \"green\", 400),\n 500: createToken(\"#22c55e\", \"green\", 500),\n 600: createToken(\"#16a34a\", \"green\", 600),\n 700: createToken(\"#15803d\", \"green\", 700),\n 800: createToken(\"#166534\", \"green\", 800),\n 900: createToken(\"#14532d\", \"green\", 900),\n 950: createToken(\"#052e16\", \"green\", 950),\n};\n\n/**\n * Amber - Warning Color\n */\nexport const AMBER: ColorPalette = {\n 50: createToken(\"#fffbeb\", \"amber\", 50),\n 100: createToken(\"#fef3c7\", \"amber\", 100),\n 200: createToken(\"#fde68a\", \"amber\", 200),\n 300: createToken(\"#fcd34d\", \"amber\", 300),\n 400: createToken(\"#fbbf24\", \"amber\", 400),\n 500: createToken(\"#f59e0b\", \"amber\", 500),\n 600: createToken(\"#d97706\", \"amber\", 600),\n 700: createToken(\"#b45309\", \"amber\", 700),\n 800: createToken(\"#92400e\", \"amber\", 800),\n 900: createToken(\"#78350f\", \"amber\", 900),\n 950: createToken(\"#451a03\", \"amber\", 950),\n};\n\n/**\n * Yellow - Alternative Warning\n */\nexport const YELLOW: ColorPalette = {\n 50: createToken(\"#fefce8\", \"yellow\", 50),\n 100: createToken(\"#fef9c3\", \"yellow\", 100),\n 200: createToken(\"#fef08a\", \"yellow\", 200),\n 300: createToken(\"#fde047\", \"yellow\", 300),\n 400: createToken(\"#facc15\", \"yellow\", 400),\n 500: createToken(\"#eab308\", \"yellow\", 500),\n 600: createToken(\"#ca8a04\", \"yellow\", 600),\n 700: createToken(\"#a16207\", \"yellow\", 700),\n 800: createToken(\"#854d0e\", \"yellow\", 800),\n 900: createToken(\"#713f12\", \"yellow\", 900),\n 950: createToken(\"#422006\", \"yellow\", 950),\n};\n\n/**\n * Orange - Energetic Accent\n */\nexport const ORANGE: ColorPalette = {\n 50: createToken(\"#fff7ed\", \"orange\", 50),\n 100: createToken(\"#ffedd5\", \"orange\", 100),\n 200: createToken(\"#fed7aa\", \"orange\", 200),\n 300: createToken(\"#fdba74\", \"orange\", 300),\n 400: createToken(\"#fb923c\", \"orange\", 400),\n 500: createToken(\"#f97316\", \"orange\", 500),\n 600: createToken(\"#ea580c\", \"orange\", 600),\n 700: createToken(\"#c2410c\", \"orange\", 700),\n 800: createToken(\"#9a3412\", \"orange\", 800),\n 900: createToken(\"#7c2d12\", \"orange\", 900),\n 950: createToken(\"#431407\", \"orange\", 950),\n};\n\n/**\n * Rose - Error Color\n */\nexport const ROSE: ColorPalette = {\n 50: createToken(\"#fff1f2\", \"rose\", 50),\n 100: createToken(\"#ffe4e6\", \"rose\", 100),\n 200: createToken(\"#fecdd3\", \"rose\", 200),\n 300: createToken(\"#fda4af\", \"rose\", 300),\n 400: createToken(\"#fb7185\", \"rose\", 400),\n 500: createToken(\"#f43f5e\", \"rose\", 500),\n 600: createToken(\"#e11d48\", \"rose\", 600),\n 700: createToken(\"#be123c\", \"rose\", 700),\n 800: createToken(\"#9f1239\", \"rose\", 800),\n 900: createToken(\"#881337\", \"rose\", 900),\n 950: createToken(\"#4c0519\", \"rose\", 950),\n};\n\n/**\n * Red - Alternative Error\n */\nexport const RED: ColorPalette = {\n 50: createToken(\"#fef2f2\", \"red\", 50),\n 100: createToken(\"#fee2e2\", \"red\", 100),\n 200: createToken(\"#fecaca\", \"red\", 200),\n 300: createToken(\"#fca5a5\", \"red\", 300),\n 400: createToken(\"#f87171\", \"red\", 400),\n 500: createToken(\"#ef4444\", \"red\", 500),\n 600: createToken(\"#dc2626\", \"red\", 600),\n 700: createToken(\"#b91c1c\", \"red\", 700),\n 800: createToken(\"#991b1b\", \"red\", 800),\n 900: createToken(\"#7f1d1d\", \"red\", 900),\n 950: createToken(\"#450a0a\", \"red\", 950),\n};\n\n/**\n * Sky - Info Color\n */\nexport const SKY: ColorPalette = {\n 50: createToken(\"#f0f9ff\", \"sky\", 50),\n 100: createToken(\"#e0f2fe\", \"sky\", 100),\n 200: createToken(\"#bae6fd\", \"sky\", 200),\n 300: createToken(\"#7dd3fc\", \"sky\", 300),\n 400: createToken(\"#38bdf8\", \"sky\", 400),\n 500: createToken(\"#0ea5e9\", \"sky\", 500),\n 600: createToken(\"#0284c7\", \"sky\", 600),\n 700: createToken(\"#0369a1\", \"sky\", 700),\n 800: createToken(\"#075985\", \"sky\", 800),\n 900: createToken(\"#0c4a6e\", \"sky\", 900),\n 950: createToken(\"#082f49\", \"sky\", 950),\n};\n\n/**\n * Blue - Alternative Info\n */\nexport const BLUE: ColorPalette = {\n 50: createToken(\"#eff6ff\", \"blue\", 50),\n 100: createToken(\"#dbeafe\", \"blue\", 100),\n 200: createToken(\"#bfdbfe\", \"blue\", 200),\n 300: createToken(\"#93c5fd\", \"blue\", 300),\n 400: createToken(\"#60a5fa\", \"blue\", 400),\n 500: createToken(\"#3b82f6\", \"blue\", 500),\n 600: createToken(\"#2563eb\", \"blue\", 600),\n 700: createToken(\"#1d4ed8\", \"blue\", 700),\n 800: createToken(\"#1e40af\", \"blue\", 800),\n 900: createToken(\"#1e3a8a\", \"blue\", 900),\n 950: createToken(\"#172554\", \"blue\", 950),\n};\n\n/**\n * Fuchsia - Creative Accent\n */\nexport const FUCHSIA: ColorPalette = {\n 50: createToken(\"#fdf4ff\", \"fuchsia\", 50),\n 100: createToken(\"#fae8ff\", \"fuchsia\", 100),\n 200: createToken(\"#f5d0fe\", \"fuchsia\", 200),\n 300: createToken(\"#f0abfc\", \"fuchsia\", 300),\n 400: createToken(\"#e879f9\", \"fuchsia\", 400),\n 500: createToken(\"#d946ef\", \"fuchsia\", 500),\n 600: createToken(\"#c026d3\", \"fuchsia\", 600),\n 700: createToken(\"#a21caf\", \"fuchsia\", 700),\n 800: createToken(\"#86198f\", \"fuchsia\", 800),\n 900: createToken(\"#701a75\", \"fuchsia\", 900),\n 950: createToken(\"#4a044e\", \"fuchsia\", 950),\n};\n\n/**\n * Pink - Soft Accent\n */\nexport const PINK: ColorPalette = {\n 50: createToken(\"#fdf2f8\", \"pink\", 50),\n 100: createToken(\"#fce7f3\", \"pink\", 100),\n 200: createToken(\"#fbcfe8\", \"pink\", 200),\n 300: createToken(\"#f9a8d4\", \"pink\", 300),\n 400: createToken(\"#f472b6\", \"pink\", 400),\n 500: createToken(\"#ec4899\", \"pink\", 500),\n 600: createToken(\"#db2777\", \"pink\", 600),\n 700: createToken(\"#be185d\", \"pink\", 700),\n 800: createToken(\"#9d174d\", \"pink\", 800),\n 900: createToken(\"#831843\", \"pink\", 900),\n 950: createToken(\"#500724\", \"pink\", 950),\n};\n\n/**\n * Purple - Deep Accent\n */\nexport const PURPLE: ColorPalette = {\n 50: createToken(\"#faf5ff\", \"purple\", 50),\n 100: createToken(\"#f3e8ff\", \"purple\", 100),\n 200: createToken(\"#e9d5ff\", \"purple\", 200),\n 300: createToken(\"#d8b4fe\", \"purple\", 300),\n 400: createToken(\"#c084fc\", \"purple\", 400),\n 500: createToken(\"#a855f7\", \"purple\", 500),\n 600: createToken(\"#9333ea\", \"purple\", 600),\n 700: createToken(\"#7e22ce\", \"purple\", 700),\n 800: createToken(\"#6b21a8\", \"purple\", 800),\n 900: createToken(\"#581c87\", \"purple\", 900),\n 950: createToken(\"#3b0764\", \"purple\", 950),\n};\n\n/**\n * Teal - Fresh Accent\n */\nexport const TEAL: ColorPalette = {\n 50: createToken(\"#f0fdfa\", \"teal\", 50),\n 100: createToken(\"#ccfbf1\", \"teal\", 100),\n 200: createToken(\"#99f6e4\", \"teal\", 200),\n 300: createToken(\"#5eead4\", \"teal\", 300),\n 400: createToken(\"#2dd4bf\", \"teal\", 400),\n 500: createToken(\"#14b8a6\", \"teal\", 500),\n 600: createToken(\"#0d9488\", \"teal\", 600),\n 700: createToken(\"#0f766e\", \"teal\", 700),\n 800: createToken(\"#115e59\", \"teal\", 800),\n 900: createToken(\"#134e4a\", \"teal\", 900),\n 950: createToken(\"#042f2e\", \"teal\", 950),\n};\n\n/**\n * Lime - Vibrant Success\n */\nexport const LIME: ColorPalette = {\n 50: createToken(\"#f7fee7\", \"lime\", 50),\n 100: createToken(\"#ecfccb\", \"lime\", 100),\n 200: createToken(\"#d9f99d\", \"lime\", 200),\n 300: createToken(\"#bef264\", \"lime\", 300),\n 400: createToken(\"#a3e635\", \"lime\", 400),\n 500: createToken(\"#84cc16\", \"lime\", 500),\n 600: createToken(\"#65a30d\", \"lime\", 600),\n 700: createToken(\"#4d7c0f\", \"lime\", 700),\n 800: createToken(\"#3f6212\", \"lime\", 800),\n 900: createToken(\"#365314\", \"lime\", 900),\n 950: createToken(\"#1a2e05\", \"lime\", 950),\n};\n\n/**\n * All primitive colors combined\n */\nexport const PRIMITIVE_COLORS: PrimitiveColors = {\n \"brand-primary\": BRAND_PRIMARY,\n \"brand-secondary\": BRAND_SECONDARY,\n indigo: INDIGO,\n violet: VIOLET,\n cyan: CYAN,\n slate: SLATE,\n gray: GRAY,\n emerald: EMERALD,\n green: GREEN,\n amber: AMBER,\n yellow: YELLOW,\n orange: ORANGE,\n rose: ROSE,\n red: RED,\n sky: SKY,\n blue: BLUE,\n fuchsia: FUCHSIA,\n pink: PINK,\n purple: PURPLE,\n teal: TEAL,\n lime: LIME,\n};\n\n/**\n * Get a primitive color by name and scale\n */\nexport function getPrimitiveColor(\n name: PrimitiveColorName,\n scale: ColorScale,\n): ColorToken {\n return PRIMITIVE_COLORS[name][scale];\n}\n\n/**\n * Get all scales for a primitive color\n */\nexport function getPrimitiveColorPalette(\n name: PrimitiveColorName,\n): ColorPalette {\n return PRIMITIVE_COLORS[name];\n}\n","/**\n * Shadow Tokens\n *\n * Centralized shadow system for consistent elevation and depth.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type ShadowSize = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"inner\";\n\nexport interface ShadowToken {\n value: string;\n tailwind: string;\n description: string;\n}\n\n/**\n * Shadow Token Factory\n * Creates shadow tokens with consistent values\n */\nexport class ShadowTokenFactory {\n /**\n * Create a shadow token\n */\n static create(size: ShadowSize): ShadowToken {\n const shadowMap: Record<\n ShadowSize,\n { value: string; tailwind: string; description: string }\n > = {\n none: {\n value: \"none\",\n tailwind: \"shadow-none\",\n description: \"No shadow\",\n },\n sm: {\n value: \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n tailwind: \"shadow-sm\",\n description: \"Small shadow for subtle elevation\",\n },\n md: {\n value: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-md\",\n description: \"Medium shadow for cards and elevated elements\",\n },\n lg: {\n value:\n \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-lg\",\n description: \"Large shadow for modals and dropdowns\",\n },\n xl: {\n value:\n \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-xl\",\n description: \"Extra large shadow for prominent modals\",\n },\n \"2xl\": {\n value:\n \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\",\n tailwind: \"shadow-2xl\",\n description: \"2X large shadow for maximum elevation\",\n },\n inner: {\n value: \"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)\",\n tailwind: \"shadow-inner\",\n description: \"Inner shadow for inset elements\",\n },\n };\n\n return shadowMap[size];\n }\n}\n\n/**\n * Pre-defined shadow tokens\n */\nexport const SHADOW_TOKENS = {\n none: ShadowTokenFactory.create(\"none\"),\n sm: ShadowTokenFactory.create(\"sm\"),\n md: ShadowTokenFactory.create(\"md\"),\n lg: ShadowTokenFactory.create(\"lg\"),\n xl: ShadowTokenFactory.create(\"xl\"),\n \"2xl\": ShadowTokenFactory.create(\"2xl\"),\n inner: ShadowTokenFactory.create(\"inner\"),\n} as const;\n\n/**\n * Helper function to get shadow token\n */\nexport function getShadow(size: keyof typeof SHADOW_TOKENS): ShadowToken {\n return SHADOW_TOKENS[size];\n}\n\n/**\n * Helper function to get shadow as Tailwind class\n */\nexport function getShadowClass(size: keyof typeof SHADOW_TOKENS): string {\n return SHADOW_TOKENS[size].tailwind;\n}\n","/**\n * Border Tokens\n *\n * Centralized border system for consistent borders and dividers.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type BorderWidth = \"none\" | \"thin\" | \"base\" | \"medium\" | \"thick\";\nexport type BorderStyle = \"solid\" | \"dashed\" | \"dotted\";\n\nexport interface BorderToken {\n width: {\n value: number;\n px: string;\n tailwind: string;\n };\n style: BorderStyle;\n description: string;\n}\n\n/**\n * Border Token Factory\n * Creates border tokens with consistent values\n */\nexport class BorderTokenFactory {\n /**\n * Create a border width token\n */\n static createWidth(width: BorderWidth): BorderToken[\"width\"] {\n const widthMap: Record<BorderWidth, { px: number; tailwind: string }> = {\n none: {\n px: 0,\n tailwind: \"border-0\",\n },\n thin: {\n px: 1,\n tailwind: \"border\",\n },\n base: {\n px: 1,\n tailwind: \"border\",\n },\n medium: {\n px: 2,\n tailwind: \"border-2\",\n },\n thick: {\n px: 4,\n tailwind: \"border-4\",\n },\n };\n\n const config = widthMap[width];\n return {\n value: config.px,\n px: `${config.px}px`,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create a complete border token\n */\n static create(width: BorderWidth, style: BorderStyle = \"solid\"): BorderToken {\n return {\n width: this.createWidth(width),\n style,\n description: `${width} ${style} border`,\n };\n }\n}\n\n/**\n * Pre-defined border tokens\n */\nexport const BORDER_TOKENS = {\n none: BorderTokenFactory.create(\"none\"),\n thin: BorderTokenFactory.create(\"thin\"),\n base: BorderTokenFactory.create(\"base\"),\n medium: BorderTokenFactory.create(\"medium\"),\n thick: BorderTokenFactory.create(\"thick\"),\n // Dashed variants\n thinDashed: BorderTokenFactory.create(\"thin\", \"dashed\"),\n baseDashed: BorderTokenFactory.create(\"base\", \"dashed\"),\n // Dotted variants\n thinDotted: BorderTokenFactory.create(\"thin\", \"dotted\"),\n baseDotted: BorderTokenFactory.create(\"base\", \"dotted\"),\n} as const;\n\n/**\n * Helper function to get border token\n */\nexport function getBorder(size: keyof typeof BORDER_TOKENS): BorderToken {\n return BORDER_TOKENS[size];\n}\n\n/**\n * Helper function to get border width as Tailwind class\n */\nexport function getBorderWidthClass(width: BorderWidth): string {\n return BorderTokenFactory.createWidth(width).tailwind;\n}\n\n/**\n * Helper function to get border style as Tailwind class\n */\nexport function getBorderStyleClass(style: BorderStyle): string {\n const styleMap: Record<BorderStyle, string> = {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n dotted: \"border-dotted\",\n };\n return styleMap[style];\n}\n\n/**\n * Helper function to get complete border classes\n */\nexport function getBorderClasses(\n width: BorderWidth,\n style: BorderStyle = \"solid\",\n): string {\n return `${getBorderWidthClass(width)} ${getBorderStyleClass(style)}`;\n}\n","/**\n * Breakpoint Tokens\n *\n * Responsive breakpoints for consistent media queries.\n * Uses Factory Pattern for type-safe breakpoint creation.\n */\n\nexport type BreakpointName = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nexport interface BreakpointToken {\n name: BreakpointName;\n minWidth: number;\n px: string;\n rem: string;\n tailwind: string;\n}\n\n/**\n * Breakpoint Token Factory\n * Creates breakpoint tokens with consistent values\n */\nexport class BreakpointTokenFactory {\n /**\n * Create breakpoint token\n */\n static create(name: BreakpointName): BreakpointToken {\n const breakpointMap: Record<\n BreakpointName,\n { minWidth: number; tailwind: string }\n > = {\n sm: { minWidth: 640, tailwind: \"sm\" },\n md: { minWidth: 768, tailwind: \"md\" },\n lg: { minWidth: 1024, tailwind: \"lg\" },\n xl: { minWidth: 1280, tailwind: \"xl\" },\n \"2xl\": { minWidth: 1536, tailwind: \"2xl\" },\n };\n\n const config = breakpointMap[name];\n return {\n name,\n minWidth: config.minWidth,\n px: `${config.minWidth}px`,\n rem: `${config.minWidth / 16}rem`,\n tailwind: config.tailwind,\n };\n }\n}\n\n/**\n * Pre-defined breakpoint tokens\n */\nexport const BREAKPOINT_TOKENS: Record<BreakpointName, BreakpointToken> = {\n sm: BreakpointTokenFactory.create(\"sm\"),\n md: BreakpointTokenFactory.create(\"md\"),\n lg: BreakpointTokenFactory.create(\"lg\"),\n xl: BreakpointTokenFactory.create(\"xl\"),\n \"2xl\": BreakpointTokenFactory.create(\"2xl\"),\n} as const;\n\n/**\n * Helper function to get breakpoint token\n */\nexport function getBreakpoint(name: BreakpointName): BreakpointToken {\n return BREAKPOINT_TOKENS[name];\n}\n\n/**\n * Helper function to create media query string\n */\nexport function getMediaQuery(\n name: BreakpointName,\n direction: \"min\" | \"max\" = \"min\",\n): string {\n const breakpoint = BREAKPOINT_TOKENS[name];\n const operator = direction === \"min\" ? \"min-width\" : \"max-width\";\n return `@media (${operator}: ${breakpoint.px})`;\n}\n","/**\n * Animation Tokens\n *\n * Centralized animation and transition system for consistent timing and easing.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type AnimationDuration = \"fast\" | \"base\" | \"slow\" | \"slower\";\nexport type EasingFunction = \"ease-in\" | \"ease-out\" | \"ease-in-out\" | \"spring\";\n\nexport interface AnimationToken {\n duration: {\n value: string;\n ms: number;\n tailwind: string;\n };\n easing: {\n value: string;\n tailwind: string;\n description: string;\n };\n}\n\nexport interface TransitionToken {\n property: string;\n duration: string;\n timingFunction: string;\n tailwind: string;\n}\n\n/**\n * Animation Token Factory\n * Creates animation tokens with consistent timing and easing\n */\nexport class AnimationTokenFactory {\n /**\n * Create an animation token\n */\n static create(\n duration: AnimationDuration,\n easing: EasingFunction = \"ease-in-out\",\n ): AnimationToken {\n const durationMap: Record<\n AnimationDuration,\n { value: string; ms: number; tailwind: string }\n > = {\n fast: {\n value: \"150ms\",\n ms: 150,\n tailwind: \"duration-150\",\n },\n base: {\n value: \"200ms\",\n ms: 200,\n tailwind: \"duration-200\",\n },\n slow: {\n value: \"300ms\",\n ms: 300,\n tailwind: \"duration-300\",\n },\n slower: {\n value: \"500ms\",\n ms: 500,\n tailwind: \"duration-500\",\n },\n };\n\n const easingMap: Record<\n EasingFunction,\n { value: string; tailwind: string; description: string }\n > = {\n \"ease-in\": {\n value: \"cubic-bezier(0.4, 0, 1, 1)\",\n tailwind: \"ease-in\",\n description: \"Slow start, fast end\",\n },\n \"ease-out\": {\n value: \"cubic-bezier(0, 0, 0.2, 1)\",\n tailwind: \"ease-out\",\n description: \"Fast start, slow end\",\n },\n \"ease-in-out\": {\n value: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n tailwind: \"ease-in-out\",\n description: \"Slow start and end, fast middle\",\n },\n spring: {\n value: \"cubic-bezier(0.68, -0.55, 0.265, 1.55)\",\n tailwind: \"ease-[cubic-bezier(0.68,-0.55,0.265,1.55)]\",\n description: \"Spring-like bounce effect\",\n },\n };\n\n return {\n duration: durationMap[duration],\n easing: easingMap[easing],\n };\n }\n\n /**\n * Create a transition token\n */\n static createTransition(\n property: string | string[],\n duration: AnimationDuration = \"base\",\n easing: EasingFunction = \"ease-in-out\",\n ): TransitionToken {\n const durationToken = this.create(duration, easing);\n const properties = Array.isArray(property) ? property.join(\", \") : property;\n const tailwindClasses = [\n durationToken.duration.tailwind,\n durationToken.easing.tailwind,\n ].join(\" \");\n\n return {\n property: properties,\n duration: durationToken.duration.value,\n timingFunction: durationToken.easing.value,\n tailwind: tailwindClasses,\n };\n }\n}\n\n/**\n * Pre-defined animation tokens\n */\nexport const ANIMATION_TOKENS = {\n fast: AnimationTokenFactory.create(\"fast\"),\n base: AnimationTokenFactory.create(\"base\"),\n slow: AnimationTokenFactory.create(\"slow\"),\n slower: AnimationTokenFactory.create(\"slower\"),\n\n // Common transitions\n colors: AnimationTokenFactory.createTransition(\n [\"color\", \"background-color\", \"border-color\"],\n \"base\",\n ),\n opacity: AnimationTokenFactory.createTransition(\"opacity\", \"fast\"),\n transform: AnimationTokenFactory.createTransition(\"transform\", \"base\"),\n all: AnimationTokenFactory.createTransition(\"all\", \"base\"),\n} as const;\n\n/**\n * Helper function to get animation token\n */\nexport function getAnimation(\n duration: AnimationDuration,\n easing?: EasingFunction,\n): AnimationToken {\n return AnimationTokenFactory.create(duration, easing);\n}\n\n/**\n * Helper function to get animation classes\n */\nexport function getAnimationClass(\n duration: AnimationDuration,\n easing: EasingFunction = \"ease-in-out\",\n): string {\n const token = AnimationTokenFactory.create(duration, easing);\n return `${token.duration.tailwind} ${token.easing.tailwind}`;\n}\n\n/**\n * Helper function to get transition classes\n */\nexport function getTransitionClass(\n property: string | string[],\n duration: AnimationDuration = \"base\",\n easing: EasingFunction = \"ease-in-out\",\n): string {\n const transition = AnimationTokenFactory.createTransition(\n property,\n duration,\n easing,\n );\n return transition.tailwind;\n}\n","/**\n * Z-Index Tokens\n *\n * Centralized z-index system for consistent layering.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type ZIndexLayer =\n | \"base\"\n | \"dropdown\"\n | \"sticky\"\n | \"fixed\"\n | \"modal-backdrop\"\n | \"modal\"\n | \"popover\"\n | \"tooltip\"\n | \"toast\";\n\nexport interface ZIndexToken {\n value: number;\n tailwind: string;\n description: string;\n}\n\n/**\n * Z-Index Token Factory\n * Creates z-index tokens with consistent layering\n */\nexport class ZIndexTokenFactory {\n /**\n * Create a z-index token\n */\n static create(layer: ZIndexLayer): ZIndexToken {\n const layerMap: Record<\n ZIndexLayer,\n { value: number; tailwind: string; description: string }\n > = {\n base: {\n value: 0,\n tailwind: \"z-0\",\n description: \"Base layer for normal content\",\n },\n dropdown: {\n value: 1000,\n tailwind: \"z-[1000]\",\n description: \"Dropdown menus and select options\",\n },\n sticky: {\n value: 1020,\n tailwind: \"z-[1020]\",\n description: \"Sticky headers and navigation\",\n },\n fixed: {\n value: 1030,\n tailwind: \"z-[1030]\",\n description: \"Fixed position elements\",\n },\n \"modal-backdrop\": {\n value: 1040,\n tailwind: \"z-[1040]\",\n description: \"Modal backdrop/overlay\",\n },\n modal: {\n value: 1050,\n tailwind: \"z-[1050]\",\n description: \"Modal dialogs and drawers\",\n },\n popover: {\n value: 1060,\n tailwind: \"z-[1060]\",\n description: \"Popovers and tooltips\",\n },\n tooltip: {\n value: 1070,\n tailwind: \"z-[1070]\",\n description: \"Tooltips (highest priority)\",\n },\n toast: {\n value: 1080,\n tailwind: \"z-[1080]\",\n description: \"Toast notifications (highest priority)\",\n },\n };\n\n return layerMap[layer];\n }\n}\n\n/**\n * Pre-defined z-index tokens\n */\nexport const Z_INDEX_TOKENS = {\n base: ZIndexTokenFactory.create(\"base\"),\n dropdown: ZIndexTokenFactory.create(\"dropdown\"),\n sticky: ZIndexTokenFactory.create(\"sticky\"),\n fixed: ZIndexTokenFactory.create(\"fixed\"),\n \"modal-backdrop\": ZIndexTokenFactory.create(\"modal-backdrop\"),\n modal: ZIndexTokenFactory.create(\"modal\"),\n popover: ZIndexTokenFactory.create(\"popover\"),\n tooltip: ZIndexTokenFactory.create(\"tooltip\"),\n toast: ZIndexTokenFactory.create(\"toast\"),\n} as const;\n\n/**\n * Helper function to get z-index token\n */\nexport function getZIndex(layer: ZIndexLayer): ZIndexToken {\n return ZIndexTokenFactory.create(layer);\n}\n\n/**\n * Helper function to get z-index as Tailwind class\n */\nexport function getZIndexClass(layer: ZIndexLayer): string {\n return ZIndexTokenFactory.create(layer).tailwind;\n}\n","/**\n * Opacity Tokens\n *\n * Centralized opacity system for consistent transparency values.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type OpacityValue =\n | 0\n | 5\n | 10\n | 20\n | 25\n | 30\n | 40\n | 50\n | 60\n | 70\n | 75\n | 80\n | 90\n | 95\n | 100;\n\nexport interface OpacityToken {\n value: OpacityValue;\n decimal: number;\n tailwind: string;\n description: string;\n}\n\n/**\n * Opacity Token Factory\n * Creates opacity tokens with consistent values\n */\nexport class OpacityTokenFactory {\n /**\n * Create an opacity token\n */\n static create(value: OpacityValue): OpacityToken {\n const decimal = value / 100;\n\n const descriptionMap: Record<OpacityValue, string> = {\n 0: \"Fully transparent\",\n 5: \"Very light overlay\",\n 10: \"Light overlay\",\n 20: \"Subtle overlay\",\n 25: \"Quarter opacity\",\n 30: \"Light background\",\n 40: \"Semi-transparent\",\n 50: \"Half opacity\",\n 60: \"Semi-opaque\",\n 70: \"Mostly opaque\",\n 75: \"Three-quarter opacity\",\n 80: \"High opacity\",\n 90: \"Very high opacity\",\n 95: \"Nearly opaque\",\n 100: \"Fully opaque\",\n };\n\n // Map to Tailwind classes\n const tailwindMap: Record<OpacityValue, string> = {\n 0: \"opacity-0\",\n 5: \"opacity-5\",\n 10: \"opacity-10\",\n 20: \"opacity-20\",\n 25: \"opacity-25\",\n 30: \"opacity-30\",\n 40: \"opacity-40\",\n 50: \"opacity-50\",\n 60: \"opacity-60\",\n 70: \"opacity-70\",\n 75: \"opacity-75\",\n 80: \"opacity-80\",\n 90: \"opacity-90\",\n 95: \"opacity-95\",\n 100: \"opacity-100\",\n };\n\n return {\n value,\n decimal,\n tailwind: tailwindMap[value],\n description: descriptionMap[value],\n };\n }\n}\n\n/**\n * Pre-defined opacity tokens\n */\nexport const OPACITY_TOKENS = {\n transparent: OpacityTokenFactory.create(0),\n \"5\": OpacityTokenFactory.create(5),\n \"10\": OpacityTokenFactory.create(10),\n \"20\": OpacityTokenFactory.create(20),\n \"25\": OpacityTokenFactory.create(25),\n \"30\": OpacityTokenFactory.create(30),\n \"40\": OpacityTokenFactory.create(40),\n \"50\": OpacityTokenFactory.create(50),\n \"60\": OpacityTokenFactory.create(60),\n \"70\": OpacityTokenFactory.create(70),\n \"75\": OpacityTokenFactory.create(75),\n \"80\": OpacityTokenFactory.create(80),\n \"90\": OpacityTokenFactory.create(90),\n \"95\": OpacityTokenFactory.create(95),\n opaque: OpacityTokenFactory.create(100),\n} as const;\n\n/**\n * Helper function to get opacity token\n */\nexport function getOpacity(value: OpacityValue): OpacityToken {\n return OpacityTokenFactory.create(value);\n}\n\n/**\n * Helper function to get opacity as Tailwind class\n */\nexport function getOpacityClass(value: OpacityValue): string {\n return OpacityTokenFactory.create(value).tailwind;\n}\n","\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef } from \"react\";\nimport { getRadiusClass } from \"../../tokens\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport {\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\nimport \"./Progress.css\";\n\nexport type ProgressVariant =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\";\nexport type ProgressSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ProgressProps extends HTMLAttributes<HTMLDivElement> {\n value?: number; // 0-100, undefined for indeterminate\n max?: number; // Default 100\n variant?: ProgressVariant;\n size?: ProgressSize;\n showLabel?: boolean;\n label?: string;\n \"aria-label\"?: string;\n}\n\n/**\n * Progress Component\n *\n * A progress bar component for displaying progress or loading states.\n * Supports both determinate (with value) and indeterminate (without value) modes.\n * Fully accessible with ARIA attributes.\n *\n * @example\n * ```tsx\n * // Determinate progress\n * <Progress value={75} variant=\"primary\" />\n *\n * // Indeterminate progress\n * <Progress variant=\"primary\" />\n *\n * // With label\n * <Progress value={50} showLabel label=\"Uploading...\" />\n * ```\n */\n// Progress variants using CVA\nconst progressTrackVariants = cva(\"w-full\", {\n variants: {\n size: {\n sm: \"h-1\",\n md: \"h-2\",\n lg: \"h-3\",\n },\n variant: {\n primary: \"bg-surface-muted\",\n secondary: \"bg-surface-muted\",\n success: \"bg-success-bg-emphasis\",\n error: \"bg-error-bg-emphasis\",\n warning: \"bg-warning-bg-emphasis\",\n info: \"bg-info-bg-emphasis\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"primary\",\n },\n});\n\nconst progressBarVariants = cva(\"transition-all\", {\n variants: {\n variant: {\n primary: \"bg-surface-brand\",\n secondary: \"bg-surface-secondary\",\n success: \"bg-success\",\n error: \"bg-error\",\n warning: \"bg-warning\",\n info: \"bg-info\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n});\n\nconst Progress = forwardRef<HTMLDivElement, ProgressProps>(function Progress(\n {\n value,\n max = 100,\n variant = \"primary\",\n size = \"md\",\n showLabel = false,\n label,\n \"aria-label\": ariaLabel,\n className = \"\",\n ...props\n },\n ref,\n) {\n const isIndeterminate = value === undefined;\n const percentage = isIndeterminate\n ? undefined\n : Math.min(Math.max((value / max) * 100, 0), 100);\n\n const defaultAriaLabel =\n ariaLabel ||\n (isIndeterminate\n ? \"Loading in progress\"\n : `Progress: ${percentage?.toFixed(0)}%`);\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n {showLabel && (label || !isIndeterminate) && (\n <div\n className={cn(\n \"flex\",\n \"items-center\",\n \"justify-between\",\n getSpacingClass(\"xs\", \"mb\"),\n )}\n >\n {label && (\n <span\n className={cn(\n getTypographySize(\"bodySmall\"),\n getTypographyWeight(\"label\"),\n \"text-fg-primary\",\n )}\n >\n {label}\n </span>\n )}\n {!isIndeterminate && percentage !== undefined && (\n <span\n className={cn(\n getTypographySize(\"bodySmall\"),\n \"text-fg-secondary\",\n )}\n >\n {percentage.toFixed(0)}%\n </span>\n )}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-valuemin={isIndeterminate ? undefined : 0}\n aria-valuemax={isIndeterminate ? undefined : max}\n aria-valuenow={isIndeterminate ? undefined : value}\n aria-label={defaultAriaLabel}\n aria-busy={isIndeterminate}\n className={cn(\n \"relative\",\n \"w-full\",\n \"overflow-hidden\",\n progressTrackVariants({ size, variant }),\n getRadiusClass(\"full\"),\n )}\n >\n {isIndeterminate ? (\n <div\n className={cn(\n \"absolute\",\n \"top-0\",\n \"left-0\",\n \"bottom-0\",\n progressBarVariants({ variant }),\n getRadiusClass(\"full\"),\n \"motion-reduce:animate-none\",\n )}\n style={{\n width: \"30%\",\n animation: \"progress-indeterminate 1.5s ease-in-out infinite\",\n }}\n />\n ) : (\n <div\n className={cn(\n \"h-full\",\n progressBarVariants({ variant }),\n getRadiusClass(\"full\"),\n \"transition-all\",\n \"duration-300\",\n \"ease-out\",\n )}\n style={{\n width: `${percentage}%`,\n }}\n aria-hidden=\"true\"\n />\n )}\n </div>\n </div>\n );\n});\n\nProgress.displayName = \"Progress\";\n\nexport default Progress;\n","import { memo } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils\";\n\nexport type SeparatorOrientation = \"horizontal\" | \"vertical\";\nexport type SeparatorVariant = \"solid\" | \"dashed\" | \"dotted\";\n\nexport interface SeparatorProps extends HTMLAttributes<HTMLHRElement> {\n orientation?: SeparatorOrientation;\n variant?: SeparatorVariant;\n}\n\n/**\n * Separator Component\n *\n * A visual separator component for dividing content.\n * Follows Atomic Design principles as an Atom component.\n * Optimized with React.memo to prevent unnecessary re-renders.\n *\n * @example\n * ```tsx\n * <Separator />\n *\n * <Separator orientation=\"vertical\" variant=\"dashed\" />\n * ```\n */\nconst separatorOrientationClasses = {\n horizontal: \"w-full border-t\",\n vertical: \"h-full border-l self-stretch\",\n} as const;\n\nconst separatorVariantClasses = {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n dotted: \"border-dotted\",\n} as const;\n\nconst Separator = memo(function Separator({\n orientation = \"horizontal\",\n variant = \"solid\",\n className = \"\",\n ...props\n}: SeparatorProps) {\n const classes = cn(\n \"border-0\",\n \"border-line-default\",\n separatorOrientationClasses[orientation],\n separatorVariantClasses[variant],\n className,\n );\n\n if (orientation === \"vertical\") {\n return (\n <div\n className={classes}\n role=\"separator\"\n aria-orientation=\"vertical\"\n {...(props as HTMLAttributes<HTMLDivElement>)}\n />\n );\n }\n\n return (\n <hr\n className={classes}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n {...props}\n />\n );\n});\n\nSeparator.displayName = \"Separator\";\n\nexport default Separator;\n","import type { HTMLAttributes } from \"react\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { cn } from \"../../utils\";\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n variant?: \"text\" | \"card\" | \"list\" | \"circle\";\n width?: string;\n height?: string;\n lines?: number;\n}\n\n/**\n * Skeleton Component\n *\n * A skeleton loader component for displaying loading states.\n * Follows Atomic Design principles as an Atom component.\n *\n * @example\n * ```tsx\n * <Skeleton variant=\"card\" />\n * <Skeleton variant=\"text\" lines={3} />\n * ```\n */\nexport default function Skeleton({\n variant = \"text\",\n width,\n height,\n lines = 1,\n className = \"\",\n \"aria-label\": ariaLabel,\n ...props\n}: SkeletonProps) {\n const baseClasses = [\n \"motion-safe:animate-pulse\",\n \"bg-surface-muted\",\n getRadiusClass(\"sm\"),\n ];\n\n const variantClasses: Record<\n NonNullable<SkeletonProps[\"variant\"]>,\n string\n > = {\n text: \"h-4\",\n card: \"h-32\",\n list: \"h-12\",\n circle: getRadiusClass(\"full\"),\n };\n\n const classes = cn(...baseClasses, variantClasses[variant], className);\n\n const style: React.CSSProperties = {};\n if (width) style.width = width;\n if (height) style.height = height;\n\n const defaultAriaLabel = ariaLabel || `Loading ${variant} content`;\n\n if (variant === \"text\" && lines > 1) {\n return (\n <div\n className={getSpacingClass(\"sm\", \"space-y\")}\n role=\"status\"\n aria-busy=\"true\"\n aria-label={defaultAriaLabel}\n {...props}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n className={classes}\n style={index === lines - 1 ? { width: \"75%\" } : style}\n aria-hidden=\"true\"\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n className={classes}\n style={style}\n role=\"status\"\n aria-busy=\"true\"\n aria-label={defaultAriaLabel}\n {...props}\n />\n );\n}\n","\"use client\";\n\nimport { memo } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { Loader2 } from \"lucide-react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getTypographySize } from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\n\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\nexport type SpinnerVariant = \"primary\" | \"secondary\" | \"neutral\";\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {\n size?: SpinnerSize;\n variant?: SpinnerVariant;\n label?: string;\n}\n\n/**\n * Spinner Component\n *\n * A loading spinner component for indicating loading states.\n * Follows Atomic Design principles as an Atom component.\n * Uses Strategy Pattern for different size/variant combinations.\n *\n * @example\n * ```tsx\n * <Spinner size=\"md\" variant=\"primary\" label=\"Loading...\" />\n * ```\n */\n// Spinner variants using CVA\nconst spinnerVariants = cva(\"motion-safe:animate-spin\", {\n variants: {\n size: {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-8 w-8\",\n },\n variant: {\n primary: \"text-fg-brand\",\n secondary: \"text-fg-brand-secondary\",\n neutral: \"text-fg-secondary\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"primary\",\n },\n});\n\nconst Spinner = memo(function Spinner({\n size = \"md\",\n variant = \"primary\",\n label,\n className = \"\",\n ...props\n}: SpinnerProps) {\n return (\n <div\n className={cn(\"inline-flex\", \"items-center\", className)}\n role=\"status\"\n aria-label={label || \"Loading\"}\n aria-live=\"polite\"\n {...props}\n >\n <Loader2\n className={cn(spinnerVariants({ size, variant }))}\n aria-hidden=\"true\"\n />\n {label && (\n <span\n className={cn(\n getSpacingClass(\"sm\", \"ml\"),\n getTypographySize(\"bodySmall\"),\n \"text-fg-secondary\",\n \"sr-only\",\n )}\n >\n {label}\n </span>\n )}\n </div>\n );\n});\n\nSpinner.displayName = \"Spinner\";\n\nexport default Spinner;\n","import type {\n ComponentPropsWithoutRef,\n ElementType,\n HTMLAttributes,\n JSX,\n} from \"react\";\nimport { forwardRef } from \"react\";\nimport { getTypographyClasses } from \"../../tokens/typography\";\nimport { cn } from \"../../utils\";\n\ntype TextColorRole =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\"\n | \"neutral\";\ntype TextColorShade = \"light\" | \"DEFAULT\" | \"dark\" | \"contrast\";\n\n// Lookup table: literal Tailwind classes so v4 can detect them at build.\n// Brand/feedback DEFAULT cells use semantic tokens; light/dark cells stay\n// primitive (no semantic equivalent for shade variants). Neutral cells\n// use the Phase 7 semantic suggestions (text-fg-{primary,secondary,...}).\nconst TEXT_COLOR_CLASSES: Record<\n TextColorRole,\n Record<TextColorShade, string>\n> = {\n primary: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-indigo-400\",\n DEFAULT: \"text-fg-brand\",\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n dark: \"text-indigo-600\",\n contrast: \"text-fg-inverse\",\n },\n secondary: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-pink-300\",\n DEFAULT: \"text-fg-brand-secondary\",\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n dark: \"text-pink-600\",\n contrast: \"text-fg-inverse\",\n },\n success: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-green-300\",\n DEFAULT: \"text-fg-success\",\n dark: \"text-success-dark\",\n contrast: \"text-fg-inverse\",\n },\n warning: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-yellow-300\",\n DEFAULT: \"text-fg-warning\",\n dark: \"text-warning-dark\",\n contrast: \"text-fg-inverse\",\n },\n error: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-red-300\",\n DEFAULT: \"text-fg-error\",\n dark: \"text-error-dark\",\n contrast: \"text-fg-inverse\",\n },\n info: {\n // exception: variant color — no semantic equivalent (Principle 3, .claude/rules/colors.md)\n light: \"text-blue-300\",\n DEFAULT: \"text-fg-info\",\n dark: \"text-info-dark\",\n contrast: \"text-fg-inverse\",\n },\n neutral: {\n light: \"text-fg-tertiary\",\n DEFAULT: \"text-fg-secondary\",\n dark: \"text-fg-primary\",\n contrast: \"text-fg-inverse\",\n },\n};\n\nexport interface TextProps<\n T extends ElementType,\n> extends HTMLAttributes<JSX.IntrinsicElements> {\n variant?:\n | \"heading\"\n | \"list\"\n | \"paragraph\"\n | \"body\"\n | \"bodySmall\"\n | \"bodyLarge\"\n | \"caption\"\n | \"label\";\n as?: T;\n bold?: boolean;\n italic?: boolean;\n colorRole?: TextColorRole;\n colorShade?: TextColorShade;\n}\n\ntype ReturnProps<P extends ElementType> = TextProps<P> &\n Omit<ComponentPropsWithoutRef<P>, keyof TextProps<P>>;\n\nfunction TextComponent<T extends ElementType = \"p\">(\n {\n variant = \"paragraph\",\n bold,\n italic,\n className,\n as,\n colorRole = \"neutral\",\n colorShade = \"dark\",\n ...rest\n }: ReturnProps<T>,\n ref: React.Ref<unknown>,\n) {\n const classNames: string[] = [];\n let Tag: ElementType;\n\n if (as) {\n Tag = as;\n } else {\n switch (variant) {\n case \"heading\":\n Tag = \"h2\";\n break;\n case \"list\":\n Tag = \"li\";\n break;\n case \"paragraph\":\n default:\n Tag = \"p\";\n break;\n }\n }\n\n // Apply typography tokens based on variant\n if (variant === \"heading\") {\n classNames.push(getTypographyClasses(\"h2\"));\n } else if (variant === \"body\" || variant === \"paragraph\") {\n classNames.push(getTypographyClasses(\"body\"));\n } else if (variant === \"bodySmall\") {\n classNames.push(getTypographyClasses(\"bodySmall\"));\n } else if (variant === \"bodyLarge\") {\n classNames.push(getTypographyClasses(\"bodyLarge\"));\n } else if (variant === \"caption\") {\n classNames.push(getTypographyClasses(\"caption\"));\n } else if (variant === \"label\") {\n classNames.push(getTypographyClasses(\"label\"));\n } else {\n // Default to body for list and other variants\n classNames.push(getTypographyClasses(\"body\"));\n }\n\n // Override font weight if bold is specified\n if (bold) {\n classNames.push(\"font-bold\");\n }\n\n if (italic) {\n classNames.push(\"italic\");\n }\n\n // Apply color via lookup table. Tailwind v4 needs literal class names\n // at build time, so role/shade resolve to a fixed entry in\n // TEXT_COLOR_CLASSES rather than constructing `text-${...}` dynamically.\n classNames.push(TEXT_COLOR_CLASSES[colorRole][colorShade]);\n\n return <Tag ref={ref} className={cn(...classNames, className)} {...rest} />;\n}\n\n// Use forwardRef with proper typing for polymorphic component\nconst Text = forwardRef(TextComponent) as <T extends ElementType = \"p\">(\n props: ReturnProps<T> & { ref?: React.Ref<HTMLElement> },\n) => JSX.Element;\n\nexport default Text;\n","import React from \"react\";\nimport { cn } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Maximum width of the container\n * @default 'lg'\n */\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n /**\n * Horizontal padding\n * @default 'base'\n */\n paddingX?: \"xs\" | \"sm\" | \"md\" | \"base\" | \"lg\" | \"xl\";\n /**\n * Vertical padding\n * @default 'base'\n */\n paddingY?: \"xs\" | \"sm\" | \"md\" | \"base\" | \"lg\" | \"xl\";\n /**\n * Center the container content\n * @default true\n */\n center?: boolean;\n}\n\nconst maxWidthClasses = {\n sm: \"max-w-screen-sm\",\n md: \"max-w-screen-md\",\n lg: \"max-w-screen-lg\",\n xl: \"max-w-screen-xl\",\n \"2xl\": \"max-w-screen-2xl\",\n full: \"max-w-full\",\n};\n\n/**\n * Container component for constraining content width and providing consistent padding\n *\n * @example\n * ```tsx\n * <Container maxWidth=\"lg\" paddingX=\"base\">\n * <h1>Content</h1>\n * </Container>\n * ```\n */\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n (\n {\n className,\n maxWidth = \"lg\",\n paddingX = \"base\",\n paddingY = \"base\",\n center = true,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full\",\n maxWidthClasses[maxWidth],\n getSpacingClass(paddingX, \"px\"),\n getSpacingClass(paddingY, \"py\"),\n center && \"mx-auto\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nContainer.displayName = \"Container\";\n","import React from \"react\";\nimport { cn } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Spacing between children\n * @default 'base'\n */\n spacing?: \"xs\" | \"sm\" | \"md\" | \"base\" | \"lg\" | \"xl\" | \"2xl\";\n /**\n * Alignment of children\n * @default 'stretch'\n */\n align?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /**\n * Justification of children\n * @default 'start'\n */\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\n /**\n * Direction of stack\n * @default 'column'\n */\n direction?: \"row\" | \"column\";\n}\n\n/**\n * Stack component for vertical or horizontal layout with consistent spacing\n *\n * @example\n * ```tsx\n * <Stack spacing=\"md\" align=\"center\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * </Stack>\n * ```\n */\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(\n (\n {\n className,\n spacing = \"base\",\n align = \"stretch\",\n justify = \"start\",\n direction = \"column\",\n children,\n ...props\n },\n ref,\n ) => {\n const spacingClass =\n direction === \"column\"\n ? getSpacingClass(spacing, \"gap-y\")\n : getSpacingClass(spacing, \"gap-x\");\n\n const alignClasses = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n };\n\n const justifyClasses = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex\",\n direction === \"column\" ? \"flex-col\" : \"flex-row\",\n spacingClass,\n alignClasses[align],\n justifyClasses[justify],\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nStack.displayName = \"Stack\";\n","\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils\";\nimport {\n getSpacingClass,\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens\";\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n}\n\ninterface Props extends HTMLAttributes<HTMLElement> {\n items: BreadcrumbItem[];\n separator?: string;\n}\n\n/**\n * Breadcrumb Component\n *\n * A breadcrumb navigation component for hierarchical navigation.\n * Follows Atomic Design principles as a Molecule component.\n *\n * @example\n * ```tsx\n * <Breadcrumb\n * items={[\n * { label: \"Home\", href: \"/\" },\n * { label: \"Epics\", href: \"/epics\" },\n * { label: \"Epic Details\" }\n * ]}\n * />\n * ```\n */\nexport default function Breadcrumb({\n items,\n separator = \"/\",\n className = \"\",\n ...props\n}: Props) {\n const baseClasses = [\n \"flex\",\n \"items-center\",\n getSpacingClass(\"sm\", \"space-x\"),\n getTypographySize(\"bodySmall\"),\n ];\n\n const classes = cn(...baseClasses, className);\n\n return (\n <nav aria-label=\"Breadcrumb\" className={classes} {...props}>\n <ol\n className={cn(\"flex\", \"items-center\", getSpacingClass(\"sm\", \"space-x\"))}\n >\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n\n return (\n <li key={index} className=\"flex items-center\">\n {index > 0 && (\n <span\n className={cn(\n getSpacingClass(\"sm\", \"mx\"),\n \"text-fg-tertiary\",\n )}\n aria-hidden=\"true\"\n >\n {separator}\n </span>\n )}\n {isLast ? (\n <span\n className={cn(\n \"text-fg-primary\",\n getTypographyWeight(\"label\"),\n )}\n aria-current=\"page\"\n >\n {item.label}\n </span>\n ) : item.href ? (\n <a\n href={item.href}\n className={cn(\n \"inline-flex\",\n \"items-center\",\n getSpacingClass(\"xs\", \"px\"),\n getSpacingClass(\"xs\", \"pt\"),\n \"border-b-2\",\n \"border-transparent\",\n getTypographySize(\"bodySmall\"),\n getTypographyWeight(\"label\"),\n \"transition-colors\",\n \"text-fg-secondary\",\n \"hover:border-line-emphasis\",\n \"hover:text-fg-primary\",\n )}\n >\n {item.label}\n </a>\n ) : (\n <span className=\"text-fg-secondary\">{item.label}</span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport function CardHeader({ children, className, ...props }: CardHeaderProps) {\n return (\n <div\n className={cn(\n \"grid items-start\",\n getSpacingClass(\"1.5\", \"gap\"),\n getSpacingClass(\"base\", \"mb\"),\n \"[&:has([data-card-actions])]:grid-cols-[1fr_auto]\",\n \"[&:has([data-card-actions])>[data-card-actions]]:row-span-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport default CardHeader;\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport type CardTitleAs = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\nexport interface CardTitleProps extends HTMLAttributes<HTMLHeadingElement> {\n children: ReactNode;\n /**\n * Optional icon rendered before the title text.\n */\n icon?: ReactNode;\n /**\n * Optional badge rendered after the title text.\n */\n badge?: ReactNode;\n /**\n * Heading level. Default `h2` — the typical depth for a card title\n * inside a page that already has an `h1`. Use `h3` (or deeper) when\n * the card sits inside a nested section.\n * @default 'h2'\n */\n as?: CardTitleAs;\n}\n\nexport function CardTitle({\n children,\n icon,\n badge,\n as: As = \"h2\",\n className,\n ...props\n}: CardTitleProps) {\n return (\n <As\n className={cn(\n \"text-base font-semibold text-fg-primary\",\n \"flex items-center\",\n getSpacingClass(\"sm\", \"gap\"),\n className,\n )}\n {...props}\n >\n {icon ? <span className=\"shrink-0 inline-flex\">{icon}</span> : null}\n <span>{children}</span>\n {badge ? <span className=\"inline-flex\">{badge}</span> : null}\n </As>\n );\n}\n\nexport default CardTitle;\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\n\nexport interface CardSubtitleProps extends HTMLAttributes<HTMLParagraphElement> {\n children: ReactNode;\n}\n\nexport function CardSubtitle({\n children,\n className,\n ...props\n}: CardSubtitleProps) {\n return (\n <p className={cn(\"text-sm text-fg-secondary\", className)} {...props}>\n {children}\n </p>\n );\n}\n\nexport default CardSubtitle;\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface CardActionsProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\n/**\n * CardActions — wrapper that hosts consumer-supplied action buttons\n * within a `Card.Header`.\n *\n * The `data-card-actions` attribute is the structural marker `CardHeader`\n * uses (via Tailwind v4 `:has()` selectors) to switch its grid layout\n * from a single column to `[1fr auto]` when actions are present, so\n * Title/Subtitle stack in column 1 and the action row spans both rows\n * in column 2. Consumers should not override this attribute.\n *\n * This component is presentational: it emits no handlers on the DOM\n * itself. The action elements (typically `<Button>`) are consumer-supplied\n * and React's RSC boundary keeps them as client references — the\n * wrapper stays server-safe.\n */\nexport function CardActions({\n children,\n className,\n ...props\n}: CardActionsProps) {\n return (\n <div\n data-card-actions=\"\"\n className={cn(\n \"flex items-center self-start\",\n getSpacingClass(\"sm\", \"gap\"),\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport default CardActions;\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\n\nexport interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport function CardBody({ children, className, ...props }: CardBodyProps) {\n return (\n <div className={cn(className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport default CardBody;\n","import { memo, type FC, type HTMLAttributes } from \"react\";\nimport { cn, cva } from \"../../utils\";\nimport { getRadiusClass, getShadowClass, getSpacingClass } from \"../../tokens\";\nimport { CardHeader } from \"./CardHeader\";\nimport { CardTitle } from \"./CardTitle\";\nimport { CardSubtitle } from \"./CardSubtitle\";\nimport { CardActions } from \"./CardActions\";\nimport { CardBody } from \"./CardBody\";\n\n// Ambient declaration so the dev-only warn typechecks without pulling\n// @types/node into the app tsconfig. At runtime the consumer's bundler\n// replaces `process.env.NODE_ENV` with a literal; the `typeof process`\n// guard keeps the branch safe in browser/edge runtimes where `process`\n// doesn't exist. Mirrors the precedent in Button.tsx.\ndeclare const process: { env: { NODE_ENV?: string } };\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"hover\" | \"selected\";\n padding?: \"none\" | \"small\" | \"medium\" | \"large\";\n onClick?: () => void;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n /**\n * Render the root as a semantic `<section>` instead of `<div>`.\n * When `true`, the Card becomes a landmark — a screen-reader-visible\n * region in the document outline — so it MUST carry an accessible\n * name (either `aria-labelledby` pointing to a `Card.Title` `id` or\n * `aria-label`). A dev-only warning is emitted when this contract\n * isn't met; an anonymous landmark hurts navigation by announcing\n * \"region\" without a name.\n * @default false\n */\n asSection?: boolean;\n}\n\n/**\n * Card — versatile container.\n *\n * Supports the compound pattern via dot-notation:\n *\n * ```tsx\n * <Card asSection aria-labelledby=\"parlamentares-title\">\n * <Card.Header>\n * <Card.Title id=\"parlamentares-title\" icon={<Users />} badge={<Badge>Beta</Badge>}>\n * Parlamentares\n * </Card.Title>\n * <Card.Subtitle>Câmara e Senado</Card.Subtitle>\n * <Card.Actions>\n * <Button variant=\"ghost\">Editar</Button>\n * </Card.Actions>\n * </Card.Header>\n * <Card.Body>{children}</Card.Body>\n * </Card>\n * ```\n *\n * Backward compat: the flat form (`<Card>{children}</Card>`) and the\n * interactive form (`<Card onClick={...}>`) are unchanged.\n *\n * Server/client boundary: every subcomponent (Card, Card.Header,\n * Card.Title, Card.Subtitle, Card.Actions, Card.Body) is presentational\n * and ships in `./server`. Interactive children (Button with onClick,\n * Link, etc.) supplied via `<Card.Actions>` cross the RSC boundary\n * naturally — the wrapper stays server-safe.\n */\nfunction CardComponent({\n variant = \"default\",\n padding = \"medium\",\n className = \"\",\n onClick,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n asSection = false,\n children,\n ...props\n}: CardProps) {\n if (\n typeof process !== \"undefined\" &&\n process.env.NODE_ENV !== \"production\" &&\n asSection &&\n !ariaLabel &&\n !ariaLabelledBy\n ) {\n console.warn(\n \"[Card] `asSection={true}` requires an accessible name. Pass `aria-labelledby` pointing to your Card.Title `id`, or `aria-label`. A <section> without a name is an anonymous landmark that hurts screen-reader navigation.\",\n );\n }\n\n const cardVariants = cva(\n cn(\n \"bg-surface-base\",\n getRadiusClass(\"lg\"),\n \"border\",\n \"border-line-default\",\n getShadowClass(\"sm\"),\n ),\n {\n variants: {\n variant: {\n default: \"\",\n hover: cn(\n `hover:${getShadowClass(\"md\")}`,\n \"transition-shadow\",\n \"cursor-pointer\",\n ),\n selected: cn(\"border-line-brand\", getShadowClass(\"md\")),\n },\n padding: {\n none: \"\",\n small: getSpacingClass(\"xs\", \"p\"),\n medium: getSpacingClass(\"base\", \"p\"),\n large: getSpacingClass(\"lg\", \"p\"),\n },\n },\n defaultVariants: {\n variant: \"default\",\n padding: \"medium\",\n },\n },\n );\n\n // ARIA interactivity is driven by `onClick` ONLY. `variant=\"hover\"` is\n // a visual style (hover shadow + cursor hint via cardVariants) — not a\n // declaration that the card is clickable. The previous coupling made\n // any `variant=\"hover\"` Card a `role=\"button\" tabindex=0` outer, which\n // triggered axe `nested-interactive` whenever the consumer composed\n // Buttons inside. Decoupling fixes that without changing the visual\n // behavior. Stories that want a clickable card already pass `onClick`.\n const isInteractive = onClick !== undefined;\n const role = isInteractive ? \"button\" : undefined;\n const tabIndex = isInteractive ? 0 : undefined;\n\n const classes = cn(cardVariants({ variant, padding }), className);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isInteractive && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.();\n }\n };\n\n // Polymorphic root: <section> when asSection, <div> otherwise. Both\n // accept the same HTMLAttributes via `...props` (HTMLDivElement and\n // HTMLElement attribute sets overlap on the props we use).\n const commonProps = {\n className: classes,\n role,\n tabIndex,\n onClick,\n onKeyDown: isInteractive ? handleKeyDown : undefined,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props,\n } as const;\n\n if (asSection) {\n return <section {...commonProps}>{children}</section>;\n }\n return <div {...commonProps}>{children}</div>;\n}\n\nconst MemoCard = memo(CardComponent);\nMemoCard.displayName = \"Card\";\n\n// Compound components (dot-notation). Pattern follows Tabs.tsx — define\n// the function, attach subcomponents, cast to a type that exposes them.\ntype CardCompound = FC<CardProps> & {\n Header: typeof CardHeader;\n Title: typeof CardTitle;\n Subtitle: typeof CardSubtitle;\n Actions: typeof CardActions;\n Body: typeof CardBody;\n};\n\nconst Card = MemoCard as unknown as CardCompound;\nCard.Header = CardHeader;\nCard.Title = CardTitle;\nCard.Subtitle = CardSubtitle;\nCard.Actions = CardActions;\nCard.Body = CardBody;\n\nexport default Card;\n","\"use client\";\n\nimport { type HTMLAttributes, type ReactNode } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface DialogHeaderProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport function DialogHeader({\n children,\n className = \"\",\n ...props\n}: DialogHeaderProps) {\n return (\n <div\n className={`flex flex-col ${getSpacingClass(\"1.5\", \"space-y\")} ${getSpacingClass(\"lg\", \"p\")} ${getSpacingClass(\"base\", \"pb\")} ${className}`}\n {...props}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { type HTMLAttributes, type ReactNode } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface DialogFooterProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport function DialogFooter({\n children,\n className = \"\",\n ...props\n}: DialogFooterProps) {\n return (\n <div\n className={`flex flex-col-reverse sm:flex-row sm:justify-end sm:${getSpacingClass(\"sm\", \"space-x\")} ${getSpacingClass(\"lg\", \"p\")} ${getSpacingClass(\"base\", \"pt\")} ${className}`}\n {...props}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { type ReactNode, type HTMLAttributes } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface DrawerHeaderProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\n/**\n * DrawerHeader Component\n *\n * Header section for drawer content.\n *\n * @example\n * ```tsx\n * <DrawerHeader>\n * <h2>Drawer Title</h2>\n * </DrawerHeader>\n * ```\n */\nexport default function DrawerHeader({\n children,\n className = \"\",\n ...props\n}: DrawerHeaderProps) {\n return (\n <div\n className={`\n ${getSpacingClass(\"lg\", \"p\")}\n border-b\n border-line-default\n ${className}\n `}\n {...props}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { type ReactNode, type HTMLAttributes } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport interface DrawerFooterProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\n/**\n * DrawerFooter Component\n *\n * Footer section for drawer content, typically contains action buttons.\n *\n * @example\n * ```tsx\n * <DrawerFooter>\n * <Button>Save</Button>\n * <Button variant=\"outline\">Cancel</Button>\n * </DrawerFooter>\n * ```\n */\nexport default function DrawerFooter({\n children,\n className = \"\",\n ...props\n}: DrawerFooterProps) {\n return (\n <div\n className={`\n ${getSpacingClass(\"lg\", \"p\")}\n border-t\n border-line-default\n flex\n justify-end\n ${getSpacingClass(\"sm\", \"gap\")}\n ${className}\n `}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * HeaderActions Component\n *\n * Actions slot component for Header (typically buttons, user menu, etc.).\n *\n * @see EPIC-002: Header Component (Molecule)\n * @see RFC-003: Header Composition Pattern (APPROVED)\n */\n\n\"use client\";\n\nimport { type ReactNode } from \"react\";\nimport { cn } from \"../../../utils\";\nimport { getSpacingClass } from \"../../../tokens/spacing\";\n\nexport interface HeaderActionsProps {\n /**\n * Actions content (typically Button components)\n */\n children: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * HeaderActions Component\n *\n * Actions slot for Header. Typically contains Button components or user menu.\n *\n * @example\n * ```tsx\n * <Header.Actions>\n * <Button variant=\"outline\">Sign In</Button>\n * <Button variant=\"primary\">Sign Up</Button>\n * </Header.Actions>\n * ```\n */\nexport function HeaderActions({ children, className }: HeaderActionsProps) {\n return (\n <div\n className={cn(\n \"flex-shrink-0 flex items-center\",\n getSpacingClass(\"sm\", \"gap\"),\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","/**\n * HeaderNavigation Component\n *\n * Navigation slot component for Header.\n *\n * @see EPIC-002: Header Component (Molecule)\n * @see RFC-003: Header Composition Pattern (APPROVED)\n */\n\n\"use client\";\n\nimport { type ReactNode } from \"react\";\nimport { cn } from \"../../../utils\";\nimport { getSpacingClass } from \"../../../tokens/spacing\";\n\nexport interface HeaderNavigationProps {\n /**\n * Navigation content (typically NavLink components)\n */\n children: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * HeaderNavigation Component\n *\n * Navigation slot for Header. Typically contains NavLink components.\n *\n * @example\n * ```tsx\n * <Header.Navigation>\n * <NavLink href=\"/home\">Home</NavLink>\n * <NavLink href=\"/about\">About</NavLink>\n * </Header.Navigation>\n * ```\n */\nexport function HeaderNavigation({\n children,\n className,\n}: HeaderNavigationProps) {\n return (\n <nav\n className={cn(\n \"flex-1 flex items-center justify-center\",\n getSpacingClass(\"base\", \"gap\"),\n \"hidden md:flex\", // Hidden on mobile, visible on desktop\n className,\n )}\n aria-label=\"Main navigation\"\n >\n {children}\n </nav>\n );\n}\n","\"use client\";\n\nimport { type HTMLAttributes } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport type MenuSeparatorProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * MenuSeparator Component\n *\n * A visual separator for menu items.\n *\n * @example\n * ```tsx\n * <MenuSeparator />\n * ```\n */\nexport default function MenuSeparator({\n className = \"\",\n ...props\n}: MenuSeparatorProps) {\n return (\n <div\n role=\"separator\"\n className={`\n h-px\n bg-line-default\n ${getSpacingClass(\"sm\", \"my\")}\n ${className}\n `}\n {...props}\n />\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../../../utils\";\nimport { getSpacingClass } from \"../../../../tokens/spacing\";\nimport type { NavbarSeparatorProps } from \"../../types\";\n\n/**\n * Separator for the Navbar subcomponent\n *\n * Creates visual separation between groups of navigation items.\n *\n * @example\n * ```tsx\n * <SideNavbar.Navbar>\n * <SideNavbar.Navbar.Item icon={<Home />} label=\"Home\" />\n * <SideNavbar.Navbar.Separator />\n * <SideNavbar.Navbar.Item icon={<Settings />} label=\"Settings\" />\n * </SideNavbar.Navbar>\n * ```\n */\nexport default function NavbarSeparator({\n orientation = \"horizontal\",\n className = \"\",\n ...props\n}: NavbarSeparatorProps) {\n if (orientation === \"vertical\") {\n return (\n <div\n className={cn(\"w-px\", \"h-6\", \"bg-line-default\", \"mx-auto\", className)}\n role=\"separator\"\n aria-orientation=\"vertical\"\n {...props}\n />\n );\n }\n\n return (\n <div\n className={cn(\n \"w-full\",\n \"h-px\",\n \"bg-line-default\",\n getSpacingClass(\"sm\", \"my\"), // my-2 (8px) para consistência com gap-2 usado em outros lugares\n \"flex-shrink-0\", // Prevenir que separator encolha\n className,\n )}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n style={{\n // Garantir que separator não seja afetado por transformações\n willChange: \"auto\",\n transform: \"none\",\n }}\n {...props}\n />\n );\n}\n","/**\n * PageHeader Component\n *\n * Page header component with title, description, breadcrumb, and actions.\n *\n * @see EPIC-004: PageHeader Component (Molecule)\n */\n\nimport Breadcrumb from \"../Breadcrumb/Breadcrumb\";\nimport Text from \"../../primitives/Text/Text\";\nimport type { PageHeaderProps } from \"./types\";\nimport { cn, cva } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\n/**\n * PageHeader Variants using CVA\n * Type-safe variant system for PageHeader component\n */\nconst pageHeaderVariants = cva(\n // Base classes\n cn(\"w-full\", \"flex\", \"flex-col\", getSpacingClass(\"sm\", \"gap\")),\n {\n variants: {\n variant: {\n default: cn(getSpacingClass(\"base\", \"mb\")),\n compact: cn(getSpacingClass(\"sm\", \"mb\")),\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\n/**\n * PageHeader Component\n *\n * Page header with title, description, breadcrumb, and actions.\n *\n * @example\n * ```tsx\n * <PageHeader\n * title=\"Page Title\"\n * description=\"Page description\"\n * breadcrumb={[\n * { label: 'Home', href: '/' },\n * { label: 'Page', href: '/page' },\n * ]}\n * actions={<Button>Action</Button>}\n * />\n * ```\n */\nexport function PageHeader({\n title,\n description,\n breadcrumb,\n actions,\n variant = \"default\",\n className,\n ...props\n}: PageHeaderProps) {\n return (\n <div className={cn(pageHeaderVariants({ variant }), className)} {...props}>\n {/* Breadcrumb */}\n {breadcrumb && breadcrumb.length > 0 && <Breadcrumb items={breadcrumb} />}\n\n {/* Title and Actions Row */}\n <div\n className={`flex items-start justify-between ${getSpacingClass(\"base\", \"gap\")}`}\n >\n {/* Title and Description */}\n <div className=\"flex-1 min-w-0\">\n <Text\n variant=\"heading\"\n as=\"h1\"\n className={`${getSpacingClass(\"sm\", \"mb\")} text-2xl font-bold`}\n >\n {title}\n </Text>\n {description && (\n <Text variant=\"body\" className=\"text-fg-secondary\">\n {description}\n </Text>\n )}\n </div>\n\n {/* Actions */}\n {actions && (\n <div\n className={`flex items-center ${getSpacingClass(\"sm\", \"gap\")} flex-shrink-0`}\n >\n {actions}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nexport default PageHeader;\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\n\nexport type StatTone = \"neutral\" | \"success\" | \"warning\" | \"error\";\nexport type StatAlign = \"start\" | \"center\";\n\nexport interface StatProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The metric value to display. Strings are rendered verbatim — formatting\n * (number locale, currency, units, relative time, etc.) is the consumer's\n * responsibility, not the design system's. Pass `null` or `undefined` to\n * render the empty-state placeholder (see \"Empty state\" below).\n */\n value: ReactNode;\n /**\n * Short metric label (e.g. \"Votos\", \"Alinhamento\"). Required for screen\n * reader context — the label describes what the value means.\n */\n label: string;\n /**\n * Optional third line of context below the value (e.g. \"no banco\",\n * \"últimos 12 m\", \"+3% no mês\"). The `tone` prop styles THIS line — see\n * `tone` for the contract.\n */\n hint?: ReactNode;\n /**\n * Optional icon rendered above the value (home-style stats use icons;\n * detail-page stats typically don't).\n */\n icon?: ReactNode;\n /**\n * Block alignment. `start` left-aligns label/value/hint (detail-page\n * style); `center` centers them (home-hero style).\n * @default 'start'\n */\n align?: StatAlign;\n /**\n * Semantic tone for the metric — `neutral` for plain stats, the others\n * for classified states (good/warning/bad).\n *\n * **Scope (contract).** Tone affects ONLY the `hint`, not the `value`,\n * `label`, or `icon`. The `value` always renders in `text-fg-primary`\n * regardless of tone; the `label` in `text-fg-secondary`; the `icon` in\n * `text-icon-default`. This is deliberate — a colored value would\n * compete with the label for attention and bias the reader's\n * interpretation of the metric. If a future requirement needs the\n * `value` (or icon) to inherit tone, that becomes a new prop or a\n * semver-bound default change, not a surprise expansion of `tone`.\n *\n * Tone maps directly to the semantic foreground tokens (no new\n * vocabulary): `neutral` → `text-fg-tertiary`, `success` →\n * `text-fg-success`, `warning` → `text-fg-warning`, `error` →\n * `text-fg-error`. See `.claude/rules/colors.md`.\n *\n * @default 'neutral'\n */\n tone?: StatTone;\n}\n\nconst alignClasses: Record<StatAlign, string> = {\n start: \"items-start text-left\",\n center: \"items-center text-center\",\n};\n\nconst toneHintClasses: Record<StatTone, string> = {\n neutral: \"text-fg-tertiary\",\n success: \"text-fg-success\",\n warning: \"text-fg-warning\",\n error: \"text-fg-error\",\n};\n\n/**\n * `Stat` — a single statistic block (icon? + value + label + hint?).\n *\n * Composes with `StatGroup` (1-px-divider strip or grid) but is also\n * valid standalone — a single `Stat` outside a group is a legitimate use\n * case for a hero metric.\n *\n * ### Empty state contract\n *\n * When `value` is `null` OR `undefined`, the component renders the\n * em-dash placeholder `—` (U+2014) with `aria-label=\"No data\"` on its\n * wrapper. The label is intentionally hard-coded in English in this\n * version; a screen reader announcing \"No data\" in an otherwise\n * Portuguese app is a known inconsistency accepted for now — if i18n\n * becomes a requirement, an `emptyLabel?: string` prop will be added in\n * a follow-up PR (semver-safe addition).\n *\n * Other falsy values — `0`, `\"\"`, `false`, an empty fragment — are\n * **legitimate values** and render as-is. The empty trigger is only\n * `null`/`undefined`, because `0` (count = zero) is meaningful data that\n * the consumer would not want masked.\n *\n * ### Server-safe\n *\n * Pure presentation — no hooks, no event handlers on the DOM. Ships in\n * the `./server` entry alongside `StatGroup`. Consumer-supplied `icon`\n * may itself be a client component; React's RSC boundary handles that\n * normally.\n *\n * @example\n * ```tsx\n * // Home-style (centered, with icon)\n * <Stat\n * icon={<Users size={20} aria-hidden=\"true\" />}\n * value=\"9,4 mil\"\n * label=\"Parlamentares\"\n * align=\"center\"\n * />\n *\n * // Detail-page-style (start-aligned, with hint)\n * <Stat\n * value=\"87%\"\n * label=\"Alinhamento\"\n * hint=\"últimos 12 meses\"\n * tone=\"success\"\n * />\n * ```\n */\nexport function Stat({\n value,\n label,\n hint,\n icon,\n align = \"start\",\n tone = \"neutral\",\n className,\n ...props\n}: StatProps) {\n const isEmpty = value === null || value === undefined;\n\n return (\n <div\n className={cn(\n \"bg-surface-base flex-1 flex flex-col\",\n getSpacingClass(\"base\", \"p\"),\n getSpacingClass(\"xs\", \"gap-y\"),\n alignClasses[align],\n className,\n )}\n {...props}\n >\n {icon ? (\n <span className=\"text-icon-default inline-flex\">{icon}</span>\n ) : null}\n {isEmpty ? (\n <span\n aria-label=\"No data\"\n className=\"text-fg-tertiary text-2xl font-semibold leading-tight\"\n >\n —\n </span>\n ) : (\n <span className=\"text-fg-primary text-2xl font-semibold leading-tight\">\n {value}\n </span>\n )}\n <span className=\"text-fg-secondary text-sm\">{label}</span>\n {hint ? (\n <span className={cn(\"text-xs\", toneHintClasses[tone])}>{hint}</span>\n ) : null}\n </div>\n );\n}\n\nexport default Stat;\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils\";\nimport { getRadiusClass } from \"../../tokens/radius\";\n\nexport type StatGroupLayout = \"strip\" | \"grid\";\nexport type StatGroupCols = 2 | 3 | 4;\n\nexport interface StatGroupProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * `strip` — single horizontal row, no wrap. Each `Stat` shares the row\n * width via `flex-1`. Use when you guarantee the horizontal space\n * (hero areas, wide dashboards). On narrow viewports the row does NOT\n * reflow — choose `grid` if you need responsive collapse.\n *\n * `grid` — multi-column grid that reflows. Always 2-up on mobile,\n * expands to `cols` columns at the `md` breakpoint (768 px) and up.\n * Five or more children spill to a second row with the divider lines\n * preserved.\n *\n * @default 'grid'\n */\n layout?: StatGroupLayout;\n /**\n * Desktop column count (≥ 768 px). Only effective in `layout=\"grid\"`;\n * ignored in `layout=\"strip\"`. Mobile is always 2 columns regardless.\n *\n * @default 4\n */\n cols?: StatGroupCols;\n children: ReactNode;\n}\n\n// Tailwind v4 generates `md:grid-cols-N` for N ∈ {2,3,4} statically from\n// the literal class string. The map below ensures the strings exist\n// verbatim in the source so JIT picks them up.\nconst gridColsMd: Record<StatGroupCols, string> = {\n 2: \"md:grid-cols-2\",\n 3: \"md:grid-cols-3\",\n 4: \"md:grid-cols-4\",\n};\n\n/**\n * `StatGroup` — container for one or more `Stat` blocks with 1-px\n * dividers between them.\n *\n * ### Divider technique\n *\n * The container has `bg-line-default` and `gap-px` (1 px); each child\n * `Stat` carries its own `bg-surface-base`. The 1 px of gap exposes the\n * container's background as the divider line, while each cell masks its\n * own area with `bg-surface-base`. Works identically for the strip\n * layout (vertical dividers) and the grid layout (vertical AND\n * horizontal dividers, automatically, as the grid reflows). No separate\n * `Divider` component, no per-cell border logic.\n *\n * The outer ring is `border border-line-default` matching the gap color,\n * with `rounded-lg` and `overflow-hidden` clipping the inner cells to\n * the radius.\n *\n * ### Server-safe\n *\n * Pure presentation — no hooks, no event handlers on the DOM. Ships in\n * `./server` alongside `Stat`.\n *\n * @example\n * ```tsx\n * <StatGroup layout=\"strip\">\n * <Stat icon={<Users />} value=\"9,4 mil\" label=\"Parlamentares\" align=\"center\" />\n * <Stat icon={<FileText />} value=\"3,2 mil\" label=\"Proposições\" align=\"center\" />\n * <Stat icon={<Vote />} value=\"1,1 mil\" label=\"Votações\" align=\"center\" />\n * <Stat icon={<Clock />} value=\"há 18 dias\" label=\"Última atualização\" align=\"center\" />\n * </StatGroup>\n *\n * <StatGroup layout=\"grid\" cols={4}>\n * <Stat value=\"87%\" label=\"Alinhamento\" hint=\"últimos 12 m\" tone=\"success\" />\n * <Stat value={null} label=\"Sem orientação\" hint=\"no período\" />\n * <Stat value=\"R$ 187.472,95\" label=\"Gastos\" hint=\"no mandato\" />\n * <Stat value=\"42\" label=\"Votações\" hint=\"no banco\" />\n * </StatGroup>\n * ```\n */\nexport function StatGroup({\n layout = \"grid\",\n cols = 4,\n className,\n children,\n ...props\n}: StatGroupProps) {\n const isGrid = layout === \"grid\";\n\n return (\n <div\n className={cn(\n \"bg-line-default border border-line-default overflow-hidden gap-px\",\n getRadiusClass(\"lg\"),\n isGrid ? `grid grid-cols-2 ${gridColsMd[cols]}` : \"flex\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport default StatGroup;\n","\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport type { TableColumn } from \"./TableTypes\";\n\nexport interface TableCellProps<\n T = unknown,\n> extends HTMLAttributes<HTMLTableCellElement> {\n column: TableColumn<T>;\n row: T;\n}\n\n/**\n * TableCell Component\n *\n * Renders a table cell (td) for a column.\n * Uses column.render if available, otherwise renders the raw value.\n * Must be used within a Table component.\n */\nexport default function TableCell<\n T extends Record<string, unknown> = Record<string, unknown>,\n>({ column, row, className = \"\", ...props }: TableCellProps<T>) {\n const value = column.key in row ? row[column.key as keyof T] : undefined;\n\n return (\n <td\n className={`${getSpacingClass(\"lg\", \"px\")} ${getSpacingClass(\"base\", \"py\")} whitespace-nowrap text-sm text-fg-primary ${\n column.hiddenOnMobile ? \"hidden md:table-cell\" : \"\"\n } ${className}`}\n {...props}\n >\n {column.render ? column.render(value, row) : String(value ?? \"\")}\n </td>\n );\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { CheckCircle2 } from \"lucide-react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getRadiusClass } from \"../../tokens/radius\";\n\nexport type TimelineOrientation = \"horizontal\" | \"vertical\";\n\nexport interface TimelineItem {\n id: string;\n title: string;\n description?: string;\n content?: ReactNode;\n timestamp?: string;\n icon?: ReactNode;\n status?: \"default\" | \"active\" | \"completed\" | \"error\";\n}\n\nexport interface TimelineProps {\n items: TimelineItem[];\n orientation?: TimelineOrientation;\n className?: string;\n}\n\n/**\n * Timeline Component\n *\n * A timeline component for displaying events in chronological order.\n * Supports horizontal and vertical orientations.\n * Follows Atomic Design principles as an Organism component.\n *\n * @example\n * ```tsx\n * <Timeline\n * items={[\n * { id: '1', title: 'Event 1', description: 'Description 1', timestamp: '2024-01-01' },\n * { id: '2', title: 'Event 2', description: 'Description 2', timestamp: '2024-01-02' },\n * ]}\n * />\n * ```\n */\nexport default function Timeline({\n items,\n orientation = \"vertical\",\n className = \"\",\n}: TimelineProps) {\n if (orientation === \"horizontal\") {\n return (\n <div className={`flex items-start ${className}`}>\n {items.map((item, index) => {\n const status =\n item.status ||\n (index === 0\n ? \"active\"\n : index < items.findIndex((i) => i.status === \"active\")\n ? \"completed\"\n : \"default\");\n const isLast = index === items.length - 1;\n\n return (\n <div key={item.id} className=\"flex items-start flex-1\">\n <div className=\"flex flex-col items-center flex-1\">\n {/* Icon/Indicator */}\n <div\n // data-marker=\"pending\" — see .claude/rules/colors.md\n // \"fg-quaternary: AA-by-construction exception\".\n {...(status === \"default\"\n ? { \"data-marker\": \"pending\" }\n : {})}\n className={`\n flex\n items-center\n justify-center\n w-10\n h-10\n ${getRadiusClass(\"full\")}\n border-2\n ${\n status === \"completed\"\n ? \"bg-success border-success text-fg-inverse\"\n : status === \"active\"\n ? \"bg-surface-brand-strong border-line-brand text-fg-inverse\"\n : status === \"error\"\n ? \"bg-error border-error text-fg-inverse\"\n : \"bg-surface-base border-line-emphasis text-fg-quaternary\"\n }\n `}\n >\n {item.icon ||\n (status === \"completed\" ? (\n <CheckCircle2 className=\"h-4 w-4\" />\n ) : (\n index + 1\n ))}\n </div>\n\n {/* Connector Line */}\n {!isLast && (\n <div\n className={`\n w-full\n h-0.5\n ${getSpacingClass(\"sm\", \"mt\")}\n ${status === \"completed\" ? \"bg-success\" : \"bg-line-emphasis\"}\n `}\n />\n )}\n\n {/* Content */}\n <div\n className={`${getSpacingClass(\"base\", \"mt\")} text-center ${getSpacingClass(\"base\", \"px\")}`}\n >\n {item.timestamp && (\n <p\n className={`text-xs text-fg-tertiary ${getSpacingClass(\"xs\", \"mb\")}`}\n >\n {item.timestamp}\n </p>\n )}\n <h3 className=\"text-sm font-semibold text-fg-primary\">\n {item.title}\n </h3>\n {item.description && (\n <p\n className={`text-xs text-fg-secondary ${getSpacingClass(\"xs\", \"mt\")}`}\n >\n {item.description}\n </p>\n )}\n {item.content && (\n <div className={getSpacingClass(\"sm\", \"mt\")}>\n {item.content}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n\n // Vertical orientation\n return (\n <div className={`${getSpacingClass(\"none\", \"space-y\")} ${className}`}>\n {items.map((item, index) => {\n const status =\n item.status ||\n (index === 0\n ? \"active\"\n : index < items.findIndex((i) => i.status === \"active\")\n ? \"completed\"\n : \"default\");\n const isLast = index === items.length - 1;\n\n return (\n <div\n key={item.id}\n className={`flex items-start ${getSpacingClass(\"base\", \"gap\")}`}\n >\n {/* Timeline Line & Icon */}\n <div className=\"flex flex-col items-center\">\n <div\n // data-marker=\"pending\" — see .claude/rules/colors.md\n // \"fg-quaternary: AA-by-construction exception\".\n {...(status === \"default\" ? { \"data-marker\": \"pending\" } : {})}\n className={`\n flex\n items-center\n justify-center\n w-10\n h-10\n ${getRadiusClass(\"full\")}\n border-2\n ${\n status === \"completed\"\n ? \"bg-success border-success text-fg-inverse\"\n : status === \"active\"\n ? \"bg-surface-brand-strong border-line-brand text-fg-inverse\"\n : status === \"error\"\n ? \"bg-error border-error text-fg-inverse\"\n : \"bg-surface-base border-line-emphasis text-fg-quaternary\"\n }\n `}\n >\n {item.icon ||\n (status === \"completed\" ? (\n <CheckCircle2 className=\"h-4 w-4\" />\n ) : (\n index + 1\n ))}\n </div>\n {!isLast && (\n <div\n className={`\n w-0.5\n flex-1\n min-h-16\n ${getSpacingClass(\"sm\", \"mt\")}\n ${status === \"completed\" ? \"bg-success\" : \"bg-line-emphasis\"}\n `}\n />\n )}\n </div>\n\n {/* Content */}\n <div className={`flex-1 ${getSpacingClass(\"xl\", \"pb\")}`}>\n {item.timestamp && (\n <p\n className={`text-xs text-fg-tertiary ${getSpacingClass(\"xs\", \"mb\")}`}\n >\n {item.timestamp}\n </p>\n )}\n <h3\n className={`\n text-base\n font-semibold\n ${status === \"active\" ? \"text-fg-brand-emphasis\" : \"text-fg-primary\"}\n `}\n >\n {item.title}\n </h3>\n {item.description && (\n <p\n className={`text-sm text-fg-secondary ${getSpacingClass(\"xs\", \"mt\")}`}\n >\n {item.description}\n </p>\n )}\n {item.content && (\n <div className={getSpacingClass(\"md\", \"mt\")}>\n {item.content}\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n"],"names":["RadiusTokenFactory","size","config","RADIUS_TOKENS","getRadiusClass","SpacingTokenFactory","scale","px","rem","__publicField","SPACING_TOKENS","getSpacingClass","direction","value","TypographyTokenFactory","height","weight","lineHeight","TYPOGRAPHY_TOKENS","getTypographyClasses","variant","token","getTypographySize","getTypographyWeight","cn","inputs","twMerge","clsx","cva","base","variantFn","cvaLib","props","variantClasses","badgeVariants","Badge","memo","forwardRef","_a","ref","_b","style","className","children","ariaLabel","__objRest","classes","accessibleLabel","childProps","jsx","__spreadProps","__spreadValues","setRef","composeRefs","refs","node","hasCleanup","cleanups","cleanup","i","REACT_LAZY_TYPE","use","React","isPromiseLike","isLazyComponent","element","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","Slot","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","overrideProps","propName","slotPropValue","childPropValue","args","result","getter","mayWarn","chipVariants","Chip","selected","disabled","tabIndex","asChild","onRemove","onClick","useLabelButton","interactive","handleKeyDown","e","jsxs","X","ErrorMessage","message","id","baseClasses","AlertCircle","Info","labelBaseClasses","labelVariantClasses","Label","createBrandToken","hex","family","rgb","hexToRgb","hsl","hexToHsl","r","g","b","max","min","h","s","l","d","createToken","colorName","ShadowTokenFactory","SHADOW_TOKENS","getShadowClass","BorderTokenFactory","width","BreakpointTokenFactory","name","AnimationTokenFactory","duration","easing","durationMap","easingMap","property","durationToken","properties","tailwindClasses","ZIndexTokenFactory","layer","OpacityTokenFactory","decimal","descriptionMap","progressTrackVariants","progressBarVariants","Progress","showLabel","label","isIndeterminate","percentage","defaultAriaLabel","separatorOrientationClasses","separatorVariantClasses","Separator","orientation","Skeleton","lines","_","index","spinnerVariants","Spinner","Loader2","TEXT_COLOR_CLASSES","TextComponent","bold","italic","as","colorRole","colorShade","rest","classNames","Tag","Text","maxWidthClasses","Container","maxWidth","paddingX","paddingY","center","Stack","spacing","align","justify","spacingClass","alignClasses","justifyClasses","Breadcrumb","items","separator","item","isLast","CardHeader","CardTitle","icon","badge","As","CardSubtitle","CardActions","CardBody","CardComponent","padding","ariaLabelledBy","asSection","cardVariants","isInteractive","role","commonProps","MemoCard","Card","DialogHeader","DialogFooter","DrawerHeader","DrawerFooter","HeaderActions","HeaderNavigation","MenuSeparator","NavbarSeparator","pageHeaderVariants","PageHeader","title","description","breadcrumb","actions","toneHintClasses","Stat","hint","tone","isEmpty","gridColsMd","StatGroup","layout","cols","isGrid","TableCell","column","row","Timeline","status","CheckCircle2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BO,MAAMA,EAAmB;AAAA;AAAA;AAAA;AAAA,EAI9B,OAAO,OAAOC,GAA+B;AA+C3C,UAAMC,IA3CF;AAAA,MACF,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,IAAI;AAAA,QACF,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,IAAI;AAAA,QACF,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,IAAI;AAAA,QACF,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,IAAI;AAAA,QACF,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,IACf,EAGuBD,CAAI;AAC7B,WAAO;AAAA,MACL,OAAOC,EAAO;AAAA,MACd,KAAK,GAAGA,EAAO,KAAK,EAAE;AAAA,MACtB,IAAI,GAAGA,EAAO,EAAE;AAAA,MAChB,UAAUA,EAAO;AAAA,MACjB,aAAaA,EAAO;AAAA,IAAA;AAAA,EAExB;AACF;AAKO,MAAMC,KAAgB;AAAA,EAC3B,MAAMH,EAAmB,OAAO,MAAM;AAAA,EACtC,IAAIA,EAAmB,OAAO,IAAI;AAAA,EAClC,IAAIA,EAAmB,OAAO,IAAI;AAAA,EAClC,IAAIA,EAAmB,OAAO,IAAI;AAAA,EAClC,IAAIA,EAAmB,OAAO,IAAI;AAAA,EAClC,OAAOA,EAAmB,OAAO,KAAK;AAAA,EACtC,OAAOA,EAAmB,OAAO,KAAK;AAAA,EACtC,MAAMA,EAAmB,OAAO,MAAM;AACxC;AAYO,SAASI,EAAeH,GAA0C;AACvE,SAAOE,GAAcF,CAAI,EAAE;AAC7B;AC1EO,MAAMI,EAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/B,OAAO,OAAOC,GAAmC;AAC/C,UAAMC,IAAKD,IAAQ,KAAK,WAClBE,IAAMD,IAAK;AAEjB,WAAO;AAAA,MACL,OAAOA;AAAA,MACP,KAAK,GAAGC,CAAG;AAAA,MACX,IAAI,GAAGD,CAAE;AAAA,MACT,UAAU,KAAK,iBAAiBD,CAAK;AAAA,IAAA;AAAA,EAEzC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAe,iBAAiBA,GAA6B;AA2B3D,WA1BkD;AAAA,MAChD,GAAG;AAAA,MACH,KAAK;AAAA;AAAA,MACL,GAAG;AAAA;AAAA,MACH,KAAK;AAAA;AAAA,MACL,GAAG;AAAA;AAAA,MACH,KAAK;AAAA;AAAA,MACL,GAAG;AAAA;AAAA,MACH,KAAK;AAAA;AAAA,MACL,GAAG;AAAA;AAAA,MACH,GAAG;AAAA;AAAA,MACH,GAAG;AAAA;AAAA,MACH,GAAG;AAAA;AAAA,MACH,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,IAAA,EAGaA,CAAK,KAAK,OAAOA,CAAK;AAAA,EAC3C;AACF;AAjDEG,GADWJ,GACa,aAAY;AAsD/B,MAAMK,KAAiB;AAAA;AAAA,EAE5B,MAAML,EAAoB,OAAO,CAAC;AAAA,EAClC,OAAOA,EAAoB,OAAO,GAAG;AAAA;AAAA,EACrC,IAAIA,EAAoB,OAAO,CAAC;AAAA;AAAA,EAChC,OAAOA,EAAoB,OAAO,GAAG;AAAA;AAAA,EACrC,IAAIA,EAAoB,OAAO,CAAC;AAAA;AAAA,EAChC,OAAOA,EAAoB,OAAO,GAAG;AAAA;AAAA,EACrC,IAAIA,EAAoB,OAAO,CAAC;AAAA;AAAA,EAChC,OAAOA,EAAoB,OAAO,GAAG;AAAA;AAAA;AAAA,EAGrC,MAAMA,EAAoB,OAAO,CAAC;AAAA;AAAA,EAClC,IAAIA,EAAoB,OAAO,CAAC;AAAA;AAAA,EAChC,IAAIA,EAAoB,OAAO,CAAC;AAAA;AAAA;AAAA,EAGhC,OAAOA,EAAoB,OAAO,EAAE;AAAA;AAAA,EACpC,OAAOA,EAAoB,OAAO,EAAE;AAAA;AAAA,EACpC,OAAOA,EAAoB,OAAO,EAAE;AAAA;AAAA;AAAA,EAGpC,OAAOA,EAAoB,OAAO,EAAE;AAAA;AAAA,EACpC,OAAOA,EAAoB,OAAO,EAAE;AAAA;AACtC;AAYO,SAASM,EACdL,GACAM,IAmBgB,KACR;AAER,QAAMC,IADQH,GAAeJ,CAAK,EACd;AAwBpB,SAAO,GAtBmC;AAAA,IACxC,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,EAAA,EAGOM,CAAS,CAAC,IAAIC,CAAK;AACzC;AC1HO,MAAMC,EAAuB;AAAA;AAAA;AAAA;AAAA,EAIlC,OAAO,eAAeb,GAA6C;AAejE,UAAMC,IAd8D;AAAA,MAClE,OAAO,EAAE,IAAI,IAAI,UAAU,WAAA;AAAA;AAAA,MAC3B,IAAI,EAAE,IAAI,IAAI,UAAU,UAAA;AAAA,MACxB,IAAI,EAAE,IAAI,IAAI,UAAU,UAAA;AAAA,MACxB,MAAM,EAAE,IAAI,IAAI,UAAU,YAAA;AAAA,MAC1B,IAAI,EAAE,IAAI,IAAI,UAAU,UAAA;AAAA,MACxB,IAAI,EAAE,IAAI,IAAI,UAAU,UAAA;AAAA,MACxB,OAAO,EAAE,IAAI,IAAI,UAAU,WAAA;AAAA,MAC3B,OAAO,EAAE,IAAI,IAAI,UAAU,WAAA;AAAA,MAC3B,OAAO,EAAE,IAAI,IAAI,UAAU,WAAA;AAAA,MAC3B,OAAO,EAAE,IAAI,IAAI,UAAU,WAAA;AAAA,MAC3B,OAAO,EAAE,IAAI,IAAI,UAAU,WAAA;AAAA,IAAW,EAGjBD,CAAI;AAC3B,WAAO;AAAA,MACL,OAAOC,EAAO;AAAA,MACd,KAAK,GAAGA,EAAO,KAAK,EAAE;AAAA,MACtB,IAAI,GAAGA,EAAO,EAAE;AAAA,MAChB,UAAUA,EAAO;AAAA,IAAA;AAAA,EAErB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,iBAAiBa,GAAmD;AAUzE,UAAMb,IATqE;AAAA,MACzE,MAAM,EAAE,OAAO,GAAG,UAAU,eAAA;AAAA,MAC5B,OAAO,EAAE,OAAO,MAAM,UAAU,gBAAA;AAAA,MAChC,MAAM,EAAE,OAAO,OAAO,UAAU,eAAA;AAAA,MAChC,QAAQ,EAAE,OAAO,KAAK,UAAU,iBAAA;AAAA,MAChC,SAAS,EAAE,OAAO,OAAO,UAAU,kBAAA;AAAA,MACnC,OAAO,EAAE,OAAO,GAAG,UAAU,gBAAA;AAAA,IAAgB,EAGtBa,CAAM;AAC/B,WAAO;AAAA,MACL,OAAOb,EAAO;AAAA,MACd,UAAUA,EAAO;AAAA,IAAA;AAAA,EAErB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,iBAAiBc,GAAqC;AAS3D,UAAMd,IARqE;AAAA,MACzE,OAAO,EAAE,OAAO,KAAK,UAAU,aAAA;AAAA,MAC/B,QAAQ,EAAE,OAAO,KAAK,UAAU,cAAA;AAAA,MAChC,QAAQ,EAAE,OAAO,KAAK,UAAU,cAAA;AAAA,MAChC,UAAU,EAAE,OAAO,KAAK,UAAU,gBAAA;AAAA,MAClC,MAAM,EAAE,OAAO,KAAK,UAAU,YAAA;AAAA,IAAY,EAGnBc,CAAM;AAC/B,WAAO;AAAA,MACL,OAAOd,EAAO;AAAA,MACd,UAAUA,EAAO;AAAA,IAAA;AAAA,EAErB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,OACLD,GACAgB,IAAyB,UACzBD,IAAqB,UACJ;AACjB,WAAO;AAAA,MACL,UAAU,KAAK,eAAef,CAAI;AAAA,MAClC,YAAY,KAAK,iBAAiBgB,CAAU;AAAA,MAC5C,YAAY,KAAK,iBAAiBD,CAAM;AAAA,IAAA;AAAA,EAE5C;AACF;AA6BSF,EAAuB,iBAAiB,OAAO,GAC9CA,EAAuB,iBAAiB,QAAQ,GAChDA,EAAuB,iBAAiB,QAAQ,GAC9CA,EAAuB,iBAAiB,UAAU,GACtDA,EAAuB,iBAAiB,MAAM;AAM/C,MAAMI,IAAoB;AAAA;AAAA,EAE/B,IAAIJ,EAAuB,OAAO,OAAO,SAAS,MAAM;AAAA,EACxD,IAAIA,EAAuB,OAAO,OAAO,SAAS,MAAM;AAAA,EACxD,IAAIA,EAAuB,OAAO,OAAO,QAAQ,UAAU;AAAA,EAC3D,IAAIA,EAAuB,OAAO,MAAM,QAAQ,UAAU;AAAA,EAC1D,IAAIA,EAAuB,OAAO,MAAM,UAAU,QAAQ;AAAA,EAC1D,IAAIA,EAAuB,OAAO,QAAQ,UAAU,QAAQ;AAAA;AAAA,EAG5D,MAAMA,EAAuB,OAAO,QAAQ,WAAW,QAAQ;AAAA,EAC/D,WAAWA,EAAuB,OAAO,MAAM,WAAW,QAAQ;AAAA,EAClE,WAAWA,EAAuB,OAAO,MAAM,WAAW,QAAQ;AAAA;AAAA,EAGlE,OAAOA,EAAuB,OAAO,MAAM,UAAU,QAAQ;AAAA,EAC7D,SAASA,EAAuB,OAAO,MAAM,UAAU,QAAQ;AAAA,EAC/D,QAAQA,EAAuB,OAAO,QAAQ,UAAU,QAAQ;AAClE;AAcO,SAASK,EACdC,GACQ;AACR,QAAMC,IAAQH,EAAkBE,CAAO;AACvC,SAAO,GAAGC,EAAM,SAAS,QAAQ,IAAIA,EAAM,WAAW,QAAQ,IAAIA,EAAM,WAAW,QAAQ;AAC7F;AAKO,SAASC,EACdF,GACQ;AACR,SAAOF,EAAkBE,CAAO,EAAE,SAAS;AAC7C;AAaO,SAASG,EACdH,GACQ;AACR,SAAOF,EAAkBE,CAAO,EAAE,WAAW;AAC/C;AC1MO,SAASI,KAAMC,GAA8B;AAClD,SAAOC,GAAQC,GAAKF,CAAM,CAAC;AAC7B;AC8BO,MAAMG,IAAM,CACjBC,GACA3B,MACG;AACH,QAAM4B,IAAYC,GAAOF,GAAM3B,CAAM;AAGrC,UAAQ,CAAC8B,MAA4C;AACnD,UAAMC,IAAiBH,EAAUE,CAAK;AACtC,WAAOR,EAAGS,CAAc;AAAA,EAC1B;AACF,GCtCMC,KAAgBN;AAAA;AAAA,EAEpBJ;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACAD,EAAoB,OAAO;AAAA,IAC3BnB,EAAe,IAAI;AAAA,IACnB;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,QACT,WAAW;AAAA,MAAA;AAAA,MAEb,MAAM;AAAA,QACJ,IAAIoB;AAAA,UACFb,EAAgB,OAAO,IAAI;AAAA,UAC3BA,EAAgB,OAAO,IAAI;AAAA,UAC3BW,EAAkB,SAAS;AAAA,QAAA;AAAA,QAE7B,IAAIE;AAAA,UACFb,EAAgB,MAAM,IAAI;AAAA,UAC1BA,EAAgB,MAAM,IAAI;AAAA,UAC1BW,EAAkB,SAAS;AAAA,QAAA;AAAA,QAE7B,IAAIE;AAAA,UACFb,EAAgB,MAAM,IAAI;AAAA,UAC1BA,EAAgB,MAAM,IAAI;AAAA,UAC1BW,EAAkB,WAAW;AAAA,QAAA;AAAA,MAC/B;AAAA,MAEF,OAAO;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,kBAAkB;AAAA;AAAA,MAEhB;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOE,EAAG,iBAAiB,qBAAqB,gBAAgB;AAAA,MAAA;AAAA,MAElE;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA,EAAG,iBAAiB,qBAAqB,gBAAgB;AAAA,MAAA;AAAA,MAElE;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA,EAAG,eAAe,mBAAmB,cAAc;AAAA,MAAA;AAAA,MAE5D;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA,EAAG,cAAc,kBAAkB,aAAa;AAAA,MAAA;AAAA,MAEzD;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA,EAAG,oBAAoB,mBAAmB,qBAAqB;AAAA,MAAA;AAAA,MAExE;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,MAEF;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA;AAAA;AAAA;AAAA,QAIP,OAAOA;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA;AAAA,MAGF;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA,EAAG,kBAAkB,kBAAkB,iBAAiB;AAAA,MAAA;AAAA,MAEjE;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA,EAAG,kBAAkB,kBAAkB,iBAAiB;AAAA,MAAA;AAAA,MAEjE;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA,EAAG,kBAAkB,gBAAgB,eAAe;AAAA,MAAA;AAAA,MAE7D;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA,EAAG,kBAAkB,eAAe,cAAc;AAAA,MAAA;AAAA,MAE3D;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA,EAAG,kBAAkB,uBAAuB,mBAAmB;AAAA,MAAA;AAAA,MAExE;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA,EAAG,kBAAkB,qBAAqB,eAAe;AAAA,MAAA;AAAA,MAElE;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAOA;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,IAAA;AAAA,EACT;AAEJ,GAEMW,KAAQC;AAAA,EACZC,EAAwC,SACtCC,GASAC,GACA;AAVA,QAAAC,IAAAF,GACE;AAAA,eAAAlB,IAAU;AAAA,MACV,MAAAnB,IAAO;AAAA,MACP,OAAAwC,IAAQ;AAAA,MACR,WAAAC,IAAY;AAAA,MACZ,UAAAC;AAAA,MACA,cAAcC;AAAA,QANhBJ,GAOKR,IAAAa,EAPLL,GAOK;AAAA,MANH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAMM,IAAUtB,EAAGU,GAAc,EAAE,SAAAd,GAAS,MAAAnB,GAAM,OAAAwC,GAAO,GAAGC,CAAS;AAOrE,QAAIK;AACJ,QAAIH;AACF,MAAAG,IAAkBH;AAAA,aACT,OAAOD,KAAa;AAC7B,MAAAI,IAAkBJ;AAAA,aAElB,OAAOA,KAAa,YACpBA,MAAa,QACb,WAAWA,GACX;AACA,YAAMK,IAAcL,EAAgD;AACpE,MAAIK,KAAA,QAAAA,EAAY,YAAY,OAAOA,EAAW,YAAa,aACzDD,IAAkBC,EAAW;AAAA,IAEjC;AAEA,WACE,gBAAAC;AAAA,MAAC;AAAA,MAAAC,EAAAC,EAAA;AAAA,QACC,KAAAZ;AAAA,QACA,MAAK;AAAA,QACL,cAAYQ;AAAA,QACZ,WAAWD;AAAA,SACPd,IALL;AAAA,QAOE,UAAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP,CAAC;AACH;AAEAR,GAAM,cAAc;AC3OpB,SAASiB,GAAOb,GAAK1B,GAAO;AAC1B,MAAI,OAAO0B,KAAQ;AACjB,WAAOA,EAAI1B,CAAK;AACX,EAAI0B,KAAQ,SACjBA,EAAI,UAAU1B;AAElB;AACA,SAASwC,MAAeC,GAAM;AAC5B,SAAO,CAACC,MAAS;AACf,QAAIC,IAAa;AACjB,UAAMC,IAAWH,EAAK,IAAI,CAACf,MAAQ;AACjC,YAAMmB,IAAUN,GAAOb,GAAKgB,CAAI;AAChC,aAAI,CAACC,KAAc,OAAOE,KAAW,eACnCF,IAAa,KAERE;AAAA,IACT,CAAC;AACD,QAAIF;AACF,aAAO,MAAM;AACX,iBAASG,IAAI,GAAGA,IAAIF,EAAS,QAAQE,KAAK;AACxC,gBAAMD,IAAUD,EAASE,CAAC;AAC1B,UAAI,OAAOD,KAAW,aACpBA,EAAO,IAEPN,GAAOE,EAAKK,CAAC,GAAG,IAAI;AAAA,QAExB;AAAA,MACF;AAAA,EAEJ;AACF;AC5BA,IAAIC,KAAkB,uBAAO,IAAI,YAAY,GACzCC,IAAMC,EAAM,QAAQ,KAAI,EAAG,SAAQ,CAAE;AACzC,SAASC,GAAclD,GAAO;AAC5B,SAAO,OAAOA,KAAU,YAAYA,MAAU,QAAQ,UAAUA;AAClE;AACA,SAASmD,GAAgBC,GAAS;AAChC,SAAOA,KAAW,QAAQ,OAAOA,KAAY,YAAY,cAAcA,KAAWA,EAAQ,aAAaL,MAAmB,cAAcK,KAAWF,GAAcE,EAAQ,QAAQ;AACnL;AAAA;AAEA,SAASC,GAAWC,GAAW;AAC7B,QAAMC,IAA4B,gBAAAC,GAAgBF,CAAS,GACrDG,IAAQR,EAAM,WAAW,CAAC9B,GAAOuC,MAAiB;AACtD,QAAiCjC,IAAAN,GAA3B,YAAAW,MAA2BL,GAAdkC,IAAA3B,EAAcP,GAAd,CAAb;AACN,IAAI0B,GAAgBrB,CAAQ,KAAK,OAAOkB,KAAQ,eAC9ClB,IAAWkB,EAAIlB,EAAS,QAAQ;AAElC,UAAM8B,IAAgBX,EAAM,SAAS,QAAQnB,CAAQ,GAC/C+B,IAAYD,EAAc,KAAKE,EAAW;AAChD,QAAID,GAAW;AACb,YAAME,IAAaF,EAAU,MAAM,UAC7BG,IAAcJ,EAAc,IAAI,CAACK,MACjCA,MAAUJ,IACRZ,EAAM,SAAS,MAAMc,CAAU,IAAI,IAAUd,EAAM,SAAS,KAAK,IAAI,IAClEA,EAAM,eAAec,CAAU,IAAIA,EAAW,MAAM,WAAW,OAE/DE,CAEV;AACD,aAAuB,gBAAA7B,EAAImB,GAAWlB,EAAAC,EAAA,IAAKqB,IAAL,EAAgB,KAAKD,GAAc,UAAUT,EAAM,eAAec,CAAU,IAAId,EAAM,aAAac,GAAY,QAAQC,CAAW,IAAI,OAAM;AAAA,IACpL;AACA,WAAuB,gBAAA5B,EAAImB,GAAWlB,EAAAC,EAAA,IAAKqB,IAAL,EAAgB,KAAKD,GAAc,UAAA5B,IAAU;AAAA,EACrF,CAAC;AACD,SAAA2B,EAAM,cAAc,GAAGH,CAAS,SACzBG;AACT;AACA,IAAIS,KAAuB,gBAAAb,GAAW,MAAM;AAAA;AAE5C,SAASG,GAAgBF,GAAW;AAClC,QAAMC,IAAYN,EAAM,WAAW,CAAC9B,GAAOuC,MAAiB;AAC1D,QAAiCjC,IAAAN,GAA3B,YAAAW,MAA2BL,GAAdkC,IAAA3B,EAAcP,GAAd,CAAb;AAIN,QAHI0B,GAAgBrB,CAAQ,KAAK,OAAOkB,KAAQ,eAC9ClB,IAAWkB,EAAIlB,EAAS,QAAQ,IAE9BmB,EAAM,eAAenB,CAAQ,GAAG;AAClC,YAAMqC,IAAcC,GAActC,CAAQ,GACpCuC,IAASC,GAAWX,GAAW7B,EAAS,KAAK;AACnD,aAAIA,EAAS,SAASmB,EAAM,aAC1BoB,EAAO,MAAMX,IAAelB,GAAYkB,GAAcS,CAAW,IAAIA,IAEhElB,EAAM,aAAanB,GAAUuC,CAAM;AAAA,IAC5C;AACA,WAAOpB,EAAM,SAAS,MAAMnB,CAAQ,IAAI,IAAImB,EAAM,SAAS,KAAK,IAAI,IAAI;AAAA,EAC1E,CAAC;AACD,SAAAM,EAAU,cAAc,GAAGD,CAAS,cAC7BC;AACT;AACA,IAAIgB,KAAuB,uBAAO,iBAAiB;AAWnD,SAAST,GAAYG,GAAO;AAC1B,SAAOhB,EAAM,eAAegB,CAAK,KAAK,OAAOA,EAAM,QAAS,cAAc,eAAeA,EAAM,QAAQA,EAAM,KAAK,cAAcM;AAClI;AACA,SAASD,GAAWX,GAAWxB,GAAY;AACzC,QAAMqC,IAAgBlC,EAAA,IAAKH;AAC3B,aAAWsC,KAAYtC,GAAY;AACjC,UAAMuC,IAAgBf,EAAUc,CAAQ,GAClCE,IAAiBxC,EAAWsC,CAAQ;AAE1C,IADkB,WAAW,KAAKA,CAAQ,IAEpCC,KAAiBC,IACnBH,EAAcC,CAAQ,IAAI,IAAIG,MAAS;AACrC,YAAMC,IAASF,EAAe,GAAGC,CAAI;AACrC,aAAAF,EAAc,GAAGE,CAAI,GACdC;AAAA,IACT,IACSH,MACTF,EAAcC,CAAQ,IAAIC,KAEnBD,MAAa,UACtBD,EAAcC,CAAQ,IAAInC,IAAA,IAAKoC,IAAkBC,KACxCF,MAAa,gBACtBD,EAAcC,CAAQ,IAAI,CAACC,GAAeC,CAAc,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAEtF;AACA,SAAOrC,IAAA,IAAKqB,IAAca;AAC5B;AACA,SAASJ,GAAchB,GAAS;;AAC9B,MAAI0B,KAASrD,IAAA,OAAO,yBAAyB2B,EAAQ,OAAO,KAAK,MAApD,gBAAA3B,EAAuD,KAChEsD,IAAUD,KAAU,oBAAoBA,KAAUA,EAAO;AAC7D,SAAIC,IACK3B,EAAQ,OAEjB0B,KAASnD,IAAA,OAAO,yBAAyByB,GAAS,KAAK,MAA9C,gBAAAzB,EAAiD,KAC1DoD,IAAUD,KAAU,oBAAoBA,KAAUA,EAAO,gBACrDC,IACK3B,EAAQ,MAAM,MAEhBA,EAAQ,MAAM,OAAOA,EAAQ;AACtC;ACfA,MAAM4B,KAAejE;AAAA;AAAA,EAEnBJ;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACApB,EAAe,MAAM;AAAA,IACrBO,EAAgB,MAAM,KAAK;AAAA,EAAA;AAAA,EAE7B;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAASa;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,UAAUA;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,QAAQA;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,MAEF,MAAM;AAAA,QACJ,IAAIA;AAAA,UACFb,EAAgB,MAAM,IAAI;AAAA,UAC1BA,EAAgB,MAAM,IAAI;AAAA,UAC1BW,EAAkB,SAAS;AAAA,QAAA;AAAA,QAE7B,IAAIE;AAAA,UACFb,EAAgB,MAAM,IAAI;AAAA,UAC1BA,EAAgB,MAAM,IAAI;AAAA,UAC1BW,EAAkB,WAAW;AAAA,QAAA;AAAA,QAE/B,IAAIE;AAAA,UACFb,EAAgB,MAAM,IAAI;AAAA,UAC1BA,EAAgB,MAAM,IAAI;AAAA,UAC1BW,EAAkB,MAAM;AAAA,QAAA;AAAA,MAC1B;AAAA,MAEF,UAAU;AAAA,QACR,MAAME;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,OAAO;AAAA,MAAA;AAAA,MAET,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,kBAAkB;AAAA,MAChB;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OAAO;AAAA;AAAA,MAAA;AAAA,MAET;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OAAO;AAAA;AAAA,MAAA;AAAA,MAET;AAAA,QACE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OAAO;AAAA;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,UAAU;AAAA,MACV,UAAU;AAAA,IAAA;AAAA,EACZ;AAEJ,GAEMsE,KAAOzD,EAAsC,SAAcL,GAAOO,GAAK;AAC3E,QAAM;AAAA,IACJ,UAAAI;AAAA,IACA,SAAAvB,IAAU;AAAA,IACV,MAAAnB,IAAO;AAAA,IACP,UAAA8F,IAAW;AAAA,IACX,UAAAC,IAAW;AAAA,IACX,WAAAtD,IAAY;AAAA,IACZ,cAAcE;AAAA,IACd,UAAAqD;AAAA,IACA,SAAAC,IAAU;AAAA,EAAA,IACRlE,GAoBEe,KAjBqB,MAA0B;AACnD,QAAIH,EAAW,QAAOA;AACtB,QAAI,OAAOD,KAAa,SAAU,QAAOA;AAEzC,QACE,OAAOA,KAAa,YACpBA,MAAa,QACb,WAAWA,GACX;AACA,YAAMK,IAAcL,EAAgD;AACpE,UAAIK,KAAA,QAAAA,EAAY,YAAY,OAAOA,EAAW,YAAa;AACzD,eAAOA,EAAW;AAAA,IAEtB;AAAA,EAEF,GAEwB;AAiBxB,MAAIkD;AACF,WACE,gBAAAjD;AAAA,MAAC8B;AAAA,MAAA;AAAA,QACC,KAAAxC;AAAA,QACA,WAAWf;AAAA,UACTqE,GAAa,EAAE,SAAAzE,GAAS,MAAAnB,GAAM,UAAA8F,GAAU,UAAAC,GAAU;AAAA,UAClDtD;AAAA,QAAA;AAAA,QAEF,cAAYE;AAAA,QACZ,iBAAeoD,KAAY;AAAA,QAC3B,UAAAC;AAAA,QAEC,UAAAtD;AAAA,MAAA;AAAA,IAAA;AAOP,QAAM,EAAE,UAAAwD,GAAU,SAAAC,EAAA,IAAYpE,GA8BxBqE,IAAiBD,MAAY,QAC7BE,IAAcD,KAAkB,CAACL,GAOjCO,IAAgB,CAACC,MAA8C;AACnE,IAAIR,MACAQ,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAA,GACFJ,KAAA,QAAAA;AAAA,EAEJ;AAEA,SACE,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAlE;AAAA,MACA,WAAWf;AAAA,QACTqE,GAAa,EAAE,SAAAzE,GAAS,MAAAnB,GAAM,UAAA8F,GAAU,UAAAC,GAAU;AAAA,QAClDG,KAAYxF,EAAgB,MAAM,IAAI;AAAA,QACtC+B;AAAA,MAAA;AAAA,MAEF,iBAAesD;AAAA,MAEd,UAAA;AAAA,QAAAK,IACC,gBAAApD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS+C,IAAW,SAAYI;AAAA,YAChC,WAAWG;AAAA,YACX,UAAAP;AAAA,YACA,gBAAcD,IAAW,KAAO;AAAA,YAChC,cAAYnD,KAAaG;AAAA,YACzB,UACEkD,MAAa,SAAYA,IAAWK,IAAc,IAAI;AAAA,YAExD,WAAW9E;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACAb,EAAgB,QAAQ,GAAG;AAAA,cAC3B;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACAP,EAAe,MAAM;AAAA,YAAA;AAAA,YAGtB,UAAAuC;AAAA,UAAA;AAAA,QAAA,IAGH,gBAAAM,EAAC,QAAA,EAAM,UAAAN,GAAS;AAAA,QAEjBwD,KAAY,CAACH,KACZ,gBAAA/C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,CAACuD,MAAM;AACd,cAAAA,EAAE,gBAAA,GACFL,EAAA;AAAA,YACF;AAAA,YACA,WAAW3E;AAAA,cACTb,EAAgB,MAAM,IAAI;AAAA,cAC1B;AAAA,cACAP,EAAe,MAAM;AAAA,cACrBO,EAAgB,MAAM,GAAG;AAAA,cACzB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,YAEF,cAAY,UAAUoC,KAAmB,MAAM;AAAA,YAE/C,UAAA,gBAAAE,EAACyD,IAAA,EAAE,WAAU,WAAU,eAAY,OAAA,CAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAC5C;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;AAEDZ,GAAK,cAAc;ACtVnB,SAAwBa,GAAarE,GAKf;AALe,MAAAE,IAAAF,GACnC;AAAA,aAAAsE;AAAA,IACA,IAAAC;AAAA,IACA,WAAAnE,IAAY;AAAA,MAHuBF,GAIhCR,IAAAa,EAJgCL,GAIhC;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMsE,IAAc;AAAA,IAClBnG,EAAgB,MAAM,IAAI;AAAA,IAC1BW,EAAkB,WAAW;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACAX,EAAgB,MAAM,KAAK;AAAA,EAAA,GAGvBmC,IAAUtB,EAAG,GAAGsF,GAAapE,CAAS;AAE5C,SACE,gBAAA+D,EAAC,OAAAvD,EAAAC,EAAA,EAAI,MAAK,SAAQ,IAAA0D,GAAQ,WAAW/D,GAAS,aAAU,YAAad,IAApE,EACC,UAAA;AAAA,IAAA,gBAAAiB,EAAC8D,IAAA,EAAY,WAAU,oBAAmB,eAAY,QAAO;AAAA,IAC7D,gBAAA9D,EAAC,UAAM,UAAA2D,EAAA,CAAQ;AAAA,EAAA,IACjB;AAEJ;ACpCA,SAAwBI,GAAK1E,GAIf;AAJe,MAAAE,IAAAF,GAC3B;AAAA,aAAAlB,IAAU;AAAA,IACV,WAAAsB;AAAA,MAF2BF,GAGxBR,IAAAa,EAHwBL,GAGxB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,QAAMP,IAAiB;AAAA,IACrB,SAAST,EAAG,iBAAiB,qBAAqB,gBAAgB;AAAA,IAClE,OAAOA,EAAG,eAAe,mBAAmB,cAAc;AAAA,IAC1D,MAAMA,EAAG,cAAc,kBAAkB,aAAa;AAAA,EAAA;AAGxD,SACE,gBAAAyB;AAAA,IAAC;AAAA,IAAAE,EAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW3B;AAAA,QACT;AAAA,QACAb,EAAgB,QAAQ,IAAI;AAAA,QAC5BA,EAAgB,MAAM,IAAI;AAAA,QAC1BP,EAAe,IAAI;AAAA,QACnB6B,EAAeb,CAAO;AAAA,QACtBsB;AAAA,MAAA;AAAA,OAEEV;AAAA,EAAA;AAGV;ACpBA,MAAMiF,KAAmBzF;AAAA,EACvB;AAAA,EACAF,EAAkB,OAAO;AAAA,EACzBC,EAAoB,OAAO;AAAA,EAC3B;AACF,GAEM2F,KAAqE;AAAA,EACzE,SAAS;AAAA,EACT,UAAU1F;AAAA,IACR;AAAA,IACA,SAASb,EAAgB,OAAO,IAAI,CAAC;AAAA,IACrC;AAAA,EAAA;AAAA,EAEF,UAAUa;AAAA,IACR;AAAA,IACA,SAASb,EAAgB,MAAM,IAAI,CAAC;AAAA,IACpC;AAAA,IACA;AAAA,EAAA;AAEJ,GAeMwG,KAAQ/E;AAAA,EACZC,EAAoC,SAClCC,GACAC,GACA;AAFA,QAAAC,IAAAF,GAAE,WAAAlB,IAAU,WAAW,WAAAsB,IAAY,IAAI,UAAAC,MAAvCH,GAAoDR,IAAAa,EAApDL,GAAoD,CAAlD,WAAqB,aAAgB;AAGvC,UAAMM,IAAUtB;AAAA,MACdyF;AAAA,MACAC,GAAoB9F,CAAO;AAAA,MAC3BsB;AAAA,IAAA;AAGF,6BACG,SAAAQ,EAAAC,EAAA,EAAM,KAAAZ,GAAU,WAAWO,KAAad,IAAxC,EACE,UAAAW,IACH;AAAA,EAEJ,CAAC;AACH;AAEAwE,GAAM,cAAc;ACpDpB,SAASC,EACPC,GACAC,GACAhH,GACY;AACZ,QAAMiH,IAAMC,GAASH,CAAG,GAClBI,IAAMC,GAASL,CAAG;AACxB,SAAO;AAAA,IACL,KAAAA;AAAA,IACA,KAAAE;AAAA,IACA,KAAAE;AAAA,IACA,QAAQ,eAAeH,CAAM,IAAIhH,CAAK;AAAA,IACtC,UAAU,GAAGgH,CAAM,IAAIhH,CAAK;AAAA,EAAA;AAEhC;AAEA,SAASkH,GAASH,GAAqB;AACrC,QAAM3B,IAAS,4CAA4C,KAAK2B,CAAG;AACnE,SAAK3B,IACE,GAAG,SAASA,EAAO,CAAC,GAAG,EAAE,CAAC,KAAK,SAASA,EAAO,CAAC,GAAG,EAAE,CAAC,KAAK,SAASA,EAAO,CAAC,GAAG,EAAE,CAAC,KADrE;AAEtB;AAEA,SAASgC,GAASL,GAAqB;AACrC,QAAM3B,IAAS,4CAA4C,KAAK2B,CAAG;AACnE,MAAI,CAAC3B,EAAQ,QAAO;AAEpB,QAAMiC,IAAI,SAASjC,EAAO,CAAC,GAAG,EAAE,IAAI,KAC9BkC,IAAI,SAASlC,EAAO,CAAC,GAAG,EAAE,IAAI,KAC9BmC,IAAI,SAASnC,EAAO,CAAC,GAAG,EAAE,IAAI,KAE9BoC,IAAM,KAAK,IAAIH,GAAGC,GAAGC,CAAC,GACtBE,IAAM,KAAK,IAAIJ,GAAGC,GAAGC,CAAC;AAC5B,MAAIG,IAAI,GACJC,IAAI;AACR,QAAMC,KAAKJ,IAAMC,KAAO;AAExB,MAAID,MAAQC,GAAK;AACf,UAAMI,IAAIL,IAAMC;AAEhB,YADAE,IAAIC,IAAI,MAAMC,KAAK,IAAIL,IAAMC,KAAOI,KAAKL,IAAMC,IACvCD,GAAA;AAAA,MACN,KAAKH;AACH,QAAAK,MAAMJ,IAAIC,KAAKM,KAAKP,IAAIC,IAAI,IAAI,MAAM;AACtC;AAAA,MACF,KAAKD;AACH,QAAAI,MAAMH,IAAIF,KAAKQ,IAAI,KAAK;AACxB;AAAA,MACF,KAAKN;AACH,QAAAG,MAAML,IAAIC,KAAKO,IAAI,KAAK;AACxB;AAAA,IAAA;AAAA,EAEN;AAEA,SAAO,GAAG,KAAK,MAAMH,IAAI,GAAG,CAAC,KAAK,KAAK,MAAMC,IAAI,GAAG,CAAC,MAAM,KAAK,MAAMC,IAAI,GAAG,CAAC;AAChF;AAMMd,EAAiB,WAAW,iBAAiB,EAAE,GAC9CA,EAAiB,WAAW,iBAAiB,GAAG,GAChDA,EAAiB,WAAW,iBAAiB,GAAG,GAChDA,EAAiB,WAAW,iBAAiB,GAAG,GAChDA,EAAiB,WAAW,iBAAiB,GAAG,GAChDA,EAAiB,WAAW,iBAAiB,GAAG,GAChDA,EAAiB,WAAW,iBAAiB,GAAG,GAChDA,EAAiB,WAAW,iBAAiB,GAAG,GAChDA,EAAiB,WAAW,iBAAiB,GAAG,GAChDA,EAAiB,WAAW,iBAAiB,GAAG,GAChDA,EAAiB,WAAW,iBAAiB,GAAG;AAOjDA,EAAiB,WAAW,mBAAmB,EAAE,GAChDA,EAAiB,WAAW,mBAAmB,GAAG,GAClDA,EAAiB,WAAW,mBAAmB,GAAG,GAClDA,EAAiB,WAAW,mBAAmB,GAAG,GAClDA,EAAiB,WAAW,mBAAmB,GAAG,GAClDA,EAAiB,WAAW,mBAAmB,GAAG,GAClDA,EAAiB,WAAW,mBAAmB,GAAG,GAClDA,EAAiB,WAAW,mBAAmB,GAAG,GAClDA,EAAiB,WAAW,mBAAmB,GAAG,GAClDA,EAAiB,WAAW,mBAAmB,GAAG,GAClDA,EAAiB,WAAW,mBAAmB,GAAG;AChFzD,SAASgB,EACPf,GACAgB,GACA/H,GACY;AACZ,QAAMiH,IAAMC,GAASH,CAAG,GAClBI,IAAMC,GAASL,CAAG;AACxB,SAAO;AAAA,IACL,KAAAA;AAAA,IACA,KAAAE;AAAA,IACA,KAAAE;AAAA,IACA,QAAQ,eAAeY,CAAS,IAAI/H,CAAK;AAAA,IACzC,UAAU,GAAG+H,CAAS,IAAI/H,CAAK;AAAA,EAAA;AAEnC;AAKA,SAASkH,GAASH,GAAqB;AACrC,QAAM3B,IAAS,4CAA4C,KAAK2B,CAAG;AACnE,SAAK3B,IACE,GAAG,SAASA,EAAO,CAAC,GAAG,EAAE,CAAC,KAAK,SAASA,EAAO,CAAC,GAAG,EAAE,CAAC,KAAK,SAASA,EAAO,CAAC,GAAG,EAAE,CAAC,KADrE;AAEtB;AAKA,SAASgC,GAASL,GAAqB;AACrC,QAAM3B,IAAS,4CAA4C,KAAK2B,CAAG;AACnE,MAAI,CAAC3B,EAAQ,QAAO;AAEpB,QAAMiC,IAAI,SAASjC,EAAO,CAAC,GAAG,EAAE,IAAI,KAC9BkC,IAAI,SAASlC,EAAO,CAAC,GAAG,EAAE,IAAI,KAC9BmC,IAAI,SAASnC,EAAO,CAAC,GAAG,EAAE,IAAI,KAE9BoC,IAAM,KAAK,IAAIH,GAAGC,GAAGC,CAAC,GACtBE,IAAM,KAAK,IAAIJ,GAAGC,GAAGC,CAAC;AAC5B,MAAIG,IAAI,GACJC,IAAI;AACR,QAAMC,KAAKJ,IAAMC,KAAO;AAExB,MAAID,MAAQC,GAAK;AACf,UAAMI,IAAIL,IAAMC;AAEhB,YADAE,IAAIC,IAAI,MAAMC,KAAK,IAAIL,IAAMC,KAAOI,KAAKL,IAAMC,IACvCD,GAAA;AAAA,MACN,KAAKH;AACH,QAAAK,MAAMJ,IAAIC,KAAKM,KAAKP,IAAIC,IAAI,IAAI,MAAM;AACtC;AAAA,MACF,KAAKD;AACH,QAAAI,MAAMH,IAAIF,KAAKQ,IAAI,KAAK;AACxB;AAAA,MACF,KAAKN;AACH,QAAAG,MAAML,IAAIC,KAAKO,IAAI,KAAK;AACxB;AAAA,IAAA;AAAA,EAEN;AAEA,SAAO,GAAG,KAAK,MAAMH,IAAI,GAAG,CAAC,KAAK,KAAK,MAAMC,IAAI,GAAG,CAAC,MAAM,KAAK,MAAMC,IAAI,GAAG,CAAC;AAChF;AAMME,EAAY,WAAW,UAAU,EAAE,GAClCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG;AAOrCA,EAAY,WAAW,UAAU,EAAE,GAClCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG;AAOrCA,EAAY,WAAW,QAAQ,EAAE,GAChCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG;AAOnCA,EAAY,WAAW,SAAS,EAAE,GACjCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG;AAOpCA,EAAY,WAAW,QAAQ,EAAE,GAChCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG;AAOnCA,EAAY,WAAW,WAAW,EAAE,GACnCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG;AAOtCA,EAAY,WAAW,SAAS,EAAE,GACjCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG;AAOpCA,EAAY,WAAW,SAAS,EAAE,GACjCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG,GACnCA,EAAY,WAAW,SAAS,GAAG;AAOpCA,EAAY,WAAW,UAAU,EAAE,GAClCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG;AAOrCA,EAAY,WAAW,UAAU,EAAE,GAClCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG;AAOrCA,EAAY,WAAW,QAAQ,EAAE,GAChCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG;AAOnCA,EAAY,WAAW,OAAO,EAAE,GAC/BA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG;AAOlCA,EAAY,WAAW,OAAO,EAAE,GAC/BA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG,GACjCA,EAAY,WAAW,OAAO,GAAG;AAOlCA,EAAY,WAAW,QAAQ,EAAE,GAChCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG;AAOnCA,EAAY,WAAW,WAAW,EAAE,GACnCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG,GACrCA,EAAY,WAAW,WAAW,GAAG;AAOtCA,EAAY,WAAW,QAAQ,EAAE,GAChCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG;AAOnCA,EAAY,WAAW,UAAU,EAAE,GAClCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG,GACpCA,EAAY,WAAW,UAAU,GAAG;AAOrCA,EAAY,WAAW,QAAQ,EAAE,GAChCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG;AAOnCA,EAAY,WAAW,QAAQ,EAAE,GAChCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG,GAClCA,EAAY,WAAW,QAAQ,GAAG;AChYlC,MAAME,EAAmB;AAAA;AAAA;AAAA;AAAA,EAI9B,OAAO,OAAOrI,GAA+B;AA6C3C,WAzCI;AAAA,MACF,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,IAAI;AAAA,QACF,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,IAAI;AAAA,QACF,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,IAAI;AAAA,QACF,OACE;AAAA,QACF,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,IAAI;AAAA,QACF,OACE;AAAA,QACF,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,OAAO;AAAA,QACL,OACE;AAAA,QACF,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,OAAO;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,IACf,EAGeA,CAAI;AAAA,EACvB;AACF;AAKO,MAAMsI,KAAgB;AAAA,EAC3B,MAAMD,EAAmB,OAAO,MAAM;AAAA,EACtC,IAAIA,EAAmB,OAAO,IAAI;AAAA,EAClC,IAAIA,EAAmB,OAAO,IAAI;AAAA,EAClC,IAAIA,EAAmB,OAAO,IAAI;AAAA,EAClC,IAAIA,EAAmB,OAAO,IAAI;AAAA,EAClC,OAAOA,EAAmB,OAAO,KAAK;AAAA,EACtC,OAAOA,EAAmB,OAAO,OAAO;AAC1C;AAYO,SAASE,EAAevI,GAA0C;AACvE,SAAOsI,GAActI,CAAI,EAAE;AAC7B;ACzEO,MAAMwI,EAAmB;AAAA;AAAA;AAAA;AAAA,EAI9B,OAAO,YAAYC,GAA0C;AAwB3D,UAAMxI,IAvBkE;AAAA,MACtE,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,QAAQ;AAAA,QACN,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,IACZ,EAGsBwI,CAAK;AAC7B,WAAO;AAAA,MACL,OAAOxI,EAAO;AAAA,MACd,IAAI,GAAGA,EAAO,EAAE;AAAA,MAChB,UAAUA,EAAO;AAAA,IAAA;AAAA,EAErB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,OAAOwI,GAAoBjG,IAAqB,SAAsB;AAC3E,WAAO;AAAA,MACL,OAAO,KAAK,YAAYiG,CAAK;AAAA,MAC7B,OAAAjG;AAAA,MACA,aAAa,GAAGiG,CAAK,IAAIjG,CAAK;AAAA,IAAA;AAAA,EAElC;AACF;AAMQgG,EAAmB,OAAO,MAAM,GAChCA,EAAmB,OAAO,MAAM,GAChCA,EAAmB,OAAO,MAAM,GAC9BA,EAAmB,OAAO,QAAQ,GACnCA,EAAmB,OAAO,OAAO,GAE5BA,EAAmB,OAAO,QAAQ,QAAQ,GAC1CA,EAAmB,OAAO,QAAQ,QAAQ,GAE1CA,EAAmB,OAAO,QAAQ,QAAQ,GAC1CA,EAAmB,OAAO,QAAQ,QAAQ;ACjEjD,MAAME,EAAuB;AAAA;AAAA;AAAA;AAAA,EAIlC,OAAO,OAAOC,GAAuC;AAYnD,UAAM1I,IARF;AAAA,MACF,IAAI,EAAE,UAAU,KAAK,UAAU,KAAA;AAAA,MAC/B,IAAI,EAAE,UAAU,KAAK,UAAU,KAAA;AAAA,MAC/B,IAAI,EAAE,UAAU,MAAM,UAAU,KAAA;AAAA,MAChC,IAAI,EAAE,UAAU,MAAM,UAAU,KAAA;AAAA,MAChC,OAAO,EAAE,UAAU,MAAM,UAAU,MAAA;AAAA,IAAM,EAGd0I,CAAI;AACjC,WAAO;AAAA,MACL,MAAAA;AAAA,MACA,UAAU1I,EAAO;AAAA,MACjB,IAAI,GAAGA,EAAO,QAAQ;AAAA,MACtB,KAAK,GAAGA,EAAO,WAAW,EAAE;AAAA,MAC5B,UAAUA,EAAO;AAAA,IAAA;AAAA,EAErB;AACF;AAMMyI,EAAuB,OAAO,IAAI,GAClCA,EAAuB,OAAO,IAAI,GAClCA,EAAuB,OAAO,IAAI,GAClCA,EAAuB,OAAO,IAAI,GAC/BA,EAAuB,OAAO,KAAK;ACtBrC,MAAME,EAAsB;AAAA;AAAA;AAAA;AAAA,EAIjC,OAAO,OACLC,GACAC,IAAyB,eACT;AAChB,UAAMC,IAGF;AAAA,MACF,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,IACZ,GAGIC,IAGF;AAAA,MACF,WAAW;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,YAAY;AAAA,QACV,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,eAAe;AAAA,QACb,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,IACf;AAGF,WAAO;AAAA,MACL,UAAUD,EAAYF,CAAQ;AAAA,MAC9B,QAAQG,EAAUF,CAAM;AAAA,IAAA;AAAA,EAE5B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,iBACLG,GACAJ,IAA8B,QAC9BC,IAAyB,eACR;AACjB,UAAMI,IAAgB,KAAK,OAAOL,GAAUC,CAAM,GAC5CK,IAAa,MAAM,QAAQF,CAAQ,IAAIA,EAAS,KAAK,IAAI,IAAIA,GAC7DG,IAAkB;AAAA,MACtBF,EAAc,SAAS;AAAA,MACvBA,EAAc,OAAO;AAAA,IAAA,EACrB,KAAK,GAAG;AAEV,WAAO;AAAA,MACL,UAAUC;AAAA,MACV,UAAUD,EAAc,SAAS;AAAA,MACjC,gBAAgBA,EAAc,OAAO;AAAA,MACrC,UAAUE;AAAA,IAAA;AAAA,EAEd;AACF;AAMQR,EAAsB,OAAO,MAAM,GACnCA,EAAsB,OAAO,MAAM,GACnCA,EAAsB,OAAO,MAAM,GACjCA,EAAsB,OAAO,QAAQ,GAGrCA,EAAsB;AAAA,EAC5B,CAAC,SAAS,oBAAoB,cAAc;AAAA,EAC5C;AAAA,GAEOA,EAAsB,iBAAiB,WAAW,MAAM,GACtDA,EAAsB,iBAAiB,aAAa,MAAM,GAChEA,EAAsB,iBAAiB,OAAO,MAAM;AChHpD,MAAMS,EAAmB;AAAA;AAAA;AAAA;AAAA,EAI9B,OAAO,OAAOC,GAAiC;AAoD7C,WAhDI;AAAA,MACF,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,UAAU;AAAA,QACR,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,OAAO;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,kBAAkB;AAAA,QAChB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,OAAO;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,SAAS;AAAA,QACP,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,SAAS;AAAA,QACP,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,OAAO;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,IACf,EAGcA,CAAK;AAAA,EACvB;AACF;AAMQD,EAAmB,OAAO,MAAM,GAC5BA,EAAmB,OAAO,UAAU,GACtCA,EAAmB,OAAO,QAAQ,GACnCA,EAAmB,OAAO,OAAO,GACtBA,EAAmB,OAAO,gBAAgB,GACrDA,EAAmB,OAAO,OAAO,GAC/BA,EAAmB,OAAO,SAAS,GACnCA,EAAmB,OAAO,SAAS,GACrCA,EAAmB,OAAO,OAAO;ACjEnC,MAAME,EAAoB;AAAA;AAAA;AAAA;AAAA,EAI/B,OAAO,OAAO3I,GAAmC;AAC/C,UAAM4I,IAAU5I,IAAQ,KAElB6I,IAA+C;AAAA,MACnD,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,KAAK;AAAA,IAAA;AAsBP,WAAO;AAAA,MACL,OAAA7I;AAAA,MACA,SAAA4I;AAAA,MACA,UArBgD;AAAA,QAChD,GAAG;AAAA,QACH,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,KAAK;AAAA,MAAA,EAMiB5I,CAAK;AAAA,MAC3B,aAAa6I,EAAe7I,CAAK;AAAA,IAAA;AAAA,EAErC;AACF;AAMe2I,EAAoB,OAAO,CAAC,GACpCA,EAAoB,OAAO,CAAC,GAC3BA,EAAoB,OAAO,EAAE,GAC7BA,EAAoB,OAAO,EAAE,GAC7BA,EAAoB,OAAO,EAAE,GAC7BA,EAAoB,OAAO,EAAE,GAC7BA,EAAoB,OAAO,EAAE,GAC7BA,EAAoB,OAAO,EAAE,GAC7BA,EAAoB,OAAO,EAAE,GAC7BA,EAAoB,OAAO,EAAE,GAC7BA,EAAoB,OAAO,EAAE,GAC7BA,EAAoB,OAAO,EAAE,GAC7BA,EAAoB,OAAO,EAAE,GAC7BA,EAAoB,OAAO,EAAE,GAC3BA,EAAoB,OAAO,GAAG;ACtDxC,MAAMG,KAAwB/H,EAAI,UAAU;AAAA,EAC1C,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAEF,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAEb,CAAC,GAEKgI,KAAsBhI,EAAI,kBAAkB;AAAA,EAChD,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAEF,iBAAiB;AAAA,IACf,SAAS;AAAA,EAAA;AAEb,CAAC,GAEKiI,KAAWxH,EAA0C,SACzDC,GAWAC,GACA;AAZA,MAAAC,IAAAF,GACE;AAAA,WAAAzB;AAAA,IACA,KAAAiH,IAAM;AAAA,IACN,SAAA1G,IAAU;AAAA,IACV,MAAAnB,IAAO;AAAA,IACP,WAAA6J,IAAY;AAAA,IACZ,OAAAC;AAAA,IACA,cAAcnH;AAAA,IACd,WAAAF,IAAY;AAAA,MARdF,GASKR,IAAAa,EATLL,GASK;AAAA,IARH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAKF,QAAMwH,IAAkBnJ,MAAU,QAC5BoJ,IAAaD,IACf,SACA,KAAK,IAAI,KAAK,IAAKnJ,IAAQiH,IAAO,KAAK,CAAC,GAAG,GAAG,GAE5CoC,IACJtH,MACCoH,IACG,wBACA,aAAaC,KAAA,gBAAAA,EAAY,QAAQ,EAAE;AAEzC,SACE,gBAAAxD,EAAC,aAAI,KAAAlE,GAAU,WAAWf,EAAG,UAAUkB,CAAS,KAAOV,MACpD,UAAA;AAAA,IAAA8H,MAAcC,KAAS,CAACC,MACvB,gBAAAvD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWjF;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACAb,EAAgB,MAAM,IAAI;AAAA,QAAA;AAAA,QAG3B,UAAA;AAAA,UAAAoJ,KACC,gBAAA9G;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWzB;AAAA,gBACTF,EAAkB,WAAW;AAAA,gBAC7BC,EAAoB,OAAO;AAAA,gBAC3B;AAAA,cAAA;AAAA,cAGD,UAAAwI;AAAA,YAAA;AAAA,UAAA;AAAA,UAGJ,CAACC,KAAmBC,MAAe,UAClC,gBAAAxD;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWjF;AAAA,gBACTF,EAAkB,WAAW;AAAA,gBAC7B;AAAA,cAAA;AAAA,cAGD,UAAA;AAAA,gBAAA2I,EAAW,QAAQ,CAAC;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACzB;AAAA,MAAA;AAAA,IAAA;AAAA,IAIN,gBAAAhH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,iBAAe+G,IAAkB,SAAY;AAAA,QAC7C,iBAAeA,IAAkB,SAAYlC;AAAA,QAC7C,iBAAekC,IAAkB,SAAYnJ;AAAA,QAC7C,cAAYqJ;AAAA,QACZ,aAAWF;AAAA,QACX,WAAWxI;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACAmI,GAAsB,EAAE,MAAA1J,GAAM,SAAAmB,GAAS;AAAA,UACvChB,EAAe,MAAM;AAAA,QAAA;AAAA,QAGtB,UAAA4J,IACC,gBAAA/G;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWzB;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACAoI,GAAoB,EAAE,SAAAxI,GAAS;AAAA,cAC/BhB,EAAe,MAAM;AAAA,cACrB;AAAA,YAAA;AAAA,YAEF,OAAO;AAAA,cACL,OAAO;AAAA,cACP,WAAW;AAAA,YAAA;AAAA,UACb;AAAA,QAAA,IAGF,gBAAA6C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWzB;AAAA,cACT;AAAA,cACAoI,GAAoB,EAAE,SAAAxI,GAAS;AAAA,cAC/BhB,EAAe,MAAM;AAAA,cACrB;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,YAEF,OAAO;AAAA,cACL,OAAO,GAAG6J,CAAU;AAAA,YAAA;AAAA,YAEtB,eAAY;AAAA,UAAA;AAAA,QAAA;AAAA,MACd;AAAA,IAAA;AAAA,EAEJ,IACF;AAEJ,CAAC;AAEDJ,GAAS,cAAc;AC/KvB,MAAMM,KAA8B;AAAA,EAClC,YAAY;AAAA,EACZ,UAAU;AACZ,GAEMC,KAA0B;AAAA,EAC9B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AACV,GAEMC,KAAYjI,EAAK,SAAmBE,GAKvB;AALuB,MAAAE,IAAAF,GACxC;AAAA,iBAAAgI,IAAc;AAAA,IACd,SAAAlJ,IAAU;AAAA,IACV,WAAAsB,IAAY;AAAA,MAH4BF,GAIrCR,IAAAa,EAJqCL,GAIrC;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMM,IAAUtB;AAAA,IACd;AAAA,IACA;AAAA,IACA2I,GAA4BG,CAAW;AAAA,IACvCF,GAAwBhJ,CAAO;AAAA,IAC/BsB;AAAA,EAAA;AAGF,SAAI4H,MAAgB,aAEhB,gBAAArH;AAAA,IAAC;AAAA,IAAAE,EAAA;AAAA,MACC,WAAWL;AAAA,MACX,MAAK;AAAA,MACL,oBAAiB;AAAA,OACZd;AAAA,EAAA,IAMT,gBAAAiB;AAAA,IAAC;AAAA,IAAAE,EAAA;AAAA,MACC,WAAWL;AAAA,MACX,MAAK;AAAA,MACL,oBAAiB;AAAA,OACbd;AAAA,EAAA;AAGV,CAAC;AAEDqI,GAAU,cAAc;AChDxB,SAAwBE,GAASjI,GAQf;AARe,MAAAE,IAAAF,GAC/B;AAAA,aAAAlB,IAAU;AAAA,IACV,OAAAsH;AAAA,IACA,QAAA3H;AAAA,IACA,OAAAyJ,IAAQ;AAAA,IACR,WAAA9H,IAAY;AAAA,IACZ,cAAcE;AAAA,MANiBJ,GAO5BR,IAAAa,EAP4BL,GAO5B;AAAA,IANH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMsE,IAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACA1G,EAAe,IAAI;AAAA,EAAA,GAGf6B,IAGF;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ7B,EAAe,MAAM;AAAA,EAAA,GAGzB0C,IAAUtB,EAAG,GAAGsF,GAAa7E,EAAeb,CAAO,GAAGsB,CAAS,GAE/DD,IAA6B,CAAA;AACnC,EAAIiG,QAAa,QAAQA,IACrB3H,QAAc,SAASA;AAE3B,QAAMmJ,IAAmBtH,KAAa,WAAWxB,CAAO;AAExD,SAAIA,MAAY,UAAUoJ,IAAQ,IAE9B,gBAAAvH;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,WAAWxC,EAAgB,MAAM,SAAS;AAAA,MAC1C,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAYuJ;AAAA,OACRlI,IALL;AAAA,MAOE,UAAA,MAAM,KAAK,EAAE,QAAQwI,GAAO,EAAE,IAAI,CAACC,GAAGC,MACrC,gBAAAzH;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAWH;AAAA,UACX,OAAO4H,MAAUF,IAAQ,IAAI,EAAE,OAAO,UAAU/H;AAAA,UAChD,eAAY;AAAA,QAAA;AAAA,QAHPiI;AAAA,MAAA,CAKR;AAAA,IAAA;AAAA,EAAA,IAML,gBAAAzH;AAAA,IAAC;AAAA,IAAAE,EAAA;AAAA,MACC,WAAWL;AAAA,MACX,OAAAL;AAAA,MACA,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAYyH;AAAA,OACRlI;AAAA,EAAA;AAGV;ACzDA,MAAM2I,KAAkB/I,EAAI,4BAA4B;AAAA,EACtD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAEb,CAAC,GAEKgJ,KAAUxI,EAAK,SAAiBE,GAMrB;AANqB,MAAAE,IAAAF,GACpC;AAAA,UAAArC,IAAO;AAAA,IACP,SAAAmB,IAAU;AAAA,IACV,OAAA2I;AAAA,IACA,WAAArH,IAAY;AAAA,MAJwBF,GAKjCR,IAAAa,EALiCL,GAKjC;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE,gBAAAiE;AAAA,IAAC;AAAA,IAAAvD,EAAAC,EAAA;AAAA,MACC,WAAW3B,EAAG,eAAe,gBAAgBkB,CAAS;AAAA,MACtD,MAAK;AAAA,MACL,cAAYqH,KAAS;AAAA,MACrB,aAAU;AAAA,OACN/H,IALL;AAAA,MAOC,UAAA;AAAA,QAAA,gBAAAiB;AAAA,UAAC4H;AAAA,UAAA;AAAA,YACC,WAAWrJ,EAAGmJ,GAAgB,EAAE,MAAA1K,GAAM,SAAAmB,EAAA,CAAS,CAAC;AAAA,YAChD,eAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAEb2I,KACC,gBAAA9G;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWzB;AAAA,cACTb,EAAgB,MAAM,IAAI;AAAA,cAC1BW,EAAkB,WAAW;AAAA,cAC7B;AAAA,cACA;AAAA,YAAA;AAAA,YAGD,UAAAyI;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;AAEDa,GAAQ,cAAc;AC7DtB,MAAME,KAGF;AAAA,EACF,SAAS;AAAA;AAAA,IAEP,OAAO;AAAA,IACP,SAAS;AAAA;AAAA,IAET,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAAA,EAEZ,WAAW;AAAA;AAAA,IAET,OAAO;AAAA,IACP,SAAS;AAAA;AAAA,IAET,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAAA,EAEZ,SAAS;AAAA;AAAA,IAEP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAAA,EAEZ,SAAS;AAAA;AAAA,IAEP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAAA,EAEZ,OAAO;AAAA;AAAA,IAEL,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAAA,EAEZ,MAAM;AAAA;AAAA,IAEJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAAA,EAEZ,SAAS;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAEd;AAwBA,SAASC,GACPzI,GAUAC,GACA;AAXA,MAAAC,IAAAF,GACE;AAAA,aAAAlB,IAAU;AAAA,IACV,MAAA4J;AAAA,IACA,QAAAC;AAAA,IACA,WAAAvI;AAAA,IACA,IAAAwI;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,YAAAC,IAAa;AAAA,MAPf5I,GAQK6I,IAAAxI,EARLL,GAQK;AAAA,IAPH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAKF,QAAM8I,IAAuB,CAAA;AAC7B,MAAIC;AAEJ,MAAIL;AACF,IAAAK,IAAML;AAAA;AAEN,YAAQ9J,GAAA;AAAA,MACN,KAAK;AACH,QAAAmK,IAAM;AACN;AAAA,MACF,KAAK;AACH,QAAAA,IAAM;AACN;AAAA,MAEF;AACE,QAAAA,IAAM;AACN;AAAA,IAAA;AAKN,SAAInK,MAAY,YACdkK,EAAW,KAAKnK,EAAqB,IAAI,CAAC,IACjCC,MAAY,UAAUA,MAAY,cAC3CkK,EAAW,KAAKnK,EAAqB,MAAM,CAAC,IACnCC,MAAY,cACrBkK,EAAW,KAAKnK,EAAqB,WAAW,CAAC,IACxCC,MAAY,cACrBkK,EAAW,KAAKnK,EAAqB,WAAW,CAAC,IACxCC,MAAY,YACrBkK,EAAW,KAAKnK,EAAqB,SAAS,CAAC,IACtCC,MAAY,UACrBkK,EAAW,KAAKnK,EAAqB,OAAO,CAAC,IAG7CmK,EAAW,KAAKnK,EAAqB,MAAM,CAAC,GAI1C6J,KACFM,EAAW,KAAK,WAAW,GAGzBL,KACFK,EAAW,KAAK,QAAQ,GAM1BA,EAAW,KAAKR,GAAmBK,CAAS,EAAEC,CAAU,CAAC,GAElD,gBAAAnI,EAACsI,GAAApI,EAAA,EAAI,KAAAZ,GAAU,WAAWf,EAAG,GAAG8J,GAAY5I,CAAS,KAAO2I,EAAM;AAC3E;AAGA,MAAMG,KAAOnJ,EAAW0I,EAAa,GChJ/BU,KAAkB;AAAA,EACtB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,MAAM;AACR,GAYaC,KAAY5H,GAAM;AAAA,EAC7B,CACExB,GASAC,MACG;AAVH,QAAAC,IAAAF,GACE;AAAA,iBAAAI;AAAA,MACA,UAAAiJ,IAAW;AAAA,MACX,UAAAC,IAAW;AAAA,MACX,UAAAC,IAAW;AAAA,MACX,QAAAC,IAAS;AAAA,MACT,UAAAnJ;AAAA,QANFH,GAOKR,IAAAa,EAPLL,GAOK;AAAA,MANH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,WACE,gBAAAS;AAAA,MAAC;AAAA,MAAAC,EAAAC,EAAA;AAAA,QACC,KAAAZ;AAAA,QACA,WAAWf;AAAA,UACT;AAAA,UACAiK,GAAgBE,CAAQ;AAAA,UACxBhL,EAAgBiL,GAAU,IAAI;AAAA,UAC9BjL,EAAgBkL,GAAU,IAAI;AAAA,UAC9BC,KAAU;AAAA,UACVpJ;AAAA,QAAA;AAAA,SAEEV,IAVL;AAAA,QAYE,UAAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA+I,GAAU,cAAc;ACxCjB,MAAMK,KAAQjI,GAAM;AAAA,EACzB,CACExB,GASAC,MACG;AAVH,QAAAC,IAAAF,GACE;AAAA,iBAAAI;AAAA,MACA,SAAAsJ,IAAU;AAAA,MACV,OAAAC,IAAQ;AAAA,MACR,SAAAC,IAAU;AAAA,MACV,WAAAtL,IAAY;AAAA,MACZ,UAAA+B;AAAA,QANFH,GAOKR,IAAAa,EAPLL,GAOK;AAAA,MANH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM2J,IACJvL,MAAc,WACVD,EAAgBqL,GAAS,OAAO,IAChCrL,EAAgBqL,GAAS,OAAO,GAEhCI,IAAe;AAAA,MACnB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,SAAS;AAAA,IAAA,GAGLC,IAAiB;AAAA,MACrB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,QAAQ;AAAA,IAAA;AAGV,WACE,gBAAApJ;AAAA,MAAC;AAAA,MAAAC,EAAAC,EAAA;AAAA,QACC,KAAAZ;AAAA,QACA,WAAWf;AAAA,UACT;AAAA,UACAZ,MAAc,WAAW,aAAa;AAAA,UACtCuL;AAAA,UACAC,EAAaH,CAAK;AAAA,UAClBI,EAAeH,CAAO;AAAA,UACtBxJ;AAAA,QAAA;AAAA,SAEEV,IAVL;AAAA,QAYE,UAAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEAoJ,GAAM,cAAc;ACtDpB,SAAwBO,GAAWhK,GAKzB;AALyB,MAAAE,IAAAF,GACjC;AAAA,WAAAiK;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,WAAA9J,IAAY;AAAA,MAHqBF,GAI9BR,IAAAa,EAJ8BL,GAI9B;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMsE,IAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACAnG,EAAgB,MAAM,SAAS;AAAA,IAC/BW,EAAkB,WAAW;AAAA,EAAA,GAGzBwB,IAAUtB,EAAG,GAAGsF,GAAapE,CAAS;AAE5C,2BACG,OAAAQ,EAAAC,EAAA,EAAI,cAAW,cAAa,WAAWL,KAAad,IAApD,EACC,UAAA,gBAAAiB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWzB,EAAG,QAAQ,gBAAgBb,EAAgB,MAAM,SAAS,CAAC;AAAA,MAErE,UAAA4L,EAAM,IAAI,CAACE,GAAM/B,MAAU;AAC1B,cAAMgC,IAAShC,MAAU6B,EAAM,SAAS;AAExC,eACE,gBAAA9F,EAAC,MAAA,EAAe,WAAU,qBACvB,UAAA;AAAA,UAAAiE,IAAQ,KACP,gBAAAzH;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWzB;AAAA,gBACTb,EAAgB,MAAM,IAAI;AAAA,gBAC1B;AAAA,cAAA;AAAA,cAEF,eAAY;AAAA,cAEX,UAAA6L;AAAA,YAAA;AAAA,UAAA;AAAA,UAGJE,IACC,gBAAAzJ;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWzB;AAAA,gBACT;AAAA,gBACAD,EAAoB,OAAO;AAAA,cAAA;AAAA,cAE7B,gBAAa;AAAA,cAEZ,UAAAkL,EAAK;AAAA,YAAA;AAAA,UAAA,IAENA,EAAK,OACP,gBAAAxJ;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAMwJ,EAAK;AAAA,cACX,WAAWjL;AAAA,gBACT;AAAA,gBACA;AAAA,gBACAb,EAAgB,MAAM,IAAI;AAAA,gBAC1BA,EAAgB,MAAM,IAAI;AAAA,gBAC1B;AAAA,gBACA;AAAA,gBACAW,EAAkB,WAAW;AAAA,gBAC7BC,EAAoB,OAAO;AAAA,gBAC3B;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,cAGD,UAAAkL,EAAK;AAAA,YAAA;AAAA,UAAA,IAGR,gBAAAxJ,EAAC,QAAA,EAAK,WAAU,qBAAqB,YAAK,MAAA,CAAM;AAAA,QAAA,EAAA,GA3C3CyH,CA6CT;AAAA,MAEJ,CAAC;AAAA,IAAA;AAAA,EAAA,IAEL;AAEJ;ACxGO,SAASiC,GAAWrK,GAAoD;AAApD,MAAAE,IAAAF,GAAE,YAAAK,GAAU,WAAAD,MAAZF,GAA0BR,IAAAa,EAA1BL,GAA0B,CAAxB,YAAU;AACrC,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,WAAW3B;AAAA,QACT;AAAA,QACAb,EAAgB,OAAO,KAAK;AAAA,QAC5BA,EAAgB,QAAQ,IAAI;AAAA,QAC5B;AAAA,QACA;AAAA,QACA+B;AAAA,MAAA;AAAA,OAEEV,IATL;AAAA,MAWE,UAAAW;AAAA,IAAA;AAAA,EAAA;AAGP;ACCO,SAASiK,GAAUtK,GAOP;AAPO,MAAAE,IAAAF,GACxB;AAAA,cAAAK;AAAA,IACA,MAAAkK;AAAA,IACA,OAAAC;AAAA,IACA,IAAIC,IAAK;AAAA,IACT,WAAArK;AAAA,MALwBF,GAMrBR,IAAAa,EANqBL,GAMrB;AAAA,IALH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE,gBAAAiE;AAAA,IAACsG;AAAA,IAAA7J,EAAAC,EAAA;AAAA,MACC,WAAW3B;AAAA,QACT;AAAA,QACA;AAAA,QACAb,EAAgB,MAAM,KAAK;AAAA,QAC3B+B;AAAA,MAAA;AAAA,OAEEV,IAPL;AAAA,MASE,UAAA;AAAA,QAAA6K,IAAO,gBAAA5J,EAAC,QAAA,EAAK,WAAU,wBAAwB,aAAK,IAAU;AAAA,QAC/D,gBAAAA,EAAC,UAAM,UAAAN,GAAS;AAAA,QACfmK,IAAQ,gBAAA7J,EAAC,QAAA,EAAK,WAAU,eAAe,aAAM,IAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG9D;ACzCO,SAAS+J,GAAa1K,GAIP;AAJO,MAAAE,IAAAF,GAC3B;AAAA,cAAAK;AAAA,IACA,WAAAD;AAAA,MAF2BF,GAGxBR,IAAAa,EAHwBL,GAGxB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,SACE,gBAAAS,EAAC,WAAE,WAAWzB,EAAG,6BAA6BkB,CAAS,KAAOV,MAC3D,UAAAW,IACH;AAEJ;ACMO,SAASsK,GAAY3K,GAIP;AAJO,MAAAE,IAAAF,GAC1B;AAAA,cAAAK;AAAA,IACA,WAAAD;AAAA,MAF0BF,GAGvBR,IAAAa,EAHuBL,GAGvB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,qBAAkB;AAAA,MAClB,WAAW3B;AAAA,QACT;AAAA,QACAb,EAAgB,MAAM,KAAK;AAAA,QAC3B+B;AAAA,MAAA;AAAA,OAEEV,IAPL;AAAA,MASE,UAAAW;AAAA,IAAA;AAAA,EAAA;AAGP;AClCO,SAASuK,GAAS5K,GAAkD;AAAlD,MAAAE,IAAAF,GAAE,YAAAK,GAAU,WAAAD,MAAZF,GAA0BR,IAAAa,EAA1BL,GAA0B,CAAxB,YAAU;AACnC,SACE,gBAAAS,EAAC,aAAI,WAAWzB,EAAGkB,CAAS,KAAOV,MAChC,UAAAW,IACH;AAEJ;ACmDA,SAASwK,GAAc7K,GAUT;AAVS,MAAAE,IAAAF,GACrB;AAAA,aAAAlB,IAAU;AAAA,IACV,SAAAgM,IAAU;AAAA,IACV,WAAA1K,IAAY;AAAA,IACZ,SAAA0D;AAAA,IACA,cAAcxD;AAAA,IACd,mBAAmByK;AAAA,IACnB,WAAAC,IAAY;AAAA,IACZ,UAAA3K;AAAA,MARqBH,GASlBR,IAAAa,EATkBL,GASlB;AAAA,IARH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,EACE,OAAO,WAAY,eACnB,QAAQ,IAAI,aAAa,gBACzB8K,KACA,CAAC1K,KACD,CAACyK,KAED,QAAQ;AAAA,IACN;AAAA,EAAA;AAIJ,QAAME,IAAe3L;AAAA,IACnBJ;AAAA,MACE;AAAA,MACApB,EAAe,IAAI;AAAA,MACnB;AAAA,MACA;AAAA,MACAoI,EAAe,IAAI;AAAA,IAAA;AAAA,IAErB;AAAA,MACE,UAAU;AAAA,QACR,SAAS;AAAA,UACP,SAAS;AAAA,UACT,OAAOhH;AAAA,YACL,SAASgH,EAAe,IAAI,CAAC;AAAA,YAC7B;AAAA,YACA;AAAA,UAAA;AAAA,UAEF,UAAUhH,EAAG,qBAAqBgH,EAAe,IAAI,CAAC;AAAA,QAAA;AAAA,QAExD,SAAS;AAAA,UACP,MAAM;AAAA,UACN,OAAO7H,EAAgB,MAAM,GAAG;AAAA,UAChC,QAAQA,EAAgB,QAAQ,GAAG;AAAA,UACnC,OAAOA,EAAgB,MAAM,GAAG;AAAA,QAAA;AAAA,MAClC;AAAA,MAEF,iBAAiB;AAAA,QACf,SAAS;AAAA,QACT,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF,GAUI6M,IAAgBpH,MAAY,QAC5BqH,IAAOD,IAAgB,WAAW,QAClCvH,IAAWuH,IAAgB,IAAI,QAE/B1K,IAAUtB,EAAG+L,EAAa,EAAE,SAAAnM,GAAS,SAAAgM,EAAA,CAAS,GAAG1K,CAAS,GAY1DgL,IAAcvK,EAAA;AAAA,IAClB,WAAWL;AAAA,IACX,MAAA2K;AAAA,IACA,UAAAxH;AAAA,IACA,SAAAG;AAAA,IACA,WAAWoH,IAfS,CAAChH,MAAwC;AAC7D,MAAIgH,MAAkBhH,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACnDA,EAAE,eAAA,GACFJ,KAAA,QAAAA;AAAA,IAEJ,IAU6C;AAAA,IAC3C,cAAcxD;AAAA,IACd,mBAAmByK;AAAA,KAChBrL;AAGL,SAAIsL,IACK,gBAAArK,EAAC,WAAAC,EAAAC,EAAA,IAAYuK,IAAZ,EAA0B,UAAA/K,EAAA,EAAS,IAEtC,gBAAAM,EAAC,OAAAC,EAAAC,EAAA,IAAQuK,IAAR,EAAsB,UAAA/K,EAAA,EAAS;AACzC;AAEA,MAAMgL,KAAWvL,EAAK+K,EAAa;AACnCQ,GAAS,cAAc;AAYvB,MAAMC,IAAOD;AACbC,EAAK,SAASjB;AACdiB,EAAK,QAAQhB;AACbgB,EAAK,WAAWZ;AAChBY,EAAK,UAAUX;AACfW,EAAK,OAAOV;ACzKL,SAASW,GAAavL,GAIP;AAJO,MAAAE,IAAAF,GAC3B;AAAA,cAAAK;AAAA,IACA,WAAAD,IAAY;AAAA,MAFeF,GAGxBR,IAAAa,EAHwBL,GAGxB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,WAAW,iBAAiBxC,EAAgB,OAAO,SAAS,CAAC,IAAIA,EAAgB,MAAM,GAAG,CAAC,IAAIA,EAAgB,QAAQ,IAAI,CAAC,IAAI+B,CAAS;AAAA,OACrIV,IAFL;AAAA,MAIE,UAAAW;AAAA,IAAA;AAAA,EAAA;AAGP;ACbO,SAASmL,GAAaxL,GAIP;AAJO,MAAAE,IAAAF,GAC3B;AAAA,cAAAK;AAAA,IACA,WAAAD,IAAY;AAAA,MAFeF,GAGxBR,IAAAa,EAHwBL,GAGxB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,WAAW,uDAAuDxC,EAAgB,MAAM,SAAS,CAAC,IAAIA,EAAgB,MAAM,GAAG,CAAC,IAAIA,EAAgB,QAAQ,IAAI,CAAC,IAAI+B,CAAS;AAAA,OAC1KV,IAFL;AAAA,MAIE,UAAAW;AAAA,IAAA;AAAA,EAAA;AAGP;ACDA,SAAwBoL,GAAazL,GAIf;AAJe,MAAAE,IAAAF,GACnC;AAAA,cAAAK;AAAA,IACA,WAAAD,IAAY;AAAA,MAFuBF,GAGhCR,IAAAa,EAHgCL,GAGhC;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,WAAW;AAAA,UACPxC,EAAgB,MAAM,GAAG,CAAC;AAAA;AAAA;AAAA,UAG1B+B,CAAS;AAAA;AAAA,OAETV,IAPL;AAAA,MASE,UAAAW;AAAA,IAAA;AAAA,EAAA;AAGP;ACjBA,SAAwBqL,GAAa1L,GAIf;AAJe,MAAAE,IAAAF,GACnC;AAAA,cAAAK;AAAA,IACA,WAAAD,IAAY;AAAA,MAFuBF,GAGhCR,IAAAa,EAHgCL,GAGhC;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,WAAW;AAAA,UACPxC,EAAgB,MAAM,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,UAK1BA,EAAgB,MAAM,KAAK,CAAC;AAAA,UAC5B+B,CAAS;AAAA;AAAA,OAETV,IAVL;AAAA,MAYE,UAAAW;AAAA,IAAA;AAAA,EAAA;AAGP;ACHO,SAASsL,GAAc,EAAE,UAAAtL,GAAU,WAAAD,KAAiC;AACzE,SACE,gBAAAO;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWzB;AAAA,QACT;AAAA,QACAb,EAAgB,MAAM,KAAK;AAAA,QAC3B+B;AAAA,MAAA;AAAA,MAGD,UAAAC;AAAA,IAAA;AAAA,EAAA;AAGP;ACZO,SAASuL,GAAiB;AAAA,EAC/B,UAAAvL;AAAA,EACA,WAAAD;AACF,GAA0B;AACxB,SACE,gBAAAO;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWzB;AAAA,QACT;AAAA,QACAb,EAAgB,QAAQ,KAAK;AAAA,QAC7B;AAAA;AAAA,QACA+B;AAAA,MAAA;AAAA,MAEF,cAAW;AAAA,MAEV,UAAAC;AAAA,IAAA;AAAA,EAAA;AAGP;ACxCA,SAAwBwL,GAAc7L,GAGf;AAHe,MAAAE,IAAAF,GACpC;AAAA,eAAAI,IAAY;AAAA,MADwBF,GAEjCR,IAAAa,EAFiCL,GAEjC;AAAA,IADH;AAAA;AAGA,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAAE,EAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW;AAAA;AAAA;AAAA,UAGPxC,EAAgB,MAAM,IAAI,CAAC;AAAA,UAC3B+B,CAAS;AAAA;AAAA,OAETV;AAAA,EAAA;AAGV;ACbA,SAAwBoM,GAAgB9L,GAIf;AAJe,MAAAE,IAAAF,GACtC;AAAA,iBAAAgI,IAAc;AAAA,IACd,WAAA5H,IAAY;AAAA,MAF0BF,GAGnCR,IAAAa,EAHmCL,GAGnC;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,SAAI8H,MAAgB,aAEhB,gBAAArH;AAAA,IAAC;AAAA,IAAAE,EAAA;AAAA,MACC,WAAW3B,EAAG,QAAQ,OAAO,mBAAmB,WAAWkB,CAAS;AAAA,MACpE,MAAK;AAAA,MACL,oBAAiB;AAAA,OACbV;AAAA,EAAA,IAMR,gBAAAiB;AAAA,IAAC;AAAA,IAAAE,EAAA;AAAA,MACC,WAAW3B;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACAb,EAAgB,MAAM,IAAI;AAAA;AAAA,QAC1B;AAAA;AAAA,QACA+B;AAAA,MAAA;AAAA,MAEF,MAAK;AAAA,MACL,oBAAiB;AAAA,MACjB,OAAO;AAAA;AAAA,QAEL,YAAY;AAAA,QACZ,WAAW;AAAA,MAAA;AAAA,OAETV;AAAA,EAAA;AAGV;ACtCA,MAAMqM,KAAqBzM;AAAA;AAAA,EAEzBJ,EAAG,UAAU,QAAQ,YAAYb,EAAgB,MAAM,KAAK,CAAC;AAAA,EAC7D;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAASa,EAAGb,EAAgB,QAAQ,IAAI,CAAC;AAAA,QACzC,SAASa,EAAGb,EAAgB,MAAM,IAAI,CAAC;AAAA,MAAA;AAAA,IACzC;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAoBO,SAAS2N,GAAWhM,GAQP;AARO,MAAAE,IAAAF,GACzB;AAAA,WAAAiM;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAtN,IAAU;AAAA,IACV,WAAAsB;AAAA,MANyBF,GAOtBR,IAAAa,EAPsBL,GAOtB;AAAA,IANH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE,gBAAAiE,EAAC,OAAAvD,EAAAC,EAAA,EAAI,WAAW3B,EAAG6M,GAAmB,EAAE,SAAAjN,EAAA,CAAS,GAAGsB,CAAS,KAAOV,IAAnE,EAEE,UAAA;AAAA,IAAAyM,KAAcA,EAAW,SAAS,KAAK,gBAAAxL,EAACqJ,IAAA,EAAW,OAAOmC,GAAY;AAAA,IAGvE,gBAAAhI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,oCAAoC9F,EAAgB,QAAQ,KAAK,CAAC;AAAA,QAG7E,UAAA;AAAA,UAAA,gBAAA8F,EAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,YAAA,gBAAAxD;AAAA,cAACuI;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,IAAG;AAAA,gBACH,WAAW,GAAG7K,EAAgB,MAAM,IAAI,CAAC;AAAA,gBAExC,UAAA4N;AAAA,cAAA;AAAA,YAAA;AAAA,YAEFC,KACC,gBAAAvL,EAACuI,IAAA,EAAK,SAAQ,QAAO,WAAU,qBAC5B,UAAAgD,EAAA,CACH;AAAA,UAAA,GAEJ;AAAA,UAGCE,KACC,gBAAAzL;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW,qBAAqBtC,EAAgB,MAAM,KAAK,CAAC;AAAA,cAE3D,UAAA+N;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ,IACF;AAEJ;ACrCA,MAAMtC,KAA0C;AAAA,EAC9C,OAAO;AAAA,EACP,QAAQ;AACV,GAEMuC,KAA4C;AAAA,EAChD,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAkDO,SAASC,GAAKtM,GASP;AATO,MAAAE,IAAAF,GACnB;AAAA,WAAAzB;AAAA,IACA,OAAAkJ;AAAA,IACA,MAAA8E;AAAA,IACA,MAAAhC;AAAA,IACA,OAAAZ,IAAQ;AAAA,IACR,MAAA6C,IAAO;AAAA,IACP,WAAApM;AAAA,MAPmBF,GAQhBR,IAAAa,EARgBL,GAQhB;AAAA,IAPH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMuM,IAAUlO,KAAU;AAE1B,SACE,gBAAA4F;AAAA,IAAC;AAAA,IAAAvD,EAAAC,EAAA;AAAA,MACC,WAAW3B;AAAA,QACT;AAAA,QACAb,EAAgB,QAAQ,GAAG;AAAA,QAC3BA,EAAgB,MAAM,OAAO;AAAA,QAC7ByL,GAAaH,CAAK;AAAA,QAClBvJ;AAAA,MAAA;AAAA,OAEEV,IARL;AAAA,MAUE,UAAA;AAAA,QAAA6K,IACC,gBAAA5J,EAAC,QAAA,EAAK,WAAU,iCAAiC,aAAK,IACpD;AAAA,QACH8L,IACC,gBAAA9L;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,cAAW;AAAA,YACX,WAAU;AAAA,YACX,UAAA;AAAA,UAAA;AAAA,QAAA,IAID,gBAAAA,EAAC,QAAA,EAAK,WAAU,wDACb,UAAApC,GACH;AAAA,QAEF,gBAAAoC,EAAC,QAAA,EAAK,WAAU,6BAA6B,UAAA8G,GAAM;AAAA,QAClD8E,IACC,gBAAA5L,EAAC,QAAA,EAAK,WAAWzB,EAAG,WAAWmN,GAAgBG,CAAI,CAAC,GAAI,UAAAD,EAAA,CAAK,IAC3D;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV;ACjIA,MAAMG,KAA4C;AAAA,EAChD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AA0CO,SAASC,GAAU3M,GAMP;AANO,MAAAE,IAAAF,GACxB;AAAA,YAAA4M,IAAS;AAAA,IACT,MAAAC,IAAO;AAAA,IACP,WAAAzM;AAAA,IACA,UAAAC;AAAA,MAJwBH,GAKrBR,IAAAa,EALqBL,GAKrB;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM4M,IAASF,MAAW;AAE1B,SACE,gBAAAjM;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,WAAW3B;AAAA,QACT;AAAA,QACApB,EAAe,IAAI;AAAA,QACnBgP,IAAS,oBAAoBJ,GAAWG,CAAI,CAAC,KAAK;AAAA,QAClDzM;AAAA,MAAA;AAAA,OAEEV,IAPL;AAAA,MASE,UAAAW;AAAA,IAAA;AAAA,EAAA;AAGP;ACnFA,SAAwB0M,GAEtB/M,GAA8D;AAA9D,MAAAE,IAAAF,GAAE,UAAAgN,GAAQ,KAAAC,GAAK,WAAA7M,IAAY,OAA3BF,GAAkCR,IAAAa,EAAlCL,GAAkC,CAAhC,UAAQ,OAAK;AACf,QAAM3B,IAAQyO,EAAO,OAAOC,IAAMA,EAAID,EAAO,GAAc,IAAI;AAE/D,SACE,gBAAArM;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,WAAW,GAAGxC,EAAgB,MAAM,IAAI,CAAC,IAAIA,EAAgB,QAAQ,IAAI,CAAC,8CACxE2O,EAAO,iBAAiB,yBAAyB,EACnD,IAAI5M,CAAS;AAAA,OACTV,IAJL;AAAA,MAME,UAAAsN,EAAO,SAASA,EAAO,OAAOzO,GAAO0O,CAAG,IAAI,OAAO1O,KAAA,OAAAA,IAAS,EAAE;AAAA,IAAA;AAAA,EAAA;AAGrE;ACOA,SAAwB2O,GAAS;AAAA,EAC/B,OAAAjD;AAAA,EACA,aAAAjC,IAAc;AAAA,EACd,WAAA5H,IAAY;AACd,GAAkB;AAChB,SAAI4H,MAAgB,eAEhB,gBAAArH,EAAC,OAAA,EAAI,WAAW,oBAAoBP,CAAS,IAC1C,UAAA6J,EAAM,IAAI,CAACE,GAAM/B,MAAU;AAC1B,UAAM+E,IACJhD,EAAK,WACJ/B,MAAU,IACP,WACAA,IAAQ6B,EAAM,UAAU,CAAC5I,MAAMA,EAAE,WAAW,QAAQ,IAClD,cACA,YACF+I,IAAShC,MAAU6B,EAAM,SAAS;AAExC,6BACG,OAAA,EAAkB,WAAU,2BAC3B,UAAA,gBAAA9F,EAAC,OAAA,EAAI,WAAU,qCAEb,UAAA;AAAA,MAAA,gBAAAxD;AAAA,QAAC;AAAA,QAAAC,EAAAC,EAAA,IAGMsM,MAAW,YACZ,EAAE,eAAe,UAAA,IACjB,CAAA,IALL;AAAA,UAMC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMTrP,EAAe,MAAM,CAAC;AAAA;AAAA,oBAGtBqP,MAAW,cACP,8CACAA,MAAW,WACT,8DACAA,MAAW,UACT,0CACA,yDACV;AAAA;AAAA,UAGC,UAAAhD,EAAK,SACHgD,MAAW,gCACTC,IAAA,EAAa,WAAU,WAAU,IAElChF,IAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,MAKb,CAACgC,KACA,gBAAAzJ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW;AAAA;AAAA;AAAA,wBAGPtC,EAAgB,MAAM,IAAI,CAAC;AAAA,wBAC3B8O,MAAW,cAAc,eAAe,kBAAkB;AAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAMlE,gBAAAhJ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,GAAG9F,EAAgB,QAAQ,IAAI,CAAC,gBAAgBA,EAAgB,QAAQ,IAAI,CAAC;AAAA,UAEvF,UAAA;AAAA,YAAA8L,EAAK,aACJ,gBAAAxJ;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,4BAA4BtC,EAAgB,MAAM,IAAI,CAAC;AAAA,gBAEjE,UAAA8L,EAAK;AAAA,cAAA;AAAA,YAAA;AAAA,YAGV,gBAAAxJ,EAAC,MAAA,EAAG,WAAU,yCACX,YAAK,OACR;AAAA,YACCwJ,EAAK,eACJ,gBAAAxJ;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,6BAA6BtC,EAAgB,MAAM,IAAI,CAAC;AAAA,gBAElE,UAAA8L,EAAK;AAAA,cAAA;AAAA,YAAA;AAAA,YAGTA,EAAK,WACJ,gBAAAxJ,EAAC,OAAA,EAAI,WAAWtC,EAAgB,MAAM,IAAI,GACvC,UAAA8L,EAAK,QAAA,CACR;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ,GACF,EAAA,GA3EQA,EAAK,EA4Ef;AAAA,EAEJ,CAAC,EAAA,CACH,IAMF,gBAAAxJ,EAAC,OAAA,EAAI,WAAW,GAAGtC,EAAgB,QAAQ,SAAS,CAAC,IAAI+B,CAAS,IAC/D,UAAA6J,EAAM,IAAI,CAACE,GAAM/B,MAAU;AAC1B,UAAM+E,IACJhD,EAAK,WACJ/B,MAAU,IACP,WACAA,IAAQ6B,EAAM,UAAU,CAAC5I,MAAMA,EAAE,WAAW,QAAQ,IAClD,cACA,YACF+I,IAAShC,MAAU6B,EAAM,SAAS;AAExC,WACE,gBAAA9F;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAW,oBAAoB9F,EAAgB,QAAQ,KAAK,CAAC;AAAA,QAG7D,UAAA;AAAA,UAAA,gBAAA8F,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,YAAA,gBAAAxD;AAAA,cAAC;AAAA,cAAAC,EAAAC,EAAA,IAGMsM,MAAW,YAAY,EAAE,eAAe,UAAA,IAAc,CAAA,IAH5D;AAAA,gBAIC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMTrP,EAAe,MAAM,CAAC;AAAA;AAAA,kBAGtBqP,MAAW,cACP,8CACAA,MAAW,WACT,8DACAA,MAAW,UACT,0CACA,yDACV;AAAA;AAAA,gBAGC,UAAAhD,EAAK,SACHgD,MAAW,gCACTC,IAAA,EAAa,WAAU,WAAU,IAElChF,IAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,YAGb,CAACgC,KACA,gBAAAzJ;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW;AAAA;AAAA;AAAA;AAAA,sBAIPtC,EAAgB,MAAM,IAAI,CAAC;AAAA,sBAC3B8O,MAAW,cAAc,eAAe,kBAAkB;AAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAEhE,GAEJ;AAAA,UAGA,gBAAAhJ,EAAC,SAAI,WAAW,UAAU9F,EAAgB,MAAM,IAAI,CAAC,IAClD,UAAA;AAAA,YAAA8L,EAAK,aACJ,gBAAAxJ;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,4BAA4BtC,EAAgB,MAAM,IAAI,CAAC;AAAA,gBAEjE,UAAA8L,EAAK;AAAA,cAAA;AAAA,YAAA;AAAA,YAGV,gBAAAxJ;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW;AAAA;AAAA;AAAA,kBAGTwM,MAAW,WAAW,2BAA2B,iBAAiB;AAAA;AAAA,gBAGnE,UAAAhD,EAAK;AAAA,cAAA;AAAA,YAAA;AAAA,YAEPA,EAAK,eACJ,gBAAAxJ;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,6BAA6BtC,EAAgB,MAAM,IAAI,CAAC;AAAA,gBAElE,UAAA8L,EAAK;AAAA,cAAA;AAAA,YAAA;AAAA,YAGTA,EAAK,WACJ,gBAAAxJ,EAAC,OAAA,EAAI,WAAWtC,EAAgB,MAAM,IAAI,GACvC,UAAA8L,EAAK,QAAA,CACR;AAAA,UAAA,EAAA,CAEJ;AAAA,QAAA;AAAA,MAAA;AAAA,MA9EKA,EAAK;AAAA,IAAA;AAAA,EAiFhB,CAAC,EAAA,CACH;AAEJ;","x_google_ignoreList":[6,7]}