@hellboy/ds 0.1.2 → 0.2.7
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/README.md +568 -71
- package/{src/style/components/badge → dist/components}/badge.css +9 -25
- package/dist/components/badge.d.mts +12 -0
- package/dist/components/badge.d.ts +12 -0
- package/dist/components/badge.js +42 -0
- package/dist/components/badge.mjs +15 -0
- package/dist/components/banner.css +280 -0
- package/dist/components/banner.d.mts +12 -0
- package/dist/components/banner.d.ts +12 -0
- package/dist/components/banner.js +184 -0
- package/dist/components/banner.mjs +147 -0
- package/dist/components/button-group.css +289 -0
- package/dist/components/button-group.d.mts +81 -0
- package/dist/components/button-group.d.ts +81 -0
- package/dist/components/button-group.js +180 -0
- package/dist/components/button-group.mjs +143 -0
- package/{src/style/components/button → dist/components}/button.css +59 -62
- package/dist/components/button.d.mts +57 -0
- package/dist/components/button.d.ts +57 -0
- package/dist/components/button.js +129 -0
- package/dist/components/button.mjs +92 -0
- package/{src/style/components/card → dist/components}/card.css +9 -30
- package/dist/components/card.d.mts +31 -0
- package/dist/components/card.d.ts +31 -0
- package/dist/components/card.js +59 -0
- package/dist/components/card.mjs +32 -0
- package/{src/style → dist}/components/checkbox.css +51 -43
- package/dist/components/checkbox.d.mts +31 -0
- package/dist/components/checkbox.d.ts +31 -0
- package/dist/components/checkbox.js +130 -0
- package/dist/components/checkbox.mjs +93 -0
- package/{src/style/components/code-block → dist/components}/code-block.css +3 -7
- package/dist/components/code-block.d.mts +24 -0
- package/dist/components/code-block.d.ts +24 -0
- package/dist/components/code-block.js +43 -0
- package/dist/components/code-block.mjs +16 -0
- package/dist/components/color-control.css +285 -0
- package/dist/components/color-control.d.mts +5 -0
- package/dist/components/color-control.d.ts +5 -0
- package/dist/components/color-control.js +534 -0
- package/dist/components/color-control.mjs +497 -0
- package/dist/components/dialog.css +930 -0
- package/dist/components/dialog.d.mts +32 -0
- package/dist/components/dialog.d.ts +32 -0
- package/dist/components/dialog.js +1111 -0
- package/dist/components/dialog.mjs +1074 -0
- package/dist/components/divider.css +356 -0
- package/dist/components/divider.d.mts +32 -0
- package/dist/components/divider.d.ts +32 -0
- package/dist/components/divider.js +344 -0
- package/dist/components/divider.mjs +307 -0
- package/{src/style/components/drag-handle → dist/components}/drag-handle.css +3 -18
- package/dist/components/drag-handle.d.mts +11 -0
- package/dist/components/drag-handle.d.ts +11 -0
- package/dist/components/drag-handle.js +103 -0
- package/dist/components/drag-handle.mjs +66 -0
- package/dist/components/drawer.css +1027 -0
- package/dist/components/drawer.d.mts +14 -0
- package/dist/components/drawer.d.ts +14 -0
- package/dist/components/drawer.js +1072 -0
- package/dist/components/drawer.mjs +1035 -0
- package/dist/components/floating-bar.css +17 -0
- package/dist/components/floating-bar.d.mts +25 -0
- package/dist/components/floating-bar.d.ts +25 -0
- package/dist/components/floating-bar.js +52 -0
- package/dist/components/floating-bar.mjs +25 -0
- package/dist/components/footer.css +40 -0
- package/dist/components/footer.d.mts +8 -0
- package/dist/components/footer.d.ts +8 -0
- package/dist/components/footer.js +44 -0
- package/dist/components/footer.mjs +17 -0
- package/dist/components/grid.css +47 -0
- package/dist/components/grid.d.mts +27 -0
- package/dist/components/grid.d.ts +27 -0
- package/dist/components/grid.js +52 -0
- package/dist/components/grid.mjs +25 -0
- package/dist/components/header.css +1075 -0
- package/dist/components/header.d.mts +35 -0
- package/dist/components/header.d.ts +35 -0
- package/dist/components/header.js +1402 -0
- package/dist/components/header.mjs +1365 -0
- package/dist/components/hero.css +121 -0
- package/dist/components/hero.d.mts +111 -0
- package/dist/components/hero.d.ts +111 -0
- package/dist/components/hero.js +285 -0
- package/dist/components/hero.mjs +248 -0
- package/{src/style/components/icons → dist/components}/icons.css +14 -15
- package/dist/components/icons.d.mts +104 -0
- package/dist/components/icons.d.ts +104 -0
- package/dist/components/icons.js +239 -0
- package/dist/components/icons.mjs +203 -0
- package/{src/style/components/input → dist/components}/input.css +189 -102
- package/dist/components/input.d.mts +114 -0
- package/dist/components/input.d.ts +114 -0
- package/dist/components/input.js +926 -0
- package/dist/components/input.mjs +879 -0
- package/dist/components/layout.css +551 -0
- package/dist/components/layout.d.mts +16 -0
- package/dist/components/layout.d.ts +16 -0
- package/dist/components/layout.js +387 -0
- package/dist/components/layout.mjs +352 -0
- package/{src/style/components/list → dist/components}/list.css +47 -41
- package/dist/components/list.d.mts +46 -0
- package/dist/components/list.d.ts +46 -0
- package/dist/components/list.js +124 -0
- package/dist/components/list.mjs +96 -0
- package/dist/components/navbar.css +706 -0
- package/dist/components/navbar.d.mts +56 -0
- package/dist/components/navbar.d.ts +56 -0
- package/dist/components/navbar.js +994 -0
- package/dist/components/navbar.mjs +952 -0
- package/{src/style/components/page-index → dist/components}/page-index.css +2 -47
- package/dist/components/page-index.d.mts +25 -0
- package/dist/components/page-index.d.ts +25 -0
- package/dist/components/page-index.js +239 -0
- package/dist/components/page-index.mjs +202 -0
- package/{src/style/components/page → dist/components}/page.css +4 -15
- package/dist/components/page.d.mts +30 -0
- package/dist/components/page.d.ts +30 -0
- package/dist/components/page.js +40 -0
- package/dist/components/page.mjs +13 -0
- package/dist/components/popover.css +87 -0
- package/dist/components/popover.d.mts +22 -0
- package/dist/components/popover.d.ts +22 -0
- package/dist/components/popover.js +243 -0
- package/dist/components/popover.mjs +206 -0
- package/{src/style → dist}/components/radio.css +8 -51
- package/dist/components/radio.d.mts +59 -0
- package/dist/components/radio.d.ts +59 -0
- package/dist/components/radio.js +133 -0
- package/dist/components/radio.mjs +95 -0
- package/dist/components/section.css +993 -0
- package/dist/components/section.d.mts +33 -0
- package/dist/components/section.d.ts +33 -0
- package/dist/components/section.js +1401 -0
- package/dist/components/section.mjs +1364 -0
- package/dist/components/select.css +391 -0
- package/dist/components/select.d.mts +63 -0
- package/dist/components/select.d.ts +63 -0
- package/dist/components/select.js +452 -0
- package/dist/components/select.mjs +415 -0
- package/{src/style/components/slider → dist/components}/slider.css +55 -33
- package/dist/components/slider.d.mts +69 -0
- package/dist/components/slider.d.ts +69 -0
- package/dist/components/slider.js +254 -0
- package/dist/components/slider.mjs +217 -0
- package/dist/components/switch.css +1081 -0
- package/dist/components/switch.d.mts +33 -0
- package/dist/components/switch.d.ts +33 -0
- package/dist/components/switch.js +1092 -0
- package/dist/components/switch.mjs +1055 -0
- package/{src/style/components/table → dist/components}/table.css +3 -28
- package/dist/components/table.d.mts +42 -0
- package/dist/components/table.d.ts +42 -0
- package/dist/components/table.js +108 -0
- package/dist/components/table.mjs +76 -0
- package/dist/components/tag.css +97 -0
- package/dist/components/tag.d.mts +12 -0
- package/dist/components/tag.d.ts +12 -0
- package/dist/components/tag.js +42 -0
- package/dist/components/tag.mjs +15 -0
- package/dist/components/textarea.css +1359 -0
- package/dist/components/textarea.d.mts +84 -0
- package/dist/components/textarea.d.ts +84 -0
- package/dist/components/textarea.js +1962 -0
- package/dist/components/textarea.mjs +1924 -0
- package/{src/style/components/theme-control → dist/components}/theme-control.css +3 -7
- package/dist/components/theme-control.d.mts +9 -0
- package/dist/components/theme-control.d.ts +9 -0
- package/dist/components/theme-control.js +235 -0
- package/dist/components/theme-control.mjs +200 -0
- package/{src/style/components/tooltip → dist/components}/tooltip.css +5 -13
- package/dist/components/tooltip.d.mts +12 -0
- package/dist/components/tooltip.d.ts +12 -0
- package/dist/components/tooltip.js +200 -0
- package/dist/components/tooltip.mjs +163 -0
- package/dist/icons-Czahnf-r.d.mts +15 -0
- package/dist/icons-Czahnf-r.d.ts +15 -0
- package/dist/index.css +2915 -2068
- package/dist/index.d.mts +144 -721
- package/dist/index.d.ts +144 -721
- package/dist/index.js +4076 -2282
- package/dist/index.mjs +4132 -2366
- package/dist/theme.css +34 -34
- package/package.json +27 -8
- package/dist/index.css.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/hellboy-ds-0.1.2.tgz +0 -0
- package/src/components/badge/Badge.tsx +0 -29
- package/src/components/badge/index.ts +0 -1
- package/src/components/banner/Banner.tsx +0 -48
- package/src/components/banner/banner.css +0 -44
- package/src/components/banner/index.ts +0 -1
- package/src/components/button/button.tsx +0 -127
- package/src/components/button/index.ts +0 -1
- package/src/components/card/card.tsx +0 -57
- package/src/components/card/index.ts +0 -1
- package/src/components/checkbox/Checkbox.tsx +0 -98
- package/src/components/checkbox/index.ts +0 -1
- package/src/components/code-block/code-block.tsx +0 -44
- package/src/components/code-block/index.ts +0 -1
- package/src/components/color-control/color-control.tsx +0 -322
- package/src/components/color-control/index.ts +0 -1
- package/src/components/drag-handle/DragHandle.tsx +0 -78
- package/src/components/drag-handle/index.ts +0 -1
- package/src/components/drawer/drawer.tsx +0 -82
- package/src/components/drawer/index.ts +0 -1
- package/src/components/floating-bar/floating-bar.tsx +0 -52
- package/src/components/floating-bar/index.ts +0 -2
- package/src/components/footer/footer.tsx +0 -28
- package/src/components/footer/index.ts +0 -1
- package/src/components/grid/Grid.tsx +0 -53
- package/src/components/grid/index.ts +0 -1
- package/src/components/header/header.tsx +0 -57
- package/src/components/header/index.ts +0 -1
- package/src/components/icons/icons.tsx +0 -44
- package/src/components/icons/index.ts +0 -1
- package/src/components/index.ts +0 -29
- package/src/components/input/DatePicker.tsx +0 -133
- package/src/components/input/Input.tsx +0 -220
- package/src/components/input/InputDate.tsx +0 -10
- package/src/components/input/InputDateTime.tsx +0 -10
- package/src/components/input/InputEmail.tsx +0 -10
- package/src/components/input/InputField.tsx +0 -137
- package/src/components/input/InputNumber.tsx +0 -10
- package/src/components/input/InputPassword.tsx +0 -10
- package/src/components/input/InputSearch.tsx +0 -10
- package/src/components/input/InputTel.tsx +0 -10
- package/src/components/input/InputText.tsx +0 -10
- package/src/components/input/InputTime.tsx +0 -10
- package/src/components/input/InputUrl.tsx +0 -10
- package/src/components/input/TimePicker.tsx +0 -151
- package/src/components/input/index.ts +0 -11
- package/src/components/layout/Layout.tsx +0 -244
- package/src/components/layout/index.ts +0 -1
- package/src/components/list/List.tsx +0 -159
- package/src/components/list/index.ts +0 -1
- package/src/components/navbar/MenuCategory.tsx +0 -20
- package/src/components/navbar/MenuGroup.tsx +0 -288
- package/src/components/navbar/MenuItem.tsx +0 -65
- package/src/components/navbar/Navbar.tsx +0 -23
- package/src/components/navbar/index.ts +0 -4
- package/src/components/page/index.ts +0 -1
- package/src/components/page/page.tsx +0 -46
- package/src/components/page-index/PageIndex.tsx +0 -275
- package/src/components/page-index/index.ts +0 -1
- package/src/components/popover/index.ts +0 -1
- package/src/components/popover/popover.tsx +0 -199
- package/src/components/radio/Radio.tsx +0 -176
- package/src/components/radio/index.ts +0 -1
- package/src/components/section/index.ts +0 -1
- package/src/components/section/section.tsx +0 -66
- package/src/components/select/Select.tsx +0 -212
- package/src/components/select/index.ts +0 -1
- package/src/components/slider/Slider.tsx +0 -267
- package/src/components/slider/index.ts +0 -1
- package/src/components/switch/index.ts +0 -1
- package/src/components/switch/switch.tsx +0 -99
- package/src/components/table/Table.tsx +0 -147
- package/src/components/table/index.ts +0 -1
- package/src/components/theme-control/index.ts +0 -1
- package/src/components/theme-control/theme-control.tsx +0 -78
- package/src/components/tooltip/index.ts +0 -1
- package/src/components/tooltip/tooltip.tsx +0 -207
- package/src/contexts/NavbarTooltipContext.tsx +0 -48
- package/src/contexts/index.ts +0 -1
- package/src/foundations/motion.md +0 -136
- package/src/index.ts +0 -40
- package/src/style/_shared/field.css +0 -69
- package/src/style/components/color-control/color-control.css +0 -126
- package/src/style/components/drawer/drawer.css +0 -210
- package/src/style/components/floating-bar/floating-bar.css +0 -39
- package/src/style/components/footer/footer.css +0 -108
- package/src/style/components/grid/grid.css +0 -33
- package/src/style/components/header/header.css +0 -44
- package/src/style/components/layout/layout.css +0 -205
- package/src/style/components/navbar/navbar.css +0 -342
- package/src/style/components/popover/popover.css +0 -44
- package/src/style/components/section/section.css +0 -67
- package/src/style/components/select/select.css +0 -143
- package/src/style/components/switch/switch.css +0 -267
- package/src/style/foundations/global.css +0 -316
- package/src/style/foundations/motion.css +0 -164
- package/src/style/foundations/spacing.css +0 -51
- package/src/style/foundations/typography.css +0 -39
- package/src/style/foundations/z-index.css +0 -81
- package/src/style/modes/dark.css +0 -146
- package/src/style/modes/light.css +0 -147
- package/src/style/semantic.css +0 -52
- package/src/style/styles.css +0 -51
- package/src/style/themes/theme.json +0 -37
- package/src/utils/README.md +0 -305
- package/src/utils/USER_PREFERENCES.md +0 -558
- package/src/utils/theme.ts +0 -127
- package/src/utils/user-preferences.ts +0 -577
- package/tsconfig.json +0 -25
- package/tsup.config.ts +0 -52
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/contexts/NavbarTooltipContext.tsx","../src/components/button/button.tsx","../src/components/icons/icons.tsx","../src/components/badge/Badge.tsx","../src/components/checkbox/Checkbox.tsx","../src/components/switch/switch.tsx","../src/components/layout/Layout.tsx","../src/components/drag-handle/DragHandle.tsx","../src/utils/user-preferences.ts","../src/components/page/page.tsx","../src/components/header/header.tsx","../src/components/section/section.tsx","../src/components/code-block/code-block.tsx","../src/components/navbar/Navbar.tsx","../src/components/tooltip/tooltip.tsx","../src/components/navbar/MenuItem.tsx","../src/components/navbar/MenuGroup.tsx","../src/components/popover/popover.tsx","../src/components/navbar/MenuCategory.tsx","../src/components/theme-control/theme-control.tsx","../src/utils/theme.ts","../src/components/card/card.tsx","../src/components/color-control/color-control.tsx","../src/components/slider/Slider.tsx","../src/components/grid/Grid.tsx","../src/components/footer/footer.tsx","../src/components/input/InputText.tsx","../src/components/input/Input.tsx","../src/components/input/InputField.tsx","../src/components/input/DatePicker.tsx","../src/components/input/TimePicker.tsx","../src/components/input/InputEmail.tsx","../src/components/input/InputPassword.tsx","../src/components/input/InputSearch.tsx","../src/components/input/InputTel.tsx","../src/components/input/InputUrl.tsx","../src/components/input/InputNumber.tsx","../src/components/input/InputDate.tsx","../src/components/input/InputTime.tsx","../src/components/input/InputDateTime.tsx","../src/components/list/List.tsx","../src/components/radio/Radio.tsx","../src/components/select/Select.tsx","../src/components/banner/Banner.tsx","../src/components/floating-bar/floating-bar.tsx","../src/components/drawer/drawer.tsx","../src/components/table/Table.tsx","../src/components/page-index/PageIndex.tsx"],"sourcesContent":["import * as React from \"react\";\n\ninterface NavbarTooltipContextType {\n hasOpenPopover: boolean;\n setHasOpenPopover: (open: boolean) => void;\n openPopover: (id: string) => void;\n closePopover: (id: string) => void;\n activePopoverId: string | null;\n}\n\nconst NavbarTooltipContext = React.createContext<NavbarTooltipContextType | undefined>(undefined);\n\nexport const NavbarTooltipProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const [hasOpenPopover, setHasOpenPopover] = React.useState(false);\n const [activePopoverId, setActivePopoverId] = React.useState<string | null>(null);\n\n const openPopover = React.useCallback((id: string) => {\n setActivePopoverId(id);\n setHasOpenPopover(true);\n }, []);\n\n const closePopover = React.useCallback((id: string) => {\n if (activePopoverId === id) {\n setActivePopoverId(null);\n setHasOpenPopover(false);\n }\n }, [activePopoverId]);\n\n return (\n <NavbarTooltipContext.Provider value={{ \n hasOpenPopover, \n setHasOpenPopover, \n openPopover, \n closePopover, \n activePopoverId \n }}>\n {children}\n </NavbarTooltipContext.Provider>\n );\n};\n\nexport const useNavbarTooltip = () => {\n const context = React.useContext(NavbarTooltipContext);\n if (!context) {\n throw new Error('useNavbarTooltip must be used within a NavbarTooltipProvider');\n }\n return context;\n};","import React, { ReactNode } from 'react';\nimport { Button as AriakitButton, ButtonProps as AriakitButtonProps } from '@ariakit/react';\nimport { Icon, IconName } from '../icons';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'ghost';\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport interface ButtonProps extends Omit<AriakitButtonProps, 'children'> {\n /**\n * Visual variant of the button\n * @default 'primary'\n */\n variant?: ButtonVariant;\n\n /**\n * Size of the button\n * @default 'md'\n */\n size?: ButtonSize;\n\n /**\n * Button content\n */\n children?: ReactNode;\n\n /**\n * Whether the button is in a loading state\n * @default false\n */\n isLoading?: boolean;\n\n /**\n * Full width button\n * @default false\n */\n fullWidth?: boolean;\n\n /**\n * Icon to display at the start of the button\n */\n startIcon?: IconName;\n\n /**\n * Icon to display at the end of the button\n */\n endIcon?: IconName;\n\n /**\n * Whether the button should only display an icon (no text)\n * @default false\n */\n iconOnly?: boolean;\n\n /**\n * URL to navigate to when button is clicked (makes it work like a link)\n */\n href?: string;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'md',\n children,\n isLoading = false,\n disabled = false,\n fullWidth = false,\n startIcon,\n endIcon,\n iconOnly = false,\n href,\n className,\n onClick,\n ...props\n },\n ref\n ) => {\n const buttonClasses = [\n 'btn',\n `btn--${variant}`,\n `btn--${size}`,\n fullWidth && 'btn--full-width',\n iconOnly && 'btn--icon-only',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const iconSize = size === 'xs' ? 14 : size === 'sm' ? 16 : size === 'lg' ? 24 : 20;\n\n const buttonContent = (\n <>\n {isLoading && <span className=\"btn__spinner\" />}\n {startIcon && (\n isLoading ? (\n <span className=\"btn__icon-placeholder\" style={{ width: iconSize, height: iconSize }} />\n ) : (\n <Icon name={startIcon} size={iconSize} className=\"btn__icon\" />\n )\n )}\n {!iconOnly && children}\n {endIcon && <Icon name={endIcon} size={iconSize} className=\"btn__icon\" />}\n </>\n );\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (href && !isLoading && !disabled) {\n window.location.href = href;\n }\n onClick?.(e);\n };\n\n return (\n <AriakitButton\n ref={ref}\n disabled={disabled || isLoading}\n className={buttonClasses}\n onClick={handleClick}\n {...props}\n >\n {buttonContent}\n </AriakitButton>\n );\n});\n\nButton.displayName = 'Button';\n","import React from 'react';\nimport { Icon as IconifyIcon } from '@iconify/react';\nimport '../../style/components/icons/icons.css';\n\nexport type IconName = string; // Allow any string for famicons icons\n\nexport interface IconProps {\n name: IconName;\n size?: number;\n className?: string;\n /** Render a skeleton placeholder instead of the real icon (useful while downloading/loading) */\n loading?: boolean;\n /** aria-label for icon-only buttons etc. */\n 'aria-label'?: string;\n}\n\nexport const Icon: React.FC<IconProps> = ({ name, size = 24, className, loading = false, ...rest }) => {\n // If name already has famicons: prefix, use it as-is, otherwise add the prefix\n const iconName = name.startsWith('famicons:') ? name : `famicons:${name}`;\n\n const classes = ['icon', className].filter(Boolean).join(' ');\n\n if (loading) {\n const style: React.CSSProperties = { width: size, height: size };\n return (\n <span\n className={`${classes} icon--skeleton`}\n style={style}\n aria-hidden={rest['aria-label'] ? 'false' : 'true'}\n {...(rest['aria-label'] ? { 'aria-label': rest['aria-label'] } : {})}\n />\n );\n }\n\n return (\n <IconifyIcon\n icon={iconName}\n width={size}\n height={size}\n className={classes}\n {...rest}\n />\n );\n};","import * as React from 'react';\nimport '../../style/components/badge/badge.css';\n\nexport type BadgeVariant = 'primary' | 'secondary' | 'tertiary' | 'accent' | 'success' | 'warning' | 'error' | 'info';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n children: React.ReactNode;\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = 'primary',\n size = 'md',\n className = '',\n children,\n ...props\n}) => {\n const classes = ['badge', `badge--${variant}`, `badge--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import React from 'react';\nimport { Checkbox as AriakitCheckbox, CheckboxProps as AriakitCheckboxProps } from '@ariakit/react';\nimport { Icon } from '../icons';\n\nexport type CheckboxSize = 'sm' | 'md' | 'lg';\n\nexport interface CheckboxProps extends Omit<AriakitCheckboxProps, 'children' | 'size'> {\n /**\n * Size of the checkbox\n * @default 'md'\n */\n size?: CheckboxSize;\n\n /**\n * Label text for the checkbox\n */\n label?: React.ReactNode;\n\n /**\n * Error message to display below the checkbox\n */\n error?: string;\n\n /**\n * Helper text to display below the checkbox\n */\n helperText?: string;\n\n /**\n * Whether the checkbox is in an indeterminate state\n * @default false\n */\n indeterminate?: boolean;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n size = 'md',\n label,\n error,\n helperText,\n indeterminate = false,\n disabled = false,\n className,\n checked,\n ...props\n },\n ref\n ) => {\n const checkboxClasses = [\n 'checkbox',\n `checkbox--${size}`,\n error && 'checkbox--error',\n disabled && 'checkbox--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const iconSize = size === 'sm' ? 14 : size === 'lg' ? 20 : 16;\n\n // Determine checked state for icon display\n const isChecked = checked === true;\n const isIndeterminate = indeterminate && !isChecked;\n\n return (\n <div className={checkboxClasses}>\n <label className=\"checkbox__container\">\n <AriakitCheckbox\n ref={ref}\n checked={checked}\n disabled={disabled}\n className=\"checkbox__input\"\n {...props}\n />\n <span className=\"checkbox__box\">\n {isChecked && (\n <Icon name=\"checkmark-sharp\" size={iconSize} className=\"checkbox__icon\" />\n )}\n {isIndeterminate && (\n <Icon name=\"minus\" size={iconSize} className=\"checkbox__icon\" />\n )}\n </span>\n {label && <span className=\"checkbox__label\">{label}</span>}\n </label>\n {(error || helperText) && (\n <div className=\"checkbox__feedback\">\n {error && <span className=\"checkbox__error-text\">{error}</span>}\n {!error && helperText && <span className=\"checkbox__helper-text\">{helperText}</span>}\n </div>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n","import React from 'react';\nimport { Icon } from '../icons';\nimport '../../style/components/switch/switch.css';\n\nexport type SwitchSize = 'sm' | 'md' | 'lg';\n\nexport interface SwitchProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /**\n * Size of the switch\n * @default 'md'\n */\n size?: SwitchSize;\n\n /**\n * Label text for the switch\n */\n label?: React.ReactNode;\n\n /**\n * Icon to display when switch is ON\n */\n onIcon?: string;\n\n /**\n * Icon to display when switch is OFF\n */\n offIcon?: string;\n\n /**\n * Error message to display below the switch\n */\n error?: string;\n\n /**\n * Helper text to display below the switch\n */\n helperText?: string;\n}\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n size = 'md',\n label,\n onIcon,\n offIcon,\n error,\n helperText,\n disabled = false,\n className,\n checked,\n ...props\n },\n ref\n ) => {\n const switchClasses = [\n 'switch',\n `switch--${size}`,\n checked && 'switch--checked',\n disabled && 'switch--disabled',\n error && 'switch--error',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className=\"switch__wrapper\">\n <label className=\"switch__label\">\n <input\n type=\"checkbox\"\n ref={ref}\n checked={checked}\n disabled={disabled}\n className=\"switch__input\"\n {...props}\n />\n <span className={switchClasses}>\n <span className=\"switch__track\">\n <span className=\"switch__thumb\">\n {onIcon && <Icon name={onIcon} size={16} className=\"switch__icon switch__icon--on\" />}\n {offIcon && <Icon name={offIcon} size={16} className=\"switch__icon switch__icon--off\" />}\n </span>\n </span>\n </span>\n {label && <span className=\"switch__text\">{label}</span>}\n </label>\n {(error || helperText) && (\n <div className=\"switch__message\">\n {error && <span className=\"switch__error-text\">{error}</span>}\n {helperText && !error && <span className=\"switch__helper-text\">{helperText}</span>}\n </div>\n )}\n </div>\n );\n }\n);\n\nSwitch.displayName = 'Switch';","import * as React from \"react\";\nimport { DragHandle } from \"../drag-handle\";\nimport { getPreference, setPreference } from \"../../utils/user-preferences\";\nimport \"../../style/components/layout/layout.css\";\n\nexport type LayoutVariant = \"single\" | \"stacked\" | \"sidebar-main-sidebar\";\n\nexport interface LayoutProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: LayoutVariant;\n header?: React.ReactNode;\n footer?: React.ReactNode;\n sidebarLeft?: React.ReactNode;\n sidebarRight?: React.ReactNode;\n bottomBar?: React.ReactNode;\n resizable?: boolean;\n}\n\nexport const Layout: React.FC<LayoutProps> = ({\n variant = \"stacked\",\n header,\n footer,\n sidebarLeft,\n sidebarRight,\n bottomBar,\n resizable = false,\n children,\n className = \"\",\n ...props\n}) => {\n const classes = [\"layout\", `layout--${variant}`, className].filter(Boolean).join(\" \");\n\n // Navbar constants\n const NAVBAR_COLLAPSED_WIDTH = 72;\n const NAVBAR_EXPAND_THRESHOLD = 210;\n const NAVBAR_MIN_PERSIST_WIDTH = 211; // 210 + 1 to avoid auto-collapse threshold\n const NAVBAR_MAX_WIDTH = 600;\n\n const hasSidebarLeft = sidebarLeft != null;\n const hasSidebarRight = sidebarRight != null;\n const sidebarLeftIsNavbar = hasSidebarLeft && React.isValidElement(sidebarLeft) && Boolean((sidebarLeft as any).props?.isNavbar);\n const columnCount = [hasSidebarLeft, true, hasSidebarRight].filter(Boolean).length;\n const shouldShowResizers = resizable && columnCount >= 2;\n\n // State for sidebar widths with preference persistence\n const [leftSidebarWidth, setLeftSidebarWidth] = React.useState<number>(() => {\n const v = getPreference<number>('layout.leftSidebarWidth', 280);\n return typeof v === 'number' ? v : 280;\n });\n // read preferred expanded width (user configured). We keep this separate\n // from the current effective width so collapsing (72) doesn't overwrite it.\n const preferredLeftSidebarWidth = React.useMemo<number>(() => {\n const v = getPreference<number>('layout.leftSidebarPreferredWidth', leftSidebarWidth);\n // Only return valid preferred widths (>= 211px)\n if (typeof v === 'number' && v >= NAVBAR_MIN_PERSIST_WIDTH) {\n return v;\n }\n // Fallback to a safe default\n return Math.max(NAVBAR_MIN_PERSIST_WIDTH, leftSidebarWidth);\n }, [leftSidebarWidth]);\n const [rightSidebarWidth, setRightSidebarWidth] = React.useState<number>(() => {\n const v = getPreference<number>('layout.rightSidebarWidth', 300);\n return typeof v === 'number' ? v : 300;\n });\n\n const clampLeftWidth = React.useCallback((width: number) => {\n console.log('clampLeftWidth called with:', width);\n // allow collapsed width 72; otherwise enforce expanded min 72 and max 600\n // Remove the 128px minimum limitation to allow smoother transitions\n if (width <= NAVBAR_COLLAPSED_WIDTH) {\n console.log('Returning 72 (collapsed)');\n return NAVBAR_COLLAPSED_WIDTH;\n }\n const result = Math.max(NAVBAR_COLLAPSED_WIDTH, Math.min(NAVBAR_MAX_WIDTH, Math.round(width)));\n console.log('Returning clamped result:', result);\n return result;\n }, []);\n\n const updateLeftSidebarWidth = React.useCallback((width: number) => {\n console.log('updateLeftSidebarWidth called with:', width);\n const newWidth = clampLeftWidth(width);\n console.log('clampLeftWidth result:', newWidth);\n setLeftSidebarWidth(newWidth);\n // Only persist if width is valid (>= 211px)\n if (newWidth >= NAVBAR_MIN_PERSIST_WIDTH) {\n setPreference('layout.leftSidebarWidth', newWidth);\n }\n }, [clampLeftWidth]);\n\n const handleLeftResize = React.useCallback((delta: number) => {\n setLeftSidebarWidth((prev = 300) => {\n const newWidthRaw = prev + delta;\n const newWidth = clampLeftWidth(newWidthRaw);\n \n // Only persist widths >= 211px to avoid storing invalid values that would cause auto-collapse\n if (newWidth >= NAVBAR_MIN_PERSIST_WIDTH) {\n setPreference('layout.leftSidebarWidth', newWidth);\n }\n\n // Auto-collapse during drag only if the delta is significant (avoid micro-movements)\n if (sidebarLeftIsNavbar && Math.abs(delta) > 5 && newWidth < NAVBAR_EXPAND_THRESHOLD) {\n setPreference('layout.leftSidebarWidth', NAVBAR_COLLAPSED_WIDTH);\n return NAVBAR_COLLAPSED_WIDTH;\n }\n\n // when user resizes to expanded widths (>=211) we also update the preferred width\n if (newWidth >= NAVBAR_MIN_PERSIST_WIDTH) {\n setPreference('layout.leftSidebarPreferredWidth', newWidth);\n }\n\n return newWidth;\n });\n }, [clampLeftWidth, sidebarLeftIsNavbar]);\n\n const handleLeftResizeEnd = React.useCallback(() => {\n setLeftSidebarWidth((currentWidth) => {\n if (currentWidth < NAVBAR_EXPAND_THRESHOLD) {\n // collapse to navbar width (72px) when below 210px\n const collapsed = NAVBAR_COLLAPSED_WIDTH;\n setPreference('layout.leftSidebarWidth', collapsed);\n return collapsed;\n }\n return currentWidth;\n });\n }, []);\n\n const handleRightResize = React.useCallback((delta: number) => {\n setRightSidebarWidth((prev = 300) => {\n const newWidth = Math.max(200, Math.min(600, prev - delta));\n setPreference('layout.rightSidebarWidth', newWidth);\n return newWidth;\n });\n }, []);\n\n if (variant === \"single\") {\n return (\n <div className={classes} {...props}>\n <div className=\"layout__container\">\n <main className=\"layout__main\">\n {header && <header className=\"layout__header\">{header}</header>}\n {children}\n {footer && <footer className=\"layout__footer\">{footer}</footer>}\n </main>\n {bottomBar && <div className=\"layout__bottom-bar\">{bottomBar}</div>}\n </div>\n </div>\n );\n }\n\n if (variant === \"stacked\") {\n return (\n <div className={classes} {...props}>\n <div className=\"layout__container\">\n <main className=\"layout__main\">\n {header && <header className=\"layout__header\">{header}</header>}\n {children}\n {footer && <footer className=\"layout__footer\">{footer}</footer>}\n </main>\n {bottomBar && <div className=\"layout__bottom-bar\">{bottomBar}</div>}\n </div>\n </div>\n );\n }\n\n if (variant === \"sidebar-main-sidebar\") {\n return (\n <div className={classes} {...props}>\n {hasSidebarLeft && (\n <>\n <aside\n className=\"layout__sidebar layout__sidebar--left\"\n style={{ width: leftSidebarWidth }}\n >\n {React.isValidElement(sidebarLeft)\n ? React.cloneElement(sidebarLeft as React.ReactElement, {\n sidebarWidth: leftSidebarWidth,\n setSidebarWidth: updateLeftSidebarWidth,\n preferredSidebarWidth: preferredLeftSidebarWidth,\n setPreferredSidebarWidth: (w: number) => {\n const newW = clampLeftWidth(w);\n // Only persist preferred widths >= 211px\n if (newW >= NAVBAR_MIN_PERSIST_WIDTH) {\n setPreference('layout.leftSidebarPreferredWidth', newW);\n }\n // if currently expanded, also apply\n if (leftSidebarWidth > NAVBAR_COLLAPSED_WIDTH) {\n setLeftSidebarWidth(newW);\n setPreference('layout.leftSidebarWidth', newW);\n }\n },\n })\n : sidebarLeft}\n </aside>\n {shouldShowResizers && (\n <DragHandle\n orientation=\"vertical\"\n onResize={handleLeftResize}\n onResizeEnd={handleLeftResizeEnd}\n />\n )}\n </>\n )}\n <div className=\"layout__container\">\n <main className=\"layout__main\">\n {header && <header className=\"layout__header\">{header}</header>}\n {children}\n {footer && <footer className=\"layout__footer\">{footer}</footer>}\n </main>\n {bottomBar && <div className=\"layout__bottom-bar\">{bottomBar}</div>}\n </div>\n {hasSidebarRight && (\n <>\n {shouldShowResizers && (\n <DragHandle\n orientation=\"vertical\"\n onResize={handleRightResize}\n />\n )}\n <aside\n className=\"layout__sidebar layout__sidebar--right\"\n style={{ width: rightSidebarWidth }}\n >\n {React.isValidElement(sidebarRight)\n ? React.cloneElement(sidebarRight as React.ReactElement, {\n sidebarWidth: rightSidebarWidth,\n setSidebarWidth: (w: number) => {\n const newW = Math.max(200, Math.min(600, w));\n setRightSidebarWidth(newW);\n setPreference('layout.rightSidebarWidth', newW);\n },\n })\n : sidebarRight}\n </aside>\n </>\n )}\n </div>\n );\n }\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n};","import React, { useState, useRef, useCallback } from 'react';\nimport '../../style/components/drag-handle/drag-handle.css';\n\nexport interface DragHandleProps {\n onResize: (delta: number) => void;\n onResizeEnd?: () => void;\n orientation?: 'vertical' | 'horizontal';\n className?: string;\n}\n\nexport const DragHandle: React.FC<DragHandleProps> = ({\n onResize,\n onResizeEnd,\n orientation = 'vertical',\n className = '',\n}) => {\n const [isDragging, setIsDragging] = useState(false);\n const dragHandleRef = useRef<HTMLDivElement>(null);\n const startPosRef = useRef<number>(0);\n\n const handleMouseDown = useCallback((e: React.MouseEvent) => {\n setIsDragging(true);\n startPosRef.current = orientation === 'vertical' ? e.clientX : e.clientY;\n e.preventDefault();\n }, [orientation]);\n\n const handleMouseMove = useCallback((e: MouseEvent) => {\n if (!isDragging) return;\n\n const currentPos = orientation === 'vertical' ? e.clientX : e.clientY;\n const delta = currentPos - startPosRef.current;\n onResize(delta);\n startPosRef.current = currentPos;\n }, [isDragging, onResize, orientation]);\n\n const handleMouseUp = useCallback(() => {\n setIsDragging(false);\n onResizeEnd?.();\n }, [onResizeEnd]);\n\n React.useEffect(() => {\n if (isDragging) {\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n document.body.style.cursor = orientation === 'vertical' ? 'col-resize' : 'row-resize';\n document.body.style.userSelect = 'none';\n } else {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n }\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n };\n }, [isDragging, handleMouseMove, handleMouseUp, orientation]);\n\n const classes = [\n 'drag-handle',\n `drag-handle--${orientation}`,\n isDragging && 'drag-handle--dragging',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n <div\n ref={dragHandleRef}\n className={classes}\n onMouseDown={handleMouseDown}\n >\n <div className=\"drag-handle__indicator\" />\n </div>\n );\n};","/**\n * User Preferences Utility\n * \n * A comprehensive user preference management system for the Hellboy Design System.\n * This utility provides a practical, opinionated solution for storing and retrieving\n * user preferences using localStorage with optional IndexedDB fallback.\n * \n * Philosophy:\n * The Hellboy Design System aims to maximize development velocity by providing\n * complete, practical solutions rather than staying purely agnostic. While many\n * design systems focus solely on visual components, we believe in delivering\n * utilities that solve common real-world problems developers face.\n * \n * This preference system is designed to be:\n * - Easy to use with minimal configuration\n * - Type-safe with TypeScript\n * - Persistent across sessions\n * - Extensible for custom preferences\n * - Framework-agnostic (works with React, Vue, vanilla JS, etc.)\n * \n * Supported preference categories:\n * - Theme preferences (light/dark mode, custom colors)\n * - Layout preferences (sidebar widths, panel sizes)\n * - Component states (drawer positions, table column widths)\n * - User-specific settings (language, timezone, etc.)\n */\n\n/**\n * Storage backend types\n */\ntype StorageBackend = 'localStorage' | 'indexedDB';\n\n/**\n * Base preference key type for type safety\n */\ntype PreferenceKey = string;\n\n/**\n * User preferences interface\n * Extend this interface to add custom preference types\n */\nexport interface UserPreferences {\n // Theme preferences\n theme?: 'light' | 'dark';\n colorConfig?: {\n primaryHue?: number;\n primarySaturation?: number;\n primaryLightness?: number;\n secondaryHue?: number;\n secondarySaturation?: number;\n secondaryLightness?: number;\n accentHue?: number;\n accentSaturation?: number;\n accentLightness?: number;\n successHue?: number;\n successSaturation?: number;\n successLightness?: number;\n warningHue?: number;\n warningSaturation?: number;\n warningLightness?: number;\n errorHue?: number;\n errorSaturation?: number;\n errorLightness?: number;\n infoHue?: number;\n infoSaturation?: number;\n infoLightness?: number;\n };\n\n // Layout preferences\n layout?: {\n leftSidebarWidth?: number;\n rightSidebarWidth?: number;\n bottomBarHeight?: number;\n navbarCollapsed?: boolean;\n };\n\n // Component-specific preferences\n components?: {\n [componentName: string]: {\n [key: string]: any;\n };\n };\n\n // Custom user settings\n custom?: {\n [key: string]: any;\n };\n}\n\n/**\n * Storage configuration\n */\ninterface StorageConfig {\n backend: StorageBackend;\n prefix: string;\n dbName?: string;\n storeName?: string;\n}\n\n/**\n * Default storage configuration\n */\nconst DEFAULT_CONFIG: StorageConfig = {\n backend: 'localStorage',\n prefix: 'hellboy-ds',\n dbName: 'hellboy-ds-prefs',\n storeName: 'preferences',\n};\n\n/**\n * Current storage configuration\n */\nlet config: StorageConfig = { ...DEFAULT_CONFIG };\n\n/**\n * Configure the preference storage system\n * Call this once at app initialization if you need custom configuration\n * \n * @param userConfig - Custom storage configuration\n * \n * @example\n * ```ts\n * import { configurePreferences } from '@hellboy/ds';\n * \n * configurePreferences({\n * backend: 'localStorage',\n * prefix: 'my-app'\n * });\n * ```\n */\nexport const configurePreferences = (userConfig: Partial<StorageConfig>): void => {\n config = { ...config, ...userConfig };\n};\n\n/**\n * Get full storage key with prefix\n */\nconst getStorageKey = (key: PreferenceKey): string => {\n return `${config.prefix}:${key}`;\n};\n\n/**\n * Check if localStorage is available\n */\nconst isLocalStorageAvailable = (): boolean => {\n try {\n const test = '__storage_test__';\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * IndexedDB helper (for future expansion)\n * Currently a placeholder - localStorage is the primary backend\n */\nclass IndexedDBStore {\n private db: IDBDatabase | null = null;\n\n async init(): Promise<void> {\n if (typeof window === 'undefined' || !window.indexedDB) {\n throw new Error('IndexedDB not available');\n }\n\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(config.dbName!, 1);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n this.db = request.result;\n resolve();\n };\n\n request.onupgradeneeded = (event) => {\n const db = (event.target as IDBOpenDBRequest).result;\n if (!db.objectStoreNames.contains(config.storeName!)) {\n db.createObjectStore(config.storeName!, { keyPath: 'key' });\n }\n };\n });\n }\n\n async get(key: string): Promise<any> {\n if (!this.db) await this.init();\n return new Promise((resolve, reject) => {\n const transaction = this.db!.transaction([config.storeName!], 'readonly');\n const store = transaction.objectStore(config.storeName!);\n const request = store.get(key);\n\n request.onsuccess = () => resolve(request.result?.value);\n request.onerror = () => reject(request.error);\n });\n }\n\n async set(key: string, value: any): Promise<void> {\n if (!this.db) await this.init();\n return new Promise((resolve, reject) => {\n const transaction = this.db!.transaction([config.storeName!], 'readwrite');\n const store = transaction.objectStore(config.storeName!);\n const request = store.put({ key, value });\n\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n\n async remove(key: string): Promise<void> {\n if (!this.db) await this.init();\n return new Promise((resolve, reject) => {\n const transaction = this.db!.transaction([config.storeName!], 'readwrite');\n const store = transaction.objectStore(config.storeName!);\n const request = store.delete(key);\n\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n\n async clear(): Promise<void> {\n if (!this.db) await this.init();\n return new Promise((resolve, reject) => {\n const transaction = this.db!.transaction([config.storeName!], 'readwrite');\n const store = transaction.objectStore(config.storeName!);\n const request = store.clear();\n\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n}\n\n/**\n * Singleton IndexedDB instance\n */\nconst indexedDBStore = new IndexedDBStore();\n\n/**\n * Get a preference value\n * \n * @param key - Preference key\n * @param defaultValue - Default value if preference doesn't exist\n * @returns The preference value or default value\n * \n * @example\n * ```ts\n * import { getPreference } from '@hellboy/ds';\n * \n * const theme = getPreference('theme', 'light');\n * const sidebarWidth = getPreference('layout.leftSidebarWidth', 280);\n * ```\n */\nexport const getPreference = <T = any>(\n key: PreferenceKey,\n defaultValue?: T\n): T | undefined => {\n try {\n if (config.backend === 'localStorage' && isLocalStorageAvailable()) {\n const stored = localStorage.getItem(getStorageKey(key));\n if (stored !== null) {\n return JSON.parse(stored) as T;\n }\n }\n return defaultValue;\n } catch (error) {\n console.warn(`Failed to get preference \"${key}\":`, error);\n return defaultValue;\n }\n};\n\n/**\n * Async version for IndexedDB (future use)\n */\nexport const getPreferenceAsync = async <T = any>(\n key: PreferenceKey,\n defaultValue?: T\n): Promise<T | undefined> => {\n try {\n if (config.backend === 'indexedDB') {\n const value = await indexedDBStore.get(getStorageKey(key));\n return value !== undefined ? value : defaultValue;\n }\n return getPreference(key, defaultValue);\n } catch (error) {\n console.warn(`Failed to get preference \"${key}\":`, error);\n return defaultValue;\n }\n};\n\n/**\n * Set a preference value\n * \n * @param key - Preference key\n * @param value - Preference value to store\n * \n * @example\n * ```ts\n * import { setPreference } from '@hellboy/ds';\n * \n * setPreference('theme', 'dark');\n * setPreference('layout.leftSidebarWidth', 320);\n * ```\n */\nexport const setPreference = <T = any>(key: PreferenceKey, value: T): void => {\n try {\n if (config.backend === 'localStorage' && isLocalStorageAvailable()) {\n localStorage.setItem(getStorageKey(key), JSON.stringify(value));\n }\n } catch (error) {\n console.warn(`Failed to set preference \"${key}\":`, error);\n }\n};\n\n/**\n * Async version for IndexedDB (future use)\n */\nexport const setPreferenceAsync = async <T = any>(\n key: PreferenceKey,\n value: T\n): Promise<void> => {\n try {\n if (config.backend === 'indexedDB') {\n await indexedDBStore.set(getStorageKey(key), value);\n } else {\n setPreference(key, value);\n }\n } catch (error) {\n console.warn(`Failed to set preference \"${key}\":`, error);\n }\n};\n\n/**\n * Remove a preference\n * \n * @param key - Preference key to remove\n * \n * @example\n * ```ts\n * import { removePreference } from '@hellboy/ds';\n * \n * removePreference('layout.leftSidebarWidth');\n * ```\n */\nexport const removePreference = (key: PreferenceKey): void => {\n try {\n if (config.backend === 'localStorage' && isLocalStorageAvailable()) {\n localStorage.removeItem(getStorageKey(key));\n }\n } catch (error) {\n console.warn(`Failed to remove preference \"${key}\":`, error);\n }\n};\n\n/**\n * Async version for IndexedDB (future use)\n */\nexport const removePreferenceAsync = async (key: PreferenceKey): Promise<void> => {\n try {\n if (config.backend === 'indexedDB') {\n await indexedDBStore.remove(getStorageKey(key));\n } else {\n removePreference(key);\n }\n } catch (error) {\n console.warn(`Failed to remove preference \"${key}\":`, error);\n }\n};\n\n/**\n * Clear all preferences\n * \n * @example\n * ```ts\n * import { clearPreferences } from '@hellboy/ds';\n * \n * clearPreferences(); // Removes all hellboy-ds preferences\n * ```\n */\nexport const clearPreferences = (): void => {\n try {\n if (config.backend === 'localStorage' && isLocalStorageAvailable()) {\n const prefix = `${config.prefix}:`;\n const keysToRemove: string[] = [];\n\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(prefix)) {\n keysToRemove.push(key);\n }\n }\n\n keysToRemove.forEach(key => localStorage.removeItem(key));\n }\n } catch (error) {\n console.warn('Failed to clear preferences:', error);\n }\n};\n\n/**\n * Async version for IndexedDB (future use)\n */\nexport const clearPreferencesAsync = async (): Promise<void> => {\n try {\n if (config.backend === 'indexedDB') {\n await indexedDBStore.clear();\n } else {\n clearPreferences();\n }\n } catch (error) {\n console.warn('Failed to clear preferences:', error);\n }\n};\n\n/**\n * Get all preferences as an object\n * \n * @returns Object containing all stored preferences\n * \n * @example\n * ```ts\n * import { getAllPreferences } from '@hellboy/ds';\n * \n * const allPrefs = getAllPreferences();\n * console.log(allPrefs);\n * // { 'theme': 'dark', 'layout.leftSidebarWidth': 320, ... }\n * ```\n */\nexport const getAllPreferences = (): Record<string, any> => {\n const preferences: Record<string, any> = {};\n\n try {\n if (config.backend === 'localStorage' && isLocalStorageAvailable()) {\n const prefix = `${config.prefix}:`;\n\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(prefix)) {\n const prefKey = key.substring(prefix.length);\n const value = localStorage.getItem(key);\n if (value !== null) {\n try {\n preferences[prefKey] = JSON.parse(value);\n } catch {\n preferences[prefKey] = value;\n }\n }\n }\n }\n }\n } catch (error) {\n console.warn('Failed to get all preferences:', error);\n }\n\n return preferences;\n};\n\n/**\n * Export preferences as JSON\n * Useful for backup or migration\n * \n * @returns JSON string of all preferences\n * \n * @example\n * ```ts\n * import { exportPreferences } from '@hellboy/ds';\n * \n * const json = exportPreferences();\n * // Download or save to file\n * const blob = new Blob([json], { type: 'application/json' });\n * const url = URL.createObjectURL(blob);\n * ```\n */\nexport const exportPreferences = (): string => {\n const prefs = getAllPreferences();\n return JSON.stringify(prefs, null, 2);\n};\n\n/**\n * Import preferences from JSON\n * Useful for restoring from backup\n * \n * @param json - JSON string of preferences to import\n * @param merge - Whether to merge with existing preferences (default: false)\n * \n * @example\n * ```ts\n * import { importPreferences } from '@hellboy/ds';\n * \n * const json = '{\"theme\":\"dark\",\"layout.leftSidebarWidth\":320}';\n * importPreferences(json, true); // Merge with existing\n * ```\n */\nexport const importPreferences = (json: string, merge: boolean = false): void => {\n try {\n const prefs = JSON.parse(json);\n\n if (!merge) {\n clearPreferences();\n }\n\n Object.entries(prefs).forEach(([key, value]) => {\n setPreference(key, value);\n });\n } catch (error) {\n console.warn('Failed to import preferences:', error);\n }\n};\n\n/**\n * Create a preference namespace for better organization\n * Returns scoped get/set functions\n * \n * @param namespace - Namespace prefix\n * \n * @example\n * ```ts\n * import { createPreferenceNamespace } from '@hellboy/ds';\n * \n * const layoutPrefs = createPreferenceNamespace('layout');\n * layoutPrefs.set('sidebarWidth', 300);\n * const width = layoutPrefs.get('sidebarWidth', 280);\n * ```\n */\nexport const createPreferenceNamespace = (namespace: string) => {\n const getKey = (key: string) => `${namespace}.${key}`;\n\n return {\n get: <T = any>(key: string, defaultValue?: T) =>\n getPreference<T>(getKey(key), defaultValue),\n set: <T = any>(key: string, value: T) =>\n setPreference(getKey(key), value),\n remove: (key: string) => removePreference(getKey(key)),\n clear: () => {\n const prefs = getAllPreferences();\n const prefix = `${namespace}.`;\n Object.keys(prefs)\n .filter(key => key.startsWith(prefix))\n .forEach(key => removePreference(key));\n },\n };\n};\n\n/**\n * React hook for preference management (optional, for React users)\n * Import this separately to avoid bundling React in non-React projects\n * \n * Note: This is a reference implementation. For production use in React,\n * consider creating a dedicated hook file with proper React imports.\n * \n * @example\n * ```tsx\n * // In a React component\n * import { useState, useEffect } from 'react';\n * import { getPreference, setPreference } from '@hellboy/ds';\n * \n * function usePreference<T>(key: string, defaultValue: T) {\n * const [value, setValue] = useState<T>(() => \n * getPreference(key, defaultValue) ?? defaultValue\n * );\n * \n * const updateValue = (newValue: T) => {\n * setValue(newValue);\n * setPreference(key, newValue);\n * };\n * \n * return [value, updateValue] as const;\n * }\n * \n * // Usage\n * function MyComponent() {\n * const [theme, setTheme] = usePreference('theme', 'light');\n * return <button onClick={() => setTheme('dark')}>Switch to Dark</button>;\n * }\n * ```\n */\n","import React, { ReactNode } from 'react';\n\nexport type PageWidth = 'full' | 'wide' | 'medium' | 'narrow';\n\nexport interface PageProps {\n /**\n * Page content width\n * - full: 100% width\n * - wide: 1400px max\n * - medium: 1200px max (default)\n * - narrow: 800px max\n * @default 'medium'\n */\n width?: PageWidth;\n\n /**\n * Page content\n */\n children: ReactNode;\n\n /**\n * Custom class name\n */\n className?: string;\n}\n\n/**\n * Page Component\n * Main content container with responsive width control\n * Use inside Layout's children for consistent content sizing\n */\nexport const Page: React.FC<PageProps> = ({ width = 'medium', children, className }) => {\n const pageClasses = [\n 'page',\n `page--${width}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <main className={pageClasses}>\n {children}\n </main>\n );\n};\n","import React, { ReactNode, useMemo } from 'react';\n\nexport interface HeaderProps {\n /**\n * Header title\n */\n title?: ReactNode;\n\n /**\n * Header subtitle/description\n */\n subtitle?: ReactNode;\n\n /**\n * Header content - overrides title/subtitle\n */\n children?: ReactNode;\n\n /**\n * Custom class name\n */\n className?: string;\n}\n\n/**\n * Header component for page headers\n * Displays title, subtitle, or custom content\n */\nexport const Header: React.FC<HeaderProps> = ({ title, subtitle, children, className }) => {\n // Generate ID from title for page index navigation\n const headerId = useMemo(() => {\n if (typeof title === 'string' && title.trim()) {\n return title\n .toLowerCase()\n .replace(/[^\\w\\s-]/g, '') // Remove special characters\n .replace(/\\s+/g, '-') // Replace spaces with hyphens\n .replace(/-+/g, '-') // Replace multiple hyphens with single\n .trim();\n }\n return undefined;\n }, [title]);\n\n return (\n <header className={`header ${className || ''}`} id={headerId}>\n <div className=\"header__container\">\n {children ? (\n children\n ) : (\n <>\n {title && <h1 className=\"header__title\">{title}</h1>}\n {subtitle && <p className=\"header__subtitle\">{subtitle}</p>}\n </>\n )}\n </div>\n </header>\n );\n};\n","import React, { ReactNode, useMemo } from 'react';\n\nexport type SectionSize = 'sm' | 'md' | 'lg';\n\nexport interface SectionProps {\n /**\n * Section title\n */\n title?: ReactNode;\n\n /**\n * Section content\n */\n children: ReactNode;\n\n /**\n * Section size/padding\n * @default 'md'\n */\n size?: SectionSize;\n\n /**\n * Custom class name\n */\n className?: string;\n}\n\n/**\n * Section component for content areas\n * Provides consistent spacing and styling for content sections\n */\nexport const Section: React.FC<SectionProps> = ({ title, children, size = 'md', className }) => {\n const sectionClasses = [\n 'section',\n size !== 'md' && `section--${size}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Generate ID from title for page index navigation\n const sectionId = useMemo(() => {\n if (typeof title === 'string' && title.trim()) {\n return title\n .toLowerCase()\n .replace(/[^\\w\\s-]/g, '') // Remove special characters\n .replace(/\\s+/g, '-') // Replace spaces with hyphens\n .replace(/-+/g, '-') // Replace multiple hyphens with single\n .trim();\n }\n return undefined;\n }, [title]);\n\n const titleText = typeof title === 'string' ? title : undefined;\n\n return (\n <section\n className={sectionClasses}\n id={sectionId}\n data-section-title={titleText}\n >\n {title && <h2 className=\"section__title\">{title}</h2>}\n <div className=\"section__content\">{children}</div>\n </section>\n );\n};\n","import React, { ReactNode } from 'react';\n\nexport type CodeBlockVariant = 'block' | 'inline';\n\nexport interface CodeBlockProps {\n /**\n * Code content\n */\n children: ReactNode;\n\n /**\n * Variant of the code block\n * @default 'block'\n */\n variant?: CodeBlockVariant;\n\n /**\n * Custom class name\n */\n className?: string;\n}\n\n/**\n * CodeBlock component for displaying code snippets\n */\nexport const CodeBlock: React.FC<CodeBlockProps> = ({ children, variant = 'block', className }) => {\n const classes = [\n 'code-block',\n variant === 'inline' && 'code-block--inline',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n if (variant === 'inline') {\n return <code className={classes}>{children}</code>;\n }\n\n return (\n <pre className={classes}>\n <code>{children}</code>\n </pre>\n );\n};","import * as React from \"react\";\n\nexport interface NavbarProps {\n children: React.ReactNode;\n className?: string;\n /** Default width (px) the navbar should assume when expanded and no user preference exists */\n defaultExpandedWidth?: number;\n}\n\nexport const Navbar: React.FC<NavbarProps> = ({\n children,\n className = \"\"\n}) => {\n const classes = [\"navbar\", className].filter(Boolean).join(\" \");\n\n return (\n <nav className={classes} role=\"navigation\" aria-label=\"Main navigation\">\n <div className=\"navbar__content\">\n {children}\n </div>\n </nav>\n );\n};","import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport \"../../style/components/tooltip/tooltip.css\";\n\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n placement?: 'top' | 'bottom' | 'left' | 'right';\n delay?: number;\n disabled?: boolean;\n}\n\ntype ResolvedPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n placement = 'top',\n delay = 0,\n disabled = false\n}) => {\n const [isVisible, setIsVisible] = React.useState(false);\n const [tooltipStyle, setTooltipStyle] = React.useState<React.CSSProperties>({});\n const [resolvedPlacement, setResolvedPlacement] = React.useState<ResolvedPlacement>(placement);\n\n const triggerRef = React.useRef<HTMLDivElement>(null);\n const tooltipRef = React.useRef<HTMLDivElement>(null);\n const timeoutRef = React.useRef<number>();\n\n // Calcula posição com ajuste automático baseado no espaço disponível\n React.useEffect(() => {\n if (!isVisible || !triggerRef.current || !tooltipRef.current) {\n return;\n }\n\n const updatePosition = () => {\n if (!triggerRef.current || !tooltipRef.current) {\n console.log('Tooltip refs not ready:', { trigger: !!triggerRef.current, tooltip: !!tooltipRef.current });\n return;\n }\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n \n // Verifica se o tooltip tem dimensões válidas\n if (tooltipRect.width === 0 || tooltipRect.height === 0) {\n // Tenta novamente após um pequeno delay\n setTimeout(updatePosition, 10);\n return;\n }\n const gap = 8;\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Calcula espaço disponível em cada direção\n const spaceTop = triggerRect.top;\n const spaceBottom = viewportHeight - triggerRect.bottom;\n const spaceLeft = triggerRect.left;\n const spaceRight = viewportWidth - triggerRect.right;\n\n // Determina o melhor placement baseado no espaço disponível\n let finalPlacement: ResolvedPlacement = placement as ResolvedPlacement;\n\n if (placement === 'right' && spaceRight < tooltipRect.width + gap) {\n finalPlacement = spaceLeft >= tooltipRect.width + gap ? 'left' : 'bottom';\n } else if (placement === 'left' && spaceLeft < tooltipRect.width + gap) {\n finalPlacement = spaceRight >= tooltipRect.width + gap ? 'right' : 'bottom';\n } else if (placement === 'bottom' && spaceBottom < tooltipRect.height + gap) {\n finalPlacement = spaceTop >= tooltipRect.height + gap ? 'top' : 'bottom';\n } else if (placement === 'top' && spaceTop < tooltipRect.height + gap) {\n finalPlacement = spaceBottom >= tooltipRect.height + gap ? 'bottom' : 'top';\n }\n\n setResolvedPlacement(finalPlacement);\n\n const newStyle: React.CSSProperties = {\n position: 'fixed',\n zIndex: 10000,\n opacity: 1,\n visibility: 'visible',\n pointerEvents: 'auto',\n };\n\n // Calcula posição baseada no placement final\n switch (finalPlacement) {\n case 'right':\n newStyle.top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2;\n newStyle.left = triggerRect.right + gap;\n break;\n case 'left':\n newStyle.top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2;\n newStyle.left = triggerRect.left - tooltipRect.width - gap;\n break;\n case 'top':\n newStyle.top = triggerRect.top - tooltipRect.height - gap;\n newStyle.left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2;\n break;\n case 'bottom':\n default:\n newStyle.top = triggerRect.bottom + gap;\n newStyle.left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2;\n }\n\n // Ajuste para não sair da viewport horizontalmente\n if (newStyle.left! < 0) {\n newStyle.left = 0;\n } else if (newStyle.left! + tooltipRect.width > viewportWidth) {\n newStyle.left = viewportWidth - tooltipRect.width;\n }\n\n // Ajuste para não sair da viewport verticalmente\n if (newStyle.top! < 0) {\n newStyle.top = 0;\n } else if (newStyle.top! + tooltipRect.height > viewportHeight) {\n newStyle.top = viewportHeight - tooltipRect.height;\n }\n\n setTooltipStyle(newStyle);\n console.log('Calculated position:', newStyle);\n };\n\n console.log('Tooltip isVisible:', isVisible, 'tooltipStyle:', tooltipStyle);\n\n // Usa requestAnimationFrame para garantir que o tooltip foi renderizado\n requestAnimationFrame(updatePosition);\n\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n\n return () => {\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n }, [isVisible, placement]);\n\n const handleMouseEnter = () => {\n if (disabled) return;\n console.log('Tooltip mouse enter');\n \n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = setTimeout(() => {\n console.log('Tooltip setting visible');\n setIsVisible(true);\n }, delay);\n };\n\n const handleMouseLeave = () => {\n console.log('Tooltip mouse leave');\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = setTimeout(() => {\n console.log('Tooltip setting invisible');\n setIsVisible(false);\n }, 150); // Delay menor para esconder\n };\n\n const handleClick = () => {\n // Ocultar tooltip imediatamente quando clicar\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n setIsVisible(false);\n };\n\n return (\n <>\n <div\n ref={triggerRef}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleClick}\n style={{ display: 'inline-block' }}\n >\n {children}\n </div>\n {isVisible && !disabled &&\n ReactDOM.createPortal(\n <div\n ref={tooltipRef}\n className={`tooltip tooltip--${resolvedPlacement}`}\n style={{\n ...tooltipStyle,\n // Start with opacity 0 and visibility hidden to prevent initial flash\n opacity: tooltipStyle.top !== undefined ? 1 : 0,\n visibility: tooltipStyle.top !== undefined ? 'visible' : 'hidden',\n }}\n onMouseEnter={() => {\n console.log('Tooltip mouse enter on tooltip');\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n }}\n onMouseLeave={handleMouseLeave}\n >\n <div className=\"tooltip__content\">\n {content}\n </div>\n </div>,\n document.body\n )\n }\n </>\n );\n};","import * as React from \"react\";\nimport { Icon } from \"../icons\";\nimport { Tooltip } from \"../tooltip\";\nimport { Button } from \"../button\";\nimport { useNavbarTooltip } from \"../../contexts/NavbarTooltipContext\";\n\nexport interface MenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon?: string;\n active?: boolean;\n children: React.ReactNode;\n as?: React.ElementType<any>;\n isCollapsed?: boolean;\n showTooltipWhenCollapsed?: boolean;\n [key: string]: any;\n}\n\nexport const MenuItem: React.FC<MenuItemProps> = ({\n icon,\n active = false,\n children,\n className = \"\",\n as: Component = \"button\",\n isCollapsed = false,\n showTooltipWhenCollapsed = false,\n ...props\n}) => {\n const { hasOpenPopover } = useNavbarTooltip();\n const classes = [\n \"navbar__menu-item\",\n active && \"navbar__menu-item--active\",\n className\n ].filter(Boolean).join(\" \");\n\n const menuItem = isCollapsed ? (\n <Button \n variant={active ? \"primary\" : \"ghost\"}\n iconOnly={true}\n startIcon={icon as any}\n {...props}\n />\n ) : (\n <Component \n className={classes} \n type={Component === \"button\" ? \"button\" : undefined}\n {...props}\n >\n {icon && (\n <span className=\"navbar__menu-item-icon\">\n <Icon name={icon as any} size={16} />\n </span>\n )}\n {!isCollapsed && <span className=\"navbar__menu-item-label\">{children}</span>}\n </Component>\n );\n\n if (showTooltipWhenCollapsed && isCollapsed) {\n return (\n <Tooltip content={typeof children === 'string' ? children : ''} placement=\"right\" disabled={hasOpenPopover}>\n {menuItem}\n </Tooltip>\n );\n }\n\n return menuItem;\n};","import * as React from \"react\";\nimport { Icon } from \"../icons\";\nimport { Popover } from \"../popover\";\nimport { Tooltip } from \"../tooltip\";\nimport { Button } from \"../button\";\nimport { useNavbarTooltip } from \"../../contexts/NavbarTooltipContext\";\n\nexport interface MenuGroupProps {\n title: string;\n icon?: string;\n children: React.ReactNode;\n defaultExpanded?: boolean;\n autoExpand?: boolean;\n expandable?: boolean;\n isCollapsed?: boolean; // Nova prop para saber se o navbar está colapsado\n}\n\nexport const MenuGroup: React.FC<MenuGroupProps> = ({\n title,\n icon,\n children,\n defaultExpanded = false,\n autoExpand = false,\n expandable = true,\n isCollapsed = false\n}) => {\n const [expanded, setExpanded] = React.useState(defaultExpanded);\n const [userInteracted, setUserInteracted] = React.useState(false);\n const { openPopover, closePopover, activePopoverId } = useNavbarTooltip();\n\n // Gerar um ID único para este grupo\n const groupId = React.useMemo(() => `menu-group-${title.replace(/\\s+/g, '-').toLowerCase()}`, [title]);\n\n // Estado local do popover baseado no contexto global\n const popoverOpen = activePopoverId === groupId;\n\n // Refs para gerenciar foco\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const popoverContentRef = React.useRef<HTMLDivElement>(null);\n\n // Efeito para focar o primeiro filho quando o popover abre\n React.useEffect(() => {\n if (popoverOpen && popoverContentRef.current) {\n // Pequeno delay para garantir que o popover foi renderizado\n setTimeout(() => {\n const firstFocusable = popoverContentRef.current?.querySelector(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n ) as HTMLElement;\n firstFocusable?.focus();\n }, 10);\n }\n }, [popoverOpen]);\n\n // Função para encontrar o próximo elemento focável na raiz do navbar\n const findNextFocusableElement = React.useCallback((currentElement: HTMLElement): HTMLElement | null => {\n const navbar = currentElement.closest('.navbar');\n if (!navbar) return null;\n\n // Exclui elementos que estão dentro de popovers/popups\n const focusableElements = navbar.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n \n // Filtra elementos que não estão dentro de popover\n const rootFocusableElements = Array.from(focusableElements).filter(el => {\n return !el.closest('.popover');\n });\n\n const currentIndex = rootFocusableElements.indexOf(currentElement);\n \n if (currentIndex >= 0 && currentIndex < rootFocusableElements.length - 1) {\n return rootFocusableElements[currentIndex + 1] as HTMLElement;\n }\n \n return null;\n }, []);\n\n // Handler para navegação por tab\n const handleKeyDown = React.useCallback((event: React.KeyboardEvent) => {\n if (event.key === 'Tab' && !event.shiftKey) {\n // Tab para frente\n if (popoverContentRef.current) {\n const focusableElements = popoverContentRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n const currentElement = event.target as HTMLElement;\n const currentIndex = Array.from(focusableElements).indexOf(currentElement);\n \n if (currentIndex >= 0 && currentIndex === focusableElements.length - 1) {\n // Estamos no último elemento focável do popover\n event.preventDefault();\n const nextElement = findNextFocusableElement(currentElement);\n if (nextElement) {\n nextElement.focus();\n } else {\n // Se não há próximo elemento, fecha o popover e volta para o trigger\n closePopover(groupId);\n triggerRef.current?.focus();\n }\n }\n }\n } else if (event.key === 'Tab' && event.shiftKey) {\n // Shift+Tab para trás\n if (popoverContentRef.current) {\n const focusableElements = popoverContentRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n const currentElement = event.target as HTMLElement;\n const currentIndex = Array.from(focusableElements).indexOf(currentElement);\n \n if (currentIndex === 0) {\n // Estamos no primeiro elemento focável do popover, volta para o trigger\n event.preventDefault();\n triggerRef.current?.focus();\n }\n }\n } else if (event.key === 'Escape') {\n // Escape fecha o popover e retorna foco para o trigger\n closePopover(groupId);\n // Pequeno delay para garantir que o popover fechou antes de focar\n setTimeout(() => {\n triggerRef.current?.focus();\n }, 10);\n }\n }, [closePopover, groupId, findNextFocusableElement]);\n\n // Função para detectar se há itens ativos dentro do grupo\n const hasActiveItem = React.useMemo(() => {\n const checkForActiveItems = (children: React.ReactNode): boolean => {\n return React.Children.toArray(children).some((child) => {\n if (React.isValidElement(child)) {\n if (child.props && child.props.active === true) {\n return true;\n }\n if (child.props && child.props.children) {\n return checkForActiveItems(child.props.children);\n }\n }\n return false;\n });\n };\n\n return checkForActiveItems(children);\n }, [children]);\n\n // Efeito para expansão automática quando há itens ativos\n React.useEffect(() => {\n if (autoExpand && hasActiveItem && !userInteracted) {\n setExpanded(true);\n }\n }, [autoExpand, hasActiveItem, userInteracted]);\n\n const toggleExpanded = () => {\n setUserInteracted(true);\n setExpanded(!expanded);\n };\n\n // Conteúdo do popover quando colapsado\n const popoverContent = (\n <div className=\"navbar__menu-group-popover\">\n <div className=\"navbar__menu-group-popover-title\">{title}</div>\n <div \n className=\"navbar__menu-group-popover-content\" \n ref={popoverContentRef}\n onKeyDown={handleKeyDown}\n onClick={() => {\n // Fecha o popover quando qualquer item filho é clicado\n // Pequeno delay para garantir que a ação do item seja executada primeiro\n setTimeout(() => {\n closePopover(groupId);\n }, 0);\n }}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n onKeyDown: (e: React.KeyboardEvent) => {\n // Chama o onKeyDown original se existir\n child.props.onKeyDown?.(e);\n // E depois o nosso handler\n handleKeyDown(e);\n }\n });\n }\n return child;\n })}\n </div>\n </div>\n );\n\n // Comportamento quando expandido: clique expande/collapsa\n const expandedHeader = !expandable ? (\n <div className=\"navbar__menu-group-header navbar__menu-group-header--static\">\n {icon && (\n <span className=\"navbar__menu-group-icon\">\n <Icon name={icon as any} size={16} />\n </span>\n )}\n <span className=\"navbar__menu-group-title\">{title}</span>\n </div>\n ) : (\n <button\n className={`navbar__menu-group-header ${!expanded && hasActiveItem ? 'navbar__menu-group-header--active' : ''}`}\n onClick={toggleExpanded}\n aria-expanded={expanded}\n aria-controls={`menu-group-${title.replace(/\\s+/g, '-').toLowerCase()}`}\n type=\"button\"\n >\n {icon && (\n <span className=\"navbar__menu-group-icon\">\n <Icon name={icon as any} size={16} />\n </span>\n )}\n <span className=\"navbar__menu-group-title\">{title}</span>\n <span className={`navbar__menu-group-chevron ${expanded ? 'navbar__menu-group-chevron--expanded' : ''}`}>\n <Icon name=\"chevron-down\" size={12} />\n </span>\n </button>\n );\n\n // Comportamento quando colapsado: clique abre popover\n const collapsedHeader = (\n <div>\n <Popover\n trigger={\n <Tooltip content={title} placement=\"right\" disabled={popoverOpen}>\n <Button\n ref={triggerRef}\n variant={popoverOpen ? \"secondary\" : hasActiveItem ? \"primary\" : \"ghost\"}\n iconOnly={true}\n startIcon={icon as any}\n aria-label={title}\n aria-haspopup=\"menu\"\n aria-expanded={popoverOpen}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (event.key === 'Tab' && !event.shiftKey && popoverOpen) {\n // Se o popover está aberto e estamos no trigger, Tab vai para o primeiro filho\n event.preventDefault();\n const firstFocusable = popoverContentRef.current?.querySelector(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n ) as HTMLElement;\n firstFocusable?.focus();\n }\n }}\n onClick={() => {\n if (popoverOpen) {\n closePopover(groupId);\n } else {\n openPopover(groupId);\n }\n }}\n />\n </Tooltip>\n }\n isOpen={popoverOpen}\n onToggle={() => {\n if (popoverOpen) {\n closePopover(groupId);\n } else {\n openPopover(groupId);\n }\n }}\n placement=\"right\"\n >\n {popoverContent}\n </Popover>\n </div>\n );\n\n return (\n <div className=\"navbar__menu-group\">\n {/* Header - comportamento depende se está colapsado ou não */}\n {isCollapsed ? collapsedHeader : expandedHeader}\n\n {/* Conteúdo (só visível quando expandido e navbar expandido) */}\n {!isCollapsed && (\n <div\n className=\"navbar__menu-group-content\"\n id={`menu-group-${title.replace(/\\s+/g, '-').toLowerCase()}`}\n aria-hidden={!expandable || !expanded}\n style={{ display: expandable ? (expanded ? 'block' : 'none') : 'block' }}\n >\n {children}\n </div>\n )}\n </div>\n );\n};","import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport \"../../style/components/popover/popover.css\";\n\nexport interface PopoverProps {\n trigger: React.ReactNode;\n children: React.ReactNode;\n isOpen?: boolean;\n onToggle?: () => void;\n placement?: 'top' | 'bottom' | 'left' | 'right';\n}\n\ntype ResolvedPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport const Popover: React.FC<PopoverProps> = ({\n trigger,\n children,\n isOpen = false,\n onToggle,\n placement = 'bottom'\n}) => {\n const [internalOpen, setInternalOpen] = React.useState(false);\n const triggerRef = React.useRef<HTMLDivElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n const [popoverStyle, setPopoverStyle] = React.useState<React.CSSProperties>({});\n const [resolvedPlacement, setResolvedPlacement] = React.useState<ResolvedPlacement>(placement);\n\n const open = isOpen !== undefined ? isOpen : internalOpen;\n const toggle = onToggle || (() => setInternalOpen(!internalOpen));\n\n // Fecha ao clicar fora\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node) &&\n popoverRef.current &&\n !popoverRef.current.contains(event.target as Node)\n ) {\n if (onToggle) {\n onToggle();\n } else {\n setInternalOpen(false);\n }\n }\n };\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [open, onToggle]);\n\n // Calcula posição com ajuste automático baseado no espaço disponível\n React.useEffect(() => {\n if (!open || !triggerRef.current || !popoverRef.current) {\n return;\n }\n\n const updatePosition = () => {\n if (!triggerRef.current || !popoverRef.current) {\n return;\n }\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const popoverRect = popoverRef.current.getBoundingClientRect();\n const gap = 8;\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Calcula espaço disponível em cada direção\n const spaceTop = triggerRect.top;\n const spaceBottom = viewportHeight - triggerRect.bottom;\n const spaceLeft = triggerRect.left;\n const spaceRight = viewportWidth - triggerRect.right;\n\n // Determina o melhor placement baseado no espaço disponível\n let finalPlacement: ResolvedPlacement = placement as ResolvedPlacement;\n\n if (placement === 'right' && spaceRight < popoverRect.width + gap) {\n finalPlacement = spaceLeft >= popoverRect.width + gap ? 'left' : 'bottom';\n } else if (placement === 'left' && spaceLeft < popoverRect.width + gap) {\n finalPlacement = spaceRight >= popoverRect.width + gap ? 'right' : 'bottom';\n } else if (placement === 'bottom' && spaceBottom < popoverRect.height + gap) {\n finalPlacement = spaceTop >= popoverRect.height + gap ? 'top' : 'bottom';\n } else if (placement === 'top' && spaceTop < popoverRect.height + gap) {\n finalPlacement = spaceBottom >= popoverRect.height + gap ? 'bottom' : 'top';\n }\n\n setResolvedPlacement(finalPlacement);\n\n const newStyle: React.CSSProperties = {\n position: 'fixed',\n zIndex: 9999,\n opacity: 1,\n visibility: 'visible',\n pointerEvents: 'auto',\n };\n\n // Calcula posição baseada no placement final\n switch (finalPlacement) {\n case 'right':\n newStyle.top = triggerRect.top;\n newStyle.left = triggerRect.right + gap;\n break;\n case 'left':\n newStyle.top = triggerRect.top;\n newStyle.left = triggerRect.left - popoverRect.width - gap;\n break;\n case 'top':\n newStyle.top = triggerRect.top - popoverRect.height - gap;\n newStyle.left = triggerRect.left;\n break;\n case 'bottom':\n default:\n newStyle.top = triggerRect.bottom + gap;\n newStyle.left = triggerRect.left;\n }\n\n // Ajuste para não sair da viewport horizontalmente\n if (typeof newStyle.left === 'number') {\n if (newStyle.left + popoverRect.width > viewportWidth - gap) {\n newStyle.left = viewportWidth - popoverRect.width - gap;\n }\n if (newStyle.left < gap) {\n newStyle.left = gap;\n }\n }\n\n // Ajuste para não sair da viewport verticalmente\n if (typeof newStyle.top === 'number') {\n if (newStyle.top + popoverRect.height > viewportHeight - gap) {\n newStyle.top = viewportHeight - popoverRect.height - gap;\n }\n if (newStyle.top < gap) {\n newStyle.top = gap;\n }\n }\n\n setPopoverStyle(newStyle);\n };\n\n // Usa requestAnimationFrame para garantir que o popover foi renderizado\n requestAnimationFrame(updatePosition);\n\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n\n return () => {\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n }, [open, placement]);\n\n const handleTriggerClick = () => {\n toggle();\n };\n\n return (\n <>\n <div \n ref={triggerRef} \n onClick={handleTriggerClick} \n style={{ display: 'inline-block', position: 'relative' }}\n >\n {React.isValidElement(trigger) \n ? React.cloneElement(trigger as React.ReactElement, { \n onClick: (e: React.MouseEvent) => {\n e.stopPropagation();\n handleTriggerClick();\n (trigger as React.ReactElement).props?.onClick?.(e);\n }\n })\n : trigger}\n </div>\n {open &&\n ReactDOM.createPortal(\n <div\n ref={popoverRef}\n className={`popover popover--${resolvedPlacement}`}\n style={{\n ...popoverStyle,\n // Start with opacity 0 and visibility hidden to prevent initial flash\n opacity: popoverStyle.top !== undefined ? 1 : 0,\n visibility: popoverStyle.top !== undefined ? 'visible' : 'hidden',\n }}\n >\n <div className=\"popover__content\">\n {children}\n </div>\n </div>,\n document.body\n )}\n </>\n );\n};","import * as React from \"react\";\n\nexport interface MenuCategoryProps {\n title: string;\n children: React.ReactNode;\n}\n\nexport const MenuCategory: React.FC<MenuCategoryProps> = ({\n title,\n children\n}) => {\n return (\n <div className=\"navbar__menu-category\">\n <div className=\"navbar__menu-category-title\">{title}</div>\n <div className=\"navbar__menu-category-content\">\n {children}\n </div>\n </div>\n );\n};","import * as React from \"react\";\nimport { getSavedTheme, setTheme } from \"../../utils/theme\";\nimport \"../../style/components/theme-control/theme-control.css\";\n\ntype Theme = 'light' | 'dark';\n\ninterface ThemeOption {\n value: Theme;\n label: string;\n icon: React.ReactNode;\n}\n\nconst themeOptions: ThemeOption[] = [\n {\n value: 'light',\n label: 'Light',\n icon: (\n <svg className=\"theme-control__icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"5\"/>\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"/>\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"/>\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"/>\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"/>\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"/>\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"/>\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"/>\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"/>\n </svg>\n ),\n },\n {\n value: 'dark',\n label: 'Dark',\n icon: (\n <svg className=\"theme-control__icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"/>\n </svg>\n ),\n },\n];\n\nexport interface ThemeControlProps {\n onThemeChange?: (theme: Theme) => void;\n}\n\nexport const ThemeControl: React.FC<ThemeControlProps> = ({ onThemeChange }) => {\n const [currentTheme, setCurrentTheme] = React.useState<Theme>(() => {\n // Get initial theme from localStorage or default to light\n return getSavedTheme();\n });\n\n React.useEffect(() => {\n // Apply theme to document and save to localStorage\n setTheme(currentTheme);\n onThemeChange?.(currentTheme);\n }, [currentTheme, onThemeChange]);\n\n const handleThemeSelect = (theme: Theme) => {\n setCurrentTheme(theme);\n };\n\n return (\n <div className=\"theme-control\">\n {themeOptions.map((option) => (\n <div\n key={option.value}\n className={`theme-control__option ${\n currentTheme === option.value ? 'theme-control__option--active' : ''\n }`}\n onClick={() => handleThemeSelect(option.value)}\n >\n {option.icon}\n <span>{option.label}</span>\n </div>\n ))}\n </div>\n );\n};","/**\n * Theme Utility\n * Manages data-theme attribute on <html>, localStorage persistence, and prefers-color-scheme fallback\n * \n * Priority: data-theme (explicit) > prefers-color-scheme (OS preference) > light (default)\n * \n * This utility now uses the User Preferences system for storage.\n * See USER_PREFERENCES.md for more details on the underlying storage system.\n */\n\nimport { getPreference, setPreference } from './user-preferences';\n\ntype Theme = 'light' | 'dark';\n\n// Preference key for storing the chosen mode only\nconst THEME_KEY = 'theme';\n\nconst ATTR_NAME = 'data-theme';\n\n/**\n * Apply theme to document element\n */\nexport const applyTheme = (theme: Theme) => {\n document.documentElement.setAttribute(ATTR_NAME, theme);\n};\n\n/**\n * Get current theme.\n * Sources of truth (simplified):\n * - `data-theme` attribute on <html>\n * - OS `prefers-color-scheme`\n * - default: 'light'\n */\nexport const getTheme = (): Theme => {\n // 1. If `data-theme` is explicitly set on <html>, that wins\n const dataTheme = document.documentElement.getAttribute(ATTR_NAME);\n if (dataTheme === 'light' || dataTheme === 'dark') return dataTheme;\n\n // 2. If the user previously selected a mode, use stored preference\n try {\n const stored = getPreference<Theme>(THEME_KEY);\n if (stored === 'light' || stored === 'dark') return stored;\n } catch (e) {\n // ignore storage errors and fallback to system/default\n }\n\n // 3. Fall back to OS preference\n if (typeof window !== 'undefined' && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n return 'dark';\n }\n\n // 4. Default\n return 'light';\n};\n\n/**\n * Backwards-compatible alias\n */\nexport const getSavedTheme = (): Theme => getTheme();\n\n/**\n * Set theme on document (no persistence)\n */\nexport const setTheme = (theme: Theme) => {\n if (!['light', 'dark'].includes(theme)) {\n console.warn(`Invalid theme: ${theme}. Using 'light' as fallback.`);\n theme = 'light';\n }\n\n // Persist only the mode (light/dark)\n try {\n setPreference(THEME_KEY, theme);\n } catch (e) {\n // ignore storage errors\n }\n\n applyTheme(theme);\n};\n\n/**\n * Initialize theme on startup (mode-only)\n */\nexport const initializeTheme = () => {\n const theme = getTheme();\n applyTheme(theme);\n};\n\n/**\n * Listen to system theme changes. Only calls callback when OS preference\n * changes. Consumers decide whether to apply it.\n */\nexport const onSystemThemeChange = (callback: (theme: Theme) => void): (() => void) => {\n if (typeof window === 'undefined') return () => {};\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const listener = (e: MediaQueryListEvent | MediaQueryList) => {\n const theme = e.matches ? 'dark' : 'light';\n // Only notify consumers if the user has NOT explicitly chosen a mode\n const hasStored = (() => {\n try {\n const stored = getPreference<Theme>(THEME_KEY);\n return stored === 'light' || stored === 'dark';\n } catch { return false; }\n })();\n\n const dataTheme = document.documentElement.getAttribute(ATTR_NAME);\n if (!hasStored && !dataTheme) callback(theme);\n };\n\n if (mediaQuery.addEventListener) {\n mediaQuery.addEventListener('change', listener);\n return () => mediaQuery.removeEventListener('change', listener);\n }\n\n mediaQuery.addListener(listener as any);\n return () => mediaQuery.removeListener(listener as any);\n};\n\n/**\n * Toggle between light and dark themes (no persistence)\n */\nexport const toggleTheme = (): Theme => {\n const current = getTheme();\n const next = current === 'light' ? 'dark' : 'light';\n setTheme(next);\n return next;\n};","import React, { ReactNode } from 'react';\nimport '../../style/components/card/card.css';\n\nexport type CardVariant = 'default' | 'elevated' | 'outlined';\n\nexport interface CardProps {\n /**\n * Visual variant of the card\n * @default 'default'\n */\n variant?: CardVariant;\n\n /**\n * Card content\n */\n children: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * Click handler for interactive cards\n */\n onClick?: () => void;\n}\n\nexport const Card: React.FC<CardProps> = ({\n variant = 'default',\n children,\n className = '',\n onClick,\n ...props\n}) => {\n const cardClasses = [\n 'card',\n `card--${variant}`,\n onClick && 'card--interactive',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const Component = onClick ? 'button' : 'div';\n\n return (\n <Component\n className={cardClasses}\n onClick={onClick}\n {...(onClick && { type: 'button' })}\n {...props}\n >\n {children}\n </Component>\n );\n};","import React, { useState, useEffect, useCallback } from 'react';\nimport { Slider } from '../slider';\nimport '../../style/components/color-control/color-control.css';\n\ninterface ColorHue {\n primary: number;\n secondary: number;\n accent: number;\n success: number;\n warning: number;\n error: number;\n info: number;\n}\n\ninterface ColorSaturation {\n primary: number;\n secondary: number;\n accent: number;\n success: number;\n warning: number;\n error: number;\n info: number;\n}\n\ninterface ColorLightness {\n primary: number;\n secondary: number;\n accent: number;\n success: number;\n warning: number;\n error: number;\n info: number;\n}\n\ninterface ColorConfig {\n hues: ColorHue;\n saturations: ColorSaturation;\n lightnesses: ColorLightness;\n}\n\n// Function to get CSS variable value as number\nconst getCSSVariable = (variable: string): number => {\n if (typeof window === 'undefined') return 0;\n const value = getComputedStyle(document.documentElement).getPropertyValue(variable).trim();\n return value ? parseInt(value, 10) : 0;\n};\n\n// Load colors from CSS variables (generated from theme.json)\nconst loadColorsFromCSS = (): ColorConfig => {\n return {\n hues: {\n primary: getCSSVariable('--primary-hue'),\n secondary: getCSSVariable('--secondary-hue'),\n accent: getCSSVariable('--accent-hue'),\n success: getCSSVariable('--success-hue'),\n warning: getCSSVariable('--warning-hue'),\n error: getCSSVariable('--error-hue'),\n info: getCSSVariable('--info-hue'),\n },\n saturations: {\n primary: getCSSVariable('--primary-saturation'),\n secondary: getCSSVariable('--secondary-saturation'),\n accent: getCSSVariable('--accent-saturation'),\n success: getCSSVariable('--success-saturation'),\n warning: getCSSVariable('--warning-saturation'),\n error: getCSSVariable('--error-saturation'),\n info: getCSSVariable('--info-saturation'),\n },\n lightnesses: {\n primary: getCSSVariable('--primary-lightness'),\n secondary: getCSSVariable('--secondary-lightness'),\n accent: getCSSVariable('--accent-lightness'),\n success: getCSSVariable('--success-lightness'),\n warning: getCSSVariable('--warning-lightness'),\n error: getCSSVariable('--error-lightness'),\n info: getCSSVariable('--info-lightness'),\n },\n };\n};\n\nexport const ColorControl: React.FC = () => {\n const [colors, setColors] = useState<ColorConfig>(() => {\n // Load saved colors from localStorage, fallback to CSS variables from theme.json\n const saved = localStorage.getItem('color-config');\n return saved ? JSON.parse(saved) : loadColorsFromCSS();\n });\n\n const [pendingColors, setPendingColors] = useState<ColorConfig>(colors);\n\n // Initialize CSS on mount\n useEffect(() => {\n const root = document.documentElement;\n // Set hues\n root.style.setProperty('--hue-primary', colors.hues.primary.toString());\n root.style.setProperty('--hue-secondary', colors.hues.secondary.toString());\n root.style.setProperty('--hue-accent', colors.hues.accent.toString());\n root.style.setProperty('--hue-success', colors.hues.success.toString());\n root.style.setProperty('--hue-warning', colors.hues.warning.toString());\n root.style.setProperty('--hue-error', colors.hues.error.toString());\n root.style.setProperty('--hue-info', colors.hues.info.toString());\n \n // Set saturations\n root.style.setProperty('--saturation-primary', `${colors.saturations.primary}%`);\n root.style.setProperty('--saturation-secondary', `${colors.saturations.secondary}%`);\n root.style.setProperty('--saturation-accent', `${colors.saturations.accent}%`);\n root.style.setProperty('--saturation-success', `${colors.saturations.success}%`);\n root.style.setProperty('--saturation-warning', `${colors.saturations.warning}%`);\n root.style.setProperty('--saturation-error', `${colors.saturations.error}%`);\n root.style.setProperty('--saturation-info', `${colors.saturations.info}%`);\n \n // Set lightnesses\n root.style.setProperty('--lightness-primary', `${colors.lightnesses.primary}%`);\n root.style.setProperty('--lightness-secondary', `${colors.lightnesses.secondary}%`);\n root.style.setProperty('--lightness-accent', `${colors.lightnesses.accent}%`);\n root.style.setProperty('--lightness-success', `${colors.lightnesses.success}%`);\n root.style.setProperty('--lightness-warning', `${colors.lightnesses.warning}%`);\n root.style.setProperty('--lightness-error', `${colors.lightnesses.error}%`);\n root.style.setProperty('--lightness-info', `${colors.lightnesses.info}%`);\n }, []);\n\n const commitColorChange = useCallback((color: keyof ColorHue, property: 'hue' | 'saturation' | 'lightness', value: number) => {\n setColors(prev => {\n const newColors = {\n ...prev,\n [property === 'hue' ? 'hues' : property === 'saturation' ? 'saturations' : 'lightnesses']: {\n ...prev[property === 'hue' ? 'hues' : property === 'saturation' ? 'saturations' : 'lightnesses'],\n [color]: value\n }\n };\n \n // Update CSS and localStorage immediately after drag ends\n const root = document.documentElement;\n const cssVar = property === 'hue' ? `--hue-${color}` : `--${property}-${color}`;\n const cssValue = property === 'hue' ? value.toString() : `${value}%`;\n root.style.setProperty(cssVar, cssValue);\n localStorage.setItem('color-config', JSON.stringify(newColors));\n \n return newColors;\n });\n }, []);\n\n const resetToDefaults = useCallback(() => {\n const cssColors = loadColorsFromCSS();\n setColors(cssColors);\n setPendingColors(cssColors);\n }, []);\n\n const renderColorControls = (colorName: keyof ColorHue) => {\n const hue = pendingColors.hues[colorName];\n const saturation = pendingColors.saturations[colorName];\n const lightness = pendingColors.lightnesses[colorName];\n \n return (\n <div key={colorName} className=\"color-control__color-group\">\n <h4 className=\"color-control__color-title\">{colorName.charAt(0).toUpperCase() + colorName.slice(1)}</h4>\n \n <div className=\"color-control__controls-row\">\n <div className=\"color-control__control\">\n <label className=\"color-control__label\">Hue</label>\n <Slider\n label=\"\"\n value={hue}\n min={0}\n max={360}\n step={1}\n onChange={(v) => setPendingColors(prev => ({\n ...prev,\n hues: { ...prev.hues, [colorName]: v }\n }))}\n onChangeEnd={(v) => {\n setPendingColors(prev => ({\n ...prev,\n hues: { ...prev.hues, [colorName]: v }\n }));\n commitColorChange(colorName, 'hue', v);\n }}\n type=\"hue\"\n showValue={false}\n />\n </div>\n \n <div className=\"color-control__control\">\n <label className=\"color-control__label\">Saturation</label>\n <Slider\n label=\"\"\n value={saturation}\n min={0}\n max={100}\n step={1}\n onChange={(v) => setPendingColors(prev => ({\n ...prev,\n saturations: { ...prev.saturations, [colorName]: v }\n }))}\n onChangeEnd={(v) => {\n setPendingColors(prev => ({\n ...prev,\n saturations: { ...prev.saturations, [colorName]: v }\n }));\n commitColorChange(colorName, 'saturation', v);\n }}\n type=\"saturation\"\n baseHue={hue}\n showValue={false}\n />\n </div>\n \n <div className=\"color-control__control\">\n <label className=\"color-control__label\">Lightness</label>\n <Slider\n label=\"\"\n value={lightness}\n min={0}\n max={100}\n step={1}\n onChange={(v) => setPendingColors(prev => ({\n ...prev,\n lightnesses: { ...prev.lightnesses, [colorName]: v }\n }))}\n onChangeEnd={(v) => {\n setPendingColors(prev => ({\n ...prev,\n lightnesses: { ...prev.lightnesses, [colorName]: v }\n }));\n commitColorChange(colorName, 'lightness', v);\n }}\n type=\"lightness\"\n baseHue={hue}\n baseSaturation={saturation}\n showValue={false}\n />\n </div>\n \n <div\n className=\"color-control__preview\"\n style={{\n backgroundColor: `hsl(${hue}, ${saturation}%, ${lightness}%)`,\n border: '2px solid var(--color-neutral-300)'\n }}\n />\n </div>\n </div>\n );\n };\n\n return (\n <div className=\"color-control\">\n <div className=\"color-control__header\">\n <h3 className=\"color-control__title\">Paleta de Cores</h3>\n <p className=\"color-control__description\">\n Ajuste o matiz, saturação e luminosidade das cores. As mudanças são aplicadas instantaneamente.\n </p>\n </div>\n\n <div className=\"color-control__sliders\">\n {renderColorControls('primary')}\n {renderColorControls('secondary')}\n {renderColorControls('accent')}\n {renderColorControls('success')}\n {renderColorControls('warning')}\n {renderColorControls('error')}\n {renderColorControls('info')}\n </div>\n\n <div className=\"color-control__actions\">\n <button\n onClick={resetToDefaults}\n className=\"color-control__reset-btn\"\n >\n Restaurar Padrões\n </button>\n </div>\n\n <div className=\"color-control__preview-section\">\n <h4 className=\"color-control__preview-title\">Prévia das Cores</h4>\n <div className=\"color-control__color-grid\">\n <div\n className=\"color-control__color-sample\"\n style={{ backgroundColor: `hsl(${pendingColors.hues.primary}, ${pendingColors.saturations.primary}%, ${pendingColors.lightnesses.primary}%)` }}\n >\n Primary\n </div>\n <div\n className=\"color-control__color-sample\"\n style={{ backgroundColor: `hsl(${pendingColors.hues.secondary}, ${pendingColors.saturations.secondary}%, ${pendingColors.lightnesses.secondary}%)` }}\n >\n Secondary\n </div>\n <div\n className=\"color-control__color-sample\"\n style={{ backgroundColor: `hsl(${pendingColors.hues.accent}, ${pendingColors.saturations.accent}%, ${pendingColors.lightnesses.accent}%)` }}\n >\n Accent\n </div>\n <div\n className=\"color-control__color-sample\"\n style={{ backgroundColor: `hsl(${pendingColors.hues.success}, ${pendingColors.saturations.success}%, ${pendingColors.lightnesses.success}%)` }}\n >\n Success\n </div>\n <div\n className=\"color-control__color-sample\"\n style={{ backgroundColor: `hsl(${pendingColors.hues.warning}, ${pendingColors.saturations.warning}%, ${pendingColors.lightnesses.warning}%)` }}\n >\n Warning\n </div>\n <div\n className=\"color-control__color-sample\"\n style={{ backgroundColor: `hsl(${pendingColors.hues.error}, ${pendingColors.saturations.error}%, ${pendingColors.lightnesses.error}%)` }}\n >\n Error\n </div>\n <div\n className=\"color-control__color-sample\"\n style={{ backgroundColor: `hsl(${pendingColors.hues.info}, ${pendingColors.saturations.info}%, ${pendingColors.lightnesses.info}%)` }}\n >\n Info\n </div>\n </div>\n </div>\n </div>\n );\n};","import React, { useState, useCallback, useRef } from 'react';\nimport { Icon } from '../icons/icons';\nimport '../../style/components/slider/slider.css';\n\nexport interface SliderProps {\n /**\n * Minimum value\n * @default 0\n */\n min?: number;\n /**\n * Maximum value\n * @default 100\n */\n max?: number;\n /**\n * Current value\n */\n value: number;\n /**\n * Step increment\n * @default 1\n */\n step?: number;\n /**\n * Callback when value changes\n */\n onChange: (value: number) => void;\n /**\n * Callback when drag starts\n */\n onDragStart?: () => void;\n /**\n * Callback when drag ends (value committed)\n */\n onChangeEnd?: (value: number) => void;\n /**\n * Label for the slider\n */\n label?: string;\n /**\n * Show value display\n * @default true\n */\n showValue?: boolean;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Disabled state\n * @default false\n */\n disabled?: boolean;\n /**\n * Slider type for different backgrounds\n * @default 'default'\n */\n type?: 'default' | 'hue' | 'saturation' | 'lightness';\n /**\n * Base color for saturation/lightness gradients (hsl values)\n */\n baseHue?: number;\n /**\n * Base saturation for lightness gradient (0-100)\n */\n baseSaturation?: number;\n}\n\nexport const Slider: React.FC<SliderProps> = ({\n min = 0,\n max = 100,\n value,\n step = 1,\n onChange,\n onDragStart,\n onChangeEnd,\n label,\n showValue = true,\n className = '',\n disabled = false,\n type = 'default',\n baseHue = 0,\n baseSaturation = 70,\n}) => {\n const [isDragging, setIsDragging] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const valueRef = useRef(value);\n\n // Keep value ref in sync\n React.useEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n const handleChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = parseFloat(event.target.value);\n onChange(newValue);\n }, [onChange]);\n\n const getValueFromPosition = useCallback((clientX: number) => {\n if (!containerRef.current) return value;\n const rect = containerRef.current.getBoundingClientRect();\n const percentage = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const rawValue = min + percentage * (max - min);\n const steppedValue = Math.round(rawValue / step) * step;\n return Math.max(min, Math.min(max, steppedValue));\n }, [min, max, step, value]);\n\n const handleMouseDown = useCallback((event: React.MouseEvent) => {\n if (disabled) return;\n event.preventDefault();\n setIsDragging(true);\n onDragStart?.();\n const newValue = getValueFromPosition(event.clientX);\n onChange(newValue);\n }, [disabled, onDragStart, getValueFromPosition, onChange]);\n\n const handleMouseMove = useCallback((event: MouseEvent) => {\n if (!isDragging) return;\n event.preventDefault();\n const newValue = getValueFromPosition(event.clientX);\n onChange(newValue);\n }, [isDragging, getValueFromPosition, onChange]);\n\n const handleMouseUp = useCallback(() => {\n if (!isDragging) return;\n setIsDragging(false);\n onChangeEnd?.(valueRef.current);\n }, [isDragging, onChangeEnd]);\n\n // Add global mouse listeners for dragging\n React.useEffect(() => {\n if (!isDragging) return;\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [isDragging, handleMouseMove, handleMouseUp]);\n\n // Handle touch events\n const handleTouchStart = useCallback((event: React.TouchEvent) => {\n if (disabled) return;\n event.preventDefault();\n setIsDragging(true);\n onDragStart?.();\n const touch = event.touches[0];\n const newValue = getValueFromPosition(touch.clientX);\n onChange(newValue);\n }, [disabled, onDragStart, getValueFromPosition, onChange]);\n\n const handleTouchMove = useCallback((event: TouchEvent) => {\n if (!isDragging) return;\n event.preventDefault();\n const touch = event.touches[0];\n const newValue = getValueFromPosition(touch.clientX);\n onChange(newValue);\n }, [isDragging, getValueFromPosition, onChange]);\n\n const handleTouchEnd = useCallback(() => {\n if (!isDragging) return;\n setIsDragging(false);\n onChangeEnd?.(valueRef.current);\n }, [isDragging, onChangeEnd]);\n\n React.useEffect(() => {\n if (!isDragging) return;\n\n document.addEventListener('touchmove', handleTouchMove);\n document.addEventListener('touchend', handleTouchEnd);\n\n return () => {\n document.removeEventListener('touchmove', handleTouchMove);\n document.removeEventListener('touchend', handleTouchEnd);\n };\n }, [isDragging, handleTouchMove, handleTouchEnd]);\n\n const sliderClasses = [\n 'slider',\n `slider--${type}`,\n isDragging && 'slider--dragging',\n disabled && 'slider--disabled',\n className\n ].filter(Boolean).join(' ');\n\n // Generate background based on type\n const getBackground = () => {\n switch (type) {\n case 'hue':\n return 'linear-gradient(to right, hsl(0, 70%, 50%), hsl(60, 70%, 50%), hsl(120, 70%, 50%), hsl(180, 70%, 50%), hsl(240, 70%, 50%), hsl(300, 70%, 50%), hsl(360, 70%, 50%))';\n case 'saturation':\n return `linear-gradient(to right, hsl(${baseHue}, 0%, 50%), hsl(${baseHue}, 100%, 50%))`;\n case 'lightness':\n return `linear-gradient(to right, hsl(${baseHue}, ${baseSaturation}%, 0%), hsl(${baseHue}, ${baseSaturation}%, 50%), hsl(${baseHue}, ${baseSaturation}%, 100%))`;\n default:\n return 'var(--color-action-primary)';\n }\n };\n\n const inputStyle = { background: getBackground() };\n\n // Generate step marks\n const stepMarks = step > 1 ? Array.from({ length: Math.floor((max - min) / step) + 1 }, (_, i) => min + i * step) : [];\n\n // Calculate thumb position as percentage\n const thumbPosition = ((value - min) / (max - min)) * 100;\n\n return (\n <div className={sliderClasses}>\n {(label || showValue) && (\n <div className=\"slider__header\">\n {label && <label className=\"slider__label\">{label}</label>}\n {showValue && (\n <span className=\"slider__value\">{value}</span>\n )}\n </div>\n )}\n\n <div className=\"slider__container\" ref={containerRef} onMouseDown={handleMouseDown} onTouchStart={handleTouchStart}>\n <input\n ref={inputRef}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n className=\"slider__input\"\n style={inputStyle}\n disabled={disabled}\n readOnly\n />\n \n {/* Custom thumb with icon */}\n <div \n className=\"slider__thumb\"\n style={{\n left: `${thumbPosition}%`,\n transform: 'translateX(-50%)',\n }}\n >\n <div className=\"slider__thumb-icon\">\n <Icon name=\"arrow-down\" size={16} />\n </div>\n </div>\n\n {stepMarks.length > 0 && (\n <div className=\"slider__marks\">\n {stepMarks.map((mark) => (\n <div\n key={mark}\n className=\"slider__mark\"\n style={{\n left: `${((mark - min) / (max - min)) * 100}%`,\n }}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n};","import * as React from \"react\";\nimport \"../../style/components/grid/grid.css\";\n\nexport type GridColumns = number | \"auto-fit\" | \"auto-fill\";\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Number of columns or auto-fit/auto-fill\n * @default \"auto-fit\"\n */\n columns?: GridColumns;\n /**\n * Minimum width for each column (when using auto-fit/auto-fill)\n * @default \"250px\"\n */\n minWidth?: string;\n /**\n * Gap between grid items\n * @default \"1rem\"\n */\n gap?: string;\n /**\n * Maximum number of columns (when columns is a number)\n */\n maxColumns?: number;\n}\n\nexport const Grid: React.FC<GridProps> = ({\n columns = \"auto-fit\",\n minWidth = \"250px\",\n gap = \"1rem\",\n maxColumns,\n className = \"\",\n children,\n ...props\n}) => {\n const gridClass = [\n \"grid\",\n typeof columns === \"number\" ? `grid--cols-${Math.min(columns, maxColumns || columns)}` : `grid--${columns}`,\n className\n ].filter(Boolean).join(\" \");\n\n const style = {\n \"--grid-min-width\": minWidth,\n \"--grid-gap\": gap,\n } as React.CSSProperties;\n\n return (\n <div className={gridClass} style={style} {...props}>\n {children}\n </div>\n );\n};","import React from 'react';\nimport '../../style/components/footer/footer.css';\n\nexport interface FooterProps extends React.HTMLAttributes<HTMLElement> {\n children?: React.ReactNode;\n}\n\nexport const Footer: React.FC<FooterProps> = ({ className = '', children, ...props }) => {\n const currentYear = new Date().getFullYear();\n\n return (\n <footer className={`footer ${className}`.trim()} {...props}>\n <div className=\"footer__container\">\n {children ? (\n children\n ) : (\n <>\n <div className=\"footer__bottom\">\n <p className=\"footer__copyright\">\n © {currentYear} <strong>HellboyDS</strong> is a design system package published on npm by user <strong>@hellboy</strong>. This project is not affiliated with any comic book, film, television, or other artistic works.\n </p>\n </div>\n </>\n )}\n </div>\n </footer>\n );\n};\n","import React from 'react';\nimport { Input, InputProps } from './Input';\n\nexport interface InputTextProps extends Omit<InputProps, 'type'> {}\n\nexport const InputText = React.forwardRef<HTMLInputElement, InputTextProps>((props, ref) => {\n return <Input ref={ref} {...props} type=\"text\" />;\n});\n\nInputText.displayName = 'InputText';","import * as React from 'react';\nimport { InputField, InputFieldProps } from './InputField';\nimport { Popover } from '../popover/popover';\nimport { DatePicker } from './DatePicker';\nimport { TimePicker } from './TimePicker';\nimport '../../style/components/input/input.css';\n\nexport type InputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' | 'date' | 'time' | 'datetime-local';\n\nexport interface InputProps extends Omit<InputFieldProps, 'type' | 'iconRight' | 'onRightIconClick'> {\n /**\n * Input type with extended support for date/time pickers\n * @default 'text'\n */\n type?: InputType;\n\n /**\n * Show milliseconds in time picker (only for time type)\n * @default false\n */\n showMilliseconds?: boolean;\n\n /**\n * Minute step in time picker (only for time type)\n * @default 1\n */\n minuteStep?: 1 | 5 | 15 | 30;\n\n /**\n * Show clear button for search inputs when they have value\n * @default true\n */\n showClear?: boolean;\n}\n\nconst TYPE_ICON_MAP: Record<string, string> = {\n email: 'mail',\n password: 'lock-closed',\n search: 'search',\n date: 'calendar',\n time: 'time',\n 'datetime-local': 'calendar',\n tel: 'call',\n url: 'link',\n};\n\nconst formatDisplayValue = (val: string, inputType: InputType) => {\n if (!val) return '';\n if (inputType === 'date') {\n const [year, month, day] = val.split('-');\n return `${day}/${month}/${year}`;\n }\n if (inputType === 'time') {\n return val; // Já vem formatado como HH:MM:SS\n }\n if (inputType === 'datetime-local') {\n const [datePart, timePart] = val.split('T');\n if (datePart && timePart) {\n const [year, month, day] = datePart.split('-');\n return `${day}/${month}/${year} ${timePart}`;\n }\n return val;\n }\n return val;\n};\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = 'text',\n label,\n helperText,\n error,\n icon,\n fullWidth = false,\n size = 'md',\n className = '',\n disabled,\n id,\n showMilliseconds = false,\n minuteStep = 1,\n showClear = true,\n ...props\n },\n ref\n ) => {\n const [showPassword, setShowPassword] = React.useState(false);\n const [showDateTimePicker, setShowDateTimePicker] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Determine icons\n const leftIcon = icon || TYPE_ICON_MAP[type];\n const isPasswordType = type === 'password';\n const actualType = isPasswordType && showPassword ? 'text' : (type !== 'date' && type !== 'time' && type !== 'datetime-local' ? type : 'text');\n\n // Right icon - either custom, password toggle, date/time picker, clear button, or type-based\n const isDateTimeType = type === 'date' || type === 'time' || type === 'datetime-local';\n const isSearchType = type === 'search';\n const hasValue = props.value && String(props.value).length > 0;\n\n const rightIconName = isPasswordType\n ? showPassword\n ? 'eye-off'\n : 'eye'\n : isDateTimeType\n ? 'chevron-down'\n : isSearchType && hasValue && showClear\n ? 'x'\n : undefined;\n\n const handleRightIconClick = () => {\n if (isPasswordType) {\n setShowPassword(!showPassword);\n } else if (isDateTimeType) {\n setShowDateTimePicker(!showDateTimePicker);\n } else if (isSearchType && hasValue && showClear) {\n if (props.onChange) {\n props.onChange({ target: { value: '' } } as any);\n }\n }\n };\n\n const handleDateTimeChange = (newValue: string) => {\n if (props.onChange) {\n props.onChange({ target: { value: newValue } } as any);\n }\n };\n\n if (!isDateTimeType) {\n return (\n <InputField\n ref={ref || inputRef}\n type={actualType}\n label={label}\n helperText={helperText}\n error={error}\n icon={leftIcon}\n iconRight={rightIconName}\n onRightIconClick={handleRightIconClick}\n fullWidth={fullWidth}\n size={size}\n className={className}\n disabled={disabled}\n id={id}\n {...props}\n />\n );\n }\n\n // Date/Time picker rendering\n return (\n <div className={`input-container ${fullWidth ? 'input-container--full-width' : ''} ${className}`.trim()}>\n {label && (\n <label htmlFor={id} className=\"input__label\">\n {label}\n </label>\n )}\n <Popover\n trigger={\n <InputField\n ref={ref || inputRef}\n type=\"text\"\n icon={leftIcon}\n iconRight={rightIconName}\n onRightIconClick={() => setShowDateTimePicker(!showDateTimePicker)}\n fullWidth={fullWidth}\n size={size}\n disabled={disabled}\n id={id}\n value={formatDisplayValue(String(props.value || ''), type)}\n placeholder={props.placeholder}\n readOnly\n />\n }\n isOpen={showDateTimePicker}\n onToggle={() => setShowDateTimePicker(!showDateTimePicker)}\n placement=\"bottom\"\n >\n <div style={{ padding: '1rem' }}>\n {(type === 'date' || type === 'datetime-local') && (\n <DatePicker\n value={(String(props.value || '')).split('T')[0]}\n onChange={(newDate) => {\n if (type === 'datetime-local') {\n const time = (String(props.value || '')).split('T')[1] || '00:00:00';\n handleDateTimeChange(`${newDate}T${time}`);\n } else {\n handleDateTimeChange(newDate);\n setShowDateTimePicker(false);\n }\n }}\n disabled={disabled}\n />\n )}\n {(type === 'time' || type === 'datetime-local') && (\n <TimePicker\n value={(String(props.value || '')).split('T')[1] || '00:00:00'}\n onChange={(newTime) => {\n if (type === 'datetime-local') {\n const date = (String(props.value || '')).split('T')[0] || new Date().toISOString().split('T')[0];\n handleDateTimeChange(`${date}T${newTime}`);\n } else {\n handleDateTimeChange(newTime);\n }\n }}\n disabled={disabled}\n showMilliseconds={showMilliseconds}\n minuteStep={minuteStep}\n />\n )}\n </div>\n </Popover>\n {error && <p className=\"input__message input__message--error\">{error}</p>}\n {helperText && !error && <p className=\"input__message\">{helperText}</p>}\n </div>\n );\n }\n);\n\nInput.displayName = 'Input';\n","import * as React from 'react';\nimport { Icon } from '../icons/icons';\nimport '../../style/components/input/input.css';\n\nexport interface InputFieldProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n /**\n * Input native type (text, email, password, etc.)\n */\n type?: string;\n\n /**\n * Label text\n */\n label?: string;\n\n /**\n * Helper text shown below the input\n */\n helperText?: string;\n\n /**\n * Error message - when present, input is in error state\n */\n error?: string;\n\n /**\n * Icon name from our icon library (shown on the left)\n */\n icon?: string;\n\n /**\n * Icon name for the right side\n */\n iconRight?: string;\n\n /**\n * Full width input\n * @default false\n */\n fullWidth?: boolean;\n\n /**\n * Size variant\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n\n /**\n * Custom class name\n */\n className?: string;\n\n /**\n * Right icon click handler\n */\n onRightIconClick?: () => void;\n}\n\nexport const InputField = React.forwardRef<HTMLInputElement, InputFieldProps>(\n (\n {\n type = 'text',\n label,\n helperText,\n error,\n icon,\n iconRight,\n fullWidth = false,\n size = 'md',\n className = '',\n disabled,\n id,\n onRightIconClick,\n ...props\n },\n ref\n ) => {\n const inputId = id || `input-${React.useId()}`;\n\n const containerClasses = [\n 'input-container',\n fullWidth && 'input-container--full-width',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const inputClasses = [\n 'input',\n `input--${size}`,\n error && 'input--error',\n disabled && 'input--disabled',\n icon && 'input--has-icon-left',\n iconRight && 'input--has-icon-right',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={containerClasses}>\n {label && (\n <label htmlFor={inputId} className=\"input__label\">\n {label}\n </label>\n )}\n <div className=\"input__wrapper\">\n {icon && (\n <span className=\"input__icon input__icon--left\" aria-hidden=\"true\">\n <Icon name={icon as any} size={16} />\n </span>\n )}\n <input\n ref={ref}\n type={type}\n id={inputId}\n className={inputClasses}\n disabled={disabled}\n {...props}\n />\n {iconRight && (\n <button\n type=\"button\"\n className=\"input__icon input__icon--right\"\n onClick={onRightIconClick}\n tabIndex={-1}\n aria-label=\"Icon action\"\n >\n <Icon name={iconRight as any} size={16} />\n </button>\n )}\n </div>\n {error && <p className=\"input__message input__message--error\">{error}</p>}\n {helperText && !error && <p className=\"input__message\">{helperText}</p>}\n </div>\n );\n }\n);","import * as React from 'react';\n\ninterface DatePickerProps {\n value: string;\n onChange: (value: string) => void;\n disabled?: boolean;\n}\n\nconst MONTHS = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'\n];\n\nconst DAYS_OF_WEEK = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nexport const DatePicker: React.FC<DatePickerProps> = ({ value, onChange, disabled }) => {\n const parseDate = (dateStr: string) => {\n if (!dateStr) {\n const today = new Date();\n return { year: today.getFullYear(), month: today.getMonth(), day: today.getDate() };\n }\n const [year, month, day] = dateStr.split('-').map(Number);\n return { year, month: month - 1, day };\n };\n\n const { year: initialYear, month: initialMonth, day: selectedDay } = parseDate(value);\n const [currentYear, setCurrentYear] = React.useState(initialYear);\n const [currentMonth, setCurrentMonth] = React.useState(initialMonth);\n\n const getDaysInMonth = (year: number, month: number) => {\n return new Date(year, month + 1, 0).getDate();\n };\n\n const getFirstDayOfMonth = (year: number, month: number) => {\n return new Date(year, month, 1).getDay();\n };\n\n const handleDateSelect = (day: number) => {\n if (disabled) return;\n const formattedDate = `${currentYear}-${String(currentMonth + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n onChange(formattedDate);\n };\n\n const handlePrevMonth = () => {\n if (currentMonth === 0) {\n setCurrentMonth(11);\n setCurrentYear(currentYear - 1);\n } else {\n setCurrentMonth(currentMonth - 1);\n }\n };\n\n const handleNextMonth = () => {\n if (currentMonth === 11) {\n setCurrentMonth(0);\n setCurrentYear(currentYear + 1);\n } else {\n setCurrentMonth(currentMonth + 1);\n }\n };\n\n const daysInMonth = getDaysInMonth(currentYear, currentMonth);\n const firstDay = getFirstDayOfMonth(currentYear, currentMonth);\n const days: (number | null)[] = [\n ...Array(firstDay).fill(null),\n ...Array.from({ length: daysInMonth }, (_, i) => i + 1)\n ];\n\n return (\n <div className=\"date-picker\">\n <div className=\"date-picker__header\">\n <button\n type=\"button\"\n className=\"date-picker__nav\"\n onClick={handlePrevMonth}\n disabled={disabled}\n aria-label=\"Previous month\"\n >\n ‹\n </button>\n <div className=\"date-picker__title\">\n <select\n className=\"date-picker__select\"\n value={currentMonth}\n onChange={(e) => setCurrentMonth(Number(e.target.value))}\n disabled={disabled}\n >\n {MONTHS.map((month, idx) => (\n <option key={month} value={idx}>{month}</option>\n ))}\n </select>\n <select\n className=\"date-picker__select\"\n value={currentYear}\n onChange={(e) => setCurrentYear(Number(e.target.value))}\n disabled={disabled}\n >\n {Array.from({ length: 100 }, (_, i) => currentYear - 50 + i).map(year => (\n <option key={year} value={year}>{year}</option>\n ))}\n </select>\n </div>\n <button\n type=\"button\"\n className=\"date-picker__nav\"\n onClick={handleNextMonth}\n disabled={disabled}\n aria-label=\"Next month\"\n >\n ›\n </button>\n </div>\n <div className=\"date-picker__weekdays\">\n {DAYS_OF_WEEK.map(day => (\n <div key={day} className=\"date-picker__weekday\">{day}</div>\n ))}\n </div>\n <div className=\"date-picker__days\">\n {days.map((day, idx) => (\n <button\n key={idx}\n type=\"button\"\n className={`date-picker__day ${day === selectedDay ? 'date-picker__day--selected' : ''} ${!day ? 'date-picker__day--empty' : ''}`}\n onClick={() => day && handleDateSelect(day)}\n disabled={!day || disabled}\n >\n {day || ''}\n </button>\n ))}\n </div>\n </div>\n );\n};\n","import * as React from 'react';\n\ninterface TimePickerProps {\n value: string;\n onChange: (value: string) => void;\n disabled?: boolean;\n showMilliseconds?: boolean;\n minuteStep?: 1 | 5 | 15 | 30;\n}\n\nconst parseTime = (timeStr: string) => {\n if (!timeStr) return { hours: 0, minutes: 0, seconds: 0, milliseconds: 0 };\n const parts = timeStr.split(':');\n const hours = parseInt(parts[0] || '0', 10);\n const minutes = parseInt(parts[1] || '0', 10);\n const secondsParts = (parts[2] || '0').split('.');\n const seconds = parseInt(secondsParts[0] || '0', 10);\n const milliseconds = parseInt(secondsParts[1] || '0', 10);\n return { hours, minutes, seconds, milliseconds };\n};\n\ninterface TimeColumnProps {\n label: string;\n value: number;\n max: number;\n field: 'hours' | 'minutes' | 'seconds' | 'milliseconds';\n step: number;\n disabled?: boolean;\n onChange: (field: 'hours' | 'minutes' | 'seconds' | 'milliseconds', value: number) => void;\n}\n\nconst TimeColumn: React.FC<TimeColumnProps> = ({ \n label, \n value, \n max, \n field, \n step, \n disabled, \n onChange \n}) => {\n const items = Array.from({ length: Math.floor(max / step) + 1 }, (_, i) => i * step);\n const columnRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (columnRef.current) {\n const selected = columnRef.current.querySelector('.time-picker__item--selected');\n if (selected) {\n selected.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }\n }\n }, [value]);\n\n return (\n <div className=\"time-picker__column\">\n <div className=\"time-picker__label\">{label}</div>\n <div className=\"time-picker__scroll\" ref={columnRef}>\n {items.map(item => (\n <button\n key={item}\n type=\"button\"\n className={`time-picker__item ${item === value ? 'time-picker__item--selected' : ''}`}\n onClick={() => onChange(field, item)}\n disabled={disabled}\n >\n {String(item).padStart(field === 'milliseconds' ? 3 : 2, '0')}\n </button>\n ))}\n </div>\n </div>\n );\n};\n\nexport const TimePicker: React.FC<TimePickerProps> = ({ \n value, \n onChange, \n disabled,\n showMilliseconds = false,\n minuteStep = 1\n}) => {\n // Manter estado interno dos valores para evitar perder seleções\n const [internalTime, setInternalTime] = React.useState(value);\n\n // Sincronizar estado interno quando o valor prop muda\n React.useEffect(() => {\n setInternalTime(value);\n }, [value]);\n\n const { hours, minutes, seconds, milliseconds } = parseTime(internalTime);\n\n const handleChange = (field: 'hours' | 'minutes' | 'seconds' | 'milliseconds', newValue: number) => {\n if (disabled) return;\n \n const currentParsed = parseTime(internalTime);\n const updated = { ...currentParsed, [field]: newValue };\n \n let formattedTime = `${String(updated.hours).padStart(2, '0')}:${String(updated.minutes).padStart(2, '0')}:${String(updated.seconds).padStart(2, '0')}`;\n \n if (showMilliseconds && updated.milliseconds > 0) {\n formattedTime += `.${String(updated.milliseconds).padStart(3, '0')}`;\n }\n \n // Atualizar estado interno imediatamente\n setInternalTime(formattedTime);\n // E notificar o componente pai\n onChange(formattedTime);\n };\n\n return (\n <div className=\"time-picker\">\n <TimeColumn\n label=\"Hours\"\n value={hours}\n max={23}\n field=\"hours\"\n step={1}\n disabled={disabled}\n onChange={handleChange}\n />\n <TimeColumn\n label=\"Minutes\"\n value={minutes}\n max={59}\n field=\"minutes\"\n step={minuteStep}\n disabled={disabled}\n onChange={handleChange}\n />\n <TimeColumn\n label=\"Seconds\"\n value={seconds}\n max={59}\n field=\"seconds\"\n step={1}\n disabled={disabled}\n onChange={handleChange}\n />\n {showMilliseconds && (\n <TimeColumn\n label=\"ms\"\n value={milliseconds}\n max={999}\n field=\"milliseconds\"\n step={1}\n disabled={disabled}\n onChange={handleChange}\n />\n )}\n </div>\n );\n\n};\n","import React from 'react';\nimport { Input, InputProps } from './Input';\n\nexport interface InputEmailProps extends Omit<InputProps, 'type'> {}\n\nexport const InputEmail = React.forwardRef<HTMLInputElement, InputEmailProps>((props, ref) => {\n return <Input ref={ref} {...props} type=\"email\" />;\n});\n\nInputEmail.displayName = 'InputEmail';","import React from 'react';\nimport { Input, InputProps } from './Input';\n\nexport interface InputPasswordProps extends Omit<InputProps, 'type'> {}\n\nexport const InputPassword = React.forwardRef<HTMLInputElement, InputPasswordProps>((props, ref) => {\n return <Input ref={ref} {...props} type=\"password\" />;\n});\n\nInputPassword.displayName = 'InputPassword';","import React from 'react';\nimport { Input, InputProps } from './Input';\n\nexport interface InputSearchProps extends Omit<InputProps, 'type'> {}\n\nexport const InputSearch = React.forwardRef<HTMLInputElement, InputSearchProps>((props, ref) => {\n return <Input ref={ref} {...props} type=\"search\" />;\n});\n\nInputSearch.displayName = 'InputSearch';","import React from 'react';\nimport { Input, InputProps } from './Input';\n\nexport interface InputTelProps extends Omit<InputProps, 'type'> {}\n\nexport const InputTel = React.forwardRef<HTMLInputElement, InputTelProps>((props, ref) => {\n return <Input ref={ref} {...props} type=\"tel\" />;\n});\n\nInputTel.displayName = 'InputTel';","import React from 'react';\nimport { Input, InputProps } from './Input';\n\nexport interface InputUrlProps extends Omit<InputProps, 'type'> {}\n\nexport const InputUrl = React.forwardRef<HTMLInputElement, InputUrlProps>((props, ref) => {\n return <Input ref={ref} {...props} type=\"url\" />;\n});\n\nInputUrl.displayName = 'InputUrl';","import React from 'react';\nimport { Input, InputProps } from './Input';\n\nexport interface InputNumberProps extends Omit<InputProps, 'type'> {}\n\nexport const InputNumber = React.forwardRef<HTMLInputElement, InputNumberProps>((props, ref) => {\n return <Input ref={ref} {...props} type=\"number\" />;\n});\n\nInputNumber.displayName = 'InputNumber';","import React from 'react';\nimport { Input, InputProps } from './Input';\n\nexport interface InputDateProps extends Omit<InputProps, 'type'> {}\n\nexport const InputDate = React.forwardRef<HTMLInputElement, InputDateProps>((props, ref) => {\n return <Input ref={ref} {...props} type=\"date\" />;\n});\n\nInputDate.displayName = 'InputDate';","import React from 'react';\nimport { Input, InputProps } from './Input';\n\nexport interface InputTimeProps extends Omit<InputProps, 'type'> {}\n\nexport const InputTime = React.forwardRef<HTMLInputElement, InputTimeProps>((props, ref) => {\n return <Input ref={ref} {...props} type=\"time\" />;\n});\n\nInputTime.displayName = 'InputTime';","import React from 'react';\nimport { Input, InputProps } from './Input';\n\nexport interface InputDateTimeProps extends Omit<InputProps, 'type'> {}\n\nexport const InputDateTime = React.forwardRef<HTMLInputElement, InputDateTimeProps>((props, ref) => {\n return <Input ref={ref} {...props} type=\"datetime-local\" />;\n});\n\nInputDateTime.displayName = 'InputDateTime';","import * as React from 'react';\nimport { Icon } from '../icons/icons';\nimport '../../style/components/list/list.css';\n\nexport interface ListItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Item content\n */\n children: React.ReactNode;\n\n /**\n * Icon name from our icon library\n */\n icon?: string;\n\n /**\n * Whether the item is selected\n */\n selected?: boolean;\n\n /**\n * Whether the item is disabled\n */\n disabled?: boolean;\n\n /**\n * Click handler\n */\n onClick?: () => void;\n\n /**\n * Custom class name\n */\n className?: string;\n\n /**\n * Category label for organizing items (display only)\n */\n category?: string;\n}\n\nexport interface ListCategoryProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Category title\n */\n title: string;\n\n /**\n * Category items\n */\n children: React.ReactNode;\n\n /**\n * Custom class name\n */\n className?: string;\n}\n\nexport const ListItem: React.FC<ListItemProps> = ({\n children,\n icon,\n selected = false,\n disabled = false,\n onClick,\n category,\n className = '',\n ...props\n}) => {\n const classes = [\n 'list-item',\n selected && 'list-item--selected',\n disabled && 'list-item--disabled',\n onClick && !disabled && 'list-item--interactive',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleClick = () => {\n if (!disabled && onClick) {\n onClick();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!disabled && onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onClick();\n }\n };\n\n return (\n <div\n className={classes}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick && !disabled ? 0 : undefined}\n aria-selected={selected}\n aria-disabled={disabled}\n {...props}\n >\n {icon && (\n <div className=\"list-item__icon\">\n <Icon name={icon} size={20} />\n </div>\n )}\n <div className=\"list-item__content\">\n {category && <div className=\"list-item__category\">{category}</div>}\n <div>{children}</div>\n </div>\n {selected && (\n <div className=\"list-item__indicator\">\n <Icon name=\"checkmark\" size={16} />\n </div>\n )}\n </div>\n );\n};\n\nexport const ListCategory: React.FC<ListCategoryProps> = ({\n title,\n children,\n className = '',\n ...props\n}) => {\n const classes = ['list-category', className].filter(Boolean).join(' ');\n\n return (\n <div className={classes} {...props}>\n <div className=\"list-category__title\">{title}</div>\n <div className=\"list-category__items\">\n {children}\n </div>\n </div>\n );\n};\n\nexport interface ListProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * List items\n */\n children: React.ReactNode;\n\n /**\n * Custom class name\n */\n className?: string;\n}\n\nexport const List: React.FC<ListProps> = ({ children, className = '', ...props }) => {\n const classes = ['list', className].filter(Boolean).join(' ');\n\n return (\n <div className={classes} role=\"list\" {...props}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { Radio as AriakitRadio, RadioProps as AriakitRadioProps, RadioGroup as AriakitRadioGroup, RadioGroupProps as AriakitRadioGroupProps, useRadioStore } from '@ariakit/react';\n\nexport type RadioSize = 'sm' | 'md' | 'lg';\n\nexport interface RadioProps extends Omit<AriakitRadioProps, 'children' | 'size'> {\n /**\n * Size of the radio button\n * @default 'md'\n */\n size?: RadioSize;\n\n /**\n * Label text for the radio button\n */\n label?: React.ReactNode;\n\n /**\n * Error state\n */\n error?: boolean;\n}\n\nexport interface RadioGroupProps extends Omit<AriakitRadioGroupProps, 'onChange'> {\n /**\n * Size of all radio buttons in the group\n * @default 'md'\n */\n size?: RadioSize;\n\n /**\n * Label for the radio group\n */\n label?: string;\n\n /**\n * Error message to display below the radio group\n */\n error?: string;\n\n /**\n * Helper text to display below the radio group\n */\n helperText?: string;\n\n /**\n * Children (Radio components)\n */\n children: React.ReactNode;\n\n /**\n * Orientation of the radio group\n * @default 'vertical'\n */\n orientation?: 'horizontal' | 'vertical';\n\n /**\n * The value of the selected radio button\n */\n value?: string | number | null;\n\n /**\n * Callback when the selected value changes\n */\n onChange?: (value: string | number | null) => void;\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n size = 'md',\n label,\n error = false,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const radioClasses = [\n 'radio',\n `radio--${size}`,\n error && 'radio--error',\n disabled && 'radio--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <label className={radioClasses}>\n <AriakitRadio\n ref={ref}\n disabled={disabled}\n className=\"radio__input\"\n {...props}\n />\n <span className=\"radio__box\">\n <span className=\"radio__dot\" />\n </span>\n {label && <span className=\"radio__label\">{label}</span>}\n </label>\n );\n }\n);\n\nRadio.displayName = 'Radio';\n\nexport const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n (\n {\n size = 'md',\n label,\n error,\n helperText,\n children,\n orientation = 'vertical',\n disabled = false,\n className,\n value,\n onChange,\n ...props\n },\n ref\n ) => {\n const groupClasses = [\n 'radio-group',\n `radio-group--${orientation}`,\n error && 'radio-group--error',\n disabled && 'radio-group--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Create radio group store\n const radioGroupStore = useRadioStore({\n value,\n setValue: onChange,\n });\n\n // Pass size down to children\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === Radio) {\n return React.cloneElement(child, {\n size: child.props.size || size,\n error: error ? true : child.props.error,\n disabled: disabled || child.props.disabled,\n } as any);\n }\n return child;\n });\n\n return (\n <div className={groupClasses}>\n {label && <div className=\"radio-group__label\">{label}</div>}\n <AriakitRadioGroup\n ref={ref}\n store={radioGroupStore}\n className=\"radio-group__container\"\n {...props}\n >\n {childrenWithProps}\n </AriakitRadioGroup>\n {(error || helperText) && (\n <div className=\"radio-group__feedback\">\n {error && <span className=\"radio-group__error-text\">{error}</span>}\n {!error && helperText && <span className=\"radio-group__helper-text\">{helperText}</span>}\n </div>\n )}\n </div>\n );\n }\n);\n\nRadioGroup.displayName = 'RadioGroup';\n","import * as React from 'react';\nimport { Icon } from '../icons/icons';\nimport { Popover } from '../popover/popover';\nimport { List, ListItem } from '../list/List';\nimport '../../style/components/select/select.css';\n\nexport interface SelectOption {\n value: string;\n label: string;\n icon?: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps {\n /**\n * Select options\n */\n options: SelectOption[];\n\n /**\n * Current value\n */\n value?: string;\n\n /**\n * Change handler\n */\n onChange?: (value: string) => void;\n\n /**\n * Label text\n */\n label?: string;\n\n /**\n * Placeholder when no value selected\n */\n placeholder?: string;\n\n /**\n * Helper text shown below the select\n */\n helperText?: string;\n\n /**\n * Error message - when present, select is in error state\n */\n error?: string;\n\n /**\n * Whether the select is disabled\n */\n disabled?: boolean;\n\n /**\n * Full width select\n * @default false\n */\n fullWidth?: boolean;\n\n /**\n * Size variant\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n\n /**\n * Custom class name\n */\n className?: string;\n\n /**\n * ID for accessibility\n */\n id?: string;\n}\n\nexport const Select: React.FC<SelectProps> = ({\n options,\n value,\n onChange,\n label,\n placeholder = 'Select an option',\n helperText,\n error,\n disabled = false,\n fullWidth = false,\n size = 'md',\n className = '',\n id,\n}) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const selectId = id || `select-${React.useId()}`;\n\n const selectedOption = options.find((opt) => opt.value === value);\n\n const handleSelect = (optionValue: string) => {\n onChange?.(optionValue);\n setIsOpen(false);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(!isOpen);\n } else if (e.key === 'Escape') {\n setIsOpen(false);\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n }\n }\n };\n\n const containerClasses = [\n 'select-container',\n fullWidth && 'select-container--full-width',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const triggerClasses = [\n 'select__trigger',\n `select__trigger--${size}`,\n error && 'select__trigger--error',\n disabled && 'select__trigger--disabled',\n isOpen && 'select__trigger--open',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={containerClasses}>\n {label && (\n <label htmlFor={selectId} className=\"select__label\">\n {label}\n </label>\n )}\n <Popover\n trigger={\n <button\n id={selectId}\n type=\"button\"\n className={triggerClasses}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-labelledby={label ? `${selectId}-label` : undefined}\n aria-describedby={\n error ? `${selectId}-error` : helperText ? `${selectId}-helper` : undefined\n }\n aria-invalid={error ? 'true' : 'false'}\n >\n <span className=\"select__trigger-content\">\n {selectedOption?.icon && (\n <Icon\n name={selectedOption.icon}\n size={size === 'sm' ? 16 : size === 'lg' ? 24 : 20}\n />\n )}\n <span className=\"select__trigger-text\">\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n </span>\n <Icon\n name=\"chevron-down\"\n size={size === 'sm' ? 16 : size === 'lg' ? 24 : 20}\n className=\"select__trigger-icon\"\n />\n </button>\n }\n isOpen={isOpen}\n onToggle={() => !disabled && setIsOpen(!isOpen)}\n placement=\"bottom\"\n >\n <div className=\"select__dropdown\" role=\"listbox\">\n <List>\n {options.map((option) => (\n <ListItem\n key={option.value}\n icon={option.icon}\n selected={option.value === value}\n disabled={option.disabled}\n onClick={() => !option.disabled && handleSelect(option.value)}\n role=\"option\"\n aria-selected={option.value === value}\n >\n {option.label}\n </ListItem>\n ))}\n </List>\n </div>\n </Popover>\n {error && (\n <p id={`${selectId}-error`} className=\"select__message select__message--error\">\n {error}\n </p>\n )}\n {helperText && !error && (\n <p id={`${selectId}-helper`} className=\"select__message\">\n {helperText}\n </p>\n )}\n </div>\n );\n};\n","import React, { ReactNode } from 'react';\nimport { Icon } from '../icons';\nimport { Button } from '../button';\nimport './banner.css';\n\nexport type BannerType = 'info' | 'warning' | 'error' | 'success';\n\nexport interface BannerProps {\n type?: BannerType;\n children: ReactNode;\n icon?: string;\n onDismiss?: () => void;\n}\n\nexport const Banner: React.FC<BannerProps> = ({\n type = 'info',\n children,\n icon,\n onDismiss\n}) => {\n const defaultIcons: Record<BannerType, string> = {\n info: 'information-circle',\n warning: 'warning',\n error: 'close-circle',\n success: 'checkmark-circle'\n };\n\n const displayIcon = icon || defaultIcons[type];\n\n return (\n <div className={`banner banner--${type}`}>\n <div className=\"banner__content\">\n <Icon name={displayIcon as any} size={32} />\n <div className=\"banner__message\">{children}</div>\n </div>\n {onDismiss && (\n <Button\n variant=\"ghost\"\n size=\"xs\"\n onClick={onDismiss}\n aria-label=\"Dismiss banner\"\n >\n <Icon name=\"close\" size={20} />\n </Button>\n )}\n </div>\n );\n};","import React from 'react';\nimport '../../style/components/floating-bar/floating-bar.css';\n\nexport type FloatingBarPosition = 'top' | 'bottom';\n\nexport interface FloatingBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Position of the floating bar\n * @default 'bottom'\n */\n position?: FloatingBarPosition;\n\n /**\n * Content of the floating bar\n */\n children: React.ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * FloatingBar Component\n * A floating bar that sticks to the top or bottom within the main layout container\n */\nexport const FloatingBar: React.FC<FloatingBarProps> = ({\n position = 'bottom',\n children,\n className = '',\n ...props\n}) => {\n const classes = [\n 'floating-bar',\n `floating-bar--${position}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div className=\"floating-bar__content\">\n {children}\n </div>\n </div>\n );\n};","import * as React from \"react\";\nimport { Dialog, DialogProps, DialogHeading, useDialogStore } from \"@ariakit/react\";\nimport \"../../style/components/drawer/drawer.css\";\n\nexport type DrawerPlacement = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport interface DrawerProps extends Omit<DialogProps, \"children\"> {\n children: React.ReactNode;\n title?: string;\n placement?: DrawerPlacement;\n size?: string | number;\n store: ReturnType<typeof useDialogStore>;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n children,\n title,\n placement = \"right\",\n size = \"400px\",\n store,\n ...props\n}) => {\n const sizeValue = typeof size === \"number\" ? `${size}px` : size;\n\n const getDrawerStyles = (): React.CSSProperties => {\n const baseStyles: React.CSSProperties = {\n zIndex: 1000,\n };\n\n switch (placement) {\n case \"top\":\n return {\n ...baseStyles,\n height: sizeValue,\n };\n case \"bottom\":\n return {\n ...baseStyles,\n height: sizeValue,\n };\n case \"left\":\n return {\n ...baseStyles,\n width: sizeValue,\n };\n case \"right\":\n default:\n return {\n ...baseStyles,\n width: sizeValue,\n };\n }\n };\n\n return (\n <Dialog\n store={store}\n {...props}\n className={`drawer drawer--${placement}`}\n style={getDrawerStyles()}\n backdrop={<div className=\"drawer__backdrop\" />}\n >\n <div className=\"drawer__content\">\n {title && (\n <div className=\"drawer__header\">\n <DialogHeading className=\"drawer__title\">{title}</DialogHeading>\n <button\n className=\"drawer__close\"\n onClick={store.hide}\n aria-label=\"Close drawer\"\n >\n ✕\n </button>\n </div>\n )}\n <div className=\"drawer__body\">\n {children}\n </div>\n </div>\n </Dialog>\n );\n};","import * as React from \"react\";\nimport \"../../style/components/table/table.css\";\n\nexport interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {\n /**\n * Whether the table should have a border\n */\n bordered?: boolean;\n /**\n * Whether the table should have striped rows\n */\n striped?: boolean;\n /**\n * Whether the table should have hover effects\n */\n hover?: boolean;\n /**\n * Size variant for the table\n */\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport interface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nexport interface TableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nexport interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {}\n\nexport interface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n /**\n * Whether this is a header cell\n */\n header?: boolean;\n}\n\nexport interface TableContainerProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Table: React.FC<TableProps> = ({\n bordered = false,\n striped = true,\n hover = true,\n size = \"md\",\n className = \"\",\n children,\n ...props\n}) => {\n const classes = [\n \"table\",\n bordered && \"table--bordered\",\n striped && \"table--striped\",\n hover && \"table--hover\",\n size && `table--${size}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <table className={classes} {...props}>\n {children}\n </table>\n );\n};\n\nexport const TableHead: React.FC<TableHeadProps> = ({\n className = \"\",\n children,\n ...props\n}) => {\n const classes = [\"table__head\", className].filter(Boolean).join(\" \");\n\n return (\n <thead className={classes} {...props}>\n {children}\n </thead>\n );\n};\n\nexport const TableBody: React.FC<TableBodyProps> = ({\n className = \"\",\n children,\n ...props\n}) => {\n const classes = [\"table__body\", className].filter(Boolean).join(\" \");\n\n return (\n <tbody className={classes} {...props}>\n {children}\n </tbody>\n );\n};\n\nexport const TableRow: React.FC<TableRowProps> = ({\n className = \"\",\n children,\n ...props\n}) => {\n const classes = [\"table__row\", className].filter(Boolean).join(\" \");\n\n return (\n <tr className={classes} {...props}>\n {children}\n </tr>\n );\n};\n\nexport const TableCell: React.FC<TableCellProps> = ({\n header = false,\n className = \"\",\n children,\n ...props\n}) => {\n const classes = [\n header ? \"table__cell--header\" : \"table__cell\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (header) {\n return (\n <th className={classes} {...props}>\n {children}\n </th>\n );\n }\n\n return (\n <td className={classes} {...props}>\n {children}\n </td>\n );\n};\n\nexport const TableContainer: React.FC<TableContainerProps> = ({\n className = \"\",\n children,\n ...props\n}) => {\n const classes = [\"table-container\", className].filter(Boolean).join(\" \");\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n};","import * as React from \"react\";\nimport \"../../style/components/page-index/page-index.css\";\n\nexport interface PageIndexItem {\n id: string;\n title: string;\n level: number;\n element: HTMLElement;\n}\n\nexport interface PageIndexProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Custom title for the index\n */\n title?: string;\n /**\n * Whether the sidebar is collapsed\n */\n collapsed?: boolean;\n}\n\nexport const PageIndex: React.FC<PageIndexProps> = ({\n title = \"On this page\",\n collapsed = false,\n className = \"\",\n ...props\n}) => {\n const [items, setItems] = React.useState<PageIndexItem[]>([]);\n const [activeId, setActiveId] = React.useState<string>(\"\");\n const [manualNavigation, setManualNavigation] = React.useState<boolean>(false);\n\n // Function to extract text content from element\n const getTextContent = React.useCallback((element: HTMLElement): string => {\n // For headings, get text content\n if (element.tagName.match(/^H[1-6]$/)) {\n return element.textContent || \"\";\n }\n // For other elements, try to find a title attribute or data attribute\n return element.getAttribute(\"data-page-index-title\") ||\n element.getAttribute(\"title\") ||\n element.textContent ||\n \"\";\n }, []);\n\n // Function to generate ID from text\n const generateId = React.useCallback((text: string): string => {\n return text\n .toLowerCase()\n .replace(/[^\\w\\s-]/g, \"\") // Remove special characters\n .replace(/\\s+/g, \"-\") // Replace spaces with hyphens\n .replace(/-+/g, \"-\") // Replace multiple hyphens with single\n .trim();\n }, []);\n\n // Scan the page for headings that are direct children of sections within pages\n const scanPage = React.useCallback(() => {\n const newItems: PageIndexItem[] = [];\n const seenIds = new Set<string>(); // Track seen IDs to prevent duplicates\n\n // Find all pages (main elements) and their sections\n const pages = document.querySelectorAll('main');\n pages.forEach((page) => {\n const pageElement = page as HTMLElement;\n\n // Skip pages that are inside the page-index component\n if (pageElement.closest('.page-index')) {\n return;\n }\n\n // Find all sections within this page\n const sections = pageElement.querySelectorAll('section');\n sections.forEach((section) => {\n const sectionElement = section as HTMLElement;\n\n // Skip sections that are inside the page-index component\n if (sectionElement.closest('.page-index')) {\n return;\n }\n\n // Find direct child headings (h1, h2, h3, h4, h5, h6) of this section\n // Using Array.from and filtering for better browser compatibility\n const childElements = Array.from(sectionElement.children);\n const headings = childElements.filter(child =>\n child.tagName.match(/^H[1-6]$/)\n ) as HTMLElement[];\n\n headings.forEach((element) => {\n const text = getTextContent(element);\n if (text.trim()) {\n // Skip headings inside component previews, demo containers, or dialogs/drawers\n if (element.closest('.component-preview, [data-demo], .demo, .example, .drawer, [role=\"dialog\"]')) {\n return;\n }\n\n const id = element.id || generateId(text);\n \n // Skip if we've already seen this ID (prevent duplicates)\n if (seenIds.has(id)) {\n return;\n }\n seenIds.add(id);\n\n // Ensure the element has an ID\n if (!element.id) {\n element.id = id;\n }\n\n // Determine level based on heading tag\n const tagName = element.tagName.toLowerCase();\n const level = parseInt(tagName.substring(1)); // h1 -> 1, h2 -> 2, etc.\n\n newItems.push({\n id,\n title: text.trim(),\n level,\n element,\n });\n }\n });\n });\n });\n\n // Sort items by their position in the document\n newItems.sort((a, b) => {\n const aRect = a.element.getBoundingClientRect();\n const bRect = b.element.getBoundingClientRect();\n return aRect.top - bRect.top;\n });\n\n setItems(newItems);\n }, [getTextContent, generateId]);\n\n // Set up intersection observer to track active section\n React.useEffect(() => {\n const observer = new IntersectionObserver(\n (entries) => {\n // Skip intersection updates during manual navigation\n if (manualNavigation) return;\n\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n setActiveId(entry.target.id);\n }\n });\n },\n {\n rootMargin: \"-80px 0px -80% 0px\",\n threshold: 0,\n }\n );\n\n items.forEach((item) => {\n observer.observe(item.element);\n });\n\n return () => {\n items.forEach((item) => {\n observer.unobserve(item.element);\n });\n };\n }, [items, manualNavigation]);\n\n // Scan page on mount and when dependencies change\n React.useEffect(() => {\n // Small delay to ensure DOM is ready\n const timer = setTimeout(() => {\n scanPage();\n }, 100);\n\n // Also re-scan when URL changes (for SPA navigation)\n const handleLocationChange = () => {\n setTimeout(() => {\n scanPage();\n }, 150); // Slightly longer delay for route transitions\n };\n\n // Listen for popstate (browser back/forward)\n window.addEventListener('popstate', handleLocationChange);\n \n // Listen for custom navigation events\n window.addEventListener('locationchange', handleLocationChange);\n\n // MutationObserver to detect DOM changes\n const observer = new MutationObserver(() => {\n // Debounce the scan to avoid too many re-scans\n clearTimeout(timer);\n setTimeout(() => {\n scanPage();\n }, 200);\n });\n\n // Observe changes to the main content area\n const mainContent = document.querySelector('main') || document.body;\n observer.observe(mainContent, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['data-section-title', 'id'],\n });\n\n return () => {\n clearTimeout(timer);\n window.removeEventListener('popstate', handleLocationChange);\n window.removeEventListener('locationchange', handleLocationChange);\n observer.disconnect();\n };\n }, [scanPage]);\n\n // Handle click on index item\n const handleItemClick = React.useCallback((id: string) => {\n const element = document.getElementById(id);\n if (element) {\n // Set manual navigation flag to prevent intersection observer interference\n setManualNavigation(true);\n setActiveId(id);\n\n element.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n\n // Reset manual navigation flag after scroll animation completes\n setTimeout(() => {\n setManualNavigation(false);\n }, 1000); // 1 second should be enough for smooth scroll\n }\n }, []);\n\n const classes = [\n \"page-index\",\n collapsed && \"page-index--collapsed\",\n className,\n ].filter(Boolean).join(\" \");\n\n if (items.length === 0) {\n return null;\n }\n\n // Remove custom props that shouldn't be passed to DOM\n const { sidebarWidth, setSidebarWidth, ...domProps } = props as any;\n\n return (\n <div className={classes} {...domProps}>\n {!collapsed && (\n <h3 className=\"page-index__title\">{title}</h3>\n )}\n <nav className=\"page-index__nav\" aria-label=\"Page contents\">\n <ul className=\"page-index__list\">\n {items.map((item) => (\n <li\n key={item.id}\n className={`page-index__item page-index__item--level-${item.level}`}\n >\n <button\n className={`page-index__link ${\n activeId === item.id ? \"page-index__link--active\" : \"\"\n }`}\n onClick={() => handleItemClick(item.id)}\n aria-current={activeId === item.id ? \"location\" : undefined}\n >\n {collapsed ? (\n <span className=\"page-index__link-text--collapsed\">\n {item.title.charAt(0)}\n </span>\n ) : (\n item.title\n )}\n </button>\n </li>\n ))}\n </ul>\n </nav>\n </div>\n );\n};"],"mappings":"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","names":["React","jsx","jsx","React","jsx","React","jsx","jsxs","React","React","jsx","jsxs","React","React","React","useState","useCallback","jsx","useState","useCallback","React","Fragment","jsx","jsxs","jsx","useMemo","Fragment","jsx","jsxs","useMemo","jsx","jsxs","jsx","jsx","React","Fragment","jsx","jsxs","jsx","jsxs","React","React","ReactDOM","Fragment","jsx","jsxs","jsx","jsxs","children","jsx","jsxs","React","jsx","jsxs","jsx","useState","useEffect","useCallback","React","useState","useCallback","useRef","jsx","jsxs","useState","useRef","React","useCallback","jsx","jsxs","useState","useEffect","useCallback","jsx","Fragment","jsx","jsxs","React","React","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","React","React","jsx","React","React","jsx","React","React","jsx","React","React","jsx","React","React","jsx","React","React","jsx","React","React","jsx","React","React","jsx","React","React","jsx","React","jsx","jsxs","jsx","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","React","jsx","jsxs"]}
|
package/hellboy-ds-0.1.2.tgz
DELETED
|
Binary file
|