@octavius2929-personal/design-system 1.4.0 → 1.5.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.
- package/dist/index.cjs +177 -88
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +106 -33
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +34 -3
- package/dist/index.d.ts +34 -3
- package/dist/index.js +440 -342
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -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/container/index.tsx","../src/testing/use-test-id.ts","../src/testing/compose.ts","../src/testing/context/test-id-context.tsx","../src/theme/styles/sprinkles/index.css.ts","../src/components/container/use-styles.ts","../src/components/surface/index.tsx","../src/components/surface/use-styles.ts","../../core/src/tokens.ts","../../core/src/schemas/docslingo.ts","../../core/src/schemas/tinta.ts","../../core/src/schemas/index.ts","../../core/src/theme-types.ts","../../core/src/color-shape.ts","../../core/src/store/use-theme-store.ts","../../core/src/store/resolve-mode.ts","../../core/src/store/sanitize-persisted.ts","../src/theme/context/theme-context.tsx","../src/theme/adapters.ts","../src/components/surface/use-styles.css.ts","../src/components/typography/index.tsx","../src/components/typography/use-styles.ts","../src/theme/typography.css.ts","../src/components/typography/use-styles.css.ts","../src/components/button/index.tsx","../src/testing/states.ts","../src/components/button/use-styles.ts","../src/components/button/use-styles.css.ts","../src/components/divider/index.tsx","../src/components/divider/use-styles.ts","../src/components/divider/use-styles.css.ts","../src/components/avatar/index.tsx","../src/components/avatar/use-styles.ts","../src/components/avatar/use-styles.css.ts","../src/components/badge/index.tsx","../src/components/badge/use-styles.ts","../src/components/badge/use-styles.css.ts","../src/components/progress/index.tsx","../src/components/progress/use-styles.ts","../src/components/progress/use-styles.css.ts","../src/components/chip/index.tsx","../src/components/icons/x/index.tsx","../src/components/chip/use-styles.ts","../src/components/chip/use-styles.css.ts","../src/components/checkbox/index.tsx","../src/components/icons/check/index.tsx","../src/components/checkbox/use-styles.ts","../src/components/checkbox/use-styles.css.ts","../src/components/radio/index.tsx","../src/components/radio/use-styles.ts","../src/components/radio/use-styles.css.ts","../src/components/radio-group/index.tsx","../src/components/radio-group/use-styles.ts","../src/components/radio-group/use-styles.css.ts","../src/components/switch/index.tsx","../src/components/switch/use-styles.ts","../src/components/switch/use-styles.css.ts","../src/components/text-field/index.tsx","../src/components/base-field/index.tsx","../src/components/base-field/use-styles.ts","../src/components/base-field/use-styles.css.ts","../src/components/password-field/index.tsx","../src/components/icons/eye/index.tsx","../src/components/icons/eye-off/index.tsx","../src/components/password-field/use-styles.ts","../src/components/password-field/use-styles.css.ts","../src/components/money-field/index.tsx","../src/components/icon-button/index.tsx","../src/components/icon-button/use-styles.ts","../src/components/icon-button/use-styles.css.ts","../src/components/card/index.tsx","../src/components/card/use-styles.ts","../src/components/card/use-styles.css.ts","../src/components/alert/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/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/index.tsx","../src/components/slider/use-styles.ts","../src/components/slider/use-styles.css.ts","../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/pagination/index.tsx","../src/components/icons/chevron-left/index.tsx","../src/components/pagination/use-styles.ts","../src/components/pagination/use-styles.css.ts","../src/components/stepper/index.tsx","../src/components/stepper/use-styles.ts","../src/components/stepper/use-styles.css.ts","../src/components/tabs/index.tsx","../src/components/tabs/use-styles.ts","../src/components/tabs/use-styles.css.ts","../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/index.tsx","../src/components/table/use-styles.ts","../src/components/table/use-styles.css.ts","../src/components/app-bar/index.tsx","../src/components/app-bar/use-styles.ts","../src/components/app-bar/use-styles.css.ts","../src/components/list-item/index.tsx","../src/components/list-item/use-styles.ts","../src/components/list-item/use-styles.css.ts","../src/components/icons/alert-circle/index.tsx","../src/components/icons/archive/index.tsx","../src/components/icons/arrow-down/index.tsx","../src/components/icons/arrow-left/index.tsx","../src/components/icons/arrow-right/index.tsx","../src/components/icons/arrow-up/index.tsx","../src/components/icons/at-sign/index.tsx","../src/components/icons/bell/index.tsx","../src/components/icons/bell-off/index.tsx","../src/components/icons/bookmark/index.tsx","../src/components/icons/calendar/index.tsx","../src/components/icons/camera/index.tsx","../src/components/icons/chevron-up/index.tsx","../src/components/icons/chevrons-left/index.tsx","../src/components/icons/chevrons-right/index.tsx","../src/components/icons/clipboard/index.tsx","../src/components/icons/clock/index.tsx","../src/components/icons/cloud/index.tsx","../src/components/icons/copy/index.tsx","../src/components/icons/corner-down-right/index.tsx","../src/components/icons/credit-card/index.tsx","../src/components/icons/dollar-sign/index.tsx","../src/components/icons/download/index.tsx","../src/components/icons/external-link/index.tsx","../src/components/icons/file/index.tsx","../src/components/icons/file-text/index.tsx","../src/components/icons/filter/index.tsx","../src/components/icons/fingerprint/index.tsx","../src/components/icons/folder/index.tsx","../src/components/icons/folder-open/index.tsx","../src/components/icons/gift/index.tsx","../src/components/icons/github/index.tsx","../src/components/icons/globe/index.tsx","../src/components/icons/grid/index.tsx","../src/components/icons/heart/index.tsx","../src/components/icons/help-circle/index.tsx","../src/components/icons/home/index.tsx","../src/components/icons/image/index.tsx","../src/components/icons/inbox/index.tsx","../src/components/icons/key/index.tsx","../src/components/icons/layout/index.tsx","../src/components/icons/link/index.tsx","../src/components/icons/list/index.tsx","../src/components/icons/loader/index.tsx","../src/components/icons/lock/index.tsx","../src/components/icons/log-in/index.tsx","../src/components/icons/log-out/index.tsx","../src/components/icons/mail/index.tsx","../src/components/icons/map-pin/index.tsx","../src/components/icons/maximize/index.tsx","../src/components/icons/menu/index.tsx","../src/components/icons/message-circle/index.tsx","../src/components/icons/message-square/index.tsx","../src/components/icons/mic/index.tsx","../src/components/icons/minimize/index.tsx","../src/components/icons/minus/index.tsx","../src/components/icons/moon/index.tsx","../src/components/icons/more-horizontal/index.tsx","../src/components/icons/more-vertical/index.tsx","../src/components/icons/package/index.tsx","../src/components/icons/paperclip/index.tsx","../src/components/icons/pause/index.tsx","../src/components/icons/pencil/index.tsx","../src/components/icons/phone/index.tsx","../src/components/icons/play/index.tsx","../src/components/icons/plus/index.tsx","../src/components/icons/printer/index.tsx","../src/components/icons/redo/index.tsx","../src/components/icons/refresh-cw/index.tsx","../src/components/icons/save/index.tsx","../src/components/icons/search/index.tsx","../src/components/icons/send/index.tsx","../src/components/icons/settings/index.tsx","../src/components/icons/share/index.tsx","../src/components/icons/shield/index.tsx","../src/components/icons/shield-check/index.tsx","../src/components/icons/shopping-bag/index.tsx","../src/components/icons/shopping-cart/index.tsx","../src/components/icons/sidebar/index.tsx","../src/components/icons/skip-back/index.tsx","../src/components/icons/skip-forward/index.tsx","../src/components/icons/sliders/index.tsx","../src/components/icons/smile/index.tsx","../src/components/icons/star/index.tsx","../src/components/icons/sun/index.tsx","../src/components/icons/tag/index.tsx","../src/components/icons/thumbs-down/index.tsx","../src/components/icons/thumbs-up/index.tsx","../src/components/icons/trash/index.tsx","../src/components/icons/undo/index.tsx","../src/components/icons/unlock/index.tsx","../src/components/icons/upload/index.tsx","../src/components/icons/user/index.tsx","../src/components/icons/user-check/index.tsx","../src/components/icons/user-plus/index.tsx","../src/components/icons/users/index.tsx","../src/components/icons/volume-2/index.tsx","../src/components/icons/volume-x/index.tsx","../src/components/icons/wifi/index.tsx","../src/components/icons/zap/index.tsx","../src/components/icons/index.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 { Container } from \"./components/container\";\nexport type { ContainerProps } from \"./components/container/types\";\nexport { Surface } from \"./components/surface\";\nexport type { SurfaceProps } from \"./components/surface/types\";\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 { RadioGroup } from \"./components/radio-group\";\nexport type {\n RadioGroupProps,\n RadioGroupOption,\n RadioGroupOrientation,\n} from \"./components/radio-group/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 { PasswordField } from \"./components/password-field\";\nexport type { PasswordFieldProps } from \"./components/password-field/types\";\nexport { MoneyField } from \"./components/money-field\";\nexport type { MoneyFieldProps } from \"./components/money-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 — set Tinta completo + registro `iconCatalog`. Ver components/icons/README.md.\nexport * from \"./components/icons\";\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.\n// `text` (las clases tipográficas sueltas) es interno a propósito: en consumidores\n// usá el componente <Typography variant=...>, que aplica las mismas clases y colores.\nexport {\n ThemeProvider,\n useTheme,\n type ThemeProviderProps,\n type ModePreference,\n} from \"./theme/context/theme-context\";\n\n// Testing (testIds para Maestro)\nexport { TestIdProvider, type TestIdProviderProps } from \"./testing/context/test-id-context\";\nexport { useTestId, type TestIdHandle } from \"./testing/use-test-id\";\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nexport var colorVars = {bg:{page:'var(--bg-page__e3grur28)',surface:'var(--bg-surface__e3grur29)',sunken:'var(--bg-sunken__e3grur2a)',inset:'var(--bg-inset__e3grur2b)'},fg:{strong:'var(--fg-strong__e3grur2c)',muted:'var(--fg-muted__e3grur2d)',subtle:'var(--fg-subtle__e3grur2e)',onAccent:'var(--fg-onAccent__e3grur2f)'},border:{subtle:'var(--border-subtle__e3grur2g)','default':'var(--border-default__e3grur2h)',strong:'var(--border-strong__e3grur2i)'},accent:{base:'var(--accent-base__e3grur2j)',hover:'var(--accent-hover__e3grur2k)',soft:'var(--accent-soft__e3grur2l)',text:'var(--accent-text__e3grur2m)'},danger:{base:'var(--danger-base__e3grur2n)',hover:'var(--danger-hover__e3grur2o)',soft:'var(--danger-soft__e3grur2p)',text:'var(--danger-text__e3grur2q)'},status:{ok:'var(--status-ok__e3grur2r)',warn:'var(--status-warn__e3grur2s)',info:'var(--status-info__e3grur2t)'},focus:'var(--focus__e3grur2u)',scrim:'var(--scrim__e3grur2v)'};\nexport var modeNames = ['light','dark','sepia','contrast'];\nexport var schemaNames = ['tinta','docslingo'];\nexport var themes = {tinta:{light:'theme__e3grur2w',dark:'theme__e3grur2x',sepia:'theme__e3grur2y',contrast:'theme__e3grur2z'},docslingo:{light:'theme__e3grur30',dark:'theme__e3grur31',sepia:'theme__e3grur32',contrast:'theme__e3grur33'}};\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:{s0:'var(--space-s0__e3grur18)',s1:'var(--space-s1__e3grur19)',s2:'var(--space-s2__e3grur1a)',s3:'var(--space-s3__e3grur1b)',s4:'var(--space-s4__e3grur1c)',s5:'var(--space-s5__e3grur1d)',s6:'var(--space-s6__e3grur1e)',s7:'var(--space-s7__e3grur1f)',s8:'var(--space-s8__e3grur1g)',s9:'var(--space-s9__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 { type ElementType, type Ref, forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { ContainerProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Caja polimórfica con style-props (sprinkles). Presentacional: la separación de props\n// de estilo y el cálculo del className viven en useStyles. No acepta className/style: el\n// className va DESPUÉS de `...rest`, así un className forzado (as any) no puede pisar el nuestro.\nfunction ContainerImpl<E extends ElementType = \"div\">(\n { as, testId, ...props }: ContainerProps<E>,\n ref: Ref<Element>,\n) {\n const Component = (as ?? \"div\") as ElementType;\n const { className, rest } = useStyles(props as Record<string, unknown>);\n const { testId: dataTestId } = useTestId(\"layout\", testId);\n return <Component ref={ref} data-testid={dataTestId} {...rest} className={className} />;\n}\n\n// forwardRef borra el genérico `E`; lo reponemos con un cast a la firma polimórfica.\nconst ContainerForwarded = forwardRef(ContainerImpl);\nContainerForwarded.displayName = \"Container\";\nexport const Container = ContainerForwarded as <E extends ElementType = \"div\">(\n props: ContainerProps<E> & { ref?: Ref<Element> },\n) => ReturnType<typeof ContainerImpl>;\n","import { useMemo } from \"react\";\nimport { composeTestId, normalizeSegment } from \"./compose\";\nimport { useTestIdContext } from \"./context/test-id-context\";\n\nexport interface TestIdHandle {\n /** data-testid del nodo root: `<tipo>__<...contexto>__<ownTestId>`. */\n testId: string;\n /** Deriva el id de un slot interno: `<testId>__<slot>`. */\n slot: (name: string) => string;\n}\n\n// Compone el data-testid de un componente: tipo (rol semántico) + contexto de los\n// providers + la prop testId de la instancia. `slot(name)` agrega un segmento interno.\n// El handle se memoiza sobre `testId` (que ya codifica tipo + contexto + ownTestId)\n// para devolver una referencia estable: el closure `slot` solo se recrea si cambia\n// `testId`, siguiendo la convención de memoización de los `useStyles` por slot.\nexport function useTestId(type: string, ownTestId?: string): TestIdHandle {\n const ctx = useTestIdContext();\n const testId = composeTestId([type, ...ctx, ownTestId]);\n return useMemo<TestIdHandle>(\n () => ({\n testId,\n slot: (name: string) => `${testId}__${normalizeSegment(name)}`,\n }),\n [testId],\n );\n}\n","// Normaliza un segmento atómico de testId a kebab-case: separa camelCase, colapsa\n// espacios/underscores en un guion y baja a minúsculas. NO debe recibir strings ya\n// unidos con \"__\" (esos vienen de composeTestId, no se re-normalizan).\nexport function normalizeSegment(seg: string): string {\n return seg\n .trim()\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n}\n\n// Une segmentos no vacíos con \"__\" (BEM). Cada parte se normaliza por separado.\nexport function composeTestId(parts: Array<string | undefined | null | false>): string {\n return parts\n .filter((p): p is string => typeof p === \"string\" && p.trim() !== \"\")\n .map(normalizeSegment)\n .join(\"__\");\n}\n","import { type ReactNode, createContext, useContext, useMemo } from \"react\";\nimport { normalizeSegment } from \"../compose\";\n\n// Segmentos de contexto acumulados por los providers anidados (ya normalizados).\nconst TestIdContext = createContext<readonly string[]>([]);\n\nexport interface TestIdProviderProps {\n /** Segmento de contexto que este provider agrega a la cadena (ej. \"checkout\"). */\n context: string;\n children: ReactNode;\n}\n\n// Propaga contexto hacia abajo: concatena su `context` con el del provider padre.\n// Sin runtime de estilos (igual que ThemeProvider).\nexport function TestIdProvider({ context, children }: TestIdProviderProps) {\n const parent = useContext(TestIdContext);\n const value = useMemo(\n () => [...parent, normalizeSegment(context)].filter((seg) => seg !== \"\"),\n [parent, context],\n );\n return <TestIdContext.Provider value={value}>{children}</TestIdContext.Provider>;\n}\n\n// Interno: los segmentos de contexto acumulados ([] si no hay provider).\nexport function useTestIdContext(): readonly string[] {\n return useContext(TestIdContext);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/sprinkles/index.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5XaTW_juhUG4P38iizbhYPow4kzd9V7CxQFuroo0M0AgawvK5YlR5LtJEX_eyGRPCRF8bzyajCjo8eMfF6RJ5jH_txVzbHO-7dzkmVVU771T29vH4c87bKnh__-eHiQ__7z4Zp0f9ls-nOS5puxKI_K7tIFu7_-9uN_Px4XoEBBAQMFBL16oVBBIQOFBCVeKFJQxEARQXsvFCsoZqCYoNQLbRW0ZaAtQZkXelbQMwM9E5R7oRcFvTDQC0GFF9opaMdAO4JKL_SqoFcGeiXo4IH-3Z6N5k5MazO057sbfPKox_fAw30-edTqKfBwu08edXwGPNz1k0eNnwMPN__kUf8XwMMZmDyKQQk8HIXJozQcgIcTMXkUigp4OBiTR9l4Bx7Ox59VeRiMhBwtsRuv3p0RaVJKamjinEiTknKCJs6KNCktDTRxXqRJiWmhiTMjTUrNGZo4N9Kk5HxAE2dHmpSeDpo4P9KkBPXQxBmSJqVogCbO0e_tMLQnI0gXC91Pl-9OklIpSles4iwplcJ0wypOk1IpTp9YxXlSKgXqC6s4UUqlSH1jFWdKqRSq4AmzOFaKpVwFAWZxshRL0QpCzOJwKZbSFUSYxfn6V16Y21RgHcE3dV7cv00JUs8rW0TiZAmSchU8IxLHSpAUquAFkThTgqREBTtE4kAJkuIUvCISp0mQOksJInGSBKlztEckTpEgdYZSROIECVLnJ0Mkk55T0pVVYw9BgTjFi0v3DUEGp3NT8ByTGoPTmSl5jkmMwem8HHiOSYvB6axUPMckxeB0Tt55jkmJwemMHHmOSYjB6XzUPMekw-B0Nk48xyTD4HQuGp6DqZiPPkFrgneOPhaps3FGJEzHfPAJPhAJEzKfe4IOkTAl87En6BEJkzKfeoIBkTAt86EnuCASJmY-8wRXRMLUzEee4IZImJz5xBN8IhKmxxl4gi_TvHfgsVEdoG-IwgQ54074BFGYIWfaCQOIwhQ5w04YQhTmyJl1wgiiMEnOqBPGEIVZcgadcAtRmCZnzAmfIQrz5Aw54QtEYaJmI064M8n7JhwTpCyFrwCESZqNN2ECQJii2XAT7gEIEzQbbcIUgDA9s8EmzAAIkzMba8IcgDA1s6EmLAAIEzMbacISgDAts4EmPACQSUqZmJNMKE7jZXLHCDMJOhPvHoHJwiToEBw9AtP8k6C7vvYITLdPgm7zk0dg2nsSdF83HoHp50nQjdx6BKaBJ0F37tkjMB07CbpVPzwC06KToHuz8whMT3bt7R92W4rDb9feNne1poJ0dw4MxHSognSTXhiIaVQF6V69MhDTrwrSLXtjIKZtFaQ795OBmO5VkG7gLwZimlhBuo-_GYjpZQVRO0dPDMS0tIKoq6OAgZjOTtv6cmrs5o7EkVRcuq-_DY5aPIp4julyg6NGj2KeY3rd4PT_GNnyHNPxBkdNHz3zHNP3BketH73wHNP9BkcBiHY8x2TA4CgG0SvPMUkwOB2GhOeYPBicjsSe55hU7JP0WHbtpcne9uWvx3NS5qSK86auUOq-3Ig6gYZONmZof-mKJNVu5nepVNJOThy6OeYNyTkni0oJO4mZwVXT5wO5hd-VhZJ1kmOwxbjeoWubktzS4xblRlVK2MnQDD5dhjwj9-B3ZaFknSzN13vZD7X-5ipmvbJSwk6qZnDb_C1N80Y_4nc_rWsl7mTM_PLaLss7Z-VH3zc4lc9X76Ru4QOyvEgutf4Bav4TqFx-BJtE9TPY3XICP4PdMRXzAcn0PH897pNeP6LGw4vijaiV-PsK_NBe8470ltdlseSPK_i-LfTDP_O6qJV4vQIf8k-Nf_C4qJX4icGzpCnHr9V66p0HF8X2U29W4PZT73ndfurtCt566gOvW0_9vAK3nvqFx62n_sHg_ZAMl_7XY3sk-uqhRelmrJRwtwK-JZ3egW48LWol3q_Aq6ZoCf_kcVEr8YF7AbfppSf1y_fmFVXSu3CLTbvqRN63b5WiSnrXhYNN2zmHkPhJHW3abvX5Q1Ozo0ccLGrw1GGC5oEjDj0ef9bQnHXMiKNFDZwwBOYeLuLY1VacKzRnHSni7aIGThPG2qztOH5eXhs4Q2hufnyIXxZBfHKQX8XioSHeLXwf684LNjs7KsSvXheeEmbrtb_xxL9ecDYQ7NKxIN676KoTgU1a21Kcek1wDrBRczOKM6_J7_42aW5Bce4l-T1fkEvbfVy45Kqd3ibtp1l6TbC_26j1NA9ek9_VbdJ6mpWX5PdyQbrbePzugit2cJszN-_46AX5fdsmzS07rr0kv1vLV525UcenhXccv0fLhZnbc9wsrIjfmcU75M8kqy79W9M2upvloV68Y7qpQJnibxtRLn_74I4kptzrNZ6h29N6A3cWMdWT3sI-oHqivSxwRxBTrfVLt4NqTS_ewJ09TNV6U_TQNd8YgTt4mHJxqWuSByiLcik776Ks6s918vW2r9tUp1Gc1-W1nw_TRc-NVVNXTb6x77_a95s1Hqao80-6_WbfPl7jP926-3Pxwxmk7CrdWF_23eM1z21Wer7t28Zrs9vGBfy96vJ0qNpm_FW4uncrjsXj9U2mCn6OvxRnBfEbQkKCRUQUoZVsuvyad7pft6FvRapyxcocNGJW6HGTuiqbfw75SXzE-LrtaBPaikPxVLOpxiLRKqLKL42bvt5xt1tXERVgLXlDTbN99qwkb-bNYyj90OVDeiDkxUVkid8YXxtjexOycxFVM1PeL_1QFV9_tM0wnqoXnq842sq6TSoKmWc8E2fPOVnWFp_10trM571nVuY-85kmfpG-z4dbrqe_bbpMWsVr3ESM0YrNOFbUrlHza97UX6TmnCpqFxL6ny45vzXtbfxDSYUO5fjv45tr_NN3t3VvOb9X3vl_g4Okgsc9AAA';\nimport { createSprinkles as _ad221 } from '@vanilla-extract/sprinkles/createRuntimeSprinkles';\nexport var sprinkles = _ad221({conditions:undefined,styles:{p:{mappings:['padding']},px:{mappings:['paddingLeft','paddingRight']},py:{mappings:['paddingTop','paddingBottom']},pt:{mappings:['paddingTop']},pr:{mappings:['paddingRight']},pb:{mappings:['paddingBottom']},pl:{mappings:['paddingLeft']},m:{mappings:['marginTop','marginRight','marginBottom','marginLeft']},mx:{mappings:['marginLeft','marginRight']},my:{mappings:['marginTop','marginBottom']},mt:{mappings:['marginTop']},mr:{mappings:['marginRight']},mb:{mappings:['marginBottom']},ml:{mappings:['marginLeft']},bg:{mappings:['background']},radius:{mappings:['borderRadius']},padding:{values:{s0:{defaultClass:'sprinkles_padding_s0__qhecrd0'},s1:{defaultClass:'sprinkles_padding_s1__qhecrd1'},s2:{defaultClass:'sprinkles_padding_s2__qhecrd2'},s3:{defaultClass:'sprinkles_padding_s3__qhecrd3'},s4:{defaultClass:'sprinkles_padding_s4__qhecrd4'},s5:{defaultClass:'sprinkles_padding_s5__qhecrd5'},s6:{defaultClass:'sprinkles_padding_s6__qhecrd6'},s7:{defaultClass:'sprinkles_padding_s7__qhecrd7'},s8:{defaultClass:'sprinkles_padding_s8__qhecrd8'},s9:{defaultClass:'sprinkles_padding_s9__qhecrd9'}}},paddingTop:{values:{s0:{defaultClass:'sprinkles_paddingTop_s0__qhecrda'},s1:{defaultClass:'sprinkles_paddingTop_s1__qhecrdb'},s2:{defaultClass:'sprinkles_paddingTop_s2__qhecrdc'},s3:{defaultClass:'sprinkles_paddingTop_s3__qhecrdd'},s4:{defaultClass:'sprinkles_paddingTop_s4__qhecrde'},s5:{defaultClass:'sprinkles_paddingTop_s5__qhecrdf'},s6:{defaultClass:'sprinkles_paddingTop_s6__qhecrdg'},s7:{defaultClass:'sprinkles_paddingTop_s7__qhecrdh'},s8:{defaultClass:'sprinkles_paddingTop_s8__qhecrdi'},s9:{defaultClass:'sprinkles_paddingTop_s9__qhecrdj'}}},paddingRight:{values:{s0:{defaultClass:'sprinkles_paddingRight_s0__qhecrdk'},s1:{defaultClass:'sprinkles_paddingRight_s1__qhecrdl'},s2:{defaultClass:'sprinkles_paddingRight_s2__qhecrdm'},s3:{defaultClass:'sprinkles_paddingRight_s3__qhecrdn'},s4:{defaultClass:'sprinkles_paddingRight_s4__qhecrdo'},s5:{defaultClass:'sprinkles_paddingRight_s5__qhecrdp'},s6:{defaultClass:'sprinkles_paddingRight_s6__qhecrdq'},s7:{defaultClass:'sprinkles_paddingRight_s7__qhecrdr'},s8:{defaultClass:'sprinkles_paddingRight_s8__qhecrds'},s9:{defaultClass:'sprinkles_paddingRight_s9__qhecrdt'}}},paddingBottom:{values:{s0:{defaultClass:'sprinkles_paddingBottom_s0__qhecrdu'},s1:{defaultClass:'sprinkles_paddingBottom_s1__qhecrdv'},s2:{defaultClass:'sprinkles_paddingBottom_s2__qhecrdw'},s3:{defaultClass:'sprinkles_paddingBottom_s3__qhecrdx'},s4:{defaultClass:'sprinkles_paddingBottom_s4__qhecrdy'},s5:{defaultClass:'sprinkles_paddingBottom_s5__qhecrdz'},s6:{defaultClass:'sprinkles_paddingBottom_s6__qhecrd10'},s7:{defaultClass:'sprinkles_paddingBottom_s7__qhecrd11'},s8:{defaultClass:'sprinkles_paddingBottom_s8__qhecrd12'},s9:{defaultClass:'sprinkles_paddingBottom_s9__qhecrd13'}}},paddingLeft:{values:{s0:{defaultClass:'sprinkles_paddingLeft_s0__qhecrd14'},s1:{defaultClass:'sprinkles_paddingLeft_s1__qhecrd15'},s2:{defaultClass:'sprinkles_paddingLeft_s2__qhecrd16'},s3:{defaultClass:'sprinkles_paddingLeft_s3__qhecrd17'},s4:{defaultClass:'sprinkles_paddingLeft_s4__qhecrd18'},s5:{defaultClass:'sprinkles_paddingLeft_s5__qhecrd19'},s6:{defaultClass:'sprinkles_paddingLeft_s6__qhecrd1a'},s7:{defaultClass:'sprinkles_paddingLeft_s7__qhecrd1b'},s8:{defaultClass:'sprinkles_paddingLeft_s8__qhecrd1c'},s9:{defaultClass:'sprinkles_paddingLeft_s9__qhecrd1d'}}},marginTop:{values:{s0:{defaultClass:'sprinkles_marginTop_s0__qhecrd1e'},s1:{defaultClass:'sprinkles_marginTop_s1__qhecrd1f'},s2:{defaultClass:'sprinkles_marginTop_s2__qhecrd1g'},s3:{defaultClass:'sprinkles_marginTop_s3__qhecrd1h'},s4:{defaultClass:'sprinkles_marginTop_s4__qhecrd1i'},s5:{defaultClass:'sprinkles_marginTop_s5__qhecrd1j'},s6:{defaultClass:'sprinkles_marginTop_s6__qhecrd1k'},s7:{defaultClass:'sprinkles_marginTop_s7__qhecrd1l'},s8:{defaultClass:'sprinkles_marginTop_s8__qhecrd1m'},s9:{defaultClass:'sprinkles_marginTop_s9__qhecrd1n'}}},marginRight:{values:{s0:{defaultClass:'sprinkles_marginRight_s0__qhecrd1o'},s1:{defaultClass:'sprinkles_marginRight_s1__qhecrd1p'},s2:{defaultClass:'sprinkles_marginRight_s2__qhecrd1q'},s3:{defaultClass:'sprinkles_marginRight_s3__qhecrd1r'},s4:{defaultClass:'sprinkles_marginRight_s4__qhecrd1s'},s5:{defaultClass:'sprinkles_marginRight_s5__qhecrd1t'},s6:{defaultClass:'sprinkles_marginRight_s6__qhecrd1u'},s7:{defaultClass:'sprinkles_marginRight_s7__qhecrd1v'},s8:{defaultClass:'sprinkles_marginRight_s8__qhecrd1w'},s9:{defaultClass:'sprinkles_marginRight_s9__qhecrd1x'}}},marginBottom:{values:{s0:{defaultClass:'sprinkles_marginBottom_s0__qhecrd1y'},s1:{defaultClass:'sprinkles_marginBottom_s1__qhecrd1z'},s2:{defaultClass:'sprinkles_marginBottom_s2__qhecrd20'},s3:{defaultClass:'sprinkles_marginBottom_s3__qhecrd21'},s4:{defaultClass:'sprinkles_marginBottom_s4__qhecrd22'},s5:{defaultClass:'sprinkles_marginBottom_s5__qhecrd23'},s6:{defaultClass:'sprinkles_marginBottom_s6__qhecrd24'},s7:{defaultClass:'sprinkles_marginBottom_s7__qhecrd25'},s8:{defaultClass:'sprinkles_marginBottom_s8__qhecrd26'},s9:{defaultClass:'sprinkles_marginBottom_s9__qhecrd27'}}},marginLeft:{values:{s0:{defaultClass:'sprinkles_marginLeft_s0__qhecrd28'},s1:{defaultClass:'sprinkles_marginLeft_s1__qhecrd29'},s2:{defaultClass:'sprinkles_marginLeft_s2__qhecrd2a'},s3:{defaultClass:'sprinkles_marginLeft_s3__qhecrd2b'},s4:{defaultClass:'sprinkles_marginLeft_s4__qhecrd2c'},s5:{defaultClass:'sprinkles_marginLeft_s5__qhecrd2d'},s6:{defaultClass:'sprinkles_marginLeft_s6__qhecrd2e'},s7:{defaultClass:'sprinkles_marginLeft_s7__qhecrd2f'},s8:{defaultClass:'sprinkles_marginLeft_s8__qhecrd2g'},s9:{defaultClass:'sprinkles_marginLeft_s9__qhecrd2h'}}},gap:{values:{s0:{defaultClass:'sprinkles_gap_s0__qhecrd2i'},s1:{defaultClass:'sprinkles_gap_s1__qhecrd2j'},s2:{defaultClass:'sprinkles_gap_s2__qhecrd2k'},s3:{defaultClass:'sprinkles_gap_s3__qhecrd2l'},s4:{defaultClass:'sprinkles_gap_s4__qhecrd2m'},s5:{defaultClass:'sprinkles_gap_s5__qhecrd2n'},s6:{defaultClass:'sprinkles_gap_s6__qhecrd2o'},s7:{defaultClass:'sprinkles_gap_s7__qhecrd2p'},s8:{defaultClass:'sprinkles_gap_s8__qhecrd2q'},s9:{defaultClass:'sprinkles_gap_s9__qhecrd2r'}}},rowGap:{values:{s0:{defaultClass:'sprinkles_rowGap_s0__qhecrd2s'},s1:{defaultClass:'sprinkles_rowGap_s1__qhecrd2t'},s2:{defaultClass:'sprinkles_rowGap_s2__qhecrd2u'},s3:{defaultClass:'sprinkles_rowGap_s3__qhecrd2v'},s4:{defaultClass:'sprinkles_rowGap_s4__qhecrd2w'},s5:{defaultClass:'sprinkles_rowGap_s5__qhecrd2x'},s6:{defaultClass:'sprinkles_rowGap_s6__qhecrd2y'},s7:{defaultClass:'sprinkles_rowGap_s7__qhecrd2z'},s8:{defaultClass:'sprinkles_rowGap_s8__qhecrd30'},s9:{defaultClass:'sprinkles_rowGap_s9__qhecrd31'}}},columnGap:{values:{s0:{defaultClass:'sprinkles_columnGap_s0__qhecrd32'},s1:{defaultClass:'sprinkles_columnGap_s1__qhecrd33'},s2:{defaultClass:'sprinkles_columnGap_s2__qhecrd34'},s3:{defaultClass:'sprinkles_columnGap_s3__qhecrd35'},s4:{defaultClass:'sprinkles_columnGap_s4__qhecrd36'},s5:{defaultClass:'sprinkles_columnGap_s5__qhecrd37'},s6:{defaultClass:'sprinkles_columnGap_s6__qhecrd38'},s7:{defaultClass:'sprinkles_columnGap_s7__qhecrd39'},s8:{defaultClass:'sprinkles_columnGap_s8__qhecrd3a'},s9:{defaultClass:'sprinkles_columnGap_s9__qhecrd3b'}}},background:{values:{'bg.page':{defaultClass:'sprinkles_background_bg.page__qhecrd3c'},'bg.surface':{defaultClass:'sprinkles_background_bg.surface__qhecrd3d'},'bg.sunken':{defaultClass:'sprinkles_background_bg.sunken__qhecrd3e'},'bg.inset':{defaultClass:'sprinkles_background_bg.inset__qhecrd3f'},'fg.strong':{defaultClass:'sprinkles_background_fg.strong__qhecrd3g'},'fg.muted':{defaultClass:'sprinkles_background_fg.muted__qhecrd3h'},'fg.subtle':{defaultClass:'sprinkles_background_fg.subtle__qhecrd3i'},'fg.onAccent':{defaultClass:'sprinkles_background_fg.onAccent__qhecrd3j'},'border.subtle':{defaultClass:'sprinkles_background_border.subtle__qhecrd3k'},'border.default':{defaultClass:'sprinkles_background_border.default__qhecrd3l'},'border.strong':{defaultClass:'sprinkles_background_border.strong__qhecrd3m'},'accent.base':{defaultClass:'sprinkles_background_accent.base__qhecrd3n'},'accent.hover':{defaultClass:'sprinkles_background_accent.hover__qhecrd3o'},'accent.soft':{defaultClass:'sprinkles_background_accent.soft__qhecrd3p'},'accent.text':{defaultClass:'sprinkles_background_accent.text__qhecrd3q'},'danger.base':{defaultClass:'sprinkles_background_danger.base__qhecrd3r'},'danger.hover':{defaultClass:'sprinkles_background_danger.hover__qhecrd3s'},'danger.soft':{defaultClass:'sprinkles_background_danger.soft__qhecrd3t'},'danger.text':{defaultClass:'sprinkles_background_danger.text__qhecrd3u'},'status.ok':{defaultClass:'sprinkles_background_status.ok__qhecrd3v'},'status.warn':{defaultClass:'sprinkles_background_status.warn__qhecrd3w'},'status.info':{defaultClass:'sprinkles_background_status.info__qhecrd3x'},focus:{defaultClass:'sprinkles_background_focus__qhecrd3y'},scrim:{defaultClass:'sprinkles_background_scrim__qhecrd3z'}}},color:{values:{'bg.page':{defaultClass:'sprinkles_color_bg.page__qhecrd40'},'bg.surface':{defaultClass:'sprinkles_color_bg.surface__qhecrd41'},'bg.sunken':{defaultClass:'sprinkles_color_bg.sunken__qhecrd42'},'bg.inset':{defaultClass:'sprinkles_color_bg.inset__qhecrd43'},'fg.strong':{defaultClass:'sprinkles_color_fg.strong__qhecrd44'},'fg.muted':{defaultClass:'sprinkles_color_fg.muted__qhecrd45'},'fg.subtle':{defaultClass:'sprinkles_color_fg.subtle__qhecrd46'},'fg.onAccent':{defaultClass:'sprinkles_color_fg.onAccent__qhecrd47'},'border.subtle':{defaultClass:'sprinkles_color_border.subtle__qhecrd48'},'border.default':{defaultClass:'sprinkles_color_border.default__qhecrd49'},'border.strong':{defaultClass:'sprinkles_color_border.strong__qhecrd4a'},'accent.base':{defaultClass:'sprinkles_color_accent.base__qhecrd4b'},'accent.hover':{defaultClass:'sprinkles_color_accent.hover__qhecrd4c'},'accent.soft':{defaultClass:'sprinkles_color_accent.soft__qhecrd4d'},'accent.text':{defaultClass:'sprinkles_color_accent.text__qhecrd4e'},'danger.base':{defaultClass:'sprinkles_color_danger.base__qhecrd4f'},'danger.hover':{defaultClass:'sprinkles_color_danger.hover__qhecrd4g'},'danger.soft':{defaultClass:'sprinkles_color_danger.soft__qhecrd4h'},'danger.text':{defaultClass:'sprinkles_color_danger.text__qhecrd4i'},'status.ok':{defaultClass:'sprinkles_color_status.ok__qhecrd4j'},'status.warn':{defaultClass:'sprinkles_color_status.warn__qhecrd4k'},'status.info':{defaultClass:'sprinkles_color_status.info__qhecrd4l'},focus:{defaultClass:'sprinkles_color_focus__qhecrd4m'},scrim:{defaultClass:'sprinkles_color_scrim__qhecrd4n'}}},borderRadius:{values:{none:{defaultClass:'sprinkles_borderRadius_none__qhecrd4o'},sm:{defaultClass:'sprinkles_borderRadius_sm__qhecrd4p'},md:{defaultClass:'sprinkles_borderRadius_md__qhecrd4q'},lg:{defaultClass:'sprinkles_borderRadius_lg__qhecrd4r'},base:{defaultClass:'sprinkles_borderRadius_base__qhecrd4s'},full:{defaultClass:'sprinkles_borderRadius_full__qhecrd4t'}}},display:{values:{block:{defaultClass:'sprinkles_display_block__qhecrd4u'},'inline-block':{defaultClass:'sprinkles_display_inline-block__qhecrd4v'},flex:{defaultClass:'sprinkles_display_flex__qhecrd4w'},'inline-flex':{defaultClass:'sprinkles_display_inline-flex__qhecrd4x'},grid:{defaultClass:'sprinkles_display_grid__qhecrd4y'},none:{defaultClass:'sprinkles_display_none__qhecrd4z'}}},flexDirection:{values:{row:{defaultClass:'sprinkles_flexDirection_row__qhecrd50'},column:{defaultClass:'sprinkles_flexDirection_column__qhecrd51'},'row-reverse':{defaultClass:'sprinkles_flexDirection_row-reverse__qhecrd52'},'column-reverse':{defaultClass:'sprinkles_flexDirection_column-reverse__qhecrd53'}}},alignItems:{values:{'flex-start':{defaultClass:'sprinkles_alignItems_flex-start__qhecrd54'},center:{defaultClass:'sprinkles_alignItems_center__qhecrd55'},'flex-end':{defaultClass:'sprinkles_alignItems_flex-end__qhecrd56'},stretch:{defaultClass:'sprinkles_alignItems_stretch__qhecrd57'},baseline:{defaultClass:'sprinkles_alignItems_baseline__qhecrd58'}}},justifyContent:{values:{'flex-start':{defaultClass:'sprinkles_justifyContent_flex-start__qhecrd59'},center:{defaultClass:'sprinkles_justifyContent_center__qhecrd5a'},'flex-end':{defaultClass:'sprinkles_justifyContent_flex-end__qhecrd5b'},'space-between':{defaultClass:'sprinkles_justifyContent_space-between__qhecrd5c'},'space-around':{defaultClass:'sprinkles_justifyContent_space-around__qhecrd5d'},'space-evenly':{defaultClass:'sprinkles_justifyContent_space-evenly__qhecrd5e'}}},flexWrap:{values:{nowrap:{defaultClass:'sprinkles_flexWrap_nowrap__qhecrd5f'},wrap:{defaultClass:'sprinkles_flexWrap_wrap__qhecrd5g'}}}}});","import { sprinkles } from \"../../theme/styles/sprinkles/index.css\";\n\n// La lógica de estilos de Container: separa las props de estilo (sprinkles) de las\n// nativas y devuelve el className + el resto. Sprinkles ES el motor de estilos de este\n// primitivo: reemplaza al patrón slot/use-styles.css de los demás componentes.\ntype Props = Record<string, unknown>;\n\nexport function useStyles(props: Props): { className: string; rest: Props } {\n const styleProps: Props = {};\n const rest: Props = {};\n for (const key of Object.keys(props)) {\n const value = props[key];\n if (sprinkles.properties.has(key as Parameters<typeof sprinkles.properties.has>[0])) {\n styleProps[key] = value;\n } else {\n rest[key] = value;\n }\n }\n return { className: sprinkles(styleProps as Parameters<typeof sprinkles>[0]), rest };\n}\n","import { type ElementType, type Ref, forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { SurfaceProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional y polimórfico: pinta el canvas del tema activo. Default <div>.\n// No acepta className/style (encapsulado): se personaliza por props (as, fill).\n// forwardRef no preserva el genérico E, así que casteamos para conservarlo (igual que Typography).\nfunction SurfaceInner<E extends ElementType = \"div\">(\n { as, fill, testId, ...rest }: SurfaceProps<E>,\n ref: Ref<HTMLElement>,\n) {\n const Component = (as ?? \"div\") as ElementType;\n const { surface } = useStyles({ fill });\n const { testId: dataTestId } = useTestId(\"surface\", testId);\n // className DESPUÉS de ...rest: nuestro estilo gana aunque fuercen uno por fuera.\n return <Component ref={ref} data-testid={dataTestId} {...rest} className={surface} />;\n}\n\nconst SurfaceForwarded = forwardRef(\n SurfaceInner as (props: SurfaceProps, ref: Ref<HTMLElement>) => ReturnType<typeof SurfaceInner>,\n);\nSurfaceForwarded.displayName = \"Surface\";\nexport const Surface = SurfaceForwarded as <E extends ElementType = \"div\">(\n props: SurfaceProps<E> & { ref?: Ref<HTMLElement> },\n) => ReturnType<typeof SurfaceInner>;\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\nexport function useStyles({ fill }: { fill?: boolean | undefined }): { surface: string } {\n const { themeClass } = useTheme();\n const className = useMemo(\n () => [themeClass, styles.surface, fill && styles.fill].filter(Boolean).join(\" \"),\n [themeClass, fill],\n );\n return { surface: className };\n}\n","// Tokens compartidos por todos los temas Tinta: no cambian por modo.\n// Valores tomados de colors_and_type.css §1 (escala 4px, base 18px, ratio ~1.25).\nexport const tokens = {\n font: {\n display: \"'DM Serif Display', 'Times New Roman', serif\",\n text: \"'Newsreader', Georgia, serif\",\n mono: \"'IBM Plex Mono', 'SFMono-Regular', monospace\",\n black: \"'UnifrakturMaguntia', 'Grenze Gotisch', serif\",\n },\n // Roles tipográficos: tamaño/interlineado/peso/tracking listos para typography.css.ts.\n text: {\n eyebrow: { size: \"0.694rem\", lineHeight: \"1.2\", weight: \"500\", letterSpacing: \"0.14em\" },\n // Escala fluida: ~43px en 375px (entra en móvil), cotea en 5.6rem (≈90px) desde ~1200px.\n display: {\n size: \"clamp(2.75rem, 1.4rem + 5.6vw, 5.6rem)\",\n lineHeight: \"1.05\",\n weight: \"600\",\n letterSpacing: \"-0.01em\",\n },\n h1: { size: \"2.9rem\", lineHeight: \"1.05\", weight: \"600\", letterSpacing: \"-0.01em\" },\n h2: { size: \"2.1rem\", lineHeight: \"1.2\", weight: \"600\", letterSpacing: \"0\" },\n h3: { size: \"1.563rem\", lineHeight: \"1.2\", weight: \"500\", letterSpacing: \"0\" },\n h4: { size: \"1.25rem\", lineHeight: \"1.2\", weight: \"600\", letterSpacing: \"0\" },\n body: { size: \"1rem\", lineHeight: \"1.7\", weight: \"400\", letterSpacing: \"0\" },\n lead: { size: \"1.25rem\", lineHeight: \"1.7\", weight: \"400\", letterSpacing: \"0\" },\n small: { size: \"0.95rem\", lineHeight: \"1.5\", weight: \"400\", letterSpacing: \"0\" },\n caption: { size: \"0.833rem\", lineHeight: \"1.5\", weight: \"400\", letterSpacing: \"0.04em\" },\n },\n space: {\n s0: \"0\",\n s1: \"0.25rem\", // 4\n s2: \"0.5rem\", // 8\n s3: \"0.75rem\", // 12\n s4: \"1rem\", // 16\n s5: \"1.5rem\", // 24\n s6: \"2rem\", // 32\n s7: \"3rem\", // 48\n s8: \"4rem\", // 64\n s9: \"6rem\", // 96\n },\n radius: { none: \"0px\", sm: \"3px\", md: \"5px\", lg: \"8px\", base: \"4px\", full: \"999px\" },\n border: { hair: \"1px\", rule: \"1.5px\", heavy: \"2px\" },\n // Tracking de mayúsculas: escala coherente alineada al uso real (eyebrow = widest).\n tracking: { tight: \"-0.01em\", normal: \"0\", wide: \"0.04em\", wider: \"0.1em\", widest: \"0.14em\" },\n weight: { light: \"300\", regular: \"400\", medium: \"500\", semibold: \"600\", bold: \"700\" },\n dur: { fast: \"120ms\", base: \"200ms\", slow: \"360ms\" },\n ease: { ink: \"cubic-bezier(0.2, 0, 0, 1)\" },\n shadow: {\n sm: \"0 1px 0 rgba(20,17,14,0.06)\",\n md: \"0 2px 10px -4px rgba(20,17,14,0.22)\",\n lg: \"0 12px 32px -10px rgba(20,17,14,0.34)\",\n },\n} as const;\n\n/**\n * Grupos de tokens \"portables\": valores que se trasladan a cualquier plataforma\n * (number/dp en React Native). Excluye los formato-específicos de web —`font`\n * (font-family CSS), `shadow` (box-shadow CSS), `ease` (cubic-bezier) y `tracking`\n * (em)— que no portan tal cual a RN. `nativeTokens` (paquete native) DEBE cubrir\n * todos estos grupos; lo verifica un parity test.\n */\nexport const portableTokenGroups = [\n \"space\",\n \"radius\",\n \"border\",\n \"text\",\n \"weight\",\n \"dur\",\n] as const satisfies readonly (keyof typeof tokens)[];\n\nexport type PortableTokenGroup = (typeof portableTokenGroups)[number];\nexport type PortableTokens = Pick<typeof tokens, PortableTokenGroup>;\n","import type { SchemaPalette } from \"../theme-types\";\nimport { tokens } from \"../tokens\";\n\n// Paleta terminal-dark de DocsLingo (cursos interactivos estilo Duolingo sobre documentación).\n// `dark` ES la identidad original del reproductor (slate azulado + mint de marca); los otros\n// tres modos la trasladan a papel frío (light), papel cálido (sepia) y AA reforzado (contrast).\n// `accent` = mint de marca · `info` = cyan · `warn` = gold · `danger` = red del quiz.\nexport const docslingoSchema = {\n light: {\n ...tokens,\n color: {\n bg: { page: \"#F4F7FA\", surface: \"#FFFFFF\", sunken: \"#E7EDF3\", inset: \"#DEE6EE\" },\n fg: { strong: \"#101825\", muted: \"#3D4B5C\", subtle: \"#5A6A80\", onAccent: \"#FFFFFF\" },\n border: {\n subtle: \"rgba(16, 24, 37, 0.14)\",\n default: \"rgba(16, 24, 37, 0.28)\",\n strong: \"rgba(16, 24, 37, 0.85)\",\n },\n accent: {\n base: \"#0E7A55\",\n hover: \"#0B6244\",\n soft: \"rgba(14, 122, 85, 0.12)\",\n text: \"#0E7A55\",\n },\n danger: {\n base: \"#C23F3F\",\n hover: \"#A83434\",\n soft: \"rgba(194, 63, 63, 0.12)\",\n text: \"#C23F3F\",\n },\n status: { ok: \"#0E7A55\", warn: \"#7A5C10\", info: \"#0E6E9E\" },\n focus: \"#0E6E9E\",\n scrim: \"rgba(16, 24, 37, 0.5)\",\n },\n },\n dark: {\n ...tokens,\n color: {\n bg: { page: \"#0B1017\", surface: \"#121A24\", sunken: \"#1A2432\", inset: \"#0A0E14\" },\n fg: { strong: \"#E6EDF5\", muted: \"#8FA3B8\", subtle: \"#7C8FA5\", onAccent: \"#0B1017\" },\n border: { subtle: \"#243244\", default: \"#33465E\", strong: \"#8FA3B8\" },\n accent: {\n base: \"#45D9A1\",\n hover: \"#63E2B2\",\n soft: \"rgba(69, 217, 161, 0.12)\",\n text: \"#45D9A1\",\n },\n danger: {\n base: \"#F06A6A\",\n hover: \"#F58585\",\n soft: \"rgba(240, 106, 106, 0.12)\",\n text: \"#F06A6A\",\n },\n status: { ok: \"#45D9A1\", warn: \"#F7C948\", info: \"#56C8F5\" },\n focus: \"#56C8F5\",\n scrim: \"rgba(0, 0, 0, 0.55)\",\n },\n },\n sepia: {\n ...tokens,\n color: {\n bg: { page: \"#ECE4CE\", surface: \"#F5EEDC\", sunken: \"#DFD3B4\", inset: \"#D6C8A4\" },\n fg: { strong: \"#262114\", muted: \"#55482F\", subtle: \"#6B5E41\", onAccent: \"#F5EEDC\" },\n border: {\n subtle: \"rgba(38, 33, 20, 0.16)\",\n default: \"rgba(38, 33, 20, 0.32)\",\n strong: \"rgba(38, 33, 20, 0.82)\",\n },\n accent: {\n base: \"#4C5F2A\",\n hover: \"#3B4A1F\",\n soft: \"rgba(76, 95, 42, 0.12)\",\n text: \"#4C5F2A\",\n },\n danger: {\n base: \"#8A3B26\",\n hover: \"#70301F\",\n soft: \"rgba(138, 59, 38, 0.12)\",\n text: \"#8A3B26\",\n },\n status: { ok: \"#4C5F2A\", warn: \"#6E5413\", info: \"#3A505C\" },\n focus: \"#4C5F2A\",\n scrim: \"rgba(38, 33, 20, 0.55)\",\n },\n },\n contrast: {\n ...tokens,\n color: {\n bg: { page: \"#FFFFFF\", surface: \"#FFFFFF\", sunken: \"#F2F2F2\", inset: \"#EAEAEA\" },\n fg: { strong: \"#000000\", muted: \"#000000\", subtle: \"#2B2B2B\", onAccent: \"#FFFFFF\" },\n border: { subtle: \"#000000\", default: \"#000000\", strong: \"#000000\" },\n accent: {\n base: \"#0B4F38\",\n hover: \"#063D2B\",\n soft: \"rgba(11, 79, 56, 0.10)\",\n text: \"#0B4F38\",\n },\n danger: {\n base: \"#8B0000\",\n hover: \"#6B0000\",\n soft: \"rgba(139, 0, 0, 0.10)\",\n text: \"#8B0000\",\n },\n status: { ok: \"#0B4F38\", warn: \"#000000\", info: \"#000000\" },\n focus: \"#000000\",\n scrim: \"rgba(0, 0, 0, 0.7)\",\n },\n },\n} satisfies SchemaPalette;\n","import type { SchemaPalette } from \"../theme-types\";\nimport { tokens } from \"../tokens\";\n\n// Un schema = una paleta con sus modos. Tinta comparte `tokens`; cada modo cambia `color`.\n// `bg-*` = papel · `fg-*` = tinta · `accent` = oxblood (cuentagotas).\n// `satisfies SchemaPalette` exige los 4 modos y exactamente las claves de ColorTokens en cada uno.\nexport const tintaSchema = {\n light: {\n ...tokens,\n color: {\n bg: { page: \"#F8F7F4\", surface: \"#FFFFFF\", sunken: \"#EDEBE6\", inset: \"#E4E1DA\" },\n fg: { strong: \"#15130F\", muted: \"#494640\", subtle: \"#737069\", onAccent: \"#F8F7F4\" },\n border: {\n subtle: \"rgba(21, 19, 15, 0.12)\",\n default: \"rgba(21, 19, 15, 0.26)\",\n strong: \"rgba(21, 19, 15, 0.85)\",\n },\n accent: {\n base: \"#7B1E1E\",\n hover: \"#631616\",\n soft: \"rgba(123, 30, 30, 0.10)\",\n text: \"#7B1E1E\",\n },\n danger: {\n base: \"#7B1E1E\",\n hover: \"#631616\",\n soft: \"rgba(123, 30, 30, 0.10)\",\n text: \"#7B1E1E\",\n },\n status: { ok: \"#3E5C3A\", warn: \"#8A6A1E\", info: \"#2E4257\" },\n focus: \"#7B1E1E\",\n scrim: \"rgba(20, 17, 14, 0.55)\",\n },\n },\n dark: {\n ...tokens,\n color: {\n bg: { page: \"#100E0B\", surface: \"#1A1611\", sunken: \"#070605\", inset: \"#221D16\" },\n fg: { strong: \"#F2EDE2\", muted: \"#B7AF9F\", subtle: \"#878070\", onAccent: \"#F2EDE2\" },\n border: {\n subtle: \"rgba(242, 237, 226, 0.13)\",\n default: \"rgba(242, 237, 226, 0.26)\",\n strong: \"rgba(242, 237, 226, 0.80)\",\n },\n accent: {\n base: \"#B23A3A\",\n hover: \"#9E3333\",\n soft: \"rgba(178, 58, 58, 0.16)\",\n text: \"#CF6363\",\n },\n danger: {\n base: \"#A83838\",\n hover: \"#943030\",\n soft: \"rgba(194, 74, 74, 0.16)\",\n text: \"#D46B6B\",\n },\n status: { ok: \"#7FA178\", warn: \"#C7A04E\", info: \"#6E92B4\" },\n focus: \"#CC4A4A\",\n scrim: \"rgba(7, 6, 5, 0.65)\",\n },\n },\n sepia: {\n ...tokens,\n color: {\n bg: { page: \"#E9DDC4\", surface: \"#F2E9D5\", sunken: \"#DCCDAC\", inset: \"#D2C09B\" },\n fg: { strong: \"#2A2013\", muted: \"#5A4A33\", subtle: \"#6E6046\", onAccent: \"#F2E9D5\" },\n border: {\n subtle: \"rgba(42, 32, 19, 0.16)\",\n default: \"rgba(42, 32, 19, 0.32)\",\n strong: \"rgba(42, 32, 19, 0.82)\",\n },\n accent: {\n base: \"#7A2E12\",\n hover: \"#5F2109\",\n soft: \"rgba(122, 46, 18, 0.12)\",\n text: \"#7A2E12\",\n },\n danger: {\n base: \"#7A2E12\",\n hover: \"#5F2109\",\n soft: \"rgba(122, 46, 18, 0.12)\",\n text: \"#7A2E12\",\n },\n status: { ok: \"#4A5A2E\", warn: \"#6E5413\", info: \"#3C4E57\" },\n focus: \"#7A2E12\",\n scrim: \"rgba(42, 32, 19, 0.55)\",\n },\n },\n contrast: {\n ...tokens,\n color: {\n bg: { page: \"#FFFFFF\", surface: \"#FFFFFF\", sunken: \"#F2F2F2\", inset: \"#EAEAEA\" },\n fg: { strong: \"#000000\", muted: \"#000000\", subtle: \"#2B2B2B\", onAccent: \"#FFFFFF\" },\n border: { subtle: \"#000000\", default: \"#000000\", strong: \"#000000\" },\n accent: {\n base: \"#000000\",\n hover: \"#2B2B2B\",\n soft: \"rgba(0, 0, 0, 0.08)\",\n text: \"#000000\",\n },\n danger: {\n base: \"#8B0000\",\n hover: \"#6B0000\",\n soft: \"rgba(139, 0, 0, 0.10)\",\n text: \"#8B0000\",\n },\n status: { ok: \"#000000\", warn: \"#000000\", info: \"#000000\" },\n focus: \"#000000\",\n scrim: \"rgba(0, 0, 0, 0.7)\",\n },\n },\n} satisfies SchemaPalette;\n","import type { SchemaPalette } from \"../theme-types\";\nimport { docslingoSchema } from \"./docslingo\";\nimport { tintaSchema } from \"./tinta\";\n\n// El registro de schemas (paletas). Agregar un schema = agregar una entrada acá.\n// `satisfies Record<string, SchemaPalette>` exige que toda entrada nueva traiga los 4 modos\n// con la forma de paleta completa (no se puede registrar un schema con modos/claves faltantes).\nexport const schemas = {\n tinta: tintaSchema,\n docslingo: docslingoSchema,\n} as const satisfies Record<string, SchemaPalette>;\n\nexport type SchemaName = keyof typeof schemas;\n\n// Derivados de la fuente de verdad (`schemas`) en vez de listas a mano que pueden quedar stale.\nexport const schemaNames = Object.keys(schemas) as SchemaName[];\n\n/** Type guard: ¿`x` es un SchemaName registrado? Deriva de `schemas` (no re-lista). */\nexport function isSchemaName(x: unknown): x is SchemaName {\n return typeof x === \"string\" && Object.hasOwn(schemas, x);\n}\n","import type { tokens } from \"./tokens\";\n\n// Contrato de color = fuente de verdad nominal de la forma de una paleta. Agregar/quitar/renombrar\n// una clave acá obliga a actualizarla en TODAS las paletas (cada schema lleva `satisfies SchemaPalette`),\n// y el contract de vanilla-extract (web) se deriva de este mismo set de claves.\nexport interface ColorTokens {\n bg: { page: string; surface: string; sunken: string; inset: string };\n /** `strong`/`muted` cumplen AA (≥4.5) sobre los 4 fondos. **`subtle` solo cumple AA sobre\n * `bg.page`/`bg.surface`**: sobre los hundidos (`bg.sunken`/`bg.inset`) queda en ~3–4.4, así\n * que ahí es válido únicamente para uso incidental (estados `:disabled`, que WCAG 1.4.3\n * exime). Para texto ACTIVO sobre fondos hundidos usá `muted`. Lo fija `contrast.test.ts`. */\n fg: { strong: string; muted: string; subtle: string; onAccent: string };\n border: { subtle: string; default: string; strong: string };\n /** `base` = relleno · `hover` = relleno activo · `soft` = tinte · `text` = accent como TEXTO\n * sobre el fondo (outline/ghost, links); en dark `text` es más claro que `base` (AA ≥ 4.5). */\n accent: { base: string; hover: string; soft: string; text: string };\n /** Igual estructura que `accent`; `text` es danger como TEXTO sobre el fondo (AA ≥ 4.5). */\n danger: { base: string; hover: string; soft: string; text: string };\n status: { ok: string; warn: string; info: string };\n focus: string;\n scrim: string;\n}\n\nexport type Mode = \"light\" | \"dark\" | \"sepia\" | \"contrast\";\n/** El usuario puede fijar un modo concreto o \"system\" (seguir las preferencias del SO). */\nexport type ModePreference = Mode | \"system\";\n\n// Forma de una paleta completa: los tokens estáticos compartidos + el color por cada modo.\n// Cada schema (p.ej. tinta) la cumple con `satisfies SchemaPalette`, lo que fuerza los 4 modos\n// y exactamente las claves de ColorTokens (ni de más ni de menos) en tiempo de compilación.\nexport type SchemaPalette = Record<Mode, typeof tokens & { color: ColorTokens }>;\n\n// Orden canónico de modos (lo usa cycleMode). `as const satisfies` valida que cada valor sea un\n// Mode válido y preserva la tupla literal para indexar.\nexport const modeNames = [\"light\", \"dark\", \"sepia\", \"contrast\"] as const satisfies readonly Mode[];\n\n/** Type guard: ¿`x` es un Mode válido? Deriva de `modeNames` (no re-lista). */\nexport function isMode(x: unknown): x is Mode {\n return typeof x === \"string\" && (modeNames as readonly string[]).includes(x);\n}\n\n/** Type guard: ¿`x` es una ModePreference válida (un Mode o \"system\")? */\nexport function isModePreference(x: unknown): x is ModePreference {\n return x === \"system\" || isMode(x);\n}\n","// Deriva la forma de una paleta real en vez de mantener listas de nombres a mano.\n// Una \"hoja\" es un valor string (un color); todo lo demás es un grupo anidado.\n\ntype Leaves<T, L> = { [K in keyof T]: T[K] extends string ? L : Leaves<T[K], L> };\n\n/** Clona la forma anidada de `obj` reemplazando cada hoja string por `null`. Alimenta\n * `createThemeContract` (web) desde la forma real, sin re-listar claves. */\nexport function deepNullLeaves<T extends Record<string, unknown>>(obj: T): Leaves<T, null> {\n const out = {} as Leaves<T, null>;\n for (const key of Object.keys(obj) as (keyof T)[]) {\n const value = obj[key];\n (out as Record<keyof T, unknown>)[key] =\n value !== null && typeof value === \"object\"\n ? deepNullLeaves(value as Record<string, unknown>)\n : null;\n }\n return out;\n}\n\n/** Paths punteados de todas las hojas (`\"bg.page\"`, `\"focus\"`, …), en orden de recorrido. */\nexport function colorLeafPaths(obj: Record<string, unknown>, prefix = \"\"): string[] {\n const paths: string[] = [];\n for (const key of Object.keys(obj)) {\n const value = obj[key];\n const path = prefix ? `${prefix}.${key}` : key;\n if (value !== null && typeof value === \"object\") {\n paths.push(...colorLeafPaths(value as Record<string, unknown>, path));\n } else {\n paths.push(path);\n }\n }\n return paths;\n}\n\n/** Lee la hoja en `path` (punteado). Los tests iteran `colorLeafPaths` y leen con esto. */\nexport function leafAt(obj: Record<string, unknown>, path: string): string {\n return path\n .split(\".\")\n .reduce<unknown>((acc, key) => (acc as Record<string, unknown>)[key], obj) as string;\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { type SchemaName, schemas } from \"../schemas\";\nimport { type ColorTokens, type Mode, type ModePreference, modeNames } from \"../theme-types\";\nimport type { StorageAdapter, SystemModeAdapter } from \"./adapters\";\nimport { resolveMode } from \"./resolve-mode\";\nimport { sanitizePersisted } from \"./sanitize-persisted\";\n\nexport interface ThemeStoreOptions {\n defaultSchema?: SchemaName;\n defaultMode?: ModePreference;\n}\n\n/**\n * Núcleo platform-agnostic del tema: estado resuelto + acciones. Web y native\n * lo extienden con sus extras de plataforma (web: `themeClass`; native:\n * `colorTokens` + `tokens`). Una sola fuente para la forma común.\n */\nexport interface ThemeState {\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 setSchema: (schema: SchemaName) => void;\n setMode: (mode: ModePreference) => void;\n toggleMode: () => void;\n cycleMode: () => void;\n}\n\nexport interface ThemeStore extends ThemeState {\n /** Paleta de color resuelta del schema×modo activo. */\n colorTokens: ColorTokens;\n}\n\n/**\n * Theme store headless: estado schema/modo/preferencia + paleta resuelta.\n * `storage` y `system` deben ser referencias estables (memoizadas por quien lo usa).\n */\nexport function useThemeStore(\n options: ThemeStoreOptions,\n storage: StorageAdapter,\n system: SystemModeAdapter,\n): ThemeStore {\n const { defaultSchema = \"tinta\", defaultMode = \"light\" } = options;\n // Leemos el storage una sola vez al montar (no dos veces, uno por estado).\n const [persisted] = useState(() => sanitizePersisted(storage.read()));\n const [schema, setSchema] = useState<SchemaName>(persisted?.schema ?? defaultSchema);\n const [preference, setPreference] = useState<ModePreference>(\n persisted?.preference ?? defaultMode,\n );\n const [systemMode, setSystemMode] = useState<Mode>(() => system.get());\n // Con `hydrate()` async (native) arrancamos no-hidratados: suprimimos `write` hasta\n // aplicar lo persistido, para que el default no pise lo guardado. Sin `hydrate` (web),\n // `read()` ya fue autoritativo → hidratados desde el inicio.\n const [hydrated, setHydrated] = useState(() => !storage.hydrate);\n\n // Hidratación async (native): aplica lo persistido una vez y habilita la persistencia.\n useEffect(() => {\n if (!storage.hydrate) return;\n let active = true;\n void storage.hydrate().then((raw) => {\n if (!active) return;\n const clean = sanitizePersisted(raw);\n if (clean.schema) setSchema(clean.schema);\n if (clean.preference) setPreference(clean.preference);\n setHydrated(true);\n });\n return () => {\n active = false;\n };\n }, [storage]);\n\n // Mientras la preferencia sea \"system\", seguimos los cambios del SO en vivo.\n useEffect(() => {\n if (preference !== \"system\") return;\n const update = () => setSystemMode(system.get());\n update();\n return system.subscribe(update);\n }, [preference, system]);\n\n const mode = resolveMode(preference, systemMode);\n\n // Persistimos cada cambio, una vez hidratados (no antes: pisaríamos lo guardado).\n useEffect(() => {\n if (!hydrated) return;\n storage.write({ schema, preference });\n }, [schema, preference, storage, hydrated]);\n\n return useMemo<ThemeStore>(\n () => ({\n schema,\n mode,\n preference,\n // Guard defensivo: un schema/modo inesperado (default inválido del caller) cae a\n // tinta/light en vez de indexar `undefined` y crashear.\n colorTokens: schemas[schema]?.[mode]?.color ?? schemas.tinta.light.color,\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}\n","import type { Mode, ModePreference } from \"../theme-types\";\n\n// Precedencia de las preferencias del SO → modo, de mayor a menor prioridad. `contrast`\n// (accesibilidad, nunca debe perder) gana sobre `dark`; si ninguna media-query matchea, el\n// baseline es \"light\". Fuente ÚNICA que consumen el adapter web (get/subscribe) y el generador\n// de media-queries del tema (theme.css.ts), para que la precedencia no dependa del orden\n// accidental de declaración en tres lugares distintos.\nexport const SYSTEM_MODE_PRECEDENCE = [\n { query: \"(prefers-contrast: more)\", mode: \"contrast\" },\n { query: \"(prefers-color-scheme: dark)\", mode: \"dark\" },\n] as const satisfies readonly { query: string; mode: Mode }[];\n\nexport function resolveMode(preference: ModePreference, systemMode: Mode): Mode {\n return preference === \"system\" ? systemMode : preference;\n}\n","import { isSchemaName } from \"../schemas\";\nimport { isModePreference } from \"../theme-types\";\nimport type { PersistedTheme } from \"./adapters\";\n\n/**\n * Filtra un objeto persistido (de storage) a solo sus campos válidos contra el\n * registro ACTUAL de schemas/modos. Un `schema` removido/renombrado o una\n * `preference` desconocida (datos viejos en localStorage/AsyncStorage) se\n * descartan en vez de propagarse y romper la resolución de la paleta\n * (`schemas[schema][mode]` = undefined → crash).\n */\nexport function sanitizePersisted(\n raw: Partial<PersistedTheme> | null | undefined,\n): Partial<PersistedTheme> {\n if (!raw || typeof raw !== \"object\") return {};\n const clean: Partial<PersistedTheme> = {};\n if (isSchemaName(raw.schema)) clean.schema = raw.schema;\n if (isModePreference(raw.preference)) clean.preference = raw.preference;\n return clean;\n}\n","import {\n type ModePreference,\n type SchemaName,\n type ThemeState,\n useThemeStore,\n} from \"@octavius2929-personal/design-system-core\";\nimport { createContext, useContext, useEffect, useMemo } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Surface } from \"../../components/surface\";\nimport { createWebStorageAdapter, createWebSystemModeAdapter } from \"../adapters\";\nimport { themes } from \"../theme.css\";\n\nexport type { ModePreference };\n\ninterface ThemeContextValue extends ThemeState {\n themeClass: string;\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\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 * Si es true, el provider pinta el canvas de página en el tema activo: envuelve en\n * <Surface fill> y pinta el <body> (cubre overscroll). Default false: sin wrapper.\n */\n paintRoot?: boolean;\n}\n\nexport function ThemeProvider({\n children,\n defaultSchema = \"tinta\",\n defaultMode = \"light\",\n storageKey = \"ds-theme\",\n persist = true,\n paintRoot = false,\n}: ThemeProviderProps) {\n const storage = useMemo(\n () => createWebStorageAdapter(storageKey, persist),\n [storageKey, persist],\n );\n const system = useMemo(() => createWebSystemModeAdapter(), []);\n const store = useThemeStore({ defaultSchema, defaultMode }, storage, system);\n\n // Pinta el <body> con el color de página resuelto (cubre el overscroll). Reversible:\n // guarda el valor previo y lo restaura al desmontar o al apagar paintRoot.\n useEffect(() => {\n if (!paintRoot) return;\n const { style } = document.body;\n const prev = style.backgroundColor;\n style.backgroundColor = store.colorTokens.bg.page;\n return () => {\n style.backgroundColor = prev;\n };\n }, [paintRoot, store.colorTokens.bg.page]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n schema: store.schema,\n mode: store.mode,\n preference: store.preference,\n themeClass: themes[store.schema][store.mode],\n setSchema: store.setSchema,\n setMode: store.setMode,\n toggleMode: store.toggleMode,\n cycleMode: store.cycleMode,\n }),\n [store],\n );\n return (\n <ThemeContext.Provider value={value}>\n {paintRoot ? <Surface fill>{children}</Surface> : children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme(): ThemeContextValue {\n return useContext(ThemeContext) ?? DEFAULT_VALUE;\n}\n","import { SYSTEM_MODE_PRECEDENCE } from \"@octavius2929-personal/design-system-core\";\nimport type {\n Mode,\n PersistedTheme,\n StorageAdapter,\n SystemModeAdapter,\n} from \"@octavius2929-personal/design-system-core\";\n\nexport function createWebStorageAdapter(storageKey: string, persist: boolean): StorageAdapter {\n return {\n read() {\n if (!persist || typeof window === \"undefined\") return null;\n try {\n const raw = window.localStorage.getItem(storageKey);\n return raw ? (JSON.parse(raw) as Partial<PersistedTheme>) : null;\n } catch {\n return null;\n }\n },\n write(value) {\n if (!persist || typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(value));\n } catch {\n // localStorage puede no estar disponible (modo privado / SSR): degradamos en silencio.\n }\n },\n };\n}\n\nexport function createWebSystemModeAdapter(): SystemModeAdapter {\n function get(): Mode {\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") return \"light\";\n // La primera media-query que matchea gana (precedencia definida una sola vez en el core).\n for (const { query, mode } of SYSTEM_MODE_PRECEDENCE) {\n if (window.matchMedia(query).matches) return mode;\n }\n return \"light\";\n }\n return {\n get,\n subscribe(onChange) {\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") {\n return () => {};\n }\n const mqls = SYSTEM_MODE_PRECEDENCE.map((p) => window.matchMedia(p.query));\n for (const mql of mqls) mql.addEventListener?.(\"change\", onChange);\n return () => {\n for (const mql of mqls) mql.removeEventListener?.(\"change\", onChange);\n };\n },\n };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/surface/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfc3VyZmFjZV9fNnZ3YTl5MCB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctcGFnZV9fZTNncnVyMjgpOwogIGNvbG9yOiB2YXIoLS1mZy1zdHJvbmdfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc19maWxsX182dndhOXkxIHsKICBtaW4taGVpZ2h0OiAxMDBkdmg7Cn0';\nexport var fill = 'use-styles_fill__6vwa9y1';\nexport var surface = 'use-styles_surface__6vwa9y0';","import { type ElementType, type Ref, forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\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).\n// La ref apunta al elemento renderizado (dinámico vía `as`/variant), de ahí `HTMLElement`.\n// `forwardRef` no preserva el genérico `E`, así que casteamos el resultado para conservarlo.\nfunction TypographyInner<E extends ElementType = \"span\">(\n { variant, as, color, align, testId, ...rest }: TypographyProps<E>,\n ref: Ref<HTMLElement>,\n) {\n const Component = (as ?? defaultElement[variant]) as ElementType;\n const { text } = useStyles({ variant, color, align });\n const { testId: dataTestId } = useTestId(\"text\", testId);\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 ref={ref} data-testid={dataTestId} {...rest} className={text} />;\n}\n\n// `forwardRef` no acepta una render function genérica; casteamos en ambos extremos para\n// preservar el genérico `E` de cara al consumidor sin perder el tipado interno.\nconst TypographyForwarded = forwardRef(\n TypographyInner as (\n props: TypographyProps,\n ref: Ref<HTMLElement>,\n ) => ReturnType<typeof TypographyInner>,\n);\nTypographyForwarded.displayName = \"Typography\";\nexport const Typography = TypographyForwarded as <E extends ElementType = \"span\">(\n props: TypographyProps<E> & { ref?: Ref<HTMLElement> },\n) => ReturnType<typeof TypographyInner>;\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 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/typography.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7XWwZKiMBAG4LtPwXE9YBHAcXReYO_7AFQgLaQMCRPCKrO1775FMLjBTMaawiOk_w79FUo2qm9EKXFT9ZmCi8qgh1yKc5ahc80--ij4swqCo-AqPOKasv4Q_MbyRxjqW7XgIssgKWUn4_WbqWzpB5i6oWl4baoXTH2q6xnlEFZAy0o5E8P6T71sctvbPufPc2cr8zLuBUqBDNsGF5SX7u10ya-xwqR3Oq3rlMS8PQpZH4KuaUAWuIVhsRBMyImmDNsuV2waNYb12-rvajO3JrRtGO6NNfJaT8Vjz8jDfS21uF-93CZxz733cpuczY2_4p62c3Hn_03Wc1VBS9tDwAV3Syspbtm40OEay5LyQxA52StkxOOlxCtkYRde7Ao5nInXuUIzYviKeNjEpXt8um5sdJPFdGNLt_Trxg7dyq8bz3Tp05ESg5QuhpRYSCc_UuJAYn6kZIZUPx0pNUhbL5IuvjZGPqHUEhJ-odQh1PiF0pnQ-3ohiVyQ6SvxsojF0NHSaL0auvzeQ3k9dMgW6R4VcSAwwMQg7BZBGDpaCGcvgi6_R7h4EXTIRuidCHWngEwGxG3Q1pgxg_C6CIJuaSmgyMswBu4dEPJCjDFbAsXfpyhwo6jgBmO_yEH12tTm8J9UTcQBsv3qIz1lXV9qtHP_WB46WhaCgKHB36eJNnuoh3s5Lk6lFB0nJpwPj8JPwKfweOxrMCF6zmiDoA6iTXrtICSBaZDxKqwwldO8Yh20glFil8zmLd3z5gwXp5HRjJ17x9YB0zX57M0dr0IJZcfw7UkvD_-N_QP0ZpdSYA0AAA';\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/typography/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfYmFzZV9fZDc0amY2MCB7CiAgbWFyZ2luOiAwOwp9Ci51c2Utc3R5bGVzX2NvbG9yX3N0cm9uZ19fZDc0amY2MSB7CiAgY29sb3I6IHZhcigtLWZnLXN0cm9uZ19fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2NvbG9yX211dGVkX19kNzRqZjYyIHsKICBjb2xvcjogdmFyKC0tZmctbXV0ZWRfX2UzZ3J1cjJkKTsKfQoudXNlLXN0eWxlc19jb2xvcl9zdWJ0bGVfX2Q3NGpmNjMgewogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKfQoudXNlLXN0eWxlc19jb2xvcl9hY2NlbnRfX2Q3NGpmNjQgewogIGNvbG9yOiB2YXIoLS1hY2NlbnQtdGV4dF9fZTNncnVyMm0pOwp9Ci51c2Utc3R5bGVzX2NvbG9yX2Rhbmdlcl9fZDc0amY2NSB7CiAgY29sb3I6IHZhcigtLWRhbmdlci10ZXh0X19lM2dydXIycSk7Cn0KLnVzZS1zdHlsZXNfY29sb3Jfb2tfX2Q3NGpmNjYgewogIGNvbG9yOiB2YXIoLS1zdGF0dXMtb2tfX2UzZ3J1cjJyKTsKfQoudXNlLXN0eWxlc19jb2xvcl93YXJuX19kNzRqZjY3IHsKICBjb2xvcjogdmFyKC0tc3RhdHVzLXdhcm5fX2UzZ3J1cjJzKTsKfQoudXNlLXN0eWxlc19jb2xvcl9pbmZvX19kNzRqZjY4IHsKICBjb2xvcjogdmFyKC0tc3RhdHVzLWluZm9fX2UzZ3J1cjJ0KTsKfQoudXNlLXN0eWxlc19hbGlnbl9sZWZ0X19kNzRqZjY5IHsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci51c2Utc3R5bGVzX2FsaWduX2NlbnRlcl9fZDc0amY2YSB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci51c2Utc3R5bGVzX2FsaWduX3JpZ2h0X19kNzRqZjZiIHsKICB0ZXh0LWFsaWduOiByaWdodDsKfQ';\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 = {strong:'use-styles_color_strong__d74jf61',muted:'use-styles_color_muted__d74jf62',subtle:'use-styles_color_subtle__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 MouseEventHandler, forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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.\n// `type=\"button\"` por defecto: nunca envía un <form> por accidente (se puede sobreescribir).\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant,\n tone,\n size = \"md\",\n startIcon: StartIcon,\n endIcon: EndIcon,\n full,\n className,\n type = \"button\",\n testId,\n loading,\n selected,\n children,\n onClick,\n ...rest\n },\n ref,\n) {\n const { container, content, spinner } = useStyles({\n variant,\n tone,\n size,\n full,\n className,\n selected,\n loading,\n });\n const { testId: dataTestId, slot } = useTestId(\"button\", testId);\n const iconSize = ICON_SIZE[size];\n\n // `loading` bloquea el click también por teclado: pointer-events:none (en el className de\n // `root`) ya lo evita con mouse, pero Enter/Space en un botón enfocado igual dispara `click`.\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (loading) return;\n onClick?.(event);\n };\n\n return (\n <button\n ref={ref}\n type={type}\n className={container}\n data-testid={dataTestId}\n data-state={states({ disabled: rest.disabled, loading, selected })}\n aria-busy={loading || undefined}\n aria-disabled={loading || undefined}\n aria-pressed={selected === undefined ? undefined : selected}\n onClick={handleClick}\n {...rest}\n >\n <span className={content}>\n {StartIcon && <StartIcon size={iconSize} />}\n {children}\n {EndIcon && <EndIcon size={iconSize} />}\n </span>\n {loading && <span className={spinner} aria-hidden=\"true\" data-testid={slot(\"spinner\")} />}\n </button>\n );\n});\n","// Arma el valor de `data-state`: los keys cuyo valor es truthy, separados por espacio\n// (estilo className). Devuelve undefined si no hay ninguno activo, así React omite el\n// atributo en vez de renderizar `data-state=\"\"`. Maestro matchea con [data-state~=\"x\"].\nexport function states(map: Record<string, boolean | undefined | null>): string | undefined {\n const active = Object.keys(map).filter((key) => map[key]);\n return active.length > 0 ? active.join(\" \") : undefined;\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 const Tone = `${tone.charAt(0).toUpperCase()}${tone.slice(1)}`;\n return `${variant}${Tone}` as ToneKey;\n}\n\nexport function useStyles({\n variant = \"filled\",\n tone = \"ink\",\n size = \"md\",\n full,\n className,\n selected,\n loading,\n}: {\n [K in \"variant\" | \"tone\" | \"size\" | \"full\" | \"className\" | \"selected\" | \"loading\"]?:\n | ButtonProps[K]\n | undefined;\n}): {\n container: string;\n content: string;\n spinner: string;\n} {\n const { themeClass } = useTheme();\n const container = useMemo(\n () =>\n [\n themeClass,\n styles.root,\n styles.size[size],\n // `selected` pisa el tono en vez de combinarse con él (ver comentario en use-styles.css.ts).\n selected ? styles.selected : styles.tone[toneKey(variant, tone)],\n full && styles.full,\n loading && styles.loadingRoot,\n className,\n ]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, variant, tone, size, full, loading, selected, className],\n );\n return {\n container,\n content: loading ? styles.contentHidden : styles.content,\n spinner: styles.spinner,\n };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/button/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA71YyXLjNhC9-ytwSZV1gEuL7Xg4l0xNDsk1t5xUINGkYIEAB4tkJeV_TwEEIa5aPFZOEomHfo-vG00Cv23hkCtSgkZWA9bmwEGvdcXEer2oUsM4Z-jfO4Tmv_gfhIwiQudSlQlS0hAD9_PZ1zuE3u8QWsxPwFbPcwpFwL7fPbT4lJQm8s19hEpqZpgUCVLAiWE7cBMp0xUnhwQxwZkAnHN4c_cJZ4XAzECpE5SBMKDc7VerDcsPOJPCgDDtoYJUCdoRdY-xrkgGWC_Xa1gVyqoF8SJzKQzOScn4oUH6W6UUsoEuPZKDMaB8HCaKBmwUybZMFHjPKKgY3PopBt4MbnlkqwpURrR_ylQqCgorQpnVTbj6CqdEQ4xVzlrwPaNm06CbEJYf0VUb7Z1PkJacUXc7s0pLlaBKssai_YYZqN1JkJB7RSov3akOuSGcB0JqFc6JNtGZxSyMANGAmdjGkcfZ15P5T0jm8p0Iae4TyjRJOdCZr4qWY_4vJwb-vp8_PFVv54LmMrMa75hmKQcfTFrjiihBy-qtNiKmObM6yq0TFsBY5rkG4-ecIWyUe66UZNtCSStoUF4RBcJ45yV3xgfqAmubmmPWltDOWgfbZLKLr1dYk04hDSacyz3QvlwuCWWi-KuteuHFNpP3hHmFoSYw7EAY7YIK6EfT7B9Y6zJGWtarmFDaWhIjK6078hhHsuMadKETtFgMHfekJY2kqxOkqxg67ZE-xRE6IB1JsyflRSR9_BDpcxyBAelqSJpbziPjk2eMvbBpgqEBuCbcn26kgHXOOAf6p1uJIdDzoDaPVWiUFEWsqjod3fIrcEWKY-G9TBbqeLjLFCYbuQM11gtGZZfWAI009JSkIXRS0bfMvTiiqF8n-ImHdVr08nVoXF5gKZqQAZZPKp0KerHYaxwMZH5GZNue0zaEj4gLDbSd3JerW-NYUf5UxY2pusaw1PVrsQURichJol5yvlzlQLDbfTtEuvIzCmdC3AcqR8v8qI2PsxUbqU3bcXJtHZxf5Z0AF2m4SdY9Tc_W9CY5v-iB-0pu8sx1F_qdiMI1hUCVTUSlHtYtUvGzLXMq6MVir_ElkHV7oDynbQifXpY9ddd9UAa-Tv38-AznJsR9wLpOz6hOLKQeF9zEiIsWUl_J5z-1Bg6Z73KBI7-y8f4P746hxs9_Y4Ste6Qout--l50DnNvsj1L-wSiF4zHI5hbECEl3aGAOCZoP3K2YEK0ie-2di5BUS26NPzFgwm9K5-5_SVTB3Lg1sr0tgNJdbYAVGxMv6-T3dpQbILtD1PljFjbHmVVuVXx3hdIqHCOr0bVz-hyj3tAEirrjE8FK4p4NC1JCMn0g1QVTq0jtyPzhRXfHDCvdCUxuRVZDXNKI6oKYgToCzqR1p0RM5Eww5-z7f2WV8MAgEwAA';\nexport var content = 'use-styles_content__1pbtillg';\nexport var contentHidden = 'use-styles_contentHidden__1pbtillh';\nexport var full = 'use-styles_full__1pbtill5';\nexport var loadingRoot = 'use-styles_loadingRoot__1pbtill1';\nexport var root = 'use-styles_root__1pbtill0';\nexport var selected = 'use-styles_selected__1pbtillf';\nexport var size = {sm:'use-styles_size_sm__1pbtill2',md:'use-styles_size_md__1pbtill3',lg:'use-styles_size_lg__1pbtill4'};\nexport var spinner = 'use-styles_spinner__1pbtillj';\nexport var tone = {filledInk:'use-styles_tone_filledInk__1pbtill6',filledAccent:'use-styles_tone_filledAccent__1pbtill7',outlineInk:'use-styles_tone_outlineInk__1pbtill8',outlineAccent:'use-styles_tone_outlineAccent__1pbtill9',ghostInk:'use-styles_tone_ghostInk__1pbtilla',ghostAccent:'use-styles_tone_ghostAccent__1pbtillb',filledDanger:'use-styles_tone_filledDanger__1pbtillc',outlineDanger:'use-styles_tone_outlineDanger__1pbtilld',ghostDanger:'use-styles_tone_ghostDanger__1pbtille'};","import { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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 const Divider = forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { vertical, label, testId, ...rest },\n ref,\n) {\n const hasLabel = label != null;\n const { root, line, label: labelClass } = useStyles({ vertical, hasLabel });\n const { testId: dataTestId, slot } = useTestId(\"layout\", testId);\n\n if (hasLabel) {\n return (\n <div ref={ref} role=\"separator\" className={root} data-testid={dataTestId} {...rest}>\n <span className={line} />\n <span className={labelClass} data-testid={slot(\"label\")}>\n {label}\n </span>\n <span className={line} />\n </div>\n );\n }\n\n return <div ref={ref} role=\"separator\" className={root} data-testid={dataTestId} {...rest} />;\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/divider/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMW43djd5ajAgewogIGJvcmRlcjogbm9uZTsKfQoudXNlLXN0eWxlc19ob3Jpem9udGFsX18xbjd2N3lqMSB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxcHg7CiAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyLXN1YnRsZV9fZTNncnVyMmcpOwp9Ci51c2Utc3R5bGVzX3ZlcnRpY2FsX18xbjd2N3lqMiB7CiAgd2lkdGg6IDFweDsKICBhbGlnbi1zZWxmOiBzdHJldGNoOwogIGhlaWdodDogMTAwJTsKICBtaW4taGVpZ2h0OiAxZW07CiAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyLXN1YnRsZV9fZTNncnVyMmcpOwp9Ci51c2Utc3R5bGVzX2xhYmVsbGVkX18xbjd2N3lqMyB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtczNfX2UzZ3J1cjFiKTsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoudXNlLXN0eWxlc19saW5lX18xbjd2N3lqNCB7CiAgZmxleDogMTsKICBoZWlnaHQ6IDFweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXItc3VidGxlX19lM2dydXIyZyk7Cn0KLnVzZS1zdHlsZXNfbGFiZWxfXzFuN3Y3eWo1IHsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IHZhcigtLXRleHQtZXllYnJvdy1zaXplX19lM2dydXI0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZXN0X19lM2dydXIxdik7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tZmctc3VidGxlX19lM2dydXIyZSk7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQ';\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 { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { AvatarProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// La ref apunta al <span> raíz.\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n { size, filled, className, children, testId, ...rest },\n ref,\n) {\n const { root } = useStyles({ size, filled, className });\n const { testId: dataTestId } = useTestId(\"media\", testId);\n return (\n <span ref={ref} className={root} data-testid={dataTestId} {...rest}>\n {children}\n </span>\n );\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/avatar/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMW1uMXJtdTAgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGxfX2UzZ3J1cjFuKTsKICBib3JkZXItd2lkdGg6IHZhcigtLWJvcmRlci1ydWxlX19lM2dydXIxcCk7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICBib3JkZXItY29sb3I6IHZhcigtLWZnLXN0cm9uZ19fZTNncnVyMmMpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWRpc3BsYXlfX2UzZ3J1cjApOwogIGZvbnQtd2VpZ2h0OiB2YXIoLS13ZWlnaHQtc2VtaWJvbGRfX2UzZ3J1cjF6KTsKICBsaW5lLWhlaWdodDogMTsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci51c2Utc3R5bGVzX3NpemVfc21fXzFtbjFybXUxIHsKICB3aWR0aDogMzJweDsKICBoZWlnaHQ6IDMycHg7CiAgZm9udC1zaXplOiAxNHB4Owp9Ci51c2Utc3R5bGVzX3NpemVfbWRfXzFtbjFybXUyIHsKICB3aWR0aDogNDBweDsKICBoZWlnaHQ6IDQwcHg7CiAgZm9udC1zaXplOiAxNnB4Owp9Ci51c2Utc3R5bGVzX3NpemVfbGdfXzFtbjFybXUzIHsKICB3aWR0aDogNTZweDsKICBoZWlnaHQ6IDU2cHg7CiAgZm9udC1zaXplOiAyMnB4Owp9Ci51c2Utc3R5bGVzX3ZhcmlhbnRfZGVmYXVsdF9fMW1uMXJtdTQgewogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGNvbG9yOiB2YXIoLS1mZy1zdHJvbmdfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc192YXJpYW50X2ZpbGxlZF9fMW1uMXJtdTUgewogIGJhY2tncm91bmQ6IHZhcigtLWZnLXN0cm9uZ19fZTNncnVyMmMpOwogIGNvbG9yOiB2YXIoLS1iZy1wYWdlX19lM2dydXIyOCk7Cn0';\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 { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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`.\n// La ref apunta al <span> raíz.\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { count, tone, className, children, testId, ...rest },\n ref,\n) {\n const { root, dot } = useStyles({ tone, className });\n const { testId: dataTestId, slot } = useTestId(\"media\", testId);\n return (\n <span ref={ref} className={root} data-testid={dataTestId} {...rest}>\n {children}\n {count != null && (\n <span className={dot} data-testid={slot(\"dot\")}>\n {count}\n </span>\n )}\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/badge/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMXdwZWk2cDAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKfQoudXNlLXN0eWxlc19kb3RfXzF3cGVpNnAxIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiBjYWxjKHZhcigtLXNwYWNlLXMzX19lM2dydXIxYikgKiAtMSk7CiAgcmlnaHQ6IGNhbGModmFyKC0tc3BhY2UtczNfX2UzZ3J1cjFiKSAqIC0xKTsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgbWluLXdpZHRoOiAxOHB4OwogIGhlaWdodDogMThweDsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1zMF9fZTNncnVyMTgpIHZhcigtLXNwYWNlLXMxX19lM2dydXIxOSk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbW9ub19fZTNncnVyMik7CiAgZm9udC1zaXplOiAxMXB4OwogIGZvbnQtd2VpZ2h0OiB2YXIoLS13ZWlnaHQtc2VtaWJvbGRfX2UzZ3J1cjF6KTsKICBsaW5lLWhlaWdodDogMTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZV9fZTNncnVyMXQpOwogIGNvbG9yOiB2YXIoLS1mZy1vbkFjY2VudF9fZTNncnVyMmYpOwogIGJvcmRlcjogdmFyKC0tYm9yZGVyLWhlYXZ5X19lM2dydXIxcSkgc29saWQgdmFyKC0tYmctcGFnZV9fZTNncnVyMjgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsX19lM2dydXIxbik7Cn0KLnVzZS1zdHlsZXNfdG9uZV9pbmtfXzF3cGVpNnAyIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1mZy1zdHJvbmdfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc190b25lX2FjY2VudF9fMXdwZWk2cDMgewogIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1iYXNlX19lM2dydXIyaik7Cn0';\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 Ref, forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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.\n// La ref es `HTMLElement` (honesto): `linear` renderiza un <div>, `circular` un <span>.\nexport const Progress = forwardRef<HTMLElement, ProgressProps>(function Progress(\n { variant = \"linear\", value, size = 20, className, testId, ...rest },\n ref,\n) {\n const { track, bar, spinner } = useStyles({ variant, value, className });\n const indeterminate = value === undefined;\n const { testId: dataTestId, slot } = useTestId(\"media\", testId);\n\n if (variant === \"circular\") {\n return (\n <span\n ref={ref as Ref<HTMLSpanElement>}\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 data-testid={dataTestId}\n data-state={states({ indeterminate })}\n {...rest}\n />\n );\n }\n\n return (\n <div\n ref={ref as Ref<HTMLDivElement>}\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 data-testid={dataTestId}\n data-state={states({ indeterminate })}\n {...rest}\n >\n <div\n className={bar}\n style={indeterminate ? undefined : { width: `${value}%` }}\n data-testid={slot(\"bar\")}\n />\n </div>\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/progress/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA62Ty26kMBBF93yFNyN1L9yiH8lEZJPPmB0qcAEVTJnxo5NW1P8-wgTSROlkImWFEbfqnqqLH1o8VRY6dCI4lM6fNLrc9cR53ham_31MxUsiRPorPoTwFthVxnaZsMaDx1W6vk-EOCdCbNNPZPvbVGH9qj0nDx8ba1I4OW-vOsejBo9_VnIw_YLgQn54U5-TzYWzt1C2k_Mu9miQ6sZn4tA_DxUFlG1tTWCViSPYlZRFLV3gFjnPcV_bYHcQe5sj2kqbp0w0pBRyrDZWoZUWFAU3NRjfZBW0nlpsObZ4IuWbLM5z_460ADtx7heco_gjUChLZC8LcDijPq6_jbXkIFbo0XbE4OfMDpHolX53E3mAqQNPhiVDh9n1vJdiFWw8ZGK72bnlN08dcS2rwOUoGcERHEridh7ysF7WkcexqSxNYJ8J4oqYPL4fbrgBjPOib-JYilyv4TRUaWKUhTZl-7bF-bcYd9ogHE_z_v6uhTOa1FKjsIKg_czbXIbiTS9Lo4394Rg_T-Ty6l8LJN3cfRXIsCCw_7_9fzLvbXKJBAAA';\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 MouseEvent, forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport { XIcon } from \"../icons/x\";\nimport type { ChipProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// El chip dimensiona por igual su icono inicial y el de borrado.\nconst ICON_SIZE = 13;\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.\n// La ref apunta al <span> raíz (el chip siempre renderiza un <span>).\nexport const Chip = forwardRef<HTMLSpanElement, ChipProps>(function Chip(\n { selected, tone, onDelete, onClick, startIcon: StartIcon, children, testId, ...rest },\n ref,\n) {\n const clickable = Boolean(onClick);\n const { root, deleteBtn } = useStyles({ selected, tone, clickable });\n const { testId: dataTestId, slot } = useTestId(\"media\", testId);\n\n const handleDelete = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n onDelete?.();\n };\n\n return (\n <span\n ref={ref}\n className={root}\n onClick={onClick}\n data-testid={dataTestId}\n data-state={states({ selected })}\n {...rest}\n >\n {StartIcon ? <StartIcon size={ICON_SIZE} /> : null}\n {children}\n {onDelete && (\n <button\n type=\"button\"\n className={deleteBtn}\n aria-label=\"Remove\"\n onClick={handleDelete}\n data-testid={slot(\"delete\")}\n >\n <XIcon size={ICON_SIZE} />\n </button>\n )}\n </span>\n );\n});\n","import type { IconProps } from \"../types\";\n\nexport function XIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/chip/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA4VUy67bIBDd5ytYNguurpNUap3d_RFrDGM8DQaLR-K0uv9eGdvEURJlyXA4j4HhI3rkPlw1-spZG6qqgIF0c_hk_zaMSfK9hmvJyGgyyBuNw3HDGGhShlPAzpdMoAnoxrKCvmRncD849z0I5H5XVbhXLroCtiOisSbwBjrS1wWZSp01doHubkhPf7FkRdEnVY0hoEvUZNRyPjgQJzKKX0iiy3oxsQQcwogwvrGuK1nse3QCPI6bPUi5IpotF5ni9_Z-Z5936kReWyfRcQeSol9YphWvwWOGd2v4hWRoF_Rca4Fuzu0ane6mZN5qkmP50lLAyVDJjL046FPOMSIFsqZkoPXMLqPjDfiQO1ssiRA8cjKnvHOYRYex56kps4HaDsfN9-Zj9VCCNVilw_NjKdJjEVZbl29V8S4GlFlArlPdQeeaxAaivnltt091QYzvLUvvHqUnBB-vPpN1L9Vn9Pq-dn8epD1qFCnOrLtPujWIk3I2GrnK7YOzRmUykaTvEyveg7rp_Xrp7jndvTehSZyg1pjNHaamROdHpt7SNKBvj5WtPaN7kaxW3EdzQpOtwIMViRoDfgWTOX_e_yNvPpAOnCLDHak2lIzvp7l_PqefeWDW7RuHwqTpXidYanNvybToKBzfN-lJoLKxInp-Jk-1xhTPxjB-jyXb9cM0qvlvE9Hnfk1f0gzmtmk8hnTmuPn-D0VE0pCJBQAA';\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 ChangeEvent, forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\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`.\n// La ref apunta al <input> real (foco programático / integración con forms).\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { checked = false, onChange, label, disabled = false, id, testId, ...rest },\n ref,\n) {\n const { root, input, box, check } = useStyles({ checked, disabled });\n const { testId: dataTestId } = useTestId(\"toggle\", testId);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n onChange?.(e.target.checked);\n };\n\n return (\n <label className={root} data-testid={dataTestId} data-state={states({ checked, disabled })}>\n <input\n ref={ref}\n type=\"checkbox\"\n className={input}\n id={id}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n {...rest}\n />\n <span className={box}>{checked && <CheckIcon size={12} className={check} />}</span>\n {label}\n </label>\n );\n});\n","import type { IconProps } from \"../types\";\n\nexport function CheckIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/checkbox/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fOXpvZ2E5MCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLXMyX19lM2dydXIxYSk7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXRleHRfX2UzZ3J1cjEpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbWFsbC1zaXplX19lM2dydXIxMCk7CiAgY29sb3I6IHZhcigtLWZnLXN0cm9uZ19fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2JveF9fOXpvZ2E5MSB7CiAgd2lkdGg6IDE4cHg7CiAgaGVpZ2h0OiAxOHB4OwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLXJ1bGVfX2UzZ3J1cjFwKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWJhc2VfX2UzZ3J1cjFtKTsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZmxleC1zaHJpbms6IDA7CiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLWR1ci1mYXN0X19lM2dydXIyMSkgdmFyKC0tZWFzZS1pbmtfX2UzZ3J1cjI0KTsKfQouc3VyZmFjZXNfc3JPbmx5X18xcWE3YXRuMDpmb2N1cy12aXNpYmxlICsgLnVzZS1zdHlsZXNfYm94X185em9nYTkxIHsKICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZm9jdXNfX2UzZ3J1cjJ1KTsKICBvdXRsaW5lLW9mZnNldDogMnB4Owp9Ci51c2Utc3R5bGVzX2JveENoZWNrZWRfXzl6b2dhOTIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnLXN0cm9uZ19fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2NoZWNrX185em9nYTkzIHsKICBjb2xvcjogdmFyKC0tYmctcGFnZV9fZTNncnVyMjgpOwp9Ci51c2Utc3R5bGVzX2Rpc2FibGVkX185em9nYTk0IHsKICBvcGFjaXR5OiAwLjU7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQ';\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__1qa7atn0';\nexport var root = 'use-styles_root__9zoga90';","import { forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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.\n// La ref apunta al <input> real (foco programático / integración con forms).\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n { checked, onChange, label, name, value, disabled, testId, ...rest },\n ref,\n) {\n const { root, input, circle, dot, label: labelClass } = useStyles({ disabled });\n const { testId: dataTestId } = useTestId(\"toggle\", testId);\n return (\n <label className={root} data-testid={dataTestId} data-state={states({ checked, disabled })}>\n <input\n ref={ref}\n className={input}\n type=\"radio\"\n name={name}\n value={value}\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n {...rest}\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 { 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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/radio/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA51Ty47bMAy85yt0bFBoEWeDPtwf6K2fYMgS5XCjlVyRysYt-u-FZMtJdg99HEUOhzMk9ZAIJPHkgLoYAnfdefrQ9Ied-LkRwiCNTk2tQO_Qg7QOLl82QiiHg5fI8Eyt0OAZYg4PamzFWcV3UtKoNEjadx08DjHFRm0zwgbP0qpndFNFlhDDhVdoQergQlwxgySOwQ8Vs9czKEXKqDHgrOHX5uHGkEFSvQNTTTXF1Bvm1LODlRnumH1gqZwLL2Bes2uMOtfN3Pv_GdhTIkY7SR08g-fb1AsaPrai-TQWgiPgcOTruw_RQJQLavayxGK6umnG7Q26CG8FBYfmJvxXo67kymCiCp5f0ibn1o5-XrSDi6RjRH9qxS5HOCpPyBh8e9d4oTIpSqtovYJ9s10yoAgk-tOaOWzLKihFqzRQR_Gbd1PXNd_VR8V-19qgE8kzEvYOxHvxp62FxHlbrdiPl3k6623qRGvfVJwtYBmsJeBS8-burv_osTRY1vT5fpfLs1f6NMSQvKljVTrfgewVXc_y6d-3cC_KqR5clXUossrXI_wBlSl_Q9kHM5VoJaPSupiu0l_Dc_JrydUizgJ-AwyrT0peBAAA';\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__1qa7atn0';\nexport var label = 'use-styles_label__vy61b44';\nexport var root = 'use-styles_root__vy61b40';","import { type KeyboardEvent, forwardRef, useId, useRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport { Radio } from \"../radio\";\nimport type { RadioGroupProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado: `value` + `onChange` (reporta el value elegido), agrupados nativamente por `name`.\n// Reusa `Radio` para cada opción en vez de duplicar su UI (input oculto + círculo + label).\n// Patrón WAI-ARIA \"radio group\": un solo radio tabbable (roving tabindex — el seleccionado, o\n// el primero habilitado si no hay selección); las flechas mueven Y seleccionan, con wrap;\n// Home/End van al primer/último habilitado. Las opciones deshabilitadas se saltean al navegar.\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(function RadioGroup(\n {\n options,\n value,\n onChange,\n name,\n label,\n disabled,\n orientation = \"vertical\",\n testId,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...rest\n },\n ref,\n) {\n const { root, label: labelClass, list } = useStyles({ disabled, orientation });\n const { testId: dataTestId } = useTestId(\"field\", testId);\n const baseId = useId();\n const labelId = `${baseId}-label`;\n // El nombre accesible del grupo vive en el propio role=\"radiogroup\" (no en un control\n // interno como en Select/Trigger): combina el label interno con el aria-labelledby externo.\n const groupLabelledBy =\n [label ? labelId : null, ariaLabelledBy].filter(Boolean).join(\" \") || undefined;\n const radioRefs = useRef<(HTMLInputElement | null)[]>([]);\n // Cada opción sigue siendo un `Radio` (tipo \"toggle\") por derecho propio, no un slot de\n // \"field\": conserva su propio testId compuesto. Se prefija con el testId del grupo (si lo\n // hay) para no colisionar con las opciones de otro RadioGroup sin instancia/provider propios\n // (misma limitación documentada para instancias repetidas del mismo tipo, ver testing/README).\n const optionTestId = (index: number) => [testId, `option-${index}`].filter(Boolean).join(\"-\");\n\n const selectedIndex = options.findIndex((option) => option.value === value);\n const isEnabled = (index: number) => !disabled && !options[index]?.disabled;\n const enabledIndexes = options.reduce<number[]>((acc, _option, index) => {\n if (isEnabled(index)) acc.push(index);\n return acc;\n }, []);\n const firstEnabled = enabledIndexes[0];\n const lastEnabled = enabledIndexes[enabledIndexes.length - 1];\n\n // Próximo índice habilitado a `delta` pasos de `from`, con wrap-around. Si no hay ninguno\n // habilitado, devuelve `from` (no-op).\n const step = (from: number, delta: number): number => {\n if (enabledIndexes.length === 0) return from;\n let index = from;\n for (let i = 0; i < options.length; i++) {\n index = (index + delta + options.length) % options.length;\n if (isEnabled(index)) return index;\n }\n return from;\n };\n\n const selectOption = (index: number) => {\n const option = options[index];\n // `step` puede devolver `from` sin cambios cuando no hay ningún índice habilitado (grupo\n // enteramente deshabilitado opción por opción): no reportar un value ahí.\n if (!option || !isEnabled(index)) return;\n onChange?.(option.value);\n radioRefs.current[index]?.focus();\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLInputElement>, index: number) => {\n if (disabled) return;\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowDown\":\n event.preventDefault();\n selectOption(step(index, 1));\n break;\n case \"ArrowLeft\":\n case \"ArrowUp\":\n event.preventDefault();\n selectOption(step(index, -1));\n break;\n case \"Home\":\n if (firstEnabled !== undefined) {\n event.preventDefault();\n selectOption(firstEnabled);\n }\n break;\n case \"End\":\n if (lastEnabled !== undefined) {\n event.preventDefault();\n selectOption(lastEnabled);\n }\n break;\n default:\n break;\n }\n };\n\n return (\n <div\n ref={ref}\n role=\"radiogroup\"\n className={root}\n aria-label={ariaLabel}\n aria-labelledby={groupLabelledBy}\n aria-disabled={disabled || undefined}\n data-testid={dataTestId}\n data-state={states({ disabled })}\n {...rest}\n >\n {label != null && (\n <span id={labelId} className={labelClass}>\n {label}\n </span>\n )}\n <div className={list}>\n {options.map((option, index) => {\n const checked = option.value === value;\n const optionDisabled = Boolean(disabled) || Boolean(option.disabled);\n // Roving tabindex: el seleccionado es tabbable; sin selección, el primero habilitado.\n const tabbable = checked || (selectedIndex === -1 && index === (firstEnabled ?? 0));\n return (\n <Radio\n key={option.value}\n ref={(el) => {\n radioRefs.current[index] = el;\n }}\n name={name}\n value={option.value}\n label={option.label}\n checked={checked}\n disabled={optionDisabled}\n tabIndex={tabbable ? 0 : -1}\n onChange={() => {\n // `Radio` no guarda esta guarda internamente (a diferencia de Checkbox/Switch);\n // la replicamos acá para que un click no reporte un value cuando está disabled.\n if (optionDisabled) return;\n onChange?.(option.value);\n }}\n onKeyDown={(event) => onKeyDown(event, index)}\n testId={optionTestId(index)}\n />\n );\n })}\n </div>\n </div>\n );\n});\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { RadioGroupProps } 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 orientation = \"vertical\",\n}: {\n disabled?: RadioGroupProps[\"disabled\"] | undefined;\n orientation?: RadioGroupProps[\"orientation\"] | undefined;\n}): {\n root: string;\n label: string;\n list: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(() => {\n const root = [themeClass, styles.root, disabled && styles.disabled].filter(Boolean).join(\" \");\n const list = [styles.list, orientation === \"horizontal\" && styles.listHorizontal]\n .filter(Boolean)\n .join(\" \");\n return { root, label: styles.label, list };\n }, [themeClass, disabled, orientation]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/radio-group/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fbmZnaHJpMCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IHZhcigtLXNwYWNlLXMyX19lM2dydXIxYSk7Cn0KLnVzZS1zdHlsZXNfbGFiZWxfX25mZ2hyaTEgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9fX2UzZ3J1cjIpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1jYXB0aW9uLXNpemVfX2UzZ3J1cjE0KTsKICBsaW5lLWhlaWdodDogdmFyKC0tdGV4dC1jYXB0aW9uLWxpbmVIZWlnaHRfX2UzZ3J1cjE1KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdGV4dC1jYXB0aW9uLWxldHRlclNwYWNpbmdfX2UzZ3J1cjE3KTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKfQoudXNlLXN0eWxlc19saXN0X19uZmdocmkyIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZ2FwOiB2YXIoLS1zcGFjZS1zM19fZTNncnVyMWIpOwp9Ci51c2Utc3R5bGVzX2xpc3RIb3Jpem9udGFsX19uZmdocmkzIHsKICBmbGV4LWRpcmVjdGlvbjogcm93OwogIGZsZXgtd3JhcDogd3JhcDsKICBjb2x1bW4tZ2FwOiB2YXIoLS1zcGFjZS1zNV9fZTNncnVyMWQpOwogIHJvdy1nYXA6IHZhcigtLXNwYWNlLXMzX19lM2dydXIxYik7Cn0KLnVzZS1zdHlsZXNfZGlzYWJsZWRfX25mZ2hyaTQgewogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKfQ';\nexport var disabled = 'use-styles_disabled__nfghri4';\nexport var label = 'use-styles_label__nfghri1';\nexport var list = 'use-styles_list__nfghri2';\nexport var listHorizontal = 'use-styles_listHorizontal__nfghri3';\nexport var root = 'use-styles_root__nfghri0';","import { forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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.\n// La ref apunta al <input> real (foco programático / integración con forms).\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { checked = false, onChange, label, disabled, testId, ...rest },\n ref,\n) {\n const { root, input, track, knob, label: labelClass } = useStyles({ checked });\n const { testId: dataTestId } = useTestId(\"toggle\", testId);\n return (\n <label className={root} data-testid={dataTestId} data-state={states({ checked, disabled })}>\n <input\n ref={ref}\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 {...rest}\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 { 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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/switch/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6VUQW7bMBC8-xU8xihoWLLTFOyxl976BGElrSRCa1Llko7dIn8vREm04yRN0B65O9yZHQ64CYyS_ZmQC2etL4rMfe7x8LAVv1dC1JoHgrMS2pA2KBvC09eVEEC6NVJ7PLASFRqPbiy3MChxBHcnJQ9QoeS8KHDXuuAyWI-IxhovGzhoOi_IWPJ48gkakZUl6xKmleydNe2CyasJFByPqMHqScPTavPmRqoDvlO1ZigJ63VccBlgrJdAZB-xfpU8lJ4wkeP6lsk7qPpElcXZg2XttTVKOCTw-ojj6Edd-06JfT5EJzvUbeeVyOdzCVXfOhtMrYR3YHgAh8bHlnU1OjkPmLTNNRcu6rJhfYWO-pRgS7q-Kn_I3WU41DrwAp5OsglEidFEeJQ7b3xZY75WBydL4IuH-XruIDBKbfrU2U9JITxJ7pw2vRLb6DcH10CFXLD7YehcFNlPeABvtqqxVWB51KxLQvFJvPc0Nvgxz0rkw2nyJoWxCpyUhKhkBkvbNIw-3nn1-b91WPVYJ6o8Ul0_6N_sfj6wN7ZMg3Y3cYKSLQUf4-TtoES-uZ_SQ9h4JXbTYQ5Ktn-etOX8UWH_lQMg-rcAvLTj1t59dGXaGIK3I7WbVty9tWHZygHai4YvL5gISqTEcR854g_F-hcuY8bfSvIBiGI57b-N-8ewLG6_uDB2v8dmujZ-eE9_ABrXgO2KBQAA';\nexport var input = 'surfaces_srOnly__1qa7atn0';\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 ChangeEvent, type TextareaHTMLAttributes, forwardRef } from \"react\";\nimport { BaseField } from \"../base-field\";\nimport type { TextFieldProps } from \"./types\";\n\n// Presentacional: delega el shell (label, help, startIcon, a11y) a BaseField.\n// Controlado vía onChange(value); soporta startIcon y multiline.\n// La ref se reenvía a BaseField, que la cablea al <input> real.\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(function TextField(\n {\n label,\n help,\n error,\n startIcon,\n multiline,\n rows,\n type = \"text\",\n onChange,\n className,\n id,\n testId,\n ...rest\n },\n ref,\n) {\n // El `data-testid` crudo del consumidor (via rest) gana sobre el id de slot compuesto\n // de `control`, consistente con Button. Solo `data-testid`: el resto de props cableadas\n // por BaseField (`id`, `className`, `aria-*`, `ref`) siguen ganando sobre rest.\n const rawTestId = (rest as Record<string, unknown>)[\"data-testid\"] as string | undefined;\n return (\n <BaseField\n ref={ref}\n label={label}\n help={help}\n error={error}\n startIcon={startIcon}\n id={id}\n className={className}\n testId={testId}\n >\n {({ ref: controlRef, ...control }) =>\n multiline ? (\n // En multiline el control es un <textarea>: no reenviamos `controlRef` porque el\n // tipo público de la ref es HTMLInputElement (la ref aplica solo a la rama <input>).\n <textarea\n {...(rest as TextareaHTMLAttributes<HTMLTextAreaElement>)}\n {...control}\n data-testid={rawTestId ?? control[\"data-testid\"]}\n rows={rows ?? 4}\n onChange={(e: ChangeEvent<HTMLTextAreaElement>) => onChange?.(e.target.value)}\n />\n ) : (\n <input\n {...rest}\n {...control}\n data-testid={rawTestId ?? control[\"data-testid\"]}\n ref={controlRef}\n type={type}\n onChange={(e: ChangeEvent<HTMLInputElement>) => onChange?.(e.target.value)}\n />\n )\n }\n </BaseField>\n );\n});\n","// src/components/base-field/index.tsx\nimport { forwardRef, useId } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { BaseFieldProps, FieldControlProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Shell presentacional del campo: label + wrapper + startIcon + trailing + help,\n// con el cableado de accesibilidad. Entrega las props del control por render-prop.\n// La ref se reenvía al <input> real a través de `control.ref` (foco programático / forms).\nexport const BaseField = forwardRef<HTMLInputElement, BaseFieldProps>(function BaseField(\n { label, help, error, startIcon: StartIcon, trailing, id, className, testId, children },\n ref,\n) {\n const autoId = useId();\n const controlId = id ?? autoId;\n\n // `error` es boolean (solo estilo) o un nodo (mensaje). Distinguimos ambos.\n // Un nodo \"vacío\" (false/null/\"\") no marca inválido: evita mensajes vacíos anunciados\n // cuando se bindea `error={errors.x}` y `errors.x` es \"\".\n const errorMessage =\n error != null && error !== false && error !== true && error !== \"\" ? error : null;\n const hasError = error === true || errorMessage != null;\n // Una sola línea de mensaje debajo del campo: el error tiene prioridad sobre el help.\n const message = errorMessage ?? help;\n const messageId = message != null ? `${controlId}-msg` : undefined;\n\n const classes = useStyles({\n error: hasError,\n hasStartIcon: StartIcon != null,\n hasTrailing: trailing != null,\n className,\n });\n\n const { testId: rootTestId, slot } = useTestId(\"field\", testId);\n\n const control: FieldControlProps = {\n id: controlId,\n className: classes.input,\n ref,\n \"aria-describedby\": messageId,\n \"aria-invalid\": hasError ? true : undefined,\n \"data-testid\": slot(\"input\"),\n };\n\n return (\n <div className={classes.root} data-testid={rootTestId} data-state={states({ error: hasError })}>\n {label != null && (\n <label htmlFor={controlId} className={classes.labelText} data-testid={slot(\"label\")}>\n {label}\n </label>\n )}\n <div className={classes.field}>\n {StartIcon != null && (\n <span className={classes.startIconSlot}>\n <StartIcon size={18} />\n </span>\n )}\n {children(control)}\n {trailing != null && <span className={classes.trailingSlot}>{trailing}</span>}\n </div>\n {message != null && (\n // `aria-live` solo cuando el mensaje es un error: anuncia la validación al aparecer.\n <span\n id={messageId}\n className={classes.helpText}\n aria-live={errorMessage ? \"polite\" : undefined}\n data-testid={slot(\"message\")}\n >\n {message}\n </span>\n )}\n </div>\n );\n});\n","// src/components/base-field/use-styles.ts\nimport { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\ninterface UseStylesArgs {\n error?: boolean | undefined;\n hasStartIcon?: boolean | undefined;\n hasTrailing?: boolean | undefined;\n className?: string | undefined;\n}\n\nexport function useStyles({ error, hasStartIcon, hasTrailing, className }: UseStylesArgs): {\n root: string;\n labelText: string;\n field: string;\n input: string;\n helpText: string;\n startIconSlot: string;\n trailingSlot: 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 hasTrailing && styles.inputTrailingPad,\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 startIconSlot: styles.startIconSlot,\n trailingSlot: styles.trailingSlot,\n };\n }, [themeClass, error, hasStartIcon, hasTrailing, className]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/base-field/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61VTW_bMAy951f4MmA5qIiTrlvd8w67DWjvAS3RjlpZ9Cg5Hxv23wfJsWInbbAVQw6BoqfHRz6SuekcCucPBt2aifx6ncuVrNUi-zXLMqVda-BQZJXB_cMsi99CaUbpNdkik2S6xoabGtoi2wJ_FMK1IFG4fL3GVc0d5_fzh9nv2c0olIESzRPuU7w8xqvIelFBo81hIIs_NWRpYFvOHwak0z9xwHnce4EHLJl28WLA30a8Qe-RozRt6_SIQb5oW4udVuh8EryNbyKlZ7CuIm6KrGtbZAkOw6UkQ5xE1sJ1pTcp6BLfTvkrM_GQ9zLmPSFTYGvkmFCi-3FBV2k0amBZRZaWnO5tYTTg9TYKvfAQjK6t0B4bV2QSrUc-J9e27ZI1t1etGcvMr1hTkjpMfHHzV8vomWyd8pYRVIJ8qZk6qwZkGQrOFchTxe97KLHCRNifxAY0J400zxwZraYQhRV05lTwzYhNMCjduYG0P4kSXAqeNxHeglKj7jrOwSqhyvnbN-H9Tiu_KbJ8sfgQjtR5oy0WmSWLvZx9KGEMcZRW0v66eUVFsnPRwuOTSclBhg6YJLN8nqdgG1C0K7JF_Czb_fSVo-pUMXPRolHIpNs_vanj2PQTHfZ1xkcP7L9Dav67vvn72guDlT8z4C6V-XIqI-MTgzba1iPSzxNS1vXmX1g3aNrxdvvyX0ZIQhvGezJF-e3oQQgeuoUbMO_aUYPuiWn3711RLhj1TZJ9NKc_FjhbVVA6Mp3HfklfeHc-ImmbaRtmQ1xdan9VgSBGB7zALVrvhnGb5uKPLTJOpbySymsds0y5wHtyee6c19VBSLIerR_t7j8rnFSpxQcAAA';\nexport var field = 'use-styles_field__1c3cgd3';\nexport var helpText = 'use-styles_helpText__1c3cgd8';\nexport var helpTextError = 'use-styles_helpTextError__1c3cgd9';\nexport var input = 'use-styles_input__1c3cgd4';\nexport var inputError = 'use-styles_inputError__1c3cgd5';\nexport var inputStartPad = 'use-styles_inputStartPad__1c3cgd6';\nexport var inputTrailingPad = 'use-styles_inputTrailingPad__1c3cgd7';\nexport var labelText = 'use-styles_labelText__1c3cgd1';\nexport var labelTextError = 'use-styles_labelTextError__1c3cgd2';\nexport var root = 'use-styles_root__1c3cgd0';\nexport var startIconSlot = 'use-styles_startIconSlot__1c3cgda';\nexport var trailingSlot = 'use-styles_trailingSlot__1c3cgdb';","// src/components/password-field/index.tsx\nimport { type ChangeEvent, type MouseEvent, forwardRef, useState } from \"react\";\nimport { BaseField } from \"../base-field\";\nimport { EyeIcon } from \"../icons/eye\";\nimport { EyeOffIcon } from \"../icons/eye-off\";\nimport type { PasswordFieldProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Envuelve BaseField, gestiona el reveal de contraseña y pasa el toggle como trailing slot.\n// La ref se reenvía a BaseField, que la cablea al <input> real.\nexport const PasswordField = forwardRef<HTMLInputElement, PasswordFieldProps>(\n function PasswordField({ label, help, error, startIcon, onChange, id, className, ...rest }, ref) {\n const [reveal, setReveal] = useState(false);\n const classes = useStyles();\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.value);\n };\n\n const handleToggleMouseDown = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n };\n\n const toggleButton = (\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\n return (\n <BaseField\n ref={ref}\n label={label}\n help={help}\n error={error}\n startIcon={startIcon}\n trailing={toggleButton}\n id={id}\n className={className}\n >\n {(control) => (\n <input\n {...rest}\n {...control}\n type={reveal ? \"text\" : \"password\"}\n onChange={handleChange}\n />\n )}\n </BaseField>\n );\n },\n);\n","import type { IconProps } from \"../types\";\n\nexport function EyeIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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","// src/components/password-field/use-styles.ts\nimport { useMemo } from \"react\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: devuelve un objeto de clases por slot, memoizado.\n// PasswordField delega el layout al BaseField; solo gestiona el revealButton.\nexport function useStyles(): { revealButton: string } {\n return useMemo(() => ({ revealButton: styles.revealButton }), []);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/password-field/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcmV2ZWFsQnV0dG9uX19yc3U5ZDUwIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXMyX19lM2dydXIxYSk7CiAgYm9yZGVyOiBub25lOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWJhc2VfX2UzZ3J1cjFtKTsKfQoudXNlLXN0eWxlc19yZXZlYWxCdXR0b25fX3JzdTlkNTA6aG92ZXIgewogIGNvbG9yOiB2YXIoLS1mZy1zdHJvbmdfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc19yZXZlYWxCdXR0b25fX3JzdTlkNTA6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIydSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQ';\nexport var revealButton = 'use-styles_revealButton__rsu9d50';","// src/components/money-field/index.tsx\nimport { type ChangeEvent, type FocusEvent, forwardRef, useMemo, useState } from \"react\";\nimport { BaseField } from \"../base-field\";\nimport type { MoneyFieldProps } from \"./types\";\n\n// Quita todo salvo dígitos, signo y punto decimal; \"\", \"-\" y \".\" → null.\nfunction parseAmount(raw: string): number | null {\n const cleaned = raw.replace(/[^0-9.-]/g, \"\");\n if (cleaned === \"\" || cleaned === \"-\" || cleaned === \".\") return null;\n const n = Number.parseFloat(cleaned);\n return Number.isNaN(n) ? null : n;\n}\n\n// MoneyField: input de dinero controlado.\n// - Sin foco: muestra Intl.NumberFormat (currency style).\n// - Con foco: muestra el draft crudo para edición.\n// - onBlur: parsea el draft y llama onChange(number | null).\nexport const MoneyField = forwardRef<HTMLInputElement, MoneyFieldProps>(function MoneyField(\n {\n value,\n onChange,\n currency = \"USD\",\n locale = \"en-US\",\n label,\n help,\n error,\n startIcon,\n id,\n className,\n onFocus,\n onBlur,\n ...rest\n },\n ref,\n) {\n const [focused, setFocused] = useState(false);\n const [draft, setDraft] = useState(\"\");\n const formatter = useMemo(\n () => new Intl.NumberFormat(locale, { style: \"currency\", currency }),\n [locale, currency],\n );\n\n const displayValue = focused ? draft : value != null ? formatter.format(value) : \"\";\n\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n setDraft(value != null ? String(value) : \"\");\n setFocused(true);\n onFocus?.(e);\n };\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => setDraft(e.target.value);\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n onChange?.(parseAmount(draft));\n onBlur?.(e);\n };\n\n return (\n <BaseField\n ref={ref}\n label={label}\n help={help}\n error={error}\n startIcon={startIcon}\n id={id}\n className={className}\n >\n {(control) => (\n <input\n {...rest}\n {...control}\n inputMode=\"decimal\"\n value={displayValue}\n onFocus={handleFocus}\n onChange={handleChange}\n onBlur={handleBlur}\n />\n )}\n </BaseField>\n );\n});\n","import { forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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.\n// `type=\"button\"` por defecto: nunca envía un <form> por accidente (se puede sobreescribir).\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { icon: Icon, active, tone, title, type = \"button\", testId, ...rest },\n ref,\n) {\n // `title` es el nombre accesible por defecto (el icono es decorativo). En desarrollo\n // avisamos si no hay nombre: TS exige string pero no impide \"\". El consumidor puede\n // proveerlo por `aria-label`/`aria-labelledby` vía `...rest` (que sobreescribe a title).\n if (typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\") {\n const restProps = rest as Record<string, unknown>;\n const hasName =\n title.trim() !== \"\" ||\n restProps[\"aria-label\"] != null ||\n restProps[\"aria-labelledby\"] != null;\n if (!hasName) {\n console.warn(\"IconButton: falta un nombre accesible (`title` o `aria-label`).\");\n }\n }\n const { root } = useStyles({ active, tone });\n const { testId: dataTestId } = useTestId(\"button\", testId);\n return (\n <button\n ref={ref}\n type={type}\n className={root}\n aria-label={title}\n title={title}\n data-testid={dataTestId}\n data-state={states({ active, disabled: rest.disabled })}\n {...rest}\n >\n <Icon size={18} />\n </button>\n );\n});\n","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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/icon-button/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMThucDBxMDAgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtczJfX2UzZ3J1cjFhKTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBjb2xvcjogdmFyKC0tZmctbXV0ZWRfX2UzZ3J1cjJkKTsKICBib3JkZXItd2lkdGg6IHZhcigtLWJvcmRlci1oYWlyX19lM2dydXIxbyk7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLWR1ci1mYXN0X19lM2dydXIyMSkgdmFyKC0tZWFzZS1pbmtfX2UzZ3J1cjI0KTsKfQoudXNlLXN0eWxlc19yb290X18xOG5wMHEwMDpob3Zlcjpub3QoOmRpc2FibGVkKSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3Vua2VuX19lM2dydXIyYSk7Cn0KLnVzZS1zdHlsZXNfcm9vdF9fMThucDBxMDA6ZGlzYWJsZWQgewogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKICBvcGFjaXR5OiAwLjU7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoudXNlLXN0eWxlc19yb290X18xOG5wMHEwMDpmb2N1cy12aXNpYmxlIHsKICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZm9jdXNfX2UzZ3J1cjJ1KTsKICBvdXRsaW5lLW9mZnNldDogMnB4Owp9Ci51c2Utc3R5bGVzX2FjdGl2ZV9fMThucDBxMDEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnLXN1bmtlbl9fZTNncnVyMmEpOwogIGNvbG9yOiB2YXIoLS1hY2NlbnQtdGV4dF9fZTNncnVyMm0pOwp9Ci51c2Utc3R5bGVzX2FjY2VudF9fMThucDBxMDIgewogIGNvbG9yOiB2YXIoLS1hY2NlbnQtdGV4dF9fZTNncnVyMm0pOwp9';\nexport var accent = 'use-styles_accent__18np0q02';\nexport var active = 'use-styles_active__18np0q01';\nexport var root = 'use-styles_root__18np0q00';","import { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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).\nconst CardRoot = forwardRef<HTMLDivElement, CardProps>(function Card(\n { children, testId, ...rest },\n ref,\n) {\n const { root } = useStyles();\n const { testId: dataTestId } = useTestId(\"layout\", testId);\n return (\n <div ref={ref} className={root} data-testid={dataTestId} {...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 { 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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/card/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMWZ1dmQwMjAgewogIGJhY2tncm91bmQ6IHZhcigtLWJnLXN1cmZhY2VfX2UzZ3J1cjI5KTsKICBib3JkZXI6IHZhcigtLWJvcmRlci1oYWlyX19lM2dydXIxbykgc29saWQgdmFyKC0tYm9yZGVyLXN1YnRsZV9fZTNncnVyMmcpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZ19fZTNncnVyMWwpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnVzZS1zdHlsZXNfaGVhZGVyX18xZnV2ZDAyMSB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtczRfX2UzZ3J1cjFjKTsKICBib3JkZXItYm90dG9tOiB2YXIoLS1ib3JkZXItaGFpcl9fZTNncnVyMW8pIHNvbGlkIHZhcigtLWJvcmRlci1zdWJ0bGVfX2UzZ3J1cjJnKTsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Ci51c2Utc3R5bGVzX2JvZHlfXzFmdXZkMDIyIHsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1zNF9fZTNncnVyMWMpOwp9Ci51c2Utc3R5bGVzX2Zvb3Rlcl9fMWZ1dmQwMjMgewogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXM0X19lM2dydXIxYyk7CiAgYm9yZGVyLXRvcDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKSBzb2xpZCB2YXIoLS1ib3JkZXItc3VidGxlX19lM2dydXIyZyk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQ';\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 { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport { 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\n// Severidades que interrumpen (warn, danger) se anuncian de forma asertiva: role=\"alert\"\n// ya implica aria-live=\"assertive\", no hace falta declararlo aparte. Las informativas\n// (info, ok) usan role=\"status\", que implica aria-live=\"polite\".\nconst roleBySeverity: Record<AlertSeverity, \"alert\" | \"status\"> = {\n info: \"status\",\n ok: \"status\",\n warn: \"alert\",\n danger: \"alert\",\n};\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n { severity = \"info\", title, icon, className, testId, children, ...rest },\n ref,\n) {\n const styles = useStyles({ severity, className });\n const { testId: dataTestId, slot } = useTestId(\"feedback\", testId);\n const IconComponent = icon ?? defaultIcons[severity];\n return (\n <div\n ref={ref}\n role={roleBySeverity[severity]}\n className={styles.root}\n data-testid={dataTestId}\n {...rest}\n >\n <span className={styles.iconSlot} data-testid={slot(\"icon\")}>\n <IconComponent />\n </span>\n <div className={styles.content} data-testid={slot(\"content\")}>\n {title != null && <Typography variant=\"h4\">{title}</Typography>}\n {children != null && (\n <Typography variant=\"body\" color=\"muted\">\n {children}\n </Typography>\n )}\n </div>\n </div>\n );\n});\n","import type { IconProps } from \"../types\";\n\nexport function CircleCheckIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/alert/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA42TTW7CMBCF9zmFl2Vh1BCKRDhGDxA5tuNYBDudsSG04u5V_kz4CWIVWf7mvTfjzNKjpOjOlcQMrHVZpo9Ybvwn-YsIERrrip1TUlSy2UWEKFan5Mjgg1KsGZcUkyyTiQIPcb5oiZoJoY16Qd3erMMN7-pzxvcKrDdilMgVRQ8F43JEV9setSAkBKw70ZJpCJJ2QdBWWtwi6HNXXcXURIxWsnD0pIUrU5LUzeQGmNAeR7f-RHOGQSg-DEINRf3bzWAozW2ziy7RcjJrlEcJ2p0zbQo7Dj3uhj5Nwm1lQ4fomPNI-4ohvOs838JmAtj9aL96y77lB1WYNb-DZqxPDMxonrxl3lcMyjhr_4DNBBDMKAljhPXrCD188-Qr8xhhwJxsXMB-HiJobs13dd23r-f71n4plqDNPiWfEy9tyraFe1lujZMmqG5eqAoNkjttTdpq-oN5vt9x-L23j70WiqIDa1TotF3iyz8Uyo8yVQQAAA';\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 {\n type KeyboardEvent,\n cloneElement,\n forwardRef,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { TooltipProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Retraso de cierre: da tiempo a mover el cursor del trigger al bubble sin que se cierre.\nconst HIDE_DELAY = 120;\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 (WCAG 1.4.13): el bubble es hoverable (cierre diferido) y se descarta\n// con Escape sin mover el foco. Enlaza el bubble (role=\"tooltip\") al trigger via\n// aria-describedby mientras está abierto, clonando el children (el elemento interactivo).\n// La ref apunta al wrapper <span> (root propio que envuelve trigger + bubble).\nexport const Tooltip = forwardRef<HTMLSpanElement, TooltipProps>(function Tooltip(\n { label, children, placement, testId },\n ref,\n) {\n const [open, setOpen] = useState(false);\n const tooltipId = useId();\n const { wrapper, bubble } = useStyles({ placement });\n const { testId: dataTestId, slot } = useTestId(\"feedback\", testId);\n const hideTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearHide = () => {\n if (hideTimer.current) {\n clearTimeout(hideTimer.current);\n hideTimer.current = null;\n }\n };\n const show = () => {\n clearHide();\n setOpen(true);\n };\n const scheduleHide = () => {\n clearHide();\n hideTimer.current = setTimeout(() => setOpen(false), HIDE_DELAY);\n };\n const hideNow = () => {\n clearHide();\n setOpen(false);\n };\n\n // Limpia el timer pendiente al desmontar.\n useEffect(() => {\n return () => {\n if (hideTimer.current) clearTimeout(hideTimer.current);\n };\n }, []);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLSpanElement>) => {\n if (event.key === \"Escape\" && open) {\n event.stopPropagation();\n hideNow();\n }\n };\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\n ref={ref}\n className={wrapper}\n data-testid={dataTestId}\n onMouseEnter={show}\n onMouseLeave={scheduleHide}\n onFocus={show}\n onBlur={hideNow}\n onKeyDown={handleKeyDown}\n >\n {trigger}\n {open && (\n <span\n id={tooltipId}\n role=\"tooltip\"\n className={bubble}\n data-testid={slot(\"bubble\")}\n onMouseEnter={show}\n onMouseLeave={scheduleHide}\n >\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/tooltip/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfd3JhcHBlcl9faDlrdmgwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7Cn0KLnVzZS1zdHlsZXNfYnViYmxlX19oOWt2aDEgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9fX2UzZ3J1cjIpOwogIGZvbnQtc2l6ZTogMTFweDsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZV9fZTNncnVyMXQpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXMxX19lM2dydXIxOSkgdmFyKC0tc3BhY2UtczJfX2UzZ3J1cjFhKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgei1pbmRleDogMTsKfQoudXNlLXN0eWxlc19wbGFjZW1lbnRfdG9wX19oOWt2aDIgewogIGJvdHRvbTogMTAwJTsKICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS1zMV9fZTNncnVyMTkpOwp9Ci51c2Utc3R5bGVzX3BsYWNlbWVudF9ib3R0b21fX2g5a3ZoMyB7CiAgdG9wOiAxMDAlOwogIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLXMxX19lM2dydXIxOSk7Cn0';\nexport var bubble = 'use-styles_bubble__h9kvh1 surfaces_inkySurface__1qa7atn2';\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, forwardRef, 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.\n// La ref apunta al <div> root del componente.\nexport const Select = forwardRef<HTMLDivElement, SelectProps>(function Select(\n {\n options,\n value,\n onChange,\n placeholder,\n label,\n disabled,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...rest\n },\n ref,\n) {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(0);\n const rootRef = useRef<HTMLDivElement | null>(null);\n // Mezcla la ref interna (outside-click) con la ref externa del consumidor.\n const setRootRef = (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n };\n const baseId = useId();\n const labelId = `${baseId}-label`;\n const optionId = (index: number) => `${baseId}-option-${index}`;\n // El nombre accesible vive en el <button> (el control), no en el <div> raíz genérico.\n // Combina el label interno con un aria-labelledby que pase el consumidor.\n const triggerLabelledBy =\n [label ? labelId : null, ariaLabelledBy].filter(Boolean).join(\" \") || undefined;\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={setRootRef} className={root} {...rest}>\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-label={ariaLabel}\n aria-labelledby={triggerLabelledBy}\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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/select/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VWy27bMBC8-yt4KRADZWApSZPIp9566yEfYFDkSmJNcQWS8iNF_70gJdGSX3GLAkUOgcmd9ezscNf3rQVq3V6BXRlEt1ol24S_N_mC_JwR0qCVTqLOiAHFnNzAckaIkLZRbJ-RQsHOH_j_VEgDvAvmqNpa-5uSNRnZMHNHqW0YB2qT1QoeStOa5HW-nP2a3Y8YKJaDihSSQKFA7WjBaqn2Q6ZwVKPGIVU6Xw6RVr7DEOdg5yhnjScVLuJXPwaAkhpoBbKs3FmIv_8WriPwqQOCc2BCRVKX57Eh5K2LiPDnAA-BzjBtCzR1RtqmAcOZDeJyVGhipSW1be5UZJ7CiWjOyLIEE2VLg2wnPfrRWieLPeWoHWiXka4fObgtQOgVU7LUVDqobUY4aAfmfAvTWA8L9WylcFVGksXik__YMCFGsvSghwjK55dvPD7Hne9WSJGjEWBojrvlFS94QWOSK17IUewnRrDzs5I7g4empbxjxfi6NNhqMUTmvjmmYPzQnde-gEC6l6UP7s4qJk1kiuPo0M2MWFRSjI4n3PozAQVrVaw4rcZ5DBOytQOi-0RzZg_mr7uiW2N95gbl0OmgUXBBRhQULpx5m_YzYEypzy9aQwtmD1ySobnALFCp1_Hmcf65a23FBG7_Bv-h87MCeWuD_7F1_vlmRKOGS3oy7m0-USf9cfBgIJqRRfhLm90UZbE40FY3kBPSslyBCPxueOYXPafXoGMkm3RTo--gwi2IY0KNYhwqVGJE6uFWLtNUvIKNQR3TPE5HjtRhsk62g62M1OuMLG6ccVPnxWH5L2zTs__ewKGCp1DBaCYbdMzBXfKyEFCepKhBtxH75WhVstyial1wncPmMBj9mzqaiov4Kl9C0Wa8jC7EKGndMC4Gd9fMlFJ_AOyCaOB0ZSdfmuDH6S7P6XcqtYCdr_xYOQzrMWr33Gl39vvGa-b6xvife-Fkjl6vN6twAyZUfevrPpfwDRRwByImfjl9yf2cGouQ1hfyfeX-x13M9vpnBH8Dmxgg0EYKAAA';\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__1qa7atn1';\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 { type ChangeEvent, forwardRef } 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á.\n// La ref apunta al <input type=\"range\"> real (foco programático / integración con forms).\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(function Slider(\n { value = 0, onChange, min = 0, max = 100, step = 1, disabled, label, ...rest },\n ref,\n) {\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 ref={ref}\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 {...rest}\n />\n <span className={thumb} style={{ left: `${clamped}%` }} />\n </span>\n </span>\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).\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/slider/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5VUy27jMAy85yt0WaA5qMizaNWPCWSLdoTIoiFSeeyi--0LK5aaJt0ERU60KM5wZqLnSCCJTw5oExB5s8HdYf3mZ-LPRIgeybJFr0QAp9nu4X0ixBZsu2UlFqv-ONQHa3irxHw2-zWUxlLv9EmJxkE61862XlqGjpSowTOE98nH5PkCmoOudxl7nrAzyvcgla53bcDojRJ7HZ6krFpJ0e_AbzawbEMMCz1NnRgMBBm0sZFy87mSTXQut8_99JpV0L6FzGpxpYiuCF3kL4qMXG_JNa0kDujbQq7-ObkB3Q7qSdiDZ1LCo4dr0tb3sdi4vEPaegLOmNTrGiTNCuDr9BvV85657nRorX8wA3tdWz4pMRuqOgbCoPIq99krY0lXDkxaI1_1yFI7hwcwNznaxq7K11d3ls-LvZwdK4uN9Xkx6aBhJeTraOvPzPpxCkZOY5xHsOigzO0vu9PGShA6ay4-1-gGjR4BHiVttcFD8S5VkrrSub6TOCE4aJ91_Zw2DjMxyEYTl1nz6XgCmkBavysnq5s_3VUCGqwjyb0lWzkQf8UDty83m6Xfsj9mNYZRBTneIDtdgcvj1mlcecsqh_XuIhkVMmN3lfx5ceotidegZ9nozrpTcWT41KHHwuOzk-xvUGK-OKfNAQ_CD6Otb_P99FBa3w5hgVDwYprCcGSZnGkwdErEvodQa0qOXQejiwymsDA3ahyCHq5nPV7-o8eXF-LjH6ioZgtPBgAA';\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 { forwardRef, useState } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\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 const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(\n { items, multiple = false, defaultOpen = [], className, testId },\n ref,\n) {\n const [open, setOpen] = useState<string[]>(defaultOpen);\n const { root, item, header, chevronFor, panel } = useStyles({ className });\n const { testId: dataTestId, slot } = useTestId(\"layout\", testId);\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 ref={ref} className={root} data-testid={dataTestId}>\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 const itemSlot = slot(`item-${it.id}`);\n return (\n <div\n key={it.id}\n className={item}\n data-testid={itemSlot}\n data-state={states({ expanded: isOpen })}\n >\n <button\n type=\"button\"\n id={headerId}\n className={header}\n aria-expanded={isOpen}\n aria-controls={panelId}\n data-testid={`${itemSlot}__trigger`}\n onClick={() => toggle(it.id)}\n >\n {it.title}\n <ChevronDownIcon className={chevronFor(isOpen)} />\n </button>\n {isOpen && (\n <div\n id={panelId}\n className={panel}\n role=\"region\"\n aria-labelledby={headerId}\n data-testid={`${itemSlot}__panel`}\n >\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/accordion/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61Ty27bMBC8-yt4KRAfGEi2C7T0R-QTDEpcSoxprsBd-tEi_16IslnbSd0ccpPI3Znh7OxzIpDEJw-0iYi82dTtazT9z0r8ngnRYDQQldjr-CTl9Cd77eJmA8supljjXBB6Z25LKDXs4VK06ObrAiajNi7RBXP6k74riD4X4x6i9XhQonfGQFjP3mbPV2Idw66Ira_EygaZcfclmh9RKq-JZds7bz5iDxjgHqAHbSAWiEXuOzjDvRJ1VX0b320cDV6flLAejuPBayJ29iRbDAyBlaBBtyAb4AOMtgihveuCHNWREi0Ehjged3q4mDC10LI40GSPB22MC92DqtubVblpp4HqdttFTMEowVEHGnSEwOur4Ew2CNGmSBiVGNBd9FkMLK3eOX-6KMhHDEcuRJmnRY8lhLaTxBFDCcxiEjO2yWyFEh7sWcVRkvuV31jmk13Nch07DOrqGWcKk6K0moqKRX0xAjSBdGFbblbvUnI_ZNWPUZ4icuXXOXqdpBS2EAqg_j-gxTaR3DtyjYcMjIm9C6DEYjjeRDuXFuw0bdZULNFaAs4995RtD_uIoXAuM8uYSEl9dGGrRPXRYHaJwRQ6M793On9bjLuvMPos8mWAv0JXWWihUSIia4an-kdl4P1GDzqAL83fc3NZiurf4X-8Fp9x5bPhf_sDQWlczqEFAAA';\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, forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\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 const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(function Breadcrumbs(\n { items, className, testId, ...rest },\n ref,\n) {\n const { root, crumb, current, separator } = useStyles({ className });\n const { testId: dataTestId, slot } = useTestId(\"nav\", testId);\n return (\n <nav ref={ref} aria-label=\"Breadcrumb\" className={root} data-testid={dataTestId} {...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\" data-testid={slot(`crumb-${index}`)}>\n {item.label}\n </span>\n ) : item.href ? (\n <a className={crumb} href={item.href} data-testid={slot(`crumb-${index}`)}>\n {item.label}\n </a>\n ) : (\n <span className={crumb} data-testid={slot(`crumb-${index}`)}>\n {item.label}\n </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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/breadcrumbs/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fN3UwZHU2MCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtczJfX2UzZ3J1cjFhKTsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IDEycHg7CiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNraW5nLXdpZGVfX2UzZ3J1cjF0KTsKfQoudXNlLXN0eWxlc19jcnVtYl9fN3UwZHU2MSB7CiAgY29sb3I6IHZhcigtLWZnLW11dGVkX19lM2dydXIyZCk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci51c2Utc3R5bGVzX2NydW1iX183dTBkdTYxOmhvdmVyIHsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICB0ZXh0LWRlY29yYXRpb24tY29sb3I6IHZhcigtLWFjY2VudC10ZXh0X19lM2dydXIybSk7CiAgY29sb3I6IHZhcigtLWFjY2VudC10ZXh0X19lM2dydXIybSk7Cn0KLnVzZS1zdHlsZXNfY3J1bWJfXzd1MGR1NjE6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIydSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoudXNlLXN0eWxlc19jdXJyZW50X183dTBkdTYyIHsKICBjb2xvcjogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7Cn0KLnVzZS1zdHlsZXNfc2VwYXJhdG9yX183dTBkdTYzIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKfQ';\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 { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport { 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 const Pagination = forwardRef<HTMLElement, PaginationProps>(function Pagination(\n { count, page = 1, onChange, siblingCount = 1, testId, ...rest },\n ref,\n) {\n const { root, pageBtnFor, ellipsis, nav } = useStyles();\n const { testId: dataTestId, slot } = useTestId(\"nav\", testId);\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 ref={ref} className={root} aria-label=\"Pagination\" data-testid={dataTestId} {...rest}>\n <button\n type=\"button\"\n className={nav}\n aria-label=\"Previous page\"\n disabled={current <= 1}\n data-testid={slot(\"prev\")}\n onClick={() => go(current - 1)}\n >\n <ChevronLeftIcon size={18} />\n </button>\n {items.map((item, index) =>\n item === \"ellipsis\" ? (\n <span\n // biome-ignore lint/suspicious/noArrayIndexKey: ellipsis position is stable per render\n key={`ellipsis-${index}`}\n className={ellipsis}\n data-testid={slot(`ellipsis-${index}`)}\n >\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 data-testid={slot(`page-${item}`)}\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 data-testid={slot(\"next\")}\n onClick={() => go(current + 1)}\n >\n <ChevronRightIcon size={18} />\n </button>\n </nav>\n );\n});\n","import type { IconProps } from \"../types\";\n\nexport function ChevronLeftIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/pagination/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA9WUwXLbIBCG734KjtGBTGT7kJJT-yIaLFZoawwadnFid_ruHSOLyo09dg899Cj4d7_l5xfPiUASHxxQE0Pgpqn10R5D_yJ-LIQwSIPTByU6Bx9vCyG0Q-slMuxIiRY8QzwtWz0osdfxSUoadAuS6qaBlY0p1l-qt8XPxfMMNGgL39gXVp1ZO_TyHQ33SqzWQ6b1gLbn39-PjvM9EWN3kG3wDJ7nW13wLDu9Q3eYJs5Lu-DDNPKyKkrCIyhRL0d-G1yIpcxK4hi8LWVtrtuEaCBORxm157VeYyy-hLk6O6MEBYdmtnwBnKRpww4K1M7bRG0w0VQwfsmNpiKvd6Nct1sbQ_JGCY7a06AjeM5nTJFOzCHg5FlWIGPwSmjnzt1NirLTxGWSujrvgCaQ6LdlZ30_AqoPe4jKB35SBklvHJgq52I-69kIKyn5LfgC0A8Apq656aebvDQVqrkVPrDUzoV3MPcxXWgTyT0SbhxkVkjs0IMSy-FjvOESvDZRYabMPItl6DoCzjXXmF9bxj0U7PKGU7cyepkrK08ti-S1upXA6-3uT_c3l_sIA5zDgZAKYfXfviDXcjdaf8qdhzt_a6LTiwAOWp70l1Z5vS8urbNLgzYGvf3jvX4pL8TrJ7svevybgP8C4Uyz_YgGAAA';\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 { Fragment, forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\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 const Stepper = forwardRef<HTMLDivElement, StepperProps>(function Stepper(\n { steps, active = 0, className, testId, ...rest },\n ref,\n) {\n const { root, step, connector, markerFor, labelFor } = useStyles({ className });\n const { testId: dataTestId, slot } = useTestId(\"nav\", testId);\n\n return (\n <div ref={ref} className={root} data-testid={dataTestId} {...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\n className={step}\n aria-current={isActive ? \"step\" : undefined}\n data-testid={slot(`step-${index}`)}\n data-state={states({ done: state === \"done\", active: isActive })}\n >\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/stepper/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WTwVLkIBCG7_MUHM0BaxLd1cXTVvkeKUI6BIcABY3OaO27b0kGJuNE3T1Cmu__--_0dQxAAx40hNZbi21798vhLWzJ24aQXgWn-YGRQcP-YUMI10oaqhCmwIgAg-AfNn821wtKQHCZUv8HhRDJHSPP3F9RGhwXQEPTtnAjffQ1rz7qTNzvwGelJim9qB5HRpp7l3RGUHLE07mzvgdPPe9VDFlqPtEhal3UTLUoP0Ln6oyIGkq1W1Ynd4wEq1W_uBZWW_8B0sPAo8bMacbE-de0nmJANRyosAbB4PLTYA3SgU9KH7JkupqssUWtKpVBvQIjdTOHdOZ0kHSKCH151c-9crGT3kbTM4Kem-C4B4OJqGFPw-iV2TGyXR_ab4HqGfLobtLo1nLi4r0n2vFQwm6eqguTxzKE_SnL6ZP_5dGaInw7Cy96KU0H9NbIQhOXop2kjsuTr_vqs2mv487Nad6Bzr5-JF_fz2EFcZ7sz1XQt2aENQYE2rJcd4nzPllG6uVi1ce9uogwL0Ps8LQojUwZTdxLZRjZfrnrfwHDdSgUmQQAAA';\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 { type KeyboardEvent, forwardRef, useId, useRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { TabsProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Tamaño del icono opcional de cada tab.\nconst ICON_SIZE = 16;\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado: el tab activo lo determina `value`; al clickear/navegar se notifica vía `onChange`.\n// Patrón ARIA tablist con activación automática: las flechas mueven el foco y seleccionan.\n// Si algún item define `content`, se renderizan los `role=\"tabpanel\"` cableados (id/aria-*).\n// La ref apunta al tablist (no al wrapper), preservando el contrato previo.\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n { items, value, onChange, testId, ...rest },\n ref,\n) {\n const { root, tabClass, panel } = useStyles();\n const { testId: dataTestId, slot } = useTestId(\"nav\", testId);\n const baseId = useId();\n const tabRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n const hasPanels = items.some((item) => item.content !== undefined);\n const activeIndex = items.findIndex((item) => item.value === value);\n const tabId = (v: string) => `${baseId}-tab-${v}`;\n const panelId = (v: string) => `${baseId}-panel-${v}`;\n\n // Activación automática: selecciona el tab destino y le mueve el foco.\n const selectTab = (index: number) => {\n const item = items[index];\n if (!item) return;\n onChange?.(item.value);\n tabRefs.current[index]?.focus();\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n const last = items.length - 1;\n switch (event.key) {\n case \"ArrowRight\":\n event.preventDefault();\n selectTab(index === last ? 0 : index + 1);\n break;\n case \"ArrowLeft\":\n event.preventDefault();\n selectTab(index === 0 ? last : index - 1);\n break;\n case \"Home\":\n event.preventDefault();\n selectTab(0);\n break;\n case \"End\":\n event.preventDefault();\n selectTab(last);\n break;\n }\n };\n\n return (\n <>\n <div ref={ref} role=\"tablist\" className={root} data-testid={dataTestId} {...rest}>\n {items.map((item, index) => {\n const active = item.value === value;\n // Roving tabindex: solo el activo es tabbable; sin activo, el primero.\n const tabbable = active || (activeIndex === -1 && index === 0);\n const ItemIcon = item.icon;\n return (\n <button\n key={item.value}\n ref={(el) => {\n tabRefs.current[index] = el;\n }}\n type=\"button\"\n role=\"tab\"\n id={tabId(item.value)}\n aria-selected={active}\n aria-controls={hasPanels ? panelId(item.value) : undefined}\n tabIndex={tabbable ? 0 : -1}\n className={tabClass(active)}\n data-testid={slot(`tab-${index}`)}\n data-state={states({ selected: active })}\n onClick={() => onChange?.(item.value)}\n onKeyDown={(event) => onKeyDown(event, index)}\n >\n {ItemIcon ? <ItemIcon size={ICON_SIZE} /> : null}\n {item.label}\n </button>\n );\n })}\n </div>\n {hasPanels &&\n items.map((item) => (\n <div\n key={item.value}\n role=\"tabpanel\"\n id={panelId(item.value)}\n aria-labelledby={tabId(item.value)}\n hidden={item.value !== value}\n // biome-ignore lint/a11y/noNoninteractiveTabindex: APG recomienda que el tabpanel sea focusable cuando no contiene elementos enfocables\n tabIndex={0}\n className={panel}\n data-testid={slot(`panel-${item.value}`)}\n >\n {item.content}\n </div>\n ))}\n </>\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// 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 panel: 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, panel: styles.panel };\n }, [themeClass]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/tabs/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7VUy47bMAy85yuEPTUHLeJsgBba036JQcu0o0YWBYlKkxb998KyrTw2yJ56tDQczpAjv6aIMvLZYqwDEdd1ZXfDd95txJ-VEK2J3sJZic7i6X0lRA9eiSOEb1JGDxpl3NU1vvUhhUqvR0RDocUgG2KmYcHOh3swocBpLSJZ095CYmrY4gLa9uv31d_V65VKhqaIrG5FGmeNQ7loBWt6Jw3jEJXQ6BjDYwvbogmyBQ9ta1z_BCU22SroQx8ouVYJDuCih4COL1NQwpHD8VunECko4cksOjpyLDsYjD0vnfLRQI6K_3VBRvMblai2PnuzyDxOy4O-UsoB9MG4Xv4yLV4mnTIL44llltlRGJRI3mPQECd9ZEd5s4z-fg04zYWiYUNOiYAW2BxzaaaczzPNzNKmIDuIXEiq9XyDEFEadyg3u0xPicf9LUN7snbVkU5RHk00jcUcglK89aebXGVo6ZSuO0nquoicax70-9CjxdJ1m_t8GhQHcn3h14_yek-kFHSMYeZzjI6VeHm5HTE0kWxinLbd8V0aN2W7P7KlYPr9V5jlTcpqCtEep6I5U9dxnnhAj89GNhAvUfj5yaEHh7a4e8u25ickmb76Xzzd-h31_9n7P8ZpgqgEBQAA';\nexport var panel = 'use-styles_panel__1l4m7t43';\nexport var root = 'use-styles_root__1l4m7t40';\nexport var tab = 'use-styles_tab__1l4m7t41';\nexport var tabActive = 'use-styles_tabActive__1l4m7t42';","import {\n type KeyboardEvent,\n type MouseEvent,\n type Ref,\n cloneElement,\n forwardRef,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { MenuProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Tamaño del icono opcional de cada item.\nconst ICON_SIZE = 16;\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 const Menu = forwardRef<HTMLDivElement, MenuProps>(function Menu(\n { trigger, items, testId },\n ref,\n) {\n const { wrapper, list, item, dangerItem } = useStyles();\n const { testId: rootTestId, slot } = useTestId(\"menu\", testId);\n const [open, setOpen] = useState(false);\n const [alignEnd, setAlignEnd] = useState(false);\n const rootRef = useRef<HTMLDivElement | null>(null);\n // Mergea el ref reenviado por el consumidor con el rootRef interno (click-fuera / edge-flip).\n const setRootRef = (node: HTMLDivElement | null) => {\n rootRef.current = node;\n assignRef(ref, node);\n };\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 // Edge-flip: medido antes del paint. Si anclar el panel al inicio lo haría desbordar el\n // borde derecho del viewport, lo alineamos al final (su borde derecho bajo el trigger).\n // Se calcula desde la posición del wrapper + el ancho del panel, así no depende de la\n // alineación previa. Sin esto, un Menu pegado al borde derecho abre fuera de pantalla.\n useLayoutEffect(() => {\n if (!open) {\n setAlignEnd(false); // re-mide desde la alineación de inicio en la próxima apertura\n return;\n }\n const listEl = listRef.current;\n const rootEl = rootRef.current;\n if (!listEl || !rootEl) return;\n const rootLeft = rootEl.getBoundingClientRect().left;\n const viewport = document.documentElement.clientWidth;\n setAlignEnd(rootLeft + listEl.offsetWidth > viewport);\n }, [open]);\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\n ref={setRootRef}\n className={wrapper}\n data-testid={rootTestId}\n // Ternario en vez de states(): open/closed es un binario con valor \"closed\" significativo, que no se omite cuando está cerrado (states() omitiría el falsy).\n data-state={open ? \"open\" : \"closed\"}\n >\n {clonedTrigger}\n {open && (\n <div\n ref={listRef}\n role=\"menu\"\n className={list}\n data-align={alignEnd ? \"end\" : \"start\"}\n data-testid={slot(\"list\")}\n onKeyDown={onMenuKeyDown}\n >\n {items.map((entry, index) => {\n const ItemIcon = entry.icon;\n return (\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 data-testid={slot(`item-${index}`)}\n onClick={() => {\n entry.onClick?.();\n setOpen(false);\n }}\n >\n {ItemIcon ? <ItemIcon size={ICON_SIZE} /> : null}\n {entry.label}\n </button>\n );\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/menu/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfd3JhcHBlcl9fMXV5eGFqMCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGlubGluZS1mbGV4Owp9Ci51c2Utc3R5bGVzX2xpc3RfXzF1eXhhajEgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtaW4td2lkdGg6IDE4MHB4OwogIHotaW5kZXg6IDIwOwogIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLXMxX19lM2dydXIxOSk7CiAgbGVmdDogMDsKfQoudXNlLXN0eWxlc19saXN0X18xdXl4YWoxW2RhdGEtYWxpZ249ImVuZCJdIHsKICBsZWZ0OiBhdXRvOwogIHJpZ2h0OiAwOwp9Ci51c2Utc3R5bGVzX2l0ZW1fXzF1eXhhajIgewogIHdpZHRoOiAxMDAlOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtczJfX2UzZ3J1cjFhKTsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXMyX19lM2dydXIxYSkgdmFyKC0tc3BhY2UtczNfX2UzZ3J1cjFiKTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXRleHRfX2UzZ3J1cjEpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbWFsbC1zaXplX19lM2dydXIxMCk7CiAgY29sb3I6IHZhcigtLWZnLXN0cm9uZ19fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2l0ZW1fXzF1eXhhajI6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLWJnLXN1bmtlbl9fZTNncnVyMmEpOwp9Ci51c2Utc3R5bGVzX2l0ZW1fXzF1eXhhajI6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIydSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoudXNlLXN0eWxlc19kYW5nZXJfXzF1eXhhajMgewogIGNvbG9yOiB2YXIoLS1kYW5nZXItdGV4dF9fZTNncnVyMnEpOwp9';\nexport var danger = 'use-styles_danger__1uyxaj3';\nexport var item = 'use-styles_item__1uyxaj2';\nexport var list = 'use-styles_list__1uyxaj1 surfaces_panelSurface__1qa7atn1';\nexport var wrapper = 'use-styles_wrapper__1uyxaj0';","import {\n type MouseEvent,\n type KeyboardEvent as ReactKeyboardEvent,\n type Ref,\n forwardRef,\n useEffect,\n useId,\n useRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTestId } from \"../../testing/use-test-id\";\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.\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\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(function Dialog(\n { open, onClose, title, actions, children, testId },\n ref,\n) {\n const { overlay, surface, body, actions: actionsClass } = useStyles();\n const { testId: rootTestId, slot } = useTestId(\"dialog\", testId);\n const surfaceRef = useRef<HTMLDivElement | null>(null);\n // Mergea el ref reenviado por el consumidor con el surfaceRef interno (focus trap).\n const setSurfaceRef = (node: HTMLDivElement | null) => {\n surfaceRef.current = node;\n assignRef(ref, node);\n };\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={slot(\"overlay\")} onClick={onClose}>\n <div\n ref={setSurfaceRef}\n className={surface}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n tabIndex={-1}\n data-testid={rootTestId}\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=\"muted\">\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/dialog/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA4VT246jMAx95yvystLwkBGlrXYm_RgUEgPeDQnKhcKs5t9XpJChg1b7VOyc2ucc26_BAXV-VuAqM4JVfK6qq3c-vBXkT0bIYBx6NJqRBieQt4wQ1A48I8XyXXPxu7UmaMnIyO0LpU5Y7KsKzq0NthzzDSWtGWiDyoNlpFbBvlyGKb5KdIPiMyONgmlJcIWtpuihd4wI0B7skv4VnMdmpsJoD9rvnz4oagkTI9filn1mrztVLtiGC9hUnaKqI-26pQm5cn9_cDdWLpRXWIxox9FuuJPJiTMK5TPEhdqrr2Ltrhi1XGJwW81HRFWbKqoVPFHXcWnuydsY7ZDlz4js-UTvKH3HyOWtGKKJa_xe_NgQHWDb-SU1dsecfCQPw1h-qUQL4rEGwqjQ6-Vl4FKibhO5gQug7ppUyC8V-BGBq_zaxMomeIUaGNFGw__GxhojgqMjOqwVxCGm_5fD9DSBCE0WhXzXjJqmidtbLi49t6yNTMtfxg49ty1q6s3wTeQ5iazzzSRGTuREePAmmos6mRsvZbmuRpk7ndkKeu7Oo79uI3COBA7TONxAHA_oeJgt_86zTDz5uij_EHRJQJHfss-_msWWShcEAAA';\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 { forwardRef, useCallback, useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport { XIcon } from \"../icons/x\";\nimport type { SnackbarProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\nconst DEFAULT_DURATION = 5000;\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado: render `null` si !open.\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 const Snackbar = forwardRef<HTMLDivElement, SnackbarProps>(function Snackbar(\n { open, message, action, onClose, duration = DEFAULT_DURATION, testId },\n ref,\n) {\n const { root, message: messageClass, closeBtn } = useStyles();\n const { testId: dataTestId, slot } = useTestId(\"feedback\", testId);\n\n // El timer llama siempre a la última `onClose` recibida sin forzar que el\n // efecto de scheduling dependa de su identidad (evita reiniciar el timer\n // en cada render si el consumidor pasa un callback inline).\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n // A11y (WCAG 2.2.1 Timing Adjustable): mientras el puntero está sobre el\n // snackbar o el foco está dentro de él, el auto-dismiss se pausa por\n // completo; al terminar la interacción se reinicia con la duración\n // completa. Así nunca se cierra algo que el usuario está leyendo o con lo\n // que está interactuando.\n const interactingRef = useRef({ hover: false, focus: false });\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n const clearTimer = useCallback(() => {\n if (timeoutRef.current !== undefined) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n }, []);\n\n const scheduleTimer = useCallback(() => {\n clearTimer();\n if (!open || duration == null || !onCloseRef.current) return;\n if (interactingRef.current.hover || interactingRef.current.focus) return;\n timeoutRef.current = setTimeout(() => {\n onCloseRef.current?.();\n }, duration);\n }, [open, duration, clearTimer]);\n\n useEffect(() => {\n scheduleTimer();\n return clearTimer;\n }, [scheduleTimer, clearTimer]);\n\n const handleMouseEnter = () => {\n interactingRef.current.hover = true;\n clearTimer();\n };\n const handleMouseLeave = () => {\n interactingRef.current.hover = false;\n scheduleTimer();\n };\n const handleFocus = () => {\n interactingRef.current.focus = true;\n clearTimer();\n };\n const handleBlur = () => {\n interactingRef.current.focus = false;\n scheduleTimer();\n };\n\n if (!open || typeof document === \"undefined\") return null;\n return createPortal(\n <div\n ref={ref}\n role=\"status\"\n className={root}\n data-testid={dataTestId}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <span className={messageClass} data-testid={slot(\"message\")}>\n {message}\n </span>\n {action}\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n className={closeBtn}\n data-testid={slot(\"close\")}\n onClick={onClose}\n >\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/snackbar/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9faWh6c2VwMCB7CiAgcG9zaXRpb246IGZpeGVkOwogIGJvdHRvbTogdmFyKC0tc3BhY2UtczVfX2UzZ3J1cjFkKTsKICBsZWZ0OiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLXMzX19lM2dydXIxYik7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtczNfX2UzZ3J1cjFiKSB2YXIoLS1zcGFjZS1zNF9fZTNncnVyMWMpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgei1pbmRleDogNjA7Cn0KLnVzZS1zdHlsZXNfbWVzc2FnZV9faWh6c2VwMSB7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdGV4dF9fZTNncnVyMSk7CiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXNtYWxsLXNpemVfX2UzZ3J1cjEwKTsKfQoudXNlLXN0eWxlc19jbG9zZUJ0bl9faWh6c2VwMiB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogbm9uZTsKICBjb2xvcjogdmFyKC0tYmctcGFnZV9fZTNncnVyMjgpOwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1ci1mYXN0X19lM2dydXIyMSkgdmFyKC0tZWFzZS1pbmtfX2UzZ3J1cjI0KTsKICBvdXRsaW5lOiBub25lOwp9Ci51c2Utc3R5bGVzX2Nsb3NlQnRuX19paHpzZXAyOmhvdmVyIHsKICBvcGFjaXR5OiAwLjc7Cn0KLnVzZS1zdHlsZXNfY2xvc2VCdG5fX2loenNlcDI6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIydSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQ';\nexport var closeBtn = 'use-styles_closeBtn__ihzsep2';\nexport var message = 'use-styles_message__ihzsep1';\nexport var root = 'use-styles_root__ihzsep0 surfaces_inkySurface__1qa7atn2';","import { type Ref, forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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>.\n// La ref apunta al <table> (no hay wrapper de scroll).\n// `forwardRef` no preserva el genérico `Row`, así que casteamos el resultado para conservarlo.\nfunction TableInner<Row extends Record<string, unknown>>(\n { columns, rows, getRowKey, className, caption, testId, ...rest }: TableProps<Row>,\n ref: Ref<HTMLTableElement>,\n) {\n const { root, th, td, alignRight, caption: captionClass } = useStyles({ className });\n const { testId: dataTestId, slot } = useTestId(\"list\", testId);\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 ref={ref} className={root} data-testid={dataTestId} {...rest}>\n {caption != null && <caption className={captionClass}>{caption}</caption>}\n <thead>\n <tr>\n {columns.map((column) => (\n <th key={column.key} scope=\"col\" 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} data-testid={slot(`row-${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\n// Cast para preservar el genérico `Row` que `forwardRef` borraría.\nconst TableForwarded = forwardRef(TableInner);\nTableForwarded.displayName = \"Table\";\nexport const Table = TableForwarded as <Row extends Record<string, unknown>>(\n props: TableProps<Row> & { ref?: Ref<HTMLTableElement> },\n) => ReturnType<typeof TableInner>;\n","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 caption: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n [themeClass, className],\n );\n return {\n root,\n th: styles.th,\n td: styles.td,\n alignRight: styles.alignRight,\n caption: styles.caption,\n };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/table/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5VTy26EMAy88xW5VCqHrICtemD_oj-AAjEQNcTIMfto1X-vSJfso9tq9xbZY8_Y46wmD9LzwYKvCJGrKndF8_FqMvGZCLEzmvtS5Fn2tEmEqJE0kGzQWjV6KMXympMtOpatGow9lGKr6FnKEGLYc1XBuqOJ8nSTfCWrM1LuI2UeKP9qM6DDpU2RRkJvPmDBzUwSDlAT7kJiwb8EvAVmIOlH1RjXxSJSzbtxndwZDf6kdBtqQksm5XyLNJRiGkegRv1M3KBFiiI76aeabSQt4NRBWdO5UlhoeY6NSuszCbMikL6I3Cq9zKxjpk7PfKiRGYelyzFI00lCPqbCozX6EqKhVZONoxb9sel-XlrQFQn2v_zS0a8i-HV7lkcU98pQhONNxVeb7dKb62dC10VQ88-R-EFZe3EiefbAEoKdb6brT_9lHZZxbjbN-evKRo1s0MWyl1B2jEpvNJSCcfzrcO79Yw_PfdcpH62-cvHG9W6Sr29Ur63OWQQAAA';\nexport var alignRight = 'use-styles_alignRight__1n2cz6i3';\nexport var caption = 'use-styles_caption__1n2cz6i4';\nexport var root = 'use-styles_root__1n2cz6i0';\nexport var td = 'use-styles_td__1n2cz6i2';\nexport var th = 'use-styles_th__1n2cz6i1';","import { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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 const AppBar = forwardRef<HTMLElement, AppBarProps>(function AppBar(\n { brand, actions, className, children, testId, ...rest },\n ref,\n) {\n const styles = useStyles({ className });\n const { testId: dataTestId, slot } = useTestId(\"nav\", testId);\n return (\n <header ref={ref} className={styles.root} data-testid={dataTestId} {...rest}>\n {brand !== undefined ? (\n <div className={styles.brand} data-testid={slot(\"brand\")}>\n {brand}\n </div>\n ) : null}\n {children}\n {actions !== undefined ? (\n <div className={styles.actions} data-testid={slot(\"actions\")}>\n {actions}\n </div>\n ) : null}\n </header>\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/app-bar/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMWgxMzNuaDAgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgZ2FwOiB2YXIoLS1zcGFjZS1zNF9fZTNncnVyMWMpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXMzX19lM2dydXIxYikgdmFyKC0tc3BhY2UtczRfX2UzZ3J1cjFjKTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wYWdlX19lM2dydXIyOCk7CiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKSBzb2xpZCB2YXIoLS1ib3JkZXItc3VidGxlX19lM2dydXIyZyk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoudXNlLXN0eWxlc19icmFuZF9fMWgxMzNuaDEgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWRpc3BsYXlfX2UzZ3J1cjApOwp9Ci51c2Utc3R5bGVzX2FjdGlvbnNfXzFoMTMzbmgyIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiB2YXIoLS1zcGFjZS1zMl9fZTNncnVyMWEpOwp9';\nexport var actions = 'use-styles_actions__1h133nh2';\nexport var brand = 'use-styles_brand__1h133nh1';\nexport var root = 'use-styles_root__1h133nh0';","import { forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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 const ListItem = forwardRef<HTMLDivElement, ListItemProps>(function ListItem(\n { leading, trailing, selected, className, testId, children, ...rest },\n ref,\n) {\n const styles = useStyles({ selected, className });\n const { testId: dataTestId, slot } = useTestId(\"list\", testId);\n return (\n <div\n ref={ref}\n className={styles.root}\n data-testid={dataTestId}\n data-state={states({ selected })}\n {...rest}\n >\n {leading != null && (\n <span className={styles.leading} data-testid={slot(\"leading\")}>\n {leading}\n </span>\n )}\n <span className={styles.content} data-testid={slot(\"content\")}>\n {children}\n </span>\n {trailing != null && (\n <span className={styles.trailing} data-testid={slot(\"trailing\")}>\n {trailing}\n </span>\n )}\n </div>\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/list-item/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fa2JyZXExMCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtczNfX2UzZ3J1cjFiKTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1zM19fZTNncnVyMWIpIHZhcigtLXNwYWNlLXM0X19lM2dydXIxYyk7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyLWZhc3RfX2UzZ3J1cjIxKSB2YXIoLS1lYXNlLWlua19fZTNncnVyMjQpOwp9Ci51c2Utc3R5bGVzX3Jvb3RfX2ticmVxMTA6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLWJnLXN1bmtlbl9fZTNncnVyMmEpOwp9Ci51c2Utc3R5bGVzX3NlbGVjdGVkX19rYnJlcTExIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zdW5rZW5fX2UzZ3J1cjJhKTsKICBib3gtc2hhZG93OiBpbnNldCAycHggMCAwIHZhcigtLWFjY2VudC1iYXNlX19lM2dydXIyaik7Cn0KLnVzZS1zdHlsZXNfbGVhZGluZ19fa2JyZXExMiB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci51c2Utc3R5bGVzX2NvbnRlbnRfX2ticmVxMTMgewogIGZsZXg6IDE7Cn0KLnVzZS1zdHlsZXNfdHJhaWxpbmdfX2ticmVxMTQgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQ';\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 { IconProps } from \"../types\";\n\nexport function AlertCircleIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\" />\n <line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ArchiveIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"20\" height=\"5\" x=\"2\" y=\"3\" rx=\"1\" />\n <path d=\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\" />\n <path d=\"M10 12h4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ArrowDownIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12 5v14\" />\n <path d=\"m19 12-7 7-7-7\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ArrowLeftIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m12 19-7-7 7-7\" />\n <path d=\"M19 12H5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ArrowRightIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M5 12h14\" />\n <path d=\"m12 5 7 7-7 7\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ArrowUpIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m5 12 7-7 7 7\" />\n <path d=\"M12 19V5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function AtSignIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path d=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function BellIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\" />\n <path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function BellOffIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M8.7 3A6 6 0 0 1 18 8a21.3 21.3 0 0 0 .6 5\" />\n <path d=\"M17 17H3s3-2 3-9a4.67 4.67 0 0 1 .3-1.7\" />\n <path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\" />\n <path d=\"m2 2 20 20\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function BookmarkIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CalendarIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M8 2v4\" />\n <path d=\"M16 2v4\" />\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\" />\n <path d=\"M3 10h18\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CameraIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z\" />\n <circle cx=\"12\" cy=\"13\" r=\"3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ChevronUpIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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 ChevronsLeftIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m11 17-5-5 5-5\" />\n <path d=\"m18 17-5-5 5-5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ChevronsRightIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m6 17 5-5-5-5\" />\n <path d=\"m13 17 5-5-5-5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ClipboardIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\" />\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ClockIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CloudIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CopyIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" />\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CornerDownRightIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polyline points=\"15 10 20 15 15 20\" />\n <path d=\"M4 4v7a4 4 0 0 0 4 4h12\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CreditCardIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"20\" height=\"14\" x=\"2\" y=\"5\" rx=\"2\" />\n <line x1=\"2\" x2=\"22\" y1=\"10\" y2=\"10\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function DollarSignIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"22\" />\n <path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function DownloadIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" x2=\"12\" y1=\"15\" y2=\"3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ExternalLinkIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M15 3h6v6\" />\n <path d=\"M10 14 21 3\" />\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FileIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FileTextIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n <path d=\"M16 13H8\" />\n <path d=\"M16 17H8\" />\n <path d=\"M10 9H8\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FilterIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FingerprintIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M2 12C2 6.5 6.5 2 12 2a10 10 0 0 1 8 4\" />\n <path d=\"M5 19.5C5.5 18 6 15 6 12c0-.7.12-1.37.34-2\" />\n <path d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\" />\n <path d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\" />\n <path d=\"M8.65 22c.21-.66.45-1.32.57-2\" />\n <path d=\"M14 13.12c0 2.38 0 6.38-1 8.88\" />\n <path d=\"M2 16h.01\" />\n <path d=\"M21.8 16c.2-2 .131-5.354 0-6\" />\n <path d=\"M9 6.8a6 6 0 0 1 9 5.2c0 .47 0 1.17-.02 2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FolderIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FolderOpenIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function GiftIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect x=\"3\" y=\"8\" width=\"18\" height=\"4\" rx=\"1\" />\n <path d=\"M12 8v13\" />\n <path d=\"M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7\" />\n <path d=\"M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function GitHubIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function GlobeIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\" />\n <path d=\"M2 12h20\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function GridIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M3 9h18\" />\n <path d=\"M3 15h18\" />\n <path d=\"M9 3v18\" />\n <path d=\"M15 3v18\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function HeartIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function HelpCircleIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function HomeIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n <polyline points=\"9 22 9 12 15 12 15 22\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ImageIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\" />\n <circle cx=\"9\" cy=\"9\" r=\"2\" />\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function InboxIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\" />\n <path d=\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function KeyIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L21 4.5\" />\n <path d=\"m21 2-9.6 9.6\" />\n <circle cx=\"7.5\" cy=\"15.5\" r=\"5.5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LayoutIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"7\" height=\"9\" x=\"3\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"5\" x=\"14\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"9\" x=\"14\" y=\"12\" rx=\"1\" />\n <rect width=\"7\" height=\"5\" x=\"3\" y=\"16\" rx=\"1\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LinkIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ListIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"6\" y2=\"6\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"12\" y2=\"12\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"18\" y2=\"18\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LoaderIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"6\" />\n <line x1=\"12\" x2=\"12\" y1=\"18\" y2=\"22\" />\n <line x1=\"4.93\" x2=\"7.76\" y1=\"4.93\" y2=\"7.76\" />\n <line x1=\"16.24\" x2=\"19.07\" y1=\"16.24\" y2=\"19.07\" />\n <line x1=\"2\" x2=\"6\" y1=\"12\" y2=\"12\" />\n <line x1=\"18\" x2=\"22\" y1=\"12\" y2=\"12\" />\n <line x1=\"4.93\" x2=\"7.76\" y1=\"19.07\" y2=\"16.24\" />\n <line x1=\"16.24\" x2=\"19.07\" y1=\"7.76\" y2=\"4.93\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LockIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LogInIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\" />\n <polyline points=\"10 17 15 12 10 7\" />\n <line x1=\"15\" x2=\"3\" y1=\"12\" y2=\"12\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LogOutIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16 17 21 12 16 7\" />\n <line x1=\"21\" x2=\"9\" y1=\"12\" y2=\"12\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MailIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\" />\n <path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MapPinIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\n <circle cx=\"12\" cy=\"10\" r=\"3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MaximizeIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M8 3H5a2 2 0 0 0-2 2v3\" />\n <path d=\"M21 8V5a2 2 0 0 0-2-2h-3\" />\n <path d=\"M3 16v3a2 2 0 0 0 2 2h3\" />\n <path d=\"M16 21h3a2 2 0 0 0 2-2v-3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MenuIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"4\" x2=\"20\" y1=\"12\" y2=\"12\" />\n <line x1=\"4\" x2=\"20\" y1=\"6\" y2=\"6\" />\n <line x1=\"4\" x2=\"20\" y1=\"18\" y2=\"18\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MessageCircleIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MessageSquareIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MicIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MinimizeIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M8 3v3a2 2 0 0 1-2 2H3\" />\n <path d=\"M21 8h-3a2 2 0 0 1-2-2V3\" />\n <path d=\"M3 16h3a2 2 0 0 1 2 2v3\" />\n <path d=\"M16 21v-3a2 2 0 0 1 2-2h3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MinusIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M5 12h14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MoonIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MoreHorizontalIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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 type { IconProps } from \"../types\";\n\nexport function MoreVerticalIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"12\" cy=\"5\" r=\"1\" />\n <circle cx=\"12\" cy=\"19\" r=\"1\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PackageIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z\" />\n <path d=\"M3.3 7 12 12l8.7-5\" />\n <path d=\"M12 22V12\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PaperclipIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PauseIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect x=\"14\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\" />\n <rect x=\"6\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PencilIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" />\n <path d=\"m15 5 4 4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PhoneIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PlayIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"6 3 20 12 6 21 6 3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PlusIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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 PrinterIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polyline points=\"6 9 6 2 18 2 18 9\" />\n <path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\" />\n <rect width=\"12\" height=\"8\" x=\"6\" y=\"14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function RedoIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M21 7v6h-6\" />\n <path d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function RefreshCwIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" />\n <path d=\"M21 3v5h-5\" />\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" />\n <path d=\"M3 21v-5h5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SaveIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z\" />\n <path d=\"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7\" />\n <path d=\"M7 3v4a1 1 0 0 0 1 1h7\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SearchIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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 SendIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"22\" x2=\"11\" y1=\"2\" y2=\"13\" />\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SettingsIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ShareIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\" />\n <polyline points=\"16 6 12 2 8 6\" />\n <line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"15\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ShieldIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ShieldCheckIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ShoppingBagIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z\" />\n <path d=\"M3 6h18\" />\n <path d=\"M16 10a4 4 0 0 1-8 0\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ShoppingCartIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"8\" cy=\"21\" r=\"1\" />\n <circle cx=\"19\" cy=\"21\" r=\"1\" />\n <path d=\"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SidebarIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SkipBackIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"19 20 9 12 19 4 19 20\" />\n <line x1=\"5\" x2=\"5\" y1=\"19\" y2=\"5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SkipForwardIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"5 4 15 12 5 20 5 4\" />\n <line x1=\"19\" x2=\"19\" y1=\"5\" y2=\"19\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SlidersIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"21\" x2=\"14\" y1=\"4\" y2=\"4\" />\n <line x1=\"10\" x2=\"3\" y1=\"4\" y2=\"4\" />\n <line x1=\"21\" x2=\"12\" y1=\"12\" y2=\"12\" />\n <line x1=\"8\" x2=\"3\" y1=\"12\" y2=\"12\" />\n <line x1=\"21\" x2=\"16\" y1=\"20\" y2=\"20\" />\n <line x1=\"12\" x2=\"3\" y1=\"20\" y2=\"20\" />\n <line x1=\"14\" x2=\"14\" y1=\"2\" y2=\"6\" />\n <line x1=\"8\" x2=\"8\" y1=\"10\" y2=\"14\" />\n <line x1=\"16\" x2=\"16\" y1=\"18\" y2=\"22\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SmileIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M8 14s1.5 2 4 2 4-2 4-2\" />\n <line x1=\"9\" x2=\"9.01\" y1=\"9\" y2=\"9\" />\n <line x1=\"15\" x2=\"15.01\" y1=\"9\" y2=\"9\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function StarIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SunIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path d=\"M12 2v2\" />\n <path d=\"M12 20v2\" />\n <path d=\"m4.93 4.93 1.41 1.41\" />\n <path d=\"m17.66 17.66 1.41 1.41\" />\n <path d=\"M2 12h2\" />\n <path d=\"M20 12h2\" />\n <path d=\"m6.34 17.66-1.41 1.41\" />\n <path d=\"m19.07 4.93-1.41 1.41\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function TagIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z\" />\n <circle cx=\"7.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ThumbsDownIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M17 14V2\" />\n <path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ThumbsUpIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M7 10v12\" />\n <path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function TrashIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M3 6h18\" />\n <path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\" />\n <path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UndoIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M3 7v6h6\" />\n <path d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UnlockIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 9.9-1\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UploadIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" x2=\"12\" y1=\"3\" y2=\"15\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UserIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UserCheckIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <polyline points=\"16 11 18 13 22 9\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UserPlusIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <line x1=\"19\" x2=\"19\" y1=\"8\" y2=\"14\" />\n <line x1=\"22\" x2=\"16\" y1=\"11\" y2=\"11\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UsersIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M22 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function Volume2Icon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\" />\n <path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\" />\n <path d=\"M19.07 4.93a10 10 0 0 1 0 14.14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function VolumeXIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\" />\n <line x1=\"22\" x2=\"16\" y1=\"9\" y2=\"15\" />\n <line x1=\"16\" x2=\"22\" y1=\"9\" y2=\"15\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function WifiIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12 20h.01\" />\n <path d=\"M2 8.82a15 15 0 0 1 20 0\" />\n <path d=\"M5 12.859a10 10 0 0 1 14 0\" />\n <path d=\"M8.5 16.429a5 5 0 0 1 7 0\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ZapIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\" />\n </svg>\n );\n}\n","export type { Icon, IconProps } from \"./types\";\n\nimport { AlertCircleIcon } from \"./alert-circle\";\nimport { ArchiveIcon } from \"./archive\";\nimport { ArrowDownIcon } from \"./arrow-down\";\nimport { ArrowLeftIcon } from \"./arrow-left\";\nimport { ArrowRightIcon } from \"./arrow-right\";\nimport { ArrowUpIcon } from \"./arrow-up\";\nimport { AtSignIcon } from \"./at-sign\";\nimport { BellIcon } from \"./bell\";\nimport { BellOffIcon } from \"./bell-off\";\nimport { BookmarkIcon } from \"./bookmark\";\nimport { CalendarIcon } from \"./calendar\";\nimport { CameraIcon } from \"./camera\";\nimport { CheckIcon } from \"./check\";\nimport { ChevronDownIcon } from \"./chevron-down\";\nimport { ChevronLeftIcon } from \"./chevron-left\";\nimport { ChevronRightIcon } from \"./chevron-right\";\nimport { ChevronUpIcon } from \"./chevron-up\";\nimport { ChevronsLeftIcon } from \"./chevrons-left\";\nimport { ChevronsRightIcon } from \"./chevrons-right\";\nimport { CircleCheckIcon } from \"./circle-check\";\nimport { CircleXIcon } from \"./circle-x\";\nimport { ClipboardIcon } from \"./clipboard\";\nimport { ClockIcon } from \"./clock\";\nimport { CloudIcon } from \"./cloud\";\nimport { CopyIcon } from \"./copy\";\nimport { CornerDownRightIcon } from \"./corner-down-right\";\nimport { CreditCardIcon } from \"./credit-card\";\nimport { DollarSignIcon } from \"./dollar-sign\";\nimport { DownloadIcon } from \"./download\";\nimport { ExternalLinkIcon } from \"./external-link\";\nimport { EyeIcon } from \"./eye\";\nimport { EyeOffIcon } from \"./eye-off\";\nimport { FileIcon } from \"./file\";\nimport { FileTextIcon } from \"./file-text\";\nimport { FilterIcon } from \"./filter\";\nimport { FingerprintIcon } from \"./fingerprint\";\nimport { FolderIcon } from \"./folder\";\nimport { FolderOpenIcon } from \"./folder-open\";\nimport { GiftIcon } from \"./gift\";\nimport { GitHubIcon } from \"./github\";\nimport { GlobeIcon } from \"./globe\";\nimport { GridIcon } from \"./grid\";\nimport { HeartIcon } from \"./heart\";\nimport { HelpCircleIcon } from \"./help-circle\";\nimport { HomeIcon } from \"./home\";\nimport { ImageIcon } from \"./image\";\nimport { InboxIcon } from \"./inbox\";\nimport { InfoIcon } from \"./info\";\nimport { KeyIcon } from \"./key\";\nimport { LayoutIcon } from \"./layout\";\nimport { LinkIcon } from \"./link\";\nimport { ListIcon } from \"./list\";\nimport { LoaderIcon } from \"./loader\";\nimport { LockIcon } from \"./lock\";\nimport { LogInIcon } from \"./log-in\";\nimport { LogOutIcon } from \"./log-out\";\nimport { MailIcon } from \"./mail\";\nimport { MapPinIcon } from \"./map-pin\";\nimport { MaximizeIcon } from \"./maximize\";\nimport { MenuIcon } from \"./menu\";\nimport { MessageCircleIcon } from \"./message-circle\";\nimport { MessageSquareIcon } from \"./message-square\";\nimport { MicIcon } from \"./mic\";\nimport { MinimizeIcon } from \"./minimize\";\nimport { MinusIcon } from \"./minus\";\nimport { MoonIcon } from \"./moon\";\nimport { MoreHorizontalIcon } from \"./more-horizontal\";\nimport { MoreVerticalIcon } from \"./more-vertical\";\nimport { PackageIcon } from \"./package\";\nimport { PaperclipIcon } from \"./paperclip\";\nimport { PauseIcon } from \"./pause\";\nimport { PencilIcon } from \"./pencil\";\nimport { PhoneIcon } from \"./phone\";\nimport { PlayIcon } from \"./play\";\nimport { PlusIcon } from \"./plus\";\nimport { PrinterIcon } from \"./printer\";\nimport { RedoIcon } from \"./redo\";\nimport { RefreshCwIcon } from \"./refresh-cw\";\nimport { SaveIcon } from \"./save\";\nimport { SearchIcon } from \"./search\";\nimport { SendIcon } from \"./send\";\nimport { SettingsIcon } from \"./settings\";\nimport { ShareIcon } from \"./share\";\nimport { ShieldIcon } from \"./shield\";\nimport { ShieldCheckIcon } from \"./shield-check\";\nimport { ShoppingBagIcon } from \"./shopping-bag\";\nimport { ShoppingCartIcon } from \"./shopping-cart\";\nimport { SidebarIcon } from \"./sidebar\";\nimport { SkipBackIcon } from \"./skip-back\";\nimport { SkipForwardIcon } from \"./skip-forward\";\nimport { SlidersIcon } from \"./sliders\";\nimport { SmileIcon } from \"./smile\";\nimport { StarIcon } from \"./star\";\nimport { SunIcon } from \"./sun\";\nimport { TagIcon } from \"./tag\";\nimport { ThumbsDownIcon } from \"./thumbs-down\";\nimport { ThumbsUpIcon } from \"./thumbs-up\";\nimport { TrashIcon } from \"./trash\";\nimport { TriangleAlertIcon } from \"./triangle-alert\";\nimport type { Icon } from \"./types\";\nimport { UndoIcon } from \"./undo\";\nimport { UnlockIcon } from \"./unlock\";\nimport { UploadIcon } from \"./upload\";\nimport { UserIcon } from \"./user\";\nimport { UserCheckIcon } from \"./user-check\";\nimport { UserPlusIcon } from \"./user-plus\";\nimport { UsersIcon } from \"./users\";\nimport { Volume2Icon } from \"./volume-2\";\nimport { VolumeXIcon } from \"./volume-x\";\nimport { WifiIcon } from \"./wifi\";\nimport { XIcon } from \"./x\";\nimport { ZapIcon } from \"./zap\";\n\nexport {\n AlertCircleIcon,\n ArchiveIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowUpIcon,\n AtSignIcon,\n BellIcon,\n BellOffIcon,\n BookmarkIcon,\n CalendarIcon,\n CameraIcon,\n CheckIcon,\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronsLeftIcon,\n ChevronsRightIcon,\n ChevronUpIcon,\n CircleCheckIcon,\n CircleXIcon,\n ClipboardIcon,\n ClockIcon,\n CloudIcon,\n CopyIcon,\n CornerDownRightIcon,\n CreditCardIcon,\n DollarSignIcon,\n DownloadIcon,\n ExternalLinkIcon,\n EyeIcon,\n EyeOffIcon,\n FileIcon,\n FileTextIcon,\n FilterIcon,\n FingerprintIcon,\n FolderIcon,\n FolderOpenIcon,\n GiftIcon,\n GitHubIcon,\n GlobeIcon,\n GridIcon,\n HeartIcon,\n HelpCircleIcon,\n HomeIcon,\n ImageIcon,\n InboxIcon,\n InfoIcon,\n KeyIcon,\n LayoutIcon,\n LinkIcon,\n ListIcon,\n LoaderIcon,\n LockIcon,\n LogInIcon,\n LogOutIcon,\n MailIcon,\n MapPinIcon,\n MaximizeIcon,\n MenuIcon,\n MessageCircleIcon,\n MessageSquareIcon,\n MicIcon,\n MinimizeIcon,\n MinusIcon,\n MoonIcon,\n MoreHorizontalIcon,\n MoreVerticalIcon,\n PackageIcon,\n PaperclipIcon,\n PauseIcon,\n PencilIcon,\n PhoneIcon,\n PlayIcon,\n PlusIcon,\n PrinterIcon,\n RedoIcon,\n RefreshCwIcon,\n SaveIcon,\n SearchIcon,\n SendIcon,\n SettingsIcon,\n ShareIcon,\n ShieldCheckIcon,\n ShieldIcon,\n ShoppingBagIcon,\n ShoppingCartIcon,\n SidebarIcon,\n SkipBackIcon,\n SkipForwardIcon,\n SlidersIcon,\n SmileIcon,\n StarIcon,\n SunIcon,\n TagIcon,\n ThumbsDownIcon,\n ThumbsUpIcon,\n TrashIcon,\n TriangleAlertIcon,\n UndoIcon,\n UnlockIcon,\n UploadIcon,\n UserCheckIcon,\n UserIcon,\n UserPlusIcon,\n UsersIcon,\n Volume2Icon,\n VolumeXIcon,\n WifiIcon,\n XIcon,\n ZapIcon,\n};\n\nexport const iconCatalog: { name: string; Icon: Icon }[] = [\n { name: \"AlertCircleIcon\", Icon: AlertCircleIcon },\n { name: \"ArchiveIcon\", Icon: ArchiveIcon },\n { name: \"ArrowDownIcon\", Icon: ArrowDownIcon },\n { name: \"ArrowLeftIcon\", Icon: ArrowLeftIcon },\n { name: \"ArrowRightIcon\", Icon: ArrowRightIcon },\n { name: \"ArrowUpIcon\", Icon: ArrowUpIcon },\n { name: \"AtSignIcon\", Icon: AtSignIcon },\n { name: \"BellIcon\", Icon: BellIcon },\n { name: \"BellOffIcon\", Icon: BellOffIcon },\n { name: \"BookmarkIcon\", Icon: BookmarkIcon },\n { name: \"CalendarIcon\", Icon: CalendarIcon },\n { name: \"CameraIcon\", Icon: CameraIcon },\n { name: \"CheckIcon\", Icon: CheckIcon },\n { name: \"ChevronDownIcon\", Icon: ChevronDownIcon },\n { name: \"ChevronLeftIcon\", Icon: ChevronLeftIcon },\n { name: \"ChevronRightIcon\", Icon: ChevronRightIcon },\n { name: \"ChevronsLeftIcon\", Icon: ChevronsLeftIcon },\n { name: \"ChevronsRightIcon\", Icon: ChevronsRightIcon },\n { name: \"ChevronUpIcon\", Icon: ChevronUpIcon },\n { name: \"CircleCheckIcon\", Icon: CircleCheckIcon },\n { name: \"CircleXIcon\", Icon: CircleXIcon },\n { name: \"ClipboardIcon\", Icon: ClipboardIcon },\n { name: \"ClockIcon\", Icon: ClockIcon },\n { name: \"CloudIcon\", Icon: CloudIcon },\n { name: \"CopyIcon\", Icon: CopyIcon },\n { name: \"CornerDownRightIcon\", Icon: CornerDownRightIcon },\n { name: \"CreditCardIcon\", Icon: CreditCardIcon },\n { name: \"DollarSignIcon\", Icon: DollarSignIcon },\n { name: \"DownloadIcon\", Icon: DownloadIcon },\n { name: \"ExternalLinkIcon\", Icon: ExternalLinkIcon },\n { name: \"EyeIcon\", Icon: EyeIcon },\n { name: \"EyeOffIcon\", Icon: EyeOffIcon },\n { name: \"FileIcon\", Icon: FileIcon },\n { name: \"FileTextIcon\", Icon: FileTextIcon },\n { name: \"FilterIcon\", Icon: FilterIcon },\n { name: \"FingerprintIcon\", Icon: FingerprintIcon },\n { name: \"FolderIcon\", Icon: FolderIcon },\n { name: \"FolderOpenIcon\", Icon: FolderOpenIcon },\n { name: \"GiftIcon\", Icon: GiftIcon },\n { name: \"GitHubIcon\", Icon: GitHubIcon },\n { name: \"GlobeIcon\", Icon: GlobeIcon },\n { name: \"GridIcon\", Icon: GridIcon },\n { name: \"HeartIcon\", Icon: HeartIcon },\n { name: \"HelpCircleIcon\", Icon: HelpCircleIcon },\n { name: \"HomeIcon\", Icon: HomeIcon },\n { name: \"ImageIcon\", Icon: ImageIcon },\n { name: \"InboxIcon\", Icon: InboxIcon },\n { name: \"InfoIcon\", Icon: InfoIcon },\n { name: \"KeyIcon\", Icon: KeyIcon },\n { name: \"LayoutIcon\", Icon: LayoutIcon },\n { name: \"LinkIcon\", Icon: LinkIcon },\n { name: \"ListIcon\", Icon: ListIcon },\n { name: \"LoaderIcon\", Icon: LoaderIcon },\n { name: \"LockIcon\", Icon: LockIcon },\n { name: \"LogInIcon\", Icon: LogInIcon },\n { name: \"LogOutIcon\", Icon: LogOutIcon },\n { name: \"MailIcon\", Icon: MailIcon },\n { name: \"MapPinIcon\", Icon: MapPinIcon },\n { name: \"MaximizeIcon\", Icon: MaximizeIcon },\n { name: \"MenuIcon\", Icon: MenuIcon },\n { name: \"MessageCircleIcon\", Icon: MessageCircleIcon },\n { name: \"MessageSquareIcon\", Icon: MessageSquareIcon },\n { name: \"MicIcon\", Icon: MicIcon },\n { name: \"MinimizeIcon\", Icon: MinimizeIcon },\n { name: \"MinusIcon\", Icon: MinusIcon },\n { name: \"MoonIcon\", Icon: MoonIcon },\n { name: \"MoreHorizontalIcon\", Icon: MoreHorizontalIcon },\n { name: \"MoreVerticalIcon\", Icon: MoreVerticalIcon },\n { name: \"PackageIcon\", Icon: PackageIcon },\n { name: \"PaperclipIcon\", Icon: PaperclipIcon },\n { name: \"PauseIcon\", Icon: PauseIcon },\n { name: \"PencilIcon\", Icon: PencilIcon },\n { name: \"PhoneIcon\", Icon: PhoneIcon },\n { name: \"PlayIcon\", Icon: PlayIcon },\n { name: \"PlusIcon\", Icon: PlusIcon },\n { name: \"PrinterIcon\", Icon: PrinterIcon },\n { name: \"RedoIcon\", Icon: RedoIcon },\n { name: \"RefreshCwIcon\", Icon: RefreshCwIcon },\n { name: \"SaveIcon\", Icon: SaveIcon },\n { name: \"SearchIcon\", Icon: SearchIcon },\n { name: \"SendIcon\", Icon: SendIcon },\n { name: \"SettingsIcon\", Icon: SettingsIcon },\n { name: \"ShareIcon\", Icon: ShareIcon },\n { name: \"ShieldCheckIcon\", Icon: ShieldCheckIcon },\n { name: \"ShieldIcon\", Icon: ShieldIcon },\n { name: \"ShoppingBagIcon\", Icon: ShoppingBagIcon },\n { name: \"ShoppingCartIcon\", Icon: ShoppingCartIcon },\n { name: \"SidebarIcon\", Icon: SidebarIcon },\n { name: \"SkipBackIcon\", Icon: SkipBackIcon },\n { name: \"SkipForwardIcon\", Icon: SkipForwardIcon },\n { name: \"SlidersIcon\", Icon: SlidersIcon },\n { name: \"SmileIcon\", Icon: SmileIcon },\n { name: \"StarIcon\", Icon: StarIcon },\n { name: \"SunIcon\", Icon: SunIcon },\n { name: \"TagIcon\", Icon: TagIcon },\n { name: \"ThumbsDownIcon\", Icon: ThumbsDownIcon },\n { name: \"ThumbsUpIcon\", Icon: ThumbsUpIcon },\n { name: \"TrashIcon\", Icon: TrashIcon },\n { name: \"TriangleAlertIcon\", Icon: TriangleAlertIcon },\n { name: \"UndoIcon\", Icon: UndoIcon },\n { name: \"UnlockIcon\", Icon: UnlockIcon },\n { name: \"UploadIcon\", Icon: UploadIcon },\n { name: \"UserCheckIcon\", Icon: UserCheckIcon },\n { name: \"UserIcon\", Icon: UserIcon },\n { name: \"UserPlusIcon\", Icon: UserPlusIcon },\n { name: \"UsersIcon\", Icon: UsersIcon },\n { name: \"Volume2Icon\", Icon: Volume2Icon },\n { name: \"VolumeXIcon\", Icon: VolumeXIcon },\n { name: \"WifiIcon\", Icon: WifiIcon },\n { name: \"XIcon\", Icon: XIcon },\n { name: \"ZapIcon\", Icon: ZapIcon },\n];\n"],"mappings":"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","names":["Card","import_react","import_react","import_react","import_react","_ad221","import_jsx_runtime","import_react","import_react","import_react","schemaNames","modeNames","active","modeNames","import_react","import_jsx_runtime","useStyles","fill","import_jsx_runtime","fill","surface","useStyles","import_react","import_react","useStyles","variant","color","align","import_jsx_runtime","variant","color","align","text","useStyles","import_react","active","import_react","variant","tone","useStyles","size","full","selected","import_jsx_runtime","Button","variant","tone","size","full","selected","content","spinner","useStyles","import_react","import_react","root","useStyles","vertical","root","import_jsx_runtime","Divider","vertical","label","root","line","useStyles","import_react","import_react","root","size","useStyles","size","root","import_jsx_runtime","Avatar","size","root","useStyles","import_react","import_react","root","tone","useStyles","tone","root","dot","import_jsx_runtime","Badge","tone","root","dot","useStyles","import_react","import_react","spinner","useStyles","variant","indeterminate","root","spinner","import_jsx_runtime","Progress","variant","size","track","bar","spinner","useStyles","indeterminate","import_react","import_jsx_runtime","size","import_react","root","selected","tone","useStyles","selected","tone","clickable","root","import_jsx_runtime","ICON_SIZE","Chip","selected","tone","clickable","root","deleteBtn","useStyles","import_react","import_jsx_runtime","size","import_react","root","useStyles","disabled","root","box","import_jsx_runtime","Checkbox","label","disabled","root","input","box","check","useStyles","import_react","import_react","disabled","dot","input","label","root","useStyles","disabled","root","input","dot","label","import_jsx_runtime","Radio","label","disabled","root","input","circle","dot","useStyles","import_react","import_react","disabled","label","root","useStyles","disabled","root","list","label","import_jsx_runtime","RadioGroup","label","disabled","root","list","useStyles","option","step","import_react","import_react","input","label","root","track","useStyles","root","input","track","label","import_jsx_runtime","Switch","label","disabled","root","input","track","knob","useStyles","import_react","import_react","import_react","input","root","useStyles","root","labelText","input","helpText","import_jsx_runtime","BaseField","label","trailing","message","useStyles","import_jsx_runtime","TextField","label","import_react","import_jsx_runtime","size","import_jsx_runtime","size","import_react","useStyles","import_jsx_runtime","PasswordField","label","useStyles","import_react","import_jsx_runtime","MoneyField","label","import_react","import_react","root","useStyles","active","tone","root","import_jsx_runtime","IconButton","active","tone","root","useStyles","import_react","import_react","root","useStyles","root","import_jsx_runtime","root","useStyles","header","body","footer","Card","import_react","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_react","content","root","useStyles","severity","root","content","import_jsx_runtime","Alert","severity","useStyles","import_react","import_react","useStyles","placement","wrapper","bubble","import_jsx_runtime","Tooltip","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","Select","placeholder","label","disabled","root","trigger","chevron","menu","useStyles","selected","option","current","import_react","import_react","input","label","root","track","wrapper","useStyles","root","wrapper","label","track","input","import_jsx_runtime","Slider","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","Accordion","root","item","header","panel","useStyles","current","import_react","import_jsx_runtime","size","import_react","root","useStyles","root","import_jsx_runtime","Breadcrumbs","root","crumb","current","separator","useStyles","item","import_react","import_jsx_runtime","size","import_react","root","useStyles","root","active","import_jsx_runtime","Pagination","root","ellipsis","nav","useStyles","current","item","import_react","import_react","label","root","useStyles","root","active","label","import_jsx_runtime","Stepper","active","root","step","connector","useStyles","import_react","import_react","panel","root","useStyles","root","active","panel","import_jsx_runtime","ICON_SIZE","Tabs","root","panel","useStyles","item","active","import_react","import_react","item","list","wrapper","useStyles","wrapper","list","item","import_jsx_runtime","ICON_SIZE","Menu","trigger","wrapper","list","item","useStyles","current","import_react","import_react","body","surface","useStyles","surface","body","import_jsx_runtime","assignRef","Dialog","actions","overlay","surface","body","useStyles","active","import_react","import_react_dom","import_react","root","useStyles","root","import_jsx_runtime","Snackbar","message","root","closeBtn","useStyles","import_react","import_react","root","useStyles","root","import_jsx_runtime","caption","root","th","td","alignRight","useStyles","import_react","import_react","actions","root","useStyles","root","actions","import_jsx_runtime","AppBar","brand","actions","useStyles","import_react","import_react","content","root","selected","useStyles","selected","root","content","import_jsx_runtime","ListItem","leading","trailing","selected","useStyles","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","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/container/index.tsx","../src/testing/use-test-id.ts","../src/testing/compose.ts","../src/testing/context/test-id-context.tsx","../src/theme/styles/sprinkles/index.css.ts","../src/components/container/use-styles.ts","../src/components/surface/index.tsx","../src/components/surface/use-styles.ts","../../core/src/tokens.ts","../../core/src/schemas/docslingo.ts","../../core/src/schemas/tinta.ts","../../core/src/schemas/index.ts","../../core/src/theme-types.ts","../../core/src/color-shape.ts","../../core/src/store/use-theme-store.ts","../../core/src/store/resolve-mode.ts","../../core/src/store/sanitize-persisted.ts","../src/theme/context/theme-context.tsx","../src/theme/adapters.ts","../src/components/surface/use-styles.css.ts","../src/components/typography/index.tsx","../src/components/typography/use-styles.ts","../src/theme/typography.css.ts","../src/components/typography/use-styles.css.ts","../src/components/button/index.tsx","../src/testing/states.ts","../src/components/button/use-styles.ts","../src/components/button/use-styles.css.ts","../src/components/divider/index.tsx","../src/components/divider/use-styles.ts","../src/components/divider/use-styles.css.ts","../src/components/avatar/index.tsx","../src/components/avatar/use-styles.ts","../src/components/avatar/use-styles.css.ts","../src/components/badge/index.tsx","../src/components/badge/use-styles.ts","../src/components/badge/use-styles.css.ts","../src/components/progress/index.tsx","../src/components/progress/use-styles.ts","../src/components/progress/use-styles.css.ts","../src/components/chip/index.tsx","../src/components/icons/x/index.tsx","../src/components/chip/use-styles.ts","../src/components/chip/use-styles.css.ts","../src/components/checkbox/index.tsx","../src/components/icons/check/index.tsx","../src/components/checkbox/use-styles.ts","../src/components/checkbox/use-styles.css.ts","../src/components/radio/index.tsx","../src/components/radio/use-styles.ts","../src/components/radio/use-styles.css.ts","../src/components/radio-group/index.tsx","../src/components/radio-group/use-styles.ts","../src/components/radio-group/use-styles.css.ts","../src/components/switch/index.tsx","../src/components/switch/use-styles.ts","../src/components/switch/use-styles.css.ts","../src/components/text-field/index.tsx","../src/components/base-field/index.tsx","../src/components/base-field/use-styles.ts","../src/components/base-field/use-styles.css.ts","../src/components/password-field/index.tsx","../src/components/icons/eye/index.tsx","../src/components/icons/eye-off/index.tsx","../src/components/password-field/use-styles.ts","../src/components/password-field/use-styles.css.ts","../src/components/money-field/index.tsx","../src/components/icon-button/index.tsx","../src/components/icon-button/use-styles.ts","../src/components/icon-button/use-styles.css.ts","../src/components/card/index.tsx","../src/components/card/use-styles.ts","../src/components/card/use-styles.css.ts","../src/components/alert/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/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/index.tsx","../src/components/slider/use-styles.ts","../src/components/slider/use-styles.css.ts","../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/pagination/index.tsx","../src/components/icons/chevron-left/index.tsx","../src/components/pagination/use-styles.ts","../src/components/pagination/use-styles.css.ts","../src/components/stepper/index.tsx","../src/components/stepper/use-styles.ts","../src/components/stepper/use-styles.css.ts","../src/components/tabs/index.tsx","../src/components/tabs/use-styles.ts","../src/components/tabs/use-styles.css.ts","../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/index.tsx","../src/components/table/use-styles.ts","../src/components/table/use-styles.css.ts","../src/components/app-bar/index.tsx","../src/components/app-bar/use-styles.ts","../src/components/app-bar/use-styles.css.ts","../src/components/list-item/index.tsx","../src/components/list-item/use-styles.ts","../src/components/list-item/use-styles.css.ts","../src/components/icons/alert-circle/index.tsx","../src/components/icons/archive/index.tsx","../src/components/icons/arrow-down/index.tsx","../src/components/icons/arrow-left/index.tsx","../src/components/icons/arrow-right/index.tsx","../src/components/icons/arrow-up/index.tsx","../src/components/icons/at-sign/index.tsx","../src/components/icons/bell/index.tsx","../src/components/icons/bell-off/index.tsx","../src/components/icons/bookmark/index.tsx","../src/components/icons/calendar/index.tsx","../src/components/icons/camera/index.tsx","../src/components/icons/chevron-up/index.tsx","../src/components/icons/chevrons-left/index.tsx","../src/components/icons/chevrons-right/index.tsx","../src/components/icons/clipboard/index.tsx","../src/components/icons/clock/index.tsx","../src/components/icons/cloud/index.tsx","../src/components/icons/copy/index.tsx","../src/components/icons/corner-down-right/index.tsx","../src/components/icons/credit-card/index.tsx","../src/components/icons/dollar-sign/index.tsx","../src/components/icons/download/index.tsx","../src/components/icons/external-link/index.tsx","../src/components/icons/file/index.tsx","../src/components/icons/file-text/index.tsx","../src/components/icons/filter/index.tsx","../src/components/icons/fingerprint/index.tsx","../src/components/icons/folder/index.tsx","../src/components/icons/folder-open/index.tsx","../src/components/icons/gift/index.tsx","../src/components/icons/github/index.tsx","../src/components/icons/globe/index.tsx","../src/components/icons/grid/index.tsx","../src/components/icons/heart/index.tsx","../src/components/icons/help-circle/index.tsx","../src/components/icons/home/index.tsx","../src/components/icons/image/index.tsx","../src/components/icons/inbox/index.tsx","../src/components/icons/key/index.tsx","../src/components/icons/layout/index.tsx","../src/components/icons/link/index.tsx","../src/components/icons/list/index.tsx","../src/components/icons/loader/index.tsx","../src/components/icons/lock/index.tsx","../src/components/icons/log-in/index.tsx","../src/components/icons/log-out/index.tsx","../src/components/icons/mail/index.tsx","../src/components/icons/map-pin/index.tsx","../src/components/icons/maximize/index.tsx","../src/components/icons/menu/index.tsx","../src/components/icons/message-circle/index.tsx","../src/components/icons/message-square/index.tsx","../src/components/icons/mic/index.tsx","../src/components/icons/minimize/index.tsx","../src/components/icons/minus/index.tsx","../src/components/icons/moon/index.tsx","../src/components/icons/more-horizontal/index.tsx","../src/components/icons/more-vertical/index.tsx","../src/components/icons/package/index.tsx","../src/components/icons/paperclip/index.tsx","../src/components/icons/pause/index.tsx","../src/components/icons/pencil/index.tsx","../src/components/icons/phone/index.tsx","../src/components/icons/play/index.tsx","../src/components/icons/plus/index.tsx","../src/components/icons/printer/index.tsx","../src/components/icons/redo/index.tsx","../src/components/icons/refresh-cw/index.tsx","../src/components/icons/save/index.tsx","../src/components/icons/search/index.tsx","../src/components/icons/send/index.tsx","../src/components/icons/settings/index.tsx","../src/components/icons/share/index.tsx","../src/components/icons/shield/index.tsx","../src/components/icons/shield-check/index.tsx","../src/components/icons/shopping-bag/index.tsx","../src/components/icons/shopping-cart/index.tsx","../src/components/icons/sidebar/index.tsx","../src/components/icons/skip-back/index.tsx","../src/components/icons/skip-forward/index.tsx","../src/components/icons/sliders/index.tsx","../src/components/icons/smile/index.tsx","../src/components/icons/star/index.tsx","../src/components/icons/sun/index.tsx","../src/components/icons/tag/index.tsx","../src/components/icons/thumbs-down/index.tsx","../src/components/icons/thumbs-up/index.tsx","../src/components/icons/trash/index.tsx","../src/components/icons/undo/index.tsx","../src/components/icons/unlock/index.tsx","../src/components/icons/upload/index.tsx","../src/components/icons/user/index.tsx","../src/components/icons/user-check/index.tsx","../src/components/icons/user-plus/index.tsx","../src/components/icons/users/index.tsx","../src/components/icons/volume-2/index.tsx","../src/components/icons/volume-x/index.tsx","../src/components/icons/wifi/index.tsx","../src/components/icons/zap/index.tsx","../src/components/icons/index.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 { Container } from \"./components/container\";\nexport type { ContainerProps } from \"./components/container/types\";\nexport { Surface } from \"./components/surface\";\nexport type { SurfaceProps } from \"./components/surface/types\";\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, AvatarStatus } 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 { RadioGroup } from \"./components/radio-group\";\nexport type {\n RadioGroupProps,\n RadioGroupOption,\n RadioGroupOrientation,\n} from \"./components/radio-group/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 { PasswordField } from \"./components/password-field\";\nexport type { PasswordFieldProps } from \"./components/password-field/types\";\nexport { MoneyField } from \"./components/money-field\";\nexport type { MoneyFieldProps } from \"./components/money-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 — set Tinta completo + registro `iconCatalog`. Ver components/icons/README.md.\nexport * from \"./components/icons\";\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.\n// `text` (las clases tipográficas sueltas) es interno a propósito: en consumidores\n// usá el componente <Typography variant=...>, que aplica las mismas clases y colores.\nexport {\n ThemeProvider,\n useTheme,\n type ThemeProviderProps,\n type ModePreference,\n} from \"./theme/context/theme-context\";\n\n// Testing (testIds para Maestro)\nexport { TestIdProvider, type TestIdProviderProps } from \"./testing/context/test-id-context\";\nexport { useTestId, type TestIdHandle } from \"./testing/use-test-id\";\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nexport var colorVars = {bg:{page:'var(--bg-page__e3grur28)',surface:'var(--bg-surface__e3grur29)',sunken:'var(--bg-sunken__e3grur2a)',inset:'var(--bg-inset__e3grur2b)'},fg:{strong:'var(--fg-strong__e3grur2c)',muted:'var(--fg-muted__e3grur2d)',subtle:'var(--fg-subtle__e3grur2e)',onAccent:'var(--fg-onAccent__e3grur2f)'},border:{subtle:'var(--border-subtle__e3grur2g)','default':'var(--border-default__e3grur2h)',strong:'var(--border-strong__e3grur2i)'},accent:{base:'var(--accent-base__e3grur2j)',hover:'var(--accent-hover__e3grur2k)',soft:'var(--accent-soft__e3grur2l)',text:'var(--accent-text__e3grur2m)'},danger:{base:'var(--danger-base__e3grur2n)',hover:'var(--danger-hover__e3grur2o)',soft:'var(--danger-soft__e3grur2p)',text:'var(--danger-text__e3grur2q)'},status:{ok:'var(--status-ok__e3grur2r)',warn:'var(--status-warn__e3grur2s)',info:'var(--status-info__e3grur2t)'},focus:'var(--focus__e3grur2u)',scrim:'var(--scrim__e3grur2v)'};\nexport var modeNames = ['light','dark','sepia','contrast'];\nexport var schemaNames = ['tinta','docslingo'];\nexport var themes = {tinta:{light:'theme__e3grur2w',dark:'theme__e3grur2x',sepia:'theme__e3grur2y',contrast:'theme__e3grur2z'},docslingo:{light:'theme__e3grur30',dark:'theme__e3grur31',sepia:'theme__e3grur32',contrast:'theme__e3grur33'}};\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:{s0:'var(--space-s0__e3grur18)',s1:'var(--space-s1__e3grur19)',s2:'var(--space-s2__e3grur1a)',s3:'var(--space-s3__e3grur1b)',s4:'var(--space-s4__e3grur1c)',s5:'var(--space-s5__e3grur1d)',s6:'var(--space-s6__e3grur1e)',s7:'var(--space-s7__e3grur1f)',s8:'var(--space-s8__e3grur1g)',s9:'var(--space-s9__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 { type ElementType, type Ref, forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { ContainerProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Caja polimórfica con style-props (sprinkles). Presentacional: la separación de props\n// de estilo y el cálculo del className viven en useStyles. No acepta className/style: el\n// className va DESPUÉS de `...rest`, así un className forzado (as any) no puede pisar el nuestro.\nfunction ContainerImpl<E extends ElementType = \"div\">(\n { as, testId, ...props }: ContainerProps<E>,\n ref: Ref<Element>,\n) {\n const Component = (as ?? \"div\") as ElementType;\n const { className, rest } = useStyles(props as Record<string, unknown>);\n const { testId: dataTestId } = useTestId(\"layout\", testId);\n return <Component ref={ref} data-testid={dataTestId} {...rest} className={className} />;\n}\n\n// forwardRef borra el genérico `E`; lo reponemos con un cast a la firma polimórfica.\nconst ContainerForwarded = forwardRef(ContainerImpl);\nContainerForwarded.displayName = \"Container\";\nexport const Container = ContainerForwarded as <E extends ElementType = \"div\">(\n props: ContainerProps<E> & { ref?: Ref<Element> },\n) => ReturnType<typeof ContainerImpl>;\n","import { useMemo } from \"react\";\nimport { composeTestId, normalizeSegment } from \"./compose\";\nimport { useTestIdContext } from \"./context/test-id-context\";\n\nexport interface TestIdHandle {\n /** data-testid del nodo root: `<tipo>__<...contexto>__<ownTestId>`. */\n testId: string;\n /** Deriva el id de un slot interno: `<testId>__<slot>`. */\n slot: (name: string) => string;\n}\n\n// Compone el data-testid de un componente: tipo (rol semántico) + contexto de los\n// providers + la prop testId de la instancia. `slot(name)` agrega un segmento interno.\n// El handle se memoiza sobre `testId` (que ya codifica tipo + contexto + ownTestId)\n// para devolver una referencia estable: el closure `slot` solo se recrea si cambia\n// `testId`, siguiendo la convención de memoización de los `useStyles` por slot.\nexport function useTestId(type: string, ownTestId?: string): TestIdHandle {\n const ctx = useTestIdContext();\n const testId = composeTestId([type, ...ctx, ownTestId]);\n return useMemo<TestIdHandle>(\n () => ({\n testId,\n slot: (name: string) => `${testId}__${normalizeSegment(name)}`,\n }),\n [testId],\n );\n}\n","// Normaliza un segmento atómico de testId a kebab-case: separa camelCase, colapsa\n// espacios/underscores en un guion y baja a minúsculas. NO debe recibir strings ya\n// unidos con \"__\" (esos vienen de composeTestId, no se re-normalizan).\nexport function normalizeSegment(seg: string): string {\n return seg\n .trim()\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n}\n\n// Une segmentos no vacíos con \"__\" (BEM). Cada parte se normaliza por separado.\nexport function composeTestId(parts: Array<string | undefined | null | false>): string {\n return parts\n .filter((p): p is string => typeof p === \"string\" && p.trim() !== \"\")\n .map(normalizeSegment)\n .join(\"__\");\n}\n","import { type ReactNode, createContext, useContext, useMemo } from \"react\";\nimport { normalizeSegment } from \"../compose\";\n\n// Segmentos de contexto acumulados por los providers anidados (ya normalizados).\nconst TestIdContext = createContext<readonly string[]>([]);\n\nexport interface TestIdProviderProps {\n /** Segmento de contexto que este provider agrega a la cadena (ej. \"checkout\"). */\n context: string;\n children: ReactNode;\n}\n\n// Propaga contexto hacia abajo: concatena su `context` con el del provider padre.\n// Sin runtime de estilos (igual que ThemeProvider).\nexport function TestIdProvider({ context, children }: TestIdProviderProps) {\n const parent = useContext(TestIdContext);\n const value = useMemo(\n () => [...parent, normalizeSegment(context)].filter((seg) => seg !== \"\"),\n [parent, context],\n );\n return <TestIdContext.Provider value={value}>{children}</TestIdContext.Provider>;\n}\n\n// Interno: los segmentos de contexto acumulados ([] si no hay provider).\nexport function useTestIdContext(): readonly string[] {\n return useContext(TestIdContext);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/sprinkles/index.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5XaTW_juhUG4P38iizbhYPow4kzd9V7CxQFuroo0M0AgawvK5YlR5LtJEX_eyGRPCRF8bzyajCjo8eMfF6RJ5jH_txVzbHO-7dzkmVVU771T29vH4c87bKnh__-eHiQ__7z4Zp0f9ls-nOS5puxKI_K7tIFu7_-9uN_Px4XoEBBAQMFBL16oVBBIQOFBCVeKFJQxEARQXsvFCsoZqCYoNQLbRW0ZaAtQZkXelbQMwM9E5R7oRcFvTDQC0GFF9opaMdAO4JKL_SqoFcGeiXo4IH-3Z6N5k5MazO057sbfPKox_fAw30-edTqKfBwu08edXwGPNz1k0eNnwMPN__kUf8XwMMZmDyKQQk8HIXJozQcgIcTMXkUigp4OBiTR9l4Bx7Ox59VeRiMhBwtsRuv3p0RaVJKamjinEiTknKCJs6KNCktDTRxXqRJiWmhiTMjTUrNGZo4N9Kk5HxAE2dHmpSeDpo4P9KkBPXQxBmSJqVogCbO0e_tMLQnI0gXC91Pl-9OklIpSles4iwplcJ0wypOk1IpTp9YxXlSKgXqC6s4UUqlSH1jFWdKqRSq4AmzOFaKpVwFAWZxshRL0QpCzOJwKZbSFUSYxfn6V16Y21RgHcE3dV7cv00JUs8rW0TiZAmSchU8IxLHSpAUquAFkThTgqREBTtE4kAJkuIUvCISp0mQOksJInGSBKlztEckTpEgdYZSROIECVLnJ0Mkk55T0pVVYw9BgTjFi0v3DUEGp3NT8ByTGoPTmSl5jkmMwem8HHiOSYvB6axUPMckxeB0Tt55jkmJwemMHHmOSYjB6XzUPMekw-B0Nk48xyTD4HQuGp6DqZiPPkFrgneOPhaps3FGJEzHfPAJPhAJEzKfe4IOkTAl87En6BEJkzKfeoIBkTAt86EnuCASJmY-8wRXRMLUzEee4IZImJz5xBN8IhKmxxl4gi_TvHfgsVEdoG-IwgQ54074BFGYIWfaCQOIwhQ5w04YQhTmyJl1wgiiMEnOqBPGEIVZcgadcAtRmCZnzAmfIQrz5Aw54QtEYaJmI064M8n7JhwTpCyFrwCESZqNN2ECQJii2XAT7gEIEzQbbcIUgDA9s8EmzAAIkzMba8IcgDA1s6EmLAAIEzMbacISgDAts4EmPACQSUqZmJNMKE7jZXLHCDMJOhPvHoHJwiToEBw9AtP8k6C7vvYITLdPgm7zk0dg2nsSdF83HoHp50nQjdx6BKaBJ0F37tkjMB07CbpVPzwC06KToHuz8whMT3bt7R92W4rDb9feNne1poJ0dw4MxHSognSTXhiIaVQF6V69MhDTrwrSLXtjIKZtFaQ795OBmO5VkG7gLwZimlhBuo-_GYjpZQVRO0dPDMS0tIKoq6OAgZjOTtv6cmrs5o7EkVRcuq-_DY5aPIp4julyg6NGj2KeY3rd4PT_GNnyHNPxBkdNHz3zHNP3BketH73wHNP9BkcBiHY8x2TA4CgG0SvPMUkwOB2GhOeYPBicjsSe55hU7JP0WHbtpcne9uWvx3NS5qSK86auUOq-3Ig6gYZONmZof-mKJNVu5nepVNJOThy6OeYNyTkni0oJO4mZwVXT5wO5hd-VhZJ1kmOwxbjeoWubktzS4xblRlVK2MnQDD5dhjwj9-B3ZaFknSzN13vZD7X-5ipmvbJSwk6qZnDb_C1N80Y_4nc_rWsl7mTM_PLaLss7Z-VH3zc4lc9X76Ru4QOyvEgutf4Bav4TqFx-BJtE9TPY3XICP4PdMRXzAcn0PH897pNeP6LGw4vijaiV-PsK_NBe8470ltdlseSPK_i-LfTDP_O6qJV4vQIf8k-Nf_C4qJX4icGzpCnHr9V66p0HF8X2U29W4PZT73ndfurtCt566gOvW0_9vAK3nvqFx62n_sHg_ZAMl_7XY3sk-uqhRelmrJRwtwK-JZ3egW48LWol3q_Aq6ZoCf_kcVEr8YF7AbfppSf1y_fmFVXSu3CLTbvqRN63b5WiSnrXhYNN2zmHkPhJHW3abvX5Q1Ozo0ccLGrw1GGC5oEjDj0ef9bQnHXMiKNFDZwwBOYeLuLY1VacKzRnHSni7aIGThPG2qztOH5eXhs4Q2hufnyIXxZBfHKQX8XioSHeLXwf684LNjs7KsSvXheeEmbrtb_xxL9ecDYQ7NKxIN676KoTgU1a21Kcek1wDrBRczOKM6_J7_42aW5Bce4l-T1fkEvbfVy45Kqd3ibtp1l6TbC_26j1NA9ek9_VbdJ6mpWX5PdyQbrbePzugit2cJszN-_46AX5fdsmzS07rr0kv1vLV525UcenhXccv0fLhZnbc9wsrIjfmcU75M8kqy79W9M2upvloV68Y7qpQJnibxtRLn_74I4kptzrNZ6h29N6A3cWMdWT3sI-oHqivSxwRxBTrfVLt4NqTS_ewJ09TNV6U_TQNd8YgTt4mHJxqWuSByiLcik776Ks6s918vW2r9tUp1Gc1-W1nw_TRc-NVVNXTb6x77_a95s1Hqao80-6_WbfPl7jP926-3Pxwxmk7CrdWF_23eM1z21Wer7t28Zrs9vGBfy96vJ0qNpm_FW4uncrjsXj9U2mCn6OvxRnBfEbQkKCRUQUoZVsuvyad7pft6FvRapyxcocNGJW6HGTuiqbfw75SXzE-LrtaBPaikPxVLOpxiLRKqLKL42bvt5xt1tXERVgLXlDTbN99qwkb-bNYyj90OVDeiDkxUVkid8YXxtjexOycxFVM1PeL_1QFV9_tM0wnqoXnq842sq6TSoKmWc8E2fPOVnWFp_10trM571nVuY-85kmfpG-z4dbrqe_bbpMWsVr3ESM0YrNOFbUrlHza97UX6TmnCpqFxL6ny45vzXtbfxDSYUO5fjv45tr_NN3t3VvOb9X3vl_g4Okgsc9AAA';\nimport { createSprinkles as _ad221 } from '@vanilla-extract/sprinkles/createRuntimeSprinkles';\nexport var sprinkles = _ad221({conditions:undefined,styles:{p:{mappings:['padding']},px:{mappings:['paddingLeft','paddingRight']},py:{mappings:['paddingTop','paddingBottom']},pt:{mappings:['paddingTop']},pr:{mappings:['paddingRight']},pb:{mappings:['paddingBottom']},pl:{mappings:['paddingLeft']},m:{mappings:['marginTop','marginRight','marginBottom','marginLeft']},mx:{mappings:['marginLeft','marginRight']},my:{mappings:['marginTop','marginBottom']},mt:{mappings:['marginTop']},mr:{mappings:['marginRight']},mb:{mappings:['marginBottom']},ml:{mappings:['marginLeft']},bg:{mappings:['background']},radius:{mappings:['borderRadius']},padding:{values:{s0:{defaultClass:'sprinkles_padding_s0__qhecrd0'},s1:{defaultClass:'sprinkles_padding_s1__qhecrd1'},s2:{defaultClass:'sprinkles_padding_s2__qhecrd2'},s3:{defaultClass:'sprinkles_padding_s3__qhecrd3'},s4:{defaultClass:'sprinkles_padding_s4__qhecrd4'},s5:{defaultClass:'sprinkles_padding_s5__qhecrd5'},s6:{defaultClass:'sprinkles_padding_s6__qhecrd6'},s7:{defaultClass:'sprinkles_padding_s7__qhecrd7'},s8:{defaultClass:'sprinkles_padding_s8__qhecrd8'},s9:{defaultClass:'sprinkles_padding_s9__qhecrd9'}}},paddingTop:{values:{s0:{defaultClass:'sprinkles_paddingTop_s0__qhecrda'},s1:{defaultClass:'sprinkles_paddingTop_s1__qhecrdb'},s2:{defaultClass:'sprinkles_paddingTop_s2__qhecrdc'},s3:{defaultClass:'sprinkles_paddingTop_s3__qhecrdd'},s4:{defaultClass:'sprinkles_paddingTop_s4__qhecrde'},s5:{defaultClass:'sprinkles_paddingTop_s5__qhecrdf'},s6:{defaultClass:'sprinkles_paddingTop_s6__qhecrdg'},s7:{defaultClass:'sprinkles_paddingTop_s7__qhecrdh'},s8:{defaultClass:'sprinkles_paddingTop_s8__qhecrdi'},s9:{defaultClass:'sprinkles_paddingTop_s9__qhecrdj'}}},paddingRight:{values:{s0:{defaultClass:'sprinkles_paddingRight_s0__qhecrdk'},s1:{defaultClass:'sprinkles_paddingRight_s1__qhecrdl'},s2:{defaultClass:'sprinkles_paddingRight_s2__qhecrdm'},s3:{defaultClass:'sprinkles_paddingRight_s3__qhecrdn'},s4:{defaultClass:'sprinkles_paddingRight_s4__qhecrdo'},s5:{defaultClass:'sprinkles_paddingRight_s5__qhecrdp'},s6:{defaultClass:'sprinkles_paddingRight_s6__qhecrdq'},s7:{defaultClass:'sprinkles_paddingRight_s7__qhecrdr'},s8:{defaultClass:'sprinkles_paddingRight_s8__qhecrds'},s9:{defaultClass:'sprinkles_paddingRight_s9__qhecrdt'}}},paddingBottom:{values:{s0:{defaultClass:'sprinkles_paddingBottom_s0__qhecrdu'},s1:{defaultClass:'sprinkles_paddingBottom_s1__qhecrdv'},s2:{defaultClass:'sprinkles_paddingBottom_s2__qhecrdw'},s3:{defaultClass:'sprinkles_paddingBottom_s3__qhecrdx'},s4:{defaultClass:'sprinkles_paddingBottom_s4__qhecrdy'},s5:{defaultClass:'sprinkles_paddingBottom_s5__qhecrdz'},s6:{defaultClass:'sprinkles_paddingBottom_s6__qhecrd10'},s7:{defaultClass:'sprinkles_paddingBottom_s7__qhecrd11'},s8:{defaultClass:'sprinkles_paddingBottom_s8__qhecrd12'},s9:{defaultClass:'sprinkles_paddingBottom_s9__qhecrd13'}}},paddingLeft:{values:{s0:{defaultClass:'sprinkles_paddingLeft_s0__qhecrd14'},s1:{defaultClass:'sprinkles_paddingLeft_s1__qhecrd15'},s2:{defaultClass:'sprinkles_paddingLeft_s2__qhecrd16'},s3:{defaultClass:'sprinkles_paddingLeft_s3__qhecrd17'},s4:{defaultClass:'sprinkles_paddingLeft_s4__qhecrd18'},s5:{defaultClass:'sprinkles_paddingLeft_s5__qhecrd19'},s6:{defaultClass:'sprinkles_paddingLeft_s6__qhecrd1a'},s7:{defaultClass:'sprinkles_paddingLeft_s7__qhecrd1b'},s8:{defaultClass:'sprinkles_paddingLeft_s8__qhecrd1c'},s9:{defaultClass:'sprinkles_paddingLeft_s9__qhecrd1d'}}},marginTop:{values:{s0:{defaultClass:'sprinkles_marginTop_s0__qhecrd1e'},s1:{defaultClass:'sprinkles_marginTop_s1__qhecrd1f'},s2:{defaultClass:'sprinkles_marginTop_s2__qhecrd1g'},s3:{defaultClass:'sprinkles_marginTop_s3__qhecrd1h'},s4:{defaultClass:'sprinkles_marginTop_s4__qhecrd1i'},s5:{defaultClass:'sprinkles_marginTop_s5__qhecrd1j'},s6:{defaultClass:'sprinkles_marginTop_s6__qhecrd1k'},s7:{defaultClass:'sprinkles_marginTop_s7__qhecrd1l'},s8:{defaultClass:'sprinkles_marginTop_s8__qhecrd1m'},s9:{defaultClass:'sprinkles_marginTop_s9__qhecrd1n'}}},marginRight:{values:{s0:{defaultClass:'sprinkles_marginRight_s0__qhecrd1o'},s1:{defaultClass:'sprinkles_marginRight_s1__qhecrd1p'},s2:{defaultClass:'sprinkles_marginRight_s2__qhecrd1q'},s3:{defaultClass:'sprinkles_marginRight_s3__qhecrd1r'},s4:{defaultClass:'sprinkles_marginRight_s4__qhecrd1s'},s5:{defaultClass:'sprinkles_marginRight_s5__qhecrd1t'},s6:{defaultClass:'sprinkles_marginRight_s6__qhecrd1u'},s7:{defaultClass:'sprinkles_marginRight_s7__qhecrd1v'},s8:{defaultClass:'sprinkles_marginRight_s8__qhecrd1w'},s9:{defaultClass:'sprinkles_marginRight_s9__qhecrd1x'}}},marginBottom:{values:{s0:{defaultClass:'sprinkles_marginBottom_s0__qhecrd1y'},s1:{defaultClass:'sprinkles_marginBottom_s1__qhecrd1z'},s2:{defaultClass:'sprinkles_marginBottom_s2__qhecrd20'},s3:{defaultClass:'sprinkles_marginBottom_s3__qhecrd21'},s4:{defaultClass:'sprinkles_marginBottom_s4__qhecrd22'},s5:{defaultClass:'sprinkles_marginBottom_s5__qhecrd23'},s6:{defaultClass:'sprinkles_marginBottom_s6__qhecrd24'},s7:{defaultClass:'sprinkles_marginBottom_s7__qhecrd25'},s8:{defaultClass:'sprinkles_marginBottom_s8__qhecrd26'},s9:{defaultClass:'sprinkles_marginBottom_s9__qhecrd27'}}},marginLeft:{values:{s0:{defaultClass:'sprinkles_marginLeft_s0__qhecrd28'},s1:{defaultClass:'sprinkles_marginLeft_s1__qhecrd29'},s2:{defaultClass:'sprinkles_marginLeft_s2__qhecrd2a'},s3:{defaultClass:'sprinkles_marginLeft_s3__qhecrd2b'},s4:{defaultClass:'sprinkles_marginLeft_s4__qhecrd2c'},s5:{defaultClass:'sprinkles_marginLeft_s5__qhecrd2d'},s6:{defaultClass:'sprinkles_marginLeft_s6__qhecrd2e'},s7:{defaultClass:'sprinkles_marginLeft_s7__qhecrd2f'},s8:{defaultClass:'sprinkles_marginLeft_s8__qhecrd2g'},s9:{defaultClass:'sprinkles_marginLeft_s9__qhecrd2h'}}},gap:{values:{s0:{defaultClass:'sprinkles_gap_s0__qhecrd2i'},s1:{defaultClass:'sprinkles_gap_s1__qhecrd2j'},s2:{defaultClass:'sprinkles_gap_s2__qhecrd2k'},s3:{defaultClass:'sprinkles_gap_s3__qhecrd2l'},s4:{defaultClass:'sprinkles_gap_s4__qhecrd2m'},s5:{defaultClass:'sprinkles_gap_s5__qhecrd2n'},s6:{defaultClass:'sprinkles_gap_s6__qhecrd2o'},s7:{defaultClass:'sprinkles_gap_s7__qhecrd2p'},s8:{defaultClass:'sprinkles_gap_s8__qhecrd2q'},s9:{defaultClass:'sprinkles_gap_s9__qhecrd2r'}}},rowGap:{values:{s0:{defaultClass:'sprinkles_rowGap_s0__qhecrd2s'},s1:{defaultClass:'sprinkles_rowGap_s1__qhecrd2t'},s2:{defaultClass:'sprinkles_rowGap_s2__qhecrd2u'},s3:{defaultClass:'sprinkles_rowGap_s3__qhecrd2v'},s4:{defaultClass:'sprinkles_rowGap_s4__qhecrd2w'},s5:{defaultClass:'sprinkles_rowGap_s5__qhecrd2x'},s6:{defaultClass:'sprinkles_rowGap_s6__qhecrd2y'},s7:{defaultClass:'sprinkles_rowGap_s7__qhecrd2z'},s8:{defaultClass:'sprinkles_rowGap_s8__qhecrd30'},s9:{defaultClass:'sprinkles_rowGap_s9__qhecrd31'}}},columnGap:{values:{s0:{defaultClass:'sprinkles_columnGap_s0__qhecrd32'},s1:{defaultClass:'sprinkles_columnGap_s1__qhecrd33'},s2:{defaultClass:'sprinkles_columnGap_s2__qhecrd34'},s3:{defaultClass:'sprinkles_columnGap_s3__qhecrd35'},s4:{defaultClass:'sprinkles_columnGap_s4__qhecrd36'},s5:{defaultClass:'sprinkles_columnGap_s5__qhecrd37'},s6:{defaultClass:'sprinkles_columnGap_s6__qhecrd38'},s7:{defaultClass:'sprinkles_columnGap_s7__qhecrd39'},s8:{defaultClass:'sprinkles_columnGap_s8__qhecrd3a'},s9:{defaultClass:'sprinkles_columnGap_s9__qhecrd3b'}}},background:{values:{'bg.page':{defaultClass:'sprinkles_background_bg.page__qhecrd3c'},'bg.surface':{defaultClass:'sprinkles_background_bg.surface__qhecrd3d'},'bg.sunken':{defaultClass:'sprinkles_background_bg.sunken__qhecrd3e'},'bg.inset':{defaultClass:'sprinkles_background_bg.inset__qhecrd3f'},'fg.strong':{defaultClass:'sprinkles_background_fg.strong__qhecrd3g'},'fg.muted':{defaultClass:'sprinkles_background_fg.muted__qhecrd3h'},'fg.subtle':{defaultClass:'sprinkles_background_fg.subtle__qhecrd3i'},'fg.onAccent':{defaultClass:'sprinkles_background_fg.onAccent__qhecrd3j'},'border.subtle':{defaultClass:'sprinkles_background_border.subtle__qhecrd3k'},'border.default':{defaultClass:'sprinkles_background_border.default__qhecrd3l'},'border.strong':{defaultClass:'sprinkles_background_border.strong__qhecrd3m'},'accent.base':{defaultClass:'sprinkles_background_accent.base__qhecrd3n'},'accent.hover':{defaultClass:'sprinkles_background_accent.hover__qhecrd3o'},'accent.soft':{defaultClass:'sprinkles_background_accent.soft__qhecrd3p'},'accent.text':{defaultClass:'sprinkles_background_accent.text__qhecrd3q'},'danger.base':{defaultClass:'sprinkles_background_danger.base__qhecrd3r'},'danger.hover':{defaultClass:'sprinkles_background_danger.hover__qhecrd3s'},'danger.soft':{defaultClass:'sprinkles_background_danger.soft__qhecrd3t'},'danger.text':{defaultClass:'sprinkles_background_danger.text__qhecrd3u'},'status.ok':{defaultClass:'sprinkles_background_status.ok__qhecrd3v'},'status.warn':{defaultClass:'sprinkles_background_status.warn__qhecrd3w'},'status.info':{defaultClass:'sprinkles_background_status.info__qhecrd3x'},focus:{defaultClass:'sprinkles_background_focus__qhecrd3y'},scrim:{defaultClass:'sprinkles_background_scrim__qhecrd3z'}}},color:{values:{'bg.page':{defaultClass:'sprinkles_color_bg.page__qhecrd40'},'bg.surface':{defaultClass:'sprinkles_color_bg.surface__qhecrd41'},'bg.sunken':{defaultClass:'sprinkles_color_bg.sunken__qhecrd42'},'bg.inset':{defaultClass:'sprinkles_color_bg.inset__qhecrd43'},'fg.strong':{defaultClass:'sprinkles_color_fg.strong__qhecrd44'},'fg.muted':{defaultClass:'sprinkles_color_fg.muted__qhecrd45'},'fg.subtle':{defaultClass:'sprinkles_color_fg.subtle__qhecrd46'},'fg.onAccent':{defaultClass:'sprinkles_color_fg.onAccent__qhecrd47'},'border.subtle':{defaultClass:'sprinkles_color_border.subtle__qhecrd48'},'border.default':{defaultClass:'sprinkles_color_border.default__qhecrd49'},'border.strong':{defaultClass:'sprinkles_color_border.strong__qhecrd4a'},'accent.base':{defaultClass:'sprinkles_color_accent.base__qhecrd4b'},'accent.hover':{defaultClass:'sprinkles_color_accent.hover__qhecrd4c'},'accent.soft':{defaultClass:'sprinkles_color_accent.soft__qhecrd4d'},'accent.text':{defaultClass:'sprinkles_color_accent.text__qhecrd4e'},'danger.base':{defaultClass:'sprinkles_color_danger.base__qhecrd4f'},'danger.hover':{defaultClass:'sprinkles_color_danger.hover__qhecrd4g'},'danger.soft':{defaultClass:'sprinkles_color_danger.soft__qhecrd4h'},'danger.text':{defaultClass:'sprinkles_color_danger.text__qhecrd4i'},'status.ok':{defaultClass:'sprinkles_color_status.ok__qhecrd4j'},'status.warn':{defaultClass:'sprinkles_color_status.warn__qhecrd4k'},'status.info':{defaultClass:'sprinkles_color_status.info__qhecrd4l'},focus:{defaultClass:'sprinkles_color_focus__qhecrd4m'},scrim:{defaultClass:'sprinkles_color_scrim__qhecrd4n'}}},borderRadius:{values:{none:{defaultClass:'sprinkles_borderRadius_none__qhecrd4o'},sm:{defaultClass:'sprinkles_borderRadius_sm__qhecrd4p'},md:{defaultClass:'sprinkles_borderRadius_md__qhecrd4q'},lg:{defaultClass:'sprinkles_borderRadius_lg__qhecrd4r'},base:{defaultClass:'sprinkles_borderRadius_base__qhecrd4s'},full:{defaultClass:'sprinkles_borderRadius_full__qhecrd4t'}}},display:{values:{block:{defaultClass:'sprinkles_display_block__qhecrd4u'},'inline-block':{defaultClass:'sprinkles_display_inline-block__qhecrd4v'},flex:{defaultClass:'sprinkles_display_flex__qhecrd4w'},'inline-flex':{defaultClass:'sprinkles_display_inline-flex__qhecrd4x'},grid:{defaultClass:'sprinkles_display_grid__qhecrd4y'},none:{defaultClass:'sprinkles_display_none__qhecrd4z'}}},flexDirection:{values:{row:{defaultClass:'sprinkles_flexDirection_row__qhecrd50'},column:{defaultClass:'sprinkles_flexDirection_column__qhecrd51'},'row-reverse':{defaultClass:'sprinkles_flexDirection_row-reverse__qhecrd52'},'column-reverse':{defaultClass:'sprinkles_flexDirection_column-reverse__qhecrd53'}}},alignItems:{values:{'flex-start':{defaultClass:'sprinkles_alignItems_flex-start__qhecrd54'},center:{defaultClass:'sprinkles_alignItems_center__qhecrd55'},'flex-end':{defaultClass:'sprinkles_alignItems_flex-end__qhecrd56'},stretch:{defaultClass:'sprinkles_alignItems_stretch__qhecrd57'},baseline:{defaultClass:'sprinkles_alignItems_baseline__qhecrd58'}}},justifyContent:{values:{'flex-start':{defaultClass:'sprinkles_justifyContent_flex-start__qhecrd59'},center:{defaultClass:'sprinkles_justifyContent_center__qhecrd5a'},'flex-end':{defaultClass:'sprinkles_justifyContent_flex-end__qhecrd5b'},'space-between':{defaultClass:'sprinkles_justifyContent_space-between__qhecrd5c'},'space-around':{defaultClass:'sprinkles_justifyContent_space-around__qhecrd5d'},'space-evenly':{defaultClass:'sprinkles_justifyContent_space-evenly__qhecrd5e'}}},flexWrap:{values:{nowrap:{defaultClass:'sprinkles_flexWrap_nowrap__qhecrd5f'},wrap:{defaultClass:'sprinkles_flexWrap_wrap__qhecrd5g'}}}}});","import { sprinkles } from \"../../theme/styles/sprinkles/index.css\";\n\n// La lógica de estilos de Container: separa las props de estilo (sprinkles) de las\n// nativas y devuelve el className + el resto. Sprinkles ES el motor de estilos de este\n// primitivo: reemplaza al patrón slot/use-styles.css de los demás componentes.\ntype Props = Record<string, unknown>;\n\nexport function useStyles(props: Props): { className: string; rest: Props } {\n const styleProps: Props = {};\n const rest: Props = {};\n for (const key of Object.keys(props)) {\n const value = props[key];\n if (sprinkles.properties.has(key as Parameters<typeof sprinkles.properties.has>[0])) {\n styleProps[key] = value;\n } else {\n rest[key] = value;\n }\n }\n return { className: sprinkles(styleProps as Parameters<typeof sprinkles>[0]), rest };\n}\n","import { type ElementType, type Ref, forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { SurfaceProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional y polimórfico: pinta el canvas del tema activo. Default <div>.\n// No acepta className/style (encapsulado): se personaliza por props (as, fill).\n// forwardRef no preserva el genérico E, así que casteamos para conservarlo (igual que Typography).\nfunction SurfaceInner<E extends ElementType = \"div\">(\n { as, fill, testId, ...rest }: SurfaceProps<E>,\n ref: Ref<HTMLElement>,\n) {\n const Component = (as ?? \"div\") as ElementType;\n const { surface } = useStyles({ fill });\n const { testId: dataTestId } = useTestId(\"surface\", testId);\n // className DESPUÉS de ...rest: nuestro estilo gana aunque fuercen uno por fuera.\n return <Component ref={ref} data-testid={dataTestId} {...rest} className={surface} />;\n}\n\nconst SurfaceForwarded = forwardRef(\n SurfaceInner as (props: SurfaceProps, ref: Ref<HTMLElement>) => ReturnType<typeof SurfaceInner>,\n);\nSurfaceForwarded.displayName = \"Surface\";\nexport const Surface = SurfaceForwarded as <E extends ElementType = \"div\">(\n props: SurfaceProps<E> & { ref?: Ref<HTMLElement> },\n) => ReturnType<typeof SurfaceInner>;\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\nexport function useStyles({ fill }: { fill?: boolean | undefined }): { surface: string } {\n const { themeClass } = useTheme();\n const className = useMemo(\n () => [themeClass, styles.surface, fill && styles.fill].filter(Boolean).join(\" \"),\n [themeClass, fill],\n );\n return { surface: className };\n}\n","// Tokens compartidos por todos los temas Tinta: no cambian por modo.\n// Valores tomados de colors_and_type.css §1 (escala 4px, base 18px, ratio ~1.25).\nexport const tokens = {\n font: {\n display: \"'DM Serif Display', 'Times New Roman', serif\",\n text: \"'Newsreader', Georgia, serif\",\n mono: \"'IBM Plex Mono', 'SFMono-Regular', monospace\",\n black: \"'UnifrakturMaguntia', 'Grenze Gotisch', serif\",\n },\n // Roles tipográficos: tamaño/interlineado/peso/tracking listos para typography.css.ts.\n text: {\n eyebrow: { size: \"0.694rem\", lineHeight: \"1.2\", weight: \"500\", letterSpacing: \"0.14em\" },\n // Escala fluida: ~43px en 375px (entra en móvil), cotea en 5.6rem (≈90px) desde ~1200px.\n display: {\n size: \"clamp(2.75rem, 1.4rem + 5.6vw, 5.6rem)\",\n lineHeight: \"1.05\",\n weight: \"600\",\n letterSpacing: \"-0.01em\",\n },\n h1: { size: \"2.9rem\", lineHeight: \"1.05\", weight: \"600\", letterSpacing: \"-0.01em\" },\n h2: { size: \"2.1rem\", lineHeight: \"1.2\", weight: \"600\", letterSpacing: \"0\" },\n h3: { size: \"1.563rem\", lineHeight: \"1.2\", weight: \"500\", letterSpacing: \"0\" },\n h4: { size: \"1.25rem\", lineHeight: \"1.2\", weight: \"600\", letterSpacing: \"0\" },\n body: { size: \"1rem\", lineHeight: \"1.7\", weight: \"400\", letterSpacing: \"0\" },\n lead: { size: \"1.25rem\", lineHeight: \"1.7\", weight: \"400\", letterSpacing: \"0\" },\n small: { size: \"0.95rem\", lineHeight: \"1.5\", weight: \"400\", letterSpacing: \"0\" },\n caption: { size: \"0.833rem\", lineHeight: \"1.5\", weight: \"400\", letterSpacing: \"0.04em\" },\n },\n space: {\n s0: \"0\",\n s1: \"0.25rem\", // 4\n s2: \"0.5rem\", // 8\n s3: \"0.75rem\", // 12\n s4: \"1rem\", // 16\n s5: \"1.5rem\", // 24\n s6: \"2rem\", // 32\n s7: \"3rem\", // 48\n s8: \"4rem\", // 64\n s9: \"6rem\", // 96\n },\n radius: { none: \"0px\", sm: \"3px\", md: \"5px\", lg: \"8px\", base: \"4px\", full: \"999px\" },\n border: { hair: \"1px\", rule: \"1.5px\", heavy: \"2px\" },\n // Tracking de mayúsculas: escala coherente alineada al uso real (eyebrow = widest).\n tracking: { tight: \"-0.01em\", normal: \"0\", wide: \"0.04em\", wider: \"0.1em\", widest: \"0.14em\" },\n weight: { light: \"300\", regular: \"400\", medium: \"500\", semibold: \"600\", bold: \"700\" },\n dur: { fast: \"120ms\", base: \"200ms\", slow: \"360ms\" },\n ease: { ink: \"cubic-bezier(0.2, 0, 0, 1)\" },\n shadow: {\n sm: \"0 1px 0 rgba(20,17,14,0.06)\",\n md: \"0 2px 10px -4px rgba(20,17,14,0.22)\",\n lg: \"0 12px 32px -10px rgba(20,17,14,0.34)\",\n },\n} as const;\n\n/**\n * Grupos de tokens \"portables\": valores que se trasladan a cualquier plataforma\n * (number/dp en React Native). Excluye los formato-específicos de web —`font`\n * (font-family CSS), `shadow` (box-shadow CSS), `ease` (cubic-bezier) y `tracking`\n * (em)— que no portan tal cual a RN. `nativeTokens` (paquete native) DEBE cubrir\n * todos estos grupos; lo verifica un parity test.\n */\nexport const portableTokenGroups = [\n \"space\",\n \"radius\",\n \"border\",\n \"text\",\n \"weight\",\n \"dur\",\n] as const satisfies readonly (keyof typeof tokens)[];\n\nexport type PortableTokenGroup = (typeof portableTokenGroups)[number];\nexport type PortableTokens = Pick<typeof tokens, PortableTokenGroup>;\n","import type { SchemaPalette } from \"../theme-types\";\nimport { tokens } from \"../tokens\";\n\n// Paleta terminal-dark de DocsLingo (cursos interactivos estilo Duolingo sobre documentación).\n// `dark` ES la identidad original del reproductor (slate azulado + mint de marca); los otros\n// tres modos la trasladan a papel frío (light), papel cálido (sepia) y AA reforzado (contrast).\n// `accent` = mint de marca · `info` = cyan · `warn` = gold · `danger` = red del quiz.\nexport const docslingoSchema = {\n light: {\n ...tokens,\n color: {\n bg: { page: \"#F4F7FA\", surface: \"#FFFFFF\", sunken: \"#E7EDF3\", inset: \"#DEE6EE\" },\n fg: { strong: \"#101825\", muted: \"#3D4B5C\", subtle: \"#5A6A80\", onAccent: \"#FFFFFF\" },\n border: {\n subtle: \"rgba(16, 24, 37, 0.14)\",\n default: \"rgba(16, 24, 37, 0.28)\",\n strong: \"rgba(16, 24, 37, 0.85)\",\n },\n accent: {\n base: \"#0E7A55\",\n hover: \"#0B6244\",\n soft: \"rgba(14, 122, 85, 0.12)\",\n text: \"#0E7A55\",\n },\n danger: {\n base: \"#C23F3F\",\n hover: \"#A83434\",\n soft: \"rgba(194, 63, 63, 0.12)\",\n text: \"#C23F3F\",\n },\n status: { ok: \"#0E7A55\", warn: \"#7A5C10\", info: \"#0E6E9E\" },\n focus: \"#0E6E9E\",\n scrim: \"rgba(16, 24, 37, 0.5)\",\n },\n },\n dark: {\n ...tokens,\n color: {\n bg: { page: \"#0B1017\", surface: \"#121A24\", sunken: \"#1A2432\", inset: \"#0A0E14\" },\n fg: { strong: \"#E6EDF5\", muted: \"#8FA3B8\", subtle: \"#7C8FA5\", onAccent: \"#0B1017\" },\n border: { subtle: \"#243244\", default: \"#33465E\", strong: \"#8FA3B8\" },\n accent: {\n base: \"#45D9A1\",\n hover: \"#63E2B2\",\n soft: \"rgba(69, 217, 161, 0.12)\",\n text: \"#45D9A1\",\n },\n danger: {\n base: \"#F06A6A\",\n hover: \"#F58585\",\n soft: \"rgba(240, 106, 106, 0.12)\",\n text: \"#F06A6A\",\n },\n status: { ok: \"#45D9A1\", warn: \"#F7C948\", info: \"#56C8F5\" },\n focus: \"#56C8F5\",\n scrim: \"rgba(0, 0, 0, 0.55)\",\n },\n },\n sepia: {\n ...tokens,\n color: {\n bg: { page: \"#ECE4CE\", surface: \"#F5EEDC\", sunken: \"#DFD3B4\", inset: \"#D6C8A4\" },\n fg: { strong: \"#262114\", muted: \"#55482F\", subtle: \"#6B5E41\", onAccent: \"#F5EEDC\" },\n border: {\n subtle: \"rgba(38, 33, 20, 0.16)\",\n default: \"rgba(38, 33, 20, 0.32)\",\n strong: \"rgba(38, 33, 20, 0.82)\",\n },\n accent: {\n base: \"#4C5F2A\",\n hover: \"#3B4A1F\",\n soft: \"rgba(76, 95, 42, 0.12)\",\n text: \"#4C5F2A\",\n },\n danger: {\n base: \"#8A3B26\",\n hover: \"#70301F\",\n soft: \"rgba(138, 59, 38, 0.12)\",\n text: \"#8A3B26\",\n },\n status: { ok: \"#4C5F2A\", warn: \"#6E5413\", info: \"#3A505C\" },\n focus: \"#4C5F2A\",\n scrim: \"rgba(38, 33, 20, 0.55)\",\n },\n },\n contrast: {\n ...tokens,\n color: {\n bg: { page: \"#FFFFFF\", surface: \"#FFFFFF\", sunken: \"#F2F2F2\", inset: \"#EAEAEA\" },\n fg: { strong: \"#000000\", muted: \"#000000\", subtle: \"#2B2B2B\", onAccent: \"#FFFFFF\" },\n border: { subtle: \"#000000\", default: \"#000000\", strong: \"#000000\" },\n accent: {\n base: \"#0B4F38\",\n hover: \"#063D2B\",\n soft: \"rgba(11, 79, 56, 0.10)\",\n text: \"#0B4F38\",\n },\n danger: {\n base: \"#8B0000\",\n hover: \"#6B0000\",\n soft: \"rgba(139, 0, 0, 0.10)\",\n text: \"#8B0000\",\n },\n status: { ok: \"#0B4F38\", warn: \"#000000\", info: \"#000000\" },\n focus: \"#000000\",\n scrim: \"rgba(0, 0, 0, 0.7)\",\n },\n },\n} satisfies SchemaPalette;\n","import type { SchemaPalette } from \"../theme-types\";\nimport { tokens } from \"../tokens\";\n\n// Un schema = una paleta con sus modos. Tinta comparte `tokens`; cada modo cambia `color`.\n// `bg-*` = papel · `fg-*` = tinta · `accent` = oxblood (cuentagotas).\n// `satisfies SchemaPalette` exige los 4 modos y exactamente las claves de ColorTokens en cada uno.\nexport const tintaSchema = {\n light: {\n ...tokens,\n color: {\n bg: { page: \"#F8F7F4\", surface: \"#FFFFFF\", sunken: \"#EDEBE6\", inset: \"#E4E1DA\" },\n fg: { strong: \"#15130F\", muted: \"#494640\", subtle: \"#737069\", onAccent: \"#F8F7F4\" },\n border: {\n subtle: \"rgba(21, 19, 15, 0.12)\",\n default: \"rgba(21, 19, 15, 0.26)\",\n strong: \"rgba(21, 19, 15, 0.85)\",\n },\n accent: {\n base: \"#7B1E1E\",\n hover: \"#631616\",\n soft: \"rgba(123, 30, 30, 0.10)\",\n text: \"#7B1E1E\",\n },\n danger: {\n base: \"#7B1E1E\",\n hover: \"#631616\",\n soft: \"rgba(123, 30, 30, 0.10)\",\n text: \"#7B1E1E\",\n },\n status: { ok: \"#3E5C3A\", warn: \"#8A6A1E\", info: \"#2E4257\" },\n focus: \"#7B1E1E\",\n scrim: \"rgba(20, 17, 14, 0.55)\",\n },\n },\n dark: {\n ...tokens,\n color: {\n bg: { page: \"#100E0B\", surface: \"#1A1611\", sunken: \"#070605\", inset: \"#221D16\" },\n fg: { strong: \"#F2EDE2\", muted: \"#B7AF9F\", subtle: \"#878070\", onAccent: \"#F2EDE2\" },\n border: {\n subtle: \"rgba(242, 237, 226, 0.13)\",\n default: \"rgba(242, 237, 226, 0.26)\",\n strong: \"rgba(242, 237, 226, 0.80)\",\n },\n accent: {\n base: \"#B23A3A\",\n hover: \"#9E3333\",\n soft: \"rgba(178, 58, 58, 0.16)\",\n text: \"#CF6363\",\n },\n danger: {\n base: \"#A83838\",\n hover: \"#943030\",\n soft: \"rgba(194, 74, 74, 0.16)\",\n text: \"#D46B6B\",\n },\n status: { ok: \"#7FA178\", warn: \"#C7A04E\", info: \"#6E92B4\" },\n focus: \"#CC4A4A\",\n scrim: \"rgba(7, 6, 5, 0.65)\",\n },\n },\n sepia: {\n ...tokens,\n color: {\n bg: { page: \"#E9DDC4\", surface: \"#F2E9D5\", sunken: \"#DCCDAC\", inset: \"#D2C09B\" },\n fg: { strong: \"#2A2013\", muted: \"#5A4A33\", subtle: \"#6E6046\", onAccent: \"#F2E9D5\" },\n border: {\n subtle: \"rgba(42, 32, 19, 0.16)\",\n default: \"rgba(42, 32, 19, 0.32)\",\n strong: \"rgba(42, 32, 19, 0.82)\",\n },\n accent: {\n base: \"#7A2E12\",\n hover: \"#5F2109\",\n soft: \"rgba(122, 46, 18, 0.12)\",\n text: \"#7A2E12\",\n },\n danger: {\n base: \"#7A2E12\",\n hover: \"#5F2109\",\n soft: \"rgba(122, 46, 18, 0.12)\",\n text: \"#7A2E12\",\n },\n status: { ok: \"#4A5A2E\", warn: \"#6E5413\", info: \"#3C4E57\" },\n focus: \"#7A2E12\",\n scrim: \"rgba(42, 32, 19, 0.55)\",\n },\n },\n contrast: {\n ...tokens,\n color: {\n bg: { page: \"#FFFFFF\", surface: \"#FFFFFF\", sunken: \"#F2F2F2\", inset: \"#EAEAEA\" },\n fg: { strong: \"#000000\", muted: \"#000000\", subtle: \"#2B2B2B\", onAccent: \"#FFFFFF\" },\n border: { subtle: \"#000000\", default: \"#000000\", strong: \"#000000\" },\n accent: {\n base: \"#000000\",\n hover: \"#2B2B2B\",\n soft: \"rgba(0, 0, 0, 0.08)\",\n text: \"#000000\",\n },\n danger: {\n base: \"#8B0000\",\n hover: \"#6B0000\",\n soft: \"rgba(139, 0, 0, 0.10)\",\n text: \"#8B0000\",\n },\n status: { ok: \"#000000\", warn: \"#000000\", info: \"#000000\" },\n focus: \"#000000\",\n scrim: \"rgba(0, 0, 0, 0.7)\",\n },\n },\n} satisfies SchemaPalette;\n","import type { SchemaPalette } from \"../theme-types\";\nimport { docslingoSchema } from \"./docslingo\";\nimport { tintaSchema } from \"./tinta\";\n\n// El registro de schemas (paletas). Agregar un schema = agregar una entrada acá.\n// `satisfies Record<string, SchemaPalette>` exige que toda entrada nueva traiga los 4 modos\n// con la forma de paleta completa (no se puede registrar un schema con modos/claves faltantes).\nexport const schemas = {\n tinta: tintaSchema,\n docslingo: docslingoSchema,\n} as const satisfies Record<string, SchemaPalette>;\n\nexport type SchemaName = keyof typeof schemas;\n\n// Derivados de la fuente de verdad (`schemas`) en vez de listas a mano que pueden quedar stale.\nexport const schemaNames = Object.keys(schemas) as SchemaName[];\n\n/** Type guard: ¿`x` es un SchemaName registrado? Deriva de `schemas` (no re-lista). */\nexport function isSchemaName(x: unknown): x is SchemaName {\n return typeof x === \"string\" && Object.hasOwn(schemas, x);\n}\n","import type { tokens } from \"./tokens\";\n\n// Contrato de color = fuente de verdad nominal de la forma de una paleta. Agregar/quitar/renombrar\n// una clave acá obliga a actualizarla en TODAS las paletas (cada schema lleva `satisfies SchemaPalette`),\n// y el contract de vanilla-extract (web) se deriva de este mismo set de claves.\nexport interface ColorTokens {\n bg: { page: string; surface: string; sunken: string; inset: string };\n /** `strong`/`muted` cumplen AA (≥4.5) sobre los 4 fondos. **`subtle` solo cumple AA sobre\n * `bg.page`/`bg.surface`**: sobre los hundidos (`bg.sunken`/`bg.inset`) queda en ~3–4.4, así\n * que ahí es válido únicamente para uso incidental (estados `:disabled`, que WCAG 1.4.3\n * exime). Para texto ACTIVO sobre fondos hundidos usá `muted`. Lo fija `contrast.test.ts`. */\n fg: { strong: string; muted: string; subtle: string; onAccent: string };\n border: { subtle: string; default: string; strong: string };\n /** `base` = relleno · `hover` = relleno activo · `soft` = tinte · `text` = accent como TEXTO\n * sobre el fondo (outline/ghost, links); en dark `text` es más claro que `base` (AA ≥ 4.5). */\n accent: { base: string; hover: string; soft: string; text: string };\n /** Igual estructura que `accent`; `text` es danger como TEXTO sobre el fondo (AA ≥ 4.5). */\n danger: { base: string; hover: string; soft: string; text: string };\n status: { ok: string; warn: string; info: string };\n focus: string;\n scrim: string;\n}\n\nexport type Mode = \"light\" | \"dark\" | \"sepia\" | \"contrast\";\n/** El usuario puede fijar un modo concreto o \"system\" (seguir las preferencias del SO). */\nexport type ModePreference = Mode | \"system\";\n\n// Forma de una paleta completa: los tokens estáticos compartidos + el color por cada modo.\n// Cada schema (p.ej. tinta) la cumple con `satisfies SchemaPalette`, lo que fuerza los 4 modos\n// y exactamente las claves de ColorTokens (ni de más ni de menos) en tiempo de compilación.\nexport type SchemaPalette = Record<Mode, typeof tokens & { color: ColorTokens }>;\n\n// Orden canónico de modos (lo usa cycleMode). `as const satisfies` valida que cada valor sea un\n// Mode válido y preserva la tupla literal para indexar.\nexport const modeNames = [\"light\", \"dark\", \"sepia\", \"contrast\"] as const satisfies readonly Mode[];\n\n/** Type guard: ¿`x` es un Mode válido? Deriva de `modeNames` (no re-lista). */\nexport function isMode(x: unknown): x is Mode {\n return typeof x === \"string\" && (modeNames as readonly string[]).includes(x);\n}\n\n/** Type guard: ¿`x` es una ModePreference válida (un Mode o \"system\")? */\nexport function isModePreference(x: unknown): x is ModePreference {\n return x === \"system\" || isMode(x);\n}\n","// Deriva la forma de una paleta real en vez de mantener listas de nombres a mano.\n// Una \"hoja\" es un valor string (un color); todo lo demás es un grupo anidado.\n\ntype Leaves<T, L> = { [K in keyof T]: T[K] extends string ? L : Leaves<T[K], L> };\n\n/** Clona la forma anidada de `obj` reemplazando cada hoja string por `null`. Alimenta\n * `createThemeContract` (web) desde la forma real, sin re-listar claves. */\nexport function deepNullLeaves<T extends Record<string, unknown>>(obj: T): Leaves<T, null> {\n const out = {} as Leaves<T, null>;\n for (const key of Object.keys(obj) as (keyof T)[]) {\n const value = obj[key];\n (out as Record<keyof T, unknown>)[key] =\n value !== null && typeof value === \"object\"\n ? deepNullLeaves(value as Record<string, unknown>)\n : null;\n }\n return out;\n}\n\n/** Paths punteados de todas las hojas (`\"bg.page\"`, `\"focus\"`, …), en orden de recorrido. */\nexport function colorLeafPaths(obj: Record<string, unknown>, prefix = \"\"): string[] {\n const paths: string[] = [];\n for (const key of Object.keys(obj)) {\n const value = obj[key];\n const path = prefix ? `${prefix}.${key}` : key;\n if (value !== null && typeof value === \"object\") {\n paths.push(...colorLeafPaths(value as Record<string, unknown>, path));\n } else {\n paths.push(path);\n }\n }\n return paths;\n}\n\n/** Lee la hoja en `path` (punteado). Los tests iteran `colorLeafPaths` y leen con esto. */\nexport function leafAt(obj: Record<string, unknown>, path: string): string {\n return path\n .split(\".\")\n .reduce<unknown>((acc, key) => (acc as Record<string, unknown>)[key], obj) as string;\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { type SchemaName, schemas } from \"../schemas\";\nimport { type ColorTokens, type Mode, type ModePreference, modeNames } from \"../theme-types\";\nimport type { StorageAdapter, SystemModeAdapter } from \"./adapters\";\nimport { resolveMode } from \"./resolve-mode\";\nimport { sanitizePersisted } from \"./sanitize-persisted\";\n\nexport interface ThemeStoreOptions {\n defaultSchema?: SchemaName;\n defaultMode?: ModePreference;\n}\n\n/**\n * Núcleo platform-agnostic del tema: estado resuelto + acciones. Web y native\n * lo extienden con sus extras de plataforma (web: `themeClass`; native:\n * `colorTokens` + `tokens`). Una sola fuente para la forma común.\n */\nexport interface ThemeState {\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 setSchema: (schema: SchemaName) => void;\n setMode: (mode: ModePreference) => void;\n toggleMode: () => void;\n cycleMode: () => void;\n}\n\nexport interface ThemeStore extends ThemeState {\n /** Paleta de color resuelta del schema×modo activo. */\n colorTokens: ColorTokens;\n}\n\n/**\n * Theme store headless: estado schema/modo/preferencia + paleta resuelta.\n * `storage` y `system` deben ser referencias estables (memoizadas por quien lo usa).\n */\nexport function useThemeStore(\n options: ThemeStoreOptions,\n storage: StorageAdapter,\n system: SystemModeAdapter,\n): ThemeStore {\n const { defaultSchema = \"tinta\", defaultMode = \"light\" } = options;\n // Leemos el storage una sola vez al montar (no dos veces, uno por estado).\n const [persisted] = useState(() => sanitizePersisted(storage.read()));\n const [schema, setSchema] = useState<SchemaName>(persisted?.schema ?? defaultSchema);\n const [preference, setPreference] = useState<ModePreference>(\n persisted?.preference ?? defaultMode,\n );\n const [systemMode, setSystemMode] = useState<Mode>(() => system.get());\n // Con `hydrate()` async (native) arrancamos no-hidratados: suprimimos `write` hasta\n // aplicar lo persistido, para que el default no pise lo guardado. Sin `hydrate` (web),\n // `read()` ya fue autoritativo → hidratados desde el inicio.\n const [hydrated, setHydrated] = useState(() => !storage.hydrate);\n\n // Hidratación async (native): aplica lo persistido una vez y habilita la persistencia.\n useEffect(() => {\n if (!storage.hydrate) return;\n let active = true;\n void storage.hydrate().then((raw) => {\n if (!active) return;\n const clean = sanitizePersisted(raw);\n if (clean.schema) setSchema(clean.schema);\n if (clean.preference) setPreference(clean.preference);\n setHydrated(true);\n });\n return () => {\n active = false;\n };\n }, [storage]);\n\n // Mientras la preferencia sea \"system\", seguimos los cambios del SO en vivo.\n useEffect(() => {\n if (preference !== \"system\") return;\n const update = () => setSystemMode(system.get());\n update();\n return system.subscribe(update);\n }, [preference, system]);\n\n const mode = resolveMode(preference, systemMode);\n\n // Persistimos cada cambio, una vez hidratados (no antes: pisaríamos lo guardado).\n useEffect(() => {\n if (!hydrated) return;\n storage.write({ schema, preference });\n }, [schema, preference, storage, hydrated]);\n\n return useMemo<ThemeStore>(\n () => ({\n schema,\n mode,\n preference,\n // Guard defensivo: un schema/modo inesperado (default inválido del caller) cae a\n // tinta/light en vez de indexar `undefined` y crashear.\n colorTokens: schemas[schema]?.[mode]?.color ?? schemas.tinta.light.color,\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}\n","import type { Mode, ModePreference } from \"../theme-types\";\n\n// Precedencia de las preferencias del SO → modo, de mayor a menor prioridad. `contrast`\n// (accesibilidad, nunca debe perder) gana sobre `dark`; si ninguna media-query matchea, el\n// baseline es \"light\". Fuente ÚNICA que consumen el adapter web (get/subscribe) y el generador\n// de media-queries del tema (theme.css.ts), para que la precedencia no dependa del orden\n// accidental de declaración en tres lugares distintos.\nexport const SYSTEM_MODE_PRECEDENCE = [\n { query: \"(prefers-contrast: more)\", mode: \"contrast\" },\n { query: \"(prefers-color-scheme: dark)\", mode: \"dark\" },\n] as const satisfies readonly { query: string; mode: Mode }[];\n\nexport function resolveMode(preference: ModePreference, systemMode: Mode): Mode {\n return preference === \"system\" ? systemMode : preference;\n}\n","import { isSchemaName } from \"../schemas\";\nimport { isModePreference } from \"../theme-types\";\nimport type { PersistedTheme } from \"./adapters\";\n\n/**\n * Filtra un objeto persistido (de storage) a solo sus campos válidos contra el\n * registro ACTUAL de schemas/modos. Un `schema` removido/renombrado o una\n * `preference` desconocida (datos viejos en localStorage/AsyncStorage) se\n * descartan en vez de propagarse y romper la resolución de la paleta\n * (`schemas[schema][mode]` = undefined → crash).\n */\nexport function sanitizePersisted(\n raw: Partial<PersistedTheme> | null | undefined,\n): Partial<PersistedTheme> {\n if (!raw || typeof raw !== \"object\") return {};\n const clean: Partial<PersistedTheme> = {};\n if (isSchemaName(raw.schema)) clean.schema = raw.schema;\n if (isModePreference(raw.preference)) clean.preference = raw.preference;\n return clean;\n}\n","import {\n type ModePreference,\n type SchemaName,\n type ThemeState,\n useThemeStore,\n} from \"@octavius2929-personal/design-system-core\";\nimport { createContext, useContext, useEffect, useMemo } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Surface } from \"../../components/surface\";\nimport { createWebStorageAdapter, createWebSystemModeAdapter } from \"../adapters\";\nimport { themes } from \"../theme.css\";\n\nexport type { ModePreference };\n\ninterface ThemeContextValue extends ThemeState {\n themeClass: string;\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\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 * Si es true, el provider pinta el canvas de página en el tema activo: envuelve en\n * <Surface fill> y pinta el <body> (cubre overscroll). Default false: sin wrapper.\n */\n paintRoot?: boolean;\n}\n\nexport function ThemeProvider({\n children,\n defaultSchema = \"tinta\",\n defaultMode = \"light\",\n storageKey = \"ds-theme\",\n persist = true,\n paintRoot = false,\n}: ThemeProviderProps) {\n const storage = useMemo(\n () => createWebStorageAdapter(storageKey, persist),\n [storageKey, persist],\n );\n const system = useMemo(() => createWebSystemModeAdapter(), []);\n const store = useThemeStore({ defaultSchema, defaultMode }, storage, system);\n\n // Pinta el <body> con el color de página resuelto (cubre el overscroll). Reversible:\n // guarda el valor previo y lo restaura al desmontar o al apagar paintRoot.\n useEffect(() => {\n if (!paintRoot) return;\n const { style } = document.body;\n const prev = style.backgroundColor;\n style.backgroundColor = store.colorTokens.bg.page;\n return () => {\n style.backgroundColor = prev;\n };\n }, [paintRoot, store.colorTokens.bg.page]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n schema: store.schema,\n mode: store.mode,\n preference: store.preference,\n themeClass: themes[store.schema][store.mode],\n setSchema: store.setSchema,\n setMode: store.setMode,\n toggleMode: store.toggleMode,\n cycleMode: store.cycleMode,\n }),\n [store],\n );\n return (\n <ThemeContext.Provider value={value}>\n {paintRoot ? <Surface fill>{children}</Surface> : children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme(): ThemeContextValue {\n return useContext(ThemeContext) ?? DEFAULT_VALUE;\n}\n","import { SYSTEM_MODE_PRECEDENCE } from \"@octavius2929-personal/design-system-core\";\nimport type {\n Mode,\n PersistedTheme,\n StorageAdapter,\n SystemModeAdapter,\n} from \"@octavius2929-personal/design-system-core\";\n\nexport function createWebStorageAdapter(storageKey: string, persist: boolean): StorageAdapter {\n return {\n read() {\n if (!persist || typeof window === \"undefined\") return null;\n try {\n const raw = window.localStorage.getItem(storageKey);\n return raw ? (JSON.parse(raw) as Partial<PersistedTheme>) : null;\n } catch {\n return null;\n }\n },\n write(value) {\n if (!persist || typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(value));\n } catch {\n // localStorage puede no estar disponible (modo privado / SSR): degradamos en silencio.\n }\n },\n };\n}\n\nexport function createWebSystemModeAdapter(): SystemModeAdapter {\n function get(): Mode {\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") return \"light\";\n // La primera media-query que matchea gana (precedencia definida una sola vez en el core).\n for (const { query, mode } of SYSTEM_MODE_PRECEDENCE) {\n if (window.matchMedia(query).matches) return mode;\n }\n return \"light\";\n }\n return {\n get,\n subscribe(onChange) {\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") {\n return () => {};\n }\n const mqls = SYSTEM_MODE_PRECEDENCE.map((p) => window.matchMedia(p.query));\n for (const mql of mqls) mql.addEventListener?.(\"change\", onChange);\n return () => {\n for (const mql of mqls) mql.removeEventListener?.(\"change\", onChange);\n };\n },\n };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/surface/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfc3VyZmFjZV9fNnZ3YTl5MCB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctcGFnZV9fZTNncnVyMjgpOwogIGNvbG9yOiB2YXIoLS1mZy1zdHJvbmdfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc19maWxsX182dndhOXkxIHsKICBtaW4taGVpZ2h0OiAxMDBkdmg7Cn0';\nexport var fill = 'use-styles_fill__6vwa9y1';\nexport var surface = 'use-styles_surface__6vwa9y0';","import { type ElementType, type Ref, forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\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).\n// La ref apunta al elemento renderizado (dinámico vía `as`/variant), de ahí `HTMLElement`.\n// `forwardRef` no preserva el genérico `E`, así que casteamos el resultado para conservarlo.\nfunction TypographyInner<E extends ElementType = \"span\">(\n { variant, as, color, align, testId, ...rest }: TypographyProps<E>,\n ref: Ref<HTMLElement>,\n) {\n const Component = (as ?? defaultElement[variant]) as ElementType;\n const { text } = useStyles({ variant, color, align });\n const { testId: dataTestId } = useTestId(\"text\", testId);\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 ref={ref} data-testid={dataTestId} {...rest} className={text} />;\n}\n\n// `forwardRef` no acepta una render function genérica; casteamos en ambos extremos para\n// preservar el genérico `E` de cara al consumidor sin perder el tipado interno.\nconst TypographyForwarded = forwardRef(\n TypographyInner as (\n props: TypographyProps,\n ref: Ref<HTMLElement>,\n ) => ReturnType<typeof TypographyInner>,\n);\nTypographyForwarded.displayName = \"Typography\";\nexport const Typography = TypographyForwarded as <E extends ElementType = \"span\">(\n props: TypographyProps<E> & { ref?: Ref<HTMLElement> },\n) => ReturnType<typeof TypographyInner>;\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 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/typography.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7XWwZKiMBAG4LtPwXE9YBHAcXReYO_7AFQgLaQMCRPCKrO1775FMLjBTMaawiOk_w79FUo2qm9EKXFT9ZmCi8qgh1yKc5ahc80--ij4swqCo-AqPOKasv4Q_MbyRxjqW7XgIssgKWUn4_WbqWzpB5i6oWl4baoXTH2q6xnlEFZAy0o5E8P6T71sctvbPufPc2cr8zLuBUqBDNsGF5SX7u10ya-xwqR3Oq3rlMS8PQpZH4KuaUAWuIVhsRBMyImmDNsuV2waNYb12-rvajO3JrRtGO6NNfJaT8Vjz8jDfS21uF-93CZxz733cpuczY2_4p62c3Hn_03Wc1VBS9tDwAV3Syspbtm40OEay5LyQxA52StkxOOlxCtkYRde7Ao5nInXuUIzYviKeNjEpXt8um5sdJPFdGNLt_Trxg7dyq8bz3Tp05ESg5QuhpRYSCc_UuJAYn6kZIZUPx0pNUhbL5IuvjZGPqHUEhJ-odQh1PiF0pnQ-3ohiVyQ6SvxsojF0NHSaL0auvzeQ3k9dMgW6R4VcSAwwMQg7BZBGDpaCGcvgi6_R7h4EXTIRuidCHWngEwGxG3Q1pgxg_C6CIJuaSmgyMswBu4dEPJCjDFbAsXfpyhwo6jgBmO_yEH12tTm8J9UTcQBsv3qIz1lXV9qtHP_WB46WhaCgKHB36eJNnuoh3s5Lk6lFB0nJpwPj8JPwKfweOxrMCF6zmiDoA6iTXrtICSBaZDxKqwwldO8Yh20glFil8zmLd3z5gwXp5HRjJ17x9YB0zX57M0dr0IJZcfw7UkvD_-N_QP0ZpdSYA0AAA';\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/typography/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfYmFzZV9fZDc0amY2MCB7CiAgbWFyZ2luOiAwOwp9Ci51c2Utc3R5bGVzX2NvbG9yX3N0cm9uZ19fZDc0amY2MSB7CiAgY29sb3I6IHZhcigtLWZnLXN0cm9uZ19fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2NvbG9yX211dGVkX19kNzRqZjYyIHsKICBjb2xvcjogdmFyKC0tZmctbXV0ZWRfX2UzZ3J1cjJkKTsKfQoudXNlLXN0eWxlc19jb2xvcl9zdWJ0bGVfX2Q3NGpmNjMgewogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKfQoudXNlLXN0eWxlc19jb2xvcl9hY2NlbnRfX2Q3NGpmNjQgewogIGNvbG9yOiB2YXIoLS1hY2NlbnQtdGV4dF9fZTNncnVyMm0pOwp9Ci51c2Utc3R5bGVzX2NvbG9yX2Rhbmdlcl9fZDc0amY2NSB7CiAgY29sb3I6IHZhcigtLWRhbmdlci10ZXh0X19lM2dydXIycSk7Cn0KLnVzZS1zdHlsZXNfY29sb3Jfb2tfX2Q3NGpmNjYgewogIGNvbG9yOiB2YXIoLS1zdGF0dXMtb2tfX2UzZ3J1cjJyKTsKfQoudXNlLXN0eWxlc19jb2xvcl93YXJuX19kNzRqZjY3IHsKICBjb2xvcjogdmFyKC0tc3RhdHVzLXdhcm5fX2UzZ3J1cjJzKTsKfQoudXNlLXN0eWxlc19jb2xvcl9pbmZvX19kNzRqZjY4IHsKICBjb2xvcjogdmFyKC0tc3RhdHVzLWluZm9fX2UzZ3J1cjJ0KTsKfQoudXNlLXN0eWxlc19hbGlnbl9sZWZ0X19kNzRqZjY5IHsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci51c2Utc3R5bGVzX2FsaWduX2NlbnRlcl9fZDc0amY2YSB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci51c2Utc3R5bGVzX2FsaWduX3JpZ2h0X19kNzRqZjZiIHsKICB0ZXh0LWFsaWduOiByaWdodDsKfQ';\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 = {strong:'use-styles_color_strong__d74jf61',muted:'use-styles_color_muted__d74jf62',subtle:'use-styles_color_subtle__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 MouseEventHandler, forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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.\n// `type=\"button\"` por defecto: nunca envía un <form> por accidente (se puede sobreescribir).\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant,\n tone,\n size = \"md\",\n startIcon: StartIcon,\n endIcon: EndIcon,\n full,\n className,\n type = \"button\",\n testId,\n loading,\n selected,\n children,\n onClick,\n ...rest\n },\n ref,\n) {\n const { container, content, spinner } = useStyles({\n variant,\n tone,\n size,\n full,\n className,\n selected,\n loading,\n });\n const { testId: dataTestId, slot } = useTestId(\"button\", testId);\n const iconSize = ICON_SIZE[size];\n\n // `loading` bloquea el click también por teclado: pointer-events:none (en el className de\n // `root`) ya lo evita con mouse, pero Enter/Space en un botón enfocado igual dispara `click`.\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (loading) return;\n onClick?.(event);\n };\n\n return (\n <button\n ref={ref}\n type={type}\n className={container}\n data-testid={dataTestId}\n data-state={states({ disabled: rest.disabled, loading, selected })}\n aria-busy={loading || undefined}\n aria-disabled={loading || undefined}\n aria-pressed={selected === undefined ? undefined : selected}\n onClick={handleClick}\n {...rest}\n >\n <span className={content}>\n {StartIcon && <StartIcon size={iconSize} />}\n {children}\n {EndIcon && <EndIcon size={iconSize} />}\n </span>\n {loading && <span className={spinner} aria-hidden=\"true\" data-testid={slot(\"spinner\")} />}\n </button>\n );\n});\n","// Arma el valor de `data-state`: los keys cuyo valor es truthy, separados por espacio\n// (estilo className). Devuelve undefined si no hay ninguno activo, así React omite el\n// atributo en vez de renderizar `data-state=\"\"`. Maestro matchea con [data-state~=\"x\"].\nexport function states(map: Record<string, boolean | undefined | null>): string | undefined {\n const active = Object.keys(map).filter((key) => map[key]);\n return active.length > 0 ? active.join(\" \") : undefined;\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 const Tone = `${tone.charAt(0).toUpperCase()}${tone.slice(1)}`;\n return `${variant}${Tone}` as ToneKey;\n}\n\nexport function useStyles({\n variant = \"filled\",\n tone = \"ink\",\n size = \"md\",\n full,\n className,\n selected,\n loading,\n}: {\n [K in \"variant\" | \"tone\" | \"size\" | \"full\" | \"className\" | \"selected\" | \"loading\"]?:\n | ButtonProps[K]\n | undefined;\n}): {\n container: string;\n content: string;\n spinner: string;\n} {\n const { themeClass } = useTheme();\n const container = useMemo(\n () =>\n [\n themeClass,\n styles.root,\n styles.size[size],\n // `selected` pisa el tono en vez de combinarse con él (ver comentario en use-styles.css.ts).\n selected ? styles.selected : styles.tone[toneKey(variant, tone)],\n full && styles.full,\n loading && styles.loadingRoot,\n className,\n ]\n .filter(Boolean)\n .join(\" \"),\n [themeClass, variant, tone, size, full, loading, selected, className],\n );\n return {\n container,\n content: loading ? styles.contentHidden : styles.content,\n spinner: styles.spinner,\n };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/button/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA71YyXLjNhC9-ytwSZV1gEuL7Xg4l0xNDsk1t5xUINGkYIEAB4tkJeV_TwEEIa5aPFZOEomHfo-vG00Cv23hkCtSgkZWA9bmwEGvdcXEer2oUsM4Z-jfO4Tmv_gfhIwiQudSlQlS0hAD9_PZ1zuE3u8QWsxPwFbPcwpFwL7fPbT4lJQm8s19hEpqZpgUCVLAiWE7cBMp0xUnhwQxwZkAnHN4c_cJZ4XAzECpE5SBMKDc7VerDcsPOJPCgDDtoYJUCdoRdY-xrkgGWC_Xa1gVyqoF8SJzKQzOScn4oUH6W6UUsoEuPZKDMaB8HCaKBmwUybZMFHjPKKgY3PopBt4MbnlkqwpURrR_ylQqCgorQpnVTbj6CqdEQ4xVzlrwPaNm06CbEJYf0VUb7Z1PkJacUXc7s0pLlaBKssai_YYZqN1JkJB7RSov3akOuSGcB0JqFc6JNtGZxSyMANGAmdjGkcfZ15P5T0jm8p0Iae4TyjRJOdCZr4qWY_4vJwb-vp8_PFVv54LmMrMa75hmKQcfTFrjiihBy-qtNiKmObM6yq0TFsBY5rkG4-ecIWyUe66UZNtCSStoUF4RBcJ45yV3xgfqAmubmmPWltDOWgfbZLKLr1dYk04hDSacyz3QvlwuCWWi-KuteuHFNpP3hHmFoSYw7EAY7YIK6EfT7B9Y6zJGWtarmFDaWhIjK6078hhHsuMadKETtFgMHfekJY2kqxOkqxg67ZE-xRE6IB1JsyflRSR9_BDpcxyBAelqSJpbziPjk2eMvbBpgqEBuCbcn26kgHXOOAf6p1uJIdDzoDaPVWiUFEWsqjod3fIrcEWKY-G9TBbqeLjLFCYbuQM11gtGZZfWAI009JSkIXRS0bfMvTiiqF8n-ImHdVr08nVoXF5gKZqQAZZPKp0KerHYaxwMZH5GZNue0zaEj4gLDbSd3JerW-NYUf5UxY2pusaw1PVrsQURichJol5yvlzlQLDbfTtEuvIzCmdC3AcqR8v8qI2PsxUbqU3bcXJtHZxf5Z0AF2m4SdY9Tc_W9CY5v-iB-0pu8sx1F_qdiMI1hUCVTUSlHtYtUvGzLXMq6MVir_ElkHV7oDynbQifXpY9ddd9UAa-Tv38-AznJsR9wLpOz6hOLKQeF9zEiIsWUl_J5z-1Bg6Z73KBI7-y8f4P746hxs9_Y4Ste6Qout--l50DnNvsj1L-wSiF4zHI5hbECEl3aGAOCZoP3K2YEK0ie-2di5BUS26NPzFgwm9K5-5_SVTB3Lg1sr0tgNJdbYAVGxMv6-T3dpQbILtD1PljFjbHmVVuVXx3hdIqHCOr0bVz-hyj3tAEirrjE8FK4p4NC1JCMn0g1QVTq0jtyPzhRXfHDCvdCUxuRVZDXNKI6oKYgToCzqR1p0RM5Eww5-z7f2WV8MAgEwAA';\nexport var content = 'use-styles_content__1pbtillg';\nexport var contentHidden = 'use-styles_contentHidden__1pbtillh';\nexport var full = 'use-styles_full__1pbtill5';\nexport var loadingRoot = 'use-styles_loadingRoot__1pbtill1';\nexport var root = 'use-styles_root__1pbtill0';\nexport var selected = 'use-styles_selected__1pbtillf';\nexport var size = {sm:'use-styles_size_sm__1pbtill2',md:'use-styles_size_md__1pbtill3',lg:'use-styles_size_lg__1pbtill4'};\nexport var spinner = 'use-styles_spinner__1pbtillj';\nexport var tone = {filledInk:'use-styles_tone_filledInk__1pbtill6',filledAccent:'use-styles_tone_filledAccent__1pbtill7',outlineInk:'use-styles_tone_outlineInk__1pbtill8',outlineAccent:'use-styles_tone_outlineAccent__1pbtill9',ghostInk:'use-styles_tone_ghostInk__1pbtilla',ghostAccent:'use-styles_tone_ghostAccent__1pbtillb',filledDanger:'use-styles_tone_filledDanger__1pbtillc',outlineDanger:'use-styles_tone_outlineDanger__1pbtilld',ghostDanger:'use-styles_tone_ghostDanger__1pbtille'};","import { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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 const Divider = forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { vertical, label, testId, ...rest },\n ref,\n) {\n const hasLabel = label != null;\n const { root, line, label: labelClass } = useStyles({ vertical, hasLabel });\n const { testId: dataTestId, slot } = useTestId(\"layout\", testId);\n\n if (hasLabel) {\n return (\n <div ref={ref} role=\"separator\" className={root} data-testid={dataTestId} {...rest}>\n <span className={line} />\n <span className={labelClass} data-testid={slot(\"label\")}>\n {label}\n </span>\n <span className={line} />\n </div>\n );\n }\n\n return <div ref={ref} role=\"separator\" className={root} data-testid={dataTestId} {...rest} />;\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/divider/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMW43djd5ajAgewogIGJvcmRlcjogbm9uZTsKfQoudXNlLXN0eWxlc19ob3Jpem9udGFsX18xbjd2N3lqMSB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxcHg7CiAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyLXN1YnRsZV9fZTNncnVyMmcpOwp9Ci51c2Utc3R5bGVzX3ZlcnRpY2FsX18xbjd2N3lqMiB7CiAgd2lkdGg6IDFweDsKICBhbGlnbi1zZWxmOiBzdHJldGNoOwogIGhlaWdodDogMTAwJTsKICBtaW4taGVpZ2h0OiAxZW07CiAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyLXN1YnRsZV9fZTNncnVyMmcpOwp9Ci51c2Utc3R5bGVzX2xhYmVsbGVkX18xbjd2N3lqMyB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtczNfX2UzZ3J1cjFiKTsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoudXNlLXN0eWxlc19saW5lX18xbjd2N3lqNCB7CiAgZmxleDogMTsKICBoZWlnaHQ6IDFweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXItc3VidGxlX19lM2dydXIyZyk7Cn0KLnVzZS1zdHlsZXNfbGFiZWxfXzFuN3Y3eWo1IHsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IHZhcigtLXRleHQtZXllYnJvdy1zaXplX19lM2dydXI0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZXN0X19lM2dydXIxdik7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tZmctc3VidGxlX19lM2dydXIyZSk7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQ';\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 { forwardRef, useState } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { AvatarProps, AvatarStatus } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Deriva iniciales de un nombre completo: primera letra de las primeras dos palabras (una\n// sola letra si el nombre es de una sola palabra). `toLocaleUpperCase` normaliza acentos\n// correctamente (p.ej. \"álvaro\" → \"Á\"). Nombre vacío/undefined/solo espacios → \"\".\nfunction getInitials(name?: string): string {\n const words = name?.trim().split(/\\s+/).filter(Boolean) ?? [];\n if (words.length === 0) return \"\";\n const firstWord = words[0] ?? \"\";\n // Array.from toma el primer code point completo (no el primer UTF-16 code unit), más\n // robusto que charAt/[0] para nombres fuera de BMP; para acentos latinos da lo mismo.\n const firstLetter = Array.from(firstWord)[0] ?? \"\";\n if (words.length === 1) return firstLetter.toLocaleUpperCase();\n const secondWord = words[1] ?? \"\";\n const secondLetter = Array.from(secondWord)[0] ?? \"\";\n return (firstLetter + secondLetter).toLocaleUpperCase();\n}\n\n// Nombre accesible de cada estado — anunciado por lectores de pantalla (visualmente oculto,\n// ver `statusText`/`srOnly`). La forma que distingue cada uno sin depender del color vive en\n// use-styles.css.ts (`mark`/`markShape`).\nconst statusLabel: Record<AvatarStatus, string> = {\n online: \"Online\",\n away: \"Away\",\n busy: \"Busy\",\n offline: \"Offline\",\n};\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// La ref apunta al <span> raíz, que es solo el contenedor de posicionamiento: el círculo\n// visual (imagen/iniciales) y el indicador de estado son hijos independientes, así\n// `decorative` puede ocultar la foto/iniciales del árbol accesible sin ocultar el estado,\n// que es información propia (ver types.ts).\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n {\n size,\n filled,\n src,\n alt,\n name,\n status,\n decorative = false,\n className,\n children,\n testId,\n ...rest\n },\n ref,\n) {\n const [imgFailed, setImgFailed] = useState(false);\n // Si cambia el src (nueva imagen), le damos otra chance antes de asumir que falla.\n // Ajuste de estado durante el render (patrón recomendado por React para \"derivar\" estado\n // de una prop que cambia) en vez de useEffect: evita el repintado extra y no depende de un\n // valor no leído dentro del efecto.\n const [lastSrc, setLastSrc] = useState(src);\n if (src !== lastSrc) {\n setLastSrc(src);\n setImgFailed(false);\n }\n\n const { root, visual, image, dot, mark, statusText } = useStyles({\n size,\n filled,\n status,\n className,\n });\n const { testId: dataTestId, slot } = useTestId(\"media\", testId);\n\n const showImage = Boolean(src) && !imgFailed;\n // Trim: un alt/name de solo espacios no es un nombre accesible real (evita\n // role=\"img\" con aria-label en blanco).\n const accessibleName = alt?.trim() || name?.trim() || undefined;\n const fallback = children ?? getInitials(name);\n\n // Decorativo: todo el círculo visual se oculta del árbol accesible. Informativo +\n // fallback (sin <img> real): el círculo expone su propio nombre accesible. Informativo +\n // <img> real: el nombre accesible vive en el `alt` nativo del <img>, no lo dupliques acá\n // (evita dos roles \"img\" anidados con el mismo nombre).\n const visualA11yProps: { \"aria-hidden\"?: true; role?: \"img\"; \"aria-label\"?: string } = decorative\n ? { \"aria-hidden\": true }\n : showImage\n ? {}\n : accessibleName\n ? { role: \"img\", \"aria-label\": accessibleName }\n : {};\n\n return (\n <span ref={ref} className={root} data-testid={dataTestId} {...rest}>\n <span className={visual} data-testid={slot(\"visual\")} {...visualA11yProps}>\n {showImage ? (\n <img\n src={src}\n alt={decorative ? \"\" : (accessibleName ?? \"\")}\n className={image}\n onError={() => setImgFailed(true)}\n />\n ) : (\n fallback\n )}\n </span>\n {status && (\n <span className={dot} data-testid={slot(\"status\")} data-status={status}>\n <span className={mark} aria-hidden=\"true\" />\n <span className={statusText}>{statusLabel[status]}</span>\n </span>\n )}\n </span>\n );\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// Mapped type en vez de `Pick`: bajo `exactOptionalPropertyTypes`, `Pick` conserva props\n// opcionales que NO admiten pasar `undefined` explícito. El componente sí necesita pasarlo\n// (las props llegan sin default aplicado), así que unimos `| undefined` explícitamente.\ntype StyleProps = {\n [K in \"size\" | \"filled\" | \"status\" | \"className\"]?: AvatarProps[K] | undefined;\n};\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.\n// `dot`/`mark` son \"\" cuando no hay `status` — el componente decide si renderiza el\n// indicador, este hook solo resuelve las clases cuando corresponde.\nexport function useStyles({ size = \"md\", filled, status, className }: StyleProps): {\n root: string;\n visual: string;\n image: string;\n dot: string;\n mark: string;\n statusText: string;\n} {\n const { themeClass } = useTheme();\n\n const root = useMemo(\n () => [themeClass, styles.root, styles.size[size]].filter(Boolean).join(\" \"),\n [themeClass, size],\n );\n\n const visual = useMemo(\n () =>\n [styles.visual, filled ? styles.variant.filled : styles.variant.default, className]\n .filter(Boolean)\n .join(\" \"),\n [filled, className],\n );\n\n const dot = useMemo(\n () =>\n status\n ? [styles.dot, styles.dotSize[size], styles.dotTone[status]].filter(Boolean).join(\" \")\n : \"\",\n [status, size],\n );\n\n const mark = useMemo(\n () => (status ? [styles.mark, styles.markShape[status]].filter(Boolean).join(\" \") : \"\"),\n [status],\n );\n\n return { root, visual, image: styles.image, dot, mark, statusText: styles.statusText };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/avatar/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA72Wz3LbIBDG734KLp1pD2QsJ3FT5THSuwaJRSJGrArIjtPpu3eEJSz0J006nR4XL79FH98uvmktUOvOCmxmEF2WJbVOTN1uyc8NIQ1a6STqlBhQzMkjPG4I4dI2ip1TIrWSGqhQ8PK4-bW5GcGO0rZMBVziccsbCWFKlppKB7VNSQHagemWn1vrpDjTArUD7cY_5fhCrXyVukxJjoaDoTl61klyV6Uk2W4_dWEFsqzcNe6TDeOytSk5MvOZ9hEVrVJZBrelaU2iv4zSe-gle0C0CkJ2M872EqTEopJ8tFygQjNAREmtM6jLAbErPEKgdlSwWqpzSO2WeumG7O01-dR_4SX5ElELtcxR8XDAV7_Bqx4k6VbwCEYoPKWkkpyDnt6jrFkJ4Rp3_hr_IDHmz1A4KmR3Yx1_yrTyFTJbB-rtmHq7a17G1CH239rtTEly18z85pk1D8y7MfNuGzOHeMzcrzBVGZj3Y-b9PmYO8Yi5282ZR2Yk0y7jIFirrv229-ycFYfSYKt5Spxh2jbMgHYd9x3uWa4kpFJwFebrrNDbhozq5iVtvB_6lIdZVT6aIQ-TGcJyi6p1foaYi2rbS384h3Uf_I8Z8e-GQAXsGJoy-fHRKfAuPZ8m7fItbsLYhpd4mTFqDxYxJi2XLPh2YIzaIY8Yk3ZY6ieO7jtqyNDfbOAUK460jrnWUjwEecySPB7JTt1s7IH8beCJGR2QdhWZt_aKhBUkZ7rsfMXs9RL1KhKFiL5crFCXbLFioMFrUefK2QlqZg6hbBk_xrnC4vD47oPMwU8Va2a3WsVFNGpY3xtpLaMxex-_MQ8ff8XXikaeeX5jVjlsusbylRUIF4L-jPv4Hdz_xT-NVVEnjjksqvobrZKVmcYJAAA';\nexport var dot = 'use-styles_dot__1mn1rmu8';\nexport var dotSize = {sm:'use-styles_dotSize_sm__1mn1rmu9',md:'use-styles_dotSize_md__1mn1rmua',lg:'use-styles_dotSize_lg__1mn1rmub'};\nexport var dotTone = {online:'use-styles_dotTone_online__1mn1rmuc',away:'use-styles_dotTone_away__1mn1rmud',busy:'use-styles_dotTone_busy__1mn1rmue',offline:'use-styles_dotTone_offline__1mn1rmuf'};\nexport var image = 'use-styles_image__1mn1rmu2';\nexport var mark = 'use-styles_mark__1mn1rmug';\nexport var markShape = {online:'use-styles_markShape_online__1mn1rmuh',busy:'use-styles_markShape_busy__1mn1rmui',away:'use-styles_markShape_away__1mn1rmuj',offline:'use-styles_markShape_offline__1mn1rmuk'};\nexport var root = 'use-styles_root__1mn1rmu0';\nexport var size = {sm:'use-styles_size_sm__1mn1rmu3',md:'use-styles_size_md__1mn1rmu4',lg:'use-styles_size_lg__1mn1rmu5'};\nexport var statusText = 'surfaces_srOnly__1qa7atn0';\nexport var variant = {'default':'use-styles_variant_default__1mn1rmu6',filled:'use-styles_variant_filled__1mn1rmu7'};\nexport var visual = 'use-styles_visual__1mn1rmu1';","import { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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`.\n// La ref apunta al <span> raíz.\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { count, tone, className, children, testId, ...rest },\n ref,\n) {\n const { root, dot } = useStyles({ tone, className });\n const { testId: dataTestId, slot } = useTestId(\"media\", testId);\n return (\n <span ref={ref} className={root} data-testid={dataTestId} {...rest}>\n {children}\n {count != null && (\n <span className={dot} data-testid={slot(\"dot\")}>\n {count}\n </span>\n )}\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/badge/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMXdwZWk2cDAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKfQoudXNlLXN0eWxlc19kb3RfXzF3cGVpNnAxIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiBjYWxjKHZhcigtLXNwYWNlLXMzX19lM2dydXIxYikgKiAtMSk7CiAgcmlnaHQ6IGNhbGModmFyKC0tc3BhY2UtczNfX2UzZ3J1cjFiKSAqIC0xKTsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgbWluLXdpZHRoOiAxOHB4OwogIGhlaWdodDogMThweDsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1zMF9fZTNncnVyMTgpIHZhcigtLXNwYWNlLXMxX19lM2dydXIxOSk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbW9ub19fZTNncnVyMik7CiAgZm9udC1zaXplOiAxMXB4OwogIGZvbnQtd2VpZ2h0OiB2YXIoLS13ZWlnaHQtc2VtaWJvbGRfX2UzZ3J1cjF6KTsKICBsaW5lLWhlaWdodDogMTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZV9fZTNncnVyMXQpOwogIGNvbG9yOiB2YXIoLS1mZy1vbkFjY2VudF9fZTNncnVyMmYpOwogIGJvcmRlcjogdmFyKC0tYm9yZGVyLWhlYXZ5X19lM2dydXIxcSkgc29saWQgdmFyKC0tYmctcGFnZV9fZTNncnVyMjgpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsX19lM2dydXIxbik7Cn0KLnVzZS1zdHlsZXNfdG9uZV9pbmtfXzF3cGVpNnAyIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1mZy1zdHJvbmdfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc190b25lX2FjY2VudF9fMXdwZWk2cDMgewogIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1iYXNlX19lM2dydXIyaik7Cn0';\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 Ref, forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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.\n// La ref es `HTMLElement` (honesto): `linear` renderiza un <div>, `circular` un <span>.\nexport const Progress = forwardRef<HTMLElement, ProgressProps>(function Progress(\n { variant = \"linear\", value, size = 20, className, testId, ...rest },\n ref,\n) {\n const { track, bar, spinner } = useStyles({ variant, value, className });\n const indeterminate = value === undefined;\n const { testId: dataTestId, slot } = useTestId(\"media\", testId);\n\n if (variant === \"circular\") {\n return (\n <span\n ref={ref as Ref<HTMLSpanElement>}\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 data-testid={dataTestId}\n data-state={states({ indeterminate })}\n {...rest}\n />\n );\n }\n\n return (\n <div\n ref={ref as Ref<HTMLDivElement>}\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 data-testid={dataTestId}\n data-state={states({ indeterminate })}\n {...rest}\n >\n <div\n className={bar}\n style={indeterminate ? undefined : { width: `${value}%` }}\n data-testid={slot(\"bar\")}\n />\n </div>\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/progress/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA62Ty26kMBBF93yFNyN1L9yiH8lEZJPPmB0qcAEVTJnxo5NW1P8-wgTSROlkImWFEbfqnqqLH1o8VRY6dCI4lM6fNLrc9cR53ham_31MxUsiRPorPoTwFthVxnaZsMaDx1W6vk-EOCdCbNNPZPvbVGH9qj0nDx8ba1I4OW-vOsejBo9_VnIw_YLgQn54U5-TzYWzt1C2k_Mu9miQ6sZn4tA_DxUFlG1tTWCViSPYlZRFLV3gFjnPcV_bYHcQe5sj2kqbp0w0pBRyrDZWoZUWFAU3NRjfZBW0nlpsObZ4IuWbLM5z_460ADtx7heco_gjUChLZC8LcDijPq6_jbXkIFbo0XbE4OfMDpHolX53E3mAqQNPhiVDh9n1vJdiFWw8ZGK72bnlN08dcS2rwOUoGcERHEridh7ysF7WkcexqSxNYJ8J4oqYPL4fbrgBjPOib-JYilyv4TRUaWKUhTZl-7bF-bcYd9ogHE_z_v6uhTOa1FKjsIKg_czbXIbiTS9Lo4394Rg_T-Ty6l8LJN3cfRXIsCCw_7_9fzLvbXKJBAAA';\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 MouseEvent, forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport { XIcon } from \"../icons/x\";\nimport type { ChipProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// El chip dimensiona por igual su icono inicial y el de borrado.\nconst ICON_SIZE = 13;\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.\n// La ref apunta al <span> raíz (el chip siempre renderiza un <span>).\nexport const Chip = forwardRef<HTMLSpanElement, ChipProps>(function Chip(\n { selected, tone, onDelete, onClick, startIcon: StartIcon, children, testId, ...rest },\n ref,\n) {\n const clickable = Boolean(onClick);\n const { root, deleteBtn } = useStyles({ selected, tone, clickable });\n const { testId: dataTestId, slot } = useTestId(\"media\", testId);\n\n const handleDelete = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n onDelete?.();\n };\n\n return (\n <span\n ref={ref}\n className={root}\n onClick={onClick}\n data-testid={dataTestId}\n data-state={states({ selected })}\n {...rest}\n >\n {StartIcon ? <StartIcon size={ICON_SIZE} /> : null}\n {children}\n {onDelete && (\n <button\n type=\"button\"\n className={deleteBtn}\n aria-label=\"Remove\"\n onClick={handleDelete}\n data-testid={slot(\"delete\")}\n >\n <XIcon size={ICON_SIZE} />\n </button>\n )}\n </span>\n );\n});\n","import type { IconProps } from \"../types\";\n\nexport function XIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/chip/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA4VUy67bIBDd5ytYNguurpNUap3d_RFrDGM8DQaLR-K0uv9eGdvEURJlyXA4j4HhI3rkPlw1-spZG6qqgIF0c_hk_zaMSfK9hmvJyGgyyBuNw3HDGGhShlPAzpdMoAnoxrKCvmRncD849z0I5H5XVbhXLroCtiOisSbwBjrS1wWZSp01doHubkhPf7FkRdEnVY0hoEvUZNRyPjgQJzKKX0iiy3oxsQQcwogwvrGuK1nse3QCPI6bPUi5IpotF5ni9_Z-Z5936kReWyfRcQeSol9YphWvwWOGd2v4hWRoF_Rca4Fuzu0ane6mZN5qkmP50lLAyVDJjL046FPOMSIFsqZkoPXMLqPjDfiQO1ssiRA8cjKnvHOYRYex56kps4HaDsfN9-Zj9VCCNVilw_NjKdJjEVZbl29V8S4GlFlArlPdQeeaxAaivnltt091QYzvLUvvHqUnBB-vPpN1L9Vn9Pq-dn8epD1qFCnOrLtPujWIk3I2GrnK7YOzRmUykaTvEyveg7rp_Xrp7jndvTehSZyg1pjNHaamROdHpt7SNKBvj5WtPaN7kaxW3EdzQpOtwIMViRoDfgWTOX_e_yNvPpAOnCLDHak2lIzvp7l_PqefeWDW7RuHwqTpXidYanNvybToKBzfN-lJoLKxInp-Jk-1xhTPxjB-jyXb9cM0qvlvE9Hnfk1f0gzmtmk8hnTmuPn-D0VE0pCJBQAA';\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 ChangeEvent, forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\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`.\n// La ref apunta al <input> real (foco programático / integración con forms).\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { checked = false, onChange, label, disabled = false, id, testId, ...rest },\n ref,\n) {\n const { root, input, box, check } = useStyles({ checked, disabled });\n const { testId: dataTestId } = useTestId(\"toggle\", testId);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n onChange?.(e.target.checked);\n };\n\n return (\n <label className={root} data-testid={dataTestId} data-state={states({ checked, disabled })}>\n <input\n ref={ref}\n type=\"checkbox\"\n className={input}\n id={id}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n {...rest}\n />\n <span className={box}>{checked && <CheckIcon size={12} className={check} />}</span>\n {label}\n </label>\n );\n});\n","import type { IconProps } from \"../types\";\n\nexport function CheckIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/checkbox/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fOXpvZ2E5MCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLXMyX19lM2dydXIxYSk7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXRleHRfX2UzZ3J1cjEpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbWFsbC1zaXplX19lM2dydXIxMCk7CiAgY29sb3I6IHZhcigtLWZnLXN0cm9uZ19fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2JveF9fOXpvZ2E5MSB7CiAgd2lkdGg6IDE4cHg7CiAgaGVpZ2h0OiAxOHB4OwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLXJ1bGVfX2UzZ3J1cjFwKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWJhc2VfX2UzZ3J1cjFtKTsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZmxleC1zaHJpbms6IDA7CiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLWR1ci1mYXN0X19lM2dydXIyMSkgdmFyKC0tZWFzZS1pbmtfX2UzZ3J1cjI0KTsKfQouc3VyZmFjZXNfc3JPbmx5X18xcWE3YXRuMDpmb2N1cy12aXNpYmxlICsgLnVzZS1zdHlsZXNfYm94X185em9nYTkxIHsKICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZm9jdXNfX2UzZ3J1cjJ1KTsKICBvdXRsaW5lLW9mZnNldDogMnB4Owp9Ci51c2Utc3R5bGVzX2JveENoZWNrZWRfXzl6b2dhOTIgewogIGJhY2tncm91bmQ6IHZhcigtLWZnLXN0cm9uZ19fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2NoZWNrX185em9nYTkzIHsKICBjb2xvcjogdmFyKC0tYmctcGFnZV9fZTNncnVyMjgpOwp9Ci51c2Utc3R5bGVzX2Rpc2FibGVkX185em9nYTk0IHsKICBvcGFjaXR5OiAwLjU7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQ';\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__1qa7atn0';\nexport var root = 'use-styles_root__9zoga90';","import { forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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.\n// La ref apunta al <input> real (foco programático / integración con forms).\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n { checked, onChange, label, name, value, disabled, testId, ...rest },\n ref,\n) {\n const { root, input, circle, dot, label: labelClass } = useStyles({ disabled });\n const { testId: dataTestId } = useTestId(\"toggle\", testId);\n return (\n <label className={root} data-testid={dataTestId} data-state={states({ checked, disabled })}>\n <input\n ref={ref}\n className={input}\n type=\"radio\"\n name={name}\n value={value}\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n {...rest}\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 { 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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/radio/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA51Ty47bMAy85yt0bFBoEWeDPtwf6K2fYMgS5XCjlVyRysYt-u-FZMtJdg99HEUOhzMk9ZAIJPHkgLoYAnfdefrQ9Ied-LkRwiCNTk2tQO_Qg7QOLl82QiiHg5fI8Eyt0OAZYg4PamzFWcV3UtKoNEjadx08DjHFRm0zwgbP0qpndFNFlhDDhVdoQergQlwxgySOwQ8Vs9czKEXKqDHgrOHX5uHGkEFSvQNTTTXF1Bvm1LODlRnumH1gqZwLL2Bes2uMOtfN3Pv_GdhTIkY7SR08g-fb1AsaPrai-TQWgiPgcOTruw_RQJQLavayxGK6umnG7Q26CG8FBYfmJvxXo67kymCiCp5f0ibn1o5-XrSDi6RjRH9qxS5HOCpPyBh8e9d4oTIpSqtovYJ9s10yoAgk-tOaOWzLKihFqzRQR_Gbd1PXNd_VR8V-19qgE8kzEvYOxHvxp62FxHlbrdiPl3k6623qRGvfVJwtYBmsJeBS8-burv_osTRY1vT5fpfLs1f6NMSQvKljVTrfgewVXc_y6d-3cC_KqR5clXUossrXI_wBlSl_Q9kHM5VoJaPSupiu0l_Dc_JrydUizgJ-AwyrT0peBAAA';\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__1qa7atn0';\nexport var label = 'use-styles_label__vy61b44';\nexport var root = 'use-styles_root__vy61b40';","import { type KeyboardEvent, forwardRef, useId, useRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport { Radio } from \"../radio\";\nimport type { RadioGroupProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado: `value` + `onChange` (reporta el value elegido), agrupados nativamente por `name`.\n// Reusa `Radio` para cada opción en vez de duplicar su UI (input oculto + círculo + label).\n// Patrón WAI-ARIA \"radio group\": un solo radio tabbable (roving tabindex — el seleccionado, o\n// el primero habilitado si no hay selección); las flechas mueven Y seleccionan, con wrap;\n// Home/End van al primer/último habilitado. Las opciones deshabilitadas se saltean al navegar.\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(function RadioGroup(\n {\n options,\n value,\n onChange,\n name,\n label,\n disabled,\n orientation = \"vertical\",\n testId,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...rest\n },\n ref,\n) {\n const { root, label: labelClass, list } = useStyles({ disabled, orientation });\n const { testId: dataTestId } = useTestId(\"field\", testId);\n const baseId = useId();\n const labelId = `${baseId}-label`;\n // El nombre accesible del grupo vive en el propio role=\"radiogroup\" (no en un control\n // interno como en Select/Trigger): combina el label interno con el aria-labelledby externo.\n const groupLabelledBy =\n [label ? labelId : null, ariaLabelledBy].filter(Boolean).join(\" \") || undefined;\n const radioRefs = useRef<(HTMLInputElement | null)[]>([]);\n // Cada opción sigue siendo un `Radio` (tipo \"toggle\") por derecho propio, no un slot de\n // \"field\": conserva su propio testId compuesto. Se prefija con el testId del grupo (si lo\n // hay) para no colisionar con las opciones de otro RadioGroup sin instancia/provider propios\n // (misma limitación documentada para instancias repetidas del mismo tipo, ver testing/README).\n const optionTestId = (index: number) => [testId, `option-${index}`].filter(Boolean).join(\"-\");\n\n const selectedIndex = options.findIndex((option) => option.value === value);\n const isEnabled = (index: number) => !disabled && !options[index]?.disabled;\n const enabledIndexes = options.reduce<number[]>((acc, _option, index) => {\n if (isEnabled(index)) acc.push(index);\n return acc;\n }, []);\n const firstEnabled = enabledIndexes[0];\n const lastEnabled = enabledIndexes[enabledIndexes.length - 1];\n\n // Próximo índice habilitado a `delta` pasos de `from`, con wrap-around. Si no hay ninguno\n // habilitado, devuelve `from` (no-op).\n const step = (from: number, delta: number): number => {\n if (enabledIndexes.length === 0) return from;\n let index = from;\n for (let i = 0; i < options.length; i++) {\n index = (index + delta + options.length) % options.length;\n if (isEnabled(index)) return index;\n }\n return from;\n };\n\n const selectOption = (index: number) => {\n const option = options[index];\n // `step` puede devolver `from` sin cambios cuando no hay ningún índice habilitado (grupo\n // enteramente deshabilitado opción por opción): no reportar un value ahí.\n if (!option || !isEnabled(index)) return;\n onChange?.(option.value);\n radioRefs.current[index]?.focus();\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLInputElement>, index: number) => {\n if (disabled) return;\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowDown\":\n event.preventDefault();\n selectOption(step(index, 1));\n break;\n case \"ArrowLeft\":\n case \"ArrowUp\":\n event.preventDefault();\n selectOption(step(index, -1));\n break;\n case \"Home\":\n if (firstEnabled !== undefined) {\n event.preventDefault();\n selectOption(firstEnabled);\n }\n break;\n case \"End\":\n if (lastEnabled !== undefined) {\n event.preventDefault();\n selectOption(lastEnabled);\n }\n break;\n default:\n break;\n }\n };\n\n return (\n <div\n ref={ref}\n role=\"radiogroup\"\n className={root}\n aria-label={ariaLabel}\n aria-labelledby={groupLabelledBy}\n aria-disabled={disabled || undefined}\n data-testid={dataTestId}\n data-state={states({ disabled })}\n {...rest}\n >\n {label != null && (\n <span id={labelId} className={labelClass}>\n {label}\n </span>\n )}\n <div className={list}>\n {options.map((option, index) => {\n const checked = option.value === value;\n const optionDisabled = Boolean(disabled) || Boolean(option.disabled);\n // Roving tabindex: el seleccionado es tabbable; sin selección, el primero habilitado.\n const tabbable = checked || (selectedIndex === -1 && index === (firstEnabled ?? 0));\n return (\n <Radio\n key={option.value}\n ref={(el) => {\n radioRefs.current[index] = el;\n }}\n name={name}\n value={option.value}\n label={option.label}\n checked={checked}\n disabled={optionDisabled}\n tabIndex={tabbable ? 0 : -1}\n onChange={() => {\n // `Radio` no guarda esta guarda internamente (a diferencia de Checkbox/Switch);\n // la replicamos acá para que un click no reporte un value cuando está disabled.\n if (optionDisabled) return;\n onChange?.(option.value);\n }}\n onKeyDown={(event) => onKeyDown(event, index)}\n testId={optionTestId(index)}\n />\n );\n })}\n </div>\n </div>\n );\n});\n","import { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport type { RadioGroupProps } 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 orientation = \"vertical\",\n}: {\n disabled?: RadioGroupProps[\"disabled\"] | undefined;\n orientation?: RadioGroupProps[\"orientation\"] | undefined;\n}): {\n root: string;\n label: string;\n list: string;\n} {\n const { themeClass } = useTheme();\n return useMemo(() => {\n const root = [themeClass, styles.root, disabled && styles.disabled].filter(Boolean).join(\" \");\n const list = [styles.list, orientation === \"horizontal\" && styles.listHorizontal]\n .filter(Boolean)\n .join(\" \");\n return { root, label: styles.label, list };\n }, [themeClass, disabled, orientation]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/radio-group/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fbmZnaHJpMCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IHZhcigtLXNwYWNlLXMyX19lM2dydXIxYSk7Cn0KLnVzZS1zdHlsZXNfbGFiZWxfX25mZ2hyaTEgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9fX2UzZ3J1cjIpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1jYXB0aW9uLXNpemVfX2UzZ3J1cjE0KTsKICBsaW5lLWhlaWdodDogdmFyKC0tdGV4dC1jYXB0aW9uLWxpbmVIZWlnaHRfX2UzZ3J1cjE1KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdGV4dC1jYXB0aW9uLWxldHRlclNwYWNpbmdfX2UzZ3J1cjE3KTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKfQoudXNlLXN0eWxlc19saXN0X19uZmdocmkyIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZ2FwOiB2YXIoLS1zcGFjZS1zM19fZTNncnVyMWIpOwp9Ci51c2Utc3R5bGVzX2xpc3RIb3Jpem9udGFsX19uZmdocmkzIHsKICBmbGV4LWRpcmVjdGlvbjogcm93OwogIGZsZXgtd3JhcDogd3JhcDsKICBjb2x1bW4tZ2FwOiB2YXIoLS1zcGFjZS1zNV9fZTNncnVyMWQpOwogIHJvdy1nYXA6IHZhcigtLXNwYWNlLXMzX19lM2dydXIxYik7Cn0KLnVzZS1zdHlsZXNfZGlzYWJsZWRfX25mZ2hyaTQgewogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKfQ';\nexport var disabled = 'use-styles_disabled__nfghri4';\nexport var label = 'use-styles_label__nfghri1';\nexport var list = 'use-styles_list__nfghri2';\nexport var listHorizontal = 'use-styles_listHorizontal__nfghri3';\nexport var root = 'use-styles_root__nfghri0';","import { forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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.\n// La ref apunta al <input> real (foco programático / integración con forms).\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { checked = false, onChange, label, disabled, testId, ...rest },\n ref,\n) {\n const { root, input, track, knob, label: labelClass } = useStyles({ checked });\n const { testId: dataTestId } = useTestId(\"toggle\", testId);\n return (\n <label className={root} data-testid={dataTestId} data-state={states({ checked, disabled })}>\n <input\n ref={ref}\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 {...rest}\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 { 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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/switch/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6VUQW7bMBC8-xU8xihoWLLTFOyxl976BGElrSRCa1Llko7dIn8vREm04yRN0B65O9yZHQ64CYyS_ZmQC2etL4rMfe7x8LAVv1dC1JoHgrMS2pA2KBvC09eVEEC6NVJ7PLASFRqPbiy3MChxBHcnJQ9QoeS8KHDXuuAyWI-IxhovGzhoOi_IWPJ48gkakZUl6xKmleydNe2CyasJFByPqMHqScPTavPmRqoDvlO1ZigJ63VccBlgrJdAZB-xfpU8lJ4wkeP6lsk7qPpElcXZg2XttTVKOCTw-ojj6Edd-06JfT5EJzvUbeeVyOdzCVXfOhtMrYR3YHgAh8bHlnU1OjkPmLTNNRcu6rJhfYWO-pRgS7q-Kn_I3WU41DrwAp5OsglEidFEeJQ7b3xZY75WBydL4IuH-XruIDBKbfrU2U9JITxJ7pw2vRLb6DcH10CFXLD7YehcFNlPeABvtqqxVWB51KxLQvFJvPc0Nvgxz0rkw2nyJoWxCpyUhKhkBkvbNIw-3nn1-b91WPVYJ6o8Ul0_6N_sfj6wN7ZMg3Y3cYKSLQUf4-TtoES-uZ_SQ9h4JXbTYQ5Ktn-etOX8UWH_lQMg-rcAvLTj1t59dGXaGIK3I7WbVty9tWHZygHai4YvL5gISqTEcR854g_F-hcuY8bfSvIBiGI57b-N-8ewLG6_uDB2v8dmujZ-eE9_ABrXgO2KBQAA';\nexport var input = 'surfaces_srOnly__1qa7atn0';\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 {\n type ChangeEvent,\n type TextareaHTMLAttributes,\n forwardRef,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport { BaseField } from \"../base-field\";\nimport type { TextFieldProps } from \"./types\";\n\n// Presentacional: delega el shell (label, help, startIcon, a11y) a BaseField.\n// Controlado vía onChange(value); soporta startIcon y multiline.\n// La ref pública es la unión HTMLInputElement | HTMLTextAreaElement y se reenvía al\n// control real que corresponda. BaseField (compartido con PasswordField/MoneyField) solo\n// tipa su control como <input>, así que acá mantenemos una ref local por elemento y\n// exponemos la que esté montada vía useImperativeHandle, en vez de forzar la unión a través\n// de BaseField (rompería la ref de esos otros consumidores).\nexport const TextField = forwardRef<HTMLInputElement | HTMLTextAreaElement, TextFieldProps>(\n function TextField(\n {\n label,\n help,\n error,\n startIcon,\n multiline,\n rows,\n type = \"text\",\n onChange,\n className,\n id,\n testId,\n ...rest\n },\n ref,\n ) {\n const inputRef = useRef<HTMLInputElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n useImperativeHandle(\n ref,\n () =>\n (multiline ? textareaRef.current : inputRef.current) as\n | HTMLInputElement\n | HTMLTextAreaElement,\n [multiline],\n );\n\n // El `data-testid` crudo del consumidor (via rest) gana sobre el id de slot compuesto\n // de `control`, consistente con Button. Solo `data-testid`: el resto de props cableadas\n // por BaseField (`id`, `className`, `aria-*`) siguen ganando sobre rest.\n const rawTestId = (rest as Record<string, unknown>)[\"data-testid\"] as string | undefined;\n return (\n <BaseField\n label={label}\n help={help}\n error={error}\n startIcon={startIcon}\n id={id}\n className={className}\n testId={testId}\n >\n {(control) =>\n multiline ? (\n <textarea\n {...(rest as TextareaHTMLAttributes<HTMLTextAreaElement>)}\n {...control}\n data-testid={rawTestId ?? control[\"data-testid\"]}\n ref={textareaRef}\n rows={rows ?? 4}\n onChange={(e: ChangeEvent<HTMLTextAreaElement>) => onChange?.(e.target.value)}\n />\n ) : (\n <input\n {...rest}\n {...control}\n data-testid={rawTestId ?? control[\"data-testid\"]}\n ref={inputRef}\n type={type}\n onChange={(e: ChangeEvent<HTMLInputElement>) => onChange?.(e.target.value)}\n />\n )\n }\n </BaseField>\n );\n },\n);\n","// src/components/base-field/index.tsx\nimport { forwardRef, useId } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { BaseFieldProps, FieldControlProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Shell presentacional del campo: label + wrapper + startIcon + trailing + help,\n// con el cableado de accesibilidad. Entrega las props del control por render-prop.\n// La ref se reenvía al <input> real a través de `control.ref` (foco programático / forms).\nexport const BaseField = forwardRef<HTMLInputElement, BaseFieldProps>(function BaseField(\n { label, help, error, startIcon: StartIcon, trailing, id, className, testId, children },\n ref,\n) {\n const autoId = useId();\n const controlId = id ?? autoId;\n\n // `error` es boolean (solo estilo) o un nodo (mensaje). Distinguimos ambos.\n // Un nodo \"vacío\" (false/null/\"\") no marca inválido: evita mensajes vacíos anunciados\n // cuando se bindea `error={errors.x}` y `errors.x` es \"\".\n const errorMessage =\n error != null && error !== false && error !== true && error !== \"\" ? error : null;\n const hasError = error === true || errorMessage != null;\n // Una sola línea de mensaje debajo del campo: el error tiene prioridad sobre el help.\n const message = errorMessage ?? help;\n const messageId = message != null ? `${controlId}-msg` : undefined;\n\n const classes = useStyles({\n error: hasError,\n hasStartIcon: StartIcon != null,\n hasTrailing: trailing != null,\n className,\n });\n\n const { testId: rootTestId, slot } = useTestId(\"field\", testId);\n\n const control: FieldControlProps = {\n id: controlId,\n className: classes.input,\n ref,\n \"aria-describedby\": messageId,\n \"aria-invalid\": hasError ? true : undefined,\n \"data-testid\": slot(\"input\"),\n };\n\n return (\n <div className={classes.root} data-testid={rootTestId} data-state={states({ error: hasError })}>\n {label != null && (\n <label htmlFor={controlId} className={classes.labelText} data-testid={slot(\"label\")}>\n {label}\n </label>\n )}\n <div className={classes.field}>\n {StartIcon != null && (\n <span className={classes.startIconSlot}>\n <StartIcon size={18} />\n </span>\n )}\n {children(control)}\n {trailing != null && <span className={classes.trailingSlot}>{trailing}</span>}\n </div>\n {message != null && (\n // `aria-live` solo cuando el mensaje es un error: anuncia la validación al aparecer.\n <span\n id={messageId}\n className={classes.helpText}\n aria-live={errorMessage ? \"polite\" : undefined}\n data-testid={slot(\"message\")}\n >\n {message}\n </span>\n )}\n </div>\n );\n});\n","// src/components/base-field/use-styles.ts\nimport { useMemo } from \"react\";\nimport { useTheme } from \"../../theme/context/theme-context\";\nimport * as styles from \"./use-styles.css\";\n\ninterface UseStylesArgs {\n error?: boolean | undefined;\n hasStartIcon?: boolean | undefined;\n hasTrailing?: boolean | undefined;\n className?: string | undefined;\n}\n\nexport function useStyles({ error, hasStartIcon, hasTrailing, className }: UseStylesArgs): {\n root: string;\n labelText: string;\n field: string;\n input: string;\n helpText: string;\n startIconSlot: string;\n trailingSlot: 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 hasTrailing && styles.inputTrailingPad,\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 startIconSlot: styles.startIconSlot,\n trailingSlot: styles.trailingSlot,\n };\n }, [themeClass, error, hasStartIcon, hasTrailing, className]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/base-field/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61VTW_bMAy951f4MmA5qIiTrlvd8w67DWjvAS3RjlpZ9Cg5Hxv23wfJsWInbbAVQw6BoqfHRz6SuekcCucPBt2aifx6ncuVrNUi-zXLMqVda-BQZJXB_cMsi99CaUbpNdkik2S6xoabGtoi2wJ_FMK1IFG4fL3GVc0d5_fzh9nv2c0olIESzRPuU7w8xqvIelFBo81hIIs_NWRpYFvOHwak0z9xwHnce4EHLJl28WLA30a8Qe-RozRt6_SIQb5oW4udVuh8EryNbyKlZ7CuIm6KrGtbZAkOw6UkQ5xE1sJ1pTcp6BLfTvkrM_GQ9zLmPSFTYGvkmFCi-3FBV2k0amBZRZaWnO5tYTTg9TYKvfAQjK6t0B4bV2QSrUc-J9e27ZI1t1etGcvMr1hTkjpMfHHzV8vomWyd8pYRVIJ8qZk6qwZkGQrOFchTxe97KLHCRNifxAY0J400zxwZraYQhRV05lTwzYhNMCjduYG0P4kSXAqeNxHeglKj7jrOwSqhyvnbN-H9Tiu_KbJ8sfgQjtR5oy0WmSWLvZx9KGEMcZRW0v66eUVFsnPRwuOTSclBhg6YJLN8nqdgG1C0K7JF_Czb_fSVo-pUMXPRolHIpNs_vanj2PQTHfZ1xkcP7L9Dav67vvn72guDlT8z4C6V-XIqI-MTgzba1iPSzxNS1vXmX1g3aNrxdvvyX0ZIQhvGezJF-e3oQQgeuoUbMO_aUYPuiWn3711RLhj1TZJ9NKc_FjhbVVA6Mp3HfklfeHc-ImmbaRtmQ1xdan9VgSBGB7zALVrvhnGb5uKPLTJOpbySymsds0y5wHtyee6c19VBSLIerR_t7j8rnFSpxQcAAA';\nexport var field = 'use-styles_field__1c3cgd3';\nexport var helpText = 'use-styles_helpText__1c3cgd8';\nexport var helpTextError = 'use-styles_helpTextError__1c3cgd9';\nexport var input = 'use-styles_input__1c3cgd4';\nexport var inputError = 'use-styles_inputError__1c3cgd5';\nexport var inputStartPad = 'use-styles_inputStartPad__1c3cgd6';\nexport var inputTrailingPad = 'use-styles_inputTrailingPad__1c3cgd7';\nexport var labelText = 'use-styles_labelText__1c3cgd1';\nexport var labelTextError = 'use-styles_labelTextError__1c3cgd2';\nexport var root = 'use-styles_root__1c3cgd0';\nexport var startIconSlot = 'use-styles_startIconSlot__1c3cgda';\nexport var trailingSlot = 'use-styles_trailingSlot__1c3cgdb';","// src/components/password-field/index.tsx\nimport { type ChangeEvent, type MouseEvent, forwardRef, useState } from \"react\";\nimport { BaseField } from \"../base-field\";\nimport { EyeIcon } from \"../icons/eye\";\nimport { EyeOffIcon } from \"../icons/eye-off\";\nimport type { PasswordFieldProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Envuelve BaseField, gestiona el reveal de contraseña y pasa el toggle como trailing slot.\n// La ref se reenvía a BaseField, que la cablea al <input> real.\nexport const PasswordField = forwardRef<HTMLInputElement, PasswordFieldProps>(\n function PasswordField({ label, help, error, startIcon, onChange, id, className, ...rest }, ref) {\n const [reveal, setReveal] = useState(false);\n const classes = useStyles();\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.value);\n };\n\n const handleToggleMouseDown = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n };\n\n const toggleButton = (\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\n return (\n <BaseField\n ref={ref}\n label={label}\n help={help}\n error={error}\n startIcon={startIcon}\n trailing={toggleButton}\n id={id}\n className={className}\n >\n {(control) => (\n <input\n {...rest}\n {...control}\n type={reveal ? \"text\" : \"password\"}\n onChange={handleChange}\n />\n )}\n </BaseField>\n );\n },\n);\n","import type { IconProps } from \"../types\";\n\nexport function EyeIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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","// src/components/password-field/use-styles.ts\nimport { useMemo } from \"react\";\nimport * as styles from \"./use-styles.css\";\n\n// La lógica de estilos: devuelve un objeto de clases por slot, memoizado.\n// PasswordField delega el layout al BaseField; solo gestiona el revealButton.\nexport function useStyles(): { revealButton: string } {\n return useMemo(() => ({ revealButton: styles.revealButton }), []);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/password-field/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcmV2ZWFsQnV0dG9uX19yc3U5ZDUwIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXMyX19lM2dydXIxYSk7CiAgYm9yZGVyOiBub25lOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWJhc2VfX2UzZ3J1cjFtKTsKfQoudXNlLXN0eWxlc19yZXZlYWxCdXR0b25fX3JzdTlkNTA6aG92ZXIgewogIGNvbG9yOiB2YXIoLS1mZy1zdHJvbmdfX2UzZ3J1cjJjKTsKfQoudXNlLXN0eWxlc19yZXZlYWxCdXR0b25fX3JzdTlkNTA6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIydSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQ';\nexport var revealButton = 'use-styles_revealButton__rsu9d50';","// src/components/money-field/index.tsx\nimport { type ChangeEvent, type FocusEvent, forwardRef, useMemo, useState } from \"react\";\nimport { BaseField } from \"../base-field\";\nimport type { MoneyFieldProps } from \"./types\";\n\n// Quita todo salvo dígitos, signo y punto decimal; \"\", \"-\" y \".\" → null.\nfunction parseAmount(raw: string): number | null {\n const cleaned = raw.replace(/[^0-9.-]/g, \"\");\n if (cleaned === \"\" || cleaned === \"-\" || cleaned === \".\") return null;\n const n = Number.parseFloat(cleaned);\n return Number.isNaN(n) ? null : n;\n}\n\n// MoneyField: input de dinero controlado.\n// - Sin foco: muestra Intl.NumberFormat (currency style).\n// - Con foco: muestra el draft crudo para edición.\n// - onBlur: parsea el draft y llama onChange(number | null).\nexport const MoneyField = forwardRef<HTMLInputElement, MoneyFieldProps>(function MoneyField(\n {\n value,\n onChange,\n currency = \"USD\",\n locale = \"en-US\",\n label,\n help,\n error,\n startIcon,\n id,\n className,\n onFocus,\n onBlur,\n ...rest\n },\n ref,\n) {\n const [focused, setFocused] = useState(false);\n const [draft, setDraft] = useState(\"\");\n const formatter = useMemo(\n () => new Intl.NumberFormat(locale, { style: \"currency\", currency }),\n [locale, currency],\n );\n\n const displayValue = focused ? draft : value != null ? formatter.format(value) : \"\";\n\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n setDraft(value != null ? String(value) : \"\");\n setFocused(true);\n onFocus?.(e);\n };\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => setDraft(e.target.value);\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n onChange?.(parseAmount(draft));\n onBlur?.(e);\n };\n\n return (\n <BaseField\n ref={ref}\n label={label}\n help={help}\n error={error}\n startIcon={startIcon}\n id={id}\n className={className}\n >\n {(control) => (\n <input\n {...rest}\n {...control}\n inputMode=\"decimal\"\n value={displayValue}\n onFocus={handleFocus}\n onChange={handleChange}\n onBlur={handleBlur}\n />\n )}\n </BaseField>\n );\n});\n","import { forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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.\n// `type=\"button\"` por defecto: nunca envía un <form> por accidente (se puede sobreescribir).\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { icon: Icon, active, tone, title, type = \"button\", testId, ...rest },\n ref,\n) {\n // `title` es el nombre accesible por defecto (el icono es decorativo). En desarrollo\n // avisamos si no hay nombre: TS exige string pero no impide \"\". El consumidor puede\n // proveerlo por `aria-label`/`aria-labelledby` vía `...rest` (que sobreescribe a title).\n if (typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\") {\n const restProps = rest as Record<string, unknown>;\n const hasName =\n title.trim() !== \"\" ||\n restProps[\"aria-label\"] != null ||\n restProps[\"aria-labelledby\"] != null;\n if (!hasName) {\n console.warn(\"IconButton: falta un nombre accesible (`title` o `aria-label`).\");\n }\n }\n const { root } = useStyles({ active, tone });\n const { testId: dataTestId } = useTestId(\"button\", testId);\n return (\n <button\n ref={ref}\n type={type}\n className={root}\n aria-label={title}\n title={title}\n data-testid={dataTestId}\n data-state={states({ active, disabled: rest.disabled })}\n {...rest}\n >\n <Icon size={18} />\n </button>\n );\n});\n","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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/icon-button/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMThucDBxMDAgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtczJfX2UzZ3J1cjFhKTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBjb2xvcjogdmFyKC0tZmctbXV0ZWRfX2UzZ3J1cjJkKTsKICBib3JkZXItd2lkdGg6IHZhcigtLWJvcmRlci1oYWlyX19lM2dydXIxbyk7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLWR1ci1mYXN0X19lM2dydXIyMSkgdmFyKC0tZWFzZS1pbmtfX2UzZ3J1cjI0KTsKfQoudXNlLXN0eWxlc19yb290X18xOG5wMHEwMDpob3Zlcjpub3QoOmRpc2FibGVkKSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3Vua2VuX19lM2dydXIyYSk7Cn0KLnVzZS1zdHlsZXNfcm9vdF9fMThucDBxMDA6ZGlzYWJsZWQgewogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKICBvcGFjaXR5OiAwLjU7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoudXNlLXN0eWxlc19yb290X18xOG5wMHEwMDpmb2N1cy12aXNpYmxlIHsKICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZm9jdXNfX2UzZ3J1cjJ1KTsKICBvdXRsaW5lLW9mZnNldDogMnB4Owp9Ci51c2Utc3R5bGVzX2FjdGl2ZV9fMThucDBxMDEgewogIGJhY2tncm91bmQ6IHZhcigtLWJnLXN1bmtlbl9fZTNncnVyMmEpOwogIGNvbG9yOiB2YXIoLS1hY2NlbnQtdGV4dF9fZTNncnVyMm0pOwp9Ci51c2Utc3R5bGVzX2FjY2VudF9fMThucDBxMDIgewogIGNvbG9yOiB2YXIoLS1hY2NlbnQtdGV4dF9fZTNncnVyMm0pOwp9';\nexport var accent = 'use-styles_accent__18np0q02';\nexport var active = 'use-styles_active__18np0q01';\nexport var root = 'use-styles_root__18np0q00';","import { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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).\nconst CardRoot = forwardRef<HTMLDivElement, CardProps>(function Card(\n { children, testId, ...rest },\n ref,\n) {\n const { root } = useStyles();\n const { testId: dataTestId } = useTestId(\"layout\", testId);\n return (\n <div ref={ref} className={root} data-testid={dataTestId} {...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 { 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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/card/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMWZ1dmQwMjAgewogIGJhY2tncm91bmQ6IHZhcigtLWJnLXN1cmZhY2VfX2UzZ3J1cjI5KTsKICBib3JkZXI6IHZhcigtLWJvcmRlci1oYWlyX19lM2dydXIxbykgc29saWQgdmFyKC0tYm9yZGVyLXN1YnRsZV9fZTNncnVyMmcpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZ19fZTNncnVyMWwpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnVzZS1zdHlsZXNfaGVhZGVyX18xZnV2ZDAyMSB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtczRfX2UzZ3J1cjFjKTsKICBib3JkZXItYm90dG9tOiB2YXIoLS1ib3JkZXItaGFpcl9fZTNncnVyMW8pIHNvbGlkIHZhcigtLWJvcmRlci1zdWJ0bGVfX2UzZ3J1cjJnKTsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Ci51c2Utc3R5bGVzX2JvZHlfXzFmdXZkMDIyIHsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1zNF9fZTNncnVyMWMpOwp9Ci51c2Utc3R5bGVzX2Zvb3Rlcl9fMWZ1dmQwMjMgewogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXM0X19lM2dydXIxYyk7CiAgYm9yZGVyLXRvcDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKSBzb2xpZCB2YXIoLS1ib3JkZXItc3VidGxlX19lM2dydXIyZyk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQ';\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 { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport { 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\n// Severidades que interrumpen (warn, danger) se anuncian de forma asertiva: role=\"alert\"\n// ya implica aria-live=\"assertive\", no hace falta declararlo aparte. Las informativas\n// (info, ok) usan role=\"status\", que implica aria-live=\"polite\".\nconst roleBySeverity: Record<AlertSeverity, \"alert\" | \"status\"> = {\n info: \"status\",\n ok: \"status\",\n warn: \"alert\",\n danger: \"alert\",\n};\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n { severity = \"info\", title, icon, className, testId, children, ...rest },\n ref,\n) {\n const styles = useStyles({ severity, className });\n const { testId: dataTestId, slot } = useTestId(\"feedback\", testId);\n const IconComponent = icon ?? defaultIcons[severity];\n return (\n <div\n ref={ref}\n role={roleBySeverity[severity]}\n className={styles.root}\n data-testid={dataTestId}\n {...rest}\n >\n <span className={styles.iconSlot} data-testid={slot(\"icon\")}>\n <IconComponent />\n </span>\n <div className={styles.content} data-testid={slot(\"content\")}>\n {title != null && <Typography variant=\"h4\">{title}</Typography>}\n {children != null && (\n <Typography variant=\"body\" color=\"muted\">\n {children}\n </Typography>\n )}\n </div>\n </div>\n );\n});\n","import type { IconProps } from \"../types\";\n\nexport function CircleCheckIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/alert/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA42TTW7CMBCF9zmFl2Vh1BCKRDhGDxA5tuNYBDudsSG04u5V_kz4CWIVWf7mvTfjzNKjpOjOlcQMrHVZpo9Ybvwn-YsIERrrip1TUlSy2UWEKFan5Mjgg1KsGZcUkyyTiQIPcb5oiZoJoY16Qd3erMMN7-pzxvcKrDdilMgVRQ8F43JEV9setSAkBKw70ZJpCJJ2QdBWWtwi6HNXXcXURIxWsnD0pIUrU5LUzeQGmNAeR7f-RHOGQSg-DEINRf3bzWAozW2ziy7RcjJrlEcJ2p0zbQo7Dj3uhj5Nwm1lQ4fomPNI-4ohvOs838JmAtj9aL96y77lB1WYNb-DZqxPDMxonrxl3lcMyjhr_4DNBBDMKAljhPXrCD188-Qr8xhhwJxsXMB-HiJobs13dd23r-f71n4plqDNPiWfEy9tyraFe1lujZMmqG5eqAoNkjttTdpq-oN5vt9x-L23j70WiqIDa1TotF3iyz8Uyo8yVQQAAA';\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 {\n type KeyboardEvent,\n cloneElement,\n forwardRef,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { TooltipProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Retraso de cierre: da tiempo a mover el cursor del trigger al bubble sin que se cierre.\nconst HIDE_DELAY = 120;\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 (WCAG 1.4.13): el bubble es hoverable (cierre diferido) y se descarta\n// con Escape sin mover el foco. Enlaza el bubble (role=\"tooltip\") al trigger via\n// aria-describedby mientras está abierto, clonando el children (el elemento interactivo).\n// La ref apunta al wrapper <span> (root propio que envuelve trigger + bubble).\nexport const Tooltip = forwardRef<HTMLSpanElement, TooltipProps>(function Tooltip(\n { label, children, placement, testId },\n ref,\n) {\n const [open, setOpen] = useState(false);\n const tooltipId = useId();\n const { wrapper, bubble } = useStyles({ placement });\n const { testId: dataTestId, slot } = useTestId(\"feedback\", testId);\n const hideTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearHide = () => {\n if (hideTimer.current) {\n clearTimeout(hideTimer.current);\n hideTimer.current = null;\n }\n };\n const show = () => {\n clearHide();\n setOpen(true);\n };\n const scheduleHide = () => {\n clearHide();\n hideTimer.current = setTimeout(() => setOpen(false), HIDE_DELAY);\n };\n const hideNow = () => {\n clearHide();\n setOpen(false);\n };\n\n // Limpia el timer pendiente al desmontar.\n useEffect(() => {\n return () => {\n if (hideTimer.current) clearTimeout(hideTimer.current);\n };\n }, []);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLSpanElement>) => {\n if (event.key === \"Escape\" && open) {\n event.stopPropagation();\n hideNow();\n }\n };\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\n ref={ref}\n className={wrapper}\n data-testid={dataTestId}\n onMouseEnter={show}\n onMouseLeave={scheduleHide}\n onFocus={show}\n onBlur={hideNow}\n onKeyDown={handleKeyDown}\n >\n {trigger}\n {open && (\n <span\n id={tooltipId}\n role=\"tooltip\"\n className={bubble}\n data-testid={slot(\"bubble\")}\n onMouseEnter={show}\n onMouseLeave={scheduleHide}\n >\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/tooltip/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfd3JhcHBlcl9faDlrdmgwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7Cn0KLnVzZS1zdHlsZXNfYnViYmxlX19oOWt2aDEgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9fX2UzZ3J1cjIpOwogIGZvbnQtc2l6ZTogMTFweDsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZV9fZTNncnVyMXQpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXMxX19lM2dydXIxOSkgdmFyKC0tc3BhY2UtczJfX2UzZ3J1cjFhKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgei1pbmRleDogMTsKfQoudXNlLXN0eWxlc19wbGFjZW1lbnRfdG9wX19oOWt2aDIgewogIGJvdHRvbTogMTAwJTsKICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS1zMV9fZTNncnVyMTkpOwp9Ci51c2Utc3R5bGVzX3BsYWNlbWVudF9ib3R0b21fX2g5a3ZoMyB7CiAgdG9wOiAxMDAlOwogIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLXMxX19lM2dydXIxOSk7Cn0';\nexport var bubble = 'use-styles_bubble__h9kvh1 surfaces_inkySurface__1qa7atn2';\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, forwardRef, 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.\n// La ref apunta al <div> root del componente.\nexport const Select = forwardRef<HTMLDivElement, SelectProps>(function Select(\n {\n options,\n value,\n onChange,\n placeholder,\n label,\n disabled,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...rest\n },\n ref,\n) {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(0);\n const rootRef = useRef<HTMLDivElement | null>(null);\n // Mezcla la ref interna (outside-click) con la ref externa del consumidor.\n const setRootRef = (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n };\n const baseId = useId();\n const labelId = `${baseId}-label`;\n const optionId = (index: number) => `${baseId}-option-${index}`;\n // El nombre accesible vive en el <button> (el control), no en el <div> raíz genérico.\n // Combina el label interno con un aria-labelledby que pase el consumidor.\n const triggerLabelledBy =\n [label ? labelId : null, ariaLabelledBy].filter(Boolean).join(\" \") || undefined;\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={setRootRef} className={root} {...rest}>\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-label={ariaLabel}\n aria-labelledby={triggerLabelledBy}\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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/select/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA8VWy27bMBC8-yt4KRADZWApSZPIp9566yEfYFDkSmJNcQWS8iNF_70gJdGSX3GLAkUOgcmd9ezscNf3rQVq3V6BXRlEt1ol24S_N_mC_JwR0qCVTqLOiAHFnNzAckaIkLZRbJ-RQsHOH_j_VEgDvAvmqNpa-5uSNRnZMHNHqW0YB2qT1QoeStOa5HW-nP2a3Y8YKJaDihSSQKFA7WjBaqn2Q6ZwVKPGIVU6Xw6RVr7DEOdg5yhnjScVLuJXPwaAkhpoBbKs3FmIv_8WriPwqQOCc2BCRVKX57Eh5K2LiPDnAA-BzjBtCzR1RtqmAcOZDeJyVGhipSW1be5UZJ7CiWjOyLIEE2VLg2wnPfrRWieLPeWoHWiXka4fObgtQOgVU7LUVDqobUY4aAfmfAvTWA8L9WylcFVGksXik__YMCFGsvSghwjK55dvPD7Hne9WSJGjEWBojrvlFS94QWOSK17IUewnRrDzs5I7g4empbxjxfi6NNhqMUTmvjmmYPzQnde-gEC6l6UP7s4qJk1kiuPo0M2MWFRSjI4n3PozAQVrVaw4rcZ5DBOytQOi-0RzZg_mr7uiW2N95gbl0OmgUXBBRhQULpx5m_YzYEypzy9aQwtmD1ySobnALFCp1_Hmcf65a23FBG7_Bv-h87MCeWuD_7F1_vlmRKOGS3oy7m0-USf9cfBgIJqRRfhLm90UZbE40FY3kBPSslyBCPxueOYXPafXoGMkm3RTo--gwi2IY0KNYhwqVGJE6uFWLtNUvIKNQR3TPE5HjtRhsk62g62M1OuMLG6ccVPnxWH5L2zTs__ewKGCp1DBaCYbdMzBXfKyEFCepKhBtxH75WhVstyial1wncPmMBj9mzqaiov4Kl9C0Wa8jC7EKGndMC4Gd9fMlFJ_AOyCaOB0ZSdfmuDH6S7P6XcqtYCdr_xYOQzrMWr33Gl39vvGa-b6xvife-Fkjl6vN6twAyZUfevrPpfwDRRwByImfjl9yf2cGouQ1hfyfeX-x13M9vpnBH8Dmxgg0EYKAAA';\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__1qa7atn1';\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 { type ChangeEvent, forwardRef } 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á.\n// La ref apunta al <input type=\"range\"> real (foco programático / integración con forms).\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(function Slider(\n { value = 0, onChange, min = 0, max = 100, step = 1, disabled, label, ...rest },\n ref,\n) {\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 ref={ref}\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 {...rest}\n />\n <span className={thumb} style={{ left: `${clamped}%` }} />\n </span>\n </span>\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).\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/slider/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5VUy27jMAy85yt0WaA5qMizaNWPCWSLdoTIoiFSeeyi--0LK5aaJt0ERU60KM5wZqLnSCCJTw5oExB5s8HdYf3mZ-LPRIgeybJFr0QAp9nu4X0ixBZsu2UlFqv-ONQHa3irxHw2-zWUxlLv9EmJxkE61862XlqGjpSowTOE98nH5PkCmoOudxl7nrAzyvcgla53bcDojRJ7HZ6krFpJ0e_AbzawbEMMCz1NnRgMBBm0sZFy87mSTXQut8_99JpV0L6FzGpxpYiuCF3kL4qMXG_JNa0kDujbQq7-ObkB3Q7qSdiDZ1LCo4dr0tb3sdi4vEPaegLOmNTrGiTNCuDr9BvV85657nRorX8wA3tdWz4pMRuqOgbCoPIq99krY0lXDkxaI1_1yFI7hwcwNznaxq7K11d3ls-LvZwdK4uN9Xkx6aBhJeTraOvPzPpxCkZOY5xHsOigzO0vu9PGShA6ay4-1-gGjR4BHiVttcFD8S5VkrrSub6TOCE4aJ91_Zw2DjMxyEYTl1nz6XgCmkBavysnq5s_3VUCGqwjyb0lWzkQf8UDty83m6Xfsj9mNYZRBTneIDtdgcvj1mlcecsqh_XuIhkVMmN3lfx5ceotidegZ9nozrpTcWT41KHHwuOzk-xvUGK-OKfNAQ_CD6Otb_P99FBa3w5hgVDwYprCcGSZnGkwdErEvodQa0qOXQejiwymsDA3ahyCHq5nPV7-o8eXF-LjH6ioZgtPBgAA';\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 { forwardRef, useState } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\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 const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(\n { items, multiple = false, defaultOpen = [], className, testId },\n ref,\n) {\n const [open, setOpen] = useState<string[]>(defaultOpen);\n const { root, item, header, chevronFor, panel } = useStyles({ className });\n const { testId: dataTestId, slot } = useTestId(\"layout\", testId);\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 ref={ref} className={root} data-testid={dataTestId}>\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 const itemSlot = slot(`item-${it.id}`);\n return (\n <div\n key={it.id}\n className={item}\n data-testid={itemSlot}\n data-state={states({ expanded: isOpen })}\n >\n <button\n type=\"button\"\n id={headerId}\n className={header}\n aria-expanded={isOpen}\n aria-controls={panelId}\n data-testid={`${itemSlot}__trigger`}\n onClick={() => toggle(it.id)}\n >\n {it.title}\n <ChevronDownIcon className={chevronFor(isOpen)} />\n </button>\n {isOpen && (\n <div\n id={panelId}\n className={panel}\n role=\"region\"\n aria-labelledby={headerId}\n data-testid={`${itemSlot}__panel`}\n >\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/accordion/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61Ty27bMBC8-yt4KRAfGEi2C7T0R-QTDEpcSoxprsBd-tEi_16IslnbSd0ccpPI3Znh7OxzIpDEJw-0iYi82dTtazT9z0r8ngnRYDQQldjr-CTl9Cd77eJmA8supljjXBB6Z25LKDXs4VK06ObrAiajNi7RBXP6k74riD4X4x6i9XhQonfGQFjP3mbPV2Idw66Ira_EygaZcfclmh9RKq-JZds7bz5iDxjgHqAHbSAWiEXuOzjDvRJ1VX0b320cDV6flLAejuPBayJ29iRbDAyBlaBBtyAb4AOMtgihveuCHNWREi0Ehjged3q4mDC10LI40GSPB22MC92DqtubVblpp4HqdttFTMEowVEHGnSEwOur4Ew2CNGmSBiVGNBd9FkMLK3eOX-6KMhHDEcuRJmnRY8lhLaTxBFDCcxiEjO2yWyFEh7sWcVRkvuV31jmk13Nch07DOrqGWcKk6K0moqKRX0xAjSBdGFbblbvUnI_ZNWPUZ4icuXXOXqdpBS2EAqg_j-gxTaR3DtyjYcMjIm9C6DEYjjeRDuXFuw0bdZULNFaAs4995RtD_uIoXAuM8uYSEl9dGGrRPXRYHaJwRQ6M793On9bjLuvMPos8mWAv0JXWWihUSIia4an-kdl4P1GDzqAL83fc3NZiurf4X-8Fp9x5bPhf_sDQWlczqEFAAA';\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, forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\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 const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(function Breadcrumbs(\n { items, className, testId, ...rest },\n ref,\n) {\n const { root, crumb, current, separator } = useStyles({ className });\n const { testId: dataTestId, slot } = useTestId(\"nav\", testId);\n return (\n <nav ref={ref} aria-label=\"Breadcrumb\" className={root} data-testid={dataTestId} {...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\" data-testid={slot(`crumb-${index}`)}>\n {item.label}\n </span>\n ) : item.href ? (\n <a className={crumb} href={item.href} data-testid={slot(`crumb-${index}`)}>\n {item.label}\n </a>\n ) : (\n <span className={crumb} data-testid={slot(`crumb-${index}`)}>\n {item.label}\n </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, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/breadcrumbs/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fN3UwZHU2MCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtczJfX2UzZ3J1cjFhKTsKICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vX19lM2dydXIyKTsKICBmb250LXNpemU6IDEycHg7CiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNraW5nLXdpZGVfX2UzZ3J1cjF0KTsKfQoudXNlLXN0eWxlc19jcnVtYl9fN3UwZHU2MSB7CiAgY29sb3I6IHZhcigtLWZnLW11dGVkX19lM2dydXIyZCk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci51c2Utc3R5bGVzX2NydW1iX183dTBkdTYxOmhvdmVyIHsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICB0ZXh0LWRlY29yYXRpb24tY29sb3I6IHZhcigtLWFjY2VudC10ZXh0X19lM2dydXIybSk7CiAgY29sb3I6IHZhcigtLWFjY2VudC10ZXh0X19lM2dydXIybSk7Cn0KLnVzZS1zdHlsZXNfY3J1bWJfXzd1MGR1NjE6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIydSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoudXNlLXN0eWxlc19jdXJyZW50X183dTBkdTYyIHsKICBjb2xvcjogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7Cn0KLnVzZS1zdHlsZXNfc2VwYXJhdG9yX183dTBkdTYzIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGNvbG9yOiB2YXIoLS1mZy1zdWJ0bGVfX2UzZ3J1cjJlKTsKfQ';\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 { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport { 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 const Pagination = forwardRef<HTMLElement, PaginationProps>(function Pagination(\n { count, page = 1, onChange, siblingCount = 1, testId, ...rest },\n ref,\n) {\n const { root, pageBtnFor, ellipsis, nav } = useStyles();\n const { testId: dataTestId, slot } = useTestId(\"nav\", testId);\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 ref={ref} className={root} aria-label=\"Pagination\" data-testid={dataTestId} {...rest}>\n <button\n type=\"button\"\n className={nav}\n aria-label=\"Previous page\"\n disabled={current <= 1}\n data-testid={slot(\"prev\")}\n onClick={() => go(current - 1)}\n >\n <ChevronLeftIcon size={18} />\n </button>\n {items.map((item, index) =>\n item === \"ellipsis\" ? (\n <span\n // biome-ignore lint/suspicious/noArrayIndexKey: ellipsis position is stable per render\n key={`ellipsis-${index}`}\n className={ellipsis}\n data-testid={slot(`ellipsis-${index}`)}\n >\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 data-testid={slot(`page-${item}`)}\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 data-testid={slot(\"next\")}\n onClick={() => go(current + 1)}\n >\n <ChevronRightIcon size={18} />\n </button>\n </nav>\n );\n});\n","import type { IconProps } from \"../types\";\n\nexport function ChevronLeftIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/pagination/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA9WUwXLbIBCG734KjtGBTGT7kJJT-yIaLFZoawwadnFid_ruHSOLyo09dg899Cj4d7_l5xfPiUASHxxQE0Pgpqn10R5D_yJ-LIQwSIPTByU6Bx9vCyG0Q-slMuxIiRY8QzwtWz0osdfxSUoadAuS6qaBlY0p1l-qt8XPxfMMNGgL39gXVp1ZO_TyHQ33SqzWQ6b1gLbn39-PjvM9EWN3kG3wDJ7nW13wLDu9Q3eYJs5Lu-DDNPKyKkrCIyhRL0d-G1yIpcxK4hi8LWVtrtuEaCBORxm157VeYyy-hLk6O6MEBYdmtnwBnKRpww4K1M7bRG0w0VQwfsmNpiKvd6Nct1sbQ_JGCY7a06AjeM5nTJFOzCHg5FlWIGPwSmjnzt1NirLTxGWSujrvgCaQ6LdlZ30_AqoPe4jKB35SBklvHJgq52I-69kIKyn5LfgC0A8Apq656aebvDQVqrkVPrDUzoV3MPcxXWgTyT0SbhxkVkjs0IMSy-FjvOESvDZRYabMPItl6DoCzjXXmF9bxj0U7PKGU7cyepkrK08ti-S1upXA6-3uT_c3l_sIA5zDgZAKYfXfviDXcjdaf8qdhzt_a6LTiwAOWp70l1Z5vS8urbNLgzYGvf3jvX4pL8TrJ7svevybgP8C4Uyz_YgGAAA';\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 { Fragment, forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\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 const Stepper = forwardRef<HTMLDivElement, StepperProps>(function Stepper(\n { steps, active = 0, className, testId, ...rest },\n ref,\n) {\n const { root, step, connector, markerFor, labelFor } = useStyles({ className });\n const { testId: dataTestId, slot } = useTestId(\"nav\", testId);\n\n return (\n <div ref={ref} className={root} data-testid={dataTestId} {...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\n className={step}\n aria-current={isActive ? \"step\" : undefined}\n data-testid={slot(`step-${index}`)}\n data-state={states({ done: state === \"done\", active: isActive })}\n >\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/stepper/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5WTwVLkIBCG7_MUHM0BaxLd1cXTVvkeKUI6BIcABY3OaO27b0kGJuNE3T1Cmu__--_0dQxAAx40hNZbi21798vhLWzJ24aQXgWn-YGRQcP-YUMI10oaqhCmwIgAg-AfNn821wtKQHCZUv8HhRDJHSPP3F9RGhwXQEPTtnAjffQ1rz7qTNzvwGelJim9qB5HRpp7l3RGUHLE07mzvgdPPe9VDFlqPtEhal3UTLUoP0Ln6oyIGkq1W1Ynd4wEq1W_uBZWW_8B0sPAo8bMacbE-de0nmJANRyosAbB4PLTYA3SgU9KH7JkupqssUWtKpVBvQIjdTOHdOZ0kHSKCH151c-9crGT3kbTM4Kem-C4B4OJqGFPw-iV2TGyXR_ab4HqGfLobtLo1nLi4r0n2vFQwm6eqguTxzKE_SnL6ZP_5dGaInw7Cy96KU0H9NbIQhOXop2kjsuTr_vqs2mv487Nad6Bzr5-JF_fz2EFcZ7sz1XQt2aENQYE2rJcd4nzPllG6uVi1ce9uogwL0Ps8LQojUwZTdxLZRjZfrnrfwHDdSgUmQQAAA';\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 { type KeyboardEvent, forwardRef, useId, useRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { TabsProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Tamaño del icono opcional de cada tab.\nconst ICON_SIZE = 16;\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado: el tab activo lo determina `value`; al clickear/navegar se notifica vía `onChange`.\n// Patrón ARIA tablist con activación automática: las flechas mueven el foco y seleccionan.\n// Si algún item define `content`, se renderizan los `role=\"tabpanel\"` cableados (id/aria-*).\n// La ref apunta al tablist (no al wrapper), preservando el contrato previo.\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n { items, value, onChange, testId, ...rest },\n ref,\n) {\n const { root, tabClass, panel } = useStyles();\n const { testId: dataTestId, slot } = useTestId(\"nav\", testId);\n const baseId = useId();\n const tabRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n const hasPanels = items.some((item) => item.content !== undefined);\n const activeIndex = items.findIndex((item) => item.value === value);\n const tabId = (v: string) => `${baseId}-tab-${v}`;\n const panelId = (v: string) => `${baseId}-panel-${v}`;\n\n // Activación automática: selecciona el tab destino y le mueve el foco.\n const selectTab = (index: number) => {\n const item = items[index];\n if (!item) return;\n onChange?.(item.value);\n tabRefs.current[index]?.focus();\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n const last = items.length - 1;\n switch (event.key) {\n case \"ArrowRight\":\n event.preventDefault();\n selectTab(index === last ? 0 : index + 1);\n break;\n case \"ArrowLeft\":\n event.preventDefault();\n selectTab(index === 0 ? last : index - 1);\n break;\n case \"Home\":\n event.preventDefault();\n selectTab(0);\n break;\n case \"End\":\n event.preventDefault();\n selectTab(last);\n break;\n }\n };\n\n return (\n <>\n <div ref={ref} role=\"tablist\" className={root} data-testid={dataTestId} {...rest}>\n {items.map((item, index) => {\n const active = item.value === value;\n // Roving tabindex: solo el activo es tabbable; sin activo, el primero.\n const tabbable = active || (activeIndex === -1 && index === 0);\n const ItemIcon = item.icon;\n return (\n <button\n key={item.value}\n ref={(el) => {\n tabRefs.current[index] = el;\n }}\n type=\"button\"\n role=\"tab\"\n id={tabId(item.value)}\n aria-selected={active}\n aria-controls={hasPanels ? panelId(item.value) : undefined}\n tabIndex={tabbable ? 0 : -1}\n className={tabClass(active)}\n data-testid={slot(`tab-${index}`)}\n data-state={states({ selected: active })}\n onClick={() => onChange?.(item.value)}\n onKeyDown={(event) => onKeyDown(event, index)}\n >\n {ItemIcon ? <ItemIcon size={ICON_SIZE} /> : null}\n {item.label}\n </button>\n );\n })}\n </div>\n {hasPanels &&\n items.map((item) => (\n <div\n key={item.value}\n role=\"tabpanel\"\n id={panelId(item.value)}\n aria-labelledby={tabId(item.value)}\n hidden={item.value !== value}\n // biome-ignore lint/a11y/noNoninteractiveTabindex: APG recomienda que el tabpanel sea focusable cuando no contiene elementos enfocables\n tabIndex={0}\n className={panel}\n data-testid={slot(`panel-${item.value}`)}\n >\n {item.content}\n </div>\n ))}\n </>\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// 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 panel: 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, panel: styles.panel };\n }, [themeClass]);\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/tabs/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7VUy47bMAy85yuEPTUHLeJsgBba036JQcu0o0YWBYlKkxb998KyrTw2yJ56tDQczpAjv6aIMvLZYqwDEdd1ZXfDd95txJ-VEK2J3sJZic7i6X0lRA9eiSOEb1JGDxpl3NU1vvUhhUqvR0RDocUgG2KmYcHOh3swocBpLSJZ095CYmrY4gLa9uv31d_V65VKhqaIrG5FGmeNQ7loBWt6Jw3jEJXQ6BjDYwvbogmyBQ9ta1z_BCU22SroQx8ouVYJDuCih4COL1NQwpHD8VunECko4cksOjpyLDsYjD0vnfLRQI6K_3VBRvMblai2PnuzyDxOy4O-UsoB9MG4Xv4yLV4mnTIL44llltlRGJRI3mPQECd9ZEd5s4z-fg04zYWiYUNOiYAW2BxzaaaczzPNzNKmIDuIXEiq9XyDEFEadyg3u0xPicf9LUN7snbVkU5RHk00jcUcglK89aebXGVo6ZSuO0nquoicax70-9CjxdJ1m_t8GhQHcn3h14_yek-kFHSMYeZzjI6VeHm5HTE0kWxinLbd8V0aN2W7P7KlYPr9V5jlTcpqCtEep6I5U9dxnnhAj89GNhAvUfj5yaEHh7a4e8u25ickmb76Xzzd-h31_9n7P8ZpgqgEBQAA';\nexport var panel = 'use-styles_panel__1l4m7t43';\nexport var root = 'use-styles_root__1l4m7t40';\nexport var tab = 'use-styles_tab__1l4m7t41';\nexport var tabActive = 'use-styles_tabActive__1l4m7t42';","import {\n type KeyboardEvent,\n type MouseEvent,\n type Ref,\n cloneElement,\n forwardRef,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport type { MenuProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\n// Tamaño del icono opcional de cada item.\nconst ICON_SIZE = 16;\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 const Menu = forwardRef<HTMLDivElement, MenuProps>(function Menu(\n { trigger, items, testId },\n ref,\n) {\n const { wrapper, list, item, dangerItem } = useStyles();\n const { testId: rootTestId, slot } = useTestId(\"menu\", testId);\n const [open, setOpen] = useState(false);\n const [alignEnd, setAlignEnd] = useState(false);\n const rootRef = useRef<HTMLDivElement | null>(null);\n // Mergea el ref reenviado por el consumidor con el rootRef interno (click-fuera / edge-flip).\n const setRootRef = (node: HTMLDivElement | null) => {\n rootRef.current = node;\n assignRef(ref, node);\n };\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 // Edge-flip: medido antes del paint. Si anclar el panel al inicio lo haría desbordar el\n // borde derecho del viewport, lo alineamos al final (su borde derecho bajo el trigger).\n // Se calcula desde la posición del wrapper + el ancho del panel, así no depende de la\n // alineación previa. Sin esto, un Menu pegado al borde derecho abre fuera de pantalla.\n useLayoutEffect(() => {\n if (!open) {\n setAlignEnd(false); // re-mide desde la alineación de inicio en la próxima apertura\n return;\n }\n const listEl = listRef.current;\n const rootEl = rootRef.current;\n if (!listEl || !rootEl) return;\n const rootLeft = rootEl.getBoundingClientRect().left;\n const viewport = document.documentElement.clientWidth;\n setAlignEnd(rootLeft + listEl.offsetWidth > viewport);\n }, [open]);\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\n ref={setRootRef}\n className={wrapper}\n data-testid={rootTestId}\n // Ternario en vez de states(): open/closed es un binario con valor \"closed\" significativo, que no se omite cuando está cerrado (states() omitiría el falsy).\n data-state={open ? \"open\" : \"closed\"}\n >\n {clonedTrigger}\n {open && (\n <div\n ref={listRef}\n role=\"menu\"\n className={list}\n data-align={alignEnd ? \"end\" : \"start\"}\n data-testid={slot(\"list\")}\n onKeyDown={onMenuKeyDown}\n >\n {items.map((entry, index) => {\n const ItemIcon = entry.icon;\n return (\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 data-testid={slot(`item-${index}`)}\n onClick={() => {\n entry.onClick?.();\n setOpen(false);\n }}\n >\n {ItemIcon ? <ItemIcon size={ICON_SIZE} /> : null}\n {entry.label}\n </button>\n );\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/menu/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfd3JhcHBlcl9fMXV5eGFqMCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGlubGluZS1mbGV4Owp9Ci51c2Utc3R5bGVzX2xpc3RfXzF1eXhhajEgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtaW4td2lkdGg6IDE4MHB4OwogIHotaW5kZXg6IDIwOwogIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLXMxX19lM2dydXIxOSk7CiAgbGVmdDogMDsKfQoudXNlLXN0eWxlc19saXN0X18xdXl4YWoxW2RhdGEtYWxpZ249ImVuZCJdIHsKICBsZWZ0OiBhdXRvOwogIHJpZ2h0OiAwOwp9Ci51c2Utc3R5bGVzX2l0ZW1fXzF1eXhhajIgewogIHdpZHRoOiAxMDAlOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtczJfX2UzZ3J1cjFhKTsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXMyX19lM2dydXIxYSkgdmFyKC0tc3BhY2UtczNfX2UzZ3J1cjFiKTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXRleHRfX2UzZ3J1cjEpOwogIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbWFsbC1zaXplX19lM2dydXIxMCk7CiAgY29sb3I6IHZhcigtLWZnLXN0cm9uZ19fZTNncnVyMmMpOwp9Ci51c2Utc3R5bGVzX2l0ZW1fXzF1eXhhajI6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLWJnLXN1bmtlbl9fZTNncnVyMmEpOwp9Ci51c2Utc3R5bGVzX2l0ZW1fXzF1eXhhajI6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIydSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoudXNlLXN0eWxlc19kYW5nZXJfXzF1eXhhajMgewogIGNvbG9yOiB2YXIoLS1kYW5nZXItdGV4dF9fZTNncnVyMnEpOwp9';\nexport var danger = 'use-styles_danger__1uyxaj3';\nexport var item = 'use-styles_item__1uyxaj2';\nexport var list = 'use-styles_list__1uyxaj1 surfaces_panelSurface__1qa7atn1';\nexport var wrapper = 'use-styles_wrapper__1uyxaj0';","import {\n type MouseEvent,\n type KeyboardEvent as ReactKeyboardEvent,\n type Ref,\n forwardRef,\n useEffect,\n useId,\n useRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTestId } from \"../../testing/use-test-id\";\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.\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\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(function Dialog(\n { open, onClose, title, actions, children, testId },\n ref,\n) {\n const { overlay, surface, body, actions: actionsClass } = useStyles();\n const { testId: rootTestId, slot } = useTestId(\"dialog\", testId);\n const surfaceRef = useRef<HTMLDivElement | null>(null);\n // Mergea el ref reenviado por el consumidor con el surfaceRef interno (focus trap).\n const setSurfaceRef = (node: HTMLDivElement | null) => {\n surfaceRef.current = node;\n assignRef(ref, node);\n };\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={slot(\"overlay\")} onClick={onClose}>\n <div\n ref={setSurfaceRef}\n className={surface}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n tabIndex={-1}\n data-testid={rootTestId}\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=\"muted\">\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/dialog/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA4VT246jMAx95yvystLwkBGlrXYm_RgUEgPeDQnKhcKs5t9XpJChg1b7VOyc2ucc26_BAXV-VuAqM4JVfK6qq3c-vBXkT0bIYBx6NJqRBieQt4wQ1A48I8XyXXPxu7UmaMnIyO0LpU5Y7KsKzq0NthzzDSWtGWiDyoNlpFbBvlyGKb5KdIPiMyONgmlJcIWtpuihd4wI0B7skv4VnMdmpsJoD9rvnz4oagkTI9filn1mrztVLtiGC9hUnaKqI-26pQm5cn9_cDdWLpRXWIxox9FuuJPJiTMK5TPEhdqrr2Ltrhi1XGJwW81HRFWbKqoVPFHXcWnuydsY7ZDlz4js-UTvKH3HyOWtGKKJa_xe_NgQHWDb-SU1dsecfCQPw1h-qUQL4rEGwqjQ6-Vl4FKibhO5gQug7ppUyC8V-BGBq_zaxMomeIUaGNFGw__GxhojgqMjOqwVxCGm_5fD9DSBCE0WhXzXjJqmidtbLi49t6yNTMtfxg49ty1q6s3wTeQ5iazzzSRGTuREePAmmos6mRsvZbmuRpk7ndkKeu7Oo79uI3COBA7TONxAHA_oeJgt_86zTDz5uij_EHRJQJHfss-_msWWShcEAAA';\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 {\n type FocusEvent,\n type MouseEvent,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport { XIcon } from \"../icons/x\";\nimport type { SnackbarProps } from \"./types\";\nimport { useStyles } from \"./use-styles\";\n\nconst DEFAULT_DURATION = 5000;\n\n// Presentacional: la lógica de estilos vive en use-styles.ts (useStyles).\n// Controlado: render `null` si !open.\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 const Snackbar = forwardRef<HTMLDivElement, SnackbarProps>(function Snackbar(\n {\n open,\n message,\n action,\n onClose,\n duration = DEFAULT_DURATION,\n testId,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n ...rest\n },\n ref,\n) {\n const { root, message: messageClass, closeBtn } = useStyles();\n const { testId: dataTestId, slot } = useTestId(\"feedback\", testId);\n\n // El timer llama siempre a la última `onClose` recibida sin forzar que el\n // efecto de scheduling dependa de su identidad (evita reiniciar el timer\n // en cada render si el consumidor pasa un callback inline).\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n // A11y (WCAG 2.2.1 Timing Adjustable): mientras el puntero está sobre el\n // snackbar o el foco está dentro de él, el auto-dismiss se pausa por\n // completo; al terminar la interacción se reinicia con la duración\n // completa. Así nunca se cierra algo que el usuario está leyendo o con lo\n // que está interactuando.\n const interactingRef = useRef({ hover: false, focus: false });\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n const clearTimer = useCallback(() => {\n if (timeoutRef.current !== undefined) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n }, []);\n\n const scheduleTimer = useCallback(() => {\n clearTimer();\n if (!open || duration == null || !onCloseRef.current) return;\n if (interactingRef.current.hover || interactingRef.current.focus) return;\n timeoutRef.current = setTimeout(() => {\n onCloseRef.current?.();\n }, duration);\n }, [open, duration, clearTimer]);\n\n useEffect(() => {\n scheduleTimer();\n return clearTimer;\n }, [scheduleTimer, clearTimer]);\n\n // Cada handler compone el propio (pausa del auto-dismiss) con el del consumidor\n // (si lo pasó vía props nativas), sin que ninguno pise al otro.\n const handleMouseEnter = (event: MouseEvent<HTMLDivElement>) => {\n interactingRef.current.hover = true;\n clearTimer();\n onMouseEnter?.(event);\n };\n const handleMouseLeave = (event: MouseEvent<HTMLDivElement>) => {\n interactingRef.current.hover = false;\n scheduleTimer();\n onMouseLeave?.(event);\n };\n const handleFocus = (event: FocusEvent<HTMLDivElement>) => {\n interactingRef.current.focus = true;\n clearTimer();\n onFocus?.(event);\n };\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n interactingRef.current.focus = false;\n scheduleTimer();\n onBlur?.(event);\n };\n\n if (!open || typeof document === \"undefined\") return null;\n return createPortal(\n <div\n ref={ref}\n role=\"status\"\n data-testid={dataTestId}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...rest}\n // `className` va DESPUÉS de `...rest`: aunque alguien fuerce uno por fuera saltándose el\n // tipo (que lo omite), el nuestro gana — la encapsulación se respeta también en runtime.\n className={root}\n >\n <span className={messageClass} data-testid={slot(\"message\")}>\n {message}\n </span>\n {action}\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n className={closeBtn}\n data-testid={slot(\"close\")}\n onClick={onClose}\n >\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/theme/styles/surfaces/index.css.ts.vanilla.css?source=LnN1cmZhY2VzX3NyT25seV9fMXFhN2F0bjAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQouc3VyZmFjZXNfcGFuZWxTdXJmYWNlX18xcWE3YXRuMSB7CiAgYmFja2dyb3VuZDogdmFyKC0tYmctc3VyZmFjZV9fZTNncnVyMjkpOwogIGJvcmRlci13aWR0aDogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKTsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWRlZmF1bHRfX2UzZ3J1cjJoKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtYmFzZV9fZTNncnVyMW0pOwogIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZ19fZTNncnVyMjcpOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnN1cmZhY2VzX2lua3lTdXJmYWNlX18xcWE3YXRuMiB7CiAgYmFja2dyb3VuZDogdmFyKC0tZmctc3Ryb25nX19lM2dydXIyYyk7CiAgY29sb3I6IHZhcigtLWJnLXBhZ2VfX2UzZ3J1cjI4KTsKICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGdfX2UzZ3J1cjI3KTsKfQ';\nimport 'src/components/snackbar/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9faWh6c2VwMCB7CiAgcG9zaXRpb246IGZpeGVkOwogIGJvdHRvbTogdmFyKC0tc3BhY2UtczVfX2UzZ3J1cjFkKTsKICBsZWZ0OiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IHZhcigtLXNwYWNlLXMzX19lM2dydXIxYik7CiAgcGFkZGluZzogdmFyKC0tc3BhY2UtczNfX2UzZ3J1cjFiKSB2YXIoLS1zcGFjZS1zNF9fZTNncnVyMWMpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1iYXNlX19lM2dydXIxbSk7CiAgei1pbmRleDogNjA7Cn0KLnVzZS1zdHlsZXNfbWVzc2FnZV9faWh6c2VwMSB7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdGV4dF9fZTNncnVyMSk7CiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXNtYWxsLXNpemVfX2UzZ3J1cjEwKTsKfQoudXNlLXN0eWxlc19jbG9zZUJ0bl9faWh6c2VwMiB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogbm9uZTsKICBjb2xvcjogdmFyKC0tYmctcGFnZV9fZTNncnVyMjgpOwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1ci1mYXN0X19lM2dydXIyMSkgdmFyKC0tZWFzZS1pbmtfX2UzZ3J1cjI0KTsKICBvdXRsaW5lOiBub25lOwp9Ci51c2Utc3R5bGVzX2Nsb3NlQnRuX19paHpzZXAyOmhvdmVyIHsKICBvcGFjaXR5OiAwLjc7Cn0KLnVzZS1zdHlsZXNfY2xvc2VCdG5fX2loenNlcDI6Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWZvY3VzX19lM2dydXIydSk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQ';\nexport var closeBtn = 'use-styles_closeBtn__ihzsep2';\nexport var message = 'use-styles_message__ihzsep1';\nexport var root = 'use-styles_root__ihzsep0 surfaces_inkySurface__1qa7atn2';","import { type Ref, forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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>.\n// La ref apunta al <table> (no hay wrapper de scroll).\n// `forwardRef` no preserva el genérico `Row`, así que casteamos el resultado para conservarlo.\nfunction TableInner<Row extends Record<string, unknown>>(\n { columns, rows, getRowKey, className, caption, testId, ...rest }: TableProps<Row>,\n ref: Ref<HTMLTableElement>,\n) {\n const { root, th, td, alignRight, caption: captionClass } = useStyles({ className });\n const { testId: dataTestId, slot } = useTestId(\"list\", testId);\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 ref={ref} className={root} data-testid={dataTestId} {...rest}>\n {caption != null && <caption className={captionClass}>{caption}</caption>}\n <thead>\n <tr>\n {columns.map((column) => (\n <th key={column.key} scope=\"col\" 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} data-testid={slot(`row-${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\n// Cast para preservar el genérico `Row` que `forwardRef` borraría.\nconst TableForwarded = forwardRef(TableInner);\nTableForwarded.displayName = \"Table\";\nexport const Table = TableForwarded as <Row extends Record<string, unknown>>(\n props: TableProps<Row> & { ref?: Ref<HTMLTableElement> },\n) => ReturnType<typeof TableInner>;\n","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 caption: string;\n} {\n const { themeClass } = useTheme();\n const root = useMemo(\n () => [themeClass, styles.root, className].filter(Boolean).join(\" \"),\n [themeClass, className],\n );\n return {\n root,\n th: styles.th,\n td: styles.td,\n alignRight: styles.alignRight,\n caption: styles.caption,\n };\n}\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/table/use-styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA5VTy26EMAy88xW5VCqHrICtemD_oj-AAjEQNcTIMfto1X-vSJfso9tq9xbZY8_Y46wmD9LzwYKvCJGrKndF8_FqMvGZCLEzmvtS5Fn2tEmEqJE0kGzQWjV6KMXympMtOpatGow9lGKr6FnKEGLYc1XBuqOJ8nSTfCWrM1LuI2UeKP9qM6DDpU2RRkJvPmDBzUwSDlAT7kJiwb8EvAVmIOlH1RjXxSJSzbtxndwZDf6kdBtqQksm5XyLNJRiGkegRv1M3KBFiiI76aeabSQt4NRBWdO5UlhoeY6NSuszCbMikL6I3Cq9zKxjpk7PfKiRGYelyzFI00lCPqbCozX6EqKhVZONoxb9sel-XlrQFQn2v_zS0a8i-HV7lkcU98pQhONNxVeb7dKb62dC10VQ88-R-EFZe3EiefbAEoKdb6brT_9lHZZxbjbN-evKRo1s0MWyl1B2jEpvNJSCcfzrcO79Yw_PfdcpH62-cvHG9W6Sr29Ur63OWQQAAA';\nexport var alignRight = 'use-styles_alignRight__1n2cz6i3';\nexport var caption = 'use-styles_caption__1n2cz6i4';\nexport var root = 'use-styles_root__1n2cz6i0';\nexport var td = 'use-styles_td__1n2cz6i2';\nexport var th = 'use-styles_th__1n2cz6i1';","import { forwardRef } from \"react\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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 const AppBar = forwardRef<HTMLElement, AppBarProps>(function AppBar(\n { brand, actions, className, children, testId, ...rest },\n ref,\n) {\n const styles = useStyles({ className });\n const { testId: dataTestId, slot } = useTestId(\"nav\", testId);\n return (\n <header ref={ref} className={styles.root} data-testid={dataTestId} {...rest}>\n {brand !== undefined ? (\n <div className={styles.brand} data-testid={slot(\"brand\")}>\n {brand}\n </div>\n ) : null}\n {children}\n {actions !== undefined ? (\n <div className={styles.actions} data-testid={slot(\"actions\")}>\n {actions}\n </div>\n ) : null}\n </header>\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/app-bar/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fMWgxMzNuaDAgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgZ2FwOiB2YXIoLS1zcGFjZS1zNF9fZTNncnVyMWMpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNlLXMzX19lM2dydXIxYikgdmFyKC0tc3BhY2UtczRfX2UzZ3J1cjFjKTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wYWdlX19lM2dydXIyOCk7CiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tYm9yZGVyLWhhaXJfX2UzZ3J1cjFvKSBzb2xpZCB2YXIoLS1ib3JkZXItc3VidGxlX19lM2dydXIyZyk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoudXNlLXN0eWxlc19icmFuZF9fMWgxMzNuaDEgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWRpc3BsYXlfX2UzZ3J1cjApOwp9Ci51c2Utc3R5bGVzX2FjdGlvbnNfXzFoMTMzbmgyIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiB2YXIoLS1zcGFjZS1zMl9fZTNncnVyMWEpOwp9';\nexport var actions = 'use-styles_actions__1h133nh2';\nexport var brand = 'use-styles_brand__1h133nh1';\nexport var root = 'use-styles_root__1h133nh0';","import { forwardRef } from \"react\";\nimport { states } from \"../../testing/states\";\nimport { useTestId } from \"../../testing/use-test-id\";\nimport 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 const ListItem = forwardRef<HTMLDivElement, ListItemProps>(function ListItem(\n { leading, trailing, selected, className, testId, children, ...rest },\n ref,\n) {\n const styles = useStyles({ selected, className });\n const { testId: dataTestId, slot } = useTestId(\"list\", testId);\n return (\n <div\n ref={ref}\n className={styles.root}\n data-testid={dataTestId}\n data-state={states({ selected })}\n {...rest}\n >\n {leading != null && (\n <span className={styles.leading} data-testid={slot(\"leading\")}>\n {leading}\n </span>\n )}\n <span className={styles.content} data-testid={slot(\"content\")}>\n {children}\n </span>\n {trailing != null && (\n <span className={styles.trailing} data-testid={slot(\"trailing\")}>\n {trailing}\n </span>\n )}\n </div>\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-2bT5ObOBrG7_kU2upDZ2bBpX8IUC6LbcjuIVNbk93zFLZlm7QBB3B3J1v57ltgGyEQgslcZqrSjjvd9T6SHoF-eiXk5kWeV-B_bwCw7X2eVfYuKc-n-MtvvwlyKC4F5OBx_QF8FEWyB-tr7NECj_9JUlGCX8QL-DVP4-zRAmUteScrqsRrda8FcfD4i3gpCxHvRPFogfciLw5JPCyV5ll-L4U5ePzX8gP490m8gg95ltcNf4zqn-xfxeFyiuuq6hLlOd6KTi2bU7x9uldDOHj8b5bsi_ipuhQf4sMlq5K4rut9IbKvArzPq6TcHtU-1PZt8UVsivzFLpOv4l4d5QAumE8LkWqUpyQT_xTJ4dj23eEALbBG-qLIGAcOhLoaRVWJ4uM53ibZ4a52axOIKhZud04x63GwPcXp-S1euE4hUgugRe0c_B04C_b8YtX_FSL9SVPPsCt-3RXoaLRqX2IOmNKXtkpdXzYc2HABkdKZI1L6seUAL_yiLxla3A0sHlHPnei7qyvSGdtrjWHF2KE2hoq-ZGjs2B8GR9zzlQx8Yb2vTxwoMqI4eqobchjpeSIaT6eBJ9LzlPZHZV2PzlPW80QVT3nTkNOzRDWWzgNLtGfp8-AyUb2lQrW0yXcqGyUHvRvXSIaeqtqT29epri4cUDhoTuvrWfV1EvFO8fWiu1iNamjttW-t0anWvvStXevSWfuqWivT-HRSvCFYTzx-z9xVN3SHUDMWB0rVH8J9g7f6dA4RUS1u43OV5JlqspmiPdJD4C7V-HT6Pu_anlPWd9rWqfXazNKwnaWbLGWXsI17bV9uIdSG_LpoZxDcBLgVxLVgECdtfFPH3YGAtoJtd_jfok4bbebRQWnWxgUHuB912-ieA9KPem30wAHtR_02euSAtdEi3iWX0s7yTN7dhAN4flXiZdpGP3FAetF010afOHB60ZO8XycOvF50E5ey5ZQD2ovvL6dTG8848H3_rtjkxU4U9jFOilZRT4S9eHE5yRaa6c_p1yDi53ZBhj5zgO-Cqoi3T0l2sCtlmBb9xHWXZXmRxtJvKVm6K16SnXRTqeNXEck-XZq1iFZUSk_P6orlCpZ9Uny_cEDueN0ExXWd10peOwTeJKnYJRc5AL50UtZNUYo02eQnOQy-dnLITdONY8iBe4_vLoW9j2VPcD2pYZiWMtwdJBhzgKESLk_5SxsmHBDWhkVcCjvJ2rUqphxsL5tka2_E10QUb-ECWwA2_9BtkVYe4129Jm27jB0OYD2uAATFYRO_xdBCroWoBReQqaUkC5jVpfD5FSB4fgU2Pb8OSmOslpasYLdpsy5O6m92U0m_PKE_vXvz7Q3vbDI2B_scH-Tl8jh4iLzIjei7e7y8FPt4KyV-LWm-OpLsSWStIubgIVyHy5C1iiQrhbxnm1pAQ7QObruEg11WRS7narzl4AE5iMCoVaSXSsjLtePggfqUUSiruGwqCS8WHDy4xIXMbxV5Fmy3IpNG9v3uXhHv1XTgt0uJLIB8CyDHqum5341boZ3Yx5eTrPuoLYWZWqrX70RbyHNuheLGvjrCP9X9XKIQhYrmmD_LWQE_cfDACGKIKaIy30vDp1vbCBMLEHh9wwWCauPdnSROe43v4uwgeghmeo1qMO8ZvIkUg-cJg7cyisHPvcbLKq4upZ1LxgsOHkjorEigKF7iQo7okoMHL2BBr5Yk28vtccXBAw4pdtz71nd7Kdvope9jWyRyynjmLawAuRZAtO6Y4zS8LqqjSOXlfPmB7g90f6D7V0T31YAugjCESyO6KEAMIRO60IXs_rhFiy7GaH2_T3p0IxyuQ2xAd-kGkR-Z0PVcD7pwAt1OMxPoUmwBTFwLYMyaQUNm0tsvOBfgfjkPTjC8xCS4j8FRhv2QEEJmMOx6FnBub7hAbILhVcQII2aGA494xJtg2KcEEjiDYZ9awL29OwbHGF5TtmRLE8NuFCDXMzO8cgNIJxhmoY-XdIzh1YoGNDAx7FqAWaCZt5kW4C8GgEN_vV5N5F4c-mvHBPB6tVoHKwPAa7yC_tIEMA4wRMQAsBPQgBATwCxkkLJJgGVfjADXOBF8TYqd4TJBr1qK4FnoqoU8PJV7AxwiPMGtE2EE_Tm5F1uAMgsgT1ljjObeTuOjuXeoGXLbNWjOvXqDo7m307ieWxo4AQ7N3LLQoffhOMYtWdHQkHu7PrTcqrddn3u_mpbN_TXx9yybI1y_TMvmoH6Z0IXNlwHdnkCDLl7Wrwl0u30ZQ1dpa5xVnWwIp6Iao1GjGdLY7Z-JRnh_TgMX0JsgsdvwGInecqDRrIKHIj2JxJf2JtfA3ab1HHY7MMahRjPgUBleAw6VGrQcdi66q2GQQBODNHKj4I9uXd1wHRFT-gxDFobGrStEHnYMDJI1XTorE4NOwAJvav07h8HrYGEWwNQC9YK0fmY7L32qpbA3K32qhSa3rjB0A8eZABYuGaZ0RvqkFmgylOfMSp_dxsegXWESkWgC2sAjlNCZy15Gru8Z6bPb-Ai2nS6MYesGzgpNYRuy0A9Hse1E9diqt12XPQkykAuXCCLXvHPFKMDURG4dJ6bsCQMYImoiN2ThOjKR60UBWXrGh04rLwocM7lKd0ezZ90bSqdQfSCEMiecyp5d42MwUmftB2jyOVKIl3gaRuZbADdPMxiaRWO39TEaI8gCFkzQGDme4znTNGJaP2-B7PZtBo_d5keWs51OjPEYuSufemYeHbby2oE44LEbnUyj2rUswaZt6Cqkq9BIY-SE4XplonEdrcmSGmhcs5UXGGnEDKMOr5ptqEM9bHyOxJZOSNFEHu32xZhHiWcBQiyA4e_ZhqqlZm5D1UKT21C6ciI89fiILGmAoml0XWYB37FAvSeaA26n7dG1b0CWmE2A60ICUTQNLqovjuNbgMzbhXYbH8G204U_tAsNHNgu7AbYKq1osVXvup5c8mMX-mffhS5pRLwJGCEj6zm7UIQs4PoWcNis45hu23_NjWinA3-qjeg_6o-lxODtuRB7UZT2Nj_lhV1uazg52MXF008NmfKzEWOUynMa03q3PakZJ1We1YyyKk9rxmmVBymjvMoTm3Fi5ZmNkVmlse87t5mRdMdObqYz79jZjYl4eXpjZF6e30xSrz3BMYEvz3BM6MtTHCP88hxn1pZ2cJJjmgLkWc74JCBPc0zTgDzPMU0E8kRHPxXIM53xyaB_qgPAN-2MkFVFXFYcpHkh5s4GMonNytpz8vaMzD0nd8_I3nPy97wMPjeHz87ic_O4MZPrVKYnylNcD58pG5O50vx0Op-Z0L8npc9L6oa0DjUaQ2Kfl9qnkvvs9K4HuhC7y1bs7DSvPxPOwfX3K9g_W-Bnzjdinxei-THeV6K4kV4VcVYmzQfJd5civpauP8CbluBvSXrOiyrOqqvDOEvS-PdKk0pctfY2v2T13zP0xN_efPs_BEujAwo2AAA';\nimport 'src/components/list-item/use-styles.css.ts.vanilla.css?source=LnVzZS1zdHlsZXNfcm9vdF9fa2JyZXExMCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogdmFyKC0tc3BhY2UtczNfX2UzZ3J1cjFiKTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1zM19fZTNncnVyMWIpIHZhcigtLXNwYWNlLXM0X19lM2dydXIxYyk7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyLWZhc3RfX2UzZ3J1cjIxKSB2YXIoLS1lYXNlLWlua19fZTNncnVyMjQpOwp9Ci51c2Utc3R5bGVzX3Jvb3RfX2ticmVxMTA6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLWJnLXN1bmtlbl9fZTNncnVyMmEpOwp9Ci51c2Utc3R5bGVzX3NlbGVjdGVkX19rYnJlcTExIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zdW5rZW5fX2UzZ3J1cjJhKTsKICBib3gtc2hhZG93OiBpbnNldCAycHggMCAwIHZhcigtLWFjY2VudC1iYXNlX19lM2dydXIyaik7Cn0KLnVzZS1zdHlsZXNfbGVhZGluZ19fa2JyZXExMiB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci51c2Utc3R5bGVzX2NvbnRlbnRfX2ticmVxMTMgewogIGZsZXg6IDE7Cn0KLnVzZS1zdHlsZXNfdHJhaWxpbmdfX2ticmVxMTQgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQ';\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 { IconProps } from \"../types\";\n\nexport function AlertCircleIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\" />\n <line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ArchiveIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"20\" height=\"5\" x=\"2\" y=\"3\" rx=\"1\" />\n <path d=\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\" />\n <path d=\"M10 12h4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ArrowDownIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12 5v14\" />\n <path d=\"m19 12-7 7-7-7\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ArrowLeftIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m12 19-7-7 7-7\" />\n <path d=\"M19 12H5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ArrowRightIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M5 12h14\" />\n <path d=\"m12 5 7 7-7 7\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ArrowUpIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m5 12 7-7 7 7\" />\n <path d=\"M12 19V5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function AtSignIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path d=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function BellIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\" />\n <path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function BellOffIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M8.7 3A6 6 0 0 1 18 8a21.3 21.3 0 0 0 .6 5\" />\n <path d=\"M17 17H3s3-2 3-9a4.67 4.67 0 0 1 .3-1.7\" />\n <path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\" />\n <path d=\"m2 2 20 20\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function BookmarkIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CalendarIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M8 2v4\" />\n <path d=\"M16 2v4\" />\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\" />\n <path d=\"M3 10h18\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CameraIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z\" />\n <circle cx=\"12\" cy=\"13\" r=\"3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ChevronUpIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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 ChevronsLeftIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m11 17-5-5 5-5\" />\n <path d=\"m18 17-5-5 5-5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ChevronsRightIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m6 17 5-5-5-5\" />\n <path d=\"m13 17 5-5-5-5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ClipboardIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\" />\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ClockIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CloudIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CopyIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" />\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CornerDownRightIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polyline points=\"15 10 20 15 15 20\" />\n <path d=\"M4 4v7a4 4 0 0 0 4 4h12\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function CreditCardIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"20\" height=\"14\" x=\"2\" y=\"5\" rx=\"2\" />\n <line x1=\"2\" x2=\"22\" y1=\"10\" y2=\"10\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function DollarSignIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"22\" />\n <path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function DownloadIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" x2=\"12\" y1=\"15\" y2=\"3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ExternalLinkIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M15 3h6v6\" />\n <path d=\"M10 14 21 3\" />\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FileIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FileTextIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n <path d=\"M16 13H8\" />\n <path d=\"M16 17H8\" />\n <path d=\"M10 9H8\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FilterIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FingerprintIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M2 12C2 6.5 6.5 2 12 2a10 10 0 0 1 8 4\" />\n <path d=\"M5 19.5C5.5 18 6 15 6 12c0-.7.12-1.37.34-2\" />\n <path d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\" />\n <path d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\" />\n <path d=\"M8.65 22c.21-.66.45-1.32.57-2\" />\n <path d=\"M14 13.12c0 2.38 0 6.38-1 8.88\" />\n <path d=\"M2 16h.01\" />\n <path d=\"M21.8 16c.2-2 .131-5.354 0-6\" />\n <path d=\"M9 6.8a6 6 0 0 1 9 5.2c0 .47 0 1.17-.02 2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FolderIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function FolderOpenIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function GiftIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect x=\"3\" y=\"8\" width=\"18\" height=\"4\" rx=\"1\" />\n <path d=\"M12 8v13\" />\n <path d=\"M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7\" />\n <path d=\"M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function GitHubIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function GlobeIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\" />\n <path d=\"M2 12h20\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function GridIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M3 9h18\" />\n <path d=\"M3 15h18\" />\n <path d=\"M9 3v18\" />\n <path d=\"M15 3v18\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function HeartIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function HelpCircleIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function HomeIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n <polyline points=\"9 22 9 12 15 12 15 22\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ImageIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\" />\n <circle cx=\"9\" cy=\"9\" r=\"2\" />\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function InboxIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\" />\n <path d=\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function KeyIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L21 4.5\" />\n <path d=\"m21 2-9.6 9.6\" />\n <circle cx=\"7.5\" cy=\"15.5\" r=\"5.5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LayoutIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"7\" height=\"9\" x=\"3\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"5\" x=\"14\" y=\"3\" rx=\"1\" />\n <rect width=\"7\" height=\"9\" x=\"14\" y=\"12\" rx=\"1\" />\n <rect width=\"7\" height=\"5\" x=\"3\" y=\"16\" rx=\"1\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LinkIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ListIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"6\" y2=\"6\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"12\" y2=\"12\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"18\" y2=\"18\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LoaderIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"6\" />\n <line x1=\"12\" x2=\"12\" y1=\"18\" y2=\"22\" />\n <line x1=\"4.93\" x2=\"7.76\" y1=\"4.93\" y2=\"7.76\" />\n <line x1=\"16.24\" x2=\"19.07\" y1=\"16.24\" y2=\"19.07\" />\n <line x1=\"2\" x2=\"6\" y1=\"12\" y2=\"12\" />\n <line x1=\"18\" x2=\"22\" y1=\"12\" y2=\"12\" />\n <line x1=\"4.93\" x2=\"7.76\" y1=\"19.07\" y2=\"16.24\" />\n <line x1=\"16.24\" x2=\"19.07\" y1=\"7.76\" y2=\"4.93\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LockIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LogInIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\" />\n <polyline points=\"10 17 15 12 10 7\" />\n <line x1=\"15\" x2=\"3\" y1=\"12\" y2=\"12\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function LogOutIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16 17 21 12 16 7\" />\n <line x1=\"21\" x2=\"9\" y1=\"12\" y2=\"12\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MailIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\" />\n <path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MapPinIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\n <circle cx=\"12\" cy=\"10\" r=\"3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MaximizeIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M8 3H5a2 2 0 0 0-2 2v3\" />\n <path d=\"M21 8V5a2 2 0 0 0-2-2h-3\" />\n <path d=\"M3 16v3a2 2 0 0 0 2 2h3\" />\n <path d=\"M16 21h3a2 2 0 0 0 2-2v-3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MenuIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"4\" x2=\"20\" y1=\"12\" y2=\"12\" />\n <line x1=\"4\" x2=\"20\" y1=\"6\" y2=\"6\" />\n <line x1=\"4\" x2=\"20\" y1=\"18\" y2=\"18\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MessageCircleIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MessageSquareIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MicIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MinimizeIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M8 3v3a2 2 0 0 1-2 2H3\" />\n <path d=\"M21 8h-3a2 2 0 0 1-2-2V3\" />\n <path d=\"M3 16h3a2 2 0 0 1 2 2v3\" />\n <path d=\"M16 21v-3a2 2 0 0 1 2-2h3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MinusIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M5 12h14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MoonIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function MoreHorizontalIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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 type { IconProps } from \"../types\";\n\nexport function MoreVerticalIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"12\" cy=\"5\" r=\"1\" />\n <circle cx=\"12\" cy=\"19\" r=\"1\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PackageIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z\" />\n <path d=\"M3.3 7 12 12l8.7-5\" />\n <path d=\"M12 22V12\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PaperclipIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PauseIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect x=\"14\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\" />\n <rect x=\"6\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PencilIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" />\n <path d=\"m15 5 4 4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PhoneIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PlayIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"6 3 20 12 6 21 6 3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function PlusIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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 PrinterIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polyline points=\"6 9 6 2 18 2 18 9\" />\n <path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\" />\n <rect width=\"12\" height=\"8\" x=\"6\" y=\"14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function RedoIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M21 7v6h-6\" />\n <path d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function RefreshCwIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" />\n <path d=\"M21 3v5h-5\" />\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" />\n <path d=\"M3 21v-5h5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SaveIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z\" />\n <path d=\"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7\" />\n <path d=\"M7 3v4a1 1 0 0 0 1 1h7\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SearchIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"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 SendIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"22\" x2=\"11\" y1=\"2\" y2=\"13\" />\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SettingsIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ShareIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\" />\n <polyline points=\"16 6 12 2 8 6\" />\n <line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"15\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ShieldIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ShieldCheckIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ShoppingBagIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z\" />\n <path d=\"M3 6h18\" />\n <path d=\"M16 10a4 4 0 0 1-8 0\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ShoppingCartIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"8\" cy=\"21\" r=\"1\" />\n <circle cx=\"19\" cy=\"21\" r=\"1\" />\n <path d=\"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SidebarIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SkipBackIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"19 20 9 12 19 4 19 20\" />\n <line x1=\"5\" x2=\"5\" y1=\"19\" y2=\"5\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SkipForwardIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"5 4 15 12 5 20 5 4\" />\n <line x1=\"19\" x2=\"19\" y1=\"5\" y2=\"19\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SlidersIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <line x1=\"21\" x2=\"14\" y1=\"4\" y2=\"4\" />\n <line x1=\"10\" x2=\"3\" y1=\"4\" y2=\"4\" />\n <line x1=\"21\" x2=\"12\" y1=\"12\" y2=\"12\" />\n <line x1=\"8\" x2=\"3\" y1=\"12\" y2=\"12\" />\n <line x1=\"21\" x2=\"16\" y1=\"20\" y2=\"20\" />\n <line x1=\"12\" x2=\"3\" y1=\"20\" y2=\"20\" />\n <line x1=\"14\" x2=\"14\" y1=\"2\" y2=\"6\" />\n <line x1=\"8\" x2=\"8\" y1=\"10\" y2=\"14\" />\n <line x1=\"16\" x2=\"16\" y1=\"18\" y2=\"22\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SmileIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M8 14s1.5 2 4 2 4-2 4-2\" />\n <line x1=\"9\" x2=\"9.01\" y1=\"9\" y2=\"9\" />\n <line x1=\"15\" x2=\"15.01\" y1=\"9\" y2=\"9\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function StarIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function SunIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path d=\"M12 2v2\" />\n <path d=\"M12 20v2\" />\n <path d=\"m4.93 4.93 1.41 1.41\" />\n <path d=\"m17.66 17.66 1.41 1.41\" />\n <path d=\"M2 12h2\" />\n <path d=\"M20 12h2\" />\n <path d=\"m6.34 17.66-1.41 1.41\" />\n <path d=\"m19.07 4.93-1.41 1.41\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function TagIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z\" />\n <circle cx=\"7.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ThumbsDownIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M17 14V2\" />\n <path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ThumbsUpIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M7 10v12\" />\n <path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function TrashIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M3 6h18\" />\n <path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\" />\n <path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UndoIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M3 7v6h6\" />\n <path d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UnlockIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 9.9-1\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UploadIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" x2=\"12\" y1=\"3\" y2=\"15\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UserIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UserCheckIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <polyline points=\"16 11 18 13 22 9\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UserPlusIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <line x1=\"19\" x2=\"19\" y1=\"8\" y2=\"14\" />\n <line x1=\"22\" x2=\"16\" y1=\"11\" y2=\"11\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function UsersIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M22 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function Volume2Icon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\" />\n <path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\" />\n <path d=\"M19.07 4.93a10 10 0 0 1 0 14.14\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function VolumeXIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\" />\n <line x1=\"22\" x2=\"16\" y1=\"9\" y2=\"15\" />\n <line x1=\"16\" x2=\"22\" y1=\"9\" y2=\"15\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function WifiIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <path d=\"M12 20h.01\" />\n <path d=\"M2 8.82a15 15 0 0 1 20 0\" />\n <path d=\"M5 12.859a10 10 0 0 1 14 0\" />\n <path d=\"M8.5 16.429a5 5 0 0 1 7 0\" />\n </svg>\n );\n}\n","import type { IconProps } from \"../types\";\n\nexport function ZapIcon({ size = 20, strokeWidth = 1.75, title, ...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 {...(title ? { role: \"img\", \"aria-label\": title } : { \"aria-hidden\": true })}\n {...rest}\n >\n <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\" />\n </svg>\n );\n}\n","export type { Icon, IconProps } from \"./types\";\n\nimport { AlertCircleIcon } from \"./alert-circle\";\nimport { ArchiveIcon } from \"./archive\";\nimport { ArrowDownIcon } from \"./arrow-down\";\nimport { ArrowLeftIcon } from \"./arrow-left\";\nimport { ArrowRightIcon } from \"./arrow-right\";\nimport { ArrowUpIcon } from \"./arrow-up\";\nimport { AtSignIcon } from \"./at-sign\";\nimport { BellIcon } from \"./bell\";\nimport { BellOffIcon } from \"./bell-off\";\nimport { BookmarkIcon } from \"./bookmark\";\nimport { CalendarIcon } from \"./calendar\";\nimport { CameraIcon } from \"./camera\";\nimport { CheckIcon } from \"./check\";\nimport { ChevronDownIcon } from \"./chevron-down\";\nimport { ChevronLeftIcon } from \"./chevron-left\";\nimport { ChevronRightIcon } from \"./chevron-right\";\nimport { ChevronUpIcon } from \"./chevron-up\";\nimport { ChevronsLeftIcon } from \"./chevrons-left\";\nimport { ChevronsRightIcon } from \"./chevrons-right\";\nimport { CircleCheckIcon } from \"./circle-check\";\nimport { CircleXIcon } from \"./circle-x\";\nimport { ClipboardIcon } from \"./clipboard\";\nimport { ClockIcon } from \"./clock\";\nimport { CloudIcon } from \"./cloud\";\nimport { CopyIcon } from \"./copy\";\nimport { CornerDownRightIcon } from \"./corner-down-right\";\nimport { CreditCardIcon } from \"./credit-card\";\nimport { DollarSignIcon } from \"./dollar-sign\";\nimport { DownloadIcon } from \"./download\";\nimport { ExternalLinkIcon } from \"./external-link\";\nimport { EyeIcon } from \"./eye\";\nimport { EyeOffIcon } from \"./eye-off\";\nimport { FileIcon } from \"./file\";\nimport { FileTextIcon } from \"./file-text\";\nimport { FilterIcon } from \"./filter\";\nimport { FingerprintIcon } from \"./fingerprint\";\nimport { FolderIcon } from \"./folder\";\nimport { FolderOpenIcon } from \"./folder-open\";\nimport { GiftIcon } from \"./gift\";\nimport { GitHubIcon } from \"./github\";\nimport { GlobeIcon } from \"./globe\";\nimport { GridIcon } from \"./grid\";\nimport { HeartIcon } from \"./heart\";\nimport { HelpCircleIcon } from \"./help-circle\";\nimport { HomeIcon } from \"./home\";\nimport { ImageIcon } from \"./image\";\nimport { InboxIcon } from \"./inbox\";\nimport { InfoIcon } from \"./info\";\nimport { KeyIcon } from \"./key\";\nimport { LayoutIcon } from \"./layout\";\nimport { LinkIcon } from \"./link\";\nimport { ListIcon } from \"./list\";\nimport { LoaderIcon } from \"./loader\";\nimport { LockIcon } from \"./lock\";\nimport { LogInIcon } from \"./log-in\";\nimport { LogOutIcon } from \"./log-out\";\nimport { MailIcon } from \"./mail\";\nimport { MapPinIcon } from \"./map-pin\";\nimport { MaximizeIcon } from \"./maximize\";\nimport { MenuIcon } from \"./menu\";\nimport { MessageCircleIcon } from \"./message-circle\";\nimport { MessageSquareIcon } from \"./message-square\";\nimport { MicIcon } from \"./mic\";\nimport { MinimizeIcon } from \"./minimize\";\nimport { MinusIcon } from \"./minus\";\nimport { MoonIcon } from \"./moon\";\nimport { MoreHorizontalIcon } from \"./more-horizontal\";\nimport { MoreVerticalIcon } from \"./more-vertical\";\nimport { PackageIcon } from \"./package\";\nimport { PaperclipIcon } from \"./paperclip\";\nimport { PauseIcon } from \"./pause\";\nimport { PencilIcon } from \"./pencil\";\nimport { PhoneIcon } from \"./phone\";\nimport { PlayIcon } from \"./play\";\nimport { PlusIcon } from \"./plus\";\nimport { PrinterIcon } from \"./printer\";\nimport { RedoIcon } from \"./redo\";\nimport { RefreshCwIcon } from \"./refresh-cw\";\nimport { SaveIcon } from \"./save\";\nimport { SearchIcon } from \"./search\";\nimport { SendIcon } from \"./send\";\nimport { SettingsIcon } from \"./settings\";\nimport { ShareIcon } from \"./share\";\nimport { ShieldIcon } from \"./shield\";\nimport { ShieldCheckIcon } from \"./shield-check\";\nimport { ShoppingBagIcon } from \"./shopping-bag\";\nimport { ShoppingCartIcon } from \"./shopping-cart\";\nimport { SidebarIcon } from \"./sidebar\";\nimport { SkipBackIcon } from \"./skip-back\";\nimport { SkipForwardIcon } from \"./skip-forward\";\nimport { SlidersIcon } from \"./sliders\";\nimport { SmileIcon } from \"./smile\";\nimport { StarIcon } from \"./star\";\nimport { SunIcon } from \"./sun\";\nimport { TagIcon } from \"./tag\";\nimport { ThumbsDownIcon } from \"./thumbs-down\";\nimport { ThumbsUpIcon } from \"./thumbs-up\";\nimport { TrashIcon } from \"./trash\";\nimport { TriangleAlertIcon } from \"./triangle-alert\";\nimport type { Icon } from \"./types\";\nimport { UndoIcon } from \"./undo\";\nimport { UnlockIcon } from \"./unlock\";\nimport { UploadIcon } from \"./upload\";\nimport { UserIcon } from \"./user\";\nimport { UserCheckIcon } from \"./user-check\";\nimport { UserPlusIcon } from \"./user-plus\";\nimport { UsersIcon } from \"./users\";\nimport { Volume2Icon } from \"./volume-2\";\nimport { VolumeXIcon } from \"./volume-x\";\nimport { WifiIcon } from \"./wifi\";\nimport { XIcon } from \"./x\";\nimport { ZapIcon } from \"./zap\";\n\nexport {\n AlertCircleIcon,\n ArchiveIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowUpIcon,\n AtSignIcon,\n BellIcon,\n BellOffIcon,\n BookmarkIcon,\n CalendarIcon,\n CameraIcon,\n CheckIcon,\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronsLeftIcon,\n ChevronsRightIcon,\n ChevronUpIcon,\n CircleCheckIcon,\n CircleXIcon,\n ClipboardIcon,\n ClockIcon,\n CloudIcon,\n CopyIcon,\n CornerDownRightIcon,\n CreditCardIcon,\n DollarSignIcon,\n DownloadIcon,\n ExternalLinkIcon,\n EyeIcon,\n EyeOffIcon,\n FileIcon,\n FileTextIcon,\n FilterIcon,\n FingerprintIcon,\n FolderIcon,\n FolderOpenIcon,\n GiftIcon,\n GitHubIcon,\n GlobeIcon,\n GridIcon,\n HeartIcon,\n HelpCircleIcon,\n HomeIcon,\n ImageIcon,\n InboxIcon,\n InfoIcon,\n KeyIcon,\n LayoutIcon,\n LinkIcon,\n ListIcon,\n LoaderIcon,\n LockIcon,\n LogInIcon,\n LogOutIcon,\n MailIcon,\n MapPinIcon,\n MaximizeIcon,\n MenuIcon,\n MessageCircleIcon,\n MessageSquareIcon,\n MicIcon,\n MinimizeIcon,\n MinusIcon,\n MoonIcon,\n MoreHorizontalIcon,\n MoreVerticalIcon,\n PackageIcon,\n PaperclipIcon,\n PauseIcon,\n PencilIcon,\n PhoneIcon,\n PlayIcon,\n PlusIcon,\n PrinterIcon,\n RedoIcon,\n RefreshCwIcon,\n SaveIcon,\n SearchIcon,\n SendIcon,\n SettingsIcon,\n ShareIcon,\n ShieldCheckIcon,\n ShieldIcon,\n ShoppingBagIcon,\n ShoppingCartIcon,\n SidebarIcon,\n SkipBackIcon,\n SkipForwardIcon,\n SlidersIcon,\n SmileIcon,\n StarIcon,\n SunIcon,\n TagIcon,\n ThumbsDownIcon,\n ThumbsUpIcon,\n TrashIcon,\n TriangleAlertIcon,\n UndoIcon,\n UnlockIcon,\n UploadIcon,\n UserCheckIcon,\n UserIcon,\n UserPlusIcon,\n UsersIcon,\n Volume2Icon,\n VolumeXIcon,\n WifiIcon,\n XIcon,\n ZapIcon,\n};\n\nexport const iconCatalog: { name: string; Icon: Icon }[] = [\n { name: \"AlertCircleIcon\", Icon: AlertCircleIcon },\n { name: \"ArchiveIcon\", Icon: ArchiveIcon },\n { name: \"ArrowDownIcon\", Icon: ArrowDownIcon },\n { name: \"ArrowLeftIcon\", Icon: ArrowLeftIcon },\n { name: \"ArrowRightIcon\", Icon: ArrowRightIcon },\n { name: \"ArrowUpIcon\", Icon: ArrowUpIcon },\n { name: \"AtSignIcon\", Icon: AtSignIcon },\n { name: \"BellIcon\", Icon: BellIcon },\n { name: \"BellOffIcon\", Icon: BellOffIcon },\n { name: \"BookmarkIcon\", Icon: BookmarkIcon },\n { name: \"CalendarIcon\", Icon: CalendarIcon },\n { name: \"CameraIcon\", Icon: CameraIcon },\n { name: \"CheckIcon\", Icon: CheckIcon },\n { name: \"ChevronDownIcon\", Icon: ChevronDownIcon },\n { name: \"ChevronLeftIcon\", Icon: ChevronLeftIcon },\n { name: \"ChevronRightIcon\", Icon: ChevronRightIcon },\n { name: \"ChevronsLeftIcon\", Icon: ChevronsLeftIcon },\n { name: \"ChevronsRightIcon\", Icon: ChevronsRightIcon },\n { name: \"ChevronUpIcon\", Icon: ChevronUpIcon },\n { name: \"CircleCheckIcon\", Icon: CircleCheckIcon },\n { name: \"CircleXIcon\", Icon: CircleXIcon },\n { name: \"ClipboardIcon\", Icon: ClipboardIcon },\n { name: \"ClockIcon\", Icon: ClockIcon },\n { name: \"CloudIcon\", Icon: CloudIcon },\n { name: \"CopyIcon\", Icon: CopyIcon },\n { name: \"CornerDownRightIcon\", Icon: CornerDownRightIcon },\n { name: \"CreditCardIcon\", Icon: CreditCardIcon },\n { name: \"DollarSignIcon\", Icon: DollarSignIcon },\n { name: \"DownloadIcon\", Icon: DownloadIcon },\n { name: \"ExternalLinkIcon\", Icon: ExternalLinkIcon },\n { name: \"EyeIcon\", Icon: EyeIcon },\n { name: \"EyeOffIcon\", Icon: EyeOffIcon },\n { name: \"FileIcon\", Icon: FileIcon },\n { name: \"FileTextIcon\", Icon: FileTextIcon },\n { name: \"FilterIcon\", Icon: FilterIcon },\n { name: \"FingerprintIcon\", Icon: FingerprintIcon },\n { name: \"FolderIcon\", Icon: FolderIcon },\n { name: \"FolderOpenIcon\", Icon: FolderOpenIcon },\n { name: \"GiftIcon\", Icon: GiftIcon },\n { name: \"GitHubIcon\", Icon: GitHubIcon },\n { name: \"GlobeIcon\", Icon: GlobeIcon },\n { name: \"GridIcon\", Icon: GridIcon },\n { name: \"HeartIcon\", Icon: HeartIcon },\n { name: \"HelpCircleIcon\", Icon: HelpCircleIcon },\n { name: \"HomeIcon\", Icon: HomeIcon },\n { name: \"ImageIcon\", Icon: ImageIcon },\n { name: \"InboxIcon\", Icon: InboxIcon },\n { name: \"InfoIcon\", Icon: InfoIcon },\n { name: \"KeyIcon\", Icon: KeyIcon },\n { name: \"LayoutIcon\", Icon: LayoutIcon },\n { name: \"LinkIcon\", Icon: LinkIcon },\n { name: \"ListIcon\", Icon: ListIcon },\n { name: \"LoaderIcon\", Icon: LoaderIcon },\n { name: \"LockIcon\", Icon: LockIcon },\n { name: \"LogInIcon\", Icon: LogInIcon },\n { name: \"LogOutIcon\", Icon: LogOutIcon },\n { name: \"MailIcon\", Icon: MailIcon },\n { name: \"MapPinIcon\", Icon: MapPinIcon },\n { name: \"MaximizeIcon\", Icon: MaximizeIcon },\n { name: \"MenuIcon\", Icon: MenuIcon },\n { name: \"MessageCircleIcon\", Icon: MessageCircleIcon },\n { name: \"MessageSquareIcon\", Icon: MessageSquareIcon },\n { name: \"MicIcon\", Icon: MicIcon },\n { name: \"MinimizeIcon\", Icon: MinimizeIcon },\n { name: \"MinusIcon\", Icon: MinusIcon },\n { name: \"MoonIcon\", Icon: MoonIcon },\n { name: \"MoreHorizontalIcon\", Icon: MoreHorizontalIcon },\n { name: \"MoreVerticalIcon\", Icon: MoreVerticalIcon },\n { name: \"PackageIcon\", Icon: PackageIcon },\n { name: \"PaperclipIcon\", Icon: PaperclipIcon },\n { name: \"PauseIcon\", Icon: PauseIcon },\n { name: \"PencilIcon\", Icon: PencilIcon },\n { name: \"PhoneIcon\", Icon: PhoneIcon },\n { name: \"PlayIcon\", Icon: PlayIcon },\n { name: \"PlusIcon\", Icon: PlusIcon },\n { name: \"PrinterIcon\", Icon: PrinterIcon },\n { name: \"RedoIcon\", Icon: RedoIcon },\n { name: \"RefreshCwIcon\", Icon: RefreshCwIcon },\n { name: \"SaveIcon\", Icon: SaveIcon },\n { name: \"SearchIcon\", Icon: SearchIcon },\n { name: \"SendIcon\", Icon: SendIcon },\n { name: \"SettingsIcon\", Icon: SettingsIcon },\n { name: \"ShareIcon\", Icon: ShareIcon },\n { name: \"ShieldCheckIcon\", Icon: ShieldCheckIcon },\n { name: \"ShieldIcon\", Icon: ShieldIcon },\n { name: \"ShoppingBagIcon\", Icon: ShoppingBagIcon },\n { name: \"ShoppingCartIcon\", Icon: ShoppingCartIcon },\n { name: \"SidebarIcon\", Icon: SidebarIcon },\n { name: \"SkipBackIcon\", Icon: SkipBackIcon },\n { name: \"SkipForwardIcon\", Icon: SkipForwardIcon },\n { name: \"SlidersIcon\", Icon: SlidersIcon },\n { name: \"SmileIcon\", Icon: SmileIcon },\n { name: \"StarIcon\", Icon: StarIcon },\n { name: \"SunIcon\", Icon: SunIcon },\n { name: \"TagIcon\", Icon: TagIcon },\n { name: \"ThumbsDownIcon\", Icon: ThumbsDownIcon },\n { name: \"ThumbsUpIcon\", Icon: ThumbsUpIcon },\n { name: \"TrashIcon\", Icon: TrashIcon },\n { name: \"TriangleAlertIcon\", Icon: TriangleAlertIcon },\n { name: \"UndoIcon\", Icon: UndoIcon },\n { name: \"UnlockIcon\", Icon: UnlockIcon },\n { name: \"UploadIcon\", Icon: UploadIcon },\n { name: \"UserCheckIcon\", Icon: UserCheckIcon },\n { name: \"UserIcon\", Icon: UserIcon },\n { name: \"UserPlusIcon\", Icon: UserPlusIcon },\n { name: \"UsersIcon\", Icon: UsersIcon },\n { name: \"Volume2Icon\", Icon: Volume2Icon },\n { name: \"VolumeXIcon\", Icon: VolumeXIcon },\n { name: \"WifiIcon\", Icon: WifiIcon },\n { name: \"XIcon\", Icon: XIcon },\n { name: \"ZapIcon\", Icon: ZapIcon },\n];\n"],"mappings":"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","names":["Card","import_react","import_react","import_react","import_react","_ad221","import_jsx_runtime","import_react","import_react","import_react","schemaNames","modeNames","active","modeNames","import_react","import_jsx_runtime","useStyles","fill","import_jsx_runtime","fill","surface","useStyles","import_react","import_react","useStyles","variant","color","align","import_jsx_runtime","variant","color","align","text","useStyles","import_react","active","import_react","variant","tone","useStyles","size","full","selected","import_jsx_runtime","Button","variant","tone","size","full","selected","content","spinner","useStyles","import_react","import_react","root","useStyles","vertical","root","import_jsx_runtime","Divider","vertical","label","root","line","useStyles","import_react","import_react","root","size","useStyles","size","root","visual","dot","mark","import_jsx_runtime","Avatar","size","root","visual","image","dot","mark","statusText","useStyles","import_react","import_react","dot","root","tone","useStyles","tone","root","dot","import_jsx_runtime","Badge","tone","root","dot","useStyles","import_react","import_react","spinner","useStyles","variant","indeterminate","root","spinner","import_jsx_runtime","Progress","variant","size","track","bar","spinner","useStyles","indeterminate","import_react","import_jsx_runtime","size","import_react","root","selected","tone","useStyles","selected","tone","clickable","root","import_jsx_runtime","ICON_SIZE","Chip","selected","tone","clickable","root","deleteBtn","useStyles","import_react","import_jsx_runtime","size","import_react","root","useStyles","disabled","root","box","import_jsx_runtime","Checkbox","label","disabled","root","input","box","check","useStyles","import_react","import_react","disabled","dot","input","label","root","useStyles","disabled","root","input","dot","label","import_jsx_runtime","Radio","label","disabled","root","input","circle","dot","useStyles","import_react","import_react","disabled","label","root","useStyles","disabled","root","list","label","import_jsx_runtime","RadioGroup","label","disabled","root","list","useStyles","option","step","import_react","import_react","input","label","root","track","useStyles","root","input","track","label","import_jsx_runtime","Switch","label","disabled","root","input","track","knob","useStyles","import_react","import_react","import_react","input","root","useStyles","root","labelText","input","helpText","import_jsx_runtime","BaseField","label","trailing","message","useStyles","import_jsx_runtime","TextField","label","import_react","import_jsx_runtime","size","import_jsx_runtime","size","import_react","useStyles","import_jsx_runtime","PasswordField","label","useStyles","import_react","import_jsx_runtime","MoneyField","label","import_react","import_react","root","useStyles","active","tone","root","import_jsx_runtime","IconButton","active","tone","root","useStyles","import_react","import_react","root","useStyles","root","import_jsx_runtime","root","useStyles","header","body","footer","Card","import_react","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_react","content","root","useStyles","severity","root","content","import_jsx_runtime","Alert","severity","useStyles","import_react","import_react","useStyles","placement","wrapper","bubble","import_jsx_runtime","Tooltip","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","Select","placeholder","label","disabled","root","trigger","chevron","menu","useStyles","selected","option","current","import_react","import_react","input","label","root","track","wrapper","useStyles","root","wrapper","label","track","input","import_jsx_runtime","Slider","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","Accordion","root","item","header","panel","useStyles","current","import_react","import_jsx_runtime","size","import_react","root","useStyles","root","import_jsx_runtime","Breadcrumbs","root","crumb","current","separator","useStyles","item","import_react","import_jsx_runtime","size","import_react","root","useStyles","root","active","import_jsx_runtime","Pagination","root","ellipsis","nav","useStyles","current","item","import_react","import_react","label","root","useStyles","root","active","label","import_jsx_runtime","Stepper","active","root","step","connector","useStyles","import_react","import_react","panel","root","useStyles","root","active","panel","import_jsx_runtime","ICON_SIZE","Tabs","root","panel","useStyles","item","active","import_react","import_react","item","list","wrapper","useStyles","wrapper","list","item","import_jsx_runtime","ICON_SIZE","Menu","trigger","wrapper","list","item","useStyles","current","import_react","import_react","body","surface","useStyles","surface","body","import_jsx_runtime","assignRef","Dialog","actions","overlay","surface","body","useStyles","active","import_react","import_react_dom","import_react","root","useStyles","root","import_jsx_runtime","Snackbar","message","root","closeBtn","useStyles","import_react","import_react","root","useStyles","root","import_jsx_runtime","caption","root","th","td","alignRight","useStyles","import_react","import_react","actions","root","useStyles","root","actions","import_jsx_runtime","AppBar","brand","actions","useStyles","import_react","import_react","content","root","selected","useStyles","selected","root","content","import_jsx_runtime","ListItem","leading","trailing","selected","useStyles","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size","import_jsx_runtime","size"]}
|