@octavius2929-personal/design-system 0.5.0 → 0.6.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,"sources":["../src/index.ts","../src/theme/theme.css.ts","../src/hooks/use-previous/index.ts","../src/hooks/use-toggle/index.ts","../src/components/button/use-styles.ts","../src/theme/context/theme-context.tsx","../src/components/button/use-styles.css.ts","../src/components/button/index.tsx","../src/components/divider/use-styles.ts","../src/components/divider/use-styles.css.ts","../src/components/divider/index.tsx","../src/components/avatar/use-styles.ts","../src/components/avatar/use-styles.css.ts","../src/components/avatar/index.tsx","../src/components/badge/use-styles.ts","../src/components/badge/use-styles.css.ts","../src/components/badge/index.tsx","../src/components/progress/use-styles.ts","../src/components/progress/use-styles.css.ts","../src/components/progress/index.tsx","../src/components/icons/x/index.tsx","../src/components/chip/use-styles.ts","../src/components/chip/use-styles.css.ts","../src/components/chip/index.tsx","../src/components/icons/check/index.tsx","../src/components/checkbox/use-styles.ts","../src/components/checkbox/use-styles.css.ts","../src/components/checkbox/index.tsx","../src/components/radio/use-styles.ts","../src/components/radio/use-styles.css.ts","../src/components/radio/index.tsx","../src/components/switch/use-styles.ts","../src/components/switch/use-styles.css.ts","../src/components/switch/index.tsx","../src/components/text-field/index.tsx","../src/components/icons/eye/index.tsx","../src/components/icons/eye-off/index.tsx","../src/components/text-field/use-styles.ts","../src/components/text-field/use-styles.css.ts","../src/components/icon-button/use-styles.ts","../src/components/icon-button/use-styles.css.ts","../src/components/icon-button/index.tsx","../src/components/card/use-styles.ts","../src/components/card/use-styles.css.ts","../src/components/card/index.tsx","../src/components/icons/circle-check/index.tsx","../src/components/icons/circle-x/index.tsx","../src/components/icons/info/index.tsx","../src/components/icons/triangle-alert/index.tsx","../src/components/alert/use-styles.ts","../src/components/alert/use-styles.css.ts","../src/components/alert/index.tsx","../src/components/tooltip/index.tsx","../src/components/tooltip/use-styles.ts","../src/components/tooltip/use-styles.css.ts","../src/components/select/index.tsx","../src/components/icons/chevron-down/index.tsx","../src/components/select/use-styles.ts","../src/components/select/use-styles.css.ts","../src/components/slider/use-styles.ts","../src/components/slider/use-styles.css.ts","../src/components/slider/index.tsx","../src/components/accordion/index.tsx","../src/components/accordion/use-styles.ts","../src/components/accordion/use-styles.css.ts","../src/components/breadcrumbs/index.tsx","../src/components/icons/chevron-right/index.tsx","../src/components/breadcrumbs/use-styles.ts","../src/components/breadcrumbs/use-styles.css.ts","../src/components/icons/chevron-left/index.tsx","../src/components/pagination/use-styles.ts","../src/components/pagination/use-styles.css.ts","../src/components/pagination/index.tsx","../src/components/stepper/index.tsx","../src/components/stepper/use-styles.ts","../src/components/stepper/use-styles.css.ts","../src/components/tabs/use-styles.ts","../src/components/tabs/use-styles.css.ts","../src/components/tabs/index.tsx","../src/components/menu/index.tsx","../src/components/menu/use-styles.ts","../src/components/menu/use-styles.css.ts","../src/components/dialog/index.tsx","../src/components/dialog/use-styles.ts","../src/components/dialog/use-styles.css.ts","../src/components/snackbar/index.tsx","../src/components/snackbar/use-styles.ts","../src/components/snackbar/use-styles.css.ts","../src/components/table/use-styles.ts","../src/components/table/use-styles.css.ts","../src/components/table/index.tsx","../src/components/app-bar/use-styles.ts","../src/components/app-bar/use-styles.css.ts","../src/components/app-bar/index.tsx","../src/components/list-item/use-styles.ts","../src/components/list-item/use-styles.css.ts","../src/components/list-item/index.tsx","../src/components/icons/chevron-up/index.tsx","../src/components/icons/search/index.tsx","../src/components/icons/plus/index.tsx","../src/components/icons/minus/index.tsx","../src/components/icons/more-horizontal/index.tsx","../src/theme/typography.css.ts"],"sourcesContent":["// API pública. Exportá acá solo lo que querés que consuman.\nimport \"./theme/fonts.css\";\nimport \"./theme/theme.css\";\n\n// Hooks\nexport { usePrevious } from \"./hooks/use-previous\";\nexport { useToggle } from \"./hooks/use-toggle\";\n\n// Componentes — primitivos\nexport { Button } from \"./components/button\";\nexport type {\n ButtonProps,\n ButtonVariant,\n ButtonTone,\n ButtonSize,\n} from \"./components/button/types\";\nexport { Divider } from \"./components/divider\";\nexport type { DividerProps } from \"./components/divider/types\";\nexport { Avatar } from \"./components/avatar\";\nexport type { AvatarProps, AvatarSize } from \"./components/avatar/types\";\nexport { Badge } from \"./components/badge\";\nexport type { BadgeProps, BadgeTone } from \"./components/badge/types\";\nexport { Progress } from \"./components/progress\";\nexport type { ProgressProps, ProgressVariant } from \"./components/progress/types\";\nexport { Chip } from \"./components/chip\";\nexport type { ChipProps, ChipTone } from \"./components/chip/types\";\nexport { Checkbox } from \"./components/checkbox\";\nexport type { CheckboxProps } from \"./components/checkbox/types\";\nexport { Radio } from \"./components/radio\";\nexport type { RadioProps } from \"./components/radio/types\";\nexport { Switch } from \"./components/switch\";\nexport type { SwitchProps } from \"./components/switch/types\";\nexport { TextField } from \"./components/text-field\";\nexport type { TextFieldProps } from \"./components/text-field/types\";\nexport { IconButton } from \"./components/icon-button\";\nexport type { IconButtonProps, IconButtonTone } from \"./components/icon-button/types\";\n\n// Componentes — compuestos\nexport { Card } from \"./components/card\";\nexport type { CardProps, CardSectionProps } from \"./components/card/types\";\nexport { Alert } from \"./components/alert\";\nexport type { AlertProps, AlertSeverity } from \"./components/alert/types\";\nexport { Tooltip } from \"./components/tooltip\";\nexport type { TooltipProps, TooltipPlacement } from \"./components/tooltip/types\";\nexport { Select } from \"./components/select\";\nexport type { SelectProps, SelectOption } from \"./components/select/types\";\nexport { Slider } from \"./components/slider\";\nexport type { SliderProps } from \"./components/slider/types\";\nexport { Accordion } from \"./components/accordion\";\nexport type { AccordionProps, AccordionItem } from \"./components/accordion/types\";\nexport { Breadcrumbs } from \"./components/breadcrumbs\";\nexport type { BreadcrumbsProps, Crumb } from \"./components/breadcrumbs/types\";\nexport { Pagination } from \"./components/pagination\";\nexport type { PaginationProps } from \"./components/pagination/types\";\nexport { Stepper } from \"./components/stepper\";\nexport type { StepperProps, Step } from \"./components/stepper/types\";\nexport { Tabs } from \"./components/tabs\";\nexport type { TabsProps, TabItem } from \"./components/tabs/types\";\nexport { Menu } from \"./components/menu\";\nexport type { MenuProps, MenuItemDef } from \"./components/menu/types\";\nexport { Dialog } from \"./components/dialog\";\nexport type { DialogProps } from \"./components/dialog/types\";\nexport { Snackbar } from \"./components/snackbar\";\nexport type { SnackbarProps } from \"./components/snackbar/types\";\nexport { Table } from \"./components/table\";\nexport type { TableProps, TableColumn } from \"./components/table/types\";\nexport { AppBar } from \"./components/app-bar\";\nexport type { AppBarProps } from \"./components/app-bar/types\";\nexport { ListItem } from \"./components/list-item\";\nexport type { ListItemProps } from \"./components/list-item/types\";\n\n// Iconos\nexport type { Icon, IconProps } from \"./components/icons/types\";\nexport { ChevronDownIcon } from \"./components/icons/chevron-down\";\nexport { ChevronUpIcon } from \"./components/icons/chevron-up\";\nexport { ChevronLeftIcon } from \"./components/icons/chevron-left\";\nexport { ChevronRightIcon } from \"./components/icons/chevron-right\";\nexport { CheckIcon } from \"./components/icons/check\";\nexport { XIcon } from \"./components/icons/x\";\nexport { EyeIcon } from \"./components/icons/eye\";\nexport { EyeOffIcon } from \"./components/icons/eye-off\";\nexport { SearchIcon } from \"./components/icons/search\";\nexport { InfoIcon } from \"./components/icons/info\";\nexport { CircleCheckIcon } from \"./components/icons/circle-check\";\nexport { TriangleAlertIcon } from \"./components/icons/triangle-alert\";\nexport { CircleXIcon } from \"./components/icons/circle-x\";\nexport { PlusIcon } from \"./components/icons/plus\";\nexport { MinusIcon } from \"./components/icons/minus\";\nexport { MoreHorizontalIcon } from \"./components/icons/more-horizontal\";\n\n// Temas\nexport {\n vars as theme,\n themes,\n schemaNames,\n modeNames,\n colorVars,\n type SchemaName,\n type Mode,\n type ColorTokens,\n} from \"./theme/theme.css\";\n// Tema custom: instalá `@vanilla-extract/css` y, en tu propio `.css.ts`,\n// `createTheme(colorVars, miPaleta)` (miPaleta: ColorTokens). No lo reexportamos desde acá\n// porque arrastraría el runtime de vanilla-extract al bundle y createTheme es build-time.\nexport { text } from \"./theme/typography.css\";\nexport {\n ThemeProvider,\n useTheme,\n type ThemeProviderProps,\n type ModePreference,\n} from \"./theme/context/theme-context\";\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nexport var colorVars = {bg1:'var(--bg1__e3grur28)',bg2:'var(--bg2__e3grur29)',bg3:'var(--bg3__e3grur2a)',bgInset:'var(--bgInset__e3grur2b)',fg1:'var(--fg1__e3grur2c)',fg2:'var(--fg2__e3grur2d)',fg3:'var(--fg3__e3grur2e)',fgOnAccent:'var(--fgOnAccent__e3grur2f)',border1:'var(--border1__e3grur2g)',border2:'var(--border2__e3grur2h)',borderStrong:'var(--borderStrong__e3grur2i)',accent:'var(--accent__e3grur2j)',accentHover:'var(--accentHover__e3grur2k)',accentSoft:'var(--accentSoft__e3grur2l)',ok:'var(--ok__e3grur2m)',warn:'var(--warn__e3grur2n)',danger:'var(--danger__e3grur2o)',info:'var(--info__e3grur2p)',focus:'var(--focus__e3grur2q)',scrim:'var(--scrim__e3grur2r)'};\nexport var modeNames = ['light','dark','sepia','contrast'];\nexport var schemaNames = ['tinta'];\nexport var themes = {tinta:{light:'theme_themes_tinta_light__e3grur2s',dark:'theme_themes_tinta_dark__e3grur2t',sepia:'theme_themes_tinta_sepia__e3grur2u',contrast:'theme_themes_tinta_contrast__e3grur2v'}};\nexport var vars = {font:{display:'var(--font-display__e3grur0)',text:'var(--font-text__e3grur1)',mono:'var(--font-mono__e3grur2)',black:'var(--font-black__e3grur3)'},text:{eyebrow:{size:'var(--text-eyebrow-size__e3grur4)',lineHeight:'var(--text-eyebrow-lineHeight__e3grur5)',weight:'var(--text-eyebrow-weight__e3grur6)',letterSpacing:'var(--text-eyebrow-letterSpacing__e3grur7)'},display:{size:'var(--text-display-size__e3grur8)',lineHeight:'var(--text-display-lineHeight__e3grur9)',weight:'var(--text-display-weight__e3grura)',letterSpacing:'var(--text-display-letterSpacing__e3grurb)'},h1:{size:'var(--text-h1-size__e3grurc)',lineHeight:'var(--text-h1-lineHeight__e3grurd)',weight:'var(--text-h1-weight__e3grure)',letterSpacing:'var(--text-h1-letterSpacing__e3grurf)'},h2:{size:'var(--text-h2-size__e3grurg)',lineHeight:'var(--text-h2-lineHeight__e3grurh)',weight:'var(--text-h2-weight__e3gruri)',letterSpacing:'var(--text-h2-letterSpacing__e3grurj)'},h3:{size:'var(--text-h3-size__e3grurk)',lineHeight:'var(--text-h3-lineHeight__e3grurl)',weight:'var(--text-h3-weight__e3grurm)',letterSpacing:'var(--text-h3-letterSpacing__e3grurn)'},h4:{size:'var(--text-h4-size__e3gruro)',lineHeight:'var(--text-h4-lineHeight__e3grurp)',weight:'var(--text-h4-weight__e3grurq)',letterSpacing:'var(--text-h4-letterSpacing__e3grurr)'},body:{size:'var(--text-body-size__e3grurs)',lineHeight:'var(--text-body-lineHeight__e3grurt)',weight:'var(--text-body-weight__e3gruru)',letterSpacing:'var(--text-body-letterSpacing__e3grurv)'},lead:{size:'var(--text-lead-size__e3grurw)',lineHeight:'var(--text-lead-lineHeight__e3grurx)',weight:'var(--text-lead-weight__e3grury)',letterSpacing:'var(--text-lead-letterSpacing__e3grurz)'},small:{size:'var(--text-small-size__e3grur10)',lineHeight:'var(--text-small-lineHeight__e3grur11)',weight:'var(--text-small-weight__e3grur12)',letterSpacing:'var(--text-small-letterSpacing__e3grur13)'},caption:{size:'var(--text-caption-size__e3grur14)',lineHeight:'var(--text-caption-lineHeight__e3grur15)',weight:'var(--text-caption-weight__e3grur16)',letterSpacing:'var(--text-caption-letterSpacing__e3grur17)'}},space:{none:'var(--space-none__e3grur18)',xs:'var(--space-xs__e3grur19)',sm:'var(--space-sm__e3grur1a)',md:'var(--space-md__e3grur1b)',lg:'var(--space-lg__e3grur1c)',xl:'var(--space-xl__e3grur1d)','2xl':'var(--space-2xl__e3grur1e)','3xl':'var(--space-3xl__e3grur1f)','4xl':'var(--space-4xl__e3grur1g)','5xl':'var(--space-5xl__e3grur1h)'},radius:{none:'var(--radius-none__e3grur1i)',sm:'var(--radius-sm__e3grur1j)',md:'var(--radius-md__e3grur1k)',lg:'var(--radius-lg__e3grur1l)',base:'var(--radius-base__e3grur1m)',full:'var(--radius-full__e3grur1n)'},border:{hair:'var(--border-hair__e3grur1o)',rule:'var(--border-rule__e3grur1p)',heavy:'var(--border-heavy__e3grur1q)'},tracking:{tight:'var(--tracking-tight__e3grur1r)',normal:'var(--tracking-normal__e3grur1s)',wide:'var(--tracking-wide__e3grur1t)',wider:'var(--tracking-wider__e3grur1u)',widest:'var(--tracking-widest__e3grur1v)'},weight:{light:'var(--weight-light__e3grur1w)',regular:'var(--weight-regular__e3grur1x)',medium:'var(--weight-medium__e3grur1y)',semibold:'var(--weight-semibold__e3grur1z)',bold:'var(--weight-bold__e3grur20)'},dur:{fast:'var(--dur-fast__e3grur21)',base:'var(--dur-base__e3grur22)',slow:'var(--dur-slow__e3grur23)'},ease:{ink:'var(--ease-ink__e3grur24)'},shadow:{sm:'var(--shadow-sm__e3grur25)',md:'var(--shadow-md__e3grur26)',lg:'var(--shadow-lg__e3grur27)'},color:colorVars};","import { useEffect, useRef } from \"react\";\n\n// Devuelve el valor que tuvo `value` en el render anterior.\n// En el primer render devuelve `initial` (por defecto `undefined`).\nexport function usePrevious<T>(value: T, initial: T): T;\nexport function usePrevious<T>(value: T, initial?: T): T | undefined;\nexport function usePrevious<T>(value: T, initial?: T): T | undefined {\n const ref = useRef<T | undefined>(initial);\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n","import { useCallback, useState } from \"react\";\n\n// Ejemplo de hook — reemplazá por los de tu librería.\nexport function useToggle(\n initial = false,\n): readonly [boolean, () => void, (value: boolean) => void] {\n const [on, setOn] = useState(initial);\n const toggle = useCallback(() => setOn((value) => !value), []);\n return [on, toggle, setOn] as const;\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { ButtonProps, ButtonTone } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos). El componente\n// solo aplica lo que devuelve este hook.\ntype ToneKey = keyof typeof styles.tone;\n\nfunction toneKey(variant: NonNullable<ButtonProps[\"variant\"]>, tone: ButtonTone): ToneKey {\n return `${variant}${tone === \"ink\" ? \"Ink\" : \"Accent\"}` as ToneKey;\n}\n\nexport function useStyles({\n variant = \"filled\",\n tone = \"ink\",\n size = \"md\",\n full,\n className,\n}: Pick<ButtonProps, \"variant\" | \"tone\" | \"size\" | \"full\" | \"className\">): {\n container: string;\n} {\n const { themeClass } = useTheme();\n const container = useMemo(\n () =>\n [\n themeClass,\n styles.root,\n styles.size[size],\n styles.tone[toneKey(variant, tone)],\n full && styles.full,\n className,\n ]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, variant, tone, size, full, className],\n );\n return { container };\n}\n","import { createContext, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { type Mode, type SchemaName, modeNames, themes } from \"../theme.css\";\n\n// El usuario puede fijar un modo concreto o \"system\" (seguir las preferencias del SO).\nexport type ModePreference = Mode | \"system\";\n\ninterface ThemeContextValue {\n schema: SchemaName;\n /** Modo efectivo ya resuelto (nunca \"system\"). */\n mode: Mode;\n /** La preferencia cruda elegida (puede ser \"system\"). */\n preference: ModePreference;\n themeClass: string;\n setSchema: (schema: SchemaName) => void;\n setMode: (mode: ModePreference) => void;\n /** Alterna binario claro↔oscuro a partir del modo efectivo. */\n toggleMode: () => void;\n /** Rota por los cuatro modos en orden. */\n cycleMode: () => void;\n}\n\nconst noop = () => {};\n\n// Sin provider, los componentes usan tinta/light (las vars de :root).\nconst DEFAULT_VALUE: ThemeContextValue = {\n schema: \"tinta\",\n mode: \"light\",\n preference: \"light\",\n themeClass: themes.tinta.light,\n setSchema: noop,\n setMode: noop,\n toggleMode: noop,\n cycleMode: noop,\n};\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\n// Resuelve \"system\" leyendo las media queries del SO. prefers-contrast tiene prioridad\n// (accesibilidad) sobre prefers-color-scheme.\nfunction resolveSystemMode(): Mode {\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") return \"light\";\n if (window.matchMedia(\"(prefers-contrast: more)\").matches) return \"contrast\";\n if (window.matchMedia(\"(prefers-color-scheme: dark)\").matches) return \"dark\";\n return \"light\";\n}\n\ninterface Persisted {\n schema: SchemaName;\n preference: ModePreference;\n}\n\nfunction readStored(key: string): Partial<Persisted> | null {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? (JSON.parse(raw) as Partial<Persisted>) : null;\n } catch {\n return null;\n }\n}\n\nfunction writeStored(key: string, value: Persisted): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch {\n // localStorage puede no estar disponible (modo privado / SSR): degradamos en silencio.\n }\n}\n\nexport interface ThemeProviderProps {\n children: ReactNode;\n defaultSchema?: SchemaName;\n defaultMode?: ModePreference;\n /** Clave de localStorage donde se persiste la elección. */\n storageKey?: string;\n /** Si es false, no persiste ni rehidrata (útil para previews/tests). */\n persist?: boolean;\n}\n\nexport function ThemeProvider({\n children,\n defaultSchema = \"tinta\",\n defaultMode = \"light\",\n storageKey = \"ds-theme\",\n persist = true,\n}: ThemeProviderProps) {\n const [schema, setSchema] = useState<SchemaName>(\n () => (persist && readStored(storageKey)?.schema) || defaultSchema,\n );\n const [preference, setPreference] = useState<ModePreference>(\n () => (persist ? readStored(storageKey)?.preference : null) ?? defaultMode,\n );\n const [systemMode, setSystemMode] = useState<Mode>(resolveSystemMode);\n\n // Mientras la preferencia sea \"system\", seguimos los cambios del SO en vivo.\n useEffect(() => {\n if (preference !== \"system\") return;\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") return;\n const mqls = [\"(prefers-contrast: more)\", \"(prefers-color-scheme: dark)\"].map((q) =>\n window.matchMedia(q),\n );\n const onChange = () => setSystemMode(resolveSystemMode());\n onChange();\n for (const mql of mqls) mql.addEventListener?.(\"change\", onChange);\n return () => {\n for (const mql of mqls) mql.removeEventListener?.(\"change\", onChange);\n };\n }, [preference]);\n\n const mode: Mode = preference === \"system\" ? systemMode : preference;\n\n // Persistimos cada cambio de schema/preferencia.\n useEffect(() => {\n if (persist) writeStored(storageKey, { schema, preference });\n }, [schema, preference, persist, storageKey]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n schema,\n mode,\n preference,\n themeClass: themes[schema][mode],\n setSchema,\n setMode: setPreference,\n toggleMode: () => setPreference(mode === \"dark\" ? \"light\" : \"dark\"),\n cycleMode: () => setPreference(modeNames[(modeNames.indexOf(mode) + 1) % modeNames.length]),\n }),\n [schema, mode, preference],\n );\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\nexport function useTheme(): ThemeContextValue {\n return useContext(ThemeContext) ?? DEFAULT_VALUE;\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/button/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61Uu3LbMBDs9RVoMmMV8IiSndh05S6pUqRKxQGJAwULBBg89Egm_54BREJ8yZYcdxJusbvcu8OtM4CNPQgwmVbKZllS55YLsUB_ZghRbmpBDiniUnAJmAnYP80QIoKXEnMLlUlRAdKC9scvzljODrhQ0oK03VJJ6hRtib7B2NSkAGyqLINVqZ1OyNwjmJIWM1JxcWiR4ahSUrXQZUAKsBZ04OGybMFWk2LDZYl3nIKO5C5csbC3HiENU7pKkatr0AUx4Iu50hQ01oRyZ1q64z-cEwORq5p34DtO7bpFtxROnNB1Fx0yTpFRglN_XDhtlE5RrXgb0W7NLRzTSZFUO03qYN275pYrmSIiRCNIncaMGBuTSeZNBYgBzOUmVu7mT7O_s9uznU5JYfkWUqnsTUq5IbkAOg_97yQWfgpi4efN4va-3r9FylThDN5yw3MBgUw564coRct6fwwitrlwJtr9FWJrwFgxZsCGO28Its6DVk6KTamVk7RxXhMN0obklfDBN9LlKgpDt1891PEsichy3m2hVBYTIdQO6NCi4b8h85PeuEyCuZpQ2hnciX3oVUQZK8VpUzx1ipJknEsQrWgUXZ4X9aiGOu-L7kWs0JHoRDOCqHfaiK7eI7rsqMJIdTVWZU6IKHnXf7Lat6rZ02Sx-DS8bpWEjHEhgH7zC9MQ3Y9GqB2W0wgcO9Gfkk754ewsDUkuc5Su1Rb01IpO2VxGBfqKjz7qrI_nwr_i0crnM6qkgTWUL-N8WPldPvdR7Ky9CbqLHV4T1lHnq78QxTZvuBqjJ6w1D1i3i1-ufJqG0_bOcZpyck1EeeeNJK9KDBrxcNX3Tg7Q-0fjjKXrZ-OHYicxMS1WrpWx3YAfr2z16xvbu3uR_Af3NwgMoiQf3d2LvnJo4r8-9B-nbQpI_goAAA';\nexport var full = 'use-styles_full__1pbtill4';\nexport var root = 'use-styles_root__1pbtill0';\nexport var size = {sm:'use-styles_size_sm__1pbtill1',md:'use-styles_size_md__1pbtill2',lg:'use-styles_size_lg__1pbtill3'};\nexport var tone = {filledInk:'use-styles_tone_filledInk__1pbtill5',filledAccent:'use-styles_tone_filledAccent__1pbtill6',outlineInk:'use-styles_tone_outlineInk__1pbtill7',outlineAccent:'use-styles_tone_outlineAccent__1pbtill8',ghostInk:'use-styles_tone_ghostInk__1pbtill9',ghostAccent:'use-styles_tone_ghostAccent__1pbtilla'};","import type { ButtonProps, ButtonSize } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Cada talle de botón dimensiona su icono de forma consistente.\nconst ICON_SIZE: Record<ButtonSize, number> = { sm: 14, md: 16, lg: 18 };\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Los iconos son componentes (Icon); el botón los renderiza fijando el tamaño.\nexport function Button({\n variant,\n tone,\n size = \"md\",\n startIcon: StartIcon,\n endIcon: EndIcon,\n full,\n className,\n children,\n ...rest\n}: ButtonProps) {\n const { container } = useStyles({ variant, tone, size, full, className });\n const iconSize = ICON_SIZE[size];\n return (\n <button className={container} {...rest}>\n {StartIcon && <StartIcon size={iconSize} />}\n {children}\n {EndIcon && <EndIcon size={iconSize} />}\n </button>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { DividerProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. La decisión de \"qué clase aplica\" vive acá, no en el JSX.\ninterface UseStylesArgs extends Pick<DividerProps, \"vertical\"> {\n hasLabel?: boolean;\n}\n\nexport function useStyles({ vertical, hasLabel }: UseStylesArgs): {\n root: string;\n line: string;\n label: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [\n themeClass,\n styles.root,\n hasLabel ? styles.labelled : vertical ? styles.vertical : styles.horizontal,\n ]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, vertical, hasLabel],\n );\n return { root, line: styles.line, label: styles.label };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/divider/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMW43djd5ajAgewogIGJvcmRlcjogbm9uZTsKfQoudXNlLXN0eWxlc19ob3Jpem9udGFsX18xbjd2N3lqMSB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxcHg7CiAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyMV9fZTNncnVyMmcpOwp9Ci51c2Utc3R5bGVzX3ZlcnRpY2FsX18xbjd2N3lqMiB7CiAgd2lkdGg6IDFweDsKICBhbGlnbi1zZWxmOiBzdHJldGNoOwogIGhlaWdodDogMTAwJTsKICBtaW4taGVpZ2h0OiAxZW07CiAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyMV9fZTNncnVyMmcpOwp9Ci51c2Utc3R5bGVzX2xhYmVsbGVkX18xbjd2N3lqMyB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtbWRfX2UzZ3J1cjFiKTsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoudXNlLXN0eWxlc19saW5lX18xbjd2N3lqNCB7CiAgZmxleDogMTsKICBoZWlnaHQ6IDFweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXIxX19lM2dydXIyZyk7Cn0KLnVzZS1zdHlsZXNfbGFiZWxfXzFuN3Y3eWo1IHsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IHZhcigtLXRleHQtZXllYnJvdy1zaXplX19lM2dydXI0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZXN0X19lM2dydXIxdik7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tZmczX19lM2dydXIyZSk7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQ';\nexport var horizontal = 'use-styles_horizontal__1n7v7yj1';\nexport var label = 'use-styles_label__1n7v7yj5';\nexport var labelled = 'use-styles_labelled__1n7v7yj3';\nexport var line = 'use-styles_line__1n7v7yj4';\nexport var root = 'use-styles_root__1n7v7yj0';\nexport var vertical = 'use-styles_vertical__1n7v7yj2';","import type { DividerProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Con `label` se renderiza un layout flex (dos líneas + etiqueta); si no, un hairline simple.\nexport function Divider({ vertical, label, ...rest }: DividerProps) {\n const hasLabel = label != null;\n const { root, line, label: labelClass } = useStyles({ vertical, hasLabel });\n\n if (hasLabel) {\n return (\n <div role=\"separator\" className={root} {...rest}>\n <span className={line} />\n <span className={labelClass}>{label}</span>\n <span className={line} />\n </div>\n );\n }\n\n return <div role=\"separator\" className={root} {...rest} />;\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { AvatarProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos). El componente\n// solo aplica lo que devuelve este hook.\nexport function useStyles({\n size = \"md\",\n filled,\n className,\n}: Pick<AvatarProps, \"size\" | \"filled\" | \"className\">): {\n root: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [\n themeClass,\n styles.root,\n styles.size[size],\n filled ? styles.variant.filled : styles.variant.default,\n className,\n ]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, size, filled, className],\n );\n return { root };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/avatar/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMW1uMXJtdTAgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGxfX2UzZ3J1cjFuKTsKICBib3JkZXItd2lkdGg6IHZhcigtLWJvcmRlci1ydWxlX19lM2dydXIxcCk7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICBib3JkZXItY29sb3I6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWRpc3BsYXlfX2UzZ3J1cjApOwogIGZvbnQtd2VpZ2h0OiB2YXIoLS13ZWlnaHQtc2VtaWJvbGRfX2UzZ3J1cjF6KTsKICBsaW5lLWhlaWdodDogMTsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci51c2Utc3R5bGVzX3NpemVfc21fXzFtbjFybXUxIHsKICB3aWR0aDogMzJweDsKICBoZWlnaHQ6IDMycHg7CiAgZm9udC1zaXplOiAxNHB4Owp9Ci51c2Utc3R5bGVzX3NpemVfbWRfXzFtbjFybXUyIHsKICB3aWR0aDogNDBweDsKICBoZWlnaHQ6IDQwcHg7CiAgZm9udC1zaXplOiAxNnB4Owp9Ci51c2Utc3R5bGVzX3NpemVfbGdfXzFtbjFybXUzIHsKICB3aWR0aDogNTZweDsKICBoZWlnaHQ6IDU2cHg7CiAgZm9udC1zaXplOiAyMnB4Owp9Ci51c2Utc3R5bGVzX3ZhcmlhbnRfZGVmYXVsdF9fMW1uMXJtdTQgewogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGNvbG9yOiB2YXIoLS1mZzFfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc192YXJpYW50X2ZpbGxlZF9fMW1uMXJtdTUgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKfQ';\nexport var root = 'use-styles_root__1mn1rmu0';\nexport var size = {sm:'use-styles_size_sm__1mn1rmu1',md:'use-styles_size_md__1mn1rmu2',lg:'use-styles_size_lg__1mn1rmu3'};\nexport var variant = {'default':'use-styles_variant_default__1mn1rmu4',filled:'use-styles_variant_filled__1mn1rmu5'};","import type { AvatarProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\nexport function Avatar({ size, filled, className, children, ...rest }: AvatarProps) {\n const { root } = useStyles({ size, filled, className });\n return (\n <span className={root} {...rest}>\n {children}\n </span>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { BadgeProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ tone = \"ink\", className }: Pick<BadgeProps, \"tone\" | \"className\">): {\n root: string;\n dot: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n [themeClass, className],\n );\n const dot = useMemo(() => [styles.dot, styles.tone[tone]].join(\" \"), [tone]);\n return { root, dot };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/badge/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMXdwZWk2cDAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKfQoudXNlLXN0eWxlc19kb3RfXzF3cGVpNnAxIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiBjYWxjKHZhcigtLXNwYWNlLXNtX19lM2dydXIxYSkgKiAtMSk7CiAgcmlnaHQ6IGNhbGModmFyKC0tc3BhY2Utc21fX2UzZ3J1cjFhKSAqIC0xKTsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgbWluLXdpZHRoOiAxOHB4OwogIGhlaWdodDogMThweDsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1ub25lX19lM2dydXIxOCkgdmFyKC0tc3BhY2UteHNfX2UzZ3J1cjE5KTsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IHZhcigtLXdlaWdodC1zZW1pYm9sZF9fZTNncnVyMXopOwogIGxpbmUtaGVpZ2h0OiAxOwogIGxldHRlci1zcGFjaW5nOiB2YXIoLS10cmFja2luZy13aWRlX19lM2dydXIxdCk7CiAgY29sb3I6IHZhcigtLWZnT25BY2NlbnRfX2UzZ3J1cjJmKTsKICBib3JkZXI6IHZhcigtLWJvcmRlci1oZWF2eV9fZTNncnVyMXEpIHNvbGlkIHZhcigtLWJnMV9fZTNncnVyMjgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsX19lM2dydXIxbik7Cn0KLnVzZS1zdHlsZXNfdG9uZV9pbmtfXzF3cGVpNnAyIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1mZzFfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc190b25lX2FjY2VudF9fMXdwZWk2cDMgewogIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudF9fZTNncnVyMmopOwp9';\nexport var dot = 'use-styles_dot__1wpei6p1';\nexport var root = 'use-styles_root__1wpei6p0';\nexport var tone = {ink:'use-styles_tone_ink__1wpei6p2',accent:'use-styles_tone_accent__1wpei6p3'};","import type { BadgeProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Renderiza siempre los children; el contador solo cuando `count != null`.\nexport function Badge({ count, tone, className, children, ...rest }: BadgeProps) {\n const { root, dot } = useStyles({ tone, className });\n return (\n <span className={root} {...rest}>\n {children}\n {count != null && <span className={dot}>{count}</span>}\n </span>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { ProgressProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. El componente solo aplica lo que devuelve este hook.\nexport function useStyles({\n variant = \"linear\",\n value,\n className,\n}: Pick<ProgressProps, \"variant\" | \"value\" | \"className\">): {\n track: string;\n bar: string;\n spinner: string;\n} {\n const { themeClass } = useTheme();\n const indeterminate = value === undefined;\n\n return useMemo(() => {\n const root = (...classes: (string | false | undefined)[]) =>\n [themeClass, ...classes, className].filter(Boolean).join(\" \");\n\n if (variant === \"circular\") {\n return { track: \"\", bar: \"\", spinner: root(styles.spinner) };\n }\n return {\n track: root(styles.track),\n bar: [styles.bar, indeterminate && styles.indeterminate].filter(Boolean).join(\" \"),\n spinner: \"\",\n };\n }, [themeClass, variant, indeterminate, className]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/progress/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA62TwW6jMBCG7zyFL5WSgyNCku2KXPoYe0MDHmAWM2Ztkzaq8u4rTKChatqttCeM-Gf-b-Y3Tw2eSwstOtE7lM6fNbrMdcRZ1uSmezzF4jUSIn4IDyG8BXalsW0qrPHgcRWvj5EQl0iIbfyJbPcjVlhdtZfo6WNjTQon5-1d53DU4PHXSg6mXxDcyPdv6ku0uXH2Fopmck5Cjxqpqn0q9t3LUJFD0VTW9KxScQK7kjKvdlmGu8r2NoHQ1ZzQlto8p6ImpZBDnbEKrbSgqHdT6fgmy17rqcWWQ4tnUr5OwyTHd4w52IlwtyAcxR8hQlEg-5ny9_rbREsEYoUebUsMfg5qH2Cu4MkhoABTC54MS4YW0_shL8Wqt-GQiu0mcctvnlriSpY9F6NkBEdwKImbecj9ellHHsemsjA9-1QQl8Tk8f1ww7VnnHd8CGMpcp2G81CliVHm2hTN2xbnuzDutEY4nef9_VkLZzSphSaZQevbNLzpZGG0sf8vus9TuP3H74UQb35-FcKwFLD_vvG_YQNO0nIEAAA';\nexport var bar = 'use-styles_bar__kbop7v3';\nexport var indeterminate = 'use-styles_indeterminate__kbop7v4';\nexport var spinner = 'use-styles_spinner__kbop7v5';\nexport var track = 'use-styles_track__kbop7v2';","import type { ProgressProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Las dimensiones dinámicas (diámetro del spinner, ancho de la barra) se aplican inline.\nexport function Progress({\n variant = \"linear\",\n value,\n size = 20,\n className,\n ...rest\n}: ProgressProps) {\n const { track, bar, spinner } = useStyles({ variant, value, className });\n const indeterminate = value === undefined;\n\n if (variant === \"circular\") {\n return (\n <span\n className={spinner}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={indeterminate ? undefined : 0}\n aria-valuemax={indeterminate ? undefined : 100}\n style={{ width: size, height: size }}\n {...rest}\n />\n );\n }\n\n return (\n <div\n className={track}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={indeterminate ? undefined : 0}\n aria-valuemax={indeterminate ? undefined : 100}\n {...rest}\n >\n <div className={bar} style={indeterminate ? undefined : { width: `${value}%` }} />\n </div>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function XIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { ChipProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. El componente solo aplica lo que devuelve este hook.\nexport function useStyles({\n selected,\n tone = \"ink\",\n clickable,\n}: Pick<ChipProps, \"selected\" | \"tone\"> & { clickable?: boolean }): {\n root: string;\n deleteBtn: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [\n themeClass,\n styles.root,\n selected ? styles.selected : styles.tone[tone],\n clickable && styles.clickable,\n ]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, selected, tone, clickable],\n );\n return { root, deleteBtn: styles.deleteBtn };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/chip/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA4VUwbKbMAy85yt8bA5-U5J0pnVu_RFG2ALUGJvaJiHtvH_v2IADfcm8I9J6dyUkvQ0euQ93jb501oayLGAkXZ--sr87xhT5XsNdMDKaDPJa43jeMQaaGsMpYOcFk2gCuhhuoBfsCu4L574Hidx3ZYnHxg2ugH1E1NYEXkNH-r4gU6izxi7QwwPp6Q8KVhR9UtUYArpETaZZ3gcH8kKm4TdS6LLekFgCjiEijK-t6wQb-h6dBI8x2YNSK6LJ8ugzxY_9JtOpnKkSeWWdQscdKBr8wjJ98Qo8Zni3ht9IhXZBz7EW6OHcrtHp3wjmrSYVw7eWAk6GBDP25qBPdcYSKZA1goHWM7saHK_Bh9zZYqkIwSMnc8mZ0yw6xp6npswGKjued--7t9WgBGuwTI_nYSnSsEirrct_tTlkbrUuaIOaYg9ku3-qBTLOWJY7fJRbEDPPr5eKT4BbQY8aZUCV1Y5JrQJ5aZwdjHpUWGQamfS2pa3S31_a-Z9k60VqkheoNGYzp6n0wfnI0VuaVu_TZ6K1V3QvKqmaYzYBH0wo1BjwZzCZ7dv2NnxyFDpwDRnuqGmDYPw47fLT3TPxZy9rsG5aHHWTdnbtfonNHSXToqNw_rxBT0oStZWD51fyVGlMBdohxKMn2KEfpwXMF0sO-UocfiefM5jbuvYY0pvz7v0fTcZTG18FAAA';\nexport var clickable = 'use-styles_clickable__1axilf44';\nexport var deleteBtn = 'use-styles_deleteBtn__1axilf45';\nexport var root = 'use-styles_root__1axilf40';\nexport var selected = 'use-styles_selected__1axilf43';\nexport var tone = {ink:'use-styles_tone_ink__1axilf41',accent:'use-styles_tone_accent__1axilf42'};","import type { MouseEvent } from \"react\";\nimport { XIcon } from \"../icons/x\";\nimport type { ChipProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Reenvía las props nativas; el botón de borrado detiene la propagación al onClick del chip.\nexport function Chip({ selected, tone, onDelete, onClick, children, ...rest }: ChipProps) {\n const clickable = Boolean(onClick);\n const { root, deleteBtn } = useStyles({ selected, tone, clickable });\n\n const handleDelete = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n onDelete?.();\n };\n\n return (\n <span className={root} onClick={onClick} {...rest}>\n {children}\n {onDelete && (\n <button type=\"button\" className={deleteBtn} aria-label=\"Remove\" onClick={handleDelete}>\n <XIcon size={13} />\n </button>\n )}\n </span>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CheckIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { CheckboxProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. La decisión de \"qué clase aplica\" vive acá, no en el JSX.\nexport function useStyles({ checked, disabled }: Pick<CheckboxProps, \"checked\" | \"disabled\">): {\n root: string;\n input: string;\n box: string;\n check: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, disabled && styles.disabled].filter(Boolean).join(\" \"),\n [themeClass, disabled],\n );\n const box = useMemo(\n () => [styles.box, checked && styles.boxChecked].filter(Boolean).join(\" \"),\n [checked],\n );\n return { root, input: styles.input, box, check: styles.check };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/checkbox/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fOXpvZ2E5MCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLXNtX19lM2dydXIxYSk7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXRleHRfX2UzZ3J1cjEpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbWFsbC1zaXplX19lM2dydXIxMCk7CiAgY29sb3I6IHZhcigtLWZnMV9fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2JveF9fOXpvZ2E5MSB7CiAgd2lkdGg6IDE4cHg7CiAgaGVpZ2h0OiAxOHB4OwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLXJ1bGVfX2UzZ3J1cjFwKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tZmcxX19lM2dydXIyYyk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWJhc2VfX2UzZ3J1cjFtKTsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZmxleC1zaHJpbms6IDA7CiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLWR1ci1mYXN0X19lM2dydXIyMSkgdmFyKC0tZWFzZS1pbmtfX2UzZ3J1cjI0KTsKfQouc3VyZmFjZXNfc3JPbmx5X182aHMwZmcwOmZvY3VzLXZpc2libGUgKyAudXNlLXN0eWxlc19ib3hfXzl6b2dhOTEgewogIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1mb2N1c19fZTNncnVyMnEpOwogIG91dGxpbmUtb2Zmc2V0OiAycHg7Cn0KLnVzZS1zdHlsZXNfYm94Q2hlY2tlZF9fOXpvZ2E5MiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmcxX19lM2dydXIyYyk7Cn0KLnVzZS1zdHlsZXNfY2hlY2tfXzl6b2dhOTMgewogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKfQoudXNlLXN0eWxlc19kaXNhYmxlZF9fOXpvZ2E5NCB7CiAgb3BhY2l0eTogMC41OwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0';\nexport var box = 'use-styles_box__9zoga91';\nexport var boxChecked = 'use-styles_boxChecked__9zoga92';\nexport var check = 'use-styles_check__9zoga93';\nexport var disabled = 'use-styles_disabled__9zoga94';\nexport var input = 'surfaces_srOnly__6hs0fg0';\nexport var root = 'use-styles_root__9zoga90';","import type { ChangeEvent } from \"react\";\nimport { CheckIcon } from \"../icons/check\";\nimport type { CheckboxProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Input nativo visualmente oculto para accesibilidad; el box estilizado refleja el estado.\n// Controlado: el estado lo maneja el consumidor vía `checked` + `onChange`.\nexport function Checkbox({\n checked = false,\n onChange,\n label,\n disabled = false,\n id,\n}: CheckboxProps) {\n const { root, input, box, check } = useStyles({ checked, disabled });\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n onChange?.(e.target.checked);\n };\n\n return (\n <label className={root}>\n <input\n type=\"checkbox\"\n className={input}\n id={id}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n />\n <span className={box}>{checked && <CheckIcon size={12} className={check} />}</span>\n {label}\n </label>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { RadioProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({\n disabled,\n className,\n}: Pick<RadioProps, \"disabled\"> & { className?: string }): {\n root: string;\n input: string;\n circle: string;\n dot: string;\n label: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [themeClass, styles.root, disabled && styles.disabled, className].filter(Boolean).join(\" \"),\n [themeClass, disabled, className],\n );\n return {\n root,\n input: styles.input,\n circle: styles.circle,\n dot: styles.dot,\n label: styles.label,\n };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/radio/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA51TQZLbIBC8-xUc40qxZdmurYT9QG55ggrBIM0ag8KA10oqf0-BhNZ2DlvJkemmp2canhIBpzhZoDZ4H9v2Mj033XHHfm0Y00ijlZNg6Cw64MbC9WXDmLTYO44RziSYAhch5HIvR8EuMnzinEapgNO5beHQhxQauc0M413kRp7RTpVZShGucaUWpvLWh5XTNxXdqxlOgTI-epy7_9483YyikWRnQddxmjLOg-Zh1YQ7Tecjl9b6N9CPugqDslBV9_-zpNdEEc3ElXcRXLyF3lDHQbDmy1gEBsB-iO_nzgcNgS-seYqlFlJ2texv3N6wi3HByFvUN-UP1ltlpcZElTafuEnWrr3cHKuFK6choDsJtsuVGKQjjOiduGu5SOkUuJG0Zr5vtgsCkoCjO63IcVtCoBSMVEAthe_OTm37PNDO9DthvErEL0jYWWCf2Udx-RRzTILtx-u8lvUhqkRr2x9lsIXMvTEEsdz566m9f5pDabDk8_U-xOXYSXXqg09O161KlR_A2vf13_d_78fKDmx1dCyOyhcj_AlVKX833nk9lWoVo9K6zFtdP9Iz-K1g9VLMBv4AyDXKoUYEAAA';\nexport var circle = 'use-styles_circle__vy61b42';\nexport var disabled = 'use-styles_disabled__vy61b41';\nexport var dot = 'use-styles_dot__vy61b43';\nexport var input = 'surfaces_srOnly__6hs0fg0';\nexport var label = 'use-styles_label__vy61b44';\nexport var root = 'use-styles_root__vy61b40';","import type { RadioProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Input nativo oculto + círculo/punto estilizados + label.\nexport function Radio({ checked, onChange, label, name, value, disabled }: RadioProps) {\n const { root, input, circle, dot, label: labelClass } = useStyles({ disabled });\n return (\n <label className={root}>\n <input\n className={input}\n type=\"radio\"\n name={name}\n value={value}\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n <span className={circle}>{checked && <span className={dot} />}</span>\n {label != null && <span className={labelClass}>{label}</span>}\n </label>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { SwitchProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ checked }: Pick<SwitchProps, \"checked\">): {\n root: string;\n input: string;\n track: string;\n knob: string;\n label: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n root: [themeClass, styles.root].filter(Boolean).join(\" \"),\n input: styles.input,\n track: [styles.track, checked && styles.trackChecked].filter(Boolean).join(\" \"),\n knob: [styles.knob, checked && styles.knobChecked].filter(Boolean).join(\" \"),\n label: styles.label,\n }),\n [themeClass, checked],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/switch/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6VUy47bMAy85yt03KBQ4DjZbaEee-mtn2DQNm0LZiRXlLJJi_33wrKtZpMsArRH8THDGRLaBEbJ_kzIhbPWF8XWvfR4-JyJ3yshas0DwVkJbUgblA3h6etKCCDdGqk9HliJCo1HN4ZbGJQ4gnuSkgeoUPKhKHDXuuC2sB4rGmu8bOCg6bxUxpDHk0-lsbKyZF2qabdLNq-mdHA85gerJ_a31eZDLaoDflK1ZigJ63WUtgAY6yUQ2Ves79DuEi2urzm8g6pPJNuIOljWXlujhEMCr484gr7q2ndK7PMhutehbjuvRD6_S6j61tlgaiW8A8MDODQ-pqyr0ckZYJpqjrlAmCwb1hfVcT4l2JKuL8IPHF1godaBl7LpJZtAlLhMLI-Dzlr_Cpjb6uBkCZzmy_P1nEFglNr0KbOf7oLwJLlz2vRKZNFpDq6BCrlg98PQuSheOs6aNlONrQLLo2ZdEopP4tFObPDj8SqRD6fJlHR5VeA0yM84yFwsbdMw-thzd-_fOqx6rBNVHqkuN3nf5_dQvbFlgthdXRCUbCn4eEHeDkrkm-fpYAgbr8Ruesy3sd2_P67l_Xik_1o9EP3bzm-NuLZ0H_2YtELwdqR2k7jdR9rKC21fblgISqSE_xzx4_fD-hcuEONXJPkARDGctGdRezyOxeObhjH7PSZT2_ibvf0B90nunGcFAAA';\nexport var input = 'surfaces_srOnly__6hs0fg0';\nexport var knob = 'use-styles_knob__1r6kem73';\nexport var knobChecked = 'use-styles_knobChecked__1r6kem74';\nexport var label = 'use-styles_label__1r6kem75';\nexport var root = 'use-styles_root__1r6kem70';\nexport var track = 'use-styles_track__1r6kem71';\nexport var trackChecked = 'use-styles_trackChecked__1r6kem72';","import type { SwitchProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Input nativo visualmente oculto (role=\"switch\") + track/knob estilizados + label.\nexport function Switch({ checked = false, onChange, label, disabled }: SwitchProps) {\n const { root, input, track, knob, label: labelClass } = useStyles({ checked });\n return (\n <label className={root}>\n <input\n type=\"checkbox\"\n role=\"switch\"\n aria-checked={checked}\n className={input}\n checked={checked}\n disabled={disabled}\n onChange={(event) => {\n if (disabled) return;\n onChange?.(event.target.checked);\n }}\n />\n <span className={track}>\n <span className={knob} />\n </span>\n {label != null && <span className={labelClass}>{label}</span>}\n </label>\n );\n}\n","import {\n type ChangeEvent,\n type MouseEvent,\n type TextareaHTMLAttributes,\n useId,\n useState,\n} from \"react\";\nimport { EyeIcon } from \"../icons/eye\";\nimport { EyeOffIcon } from \"../icons/eye-off\";\nimport type { TextFieldProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado vía onChange(value); soporta password reveal, startIcon y multiline.\nexport function TextField({\n label,\n help,\n error,\n startIcon: StartIcon,\n multiline,\n rows,\n type = \"text\",\n onChange,\n className,\n id,\n ...rest\n}: TextFieldProps) {\n const [reveal, setReveal] = useState(false);\n const isPassword = type === \"password\";\n const hasReveal = isPassword;\n const effectiveType = isPassword ? (reveal ? \"text\" : \"password\") : type;\n\n const autoId = useId();\n const controlId = id ?? autoId;\n\n const classes = useStyles({\n error,\n hasStartIcon: Boolean(StartIcon),\n hasReveal,\n className,\n });\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.value);\n };\n\n const handleTextareaChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e.target.value);\n };\n\n const handleToggleMouseDown = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n };\n\n return (\n <div className={classes.root}>\n {label != null && (\n <label htmlFor={controlId} className={classes.labelText}>\n {label}\n </label>\n )}\n <div className={classes.field}>\n {StartIcon != null && (\n <span className={classes.startIcon}>\n <StartIcon size={18} />\n </span>\n )}\n {multiline ? (\n <textarea\n id={controlId}\n className={classes.input}\n rows={rows ?? 4}\n onChange={handleTextareaChange}\n {...(rest as TextareaHTMLAttributes<HTMLTextAreaElement>)}\n />\n ) : (\n <input\n id={controlId}\n className={classes.input}\n type={effectiveType}\n onChange={handleInputChange}\n {...rest}\n />\n )}\n {hasReveal && (\n <button\n type=\"button\"\n tabIndex={-1}\n className={classes.revealButton}\n aria-label={reveal ? \"Ocultar contraseña\" : \"Mostrar contraseña\"}\n onMouseDown={handleToggleMouseDown}\n onClick={() => setReveal((r) => !r)}\n >\n {reveal ? <EyeOffIcon size={18} /> : <EyeIcon size={18} />}\n </button>\n )}\n </div>\n {help != null && <span className={classes.helpText}>{help}</span>}\n </div>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function EyeIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function EyeOffIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M9.88 9.88a3 3 0 1 0 4.24 4.24\" />\n <path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\" />\n <path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\" />\n <path d=\"m2 2 20 20\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. La decisión de \"qué clase aplica\" vive acá.\ninterface UseStylesArgs {\n error?: boolean;\n hasStartIcon?: boolean;\n hasReveal?: boolean;\n className?: string;\n}\n\nexport function useStyles({ error, hasStartIcon, hasReveal, className }: UseStylesArgs): {\n root: string;\n labelText: string;\n field: string;\n input: string;\n helpText: string;\n startIcon: string;\n revealButton: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(() => {\n const root = [themeClass, styles.root].filter(Boolean).join(\" \");\n const labelText = [styles.labelText, error && styles.labelTextError].filter(Boolean).join(\" \");\n const input = [\n styles.input,\n error && styles.inputError,\n hasStartIcon && styles.inputStartPad,\n hasReveal && styles.inputRevealPad,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n const helpText = [styles.helpText, error && styles.helpTextError].filter(Boolean).join(\" \");\n return {\n root,\n labelText,\n field: styles.field,\n input,\n helpText,\n startIcon: styles.startIcon,\n revealButton: styles.revealButton,\n };\n }, [themeClass, error, hasStartIcon, hasReveal, className]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/text-field/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61VwW7bMAy95yt8GbAcVCRpt7XObcAOuw3r7gEt0Y5aWTQkOnE29N8HybFqN226FkMOgULy8ZGPZC5aj8LzwaDfOCLebHbA19Vukf2ZZZnSvjFwyLPSYLeeZfFbKO1QsiabZ5JMW9tgqaDJsx24j0L4BiSKzm82eFm51i1v5uvZw-xilMpAgeYXdinfMuYrybIoodbmMIDFn2qyNKCt5uvB0-vfOPgxdizwgIWjfTQM_lfR3yAzukhN2yoFOZD32lZirxV6ToR3MSZCsgPrS3J1nrVNg06Cx2CUZMglktVloocvF_vNOXJDxatY8QRGga3QJSQ6QSo1GjUAXEaAhrzutXBogPUusjsRDoyurNCMtc8ziZbRPQXXtmmTHldn9eCo3LFZZ_QoSB0mYvj5M71bpoplNBcg7ytHrVWDT1Gtks9N70NOYcLoX2ILOnVvSfPMk9Fq4vIIsx3BCAdKt35A61-iAJ94L-vo3oBSo_HpB71WyauYv2wJ8XuteJtny8XiQ3hSy0ZbzDNLFns6XWhXTHGkVlB3Xqi8JNn6KNcxZNJekEHtVPbdPOXZgqJ9ni3iZ9V0k4BbKh-DzMkgRgqTcf70IoNXpzqC3TI4_gFpuj_30903XBgsedr1VWdSc09XLkL-xB2CGWF-mWA6XW3fBLpF04xv1vV_2REJTdjfyZosr0YBIXkYEVeDeePlGRhPlLp5x-HxQZ3vkuwAAk-ODxSeTMvY39qnYp0sQrpP2oYNEGfP1CslBxo6eArcoWU_rNO0AheH4WvL_FhEcaaIZ6bD16kKeE8Vd61nXR6EJMtoeWx69rCEMlLG68nZSwdjdCrjP1UDDi3_Q89k63ywH3u3nj38Bcb3PFULCAAA';\nexport var field = 'use-styles_field__vat8gv3';\nexport var helpText = 'use-styles_helpText__vat8gv8';\nexport var helpTextError = 'use-styles_helpTextError__vat8gv9';\nexport var input = 'use-styles_input__vat8gv4';\nexport var inputError = 'use-styles_inputError__vat8gv5';\nexport var inputRevealPad = 'use-styles_inputRevealPad__vat8gv7';\nexport var inputStartPad = 'use-styles_inputStartPad__vat8gv6';\nexport var labelText = 'use-styles_labelText__vat8gv1';\nexport var labelTextError = 'use-styles_labelTextError__vat8gv2';\nexport var revealButton = 'use-styles_revealButton__vat8gvb';\nexport var root = 'use-styles_root__vat8gv0';\nexport var startIcon = 'use-styles_startIcon__vat8gva';","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { IconButtonProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({\n active = false,\n tone = \"ink\",\n}: Pick<IconButtonProps, \"active\" | \"tone\">): {\n root: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [themeClass, styles.root, tone === \"accent\" && styles.accent, active && styles.active]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, active, tone],\n );\n return { root };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/icon-button/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMThucDBxMDAgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc21fX2UzZ3J1cjFhKTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBjb2xvcjogdmFyKC0tZmcyX19lM2dydXIyZCk7CiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1ib3JkZXItaGFpcl9fZTNncnVyMW8pOwogIGJvcmRlci1zdHlsZTogc29saWQ7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246IGFsbCB2YXIoLS1kdXItZmFzdF9fZTNncnVyMjEpIHZhcigtLWVhc2UtaW5rX19lM2dydXIyNCk7Cn0KLnVzZS1zdHlsZXNfcm9vdF9fMThucDBxMDA6aG92ZXI6bm90KDpkaXNhYmxlZCkgewogIGJhY2tncm91bmQ6IHZhcigtLWJnM19fZTNncnVyMmEpOwp9Ci51c2Utc3R5bGVzX3Jvb3RfXzE4bnAwcTAwOmRpc2FibGVkIHsKICBjb2xvcjogdmFyKC0tZmczX19lM2dydXIyZSk7CiAgb3BhY2l0eTogMC41OwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLnVzZS1zdHlsZXNfcm9vdF9fMThucDBxMDA6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIycSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoudXNlLXN0eWxlc19hY3RpdmVfXzE4bnAwcTAxIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzNfX2UzZ3J1cjJhKTsKICBjb2xvcjogdmFyKC0tYWNjZW50X19lM2dydXIyaik7Cn0KLnVzZS1zdHlsZXNfYWNjZW50X18xOG5wMHEwMiB7CiAgY29sb3I6IHZhcigtLWFjY2VudF9fZTNncnVyMmopOwp9';\nexport var accent = 'use-styles_accent__18np0q02';\nexport var active = 'use-styles_active__18np0q01';\nexport var root = 'use-styles_root__18np0q00';","import type { IconButtonProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// El icono es un componente (Icon); el botón lo renderiza fijando el tamaño.\nexport function IconButton({ icon: Icon, active, tone, title, ...rest }: IconButtonProps) {\n const { root } = useStyles({ active, tone });\n return (\n <button className={root} aria-label={title} title={title} {...rest}>\n <Icon size={18} />\n </button>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts` (los estilos). El componente solo aplica lo que devuelve este\n// hook. El themeClass va en el slot raíz; los demás slots heredan las vars desde ahí.\nexport function useStyles(): {\n root: string;\n header: string;\n body: string;\n footer: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(() => `${themeClass} ${styles.root}`, [themeClass]);\n return { root, header: styles.header, body: styles.body, footer: styles.footer };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/card/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMWZ1dmQwMjAgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlcjogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKSBzb2xpZCB2YXIoLS1ib3JkZXIxX19lM2dydXIyZyk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnX19lM2dydXIxbCk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudXNlLXN0eWxlc19oZWFkZXJfXzFmdXZkMDIxIHsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1sZ19fZTNncnVyMWMpOwogIGJvcmRlci1ib3R0b206IHZhcigtLWJvcmRlci1oYWlyX19lM2dydXIxbykgc29saWQgdmFyKC0tYm9yZGVyMV9fZTNncnVyMmcpOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLnVzZS1zdHlsZXNfYm9keV9fMWZ1dmQwMjIgewogIHBhZGRpbmc6IHZhcigtLXNwYWNlLWxnX19lM2dydXIxYyk7Cn0KLnVzZS1zdHlsZXNfZm9vdGVyX18xZnV2ZDAyMyB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtbGdfX2UzZ3J1cjFjKTsKICBib3JkZXItdG9wOiB2YXIoLS1ib3JkZXItaGFpcl9fZTNncnVyMW8pIHNvbGlkIHZhcigtLWJvcmRlcjFfX2UzZ3J1cjJnKTsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9';\nexport var body = 'use-styles_body__1fuvd022';\nexport var footer = 'use-styles_footer__1fuvd023';\nexport var header = 'use-styles_header__1fuvd021';\nexport var root = 'use-styles_root__1fuvd020';","import type { CardProps, CardSectionProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Compound component: el consumidor compone las secciones explícitamente\n// (Card.Header / Card.Body / Card.Footer) en vez de pasar nodos por props.\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\nfunction CardRoot({ children, ...rest }: CardProps) {\n const { root } = useStyles();\n return (\n <div className={root} {...rest}>\n {children}\n </div>\n );\n}\n\nfunction CardHeader({ children, ...rest }: CardSectionProps) {\n const { header } = useStyles();\n return (\n <div className={header} {...rest}>\n {children}\n </div>\n );\n}\n\nfunction CardBody({ children, ...rest }: CardSectionProps) {\n const { body } = useStyles();\n return (\n <div className={body} {...rest}>\n {children}\n </div>\n );\n}\n\nfunction CardFooter({ children, ...rest }: CardSectionProps) {\n const { footer } = useStyles();\n return (\n <div className={footer} {...rest}>\n {children}\n </div>\n );\n}\n\nCardRoot.displayName = \"Card\";\nCardHeader.displayName = \"Card.Header\";\nCardBody.displayName = \"Card.Body\";\nCardFooter.displayName = \"Card.Footer\";\n\nexport const Card = Object.assign(CardRoot, {\n Header: CardHeader,\n Body: CardBody,\n Footer: CardFooter,\n});\n","import type { IconProps } from \"../types\";\n\nexport function CircleCheckIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CircleXIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6\" />\n <path d=\"m9 9 6 6\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function InfoIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function TriangleAlertIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { AlertProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. El componente solo aplica lo que devuelve este hook.\nexport function useStyles({\n severity = \"info\",\n className,\n}: Pick<AlertProps, \"severity\" | \"className\">): {\n root: string;\n iconSlot: string;\n content: string;\n titleText: string;\n body: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, styles.severity[severity], className].filter(Boolean).join(\" \"),\n [themeClass, severity, className],\n );\n return {\n root,\n iconSlot: styles.iconSlot,\n content: styles.content,\n titleText: styles.titleText,\n body: styles.body,\n };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/alert/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WUQW6DMBBF9zmFl-3CUZO0aUuP0e6RwYMZxXiQbRLSqnevINghIUHqCln_z38zhmHZOODOHzW41BL5NMW9K7fNE_tZMCbR1VocE1ZoaD8WjClRJ2wv7APnrhY58EqmKWyUbewqe-wctZASjZpxXShaRSXv6zOR75SlxsgQkal18KzfTx6yEmzU-xMvBdqYRY_MkUZ5YVnFGDWK4RoKzw8ofZmwTd2OFCskNi5wTieeCQeRUw1BLXf43Y89lGbUfix-F8vR9TrYg0V_TNEUFO551d_zuJOcNMXZTtah67qHzet3kLQLwPU8sDMOcdUUd6XegR2ENQG3mcedrEOkmQIn-h2kFEaBDdDneWgwD7E0xd5wXIIxJ_Opz-vycntduid3pUWzS9jTCIOm7Bq_js3JeDAxdTuTKtFC7pFM0mU2lbm5nq2Ln-r7dMxCnVcin8zo0Wv4gja289q3U5Dx_ACoSh_fUn_iDirMSJ93_fu_yIzkMdDeetpV8flPILviP4n3QqO-BAAA';\nexport var body = 'use-styles_body__ivsh6u8';\nexport var content = 'use-styles_content__ivsh6u6';\nexport var iconSlot = 'use-styles_iconSlot__ivsh6u5';\nexport var root = 'use-styles_root__ivsh6u0';\nexport var severity = {info:'use-styles_severity_info__ivsh6u1',ok:'use-styles_severity_ok__ivsh6u2',warn:'use-styles_severity_warn__ivsh6u3',danger:'use-styles_severity_danger__ivsh6u4'};\nexport var titleText = 'use-styles_titleText__ivsh6u7';","import { CircleCheckIcon } from \"../icons/circle-check\";\nimport { CircleXIcon } from \"../icons/circle-x\";\nimport { InfoIcon } from \"../icons/info\";\nimport { TriangleAlertIcon } from \"../icons/triangle-alert\";\nimport type { Icon } from \"../icons/types\";\nimport type { AlertProps, AlertSeverity } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Reenvía las props nativas; el icono por defecto depende de la severidad.\nconst defaultIcons: Record<AlertSeverity, Icon> = {\n info: InfoIcon,\n ok: CircleCheckIcon,\n warn: TriangleAlertIcon,\n danger: CircleXIcon,\n};\n\nexport function Alert({\n severity = \"info\",\n title,\n icon,\n className,\n children,\n ...rest\n}: AlertProps) {\n const styles = useStyles({ severity, className });\n const IconComponent = icon ?? defaultIcons[severity];\n return (\n <div role=\"alert\" className={styles.root} {...rest}>\n <span className={styles.iconSlot}>\n <IconComponent />\n </span>\n <div className={styles.content}>\n {title != null && <div className={styles.titleText}>{title}</div>}\n {children != null && <div className={styles.body}>{children}</div>}\n </div>\n </div>\n );\n}\n","import { cloneElement, useId, useState } from \"react\";\nimport type { TooltipProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Maneja el estado `open` local; muestra en hover/focus y oculta en leave/blur.\n// Accesibilidad: enlaza el bubble (role=\"tooltip\") al trigger via aria-describedby\n// mientras está abierto, clonando el children (el elemento interactivo).\nexport function Tooltip({ label, children, placement }: TooltipProps) {\n const [open, setOpen] = useState(false);\n const tooltipId = useId();\n const { wrapper, bubble } = useStyles({ placement });\n\n const show = () => setOpen(true);\n const hide = () => setOpen(false);\n\n const previousDescribedBy = (children.props as { \"aria-describedby\"?: string })[\n \"aria-describedby\"\n ];\n const describedBy = open\n ? [previousDescribedBy, tooltipId].filter(Boolean).join(\" \")\n : previousDescribedBy;\n\n const trigger = cloneElement(children, { \"aria-describedby\": describedBy });\n\n return (\n <span className={wrapper} onMouseEnter={show} onMouseLeave={hide} onFocus={show} onBlur={hide}>\n {trigger}\n {open && (\n <span id={tooltipId} role=\"tooltip\" className={bubble}>\n {label}\n </span>\n )}\n </span>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { TooltipProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ placement = \"top\" }: Pick<TooltipProps, \"placement\">): {\n wrapper: string;\n bubble: string;\n} {\n const { themeClass } = useTheme();\n const wrapper = useMemo(\n () => [themeClass, styles.wrapper].filter(Boolean).join(\" \"),\n [themeClass],\n );\n const bubble = useMemo(\n () => [styles.bubble, styles.placement[placement]].filter(Boolean).join(\" \"),\n [placement],\n );\n return { wrapper, bubble };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/tooltip/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfd3JhcHBlcl9faDlrdmgwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7Cn0KLnVzZS1zdHlsZXNfYnViYmxlX19oOWt2aDEgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9fX2UzZ3J1cjIpOwogIGZvbnQtc2l6ZTogMTFweDsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZV9fZTNncnVyMXQpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXhzX19lM2dydXIxOSkgdmFyKC0tc3BhY2Utc21fX2UzZ3J1cjFhKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgei1pbmRleDogMTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoudXNlLXN0eWxlc19wbGFjZW1lbnRfdG9wX19oOWt2aDIgewogIGJvdHRvbTogMTAwJTsKICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS14c19fZTNncnVyMTkpOwp9Ci51c2Utc3R5bGVzX3BsYWNlbWVudF9ib3R0b21fX2g5a3ZoMyB7CiAgdG9wOiAxMDAlOwogIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLXhzX19lM2dydXIxOSk7Cn0';\nexport var bubble = 'use-styles_bubble__h9kvh1 surfaces_inkySurface__6hs0fg2';\nexport var placement = {top:'use-styles_placement_top__h9kvh2',bottom:'use-styles_placement_bottom__h9kvh3'};\nexport var wrapper = 'use-styles_wrapper__h9kvh0';","import { type KeyboardEvent, useEffect, useId, useRef, useState } from \"react\";\nimport { ChevronDownIcon } from \"../icons/chevron-down\";\nimport type { SelectProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional + estado de apertura/navegación. La lógica de estilos vive en use-styles.ts.\nexport function Select({ options, value, onChange, placeholder, label, disabled }: SelectProps) {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(0);\n const rootRef = useRef<HTMLDivElement>(null);\n const baseId = useId();\n const labelId = `${baseId}-label`;\n const optionId = (index: number) => `${baseId}-option-${index}`;\n const {\n root,\n label: labelClass,\n trigger,\n placeholder: placeholderClass,\n chevron,\n menu,\n optionClass,\n } = useStyles({ open });\n\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (event: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(event.target as Node)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", onPointerDown);\n return () => document.removeEventListener(\"mousedown\", onPointerDown);\n }, [open]);\n\n const selected = options.find((option) => option.value === value);\n\n const selectAt = (index: number) => {\n const option = options[index];\n if (option) onChange?.(option.value);\n setOpen(false);\n };\n\n const handleSelect = (optionValue: string) => {\n onChange?.(optionValue);\n setOpen(false);\n };\n\n const openMenu = () => {\n const current = options.findIndex((option) => option.value === value);\n setActiveIndex(current >= 0 ? current : 0);\n setOpen(true);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) return;\n switch (event.key) {\n case \"Escape\":\n setOpen(false);\n break;\n case \"ArrowDown\":\n event.preventDefault();\n if (!open) {\n openMenu();\n } else {\n setActiveIndex((index) => (index + 1) % options.length);\n }\n break;\n case \"ArrowUp\":\n event.preventDefault();\n if (!open) {\n openMenu();\n } else {\n setActiveIndex((index) => (index - 1 + options.length) % options.length);\n }\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n if (!open) {\n openMenu();\n } else {\n selectAt(activeIndex);\n }\n break;\n default:\n break;\n }\n };\n\n return (\n <div ref={rootRef} className={root}>\n {label && (\n <span id={labelId} className={labelClass}>\n {label}\n </span>\n )}\n <button\n type=\"button\"\n className={trigger}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-labelledby={label ? labelId : undefined}\n aria-activedescendant={open ? optionId(activeIndex) : undefined}\n onClick={() => {\n if (disabled) return;\n if (open) {\n setOpen(false);\n } else {\n openMenu();\n }\n }}\n onKeyDown={handleKeyDown}\n >\n {selected ? selected.label : <span className={placeholderClass}>{placeholder}</span>}\n <span className={chevron}>\n <ChevronDownIcon size={18} />\n </span>\n </button>\n {open && (\n <div className={menu} role=\"listbox\">\n {options.map((option, index) => {\n const isSelected = option.value === value;\n const isActive = index === activeIndex;\n return (\n // biome-ignore lint/a11y/useKeyWithClickEvents: keyboard nav lives on the trigger via aria-activedescendant; options are not focusable.\n <div\n key={option.value}\n id={optionId(index)}\n role=\"option\"\n tabIndex={-1}\n aria-selected={isSelected}\n className={optionClass(isSelected, isActive)}\n onClick={() => handleSelect(option.value)}\n >\n {option.label}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ChevronDownIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + el estado relevante y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({\n open = false,\n}: {\n open?: boolean;\n}): {\n root: string;\n label: string;\n trigger: string;\n placeholder: string;\n chevron: string;\n menu: string;\n optionClass: (selected: boolean, active: boolean) => string;\n} {\n const { themeClass } = useTheme();\n return useMemo(() => {\n const chevron = [styles.chevron, open && styles.chevronOpen].filter(Boolean).join(\" \");\n return {\n root: [themeClass, styles.root].filter(Boolean).join(\" \"),\n label: styles.label,\n trigger: styles.trigger,\n placeholder: styles.placeholder,\n chevron,\n menu: styles.menu,\n optionClass: (selected: boolean, active: boolean) =>\n [styles.option, selected && styles.optionSelected, active && styles.optionActive]\n .filter(Boolean)\n .join(\" \"),\n };\n }, [themeClass, open]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/select/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VWQW7bMBC8-xW8FIiBMrCcpEnkU2-99ZAHGBS5kphQXIGkbDlF_16Qsigplu2gKFD4YJjcWc7ODpe-bSxQ6w4K7NYguu022Sf8vc5W5NeCkBqtdBJ1Sgwo5uQONgtChLS1YoeU5Apav-C_qZAGeBfMUTWV9jsFq1OyY-aGUlszDrS12y3cFaYxyfNys_i9uB0xUCwDFSkkgUKO2tGcVVId-kxhqUKNfar1ctNHWvkOfZyD1lHOak8qbMSj7wNASQ20BFmUbhbi93-E7Qh86IDgHJhQkdTFPDaEvHQREf4Y4CHQGaZtjqZKSVPXYDizQVyOCk2stLiLNcKJXM7IogATBVsHwU6689pYJ_MD5agdaJeSrhMZuD1A6BJTstBUOqhsSjhoB2a2ebaKlbBQyV4KV6YkWa2--J81E2IkSAeqRARly_M7Hp9h6_sUUmRoBBiaYbu54AIvZUxywQUZisPEAnY5I3YSxeYdH8bfCoONFn1MVqxjzPORc-B5VOIY1a2VTJpIDsfRoYEpsaikGC1P6HRrw3HlOIFhQja2D-1-0YzZweJVV2BjrE9Zo-y7GvQIHU-JgtyFNW_G400fcznmF42hObNR6XXSNxKYBSr1W9y5X37t2lgygfu_wV91eZojb2zwOjbOX9KUaNRwTkjGvaXjCa-D1QLHlKzCZ123E8AL5gNIfYKWkJZlCkRgdvEazztriGGT3mn0_VK4B_GRRK0YhxKVGBG5u37-NAkvYWdQxwT30zEidZiTk1lvSyP1W0pWVyfW1Ftx6P0LYxx5_6xh4P4QuI9mq0HHHNwkTysBxUmKCnQTsd8-PHkss6gaF3zlsB7GnL810xnn7Rdv3lMo24yflbNRSlrXT4PewxUzhdRXoV0YDcwuvLBnpvJMwvPT951KLaD1CnxUEMNzFzV87DScO3HyeFx-B_7PtD-ZlZcrTUvcgQn1Xr_Nc6leQAF3IGLKp9ObOzO75lJ95_6_WUz0_FlWfwC_NyyP_wkAAA';\nexport var chevron = 'use-styles_chevron__1w1czpb4';\nexport var chevronOpen = 'use-styles_chevronOpen__1w1czpb5';\nexport var label = 'use-styles_label__1w1czpb1';\nexport var menu = 'use-styles_menu__1w1czpb6 surfaces_panelSurface__6hs0fg1';\nexport var option = 'use-styles_option__1w1czpb7';\nexport var optionActive = 'use-styles_optionActive__1w1czpb9';\nexport var optionSelected = 'use-styles_optionSelected__1w1czpb8';\nexport var placeholder = 'use-styles_placeholder__1w1czpb3';\nexport var root = 'use-styles_root__1w1czpb0';\nexport var trigger = 'use-styles_trigger__1w1czpb2';","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles(): {\n wrapper: string;\n label: string;\n root: string;\n track: string;\n range: string;\n thumb: string;\n input: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(() => {\n const root = [themeClass, styles.root].filter(Boolean).join(\" \");\n return {\n wrapper: styles.wrapper,\n label: styles.label,\n root,\n track: styles.track,\n range: styles.range,\n thumb: styles.thumb,\n input: styles.input,\n };\n }, [themeClass]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/slider/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5VUy24jIRC8-yu4rLQ-EHn8iBLyMRYz9IyRGXoCjR-7yn77Cjxgx04cWT710FRVV7V5Ch64p6MBv3aItF7jdr96tTP2d8LYgF6TRiuYAyNJ7-BtwtgGdLchwebL4RDrvVa0EayazX7FUmk_GHkUrDWQzqXRneWaoPeCNWAJ3NvkY_J0QU1ONtvMXSXuzPI1SS2bbecwWCXYTrrfnNfdYr2GReeCm8tp6kGnwHEnlQ4-t50q3gZjcntlp9d6nLQdZD3zKy9k7dEE-uTFqPJWVttVRVbzuKzIq6NjHHZgyQtm0cK1XG2HUKJb3JGrrQfKnH6QDfCIVyhfpl94nWfMdS9dp-2PKDjIRtNRsFmsmuA8OpHHuT-BUNrL2oBKo-SrFolLY3AP6mZ_NqGv8_XlHQPyaM-nvMpoY30ajRtoSTD-Mob6WGAP7MCoZlzgkSaYs5PDZXeaVTCPRquLzw2a6M73VAfuN1LhviSWKu770rm6s2mMkZM2e3lGG8FUcLyVngpWNR1PQHrg2m7LyfLmb3aVeotN8Hynva4NsH_sh4QvJ5ul32I4ZB8iVGF-v2E2sgaT4VYJrrxbtcFme7ENNRJh_3nfDwW8ek3mtWiJt7LX5liyiJ96tFh0nDu9_gOCVfPThhmgaHyE1rbL99OjqG0X1wRc4QsJheBAPCXTousFC8MArpE-JXa1EvMiQN0YsXcy3sxWPH9jxacn4eM_lIAwIzYGAAA';\nexport var input = 'use-styles_input__okw59n3';\nexport var label = 'use-styles_label__okw59n5';\nexport var range = 'use-styles_range__okw59n2';\nexport var root = 'use-styles_root__okw59n0';\nexport var thumb = 'use-styles_thumb__okw59n4';\nexport var track = 'use-styles_track__okw59n1';\nexport var wrapper = 'use-styles_wrapper__okw59n6';","import type { ChangeEvent } from \"react\";\nimport type { SliderProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Un <input type=\"range\"> nativo (opacity 0) se superpone para interacción + teclado;\n// las dimensiones dinámicas (percent) se aplican vía inline style acá.\nexport function Slider({\n value = 0,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled,\n label,\n}: SliderProps) {\n const { wrapper, label: labelClass, root, track, range, thumb, input } = useStyles();\n\n const span = max - min;\n const percent = span > 0 ? ((value - min) / span) * 100 : 0;\n const clamped = Math.max(0, Math.min(100, percent));\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(Number(e.target.value));\n };\n\n return (\n <span className={wrapper}>\n {label ? <span className={labelClass}>{label}</span> : null}\n <span className={root}>\n <span className={track} />\n <span className={range} style={{ width: `${clamped}%` }} />\n <input\n className={input}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n disabled={disabled}\n onChange={handleChange}\n />\n <span className={thumb} style={{ left: `${clamped}%` }} />\n </span>\n </span>\n );\n}\n","import { useState } from \"react\";\nimport { ChevronDownIcon } from \"../icons/chevron-down\";\nimport type { AccordionProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Estado local `open` (string[]); el toggle respeta `multiple`.\nexport function Accordion({\n items,\n multiple = false,\n defaultOpen = [],\n className,\n}: AccordionProps) {\n const [open, setOpen] = useState<string[]>(defaultOpen);\n const { root, item, header, chevronFor, panel } = useStyles({ className });\n\n const toggle = (id: string) => {\n setOpen((current) => {\n const isOpen = current.includes(id);\n if (isOpen) return current.filter((x) => x !== id);\n return multiple ? [...current, id] : [id];\n });\n };\n\n return (\n <div className={root}>\n {items.map((it) => {\n const isOpen = open.includes(it.id);\n const panelId = `accordion-panel-${it.id}`;\n const headerId = `accordion-header-${it.id}`;\n return (\n <div key={it.id} className={item}>\n <button\n type=\"button\"\n id={headerId}\n className={header}\n aria-expanded={isOpen}\n aria-controls={panelId}\n onClick={() => toggle(it.id)}\n >\n {it.title}\n <ChevronDownIcon className={chevronFor(isOpen)} />\n </button>\n {isOpen && (\n <div id={panelId} className={panel} role=\"region\" aria-labelledby={headerId}>\n {it.content}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { AccordionProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ className }: Pick<AccordionProps, \"className\">): {\n root: string;\n item: string;\n header: string;\n chevronFor: (open: boolean) => string;\n panel: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n root: [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n item: styles.item,\n header: styles.header,\n chevronFor: (open: boolean) =>\n [styles.chevron, open && styles.chevronOpen].filter(Boolean).join(\" \"),\n panel: styles.panel,\n }),\n [themeClass, className],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/accordion/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61Ty27bMBC8-yt4KRAfGEh2CrT0R_QTBFpcSoxprrpc-dEi_16IshjZSZ0A7U0id2dmZ4ePfQQZ-ewhVoTIVVXWz2Ta74X4vRBii2SAlDhoepBy_JOtdlRVsG6opxKXIqJ35qqknK5XzXKTYSRp4_o4oY1_0jcZy6diPABZj0clWmcMhM3iZfE4k-kY9llmOZMpt8iM-39Ue49MeR1Z1q3z5j3egAFuAVrQBihDrFLf0RlulSiL4sswsXGx8_qshPVwGg6e-8jOnmWNgSGwErHTNcgt8BEGQ4TQ3jVBDuqiEjUEBhqOG91N448te5Nn3yZ3O22MC82dqqub2XbqcZW63jWEfTBKMOkQO00QeDMLy2iDEHVPEUmJDt2kz2JgafXe-fOkIB0xnDgTJZ4aPebg2eZ1R6OMoUEmE5TwYC_8JxndrzRd3kzyMwl17DCo2QAXcNOTtDpm_lU5WQA6gnRhl2-e3uTjdr2qHeI7hmPm1CVuzTpD6Y-hLNZ9lAcX3dZDgsSevQugxKo7XQU5lWbsn-M7GoslWhuBU88tZd3CgTBkznViGVIoY0su7JQo3lnGKjOZ5a296dsi7f-Huxd9Pzp41fiUNGYaJQhZMzyU3woDbx9wpwP43Pw1Nec3UPw96_dfwQeGfDbmL38AClAqMH8FAAA';\nexport var chevron = 'use-styles_chevron__1cjrdh93';\nexport var chevronOpen = 'use-styles_chevronOpen__1cjrdh94';\nexport var header = 'use-styles_header__1cjrdh92';\nexport var item = 'use-styles_item__1cjrdh91';\nexport var panel = 'use-styles_panel__1cjrdh95';\nexport var root = 'use-styles_root__1cjrdh90';","import { Fragment } from \"react\";\nimport { ChevronRightIcon } from \"../icons/chevron-right\";\nimport type { BreadcrumbsProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Reenvía las props nativas. El último item es el actual (sin link).\nexport function Breadcrumbs({ items, className, ...rest }: BreadcrumbsProps) {\n const { root, crumb, current, separator } = useStyles({ className });\n return (\n <nav aria-label=\"Breadcrumb\" className={root} {...rest}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const key = index;\n return (\n <Fragment key={key}>\n {isLast ? (\n <span className={current} aria-current=\"page\">\n {item.label}\n </span>\n ) : item.href ? (\n <a className={crumb} href={item.href}>\n {item.label}\n </a>\n ) : (\n <span className={crumb}>{item.label}</span>\n )}\n {!isLast && (\n <span className={separator}>\n <ChevronRightIcon size={14} />\n </span>\n )}\n </Fragment>\n );\n })}\n </nav>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ChevronRightIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { BreadcrumbsProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ className }: Pick<BreadcrumbsProps, \"className\">): {\n root: string;\n crumb: string;\n current: string;\n separator: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n [themeClass, className],\n );\n return { root, crumb: styles.crumb, current: styles.current, separator: styles.separator };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/breadcrumbs/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fN3UwZHU2MCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2Utc21fX2UzZ3J1cjFhKTsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IDEycHg7CiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNraW5nLXdpZGVfX2UzZ3J1cjF0KTsKfQoudXNlLXN0eWxlc19jcnVtYl9fN3UwZHU2MSB7CiAgY29sb3I6IHZhcigtLWZnMl9fZTNncnVyMmQpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoudXNlLXN0eWxlc19jcnVtYl9fN3UwZHU2MTpob3ZlciB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiB2YXIoLS1hY2NlbnRfX2UzZ3J1cjJqKTsKICBjb2xvcjogdmFyKC0tYWNjZW50X19lM2dydXIyaik7Cn0KLnVzZS1zdHlsZXNfY3J1bWJfXzd1MGR1NjE6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIycSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoudXNlLXN0eWxlc19jdXJyZW50X183dTBkdTYyIHsKICBjb2xvcjogdmFyKC0tZmcxX19lM2dydXIyYyk7Cn0KLnVzZS1zdHlsZXNfc2VwYXJhdG9yX183dTBkdTYzIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGNvbG9yOiB2YXIoLS1mZzNfX2UzZ3J1cjJlKTsKfQ';\nexport var crumb = 'use-styles_crumb__7u0du61';\nexport var current = 'use-styles_current__7u0du62';\nexport var root = 'use-styles_root__7u0du60';\nexport var separator = 'use-styles_separator__7u0du63';","import type { IconProps } from \"../types\";\n\nexport function ChevronLeftIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts` (los estilos). El componente solo aplica lo que devuelve.\nexport function useStyles(): {\n root: string;\n pageBtnFor: (active: boolean) => string;\n ellipsis: string;\n nav: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n root: [themeClass, styles.root].filter(Boolean).join(\" \"),\n pageBtnFor: (active: boolean) =>\n [styles.pageBtn, active && styles.pageActive].filter(Boolean).join(\" \"),\n ellipsis: styles.ellipsis,\n nav: [styles.pageBtn, styles.nav].join(\" \"),\n }),\n [themeClass],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/pagination/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA9VUsXbbMAzc_RUco4F5le0hZab2R_RgEaLQ0KRKkI7tvv57nymLlp2mTocOHQkc7sADyMfEKDkeLHITvI9NU8PRHH3_SfxYCKGJBwsHJTqL--eFEGDJOEkRt6xEiy5iOIUNDErsIDxIyQO0KPfcNLgyIYX6c_W8-Ll4nAkNYPBrdEWrzlpbcvKVdOyVWK2HrNYjmT5ezh9t51viSN1Btt5FdHGe6ryLsoMt2cPUcQ5tvfNTy8uqIJmOqES9HPVbb30oZaYuBW2u2PigMUyXGFHnWA8UiiN-js6eKMHekp6Fr6TG2EXOzAkCaEo8QceT3ABj0duOcGhfTPDJaSViAMcDBHQx3ysFPqkNniafMoIieacEWHtm1ynIDjiWTurqnEFglOReSmZ9f-yq9zsMyvn4oDQxbCzqKu_CvNezBWZVqOED1BNfpruZ24UJq_n1nY8SrPWvqO8LdL5NLHfEtLGYVXyKlhwqsRz24zzLgrWpvIfl96x5BkvfdYwx1_xO80sbaYdFdvmOO2938Xp_Zumn6r0tuyW5383fDPDP7GgtDUxcuFf_6Z9wu1uj0afdcnjnFSY-fQdosY0T_tokB7vizzr7M4DW5Mz133sqLW__6Y3VVyz_Zo1_Ab4EpDFWBgAA';\nexport var ellipsis = 'use-styles_ellipsis__1azgzoh3';\nexport var nav = 'use-styles_nav__1azgzoh4';\nexport var pageActive = 'use-styles_pageActive__1azgzoh2';\nexport var pageBtn = 'use-styles_pageBtn__1azgzoh1';\nexport var root = 'use-styles_root__1azgzoh0';","import { ChevronLeftIcon } from \"../icons/chevron-left\";\nimport { ChevronRightIcon } from \"../icons/chevron-right\";\nimport type { PaginationProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Calcula la lista de páginas a mostrar con elipsis alrededor de `page`.\n// Siempre incluye la primera y la última; `…` (unicode) marca los huecos.\ntype Item = number | \"ellipsis\";\n\nfunction buildItems(count: number, page: number, siblingCount: number): Item[] {\n const total = Math.max(1, count);\n const first = 1;\n const last = total;\n const start = Math.max(first + 1, page - siblingCount);\n const end = Math.min(last - 1, page + siblingCount);\n\n const items: Item[] = [first];\n if (start > first + 1) items.push(\"ellipsis\");\n for (let n = start; n <= end; n++) items.push(n);\n if (end < last - 1) items.push(\"ellipsis\");\n if (last > first) items.push(last);\n return items;\n}\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\nexport function Pagination({ count, page = 1, onChange, siblingCount = 1 }: PaginationProps) {\n const { root, pageBtnFor, ellipsis, nav } = useStyles();\n const total = Math.max(1, count);\n const current = Math.min(Math.max(1, page), total);\n const items = buildItems(total, current, siblingCount);\n\n const go = (n: number) => onChange?.(Math.min(Math.max(1, n), total));\n\n return (\n <nav className={root} aria-label=\"Pagination\">\n <button\n type=\"button\"\n className={nav}\n aria-label=\"Previous page\"\n disabled={current <= 1}\n onClick={() => go(current - 1)}\n >\n <ChevronLeftIcon size={18} />\n </button>\n {items.map((item, index) =>\n item === \"ellipsis\" ? (\n // biome-ignore lint/suspicious/noArrayIndexKey: ellipsis position is stable per render\n <span key={`ellipsis-${index}`} className={ellipsis}>\n …\n </span>\n ) : (\n <button\n key={item}\n type=\"button\"\n className={pageBtnFor(item === current)}\n aria-current={item === current ? \"page\" : undefined}\n onClick={() => go(item)}\n >\n {item}\n </button>\n ),\n )}\n <button\n type=\"button\"\n className={nav}\n aria-label=\"Next page\"\n disabled={current >= total}\n onClick={() => go(current + 1)}\n >\n <ChevronRightIcon size={18} />\n </button>\n </nav>\n );\n}\n","import { Fragment } from \"react\";\nimport { CheckIcon } from \"../icons/check\";\nimport type { StepperProps } from \"./types\";\nimport { type StepState, useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\nexport function Stepper({ steps, active = 0, className, ...rest }: StepperProps) {\n const { root, step, connector, markerFor, labelFor } = useStyles({ className });\n\n return (\n <div className={root} {...rest}>\n {steps.map((s, index) => {\n const state: StepState = index < active ? \"done\" : index === active ? \"active\" : \"upcoming\";\n const isActive = state === \"active\";\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: steps are a static, ordered list with no stable id.\n <Fragment key={index}>\n <div className={step} aria-current={isActive ? \"step\" : undefined}>\n <span className={markerFor(state)}>\n {state === \"done\" ? <CheckIcon size={14} /> : index + 1}\n </span>\n <span className={labelFor(isActive)}>{s.label}</span>\n </div>\n {index < steps.length - 1 && <span data-part=\"connector\" className={connector} />}\n </Fragment>\n );\n })}\n </div>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { StepperProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. La decisión de \"qué clase aplica\" vive acá, no en el JSX.\nexport type StepState = \"done\" | \"active\" | \"upcoming\";\n\nexport function useStyles({ className }: Pick<StepperProps, \"className\">): {\n root: string;\n step: string;\n connector: string;\n markerFor: (state: StepState) => string;\n labelFor: (active: boolean) => string;\n} {\n const { themeClass } = useTheme();\n\n return useMemo(() => {\n const root = [themeClass, styles.root, className].filter(Boolean).join(\" \");\n const markerFor = (state: StepState) =>\n [\n styles.marker,\n state === \"active\" && styles.markerActive,\n state === \"done\" && styles.markerDone,\n ]\n .filter(Boolean)\n .join(\" \");\n const labelFor = (active: boolean) =>\n [styles.label, active && styles.labelActive].filter(Boolean).join(\" \");\n return { root, step: styles.step, connector: styles.connector, markerFor, labelFor };\n }, [themeClass, className]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/stepper/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WTwXKCMBCG7zzFHsshjqCtNp460_dgYlggGhImCVba6bt3DAZRqdMek2z-799_Z2etRWJdJ9FmRmuXZavXxi1xDl8RQC5sI1lHoZB43EQATIpSEeGwthQ4KodmE31Hs5GKddgEleQfKgAlaygcmHkixDaMI7F1luGiNK1JWHzLqZnZowmk1JM-RO4qCum68ZwKRVm5y3mrTY6GGJaL1gZUfyJFK-VAU_Go_CzaVweJVuJQ3YyrvTsKVkuRj665ltpci6RBIK28wF9j2rXWiaIjXCuHyo2fCq0cKVgtZBdY_qrWSg-0eKi04hMpJGmfzpXForzYy_v-GN-XRrcqp-AMU7ZhBpXzYhKPxFZGqD2F-fSg3rgTBwzjWvhxTWXD-Kmdgb2L76xNVEwB37UacMseN-ogdJkMOvyetB09r-Pfpnkrcm1Gsi3K4OPZ-3gY9MTv6-hepjQeOeBaKeROD7uy8gqnoVFIxnuSnNfkLqe-7Quk9GHUzJRCUZg_XNofs3iL1mIEAAA';\nexport var connector = 'use-styles_connector__79pt4e7';\nexport var label = 'use-styles_label__79pt4e5';\nexport var labelActive = 'use-styles_labelActive__79pt4e6';\nexport var marker = 'use-styles_marker__79pt4e2';\nexport var markerActive = 'use-styles_markerActive__79pt4e3';\nexport var markerDone = 'use-styles_markerDone__79pt4e4';\nexport var root = 'use-styles_root__79pt4e0';\nexport var step = 'use-styles_step__79pt4e1';","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// La decisión de \"qué clase aplica\" (tab activo o no) vive acá, no en el JSX.\nexport function useStyles(): {\n root: string;\n tab: string;\n tabClass: (active: boolean) => string;\n} {\n const { themeClass } = useTheme();\n return useMemo(() => {\n const root = [themeClass, styles.root].filter(Boolean).join(\" \");\n const tabClass = (active: boolean) =>\n [styles.tab, active && styles.tabActive].filter(Boolean).join(\" \");\n return { root, tab: styles.tab, tabClass };\n }, [themeClass]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/tabs/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMWw0bTd0NDAgewogIGRpc3BsYXk6IGZsZXg7CiAgZ2FwOiB2YXIoLS1zcGFjZS1sZ19fZTNncnVyMWMpOwogIGJvcmRlci1ib3R0b206IHZhcigtLWJvcmRlci1oYWlyX19lM2dydXIxbykgc29saWQgdmFyKC0tYm9yZGVyMV9fZTNncnVyMmcpOwp9Ci51c2Utc3R5bGVzX3RhYl9fMWw0bTd0NDEgewogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXNtX19lM2dydXIxYSkgMDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9fX2UzZ3J1cjIpOwogIGZvbnQtc2l6ZTogMTJweDsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZXJfX2UzZ3J1cjF1KTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1mZzNfX2UzZ3J1cjJlKTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHVyLWZhc3RfX2UzZ3J1cjIxKSB2YXIoLS1lYXNlLWlua19fZTNncnVyMjQpOwogIG91dGxpbmU6IG5vbmU7Cn0KLnVzZS1zdHlsZXNfdGFiX18xbDRtN3Q0MTpmb2N1cy12aXNpYmxlIHsKICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZm9jdXNfX2UzZ3J1cjJxKTsKICBvdXRsaW5lLW9mZnNldDogMnB4Owp9Ci51c2Utc3R5bGVzX3RhYkFjdGl2ZV9fMWw0bTd0NDIgewogIGNvbG9yOiB2YXIoLS1mZzFfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc190YWJBY3RpdmVfXzFsNG03dDQyOjphZnRlciB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IHZhcigtLXNwYWNlLW5vbmVfX2UzZ3J1cjE4KTsKICByaWdodDogdmFyKC0tc3BhY2Utbm9uZV9fZTNncnVyMTgpOwogIGJvdHRvbTogLTFweDsKICBoZWlnaHQ6IDJweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnRfX2UzZ3J1cjJqKTsKfQ';\nexport var root = 'use-styles_root__1l4m7t40';\nexport var tab = 'use-styles_tab__1l4m7t41';\nexport var tabActive = 'use-styles_tabActive__1l4m7t42';","import type { TabsProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado: el tab activo lo determina `value`; al clickear se notifica vía `onChange`.\nexport function Tabs({ items, value, onChange }: TabsProps) {\n const { root, tabClass } = useStyles();\n return (\n <div role=\"tablist\" className={root}>\n {items.map((item) => {\n const active = item.value === value;\n return (\n <button\n key={item.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n className={tabClass(active)}\n onClick={() => onChange?.(item.value)}\n >\n {item.label}\n </button>\n );\n })}\n </div>\n );\n}\n","import {\n type KeyboardEvent,\n type MouseEvent,\n type Ref,\n cloneElement,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type { MenuProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Aplica un valor de nodo a un ref (callback o objeto), tolerando null/undefined.\nfunction assignRef<T>(ref: Ref<T> | undefined, value: T | null) {\n if (typeof ref === \"function\") ref(value);\n else if (ref) (ref as { current: T | null }).current = value;\n}\n\n// Presentacional: la lógica de estilos vive en use-styles.ts. Maneja estado real de apertura,\n// clonando el trigger para alternar `open` y cerrando en click-fuera / ESC. Soporta navegación\n// por teclado (flechas, Home/End) y restaura el foco al trigger al cerrar con ESC.\nexport function Menu({ trigger, items }: MenuProps) {\n const { wrapper, list, item, dangerItem } = useStyles();\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const getMenuItems = () =>\n Array.from(listRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"menuitem\"]') ?? []);\n\n const focusItemAt = (index: number) => {\n const menuItems = getMenuItems();\n if (menuItems.length === 0) return;\n const wrapped = (index + menuItems.length) % menuItems.length;\n menuItems[wrapped]?.focus();\n };\n\n const closeAndRestoreFocus = () => {\n setOpen(false);\n triggerRef.current?.focus();\n };\n\n useEffect(() => {\n if (!open) return;\n // Al abrir, enfocar el primer menuitem.\n listRef.current?.querySelector<HTMLButtonElement>('[role=\"menuitem\"]')?.focus();\n\n const onDocMouseDown = (event: globalThis.MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(event.target as Node)) {\n setOpen(false);\n }\n };\n const onKeyDown = (event: globalThis.KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", onDocMouseDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [open]);\n\n const onMenuKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const menuItems = getMenuItems();\n const current = menuItems.indexOf(document.activeElement as HTMLButtonElement);\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n focusItemAt(current + 1);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n focusItemAt(current - 1);\n break;\n case \"Home\":\n event.preventDefault();\n focusItemAt(0);\n break;\n case \"End\":\n event.preventDefault();\n focusItemAt(menuItems.length - 1);\n break;\n case \"Escape\":\n event.preventDefault();\n closeAndRestoreFocus();\n break;\n case \"Tab\":\n // Dejá que Tab mueva el foco fuera del menú (los items están fuera del tab order);\n // solo cerramos. Sin preventDefault para no bloquear el avance natural.\n setOpen(false);\n break;\n }\n };\n\n const triggerProps = trigger.props as { onClick?: (event: MouseEvent) => void };\n // El consumidor puede haber puesto su propio ref en el trigger: lo mergeamos con el nuestro.\n const consumerRef = (trigger as { ref?: Ref<HTMLElement> }).ref;\n const mergedTriggerRef = (node: HTMLElement | null) => {\n triggerRef.current = node;\n assignRef(consumerRef, node);\n };\n const clonedTrigger = cloneElement(trigger, {\n ref: mergedTriggerRef,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n onClick: (event: MouseEvent) => {\n triggerProps.onClick?.(event);\n setOpen((prev) => !prev);\n },\n } as Partial<typeof trigger.props> & {\n ref: Ref<HTMLElement>;\n \"aria-haspopup\": \"menu\";\n \"aria-expanded\": boolean;\n onClick: (event: MouseEvent) => void;\n });\n\n return (\n <div ref={rootRef} className={wrapper}>\n {clonedTrigger}\n {open && (\n <div ref={listRef} role=\"menu\" className={list} onKeyDown={onMenuKeyDown}>\n {items.map((entry, index) => (\n <button\n // biome-ignore lint/suspicious/noArrayIndexKey: items are a static positional list\n key={index}\n type=\"button\"\n role=\"menuitem\"\n tabIndex={-1}\n className={entry.danger ? dangerItem : item}\n onClick={() => {\n entry.onClick?.();\n setOpen(false);\n }}\n >\n {entry.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts` (los estilos). El componente solo aplica lo que devuelve.\nexport function useStyles(): {\n wrapper: string;\n list: string;\n item: string;\n dangerItem: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n wrapper: [themeClass, styles.wrapper].filter(Boolean).join(\" \"),\n list: styles.list,\n item: styles.item,\n dangerItem: [styles.item, styles.danger].join(\" \"),\n }),\n [themeClass],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/menu/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfd3JhcHBlcl9fMXV5eGFqMCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGlubGluZS1mbGV4Owp9Ci51c2Utc3R5bGVzX2xpc3RfXzF1eXhhajEgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtaW4td2lkdGg6IDE4MHB4OwogIHotaW5kZXg6IDIwOwogIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLXhzX19lM2dydXIxOSk7Cn0KLnVzZS1zdHlsZXNfaXRlbV9fMXV5eGFqMiB7CiAgd2lkdGg6IDEwMCU7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXNtX19lM2dydXIxYSkgdmFyKC0tc3BhY2UtbWRfX2UzZ3J1cjFiKTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXRleHRfX2UzZ3J1cjEpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbWFsbC1zaXplX19lM2dydXIxMCk7CiAgY29sb3I6IHZhcigtLWZnMV9fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2l0ZW1fXzF1eXhhajI6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLWJnM19fZTNncnVyMmEpOwp9Ci51c2Utc3R5bGVzX2l0ZW1fXzF1eXhhajI6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIycSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoudXNlLXN0eWxlc19kYW5nZXJfXzF1eXhhajMgewogIGNvbG9yOiB2YXIoLS1kYW5nZXJfX2UzZ3J1cjJvKTsKfQ';\nexport var danger = 'use-styles_danger__1uyxaj3';\nexport var item = 'use-styles_item__1uyxaj2';\nexport var list = 'use-styles_list__1uyxaj1 surfaces_panelSurface__6hs0fg1';\nexport var wrapper = 'use-styles_wrapper__1uyxaj0';","import {\n type MouseEvent,\n type KeyboardEvent as ReactKeyboardEvent,\n useEffect,\n useId,\n useRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { DialogProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Selector de elementos focuseables para el focus trap.\nconst FOCUSABLE =\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n//TODO: usa el patrón composable para header/footer (Dialog.Header, Dialog.Footer) y así evitar props opcionales y mejorar la validación de lo que se pasa como children (p.ej. no permitir pasar un nodo cualquiera como header/footer).// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n//TODO: maneja la logica de apertura/cierre y muevelo a un useDialog para separar responsabilidades y facilitar su reutilización en otros componentes (p.ej. Drawer). Maneja cierre por backdrop, ESC, focus trap, restauración de foco y scroll-lock.\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Maneja cierre por backdrop, ESC, focus trap, restauración de foco y scroll-lock.\nexport function Dialog({ open, onClose, title, actions, children }: DialogProps) {\n const { overlay, surface, titleText, body, actions: actionsClass } = useStyles();\n const surfaceRef = useRef<HTMLDivElement>(null);\n const previouslyFocused = useRef<HTMLElement | null>(null);\n const generatedId = useId();\n const titleId = title != null ? generatedId : undefined;\n\n useEffect(() => {\n if (!open) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [open, onClose]);\n\n // Restauración de foco: guarda el elemento activo al abrir y lo devuelve al cerrar/desmontar.\n useEffect(() => {\n if (!open) return;\n previouslyFocused.current = document.activeElement as HTMLElement | null;\n surfaceRef.current?.focus();\n return () => previouslyFocused.current?.focus?.();\n }, [open]);\n\n // Scroll-lock del body mientras está abierto.\n useEffect(() => {\n if (!open) return;\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previousOverflow;\n };\n }, [open]);\n\n if (!open || typeof document === \"undefined\") return null;\n\n const stop = (event: MouseEvent<HTMLDivElement>) => event.stopPropagation();\n\n // Focus trap: cicla el foco entre los elementos focuseables del surface.\n const onSurfaceKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (event.key !== \"Tab\") return;\n const surfaceEl = surfaceRef.current;\n if (!surfaceEl) return;\n const focusable = Array.from(surfaceEl.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (el) => el.offsetParent !== null || el === surfaceEl,\n );\n if (focusable.length === 0) {\n event.preventDefault();\n surfaceEl.focus();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n if (event.shiftKey) {\n if (active === first || active === surfaceEl) {\n event.preventDefault();\n last.focus();\n }\n } else if (active === last) {\n event.preventDefault();\n first.focus();\n }\n };\n\n return createPortal(\n // biome-ignore lint/a11y/useKeyWithClickEvents: ESC handled by a document keydown listener.\n <div className={overlay} data-testid=\"dialog-overlay\" onClick={onClose}>\n <div\n ref={surfaceRef}\n className={surface}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n tabIndex={-1}\n onClick={stop}\n onKeyDown={onSurfaceKeyDown}\n >\n {title != null && (\n <h2 id={titleId} className={titleText}>\n {title}\n </h2>\n )}\n {children != null && <div className={body}>{children}</div>}\n {actions != null && <div className={actionsClass}>{actions}</div>}\n </div>\n </div>,\n document.body,\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts`. El componente solo aplica lo que devuelve este hook.\nexport function useStyles(): {\n overlay: string;\n surface: string;\n titleText: string;\n body: string;\n actions: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n overlay: [themeClass, styles.overlay].filter(Boolean).join(\" \"),\n surface: styles.surface,\n titleText: styles.titleText,\n body: styles.body,\n actions: styles.actions,\n }),\n [themeClass],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/dialog/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA4VUwXKjMAy95yt82Znm4A4h6WxLf2A_oPeMwQK0NTZri4Sk03_fQQUHkk56Q-hZT-9Z1mMXQAY6GQh7dwBv1Gm_f6JA3XMiPlZCtC4gobOZKLEH_boSAm0AykQyfOeqeK-866zOxEH5BylD4bHZ72Fb-c6nfj2htHetLNEQ-EzkpvMPu7bnrMbQGnXKRGmgH34og5WVSNCETBRgCfzw-28XCMuTLJwlsDRPnSVaDX0mnpLX1efqcaYqdL5UBUyqNqzqtu28SmPTL19NO6-HXsc8R7JW6Cfcxq1FcAb1ArKJZapZGemVxi5M1b4iaapYy4zgXoZaaXeMdnI0Q6a_GdmoXh5RU52J3XPSsm9j_JL8GqJWaY22ioVaVYDsTWTUF0Y8M3BsNXdczXVk0EImrLPwk6tZ6YouyAMGzA2wx_F82vYLnxga5fxbz8ikK0sernRQtKQkJANv0NNEmjJN6SzJUjVoTlkksCTHqZp4EqbhTMAzTFCCnmS95X8T9J2h3E4NWNV0DR5SfzgzHTGX6sdvjxwX8IbhhTMuzldZXQanGG_YV2j5nS2NyJ2Oj3R71wNit8b7vmPAUHFhQbhrAcNvTaDvVF1elZ6pkuTa5WA2Ojaar68Vq2JYQWESvWPRN2vjZj8MCQmWl1alrghDXFIbdbez2SMdLubzP0hNYe8zBQAA';\nexport var actions = 'use-styles_actions__5tstu84';\nexport var body = 'use-styles_body__5tstu83';\nexport var overlay = 'use-styles_overlay__5tstu80';\nexport var surface = 'use-styles_surface__5tstu81';\nexport var titleText = 'use-styles_titleText__5tstu82';","import { createPortal } from \"react-dom\";\nimport { XIcon } from \"../icons/x\";\nimport type { SnackbarProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado: render `null` si !open; sin auto-timer en v1.\n// Se monta en un portal en document.body para escapar de overflow/stacking del contenedor;\n// el slot raíz lleva la clase de tema (themeClass) para no perder los colores al portalizar.\nexport function Snackbar({ open, message, action, onClose }: SnackbarProps) {\n const { root, message: messageClass, closeBtn } = useStyles();\n if (!open || typeof document === \"undefined\") return null;\n return createPortal(\n <div role=\"status\" className={root}>\n <span className={messageClass}>{message}</span>\n {action}\n {onClose && (\n <button type=\"button\" aria-label=\"Close\" className={closeBtn} onClick={onClose}>\n <XIcon size={18} />\n </button>\n )}\n </div>,\n document.body,\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts` (los estilos). El componente solo aplica lo que devuelve.\nexport function useStyles(): {\n root: string;\n message: string;\n closeBtn: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n root: [themeClass, styles.root].filter(Boolean).join(\" \"),\n message: styles.message,\n closeBtn: styles.closeBtn,\n }),\n [themeClass],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/snackbar/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9faWh6c2VwMCB7CiAgcG9zaXRpb246IGZpeGVkOwogIGJvdHRvbTogdmFyKC0tc3BhY2UteGxfX2UzZ3J1cjFkKTsKICBsZWZ0OiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLW1kX19lM2dydXIxYik7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtbWRfX2UzZ3J1cjFiKSB2YXIoLS1zcGFjZS1sZ19fZTNncnVyMWMpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgei1pbmRleDogNjA7Cn0KLnVzZS1zdHlsZXNfbWVzc2FnZV9faWh6c2VwMSB7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdGV4dF9fZTNncnVyMSk7CiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXNtYWxsLXNpemVfX2UzZ3J1cjEwKTsKfQoudXNlLXN0eWxlc19jbG9zZUJ0bl9faWh6c2VwMiB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogbm9uZTsKICBjb2xvcjogdmFyKC0tYmcxX19lM2dydXIyOCk7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyLWZhc3RfX2UzZ3J1cjIxKSB2YXIoLS1lYXNlLWlua19fZTNncnVyMjQpOwogIG91dGxpbmU6IG5vbmU7Cn0KLnVzZS1zdHlsZXNfY2xvc2VCdG5fX2loenNlcDI6aG92ZXIgewogIG9wYWNpdHk6IDAuNzsKfQoudXNlLXN0eWxlc19jbG9zZUJ0bl9faWh6c2VwMjpmb2N1cy12aXNpYmxlIHsKICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZm9jdXNfX2UzZ3J1cjJxKTsKICBvdXRsaW5lLW9mZnNldDogMnB4Owp9';\nexport var closeBtn = 'use-styles_closeBtn__ihzsep2';\nexport var message = 'use-styles_message__ihzsep1';\nexport var root = 'use-styles_root__ihzsep0 surfaces_inkySurface__6hs0fg2';","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { TableProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ className }: Pick<TableProps<Record<string, unknown>>, \"className\">): {\n root: string;\n th: string;\n td: string;\n alignRight: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n [themeClass, className],\n );\n return { root, th: styles.th, td: styles.td, alignRight: styles.alignRight };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/table/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMW4yY3o2aTAgewogIHdpZHRoOiAxMDAlOwogIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdGV4dF9fZTNncnVyMSk7Cn0KLnVzZS1zdHlsZXNfdGhfXzFuMmN6NmkxIHsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IHZhcigtLXRleHQtZXllYnJvdy1zaXplX19lM2dydXI0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZXN0X19lM2dydXIxdik7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tZmczX19lM2dydXIyZSk7CiAgdGV4dC1hbGlnbjogbGVmdDsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1zbV9fZTNncnVyMWEpIHZhcigtLXNwYWNlLW1kX19lM2dydXIxYik7CiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tYm9yZGVyLXJ1bGVfX2UzZ3J1cjFwKSBzb2xpZCB2YXIoLS1ib3JkZXIyX19lM2dydXIyaCk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoudXNlLXN0eWxlc190ZF9fMW4yY3o2aTIgewogIHBhZGRpbmc6IHZhcigtLXNwYWNlLW1kX19lM2dydXIxYik7CiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKSBzb2xpZCB2YXIoLS1ib3JkZXIxX19lM2dydXIyZyk7CiAgY29sb3I6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbWFsbC1zaXplX19lM2dydXIxMCk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoudXNlLXN0eWxlc19hbGlnblJpZ2h0X18xbjJjejZpMyB7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0';\nexport var alignRight = 'use-styles_alignRight__1n2cz6i3';\nexport var root = 'use-styles_root__1n2cz6i0';\nexport var td = 'use-styles_td__1n2cz6i2';\nexport var th = 'use-styles_th__1n2cz6i1';","import type { TableColumn, TableProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Genérico sobre `Row`; reenvía las props nativas de <table>.\nexport function Table<Row extends Record<string, unknown>>({\n columns,\n rows,\n getRowKey,\n className,\n ...rest\n}: TableProps<Row>) {\n const { root, th, td, alignRight } = useStyles({ className });\n const headClass = (column: TableColumn<Row>) =>\n column.align === \"right\" ? `${th} ${alignRight}` : th;\n const cellClass = (column: TableColumn<Row>) =>\n column.align === \"right\" ? `${td} ${alignRight}` : td;\n return (\n <table className={root} {...rest}>\n <thead>\n <tr>\n {columns.map((column) => (\n <th key={column.key} className={headClass(column)}>\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, index) => (\n <tr key={getRowKey ? getRowKey(row, index) : index}>\n {columns.map((column) => (\n <td key={column.key} className={cellClass(column)}>\n {column.render ? column.render(row) : String(row[column.key])}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { AppBarProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ className }: Pick<AppBarProps, \"className\">): {\n root: string;\n brand: string;\n actions: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n [themeClass, className],\n );\n return { root, brand: styles.brand, actions: styles.actions };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/app-bar/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMWgxMzNuaDAgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgZ2FwOiB2YXIoLS1zcGFjZS1sZ19fZTNncnVyMWMpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLW1kX19lM2dydXIxYikgdmFyKC0tc3BhY2UtbGdfX2UzZ3J1cjFjKTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3JkZXItYm90dG9tOiB2YXIoLS1ib3JkZXItaGFpcl9fZTNncnVyMW8pIHNvbGlkIHZhcigtLWJvcmRlcjFfX2UzZ3J1cjJnKTsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Ci51c2Utc3R5bGVzX2JyYW5kX18xaDEzM25oMSB7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZGlzcGxheV9fZTNncnVyMCk7Cn0KLnVzZS1zdHlsZXNfYWN0aW9uc19fMWgxMzNuaDIgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLXNtX19lM2dydXIxYSk7Cn0';\nexport var actions = 'use-styles_actions__1h133nh2';\nexport var brand = 'use-styles_brand__1h133nh1';\nexport var root = 'use-styles_root__1h133nh0';","import type { AppBarProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Reenvía las props nativas; brand/actions/children son nodos que provee el consumidor.\nexport function AppBar({ brand, actions, className, children, ...rest }: AppBarProps) {\n const styles = useStyles({ className });\n return (\n <header className={styles.root} {...rest}>\n {brand !== undefined ? <div className={styles.brand}>{brand}</div> : null}\n {children}\n {actions !== undefined ? <div className={styles.actions}>{actions}</div> : null}\n </header>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { ListItemProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ selected, className }: Pick<ListItemProps, \"selected\" | \"className\">): {\n root: string;\n leading: string;\n content: string;\n trailing: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [themeClass, styles.root, selected && styles.selected, className].filter(Boolean).join(\" \"),\n [themeClass, selected, className],\n );\n return { root, leading: styles.leading, content: styles.content, trailing: styles.trailing };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/list-item/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fa2JyZXExMCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtbWRfX2UzZ3J1cjFiKTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1tZF9fZTNncnVyMWIpIHZhcigtLXNwYWNlLWxnX19lM2dydXIxYyk7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyLWZhc3RfX2UzZ3J1cjIxKSB2YXIoLS1lYXNlLWlua19fZTNncnVyMjQpOwp9Ci51c2Utc3R5bGVzX3Jvb3RfX2ticmVxMTA6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLWJnM19fZTNncnVyMmEpOwp9Ci51c2Utc3R5bGVzX3NlbGVjdGVkX19rYnJlcTExIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzNfX2UzZ3J1cjJhKTsKICBib3gtc2hhZG93OiBpbnNldCAycHggMCAwIHZhcigtLWFjY2VudF9fZTNncnVyMmopOwp9Ci51c2Utc3R5bGVzX2xlYWRpbmdfX2ticmVxMTIgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoudXNlLXN0eWxlc19jb250ZW50X19rYnJlcTEzIHsKICBmbGV4OiAxOwp9Ci51c2Utc3R5bGVzX3RyYWlsaW5nX19rYnJlcTE0IHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0';\nexport var content = 'use-styles_content__kbreq13';\nexport var leading = 'use-styles_leading__kbreq12';\nexport var root = 'use-styles_root__kbreq10';\nexport var selected = 'use-styles_selected__kbreq11';\nexport var trailing = 'use-styles_trailing__kbreq14';","import type { ListItemProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Reenvía las props nativas; leading/trailing son nodos que provee el consumidor.\nexport function ListItem({\n leading,\n trailing,\n selected,\n className,\n children,\n ...rest\n}: ListItemProps) {\n const styles = useStyles({ selected, className });\n return (\n <div className={styles.root} {...rest}>\n {leading != null && <span className={styles.leading}>{leading}</span>}\n <span className={styles.content}>{children}</span>\n {trailing != null && <span className={styles.trailing}>{trailing}</span>}\n </div>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ChevronUpIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"m18 15-6-6-6 6\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SearchIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PlusIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MinusIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M5 12h14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MoreHorizontalIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\n </svg>\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/typography.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7XW0ZKaMBQG4Hufgst6AUMA19V9gd73AZhAImQMCQ2xyHb67h2CwY1mj50tXirnP-H_xhEiPbSyUrith1zTs87pQAsl-zxHfcPfhzj4vQqCgxQ6POCG8WEf_MLqWxiarxopZJ7TtFInlazf7GTH3qmdG5eGl6Xmgp3PzDxngoY1ZVWtvYnx-ndz2eY213P6z3O9k3mZzqJaUxV2LS6ZqPzHmZEf04RNb03azGmFRXeQqtkHp7alqsQdHS-Wkks101TpjELXb6s_q-hWmbCu5XiwyghUnoennTEAfRl1oF9BaJu4h96B0DbnQuNH0PNxPujiQ7NB6Jp2rNsHQgqfMZqNSxNrsKqY2AexF7xG1jpZyrpGDnMJMtfII0xA4Rrd4NJHuOMhPtfDE10T65ou5po4rhXsmnhca9g1uXFlT-RJLU-2GE_q8BxhntTDw2Ge9IaneSJPZnk2II8ZvixGkE3m2EjYJvPYtLBNdmPzc_3fBoUk83PgZRGFcaPj0IEOZvxeQoMSJuRanB5beOpziomtv12k_rjRqd-D9c34ff0zWN-E3PqDr34y1yf--l2DObf9Xxfpb1Y6ACgGBabAPQFCoMEUcxFQ8iWFEreaSWEddou8dF6WuhLwW6eNeCw2jx6-c9b3BEZbn8vD18RSEmpR8NdR4mhHm_G7ApfHSsmTIDZcfLiJ6eWtxYSYbnGEaBPEUXbJSkXofPPTp7DGTM0d5TroJGfEGbn-AVT-jgXH5XFCs1ULsKoJ2K3pZz_R6VOoaHXi-HqP53_4k_oLOo8m2BQNAAA';\nexport var text = {eyebrow:'typography_text_eyebrow__1wmlzy0',display:'typography_text_display__1wmlzy1',h1:'typography_text_h1__1wmlzy2',h2:'typography_text_h2__1wmlzy3',h3:'typography_text_h3__1wmlzy4',h4:'typography_text_h4__1wmlzy5',body:'typography_text_body__1wmlzy6',lead:'typography_text_lead__1wmlzy7',small:'typography_text_small__1wmlzy8',caption:'typography_text_caption__1wmlzy9',code:'typography_text_code__1wmlzya',blackletter:'typography_text_blackletter__1wmlzyb'};"],"mappings":"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","names":["import_react","import_react","import_react","variant","tone","size","full","import_jsx_runtime","variant","tone","size","full","import_react","root","useStyles","vertical","root","import_jsx_runtime","vertical","label","root","line","useStyles","import_react","root","size","useStyles","size","root","import_jsx_runtime","size","root","useStyles","import_react","root","tone","useStyles","tone","root","dot","import_jsx_runtime","tone","root","dot","useStyles","import_react","useStyles","variant","indeterminate","root","import_jsx_runtime","variant","size","track","bar","spinner","useStyles","indeterminate","import_jsx_runtime","size","import_react","root","tone","useStyles","selected","tone","clickable","root","import_jsx_runtime","selected","tone","clickable","root","deleteBtn","useStyles","import_jsx_runtime","size","import_react","root","useStyles","disabled","root","box","import_jsx_runtime","label","disabled","root","input","box","check","useStyles","import_react","disabled","dot","input","label","root","useStyles","disabled","root","input","dot","label","import_jsx_runtime","label","disabled","root","input","circle","dot","useStyles","import_react","input","label","root","track","useStyles","root","input","track","label","import_jsx_runtime","label","disabled","root","input","track","knob","useStyles","import_react","import_jsx_runtime","size","import_jsx_runtime","size","import_react","input","root","useStyles","root","labelText","input","helpText","import_jsx_runtime","label","useStyles","import_react","root","useStyles","active","tone","root","import_jsx_runtime","active","tone","root","useStyles","import_react","root","useStyles","root","import_jsx_runtime","root","useStyles","header","body","footer","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_react","body","root","useStyles","severity","root","body","import_jsx_runtime","severity","useStyles","import_react","import_react","useStyles","placement","wrapper","bubble","import_jsx_runtime","label","placement","wrapper","bubble","useStyles","trigger","import_react","import_jsx_runtime","size","import_react","label","root","useStyles","chevron","root","label","selected","active","import_jsx_runtime","placeholder","label","disabled","root","trigger","chevron","menu","useStyles","selected","option","current","import_react","input","label","root","track","wrapper","useStyles","root","wrapper","label","track","input","import_jsx_runtime","step","disabled","label","wrapper","root","track","range","thumb","input","useStyles","import_react","import_react","chevron","chevronOpen","header","root","useStyles","root","header","chevron","chevronOpen","import_jsx_runtime","root","item","header","panel","useStyles","current","import_react","import_jsx_runtime","size","import_react","root","useStyles","root","import_jsx_runtime","root","crumb","current","separator","useStyles","item","import_jsx_runtime","size","import_react","root","useStyles","root","active","import_jsx_runtime","root","ellipsis","nav","useStyles","current","item","import_react","import_react","label","root","useStyles","root","active","label","import_jsx_runtime","active","root","step","connector","useStyles","import_react","root","useStyles","root","active","import_jsx_runtime","root","useStyles","item","active","import_react","import_react","item","wrapper","useStyles","wrapper","item","import_jsx_runtime","trigger","wrapper","list","item","useStyles","current","import_react","import_react","body","titleText","useStyles","titleText","body","import_jsx_runtime","actions","overlay","surface","titleText","body","useStyles","active","import_react_dom","import_react","root","useStyles","root","import_jsx_runtime","message","root","closeBtn","useStyles","import_react","root","useStyles","root","import_jsx_runtime","root","th","td","alignRight","useStyles","import_react","actions","root","useStyles","root","actions","import_jsx_runtime","brand","actions","useStyles","import_react","content","root","selected","useStyles","selected","root","content","import_jsx_runtime","leading","trailing","selected","useStyles","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/theme/theme.css.ts","../src/hooks/use-previous/index.ts","../src/hooks/use-toggle/index.ts","../src/components/typography/use-styles.ts","../src/theme/context/theme-context.tsx","../src/theme/typography.css.ts","../src/components/typography/use-styles.css.ts","../src/components/typography/index.tsx","../src/components/button/use-styles.ts","../src/components/button/use-styles.css.ts","../src/components/button/index.tsx","../src/components/divider/use-styles.ts","../src/components/divider/use-styles.css.ts","../src/components/divider/index.tsx","../src/components/avatar/use-styles.ts","../src/components/avatar/use-styles.css.ts","../src/components/avatar/index.tsx","../src/components/badge/use-styles.ts","../src/components/badge/use-styles.css.ts","../src/components/badge/index.tsx","../src/components/progress/use-styles.ts","../src/components/progress/use-styles.css.ts","../src/components/progress/index.tsx","../src/components/icons/x/index.tsx","../src/components/chip/use-styles.ts","../src/components/chip/use-styles.css.ts","../src/components/chip/index.tsx","../src/components/icons/check/index.tsx","../src/components/checkbox/use-styles.ts","../src/components/checkbox/use-styles.css.ts","../src/components/checkbox/index.tsx","../src/components/radio/use-styles.ts","../src/components/radio/use-styles.css.ts","../src/components/radio/index.tsx","../src/components/switch/use-styles.ts","../src/components/switch/use-styles.css.ts","../src/components/switch/index.tsx","../src/components/text-field/index.tsx","../src/components/icons/eye/index.tsx","../src/components/icons/eye-off/index.tsx","../src/components/text-field/use-styles.ts","../src/components/text-field/use-styles.css.ts","../src/components/icon-button/use-styles.ts","../src/components/icon-button/use-styles.css.ts","../src/components/icon-button/index.tsx","../src/components/card/use-styles.ts","../src/components/card/use-styles.css.ts","../src/components/card/index.tsx","../src/components/icons/circle-check/index.tsx","../src/components/icons/circle-x/index.tsx","../src/components/icons/info/index.tsx","../src/components/icons/triangle-alert/index.tsx","../src/components/alert/use-styles.ts","../src/components/alert/use-styles.css.ts","../src/components/alert/index.tsx","../src/components/tooltip/index.tsx","../src/components/tooltip/use-styles.ts","../src/components/tooltip/use-styles.css.ts","../src/components/select/index.tsx","../src/components/icons/chevron-down/index.tsx","../src/components/select/use-styles.ts","../src/components/select/use-styles.css.ts","../src/components/slider/use-styles.ts","../src/components/slider/use-styles.css.ts","../src/components/slider/index.tsx","../src/components/accordion/index.tsx","../src/components/accordion/use-styles.ts","../src/components/accordion/use-styles.css.ts","../src/components/breadcrumbs/index.tsx","../src/components/icons/chevron-right/index.tsx","../src/components/breadcrumbs/use-styles.ts","../src/components/breadcrumbs/use-styles.css.ts","../src/components/icons/chevron-left/index.tsx","../src/components/pagination/use-styles.ts","../src/components/pagination/use-styles.css.ts","../src/components/pagination/index.tsx","../src/components/stepper/index.tsx","../src/components/stepper/use-styles.ts","../src/components/stepper/use-styles.css.ts","../src/components/tabs/use-styles.ts","../src/components/tabs/use-styles.css.ts","../src/components/tabs/index.tsx","../src/components/menu/index.tsx","../src/components/menu/use-styles.ts","../src/components/menu/use-styles.css.ts","../src/components/dialog/index.tsx","../src/components/dialog/use-styles.ts","../src/components/dialog/use-styles.css.ts","../src/components/snackbar/index.tsx","../src/components/snackbar/use-styles.ts","../src/components/snackbar/use-styles.css.ts","../src/components/table/use-styles.ts","../src/components/table/use-styles.css.ts","../src/components/table/index.tsx","../src/components/app-bar/use-styles.ts","../src/components/app-bar/use-styles.css.ts","../src/components/app-bar/index.tsx","../src/components/list-item/use-styles.ts","../src/components/list-item/use-styles.css.ts","../src/components/list-item/index.tsx","../src/components/icons/chevron-up/index.tsx","../src/components/icons/search/index.tsx","../src/components/icons/plus/index.tsx","../src/components/icons/minus/index.tsx","../src/components/icons/more-horizontal/index.tsx"],"sourcesContent":["// API pública. Exportá acá solo lo que querés que consuman.\nimport \"./theme/fonts.css\";\nimport \"./theme/theme.css\";\n\n// Hooks\nexport { usePrevious } from \"./hooks/use-previous\";\nexport { useToggle } from \"./hooks/use-toggle\";\n\n// Componentes — primitivos\nexport { Typography } from \"./components/typography\";\nexport type {\n TypographyProps,\n TypographyVariant,\n TypographyColor,\n TypographyAlign,\n} from \"./components/typography/types\";\nexport { Button } from \"./components/button\";\nexport type {\n ButtonProps,\n ButtonVariant,\n ButtonTone,\n ButtonSize,\n} from \"./components/button/types\";\nexport { Divider } from \"./components/divider\";\nexport type { DividerProps } from \"./components/divider/types\";\nexport { Avatar } from \"./components/avatar\";\nexport type { AvatarProps, AvatarSize } from \"./components/avatar/types\";\nexport { Badge } from \"./components/badge\";\nexport type { BadgeProps, BadgeTone } from \"./components/badge/types\";\nexport { Progress } from \"./components/progress\";\nexport type { ProgressProps, ProgressVariant } from \"./components/progress/types\";\nexport { Chip } from \"./components/chip\";\nexport type { ChipProps, ChipTone } from \"./components/chip/types\";\nexport { Checkbox } from \"./components/checkbox\";\nexport type { CheckboxProps } from \"./components/checkbox/types\";\nexport { Radio } from \"./components/radio\";\nexport type { RadioProps } from \"./components/radio/types\";\nexport { Switch } from \"./components/switch\";\nexport type { SwitchProps } from \"./components/switch/types\";\nexport { TextField } from \"./components/text-field\";\nexport type { TextFieldProps } from \"./components/text-field/types\";\nexport { IconButton } from \"./components/icon-button\";\nexport type { IconButtonProps, IconButtonTone } from \"./components/icon-button/types\";\n\n// Componentes — compuestos\nexport { Card } from \"./components/card\";\nexport type { CardProps, CardSectionProps } from \"./components/card/types\";\nexport { Alert } from \"./components/alert\";\nexport type { AlertProps, AlertSeverity } from \"./components/alert/types\";\nexport { Tooltip } from \"./components/tooltip\";\nexport type { TooltipProps, TooltipPlacement } from \"./components/tooltip/types\";\nexport { Select } from \"./components/select\";\nexport type { SelectProps, SelectOption } from \"./components/select/types\";\nexport { Slider } from \"./components/slider\";\nexport type { SliderProps } from \"./components/slider/types\";\nexport { Accordion } from \"./components/accordion\";\nexport type { AccordionProps, AccordionItem } from \"./components/accordion/types\";\nexport { Breadcrumbs } from \"./components/breadcrumbs\";\nexport type { BreadcrumbsProps, Crumb } from \"./components/breadcrumbs/types\";\nexport { Pagination } from \"./components/pagination\";\nexport type { PaginationProps } from \"./components/pagination/types\";\nexport { Stepper } from \"./components/stepper\";\nexport type { StepperProps, Step } from \"./components/stepper/types\";\nexport { Tabs } from \"./components/tabs\";\nexport type { TabsProps, TabItem } from \"./components/tabs/types\";\nexport { Menu } from \"./components/menu\";\nexport type { MenuProps, MenuItemDef } from \"./components/menu/types\";\nexport { Dialog } from \"./components/dialog\";\nexport type { DialogProps } from \"./components/dialog/types\";\nexport { Snackbar } from \"./components/snackbar\";\nexport type { SnackbarProps } from \"./components/snackbar/types\";\nexport { Table } from \"./components/table\";\nexport type { TableProps, TableColumn } from \"./components/table/types\";\nexport { AppBar } from \"./components/app-bar\";\nexport type { AppBarProps } from \"./components/app-bar/types\";\nexport { ListItem } from \"./components/list-item\";\nexport type { ListItemProps } from \"./components/list-item/types\";\n\n// Iconos\nexport type { Icon, IconProps } from \"./components/icons/types\";\nexport { ChevronDownIcon } from \"./components/icons/chevron-down\";\nexport { ChevronUpIcon } from \"./components/icons/chevron-up\";\nexport { ChevronLeftIcon } from \"./components/icons/chevron-left\";\nexport { ChevronRightIcon } from \"./components/icons/chevron-right\";\nexport { CheckIcon } from \"./components/icons/check\";\nexport { XIcon } from \"./components/icons/x\";\nexport { EyeIcon } from \"./components/icons/eye\";\nexport { EyeOffIcon } from \"./components/icons/eye-off\";\nexport { SearchIcon } from \"./components/icons/search\";\nexport { InfoIcon } from \"./components/icons/info\";\nexport { CircleCheckIcon } from \"./components/icons/circle-check\";\nexport { TriangleAlertIcon } from \"./components/icons/triangle-alert\";\nexport { CircleXIcon } from \"./components/icons/circle-x\";\nexport { PlusIcon } from \"./components/icons/plus\";\nexport { MinusIcon } from \"./components/icons/minus\";\nexport { MoreHorizontalIcon } from \"./components/icons/more-horizontal\";\n\n// Temas\nexport {\n vars as theme,\n themes,\n schemaNames,\n modeNames,\n colorVars,\n type SchemaName,\n type Mode,\n type ColorTokens,\n} from \"./theme/theme.css\";\n// Tema custom: instalá `@vanilla-extract/css` y, en tu propio `.css.ts`,\n// `createTheme(colorVars, miPaleta)` (miPaleta: ColorTokens). No lo reexportamos desde acá\n// porque arrastraría el runtime de vanilla-extract al bundle y createTheme es build-time.\nexport { text } from \"./theme/typography.css\";\nexport {\n ThemeProvider,\n useTheme,\n type ThemeProviderProps,\n type ModePreference,\n} from \"./theme/context/theme-context\";\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nexport var colorVars = {bg1:'var(--bg1__e3grur28)',bg2:'var(--bg2__e3grur29)',bg3:'var(--bg3__e3grur2a)',bgInset:'var(--bgInset__e3grur2b)',fg1:'var(--fg1__e3grur2c)',fg2:'var(--fg2__e3grur2d)',fg3:'var(--fg3__e3grur2e)',fgOnAccent:'var(--fgOnAccent__e3grur2f)',border1:'var(--border1__e3grur2g)',border2:'var(--border2__e3grur2h)',borderStrong:'var(--borderStrong__e3grur2i)',accent:'var(--accent__e3grur2j)',accentHover:'var(--accentHover__e3grur2k)',accentSoft:'var(--accentSoft__e3grur2l)',ok:'var(--ok__e3grur2m)',warn:'var(--warn__e3grur2n)',danger:'var(--danger__e3grur2o)',info:'var(--info__e3grur2p)',focus:'var(--focus__e3grur2q)',scrim:'var(--scrim__e3grur2r)'};\nexport var modeNames = ['light','dark','sepia','contrast'];\nexport var schemaNames = ['tinta'];\nexport var themes = {tinta:{light:'theme_themes_tinta_light__e3grur2s',dark:'theme_themes_tinta_dark__e3grur2t',sepia:'theme_themes_tinta_sepia__e3grur2u',contrast:'theme_themes_tinta_contrast__e3grur2v'}};\nexport var vars = {font:{display:'var(--font-display__e3grur0)',text:'var(--font-text__e3grur1)',mono:'var(--font-mono__e3grur2)',black:'var(--font-black__e3grur3)'},text:{eyebrow:{size:'var(--text-eyebrow-size__e3grur4)',lineHeight:'var(--text-eyebrow-lineHeight__e3grur5)',weight:'var(--text-eyebrow-weight__e3grur6)',letterSpacing:'var(--text-eyebrow-letterSpacing__e3grur7)'},display:{size:'var(--text-display-size__e3grur8)',lineHeight:'var(--text-display-lineHeight__e3grur9)',weight:'var(--text-display-weight__e3grura)',letterSpacing:'var(--text-display-letterSpacing__e3grurb)'},h1:{size:'var(--text-h1-size__e3grurc)',lineHeight:'var(--text-h1-lineHeight__e3grurd)',weight:'var(--text-h1-weight__e3grure)',letterSpacing:'var(--text-h1-letterSpacing__e3grurf)'},h2:{size:'var(--text-h2-size__e3grurg)',lineHeight:'var(--text-h2-lineHeight__e3grurh)',weight:'var(--text-h2-weight__e3gruri)',letterSpacing:'var(--text-h2-letterSpacing__e3grurj)'},h3:{size:'var(--text-h3-size__e3grurk)',lineHeight:'var(--text-h3-lineHeight__e3grurl)',weight:'var(--text-h3-weight__e3grurm)',letterSpacing:'var(--text-h3-letterSpacing__e3grurn)'},h4:{size:'var(--text-h4-size__e3gruro)',lineHeight:'var(--text-h4-lineHeight__e3grurp)',weight:'var(--text-h4-weight__e3grurq)',letterSpacing:'var(--text-h4-letterSpacing__e3grurr)'},body:{size:'var(--text-body-size__e3grurs)',lineHeight:'var(--text-body-lineHeight__e3grurt)',weight:'var(--text-body-weight__e3gruru)',letterSpacing:'var(--text-body-letterSpacing__e3grurv)'},lead:{size:'var(--text-lead-size__e3grurw)',lineHeight:'var(--text-lead-lineHeight__e3grurx)',weight:'var(--text-lead-weight__e3grury)',letterSpacing:'var(--text-lead-letterSpacing__e3grurz)'},small:{size:'var(--text-small-size__e3grur10)',lineHeight:'var(--text-small-lineHeight__e3grur11)',weight:'var(--text-small-weight__e3grur12)',letterSpacing:'var(--text-small-letterSpacing__e3grur13)'},caption:{size:'var(--text-caption-size__e3grur14)',lineHeight:'var(--text-caption-lineHeight__e3grur15)',weight:'var(--text-caption-weight__e3grur16)',letterSpacing:'var(--text-caption-letterSpacing__e3grur17)'}},space:{none:'var(--space-none__e3grur18)',xs:'var(--space-xs__e3grur19)',sm:'var(--space-sm__e3grur1a)',md:'var(--space-md__e3grur1b)',lg:'var(--space-lg__e3grur1c)',xl:'var(--space-xl__e3grur1d)','2xl':'var(--space-2xl__e3grur1e)','3xl':'var(--space-3xl__e3grur1f)','4xl':'var(--space-4xl__e3grur1g)','5xl':'var(--space-5xl__e3grur1h)'},radius:{none:'var(--radius-none__e3grur1i)',sm:'var(--radius-sm__e3grur1j)',md:'var(--radius-md__e3grur1k)',lg:'var(--radius-lg__e3grur1l)',base:'var(--radius-base__e3grur1m)',full:'var(--radius-full__e3grur1n)'},border:{hair:'var(--border-hair__e3grur1o)',rule:'var(--border-rule__e3grur1p)',heavy:'var(--border-heavy__e3grur1q)'},tracking:{tight:'var(--tracking-tight__e3grur1r)',normal:'var(--tracking-normal__e3grur1s)',wide:'var(--tracking-wide__e3grur1t)',wider:'var(--tracking-wider__e3grur1u)',widest:'var(--tracking-widest__e3grur1v)'},weight:{light:'var(--weight-light__e3grur1w)',regular:'var(--weight-regular__e3grur1x)',medium:'var(--weight-medium__e3grur1y)',semibold:'var(--weight-semibold__e3grur1z)',bold:'var(--weight-bold__e3grur20)'},dur:{fast:'var(--dur-fast__e3grur21)',base:'var(--dur-base__e3grur22)',slow:'var(--dur-slow__e3grur23)'},ease:{ink:'var(--ease-ink__e3grur24)'},shadow:{sm:'var(--shadow-sm__e3grur25)',md:'var(--shadow-md__e3grur26)',lg:'var(--shadow-lg__e3grur27)'},color:colorVars};","import { useEffect, useRef } from \"react\";\n\n// Devuelve el valor que tuvo `value` en el render anterior.\n// En el primer render devuelve `initial` (por defecto `undefined`).\nexport function usePrevious<T>(value: T, initial: T): T;\nexport function usePrevious<T>(value: T, initial?: T): T | undefined;\nexport function usePrevious<T>(value: T, initial?: T): T | undefined {\n const ref = useRef<T | undefined>(initial);\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n","import { useCallback, useState } from \"react\";\n\n// Ejemplo de hook — reemplazá por los de tu librería.\nexport function useToggle(\n initial = false,\n): readonly [boolean, () => void, (value: boolean) => void] {\n const [on, setOn] = useState(initial);\n const toggle = useCallback(() => setOn((value) => !value), []);\n return [on, toggle, setOn] as const;\n}\n","// src/components/typography/use-styles.ts\nimport { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport { text } from \"../../theme/typography.css\";\nimport type { TypographyAlign, TypographyColor, TypographyVariant } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\nexport function useStyles({\n variant,\n color,\n align,\n}: {\n variant: TypographyVariant;\n color?: TypographyColor | undefined;\n align?: TypographyAlign | undefined;\n}): { text: string } {\n const { themeClass } = useTheme();\n const className = useMemo(\n () =>\n [\n themeClass,\n styles.base,\n text[variant],\n color && styles.color[color],\n align && styles.align[align],\n ]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, variant, color, align],\n );\n return { text: className };\n}\n","import { createContext, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { type Mode, type SchemaName, modeNames, themes } from \"../theme.css\";\n\n// El usuario puede fijar un modo concreto o \"system\" (seguir las preferencias del SO).\nexport type ModePreference = Mode | \"system\";\n\ninterface ThemeContextValue {\n schema: SchemaName;\n /** Modo efectivo ya resuelto (nunca \"system\"). */\n mode: Mode;\n /** La preferencia cruda elegida (puede ser \"system\"). */\n preference: ModePreference;\n themeClass: string;\n setSchema: (schema: SchemaName) => void;\n setMode: (mode: ModePreference) => void;\n /** Alterna binario claro↔oscuro a partir del modo efectivo. */\n toggleMode: () => void;\n /** Rota por los cuatro modos en orden. */\n cycleMode: () => void;\n}\n\nconst noop = () => {};\n\n// Sin provider, los componentes usan tinta/light (las vars de :root).\nconst DEFAULT_VALUE: ThemeContextValue = {\n schema: \"tinta\",\n mode: \"light\",\n preference: \"light\",\n themeClass: themes.tinta.light,\n setSchema: noop,\n setMode: noop,\n toggleMode: noop,\n cycleMode: noop,\n};\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\n// Resuelve \"system\" leyendo las media queries del SO. prefers-contrast tiene prioridad\n// (accesibilidad) sobre prefers-color-scheme.\nfunction resolveSystemMode(): Mode {\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") return \"light\";\n if (window.matchMedia(\"(prefers-contrast: more)\").matches) return \"contrast\";\n if (window.matchMedia(\"(prefers-color-scheme: dark)\").matches) return \"dark\";\n return \"light\";\n}\n\ninterface Persisted {\n schema: SchemaName;\n preference: ModePreference;\n}\n\nfunction readStored(key: string): Partial<Persisted> | null {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? (JSON.parse(raw) as Partial<Persisted>) : null;\n } catch {\n return null;\n }\n}\n\nfunction writeStored(key: string, value: Persisted): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch {\n // localStorage puede no estar disponible (modo privado / SSR): degradamos en silencio.\n }\n}\n\nexport interface ThemeProviderProps {\n children: ReactNode;\n defaultSchema?: SchemaName;\n defaultMode?: ModePreference;\n /** Clave de localStorage donde se persiste la elección. */\n storageKey?: string;\n /** Si es false, no persiste ni rehidrata (útil para previews/tests). */\n persist?: boolean;\n}\n\nexport function ThemeProvider({\n children,\n defaultSchema = \"tinta\",\n defaultMode = \"light\",\n storageKey = \"ds-theme\",\n persist = true,\n}: ThemeProviderProps) {\n const [schema, setSchema] = useState<SchemaName>(\n () => (persist && readStored(storageKey)?.schema) || defaultSchema,\n );\n const [preference, setPreference] = useState<ModePreference>(\n () => (persist ? readStored(storageKey)?.preference : null) ?? defaultMode,\n );\n const [systemMode, setSystemMode] = useState<Mode>(resolveSystemMode);\n\n // Mientras la preferencia sea \"system\", seguimos los cambios del SO en vivo.\n useEffect(() => {\n if (preference !== \"system\") return;\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") return;\n const mqls = [\"(prefers-contrast: more)\", \"(prefers-color-scheme: dark)\"].map((q) =>\n window.matchMedia(q),\n );\n const onChange = () => setSystemMode(resolveSystemMode());\n onChange();\n for (const mql of mqls) mql.addEventListener?.(\"change\", onChange);\n return () => {\n for (const mql of mqls) mql.removeEventListener?.(\"change\", onChange);\n };\n }, [preference]);\n\n const mode: Mode = preference === \"system\" ? systemMode : preference;\n\n // Persistimos cada cambio de schema/preferencia.\n useEffect(() => {\n if (persist) writeStored(storageKey, { schema, preference });\n }, [schema, preference, persist, storageKey]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n schema,\n mode,\n preference,\n themeClass: themes[schema][mode],\n setSchema,\n setMode: setPreference,\n toggleMode: () => setPreference(mode === \"dark\" ? \"light\" : \"dark\"),\n cycleMode: () => {\n const next = modeNames[(modeNames.indexOf(mode) + 1) % modeNames.length];\n if (next) setPreference(next);\n },\n }),\n [schema, mode, preference],\n );\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\nexport function useTheme(): ThemeContextValue {\n return useContext(ThemeContext) ?? DEFAULT_VALUE;\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/typography.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7XW0ZKaMBQG4Hufgst6AUMA19V9gd73AZhAImQMCQ2xyHb67h2CwY1mj50tXirnP-H_xhEiPbSyUrith1zTs87pQAsl-zxHfcPfhzj4vQqCgxQ6POCG8WEf_MLqWxiarxopZJ7TtFInlazf7GTH3qmdG5eGl6Xmgp3PzDxngoY1ZVWtvYnx-ndz2eY213P6z3O9k3mZzqJaUxV2LS6ZqPzHmZEf04RNb03azGmFRXeQqtkHp7alqsQdHS-Wkks101TpjELXb6s_q-hWmbCu5XiwyghUnoennTEAfRl1oF9BaJu4h96B0DbnQuNH0PNxPujiQ7NB6Jp2rNsHQgqfMZqNSxNrsKqY2AexF7xG1jpZyrpGDnMJMtfII0xA4Rrd4NJHuOMhPtfDE10T65ou5po4rhXsmnhca9g1uXFlT-RJLU-2GE_q8BxhntTDw2Ge9IaneSJPZnk2II8ZvixGkE3m2EjYJvPYtLBNdmPzc_3fBoUk83PgZRGFcaPj0IEOZvxeQoMSJuRanB5beOpziomtv12k_rjRqd-D9c34ff0zWN-E3PqDr34y1yf--l2DObf9Xxfpb1Y6ACgGBabAPQFCoMEUcxFQ8iWFEreaSWEddou8dF6WuhLwW6eNeCw2jx6-c9b3BEZbn8vD18RSEmpR8NdR4mhHm_G7ApfHSsmTIDZcfLiJ6eWtxYSYbnGEaBPEUXbJSkXofPPTp7DGTM0d5TroJGfEGbn-AVT-jgXH5XFCs1ULsKoJ2K3pZz_R6VOoaHXi-HqP53_4k_oLOo8m2BQNAAA';\nexport var text = {eyebrow:'typography_text_eyebrow__1wmlzy0',display:'typography_text_display__1wmlzy1',h1:'typography_text_h1__1wmlzy2',h2:'typography_text_h2__1wmlzy3',h3:'typography_text_h3__1wmlzy4',h4:'typography_text_h4__1wmlzy5',body:'typography_text_body__1wmlzy6',lead:'typography_text_lead__1wmlzy7',small:'typography_text_small__1wmlzy8',caption:'typography_text_caption__1wmlzy9',code:'typography_text_code__1wmlzya',blackletter:'typography_text_blackletter__1wmlzyb'};","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/typography/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfYmFzZV9fZDc0amY2MCB7CiAgbWFyZ2luOiAwOwp9Ci51c2Utc3R5bGVzX2NvbG9yX2ZnMV9fZDc0amY2MSB7CiAgY29sb3I6IHZhcigtLWZnMV9fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2NvbG9yX2ZnMl9fZDc0amY2MiB7CiAgY29sb3I6IHZhcigtLWZnMl9fZTNncnVyMmQpOwp9Ci51c2Utc3R5bGVzX2NvbG9yX2ZnM19fZDc0amY2MyB7CiAgY29sb3I6IHZhcigtLWZnM19fZTNncnVyMmUpOwp9Ci51c2Utc3R5bGVzX2NvbG9yX2FjY2VudF9fZDc0amY2NCB7CiAgY29sb3I6IHZhcigtLWFjY2VudF9fZTNncnVyMmopOwp9Ci51c2Utc3R5bGVzX2NvbG9yX2Rhbmdlcl9fZDc0amY2NSB7CiAgY29sb3I6IHZhcigtLWRhbmdlcl9fZTNncnVyMm8pOwp9Ci51c2Utc3R5bGVzX2NvbG9yX29rX19kNzRqZjY2IHsKICBjb2xvcjogdmFyKC0tb2tfX2UzZ3J1cjJtKTsKfQoudXNlLXN0eWxlc19jb2xvcl93YXJuX19kNzRqZjY3IHsKICBjb2xvcjogdmFyKC0td2Fybl9fZTNncnVyMm4pOwp9Ci51c2Utc3R5bGVzX2NvbG9yX2luZm9fX2Q3NGpmNjggewogIGNvbG9yOiB2YXIoLS1pbmZvX19lM2dydXIycCk7Cn0KLnVzZS1zdHlsZXNfYWxpZ25fbGVmdF9fZDc0amY2OSB7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoudXNlLXN0eWxlc19hbGlnbl9jZW50ZXJfX2Q3NGpmNmEgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoudXNlLXN0eWxlc19hbGlnbl9yaWdodF9fZDc0amY2YiB7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0';\nexport var align = {left:'use-styles_align_left__d74jf69',center:'use-styles_align_center__d74jf6a',right:'use-styles_align_right__d74jf6b'};\nexport var base = 'use-styles_base__d74jf60';\nexport var color = {fg1:'use-styles_color_fg1__d74jf61',fg2:'use-styles_color_fg2__d74jf62',fg3:'use-styles_color_fg3__d74jf63',accent:'use-styles_color_accent__d74jf64',danger:'use-styles_color_danger__d74jf65',ok:'use-styles_color_ok__d74jf66',warn:'use-styles_color_warn__d74jf67',info:'use-styles_color_info__d74jf68'};","import type { ElementType } from \"react\";\nimport type { TypographyProps, TypographyVariant } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Elemento HTML por defecto de cada rol. `as` lo sobreescribe sin cambiar el estilo.\nconst defaultElement: Record<TypographyVariant, ElementType> = {\n display: \"h1\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n body: \"p\",\n lead: \"p\",\n small: \"span\",\n caption: \"span\",\n eyebrow: \"span\",\n code: \"code\",\n blackletter: \"span\",\n};\n\n// Presentacional y polimórfico: el rol define el estilo; `as` define el elemento.\n// No acepta `className`/`style`: el estilo es controlado (variant/color/align).\nexport function Typography<E extends ElementType = \"span\">({\n variant,\n as,\n color,\n align,\n ...rest\n}: TypographyProps<E>) {\n const Component = (as ?? defaultElement[variant]) as ElementType;\n const { text } = useStyles({ variant, color, align });\n // `className` va DESPUÉS de `...rest`: aunque alguien fuerce un className por fuera\n // (con `as any`, saltándose el tipo), el nuestro gana — la encapsulación se respeta en runtime.\n return <Component {...rest} className={text} />;\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { ButtonProps, ButtonTone } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos). El componente\n// solo aplica lo que devuelve este hook.\ntype ToneKey = keyof typeof styles.tone;\n\nfunction toneKey(variant: NonNullable<ButtonProps[\"variant\"]>, tone: ButtonTone): ToneKey {\n return `${variant}${tone === \"ink\" ? \"Ink\" : \"Accent\"}` as ToneKey;\n}\n\nexport function useStyles({\n variant = \"filled\",\n tone = \"ink\",\n size = \"md\",\n full,\n className,\n}: { [K in \"variant\" | \"tone\" | \"size\" | \"full\" | \"className\"]?: ButtonProps[K] | undefined }): {\n container: string;\n} {\n const { themeClass } = useTheme();\n const container = useMemo(\n () =>\n [\n themeClass,\n styles.root,\n styles.size[size],\n styles.tone[toneKey(variant, tone)],\n full && styles.full,\n className,\n ]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, variant, tone, size, full, className],\n );\n return { container };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/button/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61Uu3LbMBDs9RVoMmMV8IiSndh05S6pUqRKxQGJAwULBBg89Egm_54BREJ8yZYcdxJusbvcu8OtM4CNPQgwmVbKZllS55YLsUB_ZghRbmpBDiniUnAJmAnYP80QIoKXEnMLlUlRAdKC9scvzljODrhQ0oK03VJJ6hRtib7B2NSkAGyqLINVqZ1OyNwjmJIWM1JxcWiR4ahSUrXQZUAKsBZ04OGybMFWk2LDZYl3nIKO5C5csbC3HiENU7pKkatr0AUx4Iu50hQ01oRyZ1q64z-cEwORq5p34DtO7bpFtxROnNB1Fx0yTpFRglN_XDhtlE5RrXgb0W7NLRzTSZFUO03qYN275pYrmSIiRCNIncaMGBuTSeZNBYgBzOUmVu7mT7O_s9uznU5JYfkWUqnsTUq5IbkAOg_97yQWfgpi4efN4va-3r9FylThDN5yw3MBgUw564coRct6fwwitrlwJtr9FWJrwFgxZsCGO28Its6DVk6KTamVk7RxXhMN0obklfDBN9LlKgpDt1891PEsichy3m2hVBYTIdQO6NCi4b8h85PeuEyCuZpQ2hnciX3oVUQZK8VpUzx1ipJknEsQrWgUXZ4X9aiGOu-L7kWs0JHoRDOCqHfaiK7eI7rsqMJIdTVWZU6IKHnXf7Lat6rZ02Sx-DS8bpWEjHEhgH7zC9MQ3Y9GqB2W0wgcO9Gfkk754ewsDUkuc5Su1Rb01IpO2VxGBfqKjz7qrI_nwr_i0crnM6qkgTWUL-N8WPldPvdR7Ky9CbqLHV4T1lHnq78QxTZvuBqjJ6w1D1i3i1-ufJqG0_bOcZpyck1EeeeNJK9KDBrxcNX3Tg7Q-0fjjKXrZ-OHYicxMS1WrpWx3YAfr2z16xvbu3uR_Af3NwgMoiQf3d2LvnJo4r8-9B-nbQpI_goAAA';\nexport var full = 'use-styles_full__1pbtill4';\nexport var root = 'use-styles_root__1pbtill0';\nexport var size = {sm:'use-styles_size_sm__1pbtill1',md:'use-styles_size_md__1pbtill2',lg:'use-styles_size_lg__1pbtill3'};\nexport var tone = {filledInk:'use-styles_tone_filledInk__1pbtill5',filledAccent:'use-styles_tone_filledAccent__1pbtill6',outlineInk:'use-styles_tone_outlineInk__1pbtill7',outlineAccent:'use-styles_tone_outlineAccent__1pbtill8',ghostInk:'use-styles_tone_ghostInk__1pbtill9',ghostAccent:'use-styles_tone_ghostAccent__1pbtilla'};","import type { ButtonProps, ButtonSize } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Cada talle de botón dimensiona su icono de forma consistente.\nconst ICON_SIZE: Record<ButtonSize, number> = { sm: 14, md: 16, lg: 18 };\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Los iconos son componentes (Icon); el botón los renderiza fijando el tamaño.\nexport function Button({\n variant,\n tone,\n size = \"md\",\n startIcon: StartIcon,\n endIcon: EndIcon,\n full,\n className,\n children,\n ...rest\n}: ButtonProps) {\n const { container } = useStyles({ variant, tone, size, full, className });\n const iconSize = ICON_SIZE[size];\n return (\n <button className={container} {...rest}>\n {StartIcon && <StartIcon size={iconSize} />}\n {children}\n {EndIcon && <EndIcon size={iconSize} />}\n </button>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { DividerProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. La decisión de \"qué clase aplica\" vive acá, no en el JSX.\ninterface UseStylesArgs {\n vertical?: DividerProps[\"vertical\"] | undefined;\n hasLabel?: boolean | undefined;\n}\n\nexport function useStyles({ vertical, hasLabel }: UseStylesArgs): {\n root: string;\n line: string;\n label: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [\n themeClass,\n styles.root,\n hasLabel ? styles.labelled : vertical ? styles.vertical : styles.horizontal,\n ]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, vertical, hasLabel],\n );\n return { root, line: styles.line, label: styles.label };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/divider/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMW43djd5ajAgewogIGJvcmRlcjogbm9uZTsKfQoudXNlLXN0eWxlc19ob3Jpem9udGFsX18xbjd2N3lqMSB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxcHg7CiAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyMV9fZTNncnVyMmcpOwp9Ci51c2Utc3R5bGVzX3ZlcnRpY2FsX18xbjd2N3lqMiB7CiAgd2lkdGg6IDFweDsKICBhbGlnbi1zZWxmOiBzdHJldGNoOwogIGhlaWdodDogMTAwJTsKICBtaW4taGVpZ2h0OiAxZW07CiAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyMV9fZTNncnVyMmcpOwp9Ci51c2Utc3R5bGVzX2xhYmVsbGVkX18xbjd2N3lqMyB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtbWRfX2UzZ3J1cjFiKTsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoudXNlLXN0eWxlc19saW5lX18xbjd2N3lqNCB7CiAgZmxleDogMTsKICBoZWlnaHQ6IDFweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXIxX19lM2dydXIyZyk7Cn0KLnVzZS1zdHlsZXNfbGFiZWxfXzFuN3Y3eWo1IHsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IHZhcigtLXRleHQtZXllYnJvdy1zaXplX19lM2dydXI0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZXN0X19lM2dydXIxdik7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tZmczX19lM2dydXIyZSk7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQ';\nexport var horizontal = 'use-styles_horizontal__1n7v7yj1';\nexport var label = 'use-styles_label__1n7v7yj5';\nexport var labelled = 'use-styles_labelled__1n7v7yj3';\nexport var line = 'use-styles_line__1n7v7yj4';\nexport var root = 'use-styles_root__1n7v7yj0';\nexport var vertical = 'use-styles_vertical__1n7v7yj2';","import type { DividerProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Con `label` se renderiza un layout flex (dos líneas + etiqueta); si no, un hairline simple.\nexport function Divider({ vertical, label, ...rest }: DividerProps) {\n const hasLabel = label != null;\n const { root, line, label: labelClass } = useStyles({ vertical, hasLabel });\n\n if (hasLabel) {\n return (\n <div role=\"separator\" className={root} {...rest}>\n <span className={line} />\n <span className={labelClass}>{label}</span>\n <span className={line} />\n </div>\n );\n }\n\n return <div role=\"separator\" className={root} {...rest} />;\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { AvatarProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos). El componente\n// solo aplica lo que devuelve este hook.\nexport function useStyles({\n size = \"md\",\n filled,\n className,\n}: { [K in \"size\" | \"filled\" | \"className\"]?: AvatarProps[K] | undefined }): {\n root: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [\n themeClass,\n styles.root,\n styles.size[size],\n filled ? styles.variant.filled : styles.variant.default,\n className,\n ]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, size, filled, className],\n );\n return { root };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/avatar/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMW1uMXJtdTAgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGxfX2UzZ3J1cjFuKTsKICBib3JkZXItd2lkdGg6IHZhcigtLWJvcmRlci1ydWxlX19lM2dydXIxcCk7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICBib3JkZXItY29sb3I6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWRpc3BsYXlfX2UzZ3J1cjApOwogIGZvbnQtd2VpZ2h0OiB2YXIoLS13ZWlnaHQtc2VtaWJvbGRfX2UzZ3J1cjF6KTsKICBsaW5lLWhlaWdodDogMTsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci51c2Utc3R5bGVzX3NpemVfc21fXzFtbjFybXUxIHsKICB3aWR0aDogMzJweDsKICBoZWlnaHQ6IDMycHg7CiAgZm9udC1zaXplOiAxNHB4Owp9Ci51c2Utc3R5bGVzX3NpemVfbWRfXzFtbjFybXUyIHsKICB3aWR0aDogNDBweDsKICBoZWlnaHQ6IDQwcHg7CiAgZm9udC1zaXplOiAxNnB4Owp9Ci51c2Utc3R5bGVzX3NpemVfbGdfXzFtbjFybXUzIHsKICB3aWR0aDogNTZweDsKICBoZWlnaHQ6IDU2cHg7CiAgZm9udC1zaXplOiAyMnB4Owp9Ci51c2Utc3R5bGVzX3ZhcmlhbnRfZGVmYXVsdF9fMW1uMXJtdTQgewogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGNvbG9yOiB2YXIoLS1mZzFfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc192YXJpYW50X2ZpbGxlZF9fMW1uMXJtdTUgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKfQ';\nexport var root = 'use-styles_root__1mn1rmu0';\nexport var size = {sm:'use-styles_size_sm__1mn1rmu1',md:'use-styles_size_md__1mn1rmu2',lg:'use-styles_size_lg__1mn1rmu3'};\nexport var variant = {'default':'use-styles_variant_default__1mn1rmu4',filled:'use-styles_variant_filled__1mn1rmu5'};","import type { AvatarProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\nexport function Avatar({ size, filled, className, children, ...rest }: AvatarProps) {\n const { root } = useStyles({ size, filled, className });\n return (\n <span className={root} {...rest}>\n {children}\n </span>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { BadgeProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({\n tone = \"ink\",\n className,\n}: { [K in \"tone\" | \"className\"]?: BadgeProps[K] | undefined }): {\n root: string;\n dot: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n [themeClass, className],\n );\n const dot = useMemo(() => [styles.dot, styles.tone[tone]].join(\" \"), [tone]);\n return { root, dot };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/badge/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMXdwZWk2cDAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKfQoudXNlLXN0eWxlc19kb3RfXzF3cGVpNnAxIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiBjYWxjKHZhcigtLXNwYWNlLXNtX19lM2dydXIxYSkgKiAtMSk7CiAgcmlnaHQ6IGNhbGModmFyKC0tc3BhY2Utc21fX2UzZ3J1cjFhKSAqIC0xKTsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgbWluLXdpZHRoOiAxOHB4OwogIGhlaWdodDogMThweDsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1ub25lX19lM2dydXIxOCkgdmFyKC0tc3BhY2UteHNfX2UzZ3J1cjE5KTsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IHZhcigtLXdlaWdodC1zZW1pYm9sZF9fZTNncnVyMXopOwogIGxpbmUtaGVpZ2h0OiAxOwogIGxldHRlci1zcGFjaW5nOiB2YXIoLS10cmFja2luZy13aWRlX19lM2dydXIxdCk7CiAgY29sb3I6IHZhcigtLWZnT25BY2NlbnRfX2UzZ3J1cjJmKTsKICBib3JkZXI6IHZhcigtLWJvcmRlci1oZWF2eV9fZTNncnVyMXEpIHNvbGlkIHZhcigtLWJnMV9fZTNncnVyMjgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsX19lM2dydXIxbik7Cn0KLnVzZS1zdHlsZXNfdG9uZV9pbmtfXzF3cGVpNnAyIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1mZzFfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc190b25lX2FjY2VudF9fMXdwZWk2cDMgewogIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudF9fZTNncnVyMmopOwp9';\nexport var dot = 'use-styles_dot__1wpei6p1';\nexport var root = 'use-styles_root__1wpei6p0';\nexport var tone = {ink:'use-styles_tone_ink__1wpei6p2',accent:'use-styles_tone_accent__1wpei6p3'};","import type { BadgeProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Renderiza siempre los children; el contador solo cuando `count != null`.\nexport function Badge({ count, tone, className, children, ...rest }: BadgeProps) {\n const { root, dot } = useStyles({ tone, className });\n return (\n <span className={root} {...rest}>\n {children}\n {count != null && <span className={dot}>{count}</span>}\n </span>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { ProgressProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. El componente solo aplica lo que devuelve este hook.\nexport function useStyles({\n variant = \"linear\",\n value,\n className,\n}: { [K in \"variant\" | \"value\" | \"className\"]?: ProgressProps[K] | undefined }): {\n track: string;\n bar: string;\n spinner: string;\n} {\n const { themeClass } = useTheme();\n const indeterminate = value === undefined;\n\n return useMemo(() => {\n const root = (...classes: (string | false | undefined)[]) =>\n [themeClass, ...classes, className].filter(Boolean).join(\" \");\n\n if (variant === \"circular\") {\n return { track: \"\", bar: \"\", spinner: root(styles.spinner) };\n }\n return {\n track: root(styles.track),\n bar: [styles.bar, indeterminate && styles.indeterminate].filter(Boolean).join(\" \"),\n spinner: \"\",\n };\n }, [themeClass, variant, indeterminate, className]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/progress/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA62TwW6jMBCG7zyFL5WSgyNCku2KXPoYe0MDHmAWM2Ztkzaq8u4rTKChatqttCeM-Gf-b-Y3Tw2eSwstOtE7lM6fNbrMdcRZ1uSmezzF4jUSIn4IDyG8BXalsW0qrPHgcRWvj5EQl0iIbfyJbPcjVlhdtZfo6WNjTQon5-1d53DU4PHXSg6mXxDcyPdv6ku0uXH2Fopmck5Cjxqpqn0q9t3LUJFD0VTW9KxScQK7kjKvdlmGu8r2NoHQ1ZzQlto8p6ImpZBDnbEKrbSgqHdT6fgmy17rqcWWQ4tnUr5OwyTHd4w52IlwtyAcxR8hQlEg-5ny9_rbREsEYoUebUsMfg5qH2Cu4MkhoABTC54MS4YW0_shL8Wqt-GQiu0mcctvnlriSpY9F6NkBEdwKImbecj9ellHHsemsjA9-1QQl8Tk8f1ww7VnnHd8CGMpcp2G81CliVHm2hTN2xbnuzDutEY4nef9_VkLZzSphSaZQevbNLzpZGG0sf8vus9TuP3H74UQb35-FcKwFLD_vvG_YQNO0nIEAAA';\nexport var bar = 'use-styles_bar__kbop7v3';\nexport var indeterminate = 'use-styles_indeterminate__kbop7v4';\nexport var spinner = 'use-styles_spinner__kbop7v5';\nexport var track = 'use-styles_track__kbop7v2';","import type { ProgressProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Las dimensiones dinámicas (diámetro del spinner, ancho de la barra) se aplican inline.\nexport function Progress({\n variant = \"linear\",\n value,\n size = 20,\n className,\n ...rest\n}: ProgressProps) {\n const { track, bar, spinner } = useStyles({ variant, value, className });\n const indeterminate = value === undefined;\n\n if (variant === \"circular\") {\n return (\n <span\n className={spinner}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={indeterminate ? undefined : 0}\n aria-valuemax={indeterminate ? undefined : 100}\n style={{ width: size, height: size }}\n {...rest}\n />\n );\n }\n\n return (\n <div\n className={track}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={indeterminate ? undefined : 0}\n aria-valuemax={indeterminate ? undefined : 100}\n {...rest}\n >\n <div className={bar} style={indeterminate ? undefined : { width: `${value}%` }} />\n </div>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function XIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { ChipProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. El componente solo aplica lo que devuelve este hook.\nexport function useStyles({\n selected,\n tone = \"ink\",\n clickable,\n}: { [K in \"selected\" | \"tone\"]?: ChipProps[K] | undefined } & {\n clickable?: boolean | undefined;\n}): {\n root: string;\n deleteBtn: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [\n themeClass,\n styles.root,\n selected ? styles.selected : styles.tone[tone],\n clickable && styles.clickable,\n ]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, selected, tone, clickable],\n );\n return { root, deleteBtn: styles.deleteBtn };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/chip/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA4VUwbKbMAy85yt8bA5-U5J0pnVu_RFG2ALUGJvaJiHtvH_v2IADfcm8I9J6dyUkvQ0euQ93jb501oayLGAkXZ--sr87xhT5XsNdMDKaDPJa43jeMQaaGsMpYOcFk2gCuhhuoBfsCu4L574Hidx3ZYnHxg2ugH1E1NYEXkNH-r4gU6izxi7QwwPp6Q8KVhR9UtUYArpETaZZ3gcH8kKm4TdS6LLekFgCjiEijK-t6wQb-h6dBI8x2YNSK6LJ8ugzxY_9JtOpnKkSeWWdQscdKBr8wjJ98Qo8Zni3ht9IhXZBz7EW6OHcrtHp3wjmrSYVw7eWAk6GBDP25qBPdcYSKZA1goHWM7saHK_Bh9zZYqkIwSMnc8mZ0yw6xp6npswGKjued--7t9WgBGuwTI_nYSnSsEirrct_tTlkbrUuaIOaYg9ku3-qBTLOWJY7fJRbEDPPr5eKT4BbQY8aZUCV1Y5JrQJ5aZwdjHpUWGQamfS2pa3S31_a-Z9k60VqkheoNGYzp6n0wfnI0VuaVu_TZ6K1V3QvKqmaYzYBH0wo1BjwZzCZ7dv2NnxyFDpwDRnuqGmDYPw47fLT3TPxZy9rsG5aHHWTdnbtfonNHSXToqNw_rxBT0oStZWD51fyVGlMBdohxKMn2KEfpwXMF0sO-UocfiefM5jbuvYY0pvz7v0fTcZTG18FAAA';\nexport var clickable = 'use-styles_clickable__1axilf44';\nexport var deleteBtn = 'use-styles_deleteBtn__1axilf45';\nexport var root = 'use-styles_root__1axilf40';\nexport var selected = 'use-styles_selected__1axilf43';\nexport var tone = {ink:'use-styles_tone_ink__1axilf41',accent:'use-styles_tone_accent__1axilf42'};","import type { MouseEvent } from \"react\";\nimport { XIcon } from \"../icons/x\";\nimport type { ChipProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Reenvía las props nativas; el botón de borrado detiene la propagación al onClick del chip.\nexport function Chip({ selected, tone, onDelete, onClick, children, ...rest }: ChipProps) {\n const clickable = Boolean(onClick);\n const { root, deleteBtn } = useStyles({ selected, tone, clickable });\n\n const handleDelete = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n onDelete?.();\n };\n\n return (\n <span className={root} onClick={onClick} {...rest}>\n {children}\n {onDelete && (\n <button type=\"button\" className={deleteBtn} aria-label=\"Remove\" onClick={handleDelete}>\n <XIcon size={13} />\n </button>\n )}\n </span>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CheckIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { CheckboxProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. La decisión de \"qué clase aplica\" vive acá, no en el JSX.\nexport function useStyles({ checked, disabled }: Pick<CheckboxProps, \"checked\" | \"disabled\">): {\n root: string;\n input: string;\n box: string;\n check: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, disabled && styles.disabled].filter(Boolean).join(\" \"),\n [themeClass, disabled],\n );\n const box = useMemo(\n () => [styles.box, checked && styles.boxChecked].filter(Boolean).join(\" \"),\n [checked],\n );\n return { root, input: styles.input, box, check: styles.check };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/checkbox/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fOXpvZ2E5MCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLXNtX19lM2dydXIxYSk7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXRleHRfX2UzZ3J1cjEpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbWFsbC1zaXplX19lM2dydXIxMCk7CiAgY29sb3I6IHZhcigtLWZnMV9fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2JveF9fOXpvZ2E5MSB7CiAgd2lkdGg6IDE4cHg7CiAgaGVpZ2h0OiAxOHB4OwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLXJ1bGVfX2UzZ3J1cjFwKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tZmcxX19lM2dydXIyYyk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWJhc2VfX2UzZ3J1cjFtKTsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZmxleC1zaHJpbms6IDA7CiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLWR1ci1mYXN0X19lM2dydXIyMSkgdmFyKC0tZWFzZS1pbmtfX2UzZ3J1cjI0KTsKfQouc3VyZmFjZXNfc3JPbmx5X182aHMwZmcwOmZvY3VzLXZpc2libGUgKyAudXNlLXN0eWxlc19ib3hfXzl6b2dhOTEgewogIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1mb2N1c19fZTNncnVyMnEpOwogIG91dGxpbmUtb2Zmc2V0OiAycHg7Cn0KLnVzZS1zdHlsZXNfYm94Q2hlY2tlZF9fOXpvZ2E5MiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmcxX19lM2dydXIyYyk7Cn0KLnVzZS1zdHlsZXNfY2hlY2tfXzl6b2dhOTMgewogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKfQoudXNlLXN0eWxlc19kaXNhYmxlZF9fOXpvZ2E5NCB7CiAgb3BhY2l0eTogMC41OwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0';\nexport var box = 'use-styles_box__9zoga91';\nexport var boxChecked = 'use-styles_boxChecked__9zoga92';\nexport var check = 'use-styles_check__9zoga93';\nexport var disabled = 'use-styles_disabled__9zoga94';\nexport var input = 'surfaces_srOnly__6hs0fg0';\nexport var root = 'use-styles_root__9zoga90';","import type { ChangeEvent } from \"react\";\nimport { CheckIcon } from \"../icons/check\";\nimport type { CheckboxProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Input nativo visualmente oculto para accesibilidad; el box estilizado refleja el estado.\n// Controlado: el estado lo maneja el consumidor vía `checked` + `onChange`.\nexport function Checkbox({\n checked = false,\n onChange,\n label,\n disabled = false,\n id,\n}: CheckboxProps) {\n const { root, input, box, check } = useStyles({ checked, disabled });\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n onChange?.(e.target.checked);\n };\n\n return (\n <label className={root}>\n <input\n type=\"checkbox\"\n className={input}\n id={id}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n />\n <span className={box}>{checked && <CheckIcon size={12} className={check} />}</span>\n {label}\n </label>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { RadioProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({\n disabled,\n className,\n}: { disabled?: RadioProps[\"disabled\"] | undefined; className?: string | undefined }): {\n root: string;\n input: string;\n circle: string;\n dot: string;\n label: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [themeClass, styles.root, disabled && styles.disabled, className].filter(Boolean).join(\" \"),\n [themeClass, disabled, className],\n );\n return {\n root,\n input: styles.input,\n circle: styles.circle,\n dot: styles.dot,\n label: styles.label,\n };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/radio/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA51TQZLbIBC8-xUc40qxZdmurYT9QG55ggrBIM0ag8KA10oqf0-BhNZ2DlvJkemmp2canhIBpzhZoDZ4H9v2Mj033XHHfm0Y00ijlZNg6Cw64MbC9WXDmLTYO44RziSYAhch5HIvR8EuMnzinEapgNO5beHQhxQauc0M413kRp7RTpVZShGucaUWpvLWh5XTNxXdqxlOgTI-epy7_9483YyikWRnQddxmjLOg-Zh1YQ7Tecjl9b6N9CPugqDslBV9_-zpNdEEc3ElXcRXLyF3lDHQbDmy1gEBsB-iO_nzgcNgS-seYqlFlJ2texv3N6wi3HByFvUN-UP1ltlpcZElTafuEnWrr3cHKuFK6choDsJtsuVGKQjjOiduGu5SOkUuJG0Zr5vtgsCkoCjO63IcVtCoBSMVEAthe_OTm37PNDO9DthvErEL0jYWWCf2Udx-RRzTILtx-u8lvUhqkRr2x9lsIXMvTEEsdz566m9f5pDabDk8_U-xOXYSXXqg09O161KlR_A2vf13_d_78fKDmx1dCyOyhcj_AlVKX833nk9lWoVo9K6zFtdP9Iz-K1g9VLMBv4AyDXKoUYEAAA';\nexport var circle = 'use-styles_circle__vy61b42';\nexport var disabled = 'use-styles_disabled__vy61b41';\nexport var dot = 'use-styles_dot__vy61b43';\nexport var input = 'surfaces_srOnly__6hs0fg0';\nexport var label = 'use-styles_label__vy61b44';\nexport var root = 'use-styles_root__vy61b40';","import type { RadioProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Input nativo oculto + círculo/punto estilizados + label.\nexport function Radio({ checked, onChange, label, name, value, disabled }: RadioProps) {\n const { root, input, circle, dot, label: labelClass } = useStyles({ disabled });\n return (\n <label className={root}>\n <input\n className={input}\n type=\"radio\"\n name={name}\n value={value}\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n <span className={circle}>{checked && <span className={dot} />}</span>\n {label != null && <span className={labelClass}>{label}</span>}\n </label>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { SwitchProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ checked }: Pick<SwitchProps, \"checked\">): {\n root: string;\n input: string;\n track: string;\n knob: string;\n label: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n root: [themeClass, styles.root].filter(Boolean).join(\" \"),\n input: styles.input,\n track: [styles.track, checked && styles.trackChecked].filter(Boolean).join(\" \"),\n knob: [styles.knob, checked && styles.knobChecked].filter(Boolean).join(\" \"),\n label: styles.label,\n }),\n [themeClass, checked],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/switch/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6VUy47bMAy85yt03KBQ4DjZbaEee-mtn2DQNm0LZiRXlLJJi_33wrKtZpMsArRH8THDGRLaBEbJ_kzIhbPWF8XWvfR4-JyJ3yshas0DwVkJbUgblA3h6etKCCDdGqk9HliJCo1HN4ZbGJQ4gnuSkgeoUPKhKHDXuuC2sB4rGmu8bOCg6bxUxpDHk0-lsbKyZF2qabdLNq-mdHA85gerJ_a31eZDLaoDflK1ZigJ63WUtgAY6yUQ2Ves79DuEi2urzm8g6pPJNuIOljWXlujhEMCr484gr7q2ndK7PMhutehbjuvRD6_S6j61tlgaiW8A8MDODQ-pqyr0ckZYJpqjrlAmCwb1hfVcT4l2JKuL8IPHF1godaBl7LpJZtAlLhMLI-Dzlr_Cpjb6uBkCZzmy_P1nEFglNr0KbOf7oLwJLlz2vRKZNFpDq6BCrlg98PQuSheOs6aNlONrQLLo2ZdEopP4tFObPDj8SqRD6fJlHR5VeA0yM84yFwsbdMw-thzd-_fOqx6rBNVHqkuN3nf5_dQvbFlgthdXRCUbCn4eEHeDkrkm-fpYAgbr8Ruesy3sd2_P67l_Xik_1o9EP3bzm-NuLZ0H_2YtELwdqR2k7jdR9rKC21fblgISqSE_xzx4_fD-hcuEONXJPkARDGctGdRezyOxeObhjH7PSZT2_ibvf0B90nunGcFAAA';\nexport var input = 'surfaces_srOnly__6hs0fg0';\nexport var knob = 'use-styles_knob__1r6kem73';\nexport var knobChecked = 'use-styles_knobChecked__1r6kem74';\nexport var label = 'use-styles_label__1r6kem75';\nexport var root = 'use-styles_root__1r6kem70';\nexport var track = 'use-styles_track__1r6kem71';\nexport var trackChecked = 'use-styles_trackChecked__1r6kem72';","import type { SwitchProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Input nativo visualmente oculto (role=\"switch\") + track/knob estilizados + label.\nexport function Switch({ checked = false, onChange, label, disabled }: SwitchProps) {\n const { root, input, track, knob, label: labelClass } = useStyles({ checked });\n return (\n <label className={root}>\n <input\n type=\"checkbox\"\n role=\"switch\"\n aria-checked={checked}\n className={input}\n checked={checked}\n disabled={disabled}\n onChange={(event) => {\n if (disabled) return;\n onChange?.(event.target.checked);\n }}\n />\n <span className={track}>\n <span className={knob} />\n </span>\n {label != null && <span className={labelClass}>{label}</span>}\n </label>\n );\n}\n","import {\n type ChangeEvent,\n type MouseEvent,\n type TextareaHTMLAttributes,\n useId,\n useState,\n} from \"react\";\nimport { EyeIcon } from \"../icons/eye\";\nimport { EyeOffIcon } from \"../icons/eye-off\";\nimport type { TextFieldProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado vía onChange(value); soporta password reveal, startIcon y multiline.\nexport function TextField({\n label,\n help,\n error,\n startIcon: StartIcon,\n multiline,\n rows,\n type = \"text\",\n onChange,\n className,\n id,\n ...rest\n}: TextFieldProps) {\n const [reveal, setReveal] = useState(false);\n const isPassword = type === \"password\";\n const hasReveal = isPassword;\n const effectiveType = isPassword ? (reveal ? \"text\" : \"password\") : type;\n\n const autoId = useId();\n const controlId = id ?? autoId;\n\n const classes = useStyles({\n error,\n hasStartIcon: Boolean(StartIcon),\n hasReveal,\n className,\n });\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.value);\n };\n\n const handleTextareaChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e.target.value);\n };\n\n const handleToggleMouseDown = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n };\n\n return (\n <div className={classes.root}>\n {label != null && (\n <label htmlFor={controlId} className={classes.labelText}>\n {label}\n </label>\n )}\n <div className={classes.field}>\n {StartIcon != null && (\n <span className={classes.startIcon}>\n <StartIcon size={18} />\n </span>\n )}\n {multiline ? (\n <textarea\n id={controlId}\n className={classes.input}\n rows={rows ?? 4}\n onChange={handleTextareaChange}\n {...(rest as TextareaHTMLAttributes<HTMLTextAreaElement>)}\n />\n ) : (\n <input\n id={controlId}\n className={classes.input}\n type={effectiveType}\n onChange={handleInputChange}\n {...rest}\n />\n )}\n {hasReveal && (\n <button\n type=\"button\"\n tabIndex={-1}\n className={classes.revealButton}\n aria-label={reveal ? \"Ocultar contraseña\" : \"Mostrar contraseña\"}\n onMouseDown={handleToggleMouseDown}\n onClick={() => setReveal((r) => !r)}\n >\n {reveal ? <EyeOffIcon size={18} /> : <EyeIcon size={18} />}\n </button>\n )}\n </div>\n {help != null && <span className={classes.helpText}>{help}</span>}\n </div>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function EyeIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function EyeOffIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M9.88 9.88a3 3 0 1 0 4.24 4.24\" />\n <path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\" />\n <path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\" />\n <path d=\"m2 2 20 20\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. La decisión de \"qué clase aplica\" vive acá.\ninterface UseStylesArgs {\n error?: boolean | undefined;\n hasStartIcon?: boolean | undefined;\n hasReveal?: boolean | undefined;\n className?: string | undefined;\n}\n\nexport function useStyles({ error, hasStartIcon, hasReveal, className }: UseStylesArgs): {\n root: string;\n labelText: string;\n field: string;\n input: string;\n helpText: string;\n startIcon: string;\n revealButton: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(() => {\n const root = [themeClass, styles.root].filter(Boolean).join(\" \");\n const labelText = [styles.labelText, error && styles.labelTextError].filter(Boolean).join(\" \");\n const input = [\n styles.input,\n error && styles.inputError,\n hasStartIcon && styles.inputStartPad,\n hasReveal && styles.inputRevealPad,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n const helpText = [styles.helpText, error && styles.helpTextError].filter(Boolean).join(\" \");\n return {\n root,\n labelText,\n field: styles.field,\n input,\n helpText,\n startIcon: styles.startIcon,\n revealButton: styles.revealButton,\n };\n }, [themeClass, error, hasStartIcon, hasReveal, className]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/text-field/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61VwW7bMAy95yt8GbAcVCRpt7XObcAOuw3r7gEt0Y5aWTQkOnE29N8HybFqN226FkMOgULy8ZGPZC5aj8LzwaDfOCLebHbA19Vukf2ZZZnSvjFwyLPSYLeeZfFbKO1QsiabZ5JMW9tgqaDJsx24j0L4BiSKzm82eFm51i1v5uvZw-xilMpAgeYXdinfMuYrybIoodbmMIDFn2qyNKCt5uvB0-vfOPgxdizwgIWjfTQM_lfR3yAzukhN2yoFOZD32lZirxV6ToR3MSZCsgPrS3J1nrVNg06Cx2CUZMglktVloocvF_vNOXJDxatY8QRGga3QJSQ6QSo1GjUAXEaAhrzutXBogPUusjsRDoyurNCMtc8ziZbRPQXXtmmTHldn9eCo3LFZZ_QoSB0mYvj5M71bpoplNBcg7ytHrVWDT1Gtks9N70NOYcLoX2ILOnVvSfPMk9Fq4vIIsx3BCAdKt35A61-iAJ94L-vo3oBSo_HpB71WyauYv2wJ8XuteJtny8XiQ3hSy0ZbzDNLFns6XWhXTHGkVlB3Xqi8JNn6KNcxZNJekEHtVPbdPOXZgqJ9ni3iZ9V0k4BbKh-DzMkgRgqTcf70IoNXpzqC3TI4_gFpuj_30903XBgsedr1VWdSc09XLkL-xB2CGWF-mWA6XW3fBLpF04xv1vV_2REJTdjfyZosr0YBIXkYEVeDeePlGRhPlLp5x-HxQZ3vkuwAAk-ODxSeTMvY39qnYp0sQrpP2oYNEGfP1CslBxo6eArcoWU_rNO0AheH4WvL_FhEcaaIZ6bD16kKeE8Vd61nXR6EJMtoeWx69rCEMlLG68nZSwdjdCrjP1UDDi3_Q89k63ywH3u3nj38Bcb3PFULCAAA';\nexport var field = 'use-styles_field__vat8gv3';\nexport var helpText = 'use-styles_helpText__vat8gv8';\nexport var helpTextError = 'use-styles_helpTextError__vat8gv9';\nexport var input = 'use-styles_input__vat8gv4';\nexport var inputError = 'use-styles_inputError__vat8gv5';\nexport var inputRevealPad = 'use-styles_inputRevealPad__vat8gv7';\nexport var inputStartPad = 'use-styles_inputStartPad__vat8gv6';\nexport var labelText = 'use-styles_labelText__vat8gv1';\nexport var labelTextError = 'use-styles_labelTextError__vat8gv2';\nexport var revealButton = 'use-styles_revealButton__vat8gvb';\nexport var root = 'use-styles_root__vat8gv0';\nexport var startIcon = 'use-styles_startIcon__vat8gva';","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { IconButtonProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({\n active = false,\n tone = \"ink\",\n}: { [K in \"active\" | \"tone\"]?: IconButtonProps[K] | undefined }): {\n root: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [themeClass, styles.root, tone === \"accent\" && styles.accent, active && styles.active]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, active, tone],\n );\n return { root };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/icon-button/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMThucDBxMDAgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcGFkZGluZzogdmFyKC0tc3BhY2Utc21fX2UzZ3J1cjFhKTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBjb2xvcjogdmFyKC0tZmcyX19lM2dydXIyZCk7CiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1ib3JkZXItaGFpcl9fZTNncnVyMW8pOwogIGJvcmRlci1zdHlsZTogc29saWQ7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246IGFsbCB2YXIoLS1kdXItZmFzdF9fZTNncnVyMjEpIHZhcigtLWVhc2UtaW5rX19lM2dydXIyNCk7Cn0KLnVzZS1zdHlsZXNfcm9vdF9fMThucDBxMDA6aG92ZXI6bm90KDpkaXNhYmxlZCkgewogIGJhY2tncm91bmQ6IHZhcigtLWJnM19fZTNncnVyMmEpOwp9Ci51c2Utc3R5bGVzX3Jvb3RfXzE4bnAwcTAwOmRpc2FibGVkIHsKICBjb2xvcjogdmFyKC0tZmczX19lM2dydXIyZSk7CiAgb3BhY2l0eTogMC41OwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLnVzZS1zdHlsZXNfcm9vdF9fMThucDBxMDA6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIycSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoudXNlLXN0eWxlc19hY3RpdmVfXzE4bnAwcTAxIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzNfX2UzZ3J1cjJhKTsKICBjb2xvcjogdmFyKC0tYWNjZW50X19lM2dydXIyaik7Cn0KLnVzZS1zdHlsZXNfYWNjZW50X18xOG5wMHEwMiB7CiAgY29sb3I6IHZhcigtLWFjY2VudF9fZTNncnVyMmopOwp9';\nexport var accent = 'use-styles_accent__18np0q02';\nexport var active = 'use-styles_active__18np0q01';\nexport var root = 'use-styles_root__18np0q00';","import type { IconButtonProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// El icono es un componente (Icon); el botón lo renderiza fijando el tamaño.\nexport function IconButton({ icon: Icon, active, tone, title, ...rest }: IconButtonProps) {\n const { root } = useStyles({ active, tone });\n return (\n <button className={root} aria-label={title} title={title} {...rest}>\n <Icon size={18} />\n </button>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts` (los estilos). El componente solo aplica lo que devuelve este\n// hook. El themeClass va en el slot raíz; los demás slots heredan las vars desde ahí.\nexport function useStyles(): {\n root: string;\n header: string;\n body: string;\n footer: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(() => `${themeClass} ${styles.root}`, [themeClass]);\n return { root, header: styles.header, body: styles.body, footer: styles.footer };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/card/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMWZ1dmQwMjAgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlcjogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKSBzb2xpZCB2YXIoLS1ib3JkZXIxX19lM2dydXIyZyk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnX19lM2dydXIxbCk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudXNlLXN0eWxlc19oZWFkZXJfXzFmdXZkMDIxIHsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1sZ19fZTNncnVyMWMpOwogIGJvcmRlci1ib3R0b206IHZhcigtLWJvcmRlci1oYWlyX19lM2dydXIxbykgc29saWQgdmFyKC0tYm9yZGVyMV9fZTNncnVyMmcpOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLnVzZS1zdHlsZXNfYm9keV9fMWZ1dmQwMjIgewogIHBhZGRpbmc6IHZhcigtLXNwYWNlLWxnX19lM2dydXIxYyk7Cn0KLnVzZS1zdHlsZXNfZm9vdGVyX18xZnV2ZDAyMyB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtbGdfX2UzZ3J1cjFjKTsKICBib3JkZXItdG9wOiB2YXIoLS1ib3JkZXItaGFpcl9fZTNncnVyMW8pIHNvbGlkIHZhcigtLWJvcmRlcjFfX2UzZ3J1cjJnKTsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9';\nexport var body = 'use-styles_body__1fuvd022';\nexport var footer = 'use-styles_footer__1fuvd023';\nexport var header = 'use-styles_header__1fuvd021';\nexport var root = 'use-styles_root__1fuvd020';","import type { CardProps, CardSectionProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Compound component: el consumidor compone las secciones explícitamente\n// (Card.Header / Card.Body / Card.Footer) en vez de pasar nodos por props.\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\nfunction CardRoot({ children, ...rest }: CardProps) {\n const { root } = useStyles();\n return (\n <div className={root} {...rest}>\n {children}\n </div>\n );\n}\n\nfunction CardHeader({ children, ...rest }: CardSectionProps) {\n const { header } = useStyles();\n return (\n <div className={header} {...rest}>\n {children}\n </div>\n );\n}\n\nfunction CardBody({ children, ...rest }: CardSectionProps) {\n const { body } = useStyles();\n return (\n <div className={body} {...rest}>\n {children}\n </div>\n );\n}\n\nfunction CardFooter({ children, ...rest }: CardSectionProps) {\n const { footer } = useStyles();\n return (\n <div className={footer} {...rest}>\n {children}\n </div>\n );\n}\n\nCardRoot.displayName = \"Card\";\nCardHeader.displayName = \"Card.Header\";\nCardBody.displayName = \"Card.Body\";\nCardFooter.displayName = \"Card.Footer\";\n\nexport const Card = Object.assign(CardRoot, {\n Header: CardHeader,\n Body: CardBody,\n Footer: CardFooter,\n});\n","import type { IconProps } from \"../types\";\n\nexport function CircleCheckIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CircleXIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6\" />\n <path d=\"m9 9 6 6\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function InfoIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function TriangleAlertIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { AlertProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. El componente solo aplica lo que devuelve este hook.\nexport function useStyles({\n severity = \"info\",\n className,\n}: Pick<AlertProps, \"severity\" | \"className\">): {\n root: string;\n iconSlot: string;\n content: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, styles.severity[severity], className].filter(Boolean).join(\" \"),\n [themeClass, severity, className],\n );\n return {\n root,\n iconSlot: styles.iconSlot,\n content: styles.content,\n };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/alert/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA32TzY7CIBRG930KluMCM-qMifUx5gEaCpTeSLkNUK0z8d0n_QGr1a4a8n2cA6R33ThJnb9q6TKL6LMMzq7cN5_kLyFEgKs1u6ak0LI9JoQoVqfkzOwHpa5mXNJKZJncKdvYTb7qGjUTAoxaaD0kWsWE9_tzxk_KYmNEQORqGzrbw9BBK6SNeb-iJQMbWbgiDjWIh8omYtQEQ7UsPL2A8GVKdnU7SSwT0LjgGVY0Z05GTzWCWurgt7_2uDXH9pjckvXkeZ08Swv-moEpMLzzpn_n6Uk4aox3G6rjqetetpy_UeIpCLfLwq444qq57il9I7swa4Jut6wbqiPSzIWz_I1SMKOkDdKvZWkoj1ica180HsXA0fzo-7h8vx6X7ktdacGcUvI50YApu4M_YzkaL02k7heoAqzkHtCkHbOpzMvxbF38VQ_zaxbqPhLd9N3-AdO34koOBAAA';\nexport var content = 'use-styles_content__ivsh6u6';\nexport var iconSlot = 'use-styles_iconSlot__ivsh6u5';\nexport var root = 'use-styles_root__ivsh6u0';\nexport var severity = {info:'use-styles_severity_info__ivsh6u1',ok:'use-styles_severity_ok__ivsh6u2',warn:'use-styles_severity_warn__ivsh6u3',danger:'use-styles_severity_danger__ivsh6u4'};","import { CircleCheckIcon } from \"../icons/circle-check\";\nimport { CircleXIcon } from \"../icons/circle-x\";\nimport { InfoIcon } from \"../icons/info\";\nimport { TriangleAlertIcon } from \"../icons/triangle-alert\";\nimport type { Icon } from \"../icons/types\";\nimport { Typography } from \"../typography\";\nimport type { AlertProps, AlertSeverity } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Reenvía las props nativas; el icono por defecto depende de la severidad.\nconst defaultIcons: Record<AlertSeverity, Icon> = {\n info: InfoIcon,\n ok: CircleCheckIcon,\n warn: TriangleAlertIcon,\n danger: CircleXIcon,\n};\n\nexport function Alert({\n severity = \"info\",\n title,\n icon,\n className,\n children,\n ...rest\n}: AlertProps) {\n const styles = useStyles({ severity, className });\n const IconComponent = icon ?? defaultIcons[severity];\n return (\n <div role=\"alert\" className={styles.root} {...rest}>\n <span className={styles.iconSlot}>\n <IconComponent />\n </span>\n <div className={styles.content}>\n {title != null && <Typography variant=\"h4\">{title}</Typography>}\n {children != null && (\n <Typography variant=\"body\" color=\"fg2\">\n {children}\n </Typography>\n )}\n </div>\n </div>\n );\n}\n","import { cloneElement, useId, useState } from \"react\";\nimport type { TooltipProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Maneja el estado `open` local; muestra en hover/focus y oculta en leave/blur.\n// Accesibilidad: enlaza el bubble (role=\"tooltip\") al trigger via aria-describedby\n// mientras está abierto, clonando el children (el elemento interactivo).\nexport function Tooltip({ label, children, placement }: TooltipProps) {\n const [open, setOpen] = useState(false);\n const tooltipId = useId();\n const { wrapper, bubble } = useStyles({ placement });\n\n const show = () => setOpen(true);\n const hide = () => setOpen(false);\n\n const previousDescribedBy = (children.props as { \"aria-describedby\"?: string })[\n \"aria-describedby\"\n ];\n const describedBy = open\n ? [previousDescribedBy, tooltipId].filter(Boolean).join(\" \")\n : previousDescribedBy;\n\n const trigger = cloneElement(children, { \"aria-describedby\": describedBy });\n\n return (\n <span className={wrapper} onMouseEnter={show} onMouseLeave={hide} onFocus={show} onBlur={hide}>\n {trigger}\n {open && (\n <span id={tooltipId} role=\"tooltip\" className={bubble}>\n {label}\n </span>\n )}\n </span>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { TooltipProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({\n placement = \"top\",\n}: { placement?: TooltipProps[\"placement\"] | undefined }): {\n wrapper: string;\n bubble: string;\n} {\n const { themeClass } = useTheme();\n const wrapper = useMemo(\n () => [themeClass, styles.wrapper].filter(Boolean).join(\" \"),\n [themeClass],\n );\n const bubble = useMemo(\n () => [styles.bubble, styles.placement[placement]].filter(Boolean).join(\" \"),\n [placement],\n );\n return { wrapper, bubble };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/tooltip/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfd3JhcHBlcl9faDlrdmgwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7Cn0KLnVzZS1zdHlsZXNfYnViYmxlX19oOWt2aDEgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9fX2UzZ3J1cjIpOwogIGZvbnQtc2l6ZTogMTFweDsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZV9fZTNncnVyMXQpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXhzX19lM2dydXIxOSkgdmFyKC0tc3BhY2Utc21fX2UzZ3J1cjFhKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgei1pbmRleDogMTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoudXNlLXN0eWxlc19wbGFjZW1lbnRfdG9wX19oOWt2aDIgewogIGJvdHRvbTogMTAwJTsKICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS14c19fZTNncnVyMTkpOwp9Ci51c2Utc3R5bGVzX3BsYWNlbWVudF9ib3R0b21fX2g5a3ZoMyB7CiAgdG9wOiAxMDAlOwogIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLXhzX19lM2dydXIxOSk7Cn0';\nexport var bubble = 'use-styles_bubble__h9kvh1 surfaces_inkySurface__6hs0fg2';\nexport var placement = {top:'use-styles_placement_top__h9kvh2',bottom:'use-styles_placement_bottom__h9kvh3'};\nexport var wrapper = 'use-styles_wrapper__h9kvh0';","import { type KeyboardEvent, useEffect, useId, useRef, useState } from \"react\";\nimport { ChevronDownIcon } from \"../icons/chevron-down\";\nimport type { SelectProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional + estado de apertura/navegación. La lógica de estilos vive en use-styles.ts.\nexport function Select({ options, value, onChange, placeholder, label, disabled }: SelectProps) {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(0);\n const rootRef = useRef<HTMLDivElement>(null);\n const baseId = useId();\n const labelId = `${baseId}-label`;\n const optionId = (index: number) => `${baseId}-option-${index}`;\n const {\n root,\n label: labelClass,\n trigger,\n placeholder: placeholderClass,\n chevron,\n menu,\n optionClass,\n } = useStyles({ open });\n\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (event: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(event.target as Node)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", onPointerDown);\n return () => document.removeEventListener(\"mousedown\", onPointerDown);\n }, [open]);\n\n const selected = options.find((option) => option.value === value);\n\n const selectAt = (index: number) => {\n const option = options[index];\n if (option) onChange?.(option.value);\n setOpen(false);\n };\n\n const handleSelect = (optionValue: string) => {\n onChange?.(optionValue);\n setOpen(false);\n };\n\n const openMenu = () => {\n const current = options.findIndex((option) => option.value === value);\n setActiveIndex(current >= 0 ? current : 0);\n setOpen(true);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) return;\n switch (event.key) {\n case \"Escape\":\n setOpen(false);\n break;\n case \"ArrowDown\":\n event.preventDefault();\n if (!open) {\n openMenu();\n } else {\n setActiveIndex((index) => (index + 1) % options.length);\n }\n break;\n case \"ArrowUp\":\n event.preventDefault();\n if (!open) {\n openMenu();\n } else {\n setActiveIndex((index) => (index - 1 + options.length) % options.length);\n }\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n if (!open) {\n openMenu();\n } else {\n selectAt(activeIndex);\n }\n break;\n default:\n break;\n }\n };\n\n return (\n <div ref={rootRef} className={root}>\n {label && (\n <span id={labelId} className={labelClass}>\n {label}\n </span>\n )}\n <button\n type=\"button\"\n className={trigger}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-labelledby={label ? labelId : undefined}\n aria-activedescendant={open ? optionId(activeIndex) : undefined}\n onClick={() => {\n if (disabled) return;\n if (open) {\n setOpen(false);\n } else {\n openMenu();\n }\n }}\n onKeyDown={handleKeyDown}\n >\n {selected ? selected.label : <span className={placeholderClass}>{placeholder}</span>}\n <span className={chevron}>\n <ChevronDownIcon size={18} />\n </span>\n </button>\n {open && (\n <div className={menu} role=\"listbox\">\n {options.map((option, index) => {\n const isSelected = option.value === value;\n const isActive = index === activeIndex;\n return (\n // biome-ignore lint/a11y/useKeyWithClickEvents: keyboard nav lives on the trigger via aria-activedescendant; options are not focusable.\n <div\n key={option.value}\n id={optionId(index)}\n role=\"option\"\n tabIndex={-1}\n aria-selected={isSelected}\n className={optionClass(isSelected, isActive)}\n onClick={() => handleSelect(option.value)}\n >\n {option.label}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ChevronDownIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + el estado relevante y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({\n open = false,\n}: {\n open?: boolean;\n}): {\n root: string;\n label: string;\n trigger: string;\n placeholder: string;\n chevron: string;\n menu: string;\n optionClass: (selected: boolean, active: boolean) => string;\n} {\n const { themeClass } = useTheme();\n return useMemo(() => {\n const chevron = [styles.chevron, open && styles.chevronOpen].filter(Boolean).join(\" \");\n return {\n root: [themeClass, styles.root].filter(Boolean).join(\" \"),\n label: styles.label,\n trigger: styles.trigger,\n placeholder: styles.placeholder,\n chevron,\n menu: styles.menu,\n optionClass: (selected: boolean, active: boolean) =>\n [styles.option, selected && styles.optionSelected, active && styles.optionActive]\n .filter(Boolean)\n .join(\" \"),\n };\n }, [themeClass, open]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/select/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VWQW7bMBC8-xW8FIiBMrCcpEnkU2-99ZAHGBS5kphQXIGkbDlF_16Qsigplu2gKFD4YJjcWc7ODpe-bSxQ6w4K7NYguu022Sf8vc5W5NeCkBqtdBJ1Sgwo5uQONgtChLS1YoeU5Apav-C_qZAGeBfMUTWV9jsFq1OyY-aGUlszDrS12y3cFaYxyfNys_i9uB0xUCwDFSkkgUKO2tGcVVId-kxhqUKNfar1ctNHWvkOfZyD1lHOak8qbMSj7wNASQ20BFmUbhbi93-E7Qh86IDgHJhQkdTFPDaEvHQREf4Y4CHQGaZtjqZKSVPXYDizQVyOCk2stLiLNcKJXM7IogATBVsHwU6689pYJ_MD5agdaJeSrhMZuD1A6BJTstBUOqhsSjhoB2a2ebaKlbBQyV4KV6YkWa2--J81E2IkSAeqRARly_M7Hp9h6_sUUmRoBBiaYbu54AIvZUxywQUZisPEAnY5I3YSxeYdH8bfCoONFn1MVqxjzPORc-B5VOIY1a2VTJpIDsfRoYEpsaikGC1P6HRrw3HlOIFhQja2D-1-0YzZweJVV2BjrE9Zo-y7GvQIHU-JgtyFNW_G400fcznmF42hObNR6XXSNxKYBSr1W9y5X37t2lgygfu_wV91eZojb2zwOjbOX9KUaNRwTkjGvaXjCa-D1QLHlKzCZ123E8AL5gNIfYKWkJZlCkRgdvEazztriGGT3mn0_VK4B_GRRK0YhxKVGBG5u37-NAkvYWdQxwT30zEidZiTk1lvSyP1W0pWVyfW1Ftx6P0LYxx5_6xh4P4QuI9mq0HHHNwkTysBxUmKCnQTsd8-PHkss6gaF3zlsB7GnL810xnn7Rdv3lMo24yflbNRSlrXT4PewxUzhdRXoV0YDcwuvLBnpvJMwvPT951KLaD1CnxUEMNzFzV87DScO3HyeFx-B_7PtD-ZlZcrTUvcgQn1Xr_Nc6leQAF3IGLKp9ObOzO75lJ95_6_WUz0_FlWfwC_NyyP_wkAAA';\nexport var chevron = 'use-styles_chevron__1w1czpb4';\nexport var chevronOpen = 'use-styles_chevronOpen__1w1czpb5';\nexport var label = 'use-styles_label__1w1czpb1';\nexport var menu = 'use-styles_menu__1w1czpb6 surfaces_panelSurface__6hs0fg1';\nexport var option = 'use-styles_option__1w1czpb7';\nexport var optionActive = 'use-styles_optionActive__1w1czpb9';\nexport var optionSelected = 'use-styles_optionSelected__1w1czpb8';\nexport var placeholder = 'use-styles_placeholder__1w1czpb3';\nexport var root = 'use-styles_root__1w1czpb0';\nexport var trigger = 'use-styles_trigger__1w1czpb2';","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles(): {\n wrapper: string;\n label: string;\n root: string;\n track: string;\n range: string;\n thumb: string;\n input: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(() => {\n const root = [themeClass, styles.root].filter(Boolean).join(\" \");\n return {\n wrapper: styles.wrapper,\n label: styles.label,\n root,\n track: styles.track,\n range: styles.range,\n thumb: styles.thumb,\n input: styles.input,\n };\n }, [themeClass]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/slider/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5VUy24jIRC8-yu4rLQ-EHn8iBLyMRYz9IyRGXoCjR-7yn77Cjxgx04cWT710FRVV7V5Ch64p6MBv3aItF7jdr96tTP2d8LYgF6TRiuYAyNJ7-BtwtgGdLchwebL4RDrvVa0EayazX7FUmk_GHkUrDWQzqXRneWaoPeCNWAJ3NvkY_J0QU1ONtvMXSXuzPI1SS2bbecwWCXYTrrfnNfdYr2GReeCm8tp6kGnwHEnlQ4-t50q3gZjcntlp9d6nLQdZD3zKy9k7dEE-uTFqPJWVttVRVbzuKzIq6NjHHZgyQtm0cK1XG2HUKJb3JGrrQfKnH6QDfCIVyhfpl94nWfMdS9dp-2PKDjIRtNRsFmsmuA8OpHHuT-BUNrL2oBKo-SrFolLY3AP6mZ_NqGv8_XlHQPyaM-nvMpoY30ajRtoSTD-Mob6WGAP7MCoZlzgkSaYs5PDZXeaVTCPRquLzw2a6M73VAfuN1LhviSWKu770rm6s2mMkZM2e3lGG8FUcLyVngpWNR1PQHrg2m7LyfLmb3aVeotN8Hynva4NsH_sh4QvJ5ul32I4ZB8iVGF-v2E2sgaT4VYJrrxbtcFme7ENNRJh_3nfDwW8ek3mtWiJt7LX5liyiJ96tFh0nDu9_gOCVfPThhmgaHyE1rbL99OjqG0X1wRc4QsJheBAPCXTousFC8MArpE-JXa1EvMiQN0YsXcy3sxWPH9jxacn4eM_lIAwIzYGAAA';\nexport var input = 'use-styles_input__okw59n3';\nexport var label = 'use-styles_label__okw59n5';\nexport var range = 'use-styles_range__okw59n2';\nexport var root = 'use-styles_root__okw59n0';\nexport var thumb = 'use-styles_thumb__okw59n4';\nexport var track = 'use-styles_track__okw59n1';\nexport var wrapper = 'use-styles_wrapper__okw59n6';","import type { ChangeEvent } from \"react\";\nimport type { SliderProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Un <input type=\"range\"> nativo (opacity 0) se superpone para interacción + teclado;\n// las dimensiones dinámicas (percent) se aplican vía inline style acá.\nexport function Slider({\n value = 0,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled,\n label,\n}: SliderProps) {\n const { wrapper, label: labelClass, root, track, range, thumb, input } = useStyles();\n\n const span = max - min;\n const percent = span > 0 ? ((value - min) / span) * 100 : 0;\n const clamped = Math.max(0, Math.min(100, percent));\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(Number(e.target.value));\n };\n\n return (\n <span className={wrapper}>\n {label ? <span className={labelClass}>{label}</span> : null}\n <span className={root}>\n <span className={track} />\n <span className={range} style={{ width: `${clamped}%` }} />\n <input\n className={input}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n disabled={disabled}\n onChange={handleChange}\n />\n <span className={thumb} style={{ left: `${clamped}%` }} />\n </span>\n </span>\n );\n}\n","import { useState } from \"react\";\nimport { ChevronDownIcon } from \"../icons/chevron-down\";\nimport type { AccordionProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Estado local `open` (string[]); el toggle respeta `multiple`.\nexport function Accordion({\n items,\n multiple = false,\n defaultOpen = [],\n className,\n}: AccordionProps) {\n const [open, setOpen] = useState<string[]>(defaultOpen);\n const { root, item, header, chevronFor, panel } = useStyles({ className });\n\n const toggle = (id: string) => {\n setOpen((current) => {\n const isOpen = current.includes(id);\n if (isOpen) return current.filter((x) => x !== id);\n return multiple ? [...current, id] : [id];\n });\n };\n\n return (\n <div className={root}>\n {items.map((it) => {\n const isOpen = open.includes(it.id);\n const panelId = `accordion-panel-${it.id}`;\n const headerId = `accordion-header-${it.id}`;\n return (\n <div key={it.id} className={item}>\n <button\n type=\"button\"\n id={headerId}\n className={header}\n aria-expanded={isOpen}\n aria-controls={panelId}\n onClick={() => toggle(it.id)}\n >\n {it.title}\n <ChevronDownIcon className={chevronFor(isOpen)} />\n </button>\n {isOpen && (\n <div id={panelId} className={panel} role=\"region\" aria-labelledby={headerId}>\n {it.content}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { AccordionProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ className }: { className?: AccordionProps[\"className\"] | undefined }): {\n root: string;\n item: string;\n header: string;\n chevronFor: (open: boolean) => string;\n panel: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n root: [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n item: styles.item,\n header: styles.header,\n chevronFor: (open: boolean) =>\n [styles.chevron, open && styles.chevronOpen].filter(Boolean).join(\" \"),\n panel: styles.panel,\n }),\n [themeClass, className],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/accordion/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61Ty27bMBC8-yt4KRAfGEh2CrT0R_QTBFpcSoxprrpc-dEi_16IshjZSZ0A7U0id2dmZ4ePfQQZ-ewhVoTIVVXWz2Ta74X4vRBii2SAlDhoepBy_JOtdlRVsG6opxKXIqJ35qqknK5XzXKTYSRp4_o4oY1_0jcZy6diPABZj0clWmcMhM3iZfE4k-kY9llmOZMpt8iM-39Ue49MeR1Z1q3z5j3egAFuAVrQBihDrFLf0RlulSiL4sswsXGx8_qshPVwGg6e-8jOnmWNgSGwErHTNcgt8BEGQ4TQ3jVBDuqiEjUEBhqOG91N448te5Nn3yZ3O22MC82dqqub2XbqcZW63jWEfTBKMOkQO00QeDMLy2iDEHVPEUmJDt2kz2JgafXe-fOkIB0xnDgTJZ4aPebg2eZ1R6OMoUEmE5TwYC_8JxndrzRd3kzyMwl17DCo2QAXcNOTtDpm_lU5WQA6gnRhl2-e3uTjdr2qHeI7hmPm1CVuzTpD6Y-hLNZ9lAcX3dZDgsSevQugxKo7XQU5lWbsn-M7GoslWhuBU88tZd3CgTBkznViGVIoY0su7JQo3lnGKjOZ5a296dsi7f-Huxd9Pzp41fiUNGYaJQhZMzyU3woDbx9wpwP43Pw1Nec3UPw96_dfwQeGfDbmL38AClAqMH8FAAA';\nexport var chevron = 'use-styles_chevron__1cjrdh93';\nexport var chevronOpen = 'use-styles_chevronOpen__1cjrdh94';\nexport var header = 'use-styles_header__1cjrdh92';\nexport var item = 'use-styles_item__1cjrdh91';\nexport var panel = 'use-styles_panel__1cjrdh95';\nexport var root = 'use-styles_root__1cjrdh90';","import { Fragment } from \"react\";\nimport { ChevronRightIcon } from \"../icons/chevron-right\";\nimport type { BreadcrumbsProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Reenvía las props nativas. El último item es el actual (sin link).\nexport function Breadcrumbs({ items, className, ...rest }: BreadcrumbsProps) {\n const { root, crumb, current, separator } = useStyles({ className });\n return (\n <nav aria-label=\"Breadcrumb\" className={root} {...rest}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const key = index;\n return (\n <Fragment key={key}>\n {isLast ? (\n <span className={current} aria-current=\"page\">\n {item.label}\n </span>\n ) : item.href ? (\n <a className={crumb} href={item.href}>\n {item.label}\n </a>\n ) : (\n <span className={crumb}>{item.label}</span>\n )}\n {!isLast && (\n <span className={separator}>\n <ChevronRightIcon size={14} />\n </span>\n )}\n </Fragment>\n );\n })}\n </nav>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ChevronRightIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { BreadcrumbsProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ className }: Pick<BreadcrumbsProps, \"className\">): {\n root: string;\n crumb: string;\n current: string;\n separator: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n [themeClass, className],\n );\n return { root, crumb: styles.crumb, current: styles.current, separator: styles.separator };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/breadcrumbs/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fN3UwZHU2MCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2Utc21fX2UzZ3J1cjFhKTsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IDEycHg7CiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNraW5nLXdpZGVfX2UzZ3J1cjF0KTsKfQoudXNlLXN0eWxlc19jcnVtYl9fN3UwZHU2MSB7CiAgY29sb3I6IHZhcigtLWZnMl9fZTNncnVyMmQpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoudXNlLXN0eWxlc19jcnVtYl9fN3UwZHU2MTpob3ZlciB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiB2YXIoLS1hY2NlbnRfX2UzZ3J1cjJqKTsKICBjb2xvcjogdmFyKC0tYWNjZW50X19lM2dydXIyaik7Cn0KLnVzZS1zdHlsZXNfY3J1bWJfXzd1MGR1NjE6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIycSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoudXNlLXN0eWxlc19jdXJyZW50X183dTBkdTYyIHsKICBjb2xvcjogdmFyKC0tZmcxX19lM2dydXIyYyk7Cn0KLnVzZS1zdHlsZXNfc2VwYXJhdG9yX183dTBkdTYzIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGNvbG9yOiB2YXIoLS1mZzNfX2UzZ3J1cjJlKTsKfQ';\nexport var crumb = 'use-styles_crumb__7u0du61';\nexport var current = 'use-styles_current__7u0du62';\nexport var root = 'use-styles_root__7u0du60';\nexport var separator = 'use-styles_separator__7u0du63';","import type { IconProps } from \"../types\";\n\nexport function ChevronLeftIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts` (los estilos). El componente solo aplica lo que devuelve.\nexport function useStyles(): {\n root: string;\n pageBtnFor: (active: boolean) => string;\n ellipsis: string;\n nav: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n root: [themeClass, styles.root].filter(Boolean).join(\" \"),\n pageBtnFor: (active: boolean) =>\n [styles.pageBtn, active && styles.pageActive].filter(Boolean).join(\" \"),\n ellipsis: styles.ellipsis,\n nav: [styles.pageBtn, styles.nav].join(\" \"),\n }),\n [themeClass],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/pagination/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA9VUsXbbMAzc_RUco4F5le0hZab2R_RgEaLQ0KRKkI7tvv57nymLlp2mTocOHQkc7sADyMfEKDkeLHITvI9NU8PRHH3_SfxYCKGJBwsHJTqL--eFEGDJOEkRt6xEiy5iOIUNDErsIDxIyQO0KPfcNLgyIYX6c_W8-Ll4nAkNYPBrdEWrzlpbcvKVdOyVWK2HrNYjmT5ezh9t51viSN1Btt5FdHGe6ryLsoMt2cPUcQ5tvfNTy8uqIJmOqES9HPVbb30oZaYuBW2u2PigMUyXGFHnWA8UiiN-js6eKMHekp6Fr6TG2EXOzAkCaEo8QceT3ABj0duOcGhfTPDJaSViAMcDBHQx3ysFPqkNniafMoIieacEWHtm1ynIDjiWTurqnEFglOReSmZ9f-yq9zsMyvn4oDQxbCzqKu_CvNezBWZVqOED1BNfpruZ24UJq_n1nY8SrPWvqO8LdL5NLHfEtLGYVXyKlhwqsRz24zzLgrWpvIfl96x5BkvfdYwx1_xO80sbaYdFdvmOO2938Xp_Zumn6r0tuyW5383fDPDP7GgtDUxcuFf_6Z9wu1uj0afdcnjnFSY-fQdosY0T_tokB7vizzr7M4DW5Mz133sqLW__6Y3VVyz_Zo1_Ab4EpDFWBgAA';\nexport var ellipsis = 'use-styles_ellipsis__1azgzoh3';\nexport var nav = 'use-styles_nav__1azgzoh4';\nexport var pageActive = 'use-styles_pageActive__1azgzoh2';\nexport var pageBtn = 'use-styles_pageBtn__1azgzoh1';\nexport var root = 'use-styles_root__1azgzoh0';","import { ChevronLeftIcon } from \"../icons/chevron-left\";\nimport { ChevronRightIcon } from \"../icons/chevron-right\";\nimport type { PaginationProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Calcula la lista de páginas a mostrar con elipsis alrededor de `page`.\n// Siempre incluye la primera y la última; `…` (unicode) marca los huecos.\ntype Item = number | \"ellipsis\";\n\nfunction buildItems(count: number, page: number, siblingCount: number): Item[] {\n const total = Math.max(1, count);\n const first = 1;\n const last = total;\n const start = Math.max(first + 1, page - siblingCount);\n const end = Math.min(last - 1, page + siblingCount);\n\n const items: Item[] = [first];\n if (start > first + 1) items.push(\"ellipsis\");\n for (let n = start; n <= end; n++) items.push(n);\n if (end < last - 1) items.push(\"ellipsis\");\n if (last > first) items.push(last);\n return items;\n}\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\nexport function Pagination({ count, page = 1, onChange, siblingCount = 1 }: PaginationProps) {\n const { root, pageBtnFor, ellipsis, nav } = useStyles();\n const total = Math.max(1, count);\n const current = Math.min(Math.max(1, page), total);\n const items = buildItems(total, current, siblingCount);\n\n const go = (n: number) => onChange?.(Math.min(Math.max(1, n), total));\n\n return (\n <nav className={root} aria-label=\"Pagination\">\n <button\n type=\"button\"\n className={nav}\n aria-label=\"Previous page\"\n disabled={current <= 1}\n onClick={() => go(current - 1)}\n >\n <ChevronLeftIcon size={18} />\n </button>\n {items.map((item, index) =>\n item === \"ellipsis\" ? (\n // biome-ignore lint/suspicious/noArrayIndexKey: ellipsis position is stable per render\n <span key={`ellipsis-${index}`} className={ellipsis}>\n …\n </span>\n ) : (\n <button\n key={item}\n type=\"button\"\n className={pageBtnFor(item === current)}\n aria-current={item === current ? \"page\" : undefined}\n onClick={() => go(item)}\n >\n {item}\n </button>\n ),\n )}\n <button\n type=\"button\"\n className={nav}\n aria-label=\"Next page\"\n disabled={current >= total}\n onClick={() => go(current + 1)}\n >\n <ChevronRightIcon size={18} />\n </button>\n </nav>\n );\n}\n","import { Fragment } from \"react\";\nimport { CheckIcon } from \"../icons/check\";\nimport type { StepperProps } from \"./types\";\nimport { type StepState, useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\nexport function Stepper({ steps, active = 0, className, ...rest }: StepperProps) {\n const { root, step, connector, markerFor, labelFor } = useStyles({ className });\n\n return (\n <div className={root} {...rest}>\n {steps.map((s, index) => {\n const state: StepState = index < active ? \"done\" : index === active ? \"active\" : \"upcoming\";\n const isActive = state === \"active\";\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: steps are a static, ordered list with no stable id.\n <Fragment key={index}>\n <div className={step} aria-current={isActive ? \"step\" : undefined}>\n <span className={markerFor(state)}>\n {state === \"done\" ? <CheckIcon size={14} /> : index + 1}\n </span>\n <span className={labelFor(isActive)}>{s.label}</span>\n </div>\n {index < steps.length - 1 && <span data-part=\"connector\" className={connector} />}\n </Fragment>\n );\n })}\n </div>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { StepperProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. La decisión de \"qué clase aplica\" vive acá, no en el JSX.\nexport type StepState = \"done\" | \"active\" | \"upcoming\";\n\nexport function useStyles({ className }: Pick<StepperProps, \"className\">): {\n root: string;\n step: string;\n connector: string;\n markerFor: (state: StepState) => string;\n labelFor: (active: boolean) => string;\n} {\n const { themeClass } = useTheme();\n\n return useMemo(() => {\n const root = [themeClass, styles.root, className].filter(Boolean).join(\" \");\n const markerFor = (state: StepState) =>\n [\n styles.marker,\n state === \"active\" && styles.markerActive,\n state === \"done\" && styles.markerDone,\n ]\n .filter(Boolean)\n .join(\" \");\n const labelFor = (active: boolean) =>\n [styles.label, active && styles.labelActive].filter(Boolean).join(\" \");\n return { root, step: styles.step, connector: styles.connector, markerFor, labelFor };\n }, [themeClass, className]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/stepper/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WTwXKCMBCG7zzFHsshjqCtNp460_dgYlggGhImCVba6bt3DAZRqdMek2z-799_Z2etRWJdJ9FmRmuXZavXxi1xDl8RQC5sI1lHoZB43EQATIpSEeGwthQ4KodmE31Hs5GKddgEleQfKgAlaygcmHkixDaMI7F1luGiNK1JWHzLqZnZowmk1JM-RO4qCum68ZwKRVm5y3mrTY6GGJaL1gZUfyJFK-VAU_Go_CzaVweJVuJQ3YyrvTsKVkuRj665ltpci6RBIK28wF9j2rXWiaIjXCuHyo2fCq0cKVgtZBdY_qrWSg-0eKi04hMpJGmfzpXForzYy_v-GN-XRrcqp-AMU7ZhBpXzYhKPxFZGqD2F-fSg3rgTBwzjWvhxTWXD-Kmdgb2L76xNVEwB37UacMseN-ogdJkMOvyetB09r-Pfpnkrcm1Gsi3K4OPZ-3gY9MTv6-hepjQeOeBaKeROD7uy8gqnoVFIxnuSnNfkLqe-7Quk9GHUzJRCUZg_XNofs3iL1mIEAAA';\nexport var connector = 'use-styles_connector__79pt4e7';\nexport var label = 'use-styles_label__79pt4e5';\nexport var labelActive = 'use-styles_labelActive__79pt4e6';\nexport var marker = 'use-styles_marker__79pt4e2';\nexport var markerActive = 'use-styles_markerActive__79pt4e3';\nexport var markerDone = 'use-styles_markerDone__79pt4e4';\nexport var root = 'use-styles_root__79pt4e0';\nexport var step = 'use-styles_step__79pt4e1';","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// La decisión de \"qué clase aplica\" (tab activo o no) vive acá, no en el JSX.\nexport function useStyles(): {\n root: string;\n tab: string;\n tabClass: (active: boolean) => string;\n} {\n const { themeClass } = useTheme();\n return useMemo(() => {\n const root = [themeClass, styles.root].filter(Boolean).join(\" \");\n const tabClass = (active: boolean) =>\n [styles.tab, active && styles.tabActive].filter(Boolean).join(\" \");\n return { root, tab: styles.tab, tabClass };\n }, [themeClass]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/tabs/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMWw0bTd0NDAgewogIGRpc3BsYXk6IGZsZXg7CiAgZ2FwOiB2YXIoLS1zcGFjZS1sZ19fZTNncnVyMWMpOwogIGJvcmRlci1ib3R0b206IHZhcigtLWJvcmRlci1oYWlyX19lM2dydXIxbykgc29saWQgdmFyKC0tYm9yZGVyMV9fZTNncnVyMmcpOwp9Ci51c2Utc3R5bGVzX3RhYl9fMWw0bTd0NDEgewogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXNtX19lM2dydXIxYSkgMDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9fX2UzZ3J1cjIpOwogIGZvbnQtc2l6ZTogMTJweDsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZXJfX2UzZ3J1cjF1KTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1mZzNfX2UzZ3J1cjJlKTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHVyLWZhc3RfX2UzZ3J1cjIxKSB2YXIoLS1lYXNlLWlua19fZTNncnVyMjQpOwogIG91dGxpbmU6IG5vbmU7Cn0KLnVzZS1zdHlsZXNfdGFiX18xbDRtN3Q0MTpmb2N1cy12aXNpYmxlIHsKICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZm9jdXNfX2UzZ3J1cjJxKTsKICBvdXRsaW5lLW9mZnNldDogMnB4Owp9Ci51c2Utc3R5bGVzX3RhYkFjdGl2ZV9fMWw0bTd0NDIgewogIGNvbG9yOiB2YXIoLS1mZzFfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc190YWJBY3RpdmVfXzFsNG03dDQyOjphZnRlciB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IHZhcigtLXNwYWNlLW5vbmVfX2UzZ3J1cjE4KTsKICByaWdodDogdmFyKC0tc3BhY2Utbm9uZV9fZTNncnVyMTgpOwogIGJvdHRvbTogLTFweDsKICBoZWlnaHQ6IDJweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnRfX2UzZ3J1cjJqKTsKfQ';\nexport var root = 'use-styles_root__1l4m7t40';\nexport var tab = 'use-styles_tab__1l4m7t41';\nexport var tabActive = 'use-styles_tabActive__1l4m7t42';","import type { TabsProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado: el tab activo lo determina `value`; al clickear se notifica vía `onChange`.\nexport function Tabs({ items, value, onChange }: TabsProps) {\n const { root, tabClass } = useStyles();\n return (\n <div role=\"tablist\" className={root}>\n {items.map((item) => {\n const active = item.value === value;\n return (\n <button\n key={item.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n className={tabClass(active)}\n onClick={() => onChange?.(item.value)}\n >\n {item.label}\n </button>\n );\n })}\n </div>\n );\n}\n","import {\n type KeyboardEvent,\n type MouseEvent,\n type Ref,\n cloneElement,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type { MenuProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Aplica un valor de nodo a un ref (callback o objeto), tolerando null/undefined.\nfunction assignRef<T>(ref: Ref<T> | undefined, value: T | null) {\n if (typeof ref === \"function\") ref(value);\n else if (ref) (ref as { current: T | null }).current = value;\n}\n\n// Presentacional: la lógica de estilos vive en use-styles.ts. Maneja estado real de apertura,\n// clonando el trigger para alternar `open` y cerrando en click-fuera / ESC. Soporta navegación\n// por teclado (flechas, Home/End) y restaura el foco al trigger al cerrar con ESC.\nexport function Menu({ trigger, items }: MenuProps) {\n const { wrapper, list, item, dangerItem } = useStyles();\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const getMenuItems = () =>\n Array.from(listRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"menuitem\"]') ?? []);\n\n const focusItemAt = (index: number) => {\n const menuItems = getMenuItems();\n if (menuItems.length === 0) return;\n const wrapped = (index + menuItems.length) % menuItems.length;\n menuItems[wrapped]?.focus();\n };\n\n const closeAndRestoreFocus = () => {\n setOpen(false);\n triggerRef.current?.focus();\n };\n\n useEffect(() => {\n if (!open) return;\n // Al abrir, enfocar el primer menuitem.\n listRef.current?.querySelector<HTMLButtonElement>('[role=\"menuitem\"]')?.focus();\n\n const onDocMouseDown = (event: globalThis.MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(event.target as Node)) {\n setOpen(false);\n }\n };\n const onKeyDown = (event: globalThis.KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", onDocMouseDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [open]);\n\n const onMenuKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const menuItems = getMenuItems();\n const current = menuItems.indexOf(document.activeElement as HTMLButtonElement);\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n focusItemAt(current + 1);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n focusItemAt(current - 1);\n break;\n case \"Home\":\n event.preventDefault();\n focusItemAt(0);\n break;\n case \"End\":\n event.preventDefault();\n focusItemAt(menuItems.length - 1);\n break;\n case \"Escape\":\n event.preventDefault();\n closeAndRestoreFocus();\n break;\n case \"Tab\":\n // Dejá que Tab mueva el foco fuera del menú (los items están fuera del tab order);\n // solo cerramos. Sin preventDefault para no bloquear el avance natural.\n setOpen(false);\n break;\n }\n };\n\n const triggerProps = trigger.props as { onClick?: (event: MouseEvent) => void };\n // El consumidor puede haber puesto su propio ref en el trigger: lo mergeamos con el nuestro.\n const consumerRef = (trigger as { ref?: Ref<HTMLElement> }).ref;\n const mergedTriggerRef = (node: HTMLElement | null) => {\n triggerRef.current = node;\n assignRef(consumerRef, node);\n };\n const clonedTrigger = cloneElement(trigger, {\n ref: mergedTriggerRef,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n onClick: (event: MouseEvent) => {\n triggerProps.onClick?.(event);\n setOpen((prev) => !prev);\n },\n } as Partial<typeof trigger.props> & {\n ref: Ref<HTMLElement>;\n \"aria-haspopup\": \"menu\";\n \"aria-expanded\": boolean;\n onClick: (event: MouseEvent) => void;\n });\n\n return (\n <div ref={rootRef} className={wrapper}>\n {clonedTrigger}\n {open && (\n <div ref={listRef} role=\"menu\" className={list} onKeyDown={onMenuKeyDown}>\n {items.map((entry, index) => (\n <button\n // biome-ignore lint/suspicious/noArrayIndexKey: items are a static positional list\n key={index}\n type=\"button\"\n role=\"menuitem\"\n tabIndex={-1}\n className={entry.danger ? dangerItem : item}\n onClick={() => {\n entry.onClick?.();\n setOpen(false);\n }}\n >\n {entry.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts` (los estilos). El componente solo aplica lo que devuelve.\nexport function useStyles(): {\n wrapper: string;\n list: string;\n item: string;\n dangerItem: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n wrapper: [themeClass, styles.wrapper].filter(Boolean).join(\" \"),\n list: styles.list,\n item: styles.item,\n dangerItem: [styles.item, styles.danger].join(\" \"),\n }),\n [themeClass],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/menu/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfd3JhcHBlcl9fMXV5eGFqMCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGlubGluZS1mbGV4Owp9Ci51c2Utc3R5bGVzX2xpc3RfXzF1eXhhajEgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtaW4td2lkdGg6IDE4MHB4OwogIHotaW5kZXg6IDIwOwogIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLXhzX19lM2dydXIxOSk7Cn0KLnVzZS1zdHlsZXNfaXRlbV9fMXV5eGFqMiB7CiAgd2lkdGg6IDEwMCU7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXNtX19lM2dydXIxYSkgdmFyKC0tc3BhY2UtbWRfX2UzZ3J1cjFiKTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXRleHRfX2UzZ3J1cjEpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbWFsbC1zaXplX19lM2dydXIxMCk7CiAgY29sb3I6IHZhcigtLWZnMV9fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2l0ZW1fXzF1eXhhajI6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLWJnM19fZTNncnVyMmEpOwp9Ci51c2Utc3R5bGVzX2l0ZW1fXzF1eXhhajI6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIycSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoudXNlLXN0eWxlc19kYW5nZXJfXzF1eXhhajMgewogIGNvbG9yOiB2YXIoLS1kYW5nZXJfX2UzZ3J1cjJvKTsKfQ';\nexport var danger = 'use-styles_danger__1uyxaj3';\nexport var item = 'use-styles_item__1uyxaj2';\nexport var list = 'use-styles_list__1uyxaj1 surfaces_panelSurface__6hs0fg1';\nexport var wrapper = 'use-styles_wrapper__1uyxaj0';","import {\n type MouseEvent,\n type KeyboardEvent as ReactKeyboardEvent,\n useEffect,\n useId,\n useRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Typography } from \"../typography\";\nimport type { DialogProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Selector de elementos focuseables para el focus trap.\nconst FOCUSABLE =\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n//TODO: usa el patrón composable para header/footer (Dialog.Header, Dialog.Footer) y así evitar props opcionales y mejorar la validación de lo que se pasa como children (p.ej. no permitir pasar un nodo cualquiera como header/footer).// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n//TODO: maneja la logica de apertura/cierre y muevelo a un useDialog para separar responsabilidades y facilitar su reutilización en otros componentes (p.ej. Drawer). Maneja cierre por backdrop, ESC, focus trap, restauración de foco y scroll-lock.\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Maneja cierre por backdrop, ESC, focus trap, restauración de foco y scroll-lock.\nexport function Dialog({ open, onClose, title, actions, children }: DialogProps) {\n const { overlay, surface, body, actions: actionsClass } = useStyles();\n const surfaceRef = useRef<HTMLDivElement>(null);\n const previouslyFocused = useRef<HTMLElement | null>(null);\n const generatedId = useId();\n const titleId = title != null ? generatedId : undefined;\n\n useEffect(() => {\n if (!open) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [open, onClose]);\n\n // Restauración de foco: guarda el elemento activo al abrir y lo devuelve al cerrar/desmontar.\n useEffect(() => {\n if (!open) return;\n previouslyFocused.current = document.activeElement as HTMLElement | null;\n surfaceRef.current?.focus();\n return () => previouslyFocused.current?.focus?.();\n }, [open]);\n\n // Scroll-lock del body mientras está abierto.\n useEffect(() => {\n if (!open) return;\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previousOverflow;\n };\n }, [open]);\n\n if (!open || typeof document === \"undefined\") return null;\n\n const stop = (event: MouseEvent<HTMLDivElement>) => event.stopPropagation();\n\n // Focus trap: cicla el foco entre los elementos focuseables del surface.\n const onSurfaceKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (event.key !== \"Tab\") return;\n const surfaceEl = surfaceRef.current;\n if (!surfaceEl) return;\n const focusable = Array.from(surfaceEl.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (el) => el.offsetParent !== null || el === surfaceEl,\n );\n if (focusable.length === 0) {\n event.preventDefault();\n surfaceEl.focus();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (!first || !last) return;\n const active = document.activeElement;\n if (event.shiftKey) {\n if (active === first || active === surfaceEl) {\n event.preventDefault();\n last.focus();\n }\n } else if (active === last) {\n event.preventDefault();\n first.focus();\n }\n };\n\n return createPortal(\n // biome-ignore lint/a11y/useKeyWithClickEvents: ESC handled by a document keydown listener.\n <div className={overlay} data-testid=\"dialog-overlay\" onClick={onClose}>\n <div\n ref={surfaceRef}\n className={surface}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n tabIndex={-1}\n onClick={stop}\n onKeyDown={onSurfaceKeyDown}\n >\n {title != null && (\n <Typography variant=\"h3\" as=\"h2\" id={titleId}>\n {title}\n </Typography>\n )}\n {children != null && (\n <div className={body}>\n <Typography variant=\"body\" color=\"fg2\">\n {children}\n </Typography>\n </div>\n )}\n {actions != null && <div className={actionsClass}>{actions}</div>}\n </div>\n </div>,\n document.body,\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts`. El componente solo aplica lo que devuelve este hook.\nexport function useStyles(): {\n overlay: string;\n surface: string;\n body: string;\n actions: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n overlay: [themeClass, styles.overlay].filter(Boolean).join(\" \"),\n surface: styles.surface,\n body: styles.body,\n actions: styles.actions,\n }),\n [themeClass],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/dialog/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfb3ZlcmxheV9fNXRzdHU4MCB7CiAgcG9zaXRpb246IGZpeGVkOwogIGluc2V0OiAwOwogIGJhY2tncm91bmQ6IHZhcigtLXNjcmltX19lM2dydXIycik7CiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHotaW5kZXg6IDUwOwp9Ci51c2Utc3R5bGVzX3N1cmZhY2VfXzV0c3R1ODEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlcjogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKSBzb2xpZCB2YXIoLS1ib3JkZXIxX19lM2dydXIyZyk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnX19lM2dydXIxbCk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgbWF4LXdpZHRoOiA0ODBweDsKICB3aWR0aDogOTAlOwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXhsX19lM2dydXIxZCk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBvdXRsaW5lOiBub25lOwp9Ci51c2Utc3R5bGVzX3N1cmZhY2VfXzV0c3R1ODE6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIycSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoudXNlLXN0eWxlc19ib2R5X181dHN0dTgyIHsKICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS1tZF9fZTNncnVyMWIpOwp9Ci51c2Utc3R5bGVzX2FjdGlvbnNfXzV0c3R1ODMgewogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICBnYXA6IHZhcigtLXNwYWNlLXNtX19lM2dydXIxYSk7CiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtbGdfX2UzZ3J1cjFjKTsKfQ';\nexport var actions = 'use-styles_actions__5tstu83';\nexport var body = 'use-styles_body__5tstu82';\nexport var overlay = 'use-styles_overlay__5tstu80';\nexport var surface = 'use-styles_surface__5tstu81';","import { createPortal } from \"react-dom\";\nimport { XIcon } from \"../icons/x\";\nimport type { SnackbarProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado: render `null` si !open; sin auto-timer en v1.\n// Se monta en un portal en document.body para escapar de overflow/stacking del contenedor;\n// el slot raíz lleva la clase de tema (themeClass) para no perder los colores al portalizar.\nexport function Snackbar({ open, message, action, onClose }: SnackbarProps) {\n const { root, message: messageClass, closeBtn } = useStyles();\n if (!open || typeof document === \"undefined\") return null;\n return createPortal(\n <div role=\"status\" className={root}>\n <span className={messageClass}>{message}</span>\n {action}\n {onClose && (\n <button type=\"button\" aria-label=\"Close\" className={closeBtn} onClick={onClose}>\n <XIcon size={18} />\n </button>\n )}\n </div>,\n document.body,\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) y devuelve un objeto de clases por slot.\n// Apareado con `use-styles.css.ts` (los estilos). El componente solo aplica lo que devuelve.\nexport function useStyles(): {\n root: string;\n message: string;\n closeBtn: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(\n () => ({\n root: [themeClass, styles.root].filter(Boolean).join(\" \"),\n message: styles.message,\n closeBtn: styles.closeBtn,\n }),\n [themeClass],\n );\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/theme/surfaces.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fNmhzMGZnMCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyOiAwOwp9Ci5zdXJmYWNlc19wYW5lbFN1cmZhY2VfXzZoczBmZzEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnMl9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyMl9fZTNncnVyMmgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnX19lM2dydXIyNyk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouc3VyZmFjZXNfaW5reVN1cmZhY2VfXzZoczBmZzIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/snackbar/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9faWh6c2VwMCB7CiAgcG9zaXRpb246IGZpeGVkOwogIGJvdHRvbTogdmFyKC0tc3BhY2UteGxfX2UzZ3J1cjFkKTsKICBsZWZ0OiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLW1kX19lM2dydXIxYik7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtbWRfX2UzZ3J1cjFiKSB2YXIoLS1zcGFjZS1sZ19fZTNncnVyMWMpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgei1pbmRleDogNjA7Cn0KLnVzZS1zdHlsZXNfbWVzc2FnZV9faWh6c2VwMSB7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdGV4dF9fZTNncnVyMSk7CiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXNtYWxsLXNpemVfX2UzZ3J1cjEwKTsKfQoudXNlLXN0eWxlc19jbG9zZUJ0bl9faWh6c2VwMiB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogbm9uZTsKICBjb2xvcjogdmFyKC0tYmcxX19lM2dydXIyOCk7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyLWZhc3RfX2UzZ3J1cjIxKSB2YXIoLS1lYXNlLWlua19fZTNncnVyMjQpOwogIG91dGxpbmU6IG5vbmU7Cn0KLnVzZS1zdHlsZXNfY2xvc2VCdG5fX2loenNlcDI6aG92ZXIgewogIG9wYWNpdHk6IDAuNzsKfQoudXNlLXN0eWxlc19jbG9zZUJ0bl9faWh6c2VwMjpmb2N1cy12aXNpYmxlIHsKICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZm9jdXNfX2UzZ3J1cjJxKTsKICBvdXRsaW5lLW9mZnNldDogMnB4Owp9';\nexport var closeBtn = 'use-styles_closeBtn__ihzsep2';\nexport var message = 'use-styles_message__ihzsep1';\nexport var root = 'use-styles_root__ihzsep0 surfaces_inkySurface__6hs0fg2';","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { TableProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ className }: Pick<TableProps<Record<string, unknown>>, \"className\">): {\n root: string;\n th: string;\n td: string;\n alignRight: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n [themeClass, className],\n );\n return { root, th: styles.th, td: styles.td, alignRight: styles.alignRight };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/table/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMW4yY3o2aTAgewogIHdpZHRoOiAxMDAlOwogIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdGV4dF9fZTNncnVyMSk7Cn0KLnVzZS1zdHlsZXNfdGhfXzFuMmN6NmkxIHsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IHZhcigtLXRleHQtZXllYnJvdy1zaXplX19lM2dydXI0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZXN0X19lM2dydXIxdik7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tZmczX19lM2dydXIyZSk7CiAgdGV4dC1hbGlnbjogbGVmdDsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1zbV9fZTNncnVyMWEpIHZhcigtLXNwYWNlLW1kX19lM2dydXIxYik7CiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tYm9yZGVyLXJ1bGVfX2UzZ3J1cjFwKSBzb2xpZCB2YXIoLS1ib3JkZXIyX19lM2dydXIyaCk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoudXNlLXN0eWxlc190ZF9fMW4yY3o2aTIgewogIHBhZGRpbmc6IHZhcigtLXNwYWNlLW1kX19lM2dydXIxYik7CiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKSBzb2xpZCB2YXIoLS1ib3JkZXIxX19lM2dydXIyZyk7CiAgY29sb3I6IHZhcigtLWZnMV9fZTNncnVyMmMpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbWFsbC1zaXplX19lM2dydXIxMCk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoudXNlLXN0eWxlc19hbGlnblJpZ2h0X18xbjJjejZpMyB7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0';\nexport var alignRight = 'use-styles_alignRight__1n2cz6i3';\nexport var root = 'use-styles_root__1n2cz6i0';\nexport var td = 'use-styles_td__1n2cz6i2';\nexport var th = 'use-styles_th__1n2cz6i1';","import type { TableColumn, TableProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Genérico sobre `Row`; reenvía las props nativas de <table>.\nexport function Table<Row extends Record<string, unknown>>({\n columns,\n rows,\n getRowKey,\n className,\n ...rest\n}: TableProps<Row>) {\n const { root, th, td, alignRight } = useStyles({ className });\n const headClass = (column: TableColumn<Row>) =>\n column.align === \"right\" ? `${th} ${alignRight}` : th;\n const cellClass = (column: TableColumn<Row>) =>\n column.align === \"right\" ? `${td} ${alignRight}` : td;\n return (\n <table className={root} {...rest}>\n <thead>\n <tr>\n {columns.map((column) => (\n <th key={column.key} className={headClass(column)}>\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, index) => (\n <tr key={getRowKey ? getRowKey(row, index) : index}>\n {columns.map((column) => (\n <td key={column.key} className={cellClass(column)}>\n {column.render ? column.render(row) : String(row[column.key])}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { AppBarProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({ className }: Pick<AppBarProps, \"className\">): {\n root: string;\n brand: string;\n actions: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n [themeClass, className],\n );\n return { root, brand: styles.brand, actions: styles.actions };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/app-bar/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMWgxMzNuaDAgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgZ2FwOiB2YXIoLS1zcGFjZS1sZ19fZTNncnVyMWMpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLW1kX19lM2dydXIxYikgdmFyKC0tc3BhY2UtbGdfX2UzZ3J1cjFjKTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzFfX2UzZ3J1cjI4KTsKICBib3JkZXItYm90dG9tOiB2YXIoLS1ib3JkZXItaGFpcl9fZTNncnVyMW8pIHNvbGlkIHZhcigtLWJvcmRlcjFfX2UzZ3J1cjJnKTsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Ci51c2Utc3R5bGVzX2JyYW5kX18xaDEzM25oMSB7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZGlzcGxheV9fZTNncnVyMCk7Cn0KLnVzZS1zdHlsZXNfYWN0aW9uc19fMWgxMzNuaDIgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLXNtX19lM2dydXIxYSk7Cn0';\nexport var actions = 'use-styles_actions__1h133nh2';\nexport var brand = 'use-styles_brand__1h133nh1';\nexport var root = 'use-styles_root__1h133nh0';","import type { AppBarProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Reenvía las props nativas; brand/actions/children son nodos que provee el consumidor.\nexport function AppBar({ brand, actions, className, children, ...rest }: AppBarProps) {\n const styles = useStyles({ className });\n return (\n <header className={styles.root} {...rest}>\n {brand !== undefined ? <div className={styles.brand}>{brand}</div> : null}\n {children}\n {actions !== undefined ? <div className={styles.actions}>{actions}</div> : null}\n </header>\n );\n}\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { ListItemProps } from \"./types\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: toma el tema activo (useTheme) + las props relevantes y devuelve\n// un objeto de clases por slot. Apareado con `use-styles.css.ts` (los estilos).\nexport function useStyles({\n selected,\n className,\n}: { [K in \"selected\" | \"className\"]?: ListItemProps[K] | undefined }): {\n root: string;\n leading: string;\n content: string;\n trailing: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () =>\n [themeClass, styles.root, selected && styles.selected, className].filter(Boolean).join(\" \"),\n [themeClass, selected, className],\n );\n return { root, leading: styles.leading, content: styles.content, trailing: styles.trailing };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2ZS3PjNhaF9_0r7pQX7k6RKgB8CtkM9epk0ZlUnFm7IAqS2OZDDVK226n-71OgxAdAiFK8nIpluew6B8BH8uDy0qKiKCr46wOAbW-LvLI3SXlI2ffHR-7sxFEgCveLL_DARbKFxUm7t-D-zyTjJfzGX-CPImP5vQWltPzcTVTx16qZBVO4_42_lIKzDRf3FnzmhdglbDgqK_KiGUUo3P86-wK_p_wVvhR5IRd-WMnf7D_47pgyOZUcUR5YzHuzrFMWPzXTOBTu_5snW8GeqqP4wnbHvEqYnOuz4Pkbh89FlZTxXj0GiW_z73wtihe7TN54M51LAU38qSt4ZnCmSc5_4clu3x67RwFPiMH6oth8Ch5Cphl5VXHxcGBxku8adyAhsKsgnK-cAhtS8Ca-MPqGqFOJijyDV2VlFHyFtZ3SxLqmYKMJwgrEHiucMQUymQrdMkTcDBD3WKPjOp2cyAS2NYIRBWwnwbDQLUOwvX6Z90TjSgZcxMz1lYJicxSiJ7mQ5zsak2NgSgdMjsaU6amT85iYco3JVZiKeiFPQ3INSIcBkqshfRucJteMJFSkdbFRs19S0C5cbRkyVZIp0H0q1ZGCiwbLGbmeVa6Us43C9WI6WbVriPaqo9U-Fe27jnaay4T2pqKVGUtThQ0jWVimGtzJN6TDuM7iwKnyYaIDnuczEWJHRYzZoUqKXIWsS3DoaFugsRo4PZ2z8Wqkvk7azmlkraswaqtwfRey8yLvSMP2aE7ia9lKUzm4F4OTocxaA5MGXc82rb6WeqAb0g4v7m-A8_ppq9aVVB9NegZOgWiy05O3FBxNdnvyjoKryV5P3lPobkuCbZJjqZ65hAI6vCp679x8peBoau_MPFHwNLV3WlIKoaauWdmtnFFwNX17TDv0nMJ0Om0c60JsuLD3LBGtQ5ZDTRfHtFuhLoKePgNnz23bhb9RII2hEix-SvKdXSlhFfrtq7HlhchYx1t2O6pxvCSbjqZSU6yYumM61h2H0VR2TM9qX3LaXnaqcL9QcJpNdjaIUzfXWl57-_BsyfgmOXYB-N67cZ0dJc-SdZF2MXjr3UnOnr5OEIWg0TdHYW9ZdyREljaCsrKT-yEhhAJBilymxUsrOxQcv5U5K7md5G1HSlwK8XGdxPaavyVcfEQTYgGqv_Gn85bZs43sPNtDJh4FJHMFCMRuzT4SZOHAwq6FJshXR3V7gfhyFDm8AkaHV7Ddw-tgNCHq6G6vkKBeUw535A-7nkQf77iffv7w4wPtPUqsd7idI6RwtwpXwco9531HWm0qtfqr0ZxWYxTulovlbOk32q95ybsrtJa6u8SL6Nz599aMKdxhDzto1WjdmhsKd-7U9V3UaN2anMJdOAuDYNlo_8mjOOZ5t-xWP5x6-3ZL7-j5BGEL8NQC7FlyTzTn-GTvaPZGO_EV-0Mliu6-QxLjmNA7j2Eq8FcKd8EML_GyL_9SPHe7mzxRuPMd7GO_73kott006XlRTBwLHHR6owlG51WLLt4ZhTtn6c2d85V5YSJvxVye4siPGpwNy3c9kkKjTfJt90B4oHBHli7xguZhLz62d1TyTRtaxiLpto-gbXABBxZgV-J7Xp3dSbXnGX-sf5aPVZJX7FGpWqT8J9n_JPv_JNkbJrpDulSyMUJLNDMHG0fYx9gcbBQgv3lANwWbELxoLoYe7BVZLpbEHOxZEK2mK3Owg2mAvdV4sHtTXwy2SywgTmABIX4dAedatvURN8ZbHxaiywmfESdq8nYp4fO5G7nR9YQHoQXe-Y0m2DcnPFhFOAgvJHweRMi9nPA56UgGCfeXUzJzLyW8fxDmhAcW-BbUNcG_HO-SHxLWjj1eyPdyuljMLxVuspwuPHO-F_P5IppfzveCzNF0Zs43iQjCjjnfXuRGjmPOdxgFoRdey3eHfCHfMnUOOVXW3tW_FG7V7pBbkq2OCclI4Y7IEpPxWHsrgtH0hsJNLHB9C3Co3JG0WLuRF5HlOwt3j3YQa2fuLkcKd2-oOdbqSRsp3HGRV6L_lPJ8qStROo_bu5IVka-RriSSL3O4Uf1lDreqqeEmM_kaD3cfeRhuZXpDmg36ML6KyZDXoTzMa_9QRvKKmoc9NEGhOav91QZZ7YuGrIazTh5kVbkSg6z2VXNWe-xBndN_yydzBh8Pgm-5KO24SAthl7HMLQXZanyqQ9o9Ho53G-P9xnjHcb3nGO86xvuO8c7jpt7jPd3He_qPd3cgV3uQ27qQd_Uho53IlV7kajdypR-51pHc3pMA_DDuilPlppAVgt-yI7qaN17Ex8v49UI-XsrHi_l4Ob-poF8v6deL-o1l_Wphv620_-3iPlrerxT4qyX-SpG_VuZvLvTmWAu-OcZ8Y2eF_JiEwunvU7x_suAnStd8Wwhe_8q2FRfnvFeC5WVSf7ayOQp2Gi3_m52V8K8kOxSiYnl1ImR5krG_a00qfvLacXHM5Ud8mvnHhx__AxO8sb_9IAAA';\nimport 'src/components/list-item/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fa2JyZXExMCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtbWRfX2UzZ3J1cjFiKTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1tZF9fZTNncnVyMWIpIHZhcigtLXNwYWNlLWxnX19lM2dydXIxYyk7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyLWZhc3RfX2UzZ3J1cjIxKSB2YXIoLS1lYXNlLWlua19fZTNncnVyMjQpOwp9Ci51c2Utc3R5bGVzX3Jvb3RfX2ticmVxMTA6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLWJnM19fZTNncnVyMmEpOwp9Ci51c2Utc3R5bGVzX3NlbGVjdGVkX19rYnJlcTExIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzNfX2UzZ3J1cjJhKTsKICBib3gtc2hhZG93OiBpbnNldCAycHggMCAwIHZhcigtLWFjY2VudF9fZTNncnVyMmopOwp9Ci51c2Utc3R5bGVzX2xlYWRpbmdfX2ticmVxMTIgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoudXNlLXN0eWxlc19jb250ZW50X19rYnJlcTEzIHsKICBmbGV4OiAxOwp9Ci51c2Utc3R5bGVzX3RyYWlsaW5nX19rYnJlcTE0IHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0';\nexport var content = 'use-styles_content__kbreq13';\nexport var leading = 'use-styles_leading__kbreq12';\nexport var root = 'use-styles_root__kbreq10';\nexport var selected = 'use-styles_selected__kbreq11';\nexport var trailing = 'use-styles_trailing__kbreq14';","import type { ListItemProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Reenvía las props nativas; leading/trailing son nodos que provee el consumidor.\nexport function ListItem({\n leading,\n trailing,\n selected,\n className,\n children,\n ...rest\n}: ListItemProps) {\n const styles = useStyles({ selected, className });\n return (\n <div className={styles.root} {...rest}>\n {leading != null && <span className={styles.leading}>{leading}</span>}\n <span className={styles.content}>{children}</span>\n {trailing != null && <span className={styles.trailing}>{trailing}</span>}\n </div>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ChevronUpIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"m18 15-6-6-6 6\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SearchIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PlusIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MinusIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <path d=\"M5 12h14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MoreHorizontalIcon({ size = 20, strokeWidth = 1.75, ...rest }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\n </svg>\n );\n}\n"],"mappings":"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","names":["import_react","import_react","import_react","variant","color","align","import_jsx_runtime","variant","color","align","text","import_react","variant","tone","useStyles","size","full","import_jsx_runtime","variant","tone","size","full","useStyles","import_react","root","useStyles","vertical","root","import_jsx_runtime","vertical","label","root","line","useStyles","import_react","root","size","useStyles","size","root","import_jsx_runtime","size","root","useStyles","import_react","root","tone","useStyles","tone","root","dot","import_jsx_runtime","tone","root","dot","useStyles","import_react","useStyles","variant","indeterminate","root","import_jsx_runtime","variant","size","track","bar","spinner","useStyles","indeterminate","import_jsx_runtime","size","import_react","root","tone","useStyles","selected","tone","clickable","root","import_jsx_runtime","selected","tone","clickable","root","deleteBtn","useStyles","import_jsx_runtime","size","import_react","root","useStyles","disabled","root","box","import_jsx_runtime","label","disabled","root","input","box","check","useStyles","import_react","disabled","dot","input","label","root","useStyles","disabled","root","input","dot","label","import_jsx_runtime","label","disabled","root","input","circle","dot","useStyles","import_react","input","label","root","track","useStyles","root","input","track","label","import_jsx_runtime","label","disabled","root","input","track","knob","useStyles","import_react","import_jsx_runtime","size","import_jsx_runtime","size","import_react","input","root","useStyles","root","labelText","input","helpText","import_jsx_runtime","label","useStyles","import_react","root","useStyles","active","tone","root","import_jsx_runtime","active","tone","root","useStyles","import_react","root","useStyles","root","import_jsx_runtime","root","useStyles","header","body","footer","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_react","root","useStyles","severity","root","import_jsx_runtime","severity","useStyles","import_react","import_react","useStyles","placement","wrapper","bubble","import_jsx_runtime","label","placement","wrapper","bubble","useStyles","trigger","import_react","import_jsx_runtime","size","import_react","label","root","useStyles","chevron","root","label","selected","active","import_jsx_runtime","placeholder","label","disabled","root","trigger","chevron","menu","useStyles","selected","option","current","import_react","input","label","root","track","wrapper","useStyles","root","wrapper","label","track","input","import_jsx_runtime","step","disabled","label","wrapper","root","track","range","thumb","input","useStyles","import_react","import_react","chevron","chevronOpen","header","root","useStyles","root","header","chevron","chevronOpen","import_jsx_runtime","root","item","header","panel","useStyles","current","import_react","import_jsx_runtime","size","import_react","root","useStyles","root","import_jsx_runtime","root","crumb","current","separator","useStyles","item","import_jsx_runtime","size","import_react","root","useStyles","root","active","import_jsx_runtime","root","ellipsis","nav","useStyles","current","item","import_react","import_react","label","root","useStyles","root","active","label","import_jsx_runtime","active","root","step","connector","useStyles","import_react","root","useStyles","root","active","import_jsx_runtime","root","useStyles","item","active","import_react","import_react","item","wrapper","useStyles","wrapper","item","import_jsx_runtime","trigger","wrapper","list","item","useStyles","current","import_react","import_react","body","useStyles","body","import_jsx_runtime","actions","overlay","surface","body","useStyles","active","import_react_dom","import_react","root","useStyles","root","import_jsx_runtime","message","root","closeBtn","useStyles","import_react","root","useStyles","root","import_jsx_runtime","root","th","td","alignRight","useStyles","import_react","actions","root","useStyles","root","actions","import_jsx_runtime","brand","actions","useStyles","import_react","content","root","selected","useStyles","selected","root","content","import_jsx_runtime","leading","trailing","selected","useStyles","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size"]}