@allxsmith/bestax-bulma 2.6.2 → 3.0.1
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 +2 -2
- package/dist/bestax.css +3 -0
- package/dist/bestax.css.map +1 -0
- package/dist/bestax.js +1 -0
- package/dist/extras.css +3 -0
- package/dist/extras.css.map +1 -0
- package/dist/extras.js +1 -0
- package/dist/index.cjs.js +6214 -647
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +6154 -649
- package/dist/index.esm.js.map +1 -1
- package/dist/types/components/Carousel.d.ts +34 -0
- package/dist/types/components/Collapse.d.ts +17 -0
- package/dist/types/components/Dialog.d.ts +47 -0
- package/dist/types/components/Loading.d.ts +18 -0
- package/dist/types/components/Navbar.d.ts +10 -0
- package/dist/types/components/Panel.d.ts +2 -4
- package/dist/types/components/Sidebar.d.ts +37 -0
- package/dist/types/components/Steps.d.ts +45 -0
- package/dist/types/components/Tabs.d.ts +42 -6
- package/dist/types/components/Toast.d.ts +46 -0
- package/dist/types/components/Tooltip.d.ts +22 -0
- package/dist/types/elements/Button.d.ts +1 -1
- package/dist/types/elements/Code.d.ts +9 -0
- package/dist/types/elements/Divider.d.ts +7 -0
- package/dist/types/elements/Emphasis.d.ts +9 -0
- package/dist/types/elements/Figure.d.ts +17 -0
- package/dist/types/elements/Icon.d.ts +1 -0
- package/dist/types/elements/Link.d.ts +10 -0
- package/dist/types/elements/LinkButton.d.ts +8 -0
- package/dist/types/elements/ListItem.d.ts +9 -0
- package/dist/types/elements/Notification.d.ts +31 -0
- package/dist/types/elements/OrderedList.d.ts +9 -0
- package/dist/types/elements/Paragraph.d.ts +9 -0
- package/dist/types/elements/Pre.d.ts +9 -0
- package/dist/types/elements/Span.d.ts +9 -0
- package/dist/types/elements/Strong.d.ts +9 -0
- package/dist/types/elements/UnorderedList.d.ts +9 -0
- package/dist/types/form/Autocomplete.d.ts +42 -0
- package/dist/types/form/Checkbox.d.ts +7 -2
- package/dist/types/form/Checkboxes.d.ts +6 -1
- package/dist/types/form/DateInput.d.ts +26 -0
- package/dist/types/form/DateInputBase.d.ts +42 -0
- package/dist/types/form/DateTimeInput.d.ts +26 -0
- package/dist/types/form/DateTimeInputBase.d.ts +50 -0
- package/dist/types/form/Field.d.ts +2 -1
- package/dist/types/form/File.d.ts +3 -2
- package/dist/types/form/FormContext.d.ts +22 -0
- package/dist/types/form/Input.d.ts +22 -11
- package/dist/types/form/InputBase.d.ts +16 -0
- package/dist/types/form/Numberinput.d.ts +30 -0
- package/dist/types/form/Radio.d.ts +7 -2
- package/dist/types/form/Radios.d.ts +6 -1
- package/dist/types/form/Rate.d.ts +38 -0
- package/dist/types/form/Select.d.ts +18 -11
- package/dist/types/form/SelectBase.d.ts +19 -0
- package/dist/types/form/Slider.d.ts +49 -0
- package/dist/types/form/Switch.d.ts +17 -0
- package/dist/types/form/Taginput.d.ts +54 -0
- package/dist/types/form/TextArea.d.ts +13 -14
- package/dist/types/form/TextAreaBase.d.ts +19 -0
- package/dist/types/form/TimeInput.d.ts +26 -0
- package/dist/types/form/TimeInputBase.d.ts +44 -0
- package/dist/types/form/_pickerInternals/Calendar.d.ts +26 -0
- package/dist/types/form/_pickerInternals/PickerPopover.d.ts +20 -0
- package/dist/types/form/_pickerInternals/TimeWheels.d.ts +29 -0
- package/dist/types/form/_pickerInternals/audioTick.d.ts +3 -0
- package/dist/types/form/_pickerInternals/dateUtils.d.ts +39 -0
- package/dist/types/form/_pickerInternals/formatters.d.ts +13 -0
- package/dist/types/form/_pickerInternals/haptics.d.ts +1 -0
- package/dist/types/form/_pickerInternals/pickerTypes.d.ts +31 -0
- package/dist/types/form/_pickerInternals/segmentMap.d.ts +20 -0
- package/dist/types/form/_pickerInternals/useFocusTrap.d.ts +7 -0
- package/dist/types/form/_pickerInternals/useNativeMobilePicker.d.ts +10 -0
- package/dist/types/form/_pickerInternals/useSegmentedEntry.d.ts +45 -0
- package/dist/types/form/fieldProps.d.ts +12 -0
- package/dist/types/helpers/bulmaClassHelpers.d.ts +35 -0
- package/dist/types/helpers/useBulmaClasses.d.ts +16 -83
- package/dist/types/helpers/useColorClasses.d.ts +8 -0
- package/dist/types/helpers/useFlexboxClasses.d.ts +12 -0
- package/dist/types/helpers/useOtherClasses.d.ts +15 -0
- package/dist/types/helpers/useSpacingClasses.d.ts +18 -0
- package/dist/types/helpers/useTypographyClasses.d.ts +19 -0
- package/dist/types/helpers/useVisibilityClasses.d.ts +10 -0
- package/dist/types/index.d.ts +53 -3
- package/dist/versions/bestax-bulma-prefixed.css +3 -0
- package/dist/versions/bestax-bulma-prefixed.css.map +1 -0
- package/dist/versions/bestax-bulma-prefixed.js +1 -0
- package/dist/versions/bestax-no-dark-mode.css +3 -0
- package/dist/versions/bestax-no-dark-mode.css.map +1 -0
- package/dist/versions/bestax-no-dark-mode.js +1 -0
- package/dist/versions/bestax-no-helpers-prefixed.css +3 -0
- package/dist/versions/bestax-no-helpers-prefixed.css.map +1 -0
- package/dist/versions/bestax-no-helpers-prefixed.js +1 -0
- package/dist/versions/bestax-no-helpers.css +3 -0
- package/dist/versions/bestax-no-helpers.css.map +1 -0
- package/dist/versions/bestax-no-helpers.js +1 -0
- package/dist/versions/bestax-prefixed.css +3 -0
- package/dist/versions/bestax-prefixed.css.map +1 -0
- package/dist/versions/bestax-prefixed.js +1 -0
- package/package.json +100 -21
- package/src/scss/_mixins.scss +215 -0
- package/src/scss/_variables.scss +94 -0
- package/src/scss/bestax.scss +18 -0
- package/src/scss/components/_carousel.scss +580 -0
- package/src/scss/components/_collapse.scss +126 -0
- package/src/scss/components/_dialog.scss +134 -0
- package/src/scss/components/_index.scss +13 -0
- package/src/scss/components/_loading.scss +231 -0
- package/src/scss/components/_sidebar.scss +347 -0
- package/src/scss/components/_steps.scss +459 -0
- package/src/scss/components/_tabs.scss +147 -0
- package/src/scss/components/_toast.scss +244 -0
- package/src/scss/components/_tooltip.scss +250 -0
- package/src/scss/elements/_index.scss +5 -0
- package/src/scss/elements/_linkbutton.scss +77 -0
- package/src/scss/extras.scss +24 -0
- package/src/scss/form/_autocomplete.scss +261 -0
- package/src/scss/form/_checkbox.scss +217 -0
- package/src/scss/form/_dateinput.scss +292 -0
- package/src/scss/form/_datetimeinput.scss +191 -0
- package/src/scss/form/_index.scss +16 -0
- package/src/scss/form/_numberinput.scss +176 -0
- package/src/scss/form/_picker-popover.scss +185 -0
- package/src/scss/form/_radio.scss +196 -0
- package/src/scss/form/_rate.scss +307 -0
- package/src/scss/form/_slider.scss +630 -0
- package/src/scss/form/_switch.scss +314 -0
- package/src/scss/form/_taginput.scss +356 -0
- package/src/scss/form/_timeinput.scss +374 -0
- package/src/scss/helpers/_cursor.scss +5 -0
- package/src/scss/helpers/_index.scss +2 -0
- package/src/scss/helpers/_sizing.scss +5 -0
- package/src/scss/versions/bestax-bulma-prefixed.scss +15 -0
- package/src/scss/versions/bestax-no-dark-mode.scss +32 -0
- package/src/scss/versions/bestax-no-helpers-prefixed.scss +22 -0
- package/src/scss/versions/bestax-no-helpers.scss +23 -0
- package/src/scss/versions/bestax-prefixed.scss +15 -0
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/helpers/Config.tsx","../src/helpers/classNames.ts","../src/helpers/useBulmaClasses.tsx","../src/columns/Column.tsx","../src/columns/Columns.tsx","../src/components/Breadcrumb.tsx","../src/components/Card.tsx","../src/components/Dropdown.tsx","../src/components/Menu.tsx","../src/components/Message.tsx","../src/components/Modal.tsx","../src/components/Navbar.tsx","../src/components/Pagination.tsx","../src/components/Panel.tsx","../src/components/Tabs.tsx","../src/elements/Block.tsx","../src/elements/Box.tsx","../src/elements/Button.tsx","../src/elements/Buttons.tsx","../src/elements/Content.tsx","../src/elements/Delete.tsx","../src/elements/Icon.tsx","../src/elements/IconText.tsx","../src/elements/Image.tsx","../src/elements/Notification.tsx","../src/elements/Progress.tsx","../src/elements/Skeleton.tsx","../src/elements/SubTitle.tsx","../src/elements/Table.tsx","../src/elements/Tag.tsx","../src/elements/Tags.tsx","../src/elements/Tbody.tsx","../src/elements/Td.tsx","../src/elements/Tfoot.tsx","../src/elements/Th.tsx","../src/elements/Thead.tsx","../src/elements/Title.tsx","../src/elements/Tr.tsx","../src/form/Checkbox.tsx","../src/form/Checkboxes.tsx","../src/form/Control.tsx","../src/form/Field.tsx","../src/form/File.tsx","../src/form/Input.tsx","../src/form/Radio.tsx","../src/form/Radios.tsx","../src/form/Select.tsx","../src/form/TextArea.tsx","../src/grid/Cell.tsx","../src/grid/Grid.tsx","../src/helpers/Theme.tsx","../src/layout/Container.tsx","../src/layout/Footer.tsx","../src/layout/Hero.tsx","../src/layout/Level.tsx","../src/layout/Media.tsx","../src/layout/Section.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode } from 'react';\n\ntype IconLibrary = 'fa' | 'mdi' | 'ion' | 'material-icons' | 'material-symbols';\n\nexport interface ConfigContextProps {\n classPrefix?: string;\n iconLibrary?: IconLibrary;\n}\n\nconst ConfigContext = createContext<ConfigContextProps>({});\n\nexport const useConfig = () => useContext(ConfigContext);\n\nexport interface ConfigProviderProps {\n children: ReactNode;\n classPrefix?: string;\n iconLibrary?: IconLibrary;\n}\n\n/**\n * ConfigProvider injects configuration into all child components via React context.\n * - classPrefix: Used by components to prefix their classNames.\n * - iconLibrary: Sets the default icon library for Icon components.\n */\nexport const ConfigProvider: React.FC<ConfigProviderProps> = ({\n classPrefix,\n iconLibrary,\n children,\n}) => {\n return (\n <ConfigContext.Provider value={{ classPrefix, iconLibrary }}>\n {children}\n </ConfigContext.Provider>\n );\n};\n\n/**\n * Utility hook for components to get the classPrefix and apply it to their classNames.\n * Usage: const { classPrefix } = useConfig();\n */\nexport const useClassPrefix = () => {\n const { classPrefix } = useConfig();\n return classPrefix || '';\n};\n\n/**\n * Utility function to create prefixed Bulma modifier classes.\n * Usage: const prefixedClass = usePrefixedClass('is-primary');\n */\nexport const usePrefixedClass = () => {\n const { classPrefix } = useConfig();\n return (className: string) =>\n classPrefix ? `${classPrefix}${className}` : className;\n};\n\n/**\n * Utility hook to get the default icon library setting.\n * Usage: const iconLibrary = useIconLibrary();\n */\nexport const useIconLibrary = () => {\n const { iconLibrary } = useConfig();\n return iconLibrary;\n};\n","import { useConfig } from './Config';\n\n/**\n * Returns a space-separated string of class names based on input arguments.\n *\n * Accepts any mix of strings, numbers, arrays, or objects. Falsy values are ignored.\n * Array and object values are recursively flattened, and object keys are included\n * if their value is truthy. Duplicate class names are removed.\n *\n * @param {...(string | number | undefined | null | false | Record<string, unknown> | unknown[])} args - Class values to join.\n * @returns {string} A space-separated string of unique class names.\n *\n * @example\n * classNames('foo', ['bar', { baz: true }], { qux: false, quux: true });\n * // => 'foo bar baz quux'\n */\nexport function classNames(\n ...args: (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[]\n): string {\n const classSet = new Set<string>();\n\n function process(\n item:\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n ) {\n if (item === undefined || item === null || item === false || item === '') {\n return;\n }\n if (typeof item === 'string' || typeof item === 'number') {\n for (const cls of String(item).split(/\\s+/)) {\n if (cls) classSet.add(cls);\n }\n } else if (Array.isArray(item)) {\n for (const sub of item as (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[])\n process(sub);\n } else if (typeof item === 'object') {\n for (const key in item) {\n if (Object.prototype.hasOwnProperty.call(item, key) && item[key]) {\n for (const cls of key.split(/\\s+/)) {\n if (cls) classSet.add(cls);\n }\n }\n }\n }\n }\n\n for (const arg of args) {\n process(arg);\n }\n return Array.from(classSet).join(' ');\n}\n\n/**\n * Creates a prefixed version of classNames that automatically applies a prefix to all class names.\n *\n * @param {string} classPrefix - The prefix to apply to all class names.\n * @returns {Function} A classNames function that applies the prefix.\n *\n * @example\n * const prefixedClassNames = createPrefixedClassNames('bulma-');\n * prefixedClassNames('button', { 'is-primary': true });\n * // => 'bulma-button bulma-is-primary'\n */\nexport function createPrefixedClassNames(classPrefix: string) {\n return function prefixedClassNames(\n ...args: (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[]\n ): string {\n const classSet = new Set<string>();\n\n function process(\n item:\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n ) {\n if (\n item === undefined ||\n item === null ||\n item === false ||\n item === ''\n ) {\n return;\n }\n if (typeof item === 'string' || typeof item === 'number') {\n for (const cls of String(item).split(/\\s+/)) {\n if (cls) {\n classSet.add(`${classPrefix}${cls}`);\n }\n }\n } else if (Array.isArray(item)) {\n for (const sub of item as (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[])\n process(sub);\n } else if (typeof item === 'object') {\n for (const key in item) {\n if (Object.prototype.hasOwnProperty.call(item, key) && item[key]) {\n for (const cls of key.split(/\\s+/)) {\n if (cls) {\n classSet.add(`${classPrefix}${cls}`);\n }\n }\n }\n }\n }\n }\n\n for (const arg of args) {\n process(arg);\n }\n return Array.from(classSet).join(' ');\n };\n}\n\nexport default classNames;\n\n/**\n * A simple wrapper around classNames that applies an optional prefix to all class names.\n *\n * @param {string | undefined} prefix - The prefix to apply to all class names. If undefined, no prefix is applied.\n * @param {...(string | number | undefined | null | false | Record<string, unknown> | unknown[])} args - Class values to join.\n * @returns {string} A space-separated string of unique class names, with prefix applied if provided.\n *\n * @example\n * prefixedClassNames('bulma-', 'button', { 'is-primary': true });\n * // => 'bulma-button bulma-is-primary'\n *\n * prefixedClassNames(undefined, 'button', { 'is-primary': true });\n * // => 'button is-primary'\n */\nexport function prefixedClassNames(\n prefix: string | undefined,\n ...args: (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[]\n): string {\n if (!prefix) {\n return classNames(...args);\n }\n\n return createPrefixedClassNames(prefix)(...args);\n}\n\n/**\n * Hook that automatically applies the classPrefix from Config context to class names.\n *\n * @param {...(string | number | undefined | null | false | Record<string, unknown> | unknown[])} args - Class values to join.\n * @returns {string} A space-separated string of unique class names with prefix applied from context.\n *\n * @example\n * // With ConfigProvider providing classPrefix=\"bulma-\"\n * const classes = usePrefixedClassNames('button', { 'is-primary': true });\n * // => 'bulma-button bulma-is-primary'\n */\nexport function usePrefixedClassNames(\n ...args: (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[]\n): string {\n const { classPrefix } = useConfig();\n\n return prefixedClassNames(classPrefix, ...args);\n}\n","import { useMemo } from 'react';\nimport { classNames } from '../helpers/classNames';\nimport { useConfig } from './Config';\n\n/**\n * Valid Bulma color classes.\n * @example 'primary', 'link', 'info'\n */\nexport const validColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'black',\n 'black-bis',\n 'black-ter',\n 'grey-darker',\n 'grey-dark',\n 'grey',\n 'grey-light',\n 'grey-lighter',\n 'white',\n 'light',\n 'dark',\n] as const;\n\n/**\n * Valid Bulma color shade suffixes.\n<<<<<<< HEAD\n * @example '00', '05', 'invert', 'light', 'dark'\n=======\n * @example '00', '05', 'invert', 'light', 'dark', 'soft', 'bold', 'on-scheme'\n>>>>>>> af5b1f7 (fix(bulma-ui): resolve flex item properties and Card compound component issues (#55))\n */\nexport const validColorShades = [\n '00',\n '05',\n '10',\n '15',\n '20',\n '25',\n '30',\n '35',\n '40',\n '45',\n '50',\n '55',\n '60',\n '65',\n '70',\n '75',\n '80',\n '85',\n '90',\n '95',\n 'invert',\n 'light',\n 'dark',\n 'soft',\n 'bold',\n 'on-scheme',\n] as const;\n\n/**\n * Valid Bulma size classes for margins and paddings.\n * @example '0', '1', 'auto'\n */\nexport const validSizes = ['0', '1', '2', '3', '4', '5', '6', 'auto'] as const;\n\n/**\n * Valid Bulma text size classes.\n * @example '1', '2', '3'\n */\nexport const validTextSizes = ['1', '2', '3', '4', '5', '6', '7'] as const;\n\n/**\n * Valid Bulma text alignment classes.\n * @example 'centered', 'left', 'right'\n */\nexport const validAlignments = [\n 'centered',\n 'justified',\n 'left',\n 'right',\n] as const;\n\n/**\n * Valid Bulma text transformation classes.\n * @example 'capitalized', 'uppercase', 'italic'\n */\nexport const validTextTransforms = [\n 'capitalized',\n 'lowercase',\n 'uppercase',\n 'italic',\n] as const;\n\n/**\n * Valid Bulma text weight classes.\n * @example 'light', 'normal', 'bold'\n */\nexport const validTextWeights = [\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n] as const;\n\n/**\n * Valid Bulma font family classes.\n * @example 'sans-serif', 'monospace', 'code'\n */\nexport const validFontFamilies = [\n 'sans-serif',\n 'monospace',\n 'primary',\n 'secondary',\n 'code',\n] as const;\n\n/**\n * Valid Bulma display classes.\n * @example 'block', 'flex', 'inline'\n */\nexport const validDisplays = [\n 'block',\n 'flex',\n 'inline',\n 'inline-block',\n 'inline-flex',\n] as const;\n\n/**\n * Valid Bulma visibility classes.\n<<<<<<< HEAD\n=======\n * These are all the valid visibility options available in Bulma.\n>>>>>>> af5b1f7 (fix(bulma-ui): resolve flex item properties and Card compound component issues (#55))\n * @example 'hidden', 'sr-only', 'invisible'\n */\nexport const validVisibilities = ['hidden', 'sr-only', 'invisible'] as const;\n\n/**\n * Valid Bulma flex direction classes.\n * @example 'row', 'column', 'row-reverse'\n */\nexport const validFlexDirections = [\n 'row',\n 'row-reverse',\n 'column',\n 'column-reverse',\n] as const;\n\n/**\n * Valid Bulma flex wrap classes.\n * @example 'nowrap', 'wrap', 'wrap-reverse'\n */\nexport const validFlexWraps = ['nowrap', 'wrap', 'wrap-reverse'] as const;\n\n/**\n * Valid Bulma justify-content classes.\n * @example 'flex-start', 'center', 'space-between'\n */\nexport const validJustifyContents = [\n 'flex-start',\n 'flex-end',\n 'center',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'start',\n 'end',\n 'left',\n 'right',\n] as const;\n\n/**\n * Valid Bulma align-content classes.\n * @example 'flex-start', 'center', 'stretch'\n */\nexport const validAlignContents = [\n 'flex-start',\n 'flex-end',\n 'center',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch',\n] as const;\n\n/**\n * Valid Bulma align-items classes.\n * @example 'stretch', 'flex-start', 'center'\n */\nexport const validAlignItems = [\n 'stretch',\n 'flex-start',\n 'flex-end',\n 'center',\n 'baseline',\n 'start',\n 'end',\n] as const;\n\n/**\n * Valid Bulma align-self classes.\n * @example 'auto', 'flex-start', 'center'\n */\nexport const validAlignSelfs = [\n 'auto',\n 'flex-start',\n 'flex-end',\n 'center',\n 'baseline',\n 'stretch',\n] as const;\n\n/**\n * Valid Bulma flex grow and shrink values.\n * @example '0', '1', '2', '3', '4', '5'\n */\nexport const validFlexGrowShrink = ['0', '1', '2', '3', '4', '5'] as const;\n\n/**\n * Valid Bulma viewport classes for responsive design.\n * @example 'mobile', 'tablet', 'desktop'\n */\nexport const validViewports = [\n 'mobile',\n 'tablet',\n 'desktop',\n 'widescreen',\n 'fullhd',\n] as const;\n\n/**\n * Props for applying Bulma helper classes to components.\n */\nexport interface BulmaClassesProps {\n /** Text color class (e.g., 'primary', 'info'). */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color class (e.g., 'primary', 'info'). */\n backgroundColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color shade suffix (e.g., '00', 'invert'). */\n colorShade?: (typeof validColorShades)[number];\n /** Background color shade suffix (e.g., '00', 'invert'). */\n backgroundColorShade?: (typeof validColorShades)[number];\n /** Margin (e.g., '0', '1'). */\n m?: (typeof validSizes)[number];\n /** Margin top. */\n mt?: (typeof validSizes)[number];\n /** Margin right. */\n mr?: (typeof validSizes)[number];\n /** Margin bottom. */\n mb?: (typeof validSizes)[number];\n /** Margin left. */\n ml?: (typeof validSizes)[number];\n /** Margin horizontal (left and right). */\n mx?: (typeof validSizes)[number];\n /** Margin vertical (top and bottom). */\n my?: (typeof validSizes)[number];\n /** Padding (e.g., '0', '1'). */\n p?: (typeof validSizes)[number];\n /** Padding top. */\n pt?: (typeof validSizes)[number];\n /** Padding right. */\n pr?: (typeof validSizes)[number];\n /** Padding bottom. */\n pb?: (typeof validSizes)[number];\n /** Padding left. */\n pl?: (typeof validSizes)[number];\n /** Padding horizontal (left and right). */\n px?: (typeof validSizes)[number];\n /** Padding vertical (top and bottom). */\n py?: (typeof validSizes)[number];\n /** Text size (e.g., '1', '2'). */\n textSize?: (typeof validTextSizes)[number];\n /** Text alignment (e.g., 'centered', 'left'). */\n textAlign?: (typeof validAlignments)[number];\n /** Text transformation (e.g., 'uppercase', 'italic'). */\n textTransform?: (typeof validTextTransforms)[number];\n /** Text weight (e.g., 'light', 'bold'). */\n textWeight?: (typeof validTextWeights)[number];\n /** Font family (e.g., 'sans-serif', 'code'). */\n fontFamily?: (typeof validFontFamilies)[number];\n /** Display type (e.g., 'block', 'flex'). */\n display?: (typeof validDisplays)[number] | 'none';\n /** Visibility (e.g., 'hidden', 'sr-only'). */\n visibility?: (typeof validVisibilities)[number];\n /** Flex direction (e.g., 'row', 'column'). */\n flexDirection?: (typeof validFlexDirections)[number];\n /** Flex wrap (e.g., 'wrap', 'nowrap'). */\n flexWrap?: (typeof validFlexWraps)[number];\n /** Justify content (e.g., 'center', 'space-between'). */\n justifyContent?: (typeof validJustifyContents)[number];\n /** Align content (e.g., 'center', 'stretch'). */\n alignContent?: (typeof validAlignContents)[number];\n /** Align items (e.g., 'center', 'flex-start'). */\n alignItems?: (typeof validAlignItems)[number];\n /** Align self (e.g., 'auto', 'center'). */\n alignSelf?: (typeof validAlignSelfs)[number];\n /** Flex grow value (e.g., '0', '1', '2', '3', '4', '5'). */\n flexGrow?: (typeof validFlexGrowShrink)[number];\n /** Flex shrink value (e.g., '0', '1', '2', '3', '4', '5'). */\n flexShrink?: (typeof validFlexGrowShrink)[number];\n /** Float direction (e.g., 'left', 'right'). */\n float?: 'left' | 'right';\n /** Overflow behavior (e.g., 'clipped'). */\n overflow?: 'clipped';\n /** Applies overlay styling if true. */\n overlay?: boolean;\n /** Interaction behavior (e.g., 'unselectable', 'clickable'). */\n interaction?: 'unselectable' | 'clickable';\n /** Border radius style (e.g., 'radiusless'). */\n radius?: 'radiusless';\n /** Shadow style (e.g., 'shadowless'). */\n shadow?: 'shadowless';\n /** Responsive behavior (e.g., 'mobile', 'narrow'). */\n responsive?: 'mobile' | 'narrow';\n /** Viewport for responsive classes (e.g., 'mobile', 'desktop'). */\n viewport?: (typeof validViewports)[number];\n /** Display type for mobile viewport (up to 768px). */\n displayMobile?: (typeof validDisplays)[number] | 'none';\n /** Display type for tablet viewport (769px - 1023px). */\n displayTablet?: (typeof validDisplays)[number] | 'none';\n /** Display type for desktop viewport (1024px - 1215px). */\n displayDesktop?: (typeof validDisplays)[number] | 'none';\n /** Display type for widescreen viewport (1216px - 1407px). */\n displayWidescreen?: (typeof validDisplays)[number] | 'none';\n /** Display type for fullhd viewport (1408px and above). */\n displayFullhd?: (typeof validDisplays)[number] | 'none';\n /** Text size for mobile viewport (up to 768px). */\n textSizeMobile?: (typeof validTextSizes)[number];\n /** Text size for tablet viewport (769px - 1023px). */\n textSizeTablet?: (typeof validTextSizes)[number];\n /** Text size for desktop viewport (1024px - 1215px). */\n textSizeDesktop?: (typeof validTextSizes)[number];\n /** Text size for widescreen viewport (1216px - 1407px). */\n textSizeWidescreen?: (typeof validTextSizes)[number];\n /** Text size for fullhd viewport (1408px and above). */\n textSizeFullhd?: (typeof validTextSizes)[number];\n /** Text alignment for mobile viewport (up to 768px). */\n textAlignMobile?: (typeof validAlignments)[number];\n /** Text alignment for tablet viewport (769px - 1023px). */\n textAlignTablet?: (typeof validAlignments)[number];\n /** Text alignment for desktop viewport (1024px - 1215px). */\n textAlignDesktop?: (typeof validAlignments)[number];\n /** Text alignment for widescreen viewport (1216px - 1407px). */\n textAlignWidescreen?: (typeof validAlignments)[number];\n /** Text alignment for fullhd viewport (1408px and above). */\n textAlignFullhd?: (typeof validAlignments)[number];\n /** Visibility for mobile viewport (up to 768px). */\n visibilityMobile?: (typeof validVisibilities)[number];\n /** Visibility for tablet viewport (769px - 1023px). */\n visibilityTablet?: (typeof validVisibilities)[number];\n /** Visibility for desktop viewport (1024px - 1215px). */\n visibilityDesktop?: (typeof validVisibilities)[number];\n /** Visibility for widescreen viewport (1216px - 1407px). */\n visibilityWidescreen?: (typeof validVisibilities)[number];\n /** Visibility for fullhd viewport (1408px and above). */\n visibilityFullhd?: (typeof validVisibilities)[number];\n /** Add Bulma skeleton class if true. */\n skeleton?: boolean;\n /** Applies clearfix to fix floating children if true. */\n clearfix?: boolean;\n /** Applies position: relative if true. */\n relative?: boolean;\n}\n\n/**\n * A hook that generates Bulma helper classes from props and separates unhandled props.\n *\n * @function useBulmaClasses\n * @param props - Combination of BulmaClassesProps and additional props.\n * @returns An object containing the Bulma helper classes and unhandled props.\n * @example\n * const { bulmaHelperClasses, rest } = useBulmaClasses({\n * color: 'primary',\n * textSize: '3',\n * className: 'custom-class'\n * });\n * // bulmaHelperClasses: 'has-text-primary is-size-3'\n * // rest: { className: 'custom-class' }\n */\nexport const useBulmaClasses = <T extends Record<string, unknown>>(\n props: BulmaClassesProps & T\n): { bulmaHelperClasses: string; rest: Omit<T, keyof BulmaClassesProps> } => {\n const { classPrefix } = useConfig();\n\n const {\n color,\n backgroundColor,\n colorShade,\n backgroundColorShade,\n m,\n mt,\n mr,\n mb,\n ml,\n mx,\n my,\n p,\n pt,\n pr,\n pb,\n pl,\n px,\n py,\n textSize,\n textAlign,\n textTransform,\n textWeight,\n fontFamily,\n display,\n visibility,\n flexDirection,\n flexWrap,\n justifyContent,\n alignContent,\n alignItems,\n alignSelf,\n flexGrow,\n flexShrink,\n float,\n overflow,\n overlay,\n interaction,\n radius,\n shadow,\n responsive,\n viewport,\n displayMobile,\n displayTablet,\n displayDesktop,\n displayWidescreen,\n displayFullhd,\n textSizeMobile,\n textSizeTablet,\n textSizeDesktop,\n textSizeWidescreen,\n textSizeFullhd,\n textAlignMobile,\n textAlignTablet,\n textAlignDesktop,\n textAlignWidescreen,\n textAlignFullhd,\n visibilityMobile,\n visibilityTablet,\n visibilityDesktop,\n visibilityWidescreen,\n visibilityFullhd,\n skeleton,\n clearfix,\n relative,\n ...rest\n } = props;\n\n const bulmaHelperClasses = useMemo(() => {\n const classes: string[] = [];\n\n // Helper function to add class with prefix support\n const addPrefixedClass = (className: string) => {\n classes.push(classPrefix ? `${classPrefix}${className}` : className);\n };\n\n // Helper to add class with optional viewport\n const addClass = (\n prefix: string,\n value: string | undefined,\n validValues: readonly string[],\n supportsViewport = false\n ) => {\n if (value && validValues.includes(value)) {\n const className =\n supportsViewport && viewport && validViewports.includes(viewport)\n ? `${prefix}-${value}-${viewport}`\n : `${prefix}-${value}`;\n addPrefixedClass(className);\n }\n };\n\n // Helper specifically for classes that never support viewport modifiers\n const addClassNoViewport = (\n prefix: string,\n value: string | undefined,\n validValues: readonly string[]\n ) => {\n if (value && (!validValues.length || validValues.includes(value))) {\n addPrefixedClass(`${prefix}-${value}`);\n }\n };\n\n // Color handling\n const addColorClass = (\n prefix: 'has-text' | 'has-background',\n value: string | undefined,\n shade: (typeof validColorShades)[number] | undefined\n ) => {\n if (!value || ![...validColors, 'inherit', 'current'].includes(value))\n return;\n if (shade && validColorShades.includes(shade)) {\n // Color shades never support viewport modifiers in Bulma\n const className = `${prefix}-${value}-${shade}`;\n addPrefixedClass(className);\n } else {\n // Color classes never support viewport modifiers in Bulma\n addClass(\n prefix,\n value,\n [...validColors, 'inherit', 'current'],\n false // supportsViewport = false for all color classes\n );\n }\n };\n\n // Color\n addColorClass('has-text', color, colorShade);\n addColorClass('has-background', backgroundColor, backgroundColorShade);\n\n // Spacing (no viewport support in Bulma)\n addClassNoViewport('m', m, validSizes);\n addClassNoViewport('mt', mt, validSizes);\n addClassNoViewport('mr', mr, validSizes);\n addClassNoViewport('mb', mb, validSizes);\n addClassNoViewport('ml', ml, validSizes);\n addClassNoViewport('mx', mx, validSizes);\n addClassNoViewport('my', my, validSizes);\n addClassNoViewport('p', p, validSizes);\n addClassNoViewport('pt', pt, validSizes);\n addClassNoViewport('pr', pr, validSizes);\n addClassNoViewport('pb', pb, validSizes);\n addClassNoViewport('pl', pl, validSizes);\n addClassNoViewport('px', px, validSizes);\n addClassNoViewport('py', py, validSizes);\n\n // Typography\n addClass('is-size', textSize, validTextSizes, true); // supports viewport\n addClass('has-text', textAlign, validAlignments, true); // supports viewport\n addClassNoViewport('is', textTransform, validTextTransforms); // no viewport support\n addClassNoViewport('has-text-weight', textWeight, validTextWeights); // no viewport support\n addClassNoViewport('is-family', fontFamily, validFontFamilies); // no viewport support\n\n // Viewport-specific text sizes\n const addViewportSpecificTextSizeClass = (\n value: string | undefined,\n viewportSuffix: string\n ) => {\n if (value && (validTextSizes as readonly string[]).includes(value)) {\n addPrefixedClass(`is-size-${value}${viewportSuffix}`);\n }\n };\n\n addViewportSpecificTextSizeClass(textSizeMobile, '-mobile');\n addViewportSpecificTextSizeClass(textSizeTablet, '-tablet');\n addViewportSpecificTextSizeClass(textSizeDesktop, '-desktop');\n addViewportSpecificTextSizeClass(textSizeWidescreen, '-widescreen');\n addViewportSpecificTextSizeClass(textSizeFullhd, '-fullhd');\n\n // Viewport-specific text alignment\n const addViewportSpecificTextAlignClass = (\n value: string | undefined,\n viewportSuffix: string\n ) => {\n if (value && (validAlignments as readonly string[]).includes(value)) {\n addPrefixedClass(`has-text-${value}${viewportSuffix}`);\n }\n };\n\n addViewportSpecificTextAlignClass(textAlignMobile, '-mobile');\n addViewportSpecificTextAlignClass(textAlignTablet, '-tablet');\n addViewportSpecificTextAlignClass(textAlignDesktop, '-desktop');\n addViewportSpecificTextAlignClass(textAlignWidescreen, '-widescreen');\n addViewportSpecificTextAlignClass(textAlignFullhd, '-fullhd');\n\n // Viewport-specific visibility\n const addViewportSpecificVisibilityClass = (\n value: string | undefined,\n viewportSuffix: string\n ) => {\n if (value === 'hidden') {\n addPrefixedClass(`is-hidden${viewportSuffix}`);\n } else if (value === 'sr-only') {\n addPrefixedClass(`is-sr-only${viewportSuffix}`);\n } else if (value === 'invisible') {\n addPrefixedClass(`is-invisible${viewportSuffix}`);\n }\n };\n\n addViewportSpecificVisibilityClass(visibilityMobile, '-mobile');\n addViewportSpecificVisibilityClass(visibilityTablet, '-tablet');\n addViewportSpecificVisibilityClass(visibilityDesktop, '-desktop');\n addViewportSpecificVisibilityClass(visibilityWidescreen, '-widescreen');\n addViewportSpecificVisibilityClass(visibilityFullhd, '-fullhd');\n\n // Visibility and Display\n // Handle viewport-specific display properties first (they take precedence)\n const addDisplayClass = (\n displayValue: string | undefined,\n viewportSuffix: string\n ) => {\n if (displayValue) {\n if (displayValue === 'none') {\n addPrefixedClass(`is-hidden${viewportSuffix}`);\n } else if (\n (validDisplays as readonly string[]).includes(displayValue)\n ) {\n addPrefixedClass(`is-${displayValue}${viewportSuffix}`);\n }\n }\n };\n\n // Apply viewport-specific display classes\n addDisplayClass(displayMobile, '-mobile');\n addDisplayClass(displayTablet, '-tablet');\n addDisplayClass(displayDesktop, '-desktop');\n addDisplayClass(displayWidescreen, '-widescreen');\n addDisplayClass(displayFullhd, '-fullhd');\n\n // Apply legacy display/viewport combination if no viewport-specific display props are set\n const hasViewportSpecificDisplay = !!(\n displayMobile ||\n displayTablet ||\n displayDesktop ||\n displayWidescreen ||\n displayFullhd\n );\n\n if (!hasViewportSpecificDisplay) {\n // Legacy display handling\n if (display === 'none') {\n if (viewport && validViewports.includes(viewport)) {\n addPrefixedClass(`is-hidden-${viewport}`);\n } else {\n addPrefixedClass('is-hidden');\n }\n } else {\n addClass('is', display, [...validDisplays], true); // display supports viewport\n }\n }\n\n // Visibility (always applied regardless of display settings)\n if (visibility) {\n if (\n (visibility === 'hidden' || visibility === 'invisible') &&\n viewport &&\n validViewports.includes(viewport)\n ) {\n addPrefixedClass(`is-${visibility}-${viewport}`);\n } else if (validVisibilities.includes(visibility)) {\n addPrefixedClass(`is-${visibility}`);\n }\n }\n\n // Flexbox\n const hasFlexDisplay =\n display === 'flex' ||\n display === 'inline-flex' ||\n displayMobile === 'flex' ||\n displayMobile === 'inline-flex' ||\n displayTablet === 'flex' ||\n displayTablet === 'inline-flex' ||\n displayDesktop === 'flex' ||\n displayDesktop === 'inline-flex' ||\n displayWidescreen === 'flex' ||\n displayWidescreen === 'inline-flex' ||\n displayFullhd === 'flex' ||\n displayFullhd === 'inline-flex';\n\n if (hasFlexDisplay) {\n // Flexbox container properties do not support viewport modifiers in Bulma\n addClassNoViewport(\n 'is-flex-direction',\n flexDirection,\n validFlexDirections\n );\n addClassNoViewport('is-flex-wrap', flexWrap, validFlexWraps);\n addClassNoViewport(\n 'is-justify-content',\n justifyContent,\n validJustifyContents\n );\n addClassNoViewport('is-align-content', alignContent, validAlignContents);\n addClassNoViewport('is-align-items', alignItems, validAlignItems);\n }\n\n // Flex item properties (can be applied to any element that is a flex item)\n // These don't require the element itself to have display: flex\n addClassNoViewport('is-align-self', alignSelf, validAlignSelfs);\n addClassNoViewport('is-flex-grow', flexGrow, validFlexGrowShrink);\n addClassNoViewport('is-flex-shrink', flexShrink, validFlexGrowShrink);\n\n // Other Helpers (no viewport support)\n if (float) {\n addClassNoViewport('is-pulled', float, ['left', 'right']);\n }\n if (overflow) {\n addClassNoViewport('is', overflow, ['clipped']);\n }\n if (overlay) {\n addPrefixedClass('is-overlay');\n }\n if (interaction) {\n addClassNoViewport('is', interaction, ['unselectable', 'clickable']);\n }\n if (radius) {\n addClassNoViewport('is', radius, ['radiusless']);\n }\n if (shadow) {\n addClassNoViewport('is', shadow, ['shadowless']);\n }\n if (responsive) {\n addClassNoViewport('is', responsive, ['mobile', 'narrow']);\n }\n\n // Bulma Skeleton Helper\n if (skeleton) {\n addPrefixedClass('is-skeleton');\n }\n\n // Clearfix Helper\n if (clearfix) {\n addPrefixedClass('is-clearfix');\n }\n\n // Position Relative Helper\n if (relative) {\n addPrefixedClass('is-relative');\n }\n\n return classNames(classes);\n }, [\n classPrefix,\n color,\n backgroundColor,\n colorShade,\n backgroundColorShade,\n m,\n mt,\n mr,\n mb,\n ml,\n mx,\n my,\n p,\n pt,\n pr,\n pb,\n pl,\n px,\n py,\n textSize,\n textAlign,\n textTransform,\n textWeight,\n fontFamily,\n display,\n visibility,\n flexDirection,\n flexWrap,\n justifyContent,\n alignContent,\n alignItems,\n alignSelf,\n flexGrow,\n flexShrink,\n float,\n overflow,\n overlay,\n interaction,\n radius,\n shadow,\n responsive,\n viewport,\n displayMobile,\n displayTablet,\n displayDesktop,\n displayWidescreen,\n displayFullhd,\n skeleton,\n clearfix,\n relative,\n // Viewport-specific properties\n textSizeMobile,\n textSizeTablet,\n textSizeDesktop,\n textSizeWidescreen,\n textSizeFullhd,\n textAlignMobile,\n textAlignTablet,\n textAlignDesktop,\n textAlignWidescreen,\n textAlignFullhd,\n visibilityMobile,\n visibilityTablet,\n visibilityDesktop,\n visibilityWidescreen,\n visibilityFullhd,\n ]);\n\n return { bulmaHelperClasses, rest };\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Possible values for Bulma column size.\n */\nexport type BulmaColumnSize =\n | number\n | 'full'\n | 'half'\n | 'one-third'\n | 'two-thirds'\n | 'one-quarter'\n | 'three-quarters'\n | 'one-fifth'\n | 'two-fifths'\n | 'three-fifths'\n | 'four-fifths';\n\n/**\n * Props for the Column component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the column.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n *\n * @property {BulmaColumnSize} [size] - Column size.\n * @property {BulmaColumnSize} [sizeMobile] - Mobile column size.\n * @property {BulmaColumnSize} [sizeTablet] - Tablet column size.\n * @property {BulmaColumnSize} [sizeDesktop] - Desktop column size.\n * @property {BulmaColumnSize} [sizeWidescreen] - Widescreen column size.\n * @property {BulmaColumnSize} [sizeFullhd] - FullHD column size.\n *\n * @property {BulmaColumnSize} [offset] - Column offset.\n * @property {BulmaColumnSize} [offsetMobile] - Mobile column offset.\n * @property {BulmaColumnSize} [offsetTablet] - Tablet column offset.\n * @property {BulmaColumnSize} [offsetDesktop] - Desktop column offset.\n * @property {BulmaColumnSize} [offsetWidescreen] - Widescreen column offset.\n * @property {BulmaColumnSize} [offsetFullhd] - FullHD column offset.\n *\n * @property {boolean} [isNarrow] - The column is narrow.\n * @property {boolean} [isNarrowMobile] - The column is narrow on mobile.\n * @property {boolean} [isNarrowTablet] - The column is narrow on tablet.\n * @property {boolean} [isNarrowTouch] - The column is narrow on touch devices.\n * @property {boolean} [isNarrowDesktop] - The column is narrow on desktop.\n * @property {boolean} [isNarrowWidescreen] - The column is narrow on widescreen.\n * @property {boolean} [isNarrowFullhd] - The column is narrow on fullhd.\n *\n * @property {React.ReactNode} [children] - Children to render inside the column.\n */\nexport interface ColumnProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n\n size?: BulmaColumnSize;\n sizeMobile?: BulmaColumnSize;\n sizeTablet?: BulmaColumnSize;\n sizeDesktop?: BulmaColumnSize;\n sizeWidescreen?: BulmaColumnSize;\n sizeFullhd?: BulmaColumnSize;\n\n offset?: BulmaColumnSize;\n offsetMobile?: BulmaColumnSize;\n offsetTablet?: BulmaColumnSize;\n offsetDesktop?: BulmaColumnSize;\n offsetWidescreen?: BulmaColumnSize;\n offsetFullhd?: BulmaColumnSize;\n\n isNarrow?: boolean;\n isNarrowMobile?: boolean;\n isNarrowTablet?: boolean;\n isNarrowTouch?: boolean;\n isNarrowDesktop?: boolean;\n isNarrowWidescreen?: boolean;\n isNarrowFullhd?: boolean;\n\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Column component for responsive grid layouts.\n *\n * @function\n * @param {ColumnProps} props - Props for the Column component.\n * @returns {JSX.Element} The rendered column.\n * @see {@link https://bulma.io/documentation/columns/ | Bulma Columns documentation}\n */\nexport const Column: React.FC<ColumnProps> = ({\n className,\n textColor,\n color: _fieldColor,\n bgColor,\n size,\n sizeMobile,\n sizeTablet,\n sizeDesktop,\n sizeWidescreen,\n sizeFullhd,\n offset,\n offsetMobile,\n offsetTablet,\n offsetDesktop,\n offsetWidescreen,\n offsetFullhd,\n isNarrow,\n isNarrowMobile,\n isNarrowTablet,\n isNarrowTouch,\n isNarrowDesktop,\n isNarrowWidescreen,\n isNarrowFullhd,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('column');\n\n // Build column-specific classes with prefixes\n const columnSpecificClasses = usePrefixedClassNames('', {\n [`is-${size}`]: size !== undefined && size !== null,\n [`is-${sizeMobile}-mobile`]:\n sizeMobile !== undefined && sizeMobile !== null,\n [`is-${sizeTablet}-tablet`]:\n sizeTablet !== undefined && sizeTablet !== null,\n [`is-${sizeDesktop}-desktop`]:\n sizeDesktop !== undefined && sizeDesktop !== null,\n [`is-${sizeWidescreen}-widescreen`]:\n sizeWidescreen !== undefined && sizeWidescreen !== null,\n [`is-${sizeFullhd}-fullhd`]:\n sizeFullhd !== undefined && sizeFullhd !== null,\n [`is-offset-${offset}`]: offset !== undefined && offset !== null,\n [`is-offset-${offsetMobile}-mobile`]:\n offsetMobile !== undefined && offsetMobile !== null,\n [`is-offset-${offsetTablet}-tablet`]:\n offsetTablet !== undefined && offsetTablet !== null,\n [`is-offset-${offsetDesktop}-desktop`]:\n offsetDesktop !== undefined && offsetDesktop !== null,\n [`is-offset-${offsetWidescreen}-widescreen`]:\n offsetWidescreen !== undefined && offsetWidescreen !== null,\n [`is-offset-${offsetFullhd}-fullhd`]:\n offsetFullhd !== undefined && offsetFullhd !== null,\n 'is-narrow': !!isNarrow,\n 'is-narrow-mobile': !!isNarrowMobile,\n 'is-narrow-tablet': !!isNarrowTablet,\n 'is-narrow-touch': !!isNarrowTouch,\n 'is-narrow-desktop': !!isNarrowDesktop,\n 'is-narrow-widescreen': !!isNarrowWidescreen,\n 'is-narrow-fullhd': !!isNarrowFullhd,\n });\n\n const columnClasses = classNames(\n mainClass,\n columnSpecificClasses,\n className,\n bulmaHelperClasses\n );\n\n return (\n <div className={columnClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Possible values for the Bulma columns gap size.\n */\nexport type BulmaGapSize =\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | '0'\n | '1'\n | '2'\n | '3'\n | '4'\n | '5'\n | '6'\n | '7'\n | '8';\n\n/**\n * Props for the Columns component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for columns.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {boolean} [isCentered] - Center the columns container.\n * @property {boolean} [isGapless] - Remove all column gaps.\n * @property {boolean} [isMultiline] - Allow columns to wrap to multiple lines.\n * @property {boolean} [isVCentered] - Vertically center columns.\n * @property {boolean} [isMobile] - Only apply columns styles on mobile.\n * @property {boolean} [isDesktop] - Only apply columns styles on desktop.\n * @property {BulmaGapSize} [gapSize] - Gap size for all breakpoints.\n * @property {BulmaGapSize} [gapSizeMobile] - Gap size for mobile.\n * @property {BulmaGapSize} [gapSizeTablet] - Gap size for tablet.\n * @property {BulmaGapSize} [gapSizeDesktop] - Gap size for desktop.\n * @property {BulmaGapSize} [gapSizeWidescreen] - Gap size for widescreen.\n * @property {BulmaGapSize} [gapSizeFullhd] - Gap size for fullhd.\n * @property {React.ReactNode} [children] - Columns to render within the container.\n */\nexport interface ColumnsProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n isCentered?: boolean;\n isGapless?: boolean;\n isMultiline?: boolean;\n isVCentered?: boolean;\n isMobile?: boolean;\n isDesktop?: boolean;\n\n gapSize?: BulmaGapSize;\n gapSizeMobile?: BulmaGapSize;\n gapSizeTablet?: BulmaGapSize;\n gapSizeDesktop?: BulmaGapSize;\n gapSizeWidescreen?: BulmaGapSize;\n gapSizeFullhd?: BulmaGapSize;\n\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Columns container for flexible, responsive layouts.\n *\n * @function\n * @param {ColumnsProps} props - Props for the Columns component.\n * @returns {JSX.Element} The rendered columns container.\n * @see {@link https://bulma.io/documentation/columns/ | Bulma Columns documentation}\n */\nexport const Columns: React.FC<ColumnsProps> = ({\n className,\n textColor,\n color: _fieldColor,\n bgColor,\n isCentered,\n isGapless,\n isMultiline,\n isVCentered,\n isMobile,\n isDesktop,\n gapSize,\n gapSizeMobile,\n gapSizeTablet,\n gapSizeDesktop,\n gapSizeWidescreen,\n gapSizeFullhd,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('columns');\n\n // Build gap classes with prefixes\n const gapClasses = usePrefixedClassNames('', {\n [`is-${gapSize}`]: gapSize !== undefined && gapSize !== null,\n [`is-${gapSizeMobile}-mobile`]:\n gapSizeMobile !== undefined && gapSizeMobile !== null,\n [`is-${gapSizeTablet}-tablet`]:\n gapSizeTablet !== undefined && gapSizeTablet !== null,\n [`is-${gapSizeDesktop}-desktop`]:\n gapSizeDesktop !== undefined && gapSizeDesktop !== null,\n [`is-${gapSizeWidescreen}-widescreen`]:\n gapSizeWidescreen !== undefined && gapSizeWidescreen !== null,\n [`is-${gapSizeFullhd}-fullhd`]:\n gapSizeFullhd !== undefined && gapSizeFullhd !== null,\n 'is-centered': !!isCentered,\n 'is-gapless': !!isGapless,\n 'is-multiline': !!isMultiline,\n 'is-vcentered': !!isVCentered,\n 'is-mobile': !!isMobile,\n 'is-desktop': !!isDesktop,\n });\n\n const columnsClasses = classNames(\n mainClass,\n gapClasses,\n className,\n bulmaHelperClasses\n );\n\n return (\n <div className={columnsClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\nconst validBreadcrumbAlignments = ['centered', 'right'] as const;\n/**\n * Valid alignment values for the Breadcrumb component.\n */\nexport type BreadcrumbAlignment = (typeof validBreadcrumbAlignments)[number];\n\nconst validBreadcrumbSeparators = [\n 'arrow',\n 'bullet',\n 'dot',\n 'succeeds',\n] as const;\n/**\n * Valid separator values for the Breadcrumb component.\n */\nexport type BreadcrumbSeparator = (typeof validBreadcrumbSeparators)[number];\n\nconst validBreadcrumbSizes = ['small', 'medium', 'large'] as const;\n/**\n * Valid size values for the Breadcrumb component.\n */\nexport type BreadcrumbSize = (typeof validBreadcrumbSizes)[number];\n\n/**\n * Props for the Breadcrumb component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {BreadcrumbAlignment} [alignment] - Alignment modifier for the breadcrumb.\n * @property {BreadcrumbSeparator} [separator] - Separator style for the breadcrumb.\n * @property {BreadcrumbSize} [size] - Size modifier for the breadcrumb.\n * @property {React.ReactNode} [children] - Breadcrumb items (e.g., \"a\" or \"span\" html elements).\n */\nexport interface BreadcrumbProps\n extends Omit<React.HTMLAttributes<HTMLElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n alignment?: BreadcrumbAlignment;\n separator?: BreadcrumbSeparator;\n size?: BreadcrumbSize;\n children?: React.ReactNode;\n}\n\n/**\n * Breadcrumb component for rendering a styled Bulma breadcrumb navigation.\n *\n * Supports alignment, separator styles, and sizes.\n *\n * @function\n * @param {BreadcrumbProps} props - Props for the Breadcrumb component.\n * @returns {JSX.Element} The rendered breadcrumb element.\n * @see {@link https://bulma.io/documentation/components/breadcrumb/ | Bulma Breadcrumb documentation}\n */\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({\n className,\n alignment,\n separator,\n size,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('breadcrumb', {\n [`is-${alignment}`]:\n alignment && validBreadcrumbAlignments.includes(alignment),\n [`has-${separator}-separator`]:\n separator && validBreadcrumbSeparators.includes(separator),\n [`is-${size}`]: size && validBreadcrumbSizes.includes(size),\n });\n\n // Combine prefixed Bulma classes with unprefixed user className and prefixed helper classes\n const breadcrumbClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <nav className={breadcrumbClasses} aria-label=\"breadcrumbs\" {...rest}>\n <ul>{children}</ul>\n </nav>\n );\n};\n","import React from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { useConfig } from '../helpers/Config';\n\n/**\n * Props for the Card component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the card.\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the card.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the card.\n * @property {boolean} [hasShadow] - Whether the card has a shadow (default: true).\n * @property {React.ReactNode} [header] - Card header content, rendered inside `.card-header-title`.\n * @property {boolean} [headerCentered] - If true, centers the header title.\n * @property {React.ReactNode} [headerIcon] - Card header icon, rendered as a sibling to the header title.\n * @property {React.ReactNode|React.ReactNode[]} [footer] - Card footer content, each wrapped in `.card-footer-item`.\n * @property {React.ReactNode|string} [image] - Card image node or image src string.\n * @property {string} [imageAlt] - Alternate text for the card image.\n * @property {React.ReactNode} [children] - Card content.\n */\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n hasShadow?: boolean;\n header?: React.ReactNode;\n headerCentered?: boolean;\n headerIcon?: React.ReactNode;\n footer?: React.ReactNode | React.ReactNode[];\n image?: React.ReactNode | string;\n imageAlt?: string;\n children?: React.ReactNode;\n}\n\n// Always wrap each footer item in .card-footer-item\nconst renderFooter = (\n footer: CardProps['footer'],\n classPrefix: string | undefined\n) => {\n if (!footer) return null;\n const items = Array.isArray(footer) ? footer : [footer];\n return items.map((item, idx) => (\n <span\n className={prefixedClassNames(classPrefix, 'card-footer-item')}\n key={idx}\n >\n {item}\n </span>\n ));\n};\n\n// Check if children contain any Card compound components\nconst hasCompoundComponents = (children: React.ReactNode): boolean => {\n return React.Children.toArray(children).some(child => {\n if (!React.isValidElement(child)) return false;\n\n // Direct comparison with our compound component functions\n return (\n child.type === CardHeader ||\n child.type === CardContent ||\n child.type === CardImage ||\n child.type === CardFooter ||\n child.type === CardFooterItem ||\n child.type === CardHeaderIcon\n );\n });\n};\n\n/**\n * Card component for rendering a styled Bulma card.\n *\n * @function\n * @param {CardProps} props - Props for the Card component.\n * @returns {JSX.Element} The rendered card element.\n * @see {@link https://bulma.io/documentation/components/card/ | Bulma Card documentation}\n */\nconst CardComponent: React.FC<CardProps> = ({\n className,\n children,\n textColor,\n bgColor,\n hasShadow = true,\n header,\n headerCentered,\n headerIcon,\n footer,\n image,\n imageAlt,\n ...props\n}) => {\n const { classPrefix } = useConfig();\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('card', {\n 'is-shadowless': !hasShadow,\n });\n\n // Combine prefixed Bulma classes with unprefixed user className and prefixed helper classes\n const cardClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n // Render header with optional icon and is-centered modifier\n const renderHeader = (\n header: React.ReactNode,\n headerIcon: React.ReactNode,\n headerCentered: boolean | undefined,\n classPrefix: string | undefined\n ) => {\n if (!header && !headerIcon) return null;\n return (\n <header className={prefixedClassNames(classPrefix, 'card-header')}>\n {header && (\n <div\n className={prefixedClassNames(classPrefix, 'card-header-title', {\n 'is-centered': headerCentered,\n })}\n >\n {header}\n </div>\n )}\n {headerIcon}\n </header>\n );\n };\n\n return (\n <div className={cardClasses} {...rest}>\n {renderHeader(header, headerIcon, headerCentered, classPrefix)}\n {image && (\n <div className={prefixedClassNames(classPrefix, 'card-image')}>\n {typeof image === 'string' ? (\n <figure className={prefixedClassNames(classPrefix, 'image')}>\n <img src={image} alt={imageAlt ?? 'Card image'} />\n </figure>\n ) : (\n image\n )}\n </div>\n )}\n {/* Only render card-content if children is specified and doesn't contain compound components */}\n {typeof children !== 'undefined' &&\n children !== null &&\n children !== '' &&\n !hasCompoundComponents(children) && (\n <div className={prefixedClassNames(classPrefix, 'card-content')}>\n {children}\n </div>\n )}\n {/* Render children directly if they contain compound components */}\n {typeof children !== 'undefined' &&\n children !== null &&\n children !== '' &&\n hasCompoundComponents(children) &&\n children}\n {footer && (\n <footer className={prefixedClassNames(classPrefix, 'card-footer')}>\n {Array.isArray(footer)\n ? footer.map((item, idx) => (\n <span\n className={prefixedClassNames(\n classPrefix,\n 'card-footer-item'\n )}\n key={idx}\n >\n {item}\n </span>\n ))\n : footer && (\n <span\n className={prefixedClassNames(\n classPrefix,\n 'card-footer-item'\n )}\n >\n {footer}\n </span>\n )}\n </footer>\n )}\n </div>\n );\n};\n\n// Compound components for flexible composition\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLElement> {\n className?: string;\n children?: React.ReactNode;\n centered?: boolean;\n}\n\nexport interface CardImageProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface CardFooterItemProps\n extends React.HTMLAttributes<HTMLSpanElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface CardHeaderTitleProps\n extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n centered?: boolean;\n}\n\nexport interface CardHeaderIconProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nconst CardHeader: React.FC<CardHeaderProps> = ({\n className,\n children,\n centered,\n ...props\n}) => {\n const { classPrefix } = useConfig();\n\n // Check if children contains a CardHeaderTitle component\n const hasHeaderTitle = React.Children.toArray(children).some(\n child =>\n React.isValidElement(child) &&\n typeof child.type === 'function' &&\n child.type === CardHeaderTitle\n );\n\n const headerClasses = usePrefixedClassNames('card-header');\n\n return (\n <header className={classNames(headerClasses, className)} {...props}>\n {hasHeaderTitle ? (\n children\n ) : (\n <div\n className={classNames(\n prefixedClassNames(classPrefix, 'card-header-title', {\n 'is-centered': centered,\n }),\n className\n )}\n >\n {children}\n </div>\n )}\n </header>\n );\n};\n\nconst CardHeaderTitle: React.FC<CardHeaderTitleProps> = ({\n className,\n children,\n centered,\n ...props\n}) => (\n <div\n className={classNames(\n usePrefixedClassNames('card-header-title', {\n 'is-centered': centered,\n }),\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nconst CardHeaderIcon: React.FC<CardHeaderIconProps> = ({\n className,\n children,\n ...props\n}) => (\n <button\n className={classNames(usePrefixedClassNames('card-header-icon'), className)}\n aria-label={props['aria-label'] || 'more options'}\n {...props}\n >\n {children}\n </button>\n);\n\nconst CardImage: React.FC<CardImageProps> = ({\n className,\n children,\n ...props\n}) => (\n <div\n className={classNames(usePrefixedClassNames('card-image'), className)}\n {...props}\n >\n {children}\n </div>\n);\n\nconst CardContent: React.FC<CardContentProps> = ({\n className,\n children,\n ...props\n}) => (\n <div\n className={classNames(usePrefixedClassNames('card-content'), className)}\n {...props}\n >\n {children}\n </div>\n);\n\nconst CardFooter: React.FC<CardFooterProps> = ({\n className,\n children,\n ...props\n}) => (\n <footer\n className={classNames(usePrefixedClassNames('card-footer'), className)}\n {...props}\n >\n {children}\n </footer>\n);\n\nconst CardFooterItem: React.FC<CardFooterItemProps> = ({\n className,\n children,\n ...props\n}) => (\n <span\n className={classNames(usePrefixedClassNames('card-footer-item'), className)}\n {...props}\n >\n {children}\n </span>\n);\n\n// Create a type that extends the Card component with compound components\ntype CardWithCompounds = typeof CardComponent & {\n Header: typeof CardHeader & {\n Title: typeof CardHeaderTitle;\n Icon: typeof CardHeaderIcon;\n };\n Image: typeof CardImage;\n Content: typeof CardContent;\n Footer: typeof CardFooter;\n FooterItem: typeof CardFooterItem;\n};\n\n// Cast Card to the compound type and assign compound components\nconst CardWithSubComponents = CardComponent as CardWithCompounds;\n\n// Create CardHeader with nested Title and Icon components\nconst CardHeaderWithTitle = CardHeader as typeof CardHeader & {\n Title: typeof CardHeaderTitle;\n Icon: typeof CardHeaderIcon;\n};\nCardHeaderWithTitle.Title = CardHeaderTitle;\nCardHeaderWithTitle.Icon = CardHeaderIcon;\n\nCardWithSubComponents.Header = CardHeaderWithTitle;\nCardWithSubComponents.Image = CardImage;\nCardWithSubComponents.Content = CardContent;\nCardWithSubComponents.Footer = CardFooter;\nCardWithSubComponents.FooterItem = CardFooterItem;\n\n// Export the compound component\nexport { CardWithSubComponents as Card };\n\n// Only for test coverage\nexport const __test_exports__ = { renderFooter };\n","import React, { useState, useRef, useEffect } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Checks if code is running in a browser environment.\n * @param win - Window object.\n * @param doc - Document object.\n * @returns {boolean} True if in browser, false otherwise.\n */\nexport const isBrowser = (win?: typeof window, doc?: typeof document) =>\n typeof win !== 'undefined' && typeof doc !== 'undefined';\n\n/**\n * Props for the Dropdown component.\n *\n * @property {React.ReactNode} label - The dropdown button content.\n * @property {React.ReactNode} children - The menu items.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {string} [menuClassName] - Additional CSS classes for the dropdown menu.\n * @property {boolean} [active] - Whether the dropdown is open (controlled).\n * @property {boolean} [up] - Dropdown direction up.\n * @property {boolean} [right] - Dropdown aligned to the right.\n * @property {boolean} [hoverable] - Dropdown opens on hover.\n * @property {boolean} [disabled] - Disables the dropdown trigger.\n * @property {(active: boolean) => void} [onActiveChange] - Called when active state changes.\n * @property {boolean} [closeOnClick=true] - Close dropdown when clicking a menu item.\n * @property {string} [id] - ID for the root element.\n */\nexport interface DropdownProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, keyof BulmaClassesProps>,\n BulmaClassesProps {\n label: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n menuClassName?: string;\n active?: boolean;\n up?: boolean;\n right?: boolean;\n hoverable?: boolean;\n disabled?: boolean;\n onActiveChange?: (active: boolean) => void;\n closeOnClick?: boolean;\n id?: string;\n}\n\n/**\n * Bulma Dropdown component.\n *\n * @function\n * @param {DropdownProps} props - Props for the Dropdown component.\n * @returns {JSX.Element} The rendered dropdown.\n * @see {@link https://bulma.io/documentation/components/dropdown/ | Bulma Dropdown documentation}\n */\nconst DropdownComponent: React.FC<DropdownProps> = ({\n label,\n children,\n className,\n menuClassName,\n active: activeProp,\n up,\n right,\n hoverable,\n disabled,\n onActiveChange,\n closeOnClick = true,\n id,\n ...props\n}) => {\n const [active, setActive] = useState<boolean>(!!activeProp);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('dropdown', {\n 'is-active': active,\n 'is-up': up,\n 'is-right': right,\n 'is-hoverable': hoverable,\n 'is-disabled': disabled,\n });\n\n const buttonClass = usePrefixedClassNames('button');\n\n // Controlled mode support\n useEffect(() => {\n if (typeof activeProp === 'boolean') setActive(activeProp);\n }, [activeProp]);\n\n // SSR-safe outside click\n useEffect(() => {\n if (!active) return;\n\n if (!isBrowser(window, document)) return;\n\n const handleClick = (e: MouseEvent) => {\n /* istanbul ignore next: dropdownRef.current is never null while the listener is attached */\n if (!dropdownRef.current?.contains(e.target as Node)) {\n setActive(false);\n onActiveChange?.(false);\n }\n };\n document.addEventListener('mousedown', handleClick);\n return () => document.removeEventListener('mousedown', handleClick);\n }, [active, onActiveChange]);\n\n const handleToggle = () => {\n /* istanbul ignore next: guard is enforced by button[disabled] at the DOM level */\n if (disabled) return;\n\n const newActive = !active;\n setActive(newActive);\n onActiveChange?.(newActive);\n };\n\n const handleMenuClick = () => {\n if (closeOnClick) {\n setActive(false);\n onActiveChange?.(false);\n }\n };\n\n const dropdownClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <div\n className={dropdownClasses}\n ref={dropdownRef}\n id={id}\n data-testid=\"dropdown-root\"\n {...rest}\n >\n <div className={usePrefixedClassNames('dropdown-trigger')}>\n <button\n className={buttonClass}\n aria-haspopup=\"true\"\n aria-controls={id ? `${id}-menu` : undefined}\n aria-expanded={active}\n onClick={handleToggle}\n disabled={disabled}\n type=\"button\"\n >\n <span>{label}</span>\n <span\n className={usePrefixedClassNames('icon', 'is-small')}\n aria-hidden=\"true\"\n >\n <i className=\"fas fa-angle-down\" />\n </span>\n </button>\n </div>\n <div\n className={classNames(\n usePrefixedClassNames('dropdown-menu'),\n menuClassName\n )}\n id={id ? `${id}-menu` : undefined}\n role=\"menu\"\n data-testid=\"dropdown-menu\"\n >\n <div\n className={usePrefixedClassNames('dropdown-content')}\n onClick={handleMenuClick}\n tabIndex={-1}\n >\n {children}\n </div>\n </div>\n </div>\n );\n};\n\n/**\n * Props for the DropdownItem component.\n *\n * @property {boolean} [active] - Whether the item is active.\n * @property {string} [className] - Additional CSS classes.\n * @property {'a'|'div'|'button'} [as] - The element type to render.\n * @property {React.ReactNode} [children] - Item content.\n */\nexport interface DropdownItemProps\n extends Omit<React.HTMLAttributes<HTMLElement>, keyof BulmaClassesProps>,\n BulmaClassesProps {\n active?: boolean;\n className?: string;\n as?: 'a' | 'div' | 'button';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Dropdown item.\n *\n * @function\n * @param {DropdownItemProps} props - Props for the DropdownItem component.\n * @returns {JSX.Element} The rendered dropdown item.\n */\nexport const DropdownItem: React.FC<DropdownItemProps> = ({\n children,\n active,\n className,\n as: Component = 'a',\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n return (\n <Component\n className={classNames(\n usePrefixedClassNames('dropdown-item', {\n 'is-active': active,\n }),\n bulmaHelperClasses,\n className\n )}\n tabIndex={0}\n role=\"menuitem\"\n data-testid=\"dropdown-item\"\n {...rest}\n >\n {children}\n </Component>\n );\n};\n\n/**\n * Bulma Dropdown divider.\n *\n * @returns {JSX.Element} The divider element.\n */\nexport const DropdownDivider: React.FC = () => (\n <hr className={usePrefixedClassNames('dropdown-divider')} />\n);\n\n// Assign static subcomponents\nexport const Dropdown = Object.assign(DropdownComponent, {\n Item: DropdownItem,\n Divider: DropdownDivider,\n});\n\nexport default Dropdown;\n","import React, { createContext, useContext } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n// Context to track MenuList nesting level\nconst MenuListLevelContext = createContext(0);\n\n/**\n * Props for the Menu component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} children - Menu content.\n */\nexport interface MenuProps\n extends Omit<React.HTMLAttributes<HTMLElement>, keyof BulmaClassesProps>,\n BulmaClassesProps {\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Bulma Menu component.\n *\n * @function\n * @param {MenuProps} props - Props for the Menu component.\n * @returns {JSX.Element} The rendered menu.\n * @see {@link https://bulma.io/documentation/components/menu/ | Bulma Menu documentation}\n */\nconst MenuComponent: React.FC<MenuProps> = ({\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('menu');\n\n return (\n <aside\n className={classNames(bulmaClasses, bulmaHelperClasses, className)}\n {...rest}\n >\n {children}\n </aside>\n );\n};\n\n/**\n * Props for the MenuLabel component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} children - Label content.\n */\nexport interface MenuLabelProps\n extends Omit<\n React.HTMLAttributes<HTMLParagraphElement>,\n keyof BulmaClassesProps\n >,\n BulmaClassesProps {\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Bulma Menu label component.\n *\n * @function\n * @param {MenuLabelProps} props - Props for the MenuLabel component.\n * @returns {JSX.Element} The rendered menu label.\n */\nexport const MenuLabel: React.FC<MenuLabelProps> = ({\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n return (\n <p\n className={classNames(\n usePrefixedClassNames('menu-label'),\n className,\n bulmaHelperClasses\n )}\n {...rest}\n >\n {children}\n </p>\n );\n};\n\n/**\n * Props for the MenuList component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} children - List items.\n */\nexport interface MenuListProps\n extends Omit<React.HTMLAttributes<HTMLUListElement>, keyof BulmaClassesProps>,\n BulmaClassesProps {\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * MenuList applies `menu-list` class only at the top level (not for nested lists).\n *\n * @function\n * @param {MenuListProps} props - Props for the MenuList component.\n * @returns {JSX.Element} The rendered menu list.\n */\nexport const MenuList: React.FC<MenuListProps> = ({\n className,\n children,\n ...props\n}) => {\n const level = useContext(MenuListLevelContext);\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n const ulClass = classNames(className, bulmaHelperClasses, {\n [usePrefixedClassNames('menu-list')]: level === 0,\n });\n\n // Increment level for nested MenuLists\n return (\n <MenuListLevelContext.Provider value={level + 1}>\n <ul className={ulClass} {...rest}>\n {children}\n </ul>\n </MenuListLevelContext.Provider>\n );\n};\n\n/**\n * Props for the MenuItem component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {boolean} [active] - Whether the item is active.\n * @property {string} [href] - Href for link items.\n * @property {React.ElementType} [as] - Render as a custom component.\n * @property {React.ReactNode} children - Item content and optional nested MenuList.\n */\nexport interface MenuItemProps\n extends Omit<React.LiHTMLAttributes<HTMLLIElement>, keyof BulmaClassesProps>,\n BulmaClassesProps {\n className?: string;\n children: React.ReactNode;\n active?: boolean;\n href?: string;\n as?: React.ElementType;\n [key: string]: unknown;\n}\n\n/**\n * MenuItem supports `as` prop for custom link components, e.g., react-router-dom Link.\n *\n * @function\n * @param {MenuItemProps} props - Props for the MenuItem component.\n * @returns {JSX.Element} The rendered menu item.\n */\nexport const MenuItem: React.FC<MenuItemProps> = ({\n className,\n children,\n active,\n href,\n as: Component = 'a',\n 'data-testid': testId,\n ...rest\n}) => {\n const { bulmaHelperClasses, rest: bulmaRest } = useBulmaClasses(rest);\n const itemClass = classNames(\n { [usePrefixedClassNames('is-active')]: active },\n bulmaHelperClasses\n );\n\n // Standard <li> props\n const { style, id, title, role, tabIndex, ...linkProps } = bulmaRest;\n\n // Split children into label and nested MenuList(s)\n const labelChildren: React.ReactNode[] = [];\n const nestedMenuLists: React.ReactNode[] = [];\n React.Children.forEach(children, child => {\n if (React.isValidElement(child) && child.type === MenuList) {\n nestedMenuLists.push(child);\n } else {\n labelChildren.push(child);\n }\n });\n\n // href/to should go to the link component\n if (Component === 'a' && href) {\n (linkProps as Record<string, unknown>).href = href;\n }\n if (Object.prototype.hasOwnProperty.call(rest, 'to')) {\n (linkProps as Record<string, unknown>).to = rest.to;\n }\n\n return (\n <li\n className={className}\n data-testid={testId}\n style={style as React.CSSProperties | undefined}\n id={id as string | undefined}\n title={title as string | undefined}\n role={role as React.AriaRole | undefined}\n tabIndex={tabIndex as number | undefined}\n >\n <Component className={itemClass} {...linkProps}>\n {labelChildren}\n </Component>\n {nestedMenuLists}\n </li>\n );\n};\n\n// Attach static subcomponents\nexport const Menu = Object.assign(MenuComponent, {\n Label: MenuLabel,\n List: MenuList,\n Item: MenuItem,\n});\n\nexport default Menu;\n","import React from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { useConfig } from '../helpers/Config';\n\n/**\n * Props for the Message component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [title] - Title displayed in the message header.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma or 'inherit'/'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the message.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma or 'inherit'/'current').\n * @property {() => void} [onClose] - Called when the close button is clicked.\n * @property {React.ReactNode} [children] - Message body content.\n */\nexport interface MessageProps\n extends Omit<React.HTMLAttributes<HTMLElement>, 'title'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n title?: React.ReactNode;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n onClose?: () => void;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma-styled Message component.\n *\n * Supports Bulma helper classes, color, and an optional close button.\n *\n * @function\n * @param {MessageProps} props - Props for the Message component.\n * @returns {JSX.Element} The rendered message.\n * @see {@link https://bulma.io/documentation/components/message/ | Bulma Message documentation}\n */\nconst MessageComponent: React.FC<MessageProps> = ({\n className,\n title,\n textColor,\n color,\n bgColor,\n onClose,\n children,\n ...props\n}) => {\n const { classPrefix } = useConfig();\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('message', {\n [`is-${color}`]: color,\n });\n const deleteClass = usePrefixedClassNames('delete');\n\n const messageClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <article className={messageClasses} {...rest} data-testid=\"message\">\n {(title || onClose) && (\n <div className={prefixedClassNames(classPrefix, 'message-header')}>\n {title && <span>{title}</span>}\n {onClose && (\n <button\n className={deleteClass}\n aria-label=\"delete\"\n onClick={onClose}\n type=\"button\"\n data-testid=\"message-close\"\n />\n )}\n </div>\n )}\n {children && (\n <div\n className={prefixedClassNames(classPrefix, 'message-body')}\n data-testid=\"message-body\"\n >\n {children}\n </div>\n )}\n </article>\n );\n};\n\n// Compound components for flexible composition\nexport interface MessageHeaderProps\n extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface MessageBodyProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nconst MessageHeader: React.FC<MessageHeaderProps> = ({\n className,\n children,\n ...props\n}) => (\n <div\n className={classNames(usePrefixedClassNames('message-header'), className)}\n {...props}\n >\n {children}\n </div>\n);\n\nconst MessageBody: React.FC<MessageBodyProps> = ({\n className,\n children,\n ...props\n}) => (\n <div\n className={classNames(usePrefixedClassNames('message-body'), className)}\n {...props}\n >\n {children}\n </div>\n);\n\n// Create a type that extends the Message component with compound components\ntype MessageWithCompounds = typeof MessageComponent & {\n Header: typeof MessageHeader;\n Body: typeof MessageBody;\n};\n\n// Cast Message to the compound type and assign compound components\nconst MessageWithSubComponents = MessageComponent as MessageWithCompounds;\nMessageWithSubComponents.Header = MessageHeader;\nMessageWithSubComponents.Body = MessageBody;\n\n// Export the compound component\nexport { MessageWithSubComponents as Message };\n\nexport default MessageWithSubComponents;\n","import React from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { useConfig } from '../helpers/Config';\n\n/**\n * Props for the Modal component.\n *\n * @property {boolean} [active] - Whether the modal is open/visible.\n * @property {boolean} [isActive] - Alias for `active`. Whether the modal is open/visible.\n * @property {() => void} [onClose] - Callback invoked when modal close is requested (background click or close button).\n * @property {string} [className] - Additional CSS classes for the modal.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for modal content.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for modal content.\n * @property {React.ReactNode} [modalCardTitle] - Title for modal card variant (legacy API).\n * @property {React.ReactNode} [modalCardFoot] - Footer for modal card variant (legacy API).\n * @property {'card'|'content'} [type] - Modal type ('card' for modal-card, 'content' for modal-content). Legacy API only.\n * @property {React.ReactNode} [children] - Modal body/content or compound components.\n */\nexport interface ModalProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'color' | 'title'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n active?: boolean;\n isActive?: boolean; // Alias for active\n onClose?: () => void;\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n modalCardTitle?: React.ReactNode;\n modalCardFoot?: React.ReactNode;\n type?: 'card' | 'content';\n children?: React.ReactNode;\n}\n\n/**\n * Props for Modal.Background component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalBackgroundProps\n extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Content component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalContentProps\n extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Card component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalCardProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Card.Head component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalCardHeadProps extends React.HTMLAttributes<HTMLElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Card.Title component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalCardTitleProps\n extends React.HTMLAttributes<HTMLParagraphElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Card.Body component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalCardBodyProps extends React.HTMLAttributes<HTMLElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Card.Foot component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalCardFootProps extends React.HTMLAttributes<HTMLElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Close component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {'small' | 'medium' | 'large'} [size] - Size of the close button (only applies to 'floating' variant).\n * @property {'delete' | 'floating'} [variant] - Button variant. 'delete' (default) for modal card headers, 'floating' for overlay close button.\n */\nexport interface ModalCloseProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n size?: 'small' | 'medium' | 'large';\n variant?: 'delete' | 'floating';\n}\n\n/**\n * Modal.Background - Renders the modal background overlay.\n *\n * @param {ModalBackgroundProps} props - Component props\n * @returns {JSX.Element} Modal background element\n */\nconst ModalBackground: React.FC<ModalBackgroundProps> = ({\n className,\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames('modal-background'),\n className\n );\n return <div className={classes} {...props} />;\n};\n\n/**\n * Modal.Content - Renders modal content wrapper for custom content.\n *\n * @param {ModalContentProps} props - Component props\n * @returns {JSX.Element} Modal content element\n */\nconst ModalContent: React.FC<ModalContentProps> = ({ className, ...props }) => {\n const classes = classNames(usePrefixedClassNames('modal-content'), className);\n return <div className={classes} {...props} />;\n};\n\n/**\n * Modal.Card.Head - Renders modal card header section.\n *\n * @param {ModalCardHeadProps} props - Component props\n * @returns {JSX.Element} Modal card header element\n */\nconst ModalCardHead: React.FC<ModalCardHeadProps> = ({\n className,\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames('modal-card-head'),\n className\n );\n return <header className={classes} {...props} />;\n};\n\n/**\n * Modal.Card.Title - Renders modal card title.\n *\n * @param {ModalCardTitleProps} props - Component props\n * @returns {JSX.Element} Modal card title element\n */\nconst ModalCardTitle: React.FC<ModalCardTitleProps> = ({\n className,\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames('modal-card-title'),\n className\n );\n return <p className={classes} {...props} />;\n};\n\n/**\n * Modal.Card.Body - Renders modal card body section.\n *\n * @param {ModalCardBodyProps} props - Component props\n * @returns {JSX.Element} Modal card body element\n */\nconst ModalCardBody: React.FC<ModalCardBodyProps> = ({\n className,\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames('modal-card-body'),\n className\n );\n return <section className={classes} {...props} />;\n};\n\n/**\n * Modal.Card.Foot - Renders modal card footer section.\n *\n * @param {ModalCardFootProps} props - Component props\n * @returns {JSX.Element} Modal card footer element\n */\nconst ModalCardFoot: React.FC<ModalCardFootProps> = ({\n className,\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames('modal-card-foot'),\n className\n );\n return <footer className={classes} {...props} />;\n};\n\n/**\n * Modal.Card - Renders modal card wrapper with compound components.\n * Use with Modal.Card.Head, Modal.Card.Title, Modal.Card.Body, and Modal.Card.Foot.\n *\n * @param {ModalCardProps} props - Component props\n * @returns {JSX.Element} Modal card element\n */\nconst ModalCard: React.FC<ModalCardProps> & {\n Head: typeof ModalCardHead;\n Title: typeof ModalCardTitle;\n Body: typeof ModalCardBody;\n Foot: typeof ModalCardFoot;\n} = ({ className, ...props }) => {\n const classes = classNames(usePrefixedClassNames('modal-card'), className);\n return <div className={classes} {...props} />;\n};\n\nModalCard.Head = ModalCardHead;\nModalCard.Title = ModalCardTitle;\nModalCard.Body = ModalCardBody;\nModalCard.Foot = ModalCardFoot;\n\n/**\n * Modal.Close - Renders modal close button with two variant styles.\n *\n * @param {ModalCloseProps} props - Component props\n * @returns {JSX.Element} Close button element\n *\n * @remarks\n * Supports two variants:\n * - 'delete' (default): For use in modal card headers, renders with 'delete' class\n * - 'floating': For floating overlay close button, renders with 'modal-close' class\n *\n * The size prop only applies to the 'floating' variant.\n */\nconst ModalClose: React.FC<ModalCloseProps> = ({\n className,\n size = 'large',\n variant = 'delete',\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames(\n variant === 'delete' ? 'delete' : 'modal-close',\n variant === 'floating' && size && { [`is-${size}`]: true }\n ),\n className\n );\n return (\n <button className={classes} aria-label=\"close\" type=\"button\" {...props} />\n );\n};\n\n/**\n * Bulma Modal component, supporting both modal-card and modal-content variants.\n * Supports both legacy props-based API and compound component API.\n *\n * @param {ModalProps} props - Props for the Modal component.\n * @returns {JSX.Element} The rendered modal.\n *\n * @example\n * // Legacy API\n * <Modal active={isOpen} onClose={handleClose} modalCardTitle=\"Title\">\n * Content\n * </Modal>\n *\n * @example\n * // Compound Component API\n * <Modal isActive={isOpen}>\n * <Modal.Background onClick={handleClose} />\n * <Modal.Card>\n * <Modal.Card.Head>\n * <Modal.Card.Title>Title</Modal.Card.Title>\n * <Modal.Close onClick={handleClose} />\n * </Modal.Card.Head>\n * <Modal.Card.Body>Content</Modal.Card.Body>\n * </Modal.Card>\n * </Modal>\n *\n * @see {@link https://bulma.io/documentation/components/modal/ | Bulma Modal documentation}\n */\nconst ModalRoot: React.FC<ModalProps> & {\n Background: typeof ModalBackground;\n Content: typeof ModalContent;\n Card: typeof ModalCard;\n Close: typeof ModalClose;\n} = ({\n active,\n isActive,\n onClose,\n className,\n textColor,\n bgColor,\n modalCardTitle,\n modalCardFoot,\n type,\n children,\n ...props\n}) => {\n const { classPrefix } = useConfig();\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Support both active and isActive props\n const isModalActive = active ?? isActive ?? false;\n\n // Check if children contain compound components\n const hasCompoundComponents = React.Children.toArray(children).some(\n child =>\n React.isValidElement(child) &&\n (child.type === ModalBackground ||\n child.type === ModalContent ||\n child.type === ModalCard ||\n child.type === ModalClose)\n );\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('modal', {\n 'is-active': isModalActive,\n });\n const deleteClass = usePrefixedClassNames('delete');\n\n const modalClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n // If using compound components, render children as-is\n if (hasCompoundComponents) {\n return (\n <div className={modalClasses} {...rest} data-testid=\"modal\">\n {children}\n </div>\n );\n }\n\n // Legacy API: EXPLICIT type wins; fallback to auto detection if not provided\n let isModalCard: boolean;\n if (type === 'card') isModalCard = true;\n else if (type === 'content') isModalCard = false;\n else isModalCard = !!modalCardTitle || !!modalCardFoot;\n\n return (\n <div className={modalClasses} {...rest} data-testid=\"modal\">\n <div\n className={prefixedClassNames(classPrefix, 'modal-background')}\n onClick={onClose}\n data-testid=\"modal-background\"\n />\n {isModalCard ? (\n <div className={prefixedClassNames(classPrefix, 'modal-card')}>\n {modalCardTitle && (\n <header\n className={prefixedClassNames(classPrefix, 'modal-card-head')}\n >\n <p\n className={prefixedClassNames(classPrefix, 'modal-card-title')}\n >\n {modalCardTitle}\n </p>\n {onClose && (\n <button\n className={deleteClass}\n aria-label=\"close\"\n onClick={onClose}\n type=\"button\"\n data-testid=\"modal-close\"\n />\n )}\n </header>\n )}\n <section\n className={prefixedClassNames(classPrefix, 'modal-card-body')}\n data-testid=\"modal-body\"\n >\n {children}\n </section>\n {modalCardFoot && (\n <footer\n className={prefixedClassNames(classPrefix, 'modal-card-foot')}\n >\n {modalCardFoot}\n </footer>\n )}\n </div>\n ) : (\n <div\n className={prefixedClassNames(classPrefix, 'modal-content')}\n data-testid=\"modal-content\"\n >\n {children}\n </div>\n )}\n {/* Show floating close button for modal-content, or for modal-card when no header */}\n {(!isModalCard || (!modalCardTitle && onClose)) && onClose && (\n <button\n className={prefixedClassNames(classPrefix, 'modal-close', 'is-large')}\n aria-label=\"close\"\n onClick={onClose}\n type=\"button\"\n data-testid=\"modal-close-float\"\n />\n )}\n </div>\n );\n};\n\nModalRoot.Background = ModalBackground;\nModalRoot.Content = ModalContent;\nModalRoot.Card = ModalCard;\nModalRoot.Close = ModalClose;\n\nexport const Modal = ModalRoot;\nexport default Modal;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Navbar component.\n *\n * @property {string} [className] - Additional CSS classes for the navbar.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Color for text.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the navbar.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the navbar.\n * @property {boolean} [transparent] - Whether the navbar is transparent.\n * @property {'top'|'bottom'} [fixed] - Whether the navbar is fixed to the top or bottom.\n * @property {React.ReactNode} [children] - Navbar content.\n */\nexport interface NavbarProps\n extends React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n transparent?: boolean;\n fixed?: 'top' | 'bottom';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar component, supports subcomponents for structured navigation.\n *\n * @function\n * @param {NavbarProps} props - Props for the Navbar component.\n * @returns {JSX.Element} The rendered navbar.\n * @see {@link https://bulma.io/documentation/components/navbar/ | Bulma Navbar documentation}\n */\nexport const Navbar: React.FC<NavbarProps> & {\n Brand: typeof NavbarBrand;\n Item: typeof NavbarItem;\n Burger: typeof NavbarBurger;\n Menu: typeof NavbarMenu;\n Start: typeof NavbarStart;\n End: typeof NavbarEnd;\n Dropdown: typeof NavbarDropdown;\n DropdownMenu: typeof NavbarDropdownMenu;\n Divider: typeof NavbarDivider;\n} = ({\n className,\n textColor,\n bgColor,\n color,\n transparent,\n fixed,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('navbar', {\n [`is-${color}`]: color,\n 'is-transparent': transparent,\n [`is-fixed-${fixed}`]: fixed,\n });\n\n const navbarClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <nav\n className={navbarClasses}\n role=\"navigation\"\n aria-label=\"main navigation\"\n {...rest}\n >\n {children}\n </nav>\n );\n};\n\n/**\n * Props for the NavbarBrand component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the brand.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the brand.\n * @property {React.ReactNode} [children] - Brand content.\n */\nexport interface NavbarBrandProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar brand area (usually left side).\n *\n * @function\n * @param {NavbarBrandProps} props - Props for the NavbarBrand component.\n * @returns {JSX.Element} The rendered brand area.\n */\nexport const NavbarBrand: React.FC<NavbarBrandProps> = ({\n className,\n children,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n ...props,\n });\n\n return (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-brand'),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Props for the NavbarItem component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ElementType} [as] - Render as a custom component.\n * @property {boolean} [active] - Whether the item is active.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the item.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the item.\n * @property {React.ReactNode} [children] - Navbar item content.\n */\nexport interface NavbarItemProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n as?: React.ElementType;\n active?: boolean;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar item (link, button, etc).\n *\n * @function\n * @param {NavbarItemProps} props - Props for the NavbarItem component.\n * @returns {JSX.Element} The rendered item.\n */\nexport const NavbarItem: React.FC<NavbarItemProps> = ({\n className,\n as: Component = 'a',\n active,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n return (\n <Component\n className={classNames(\n usePrefixedClassNames('navbar-item', {\n 'is-active': active,\n }),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </Component>\n );\n};\n\n/**\n * Props for the NavbarBurger component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the burger.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the burger.\n * @property {boolean} [active] - Whether the burger is active.\n * @property {React.ReactNode} [children] - Custom content inside the burger.\n * @property {string} ['aria-label'] - Aria label for accessibility.\n * @property {boolean} ['aria-expanded'] - Aria expanded state.\n * @property {React.MouseEventHandler<HTMLButtonElement>} [onClick] - Click handler.\n */\nexport interface NavbarBurgerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n active?: boolean;\n children?: React.ReactNode;\n 'aria-label'?: string;\n 'aria-expanded'?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\n/**\n * Bulma Navbar burger (responsive menu toggle).\n *\n * @function\n * @param {NavbarBurgerProps} props - Props for the NavbarBurger component.\n * @returns {JSX.Element} The rendered burger.\n */\nexport const NavbarBurger: React.FC<NavbarBurgerProps> = ({\n className,\n active,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n return (\n <button\n type=\"button\"\n className={classNames(\n usePrefixedClassNames('navbar-burger', {\n 'is-active': active,\n }),\n bulmaHelperClasses,\n className\n )}\n aria-label={props['aria-label'] || 'menu'}\n aria-expanded={props['aria-expanded'] ?? !!active}\n {...rest}\n >\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n {children}\n </button>\n );\n};\n\n/**\n * Props for the NavbarMenu component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the menu.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the menu.\n * @property {boolean} [active] - Whether the menu is active.\n * @property {React.ReactNode} [children] - Menu content.\n */\nexport interface NavbarMenuProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n active?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar menu area (collapsible content).\n *\n * @function\n * @param {NavbarMenuProps} props - Props for the NavbarMenu component.\n * @returns {JSX.Element} The rendered menu.\n */\nexport const NavbarMenu: React.FC<NavbarMenuProps> = ({\n className,\n active,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n return (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-menu', {\n 'is-active': active,\n }),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Props for the NavbarStartEnd component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface NavbarStartEndProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar start area (left-aligned).\n *\n * @function\n * @param {NavbarStartEndProps} props - Props for the NavbarStart component.\n * @returns {JSX.Element} The rendered start area.\n */\nexport const NavbarStart: React.FC<NavbarStartEndProps> = ({\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n return (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-start'),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Bulma Navbar end area (right-aligned).\n *\n * @function\n * @param {NavbarStartEndProps} props - Props for the NavbarEnd component.\n * @returns {JSX.Element} The rendered end area.\n */\nexport const NavbarEnd: React.FC<NavbarStartEndProps> = ({\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n return (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-end'),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Props for the NavbarDropdown component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {boolean} [right] - Dropdown aligned right.\n * @property {boolean} [up] - Dropdown opens upwards.\n * @property {boolean} [hoverable] - Dropdown opens on hover.\n * @property {boolean} [active] - Dropdown is open.\n * @property {React.ReactNode} [children] - Dropdown content.\n */\nexport interface NavbarDropdownProps\n extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n right?: boolean;\n up?: boolean;\n hoverable?: boolean;\n active?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar dropdown (for nested dropdown menus).\n *\n * @function\n * @param {NavbarDropdownProps} props - Props for the NavbarDropdown component.\n * @returns {JSX.Element} The rendered dropdown.\n */\nexport const NavbarDropdown: React.FC<NavbarDropdownProps> = ({\n className,\n right,\n up,\n hoverable,\n active,\n children,\n ...props\n}) => (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-item', 'has-dropdown', {\n 'is-right': right,\n 'is-up': up,\n 'is-hoverable': hoverable,\n 'is-active': active,\n }),\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Props for the NavbarDropdownMenu component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {boolean} [right] - Dropdown aligned right.\n * @property {boolean} [up] - Dropdown opens upwards.\n * @property {React.ReactNode} [children] - Dropdown menu content.\n */\nexport interface NavbarDropdownMenuProps\n extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n right?: boolean;\n up?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar dropdown menu container.\n *\n * @function\n * @param {NavbarDropdownMenuProps} props - Props for the NavbarDropdownMenu component.\n * @returns {JSX.Element} The rendered dropdown menu.\n */\nexport const NavbarDropdownMenu: React.FC<NavbarDropdownMenuProps> = ({\n className,\n right,\n up,\n children,\n ...props\n}) => (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-dropdown', {\n 'is-right': right,\n 'is-up': up,\n }),\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Bulma Navbar divider.\n *\n * @param props - Standard hr props.\n * @returns {JSX.Element} The rendered divider.\n */\nexport const NavbarDivider: React.FC<\n React.HTMLAttributes<HTMLHRElement>\n> = props => (\n <hr className={usePrefixedClassNames('navbar-divider')} {...props} />\n);\n\n// Attach subcomponents\nNavbar.Brand = NavbarBrand;\nNavbar.Item = NavbarItem;\nNavbar.Burger = NavbarBurger;\nNavbar.Menu = NavbarMenu;\nNavbar.Start = NavbarStart;\nNavbar.End = NavbarEnd;\nNavbar.Dropdown = NavbarDropdown;\nNavbar.DropdownMenu = NavbarDropdownMenu;\nNavbar.Divider = NavbarDivider;\n\nexport default Navbar;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Pagination component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color for the pagination.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the pagination.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the pagination.\n * @property {'small'|'medium'|'large'} [size] - Size modifier for the pagination.\n * @property {'centered'|'right'} [align] - Alignment for the pagination.\n * @property {boolean} [rounded] - Renders pagination with rounded corners.\n * @property {number} [total] - Total number of pages.\n * @property {number} [current] - Current page.\n * @property {(page: number) => void} [onPageChange] - Page change callback.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Custom pagination content.\n */\nexport interface PaginationProps\n extends React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n size?: 'small' | 'medium' | 'large';\n align?: 'centered' | 'right';\n rounded?: boolean;\n total?: number;\n current?: number;\n onPageChange?: (page: number) => void;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for PaginationPrevious and PaginationNext components.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {boolean} [disabled] - Whether previous/next is disabled.\n * @property {React.ReactNode} [children] - Button content.\n */\nexport interface PaginationPreviousNextProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n className?: string;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Pagination previous button.\n */\nexport const PaginationPrevious: React.FC<PaginationPreviousNextProps> = ({\n className,\n disabled,\n children,\n ...props\n}) => (\n <a\n className={classNames(\n usePrefixedClassNames('pagination-previous'),\n className,\n {\n 'is-disabled': disabled,\n }\n )}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n {...props}\n onClick={\n disabled\n ? e => {\n e.preventDefault();\n e.stopPropagation();\n }\n : props.onClick\n }\n >\n {children}\n </a>\n);\n\n/**\n * Bulma Pagination next button.\n */\nexport const PaginationNext: React.FC<PaginationPreviousNextProps> = ({\n className,\n disabled,\n children,\n ...props\n}) => (\n <a\n className={classNames(usePrefixedClassNames('pagination-next'), className, {\n 'is-disabled': disabled,\n })}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n {...props}\n onClick={\n disabled\n ? e => {\n e.preventDefault();\n e.stopPropagation();\n }\n : props.onClick\n }\n >\n {children}\n </a>\n);\n\n/**\n * Bulma Pagination navigation component.\n *\n * @function\n * @param {PaginationProps} props - Props for the Pagination component.\n * @returns {JSX.Element} The rendered pagination.\n * @see {@link https://bulma.io/documentation/components/pagination/ | Bulma Pagination documentation}\n */\nexport const Pagination: React.FC<PaginationProps> & {\n Link: typeof PaginationLink;\n List: typeof PaginationList;\n Ellipsis: typeof PaginationEllipsis;\n Previous: typeof PaginationPrevious;\n Next: typeof PaginationNext;\n} = ({\n color,\n textColor,\n bgColor,\n size,\n align,\n rounded,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('pagination', {\n [`is-${color}`]: color,\n [`is-${size}`]: size,\n [`is-${align}`]: align,\n 'is-rounded': rounded,\n });\n\n const paginationClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <nav\n className={paginationClasses}\n role=\"navigation\"\n aria-label=\"pagination\"\n {...rest}\n >\n {children}\n </nav>\n );\n};\n\n/**\n * Props for the PaginationList component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the list.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the list.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the list.\n * @property {React.ReactNode} [children] - List items.\n */\nexport interface PaginationListProps\n extends React.HTMLAttributes<HTMLUListElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Pagination list container.\n */\nexport const PaginationList: React.FC<PaginationListProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n return (\n <ul\n className={classNames(\n usePrefixedClassNames('pagination-list'),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </ul>\n );\n};\n\n/**\n * Props for the PaginationLink component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {boolean} [active] - Whether the link is for the current page.\n * @property {boolean} [disabled] - Whether the link is disabled.\n * @property {React.ReactNode} [children] - Link content.\n */\nexport interface PaginationLinkProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n active?: boolean;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Pagination link (page number).\n */\nexport const PaginationLink: React.FC<PaginationLinkProps> = ({\n className,\n textColor,\n bgColor,\n active,\n disabled,\n onClick,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (onClick) {\n onClick(e);\n }\n };\n\n return (\n <li>\n <a\n className={classNames(\n usePrefixedClassNames('pagination-link'),\n bulmaHelperClasses,\n className,\n {\n 'is-current': active,\n 'is-disabled': disabled,\n }\n )}\n aria-current={active ? 'page' : undefined}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n onClick={handleClick}\n {...rest}\n >\n {children}\n </a>\n </li>\n );\n};\n\n/**\n * Bulma Pagination ellipsis element.\n *\n * @param props - Standard li props.\n * @returns {JSX.Element} The rendered ellipsis.\n */\nexport const PaginationEllipsis: React.FC<\n React.LiHTMLAttributes<HTMLLIElement>\n> = props => (\n <li>\n <span className={usePrefixedClassNames('pagination-ellipsis')} {...props}>\n …\n </span>\n </li>\n);\n\nPagination.Link = PaginationLink;\nPagination.List = PaginationList;\nPagination.Ellipsis = PaginationEllipsis;\nPagination.Previous = PaginationPrevious;\nPagination.Next = PaginationNext;\n\nexport default Pagination;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Panel component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the panel.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Panel content.\n */\nexport interface PanelProps\n extends React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the PanelHeading component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Heading content.\n */\nexport interface PanelHeadingProps\n extends React.HTMLAttributes<HTMLParagraphElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the PanelTabs component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Tabs content.\n */\nexport interface PanelTabsProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the PanelBlock component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {boolean} [active] - Whether the block is active.\n * @property {React.ReactNode} [children] - Block content.\n */\nexport interface PanelBlockProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n className?: string;\n active?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the PanelIcon component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Icon content.\n */\nexport interface PanelIconProps extends React.HTMLAttributes<HTMLSpanElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the PanelInputBlock component.\n *\n * @property {string} [value] - Input value.\n * @property {(event: React.ChangeEvent<HTMLInputElement>) => void} [onChange] - Input change handler.\n * @property {string} [placeholder] - Input placeholder.\n * @property {string} [iconClassName] - Icon class for left icon (default 'fas fa-search').\n */\nexport interface PanelInputBlockProps\n extends React.HTMLAttributes<HTMLDivElement> {\n value?: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n placeholder?: string;\n iconClassName?: string;\n}\n\n/**\n * Props for the PanelCheckboxBlock component.\n *\n * @property {boolean} [checked] - Whether the checkbox is checked.\n * @property {(event: React.ChangeEvent<HTMLInputElement>) => void} [onChange] - Checkbox change handler.\n * @property {React.ReactNode} [children] - Label/content.\n */\nexport interface PanelCheckboxBlockProps\n extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'onChange'> {\n checked?: boolean;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the PanelButtonBlock component.\n *\n * @property {React.ReactNode} [children] - Button content.\n */\nexport interface PanelButtonBlockProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Panel component, supports various panel subcomponents.\n *\n * @function\n * @param {PanelProps} props - Props for the Panel component.\n * @returns {JSX.Element} The rendered panel.\n * @see {@link https://bulma.io/documentation/components/panel/ | Bulma Panel documentation}\n */\nexport const Panel: React.FC<PanelProps> & {\n Heading: typeof PanelHeading;\n Tabs: typeof PanelTabs;\n Block: typeof PanelBlock;\n Icon: typeof PanelIcon;\n InputBlock: typeof PanelInputBlock;\n CheckboxBlock: typeof PanelCheckboxBlock;\n ButtonBlock: typeof PanelButtonBlock;\n} = ({ color, className, children, ...props }) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('panel', {\n [`is-${color}`]: color,\n });\n\n const panelClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <nav className={panelClasses} {...rest}>\n {children}\n </nav>\n );\n};\n\n/**\n * Bulma Panel heading.\n */\nexport const PanelHeading: React.FC<PanelHeadingProps> = ({\n className,\n children,\n ...props\n}) => (\n <p\n className={classNames(usePrefixedClassNames('panel-heading'), className)}\n {...props}\n >\n {children}\n </p>\n);\n\n/**\n * Bulma Panel tabs.\n */\nexport const PanelTabs: React.FC<PanelTabsProps> = ({\n className,\n children,\n ...props\n}) => (\n <p\n className={classNames(usePrefixedClassNames('panel-tabs'), className)}\n {...props}\n >\n {children}\n </p>\n);\n\n/**\n * Bulma Panel block.\n */\nexport const PanelBlock: React.FC<PanelBlockProps> = ({\n className,\n active,\n children,\n ...props\n}) => (\n <a\n className={classNames(\n usePrefixedClassNames('panel-block', { 'is-active': active }),\n className\n )}\n {...props}\n >\n {children}\n </a>\n);\n\n/**\n * Bulma Panel icon.\n */\nexport const PanelIcon: React.FC<PanelIconProps> = ({\n className,\n children,\n ...props\n}) => (\n <span\n className={classNames(usePrefixedClassNames('panel-icon'), className)}\n {...props}\n >\n {children}\n </span>\n);\n\n/**\n * Bulma Panel input block.\n */\nexport const PanelInputBlock: React.FC<PanelInputBlockProps> = ({\n value,\n onChange,\n placeholder,\n iconClassName = 'fas fa-search',\n ...props\n}) => {\n const inputClass = usePrefixedClassNames('input');\n\n return (\n <div className={usePrefixedClassNames('panel-block')} {...props}>\n <p className={usePrefixedClassNames('control', 'has-icons-left')}>\n <input\n className={inputClass}\n type=\"text\"\n placeholder={placeholder}\n value={value}\n onChange={onChange}\n />\n <span className={usePrefixedClassNames('icon', 'is-left')}>\n <i className={iconClassName} aria-hidden=\"true\"></i>\n </span>\n </p>\n </div>\n );\n};\n\n/**\n * Bulma Panel checkbox block.\n */\nexport const PanelCheckboxBlock: React.FC<PanelCheckboxBlockProps> = ({\n checked,\n onChange,\n children,\n ...props\n}) => (\n <label className={usePrefixedClassNames('panel-block')} {...props}>\n <input type=\"checkbox\" checked={checked} onChange={onChange} />\n {children}\n </label>\n);\n\n/**\n * Bulma Panel button block.\n */\nexport const PanelButtonBlock: React.FC<PanelButtonBlockProps> = ({\n children,\n className,\n ...props\n}) => (\n <div className={usePrefixedClassNames('panel-block')}>\n <button\n className={classNames(\n usePrefixedClassNames(\n 'button',\n 'is-link',\n 'is-outlined',\n 'is-fullwidth'\n ),\n className\n )}\n {...props}\n >\n {children}\n </button>\n </div>\n);\n\nPanel.Heading = PanelHeading;\nPanel.Tabs = PanelTabs;\nPanel.Block = PanelBlock;\nPanel.Icon = PanelIcon;\nPanel.InputBlock = PanelInputBlock;\nPanel.CheckboxBlock = PanelCheckboxBlock;\nPanel.ButtonBlock = PanelButtonBlock;\n\nexport default Panel;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Tabs component.\n *\n * @property {'centered'|'right'|'left'} [align] - Tab alignment.\n * @property {'small'|'medium'|'large'} [size] - Tab size.\n * @property {boolean} [fullwidth] - Tabs are fullwidth.\n * @property {boolean} [boxed] - Tabs are boxed style.\n * @property {boolean} [toggle] - Tabs are toggle style.\n * @property {boolean} [rounded] - Tabs are rounded (if toggle).\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color for the tabs.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Tab content.\n */\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n align?: 'centered' | 'right' | 'left';\n size?: 'small' | 'medium' | 'large';\n fullwidth?: boolean;\n boxed?: boolean;\n toggle?: boolean;\n rounded?: boolean;\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the TabList component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Tab list items.\n */\nexport interface TabListProps extends React.HTMLAttributes<HTMLUListElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the TabItem component.\n *\n * @property {boolean} [active] - Whether the tab is active.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Tab content.\n * @property {React.MouseEventHandler<HTMLLIElement>} [onClick] - Click handler.\n */\nexport interface TabItemProps extends React.LiHTMLAttributes<HTMLLIElement> {\n active?: boolean;\n className?: string;\n children?: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLLIElement>;\n}\n\n/**\n * Bulma Tabs component with subcomponents for tab lists and items.\n *\n * @function\n * @param {TabsProps} props - Props for the Tabs component.\n * @returns {JSX.Element} The rendered tabs.\n * @see {@link https://bulma.io/documentation/components/tabs/ | Bulma Tabs documentation}\n */\nexport const Tabs: React.FC<TabsProps> & {\n List: typeof TabList;\n Item: typeof TabItem;\n} = ({\n align,\n size,\n fullwidth,\n boxed,\n toggle,\n rounded,\n color,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('tabs', {\n [`is-${align}`]: align,\n [`is-${size}`]: size,\n [`is-${color}`]: color,\n 'is-fullwidth': fullwidth,\n 'is-boxed': boxed,\n 'is-toggle': toggle,\n 'is-toggle-rounded': rounded,\n });\n\n const tabsClass = classNames(bulmaClasses, bulmaHelperClasses, className);\n return (\n <div className={tabsClass} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Bulma Tab list container.\n *\n * @function\n * @param {TabListProps} props - Props for the TabList component.\n * @returns {JSX.Element} The rendered tab list.\n */\nexport const TabList: React.FC<TabListProps> = ({\n className,\n children,\n ...props\n}) => (\n <ul className={classNames(className)} {...props}>\n {children}\n </ul>\n);\n\n/**\n * Bulma Tab item.\n *\n * @function\n * @param {TabItemProps} props - Props for the TabItem component.\n * @returns {JSX.Element} The rendered tab item.\n */\nexport const TabItem: React.FC<TabItemProps> = ({\n active,\n className,\n children,\n onClick,\n ...props\n}) => (\n <li\n className={classNames(\n { [usePrefixedClassNames('is-active')]: active },\n className\n )}\n onClick={onClick}\n {...props}\n >\n {children}\n </li>\n);\n\nTabs.List = TabList;\nTabs.Item = TabItem;\n\nexport default Tabs;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Block component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the block.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Content to be rendered inside the block.\n */\nexport interface BlockProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Block component for rendering a styled Bulma block element.\n *\n * A block is a simple utility element that adds spacing (margin-bottom) between elements.\n * Supports Bulma helper classes for additional styling like text color, background color, and layout.\n *\n * @function\n * @param {BlockProps} props - Props for the Block component.\n * @returns {JSX.Element} The rendered block element.\n * @see {@link https://bulma.io/documentation/elements/block/ | Bulma Block documentation}\n */\nexport const Block: React.FC<BlockProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('block');\n const blockClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <div className={blockClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Box component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the box.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {boolean} [hasShadow=true] - Whether the box has a shadow (default: true).\n * @property {React.ReactNode} [children] - Content to be rendered inside the box.\n */\nexport interface BoxProps\n /** @ignore */\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n hasShadow?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Box component for rendering a styled Bulma box element.\n *\n * Supports Bulma helper classes for styling and layout, with optional shadow control.\n *\n * @function\n * @param {BoxProps} props - Props for the Box component.\n * @returns {JSX.Element} The rendered box element.\n * @see {@link https://bulma.io/documentation/elements/box/ | Bulma Box documentation}\n */\nexport const Box: React.FC<BoxProps> = ({\n className,\n textColor,\n bgColor,\n hasShadow = true,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('box', {\n 'is-shadowless': !hasShadow,\n });\n\n const boxClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <div className={boxClasses} {...rest}>\n {children}\n </div>\n );\n};\n\nexport default Box;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Button component.\n *\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the button.\n * @property {'small' | 'normal' | 'medium' | 'large'} [size] - Button size.\n * @property {boolean} [isLight] - Use the light version of the color.\n * @property {boolean} [isRounded] - Button is fully rounded.\n * @property {boolean} [isLoading] - Button shows a loading spinner.\n * @property {boolean} [isStatic] - Button is static and non-interactive.\n * @property {boolean} [isFullWidth] - Button takes the full width of parent.\n * @property {boolean} [isOutlined] - Use outlined button style.\n * @property {boolean} [isInverted] - Use inverted color style.\n * @property {boolean} [isFocused] - Button is styled as focused.\n * @property {boolean} [isActive] - Button is styled as active.\n * @property {boolean} [isHovered] - Button is styled as hovered.\n * @property {boolean} [isDisabled] - Button is disabled.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {'a' | 'button'} [as] - Render as an anchor or button element.\n * @property {string} [href] - Specifies the URL for anchor buttons.\n * @property {React.MouseEventHandler<HTMLButtonElement> | React.MouseEventHandler<HTMLAnchorElement>} [onClick] - Click handler for the button or anchor.\n * @property {string} [target] - Target for anchor element.\n * @property {string} [rel] - Rel attribute for anchor element.\n * @property {React.ReactNode} [children] - Content to be rendered inside the button.\n */\nexport interface ButtonProps\n extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n 'color' | 'onClick'\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor' | 'size'> {\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n size?: 'small' | 'normal' | 'medium' | 'large';\n isLight?: boolean;\n isRounded?: boolean;\n isLoading?: boolean;\n isStatic?: boolean;\n isFullWidth?: boolean;\n isOutlined?: boolean;\n isInverted?: boolean;\n isFocused?: boolean;\n isActive?: boolean;\n isHovered?: boolean;\n isDisabled?: boolean;\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n as?: 'a' | 'button';\n href?: string;\n onClick?:\n | React.MouseEventHandler<HTMLButtonElement>\n | React.MouseEventHandler<HTMLAnchorElement>;\n target?: string;\n rel?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Button component for rendering a Bulma-styled button or anchor.\n *\n * Supports Bulma helper classes for colors, sizes, and various button states and modifiers.\n *\n * @function\n * @param {ButtonProps} props - Props for the Button component.\n * @returns {JSX.Element} The rendered button or anchor element.\n * @see {@link https://bulma.io/documentation/elements/button/ | Bulma Button documentation}\n */\nexport const Button: React.FC<ButtonProps> = ({\n color,\n size,\n isLight,\n isRounded,\n isLoading,\n isStatic,\n isFullWidth,\n isOutlined,\n isInverted,\n isFocused,\n isActive,\n isHovered,\n isDisabled,\n className,\n children,\n textColor,\n bgColor,\n as = 'button',\n href,\n onClick,\n target,\n rel,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('button', {\n [`is-${color}`]: color && validColors.includes(color),\n [`is-${size}`]: size,\n 'is-outlined': isOutlined,\n 'is-light': isLight,\n 'is-loading': isLoading,\n 'is-static': isStatic,\n 'is-disabled': isDisabled,\n 'is-rounded': isRounded,\n 'is-hovered': isHovered,\n 'is-focused': isFocused,\n 'is-active': isActive,\n 'is-inverted': isInverted,\n 'is-fullwidth': isFullWidth,\n });\n\n // Combine prefixed Bulma classes with unprefixed user className and prefixed helper classes\n const buttonClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n if (as === 'a') {\n // Create anchor-specific props by excluding button-specific ones\n const {\n type: _type,\n disabled: _disabled,\n form: _form,\n formAction: _formAction,\n formEncType: _formEncType,\n formMethod: _formMethod,\n formNoValidate: _formNoValidate,\n formTarget: _formTarget,\n name: _name,\n value: _value,\n autoFocus: _autoFocus,\n ...anchorRest\n } = rest as React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n return (\n <a\n className={buttonClasses}\n href={href}\n target={target}\n rel={rel}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : undefined}\n onClick={\n isDisabled\n ? (e: React.MouseEvent<HTMLAnchorElement>) => e.preventDefault()\n : (onClick as\n | React.MouseEventHandler<HTMLAnchorElement>\n | undefined)\n }\n {...(anchorRest as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {children}\n </a>\n );\n }\n\n return (\n <button\n className={buttonClasses}\n disabled={isDisabled}\n onClick={\n onClick as React.MouseEventHandler<HTMLButtonElement> | undefined\n }\n {...rest}\n >\n {children}\n </button>\n );\n};\n\nexport default Button;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Buttons component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the buttons group.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {boolean} [isCentered] - Center the group of buttons.\n * @property {boolean} [isRight] - Align the group of buttons to the right.\n * @property {boolean} [hasAddons] - Group buttons together as addons.\n * @property {React.ReactNode} children - The button elements to render inside the group.\n */\ninterface ButtonsProps\n extends React.HTMLAttributes<HTMLDivElement>,\n BulmaClassesProps {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n isCentered?: boolean;\n isRight?: boolean;\n hasAddons?: boolean;\n children: React.ReactNode;\n}\n\n/**\n * Buttons component for rendering a group of Bulma-styled buttons.\n *\n * Supports Bulma helper classes for styling, color, and layout, including centering, right alignment, and grouping as addons.\n *\n * @function\n * @param {ButtonsProps} props - Props for the Buttons component.\n * @returns {JSX.Element} The rendered group of buttons.\n * @see {@link https://bulma.io/documentation/elements/button/#group | Bulma Button Group documentation}\n */\nexport const Buttons: React.FC<ButtonsProps> = ({\n className,\n textColor,\n bgColor,\n isCentered,\n isRight,\n hasAddons,\n children,\n ...props\n}) => {\n const buttonsClasses = usePrefixedClassNames('buttons', {\n 'is-centered': isCentered,\n 'is-right': isRight,\n 'has-addons': hasAddons,\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const combinedClasses = classNames(\n buttonsClasses,\n className,\n bulmaHelperClasses\n );\n\n return (\n <div className={combinedClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Content component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the content.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {'small' | 'normal' | 'medium' | 'large'} [size] - Size modifier for the content.\n * @property {React.ReactNode} [children] - Content to be rendered inside the block.\n */\ninterface ContentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n size?: 'small' | 'normal' | 'medium' | 'large';\n children?: React.ReactNode;\n}\n\n// Valid size modifiers for the content class\nconst validSizes = ['small', 'medium', 'large'] as const;\n\n/**\n * Content component for rendering a styled Bulma content block.\n *\n * Applies typographic styles to HTML content (e.g., paragraphs, headings, lists) with Bulma's content class.\n * Supports size modifiers and Bulma helper classes for additional styling.\n *\n * @function\n * @param {ContentProps} props - Props for the Content component.\n * @returns {JSX.Element} The rendered content block.\n * @see {@link https://bulma.io/documentation/elements/content/ | Bulma Content documentation}\n */\nexport const Content: React.FC<ContentProps> = ({\n className,\n textColor,\n bgColor,\n size,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('content', {\n [`is-${size}`]: size && size !== 'normal' && validSizes.includes(size),\n });\n\n const contentClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <div className={contentClasses} {...rest}>\n {children}\n </div>\n );\n};\n\nexport default Content;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Delete component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the delete button.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {(event: React.MouseEvent<HTMLButtonElement>) => void} [onClick] - Click handler for the button.\n * @property {'small' | 'medium' | 'large'} [size] - Size modifier for the delete button.\n * @property {string} [ariaLabel='Close'] - ARIA label for accessibility (default: 'Close').\n * @property {boolean} [disabled=false] - Whether the button is disabled (default: false).\n */\ninterface DeleteProps\n extends React.HTMLAttributes<HTMLButtonElement>,\n BulmaClassesProps {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n size?: 'small' | 'medium' | 'large';\n ariaLabel?: string;\n disabled?: boolean;\n}\n\n/**\n * Delete component for rendering a Bulma-styled delete/close button.\n *\n * Supports Bulma helper classes for styling, color, and size, and includes accessibility and disabled state.\n *\n * @function\n * @param {DeleteProps} props - Props for the Delete component.\n * @returns {JSX.Element} The rendered delete button.\n * @see {@link https://bulma.io/documentation/elements/delete/ | Bulma Delete documentation}\n */\nexport const Delete: React.FC<DeleteProps> = ({\n className,\n textColor,\n bgColor,\n onClick,\n size,\n ariaLabel = 'Close',\n disabled = false,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('delete', {\n [`is-${size}`]: size,\n 'is-disabled': disabled,\n });\n\n const classes = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <button\n className={classes}\n onClick={onClick}\n aria-label={ariaLabel}\n disabled={disabled}\n type=\"button\"\n {...rest}\n />\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { useIconLibrary } from '../helpers/Config';\n\n// TypeScript declaration for Ionicons web component\ninterface IonIconProps extends React.HTMLAttributes<HTMLElement> {\n name?: string;\n src?: string;\n icon?: unknown;\n size?: string;\n lazy?: boolean;\n sanitize?: boolean;\n color?: string;\n flipRtl?: boolean;\n ariaLabel?: string;\n ariaHidden?: string;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n 'ion-icon': IonIconProps;\n }\n }\n}\n\ntype IconLibrary = 'fa' | 'mdi' | 'ion' | 'material-icons' | 'material-symbols'; // 'fa' = Font Awesome, 'mdi' = Material Design Icons, 'ion' = Ionicons Web Components, 'material-icons' = Google Material Icons, 'material-symbols' = Google Material Symbols\n\n/**\n * Props for the Icon component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the icon.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {string} name - The icon name (without library prefix).\n * @property {IconLibrary} [library] - The icon library to use ('fa' = Font Awesome, 'mdi' = Material Design Icons, 'ion' = Ionicons Web Components, 'material-icons' = Google Material Icons, 'material-symbols' = Google Material Symbols). Defaults to the value set in ConfigProvider or 'fa' if not configured.\n * @property {string} [variant] - Icon style variant. For Font Awesome: 'solid', 'regular', 'brands', etc. For Material Icons: 'filled', 'outlined', 'round', 'sharp'. For Material Symbols: 'outlined', 'rounded', 'sharp'. For Ionicons: 'outline', 'sharp'.\n * @property {string | string[]} [features] - Additional library-specific modifiers. For Font Awesome: 'fa-lg', 'fa-spin', etc. For others: size classes like 'is-size-1', etc.\n * @property {string | string[]} [libraryFeatures] - DEPRECATED: Use 'variant' and 'features' instead. Additional library-specific classes.\n * @property {'small' | 'medium' | 'large'} [size] - Size modifier for the icon.\n * @property {string} [ariaLabel='icon'] - ARIA label for accessibility (default: 'icon').\n * @property {object} [style] - Inline style object.\n */\nexport interface IconProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n BulmaClassesProps {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n name: string; // e.g., 'star', 'account', 'home-outline'\n icon?: string; // DEPRECATED: legacy prop that should not be used\n library?: IconLibrary; // defaults to ConfigProvider iconLibrary or 'fa'\n variant?: string; // e.g., 'solid', 'outlined', 'rounded', 'sharp'\n features?: string | string[]; // e.g., 'fa-lg', 'fa-spin', 'is-size-1'\n libraryFeatures?: string | string[]; // DEPRECATED: backward compatibility\n size?: 'small' | 'medium' | 'large';\n ariaLabel?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * Gets the correct classes for the icon element based on the library and features.\n *\n * @param {IconLibrary} library - The icon library.\n * @param {string} name - The icon name.\n * @param {string} [variant] - Icon style variant (e.g., 'solid', 'outlined', 'rounded').\n * @param {string | string[]} [features] - Additional library-specific modifiers.\n * @returns {string} The combined class string for the icon.\n */\nfunction getIconClasses(\n library: IconLibrary,\n name: string,\n variant?: string,\n features?: string | string[]\n): string {\n let baseClass = '';\n let iconClass = '';\n let featureList = Array.isArray(features)\n ? features\n : features\n ? [features]\n : [];\n\n switch (library) {\n case 'fa': {\n // Font Awesome: use variant as style ('solid' -> 'fas', 'regular' -> 'far', etc.)\n const styleMap: Record<string, string> = {\n solid: 'fas',\n regular: 'far',\n brands: 'fab',\n light: 'fal',\n duotone: 'fad',\n thin: 'fat',\n };\n const faStyle = variant ? styleMap[variant] || variant : 'fas';\n baseClass = faStyle;\n iconClass = `fa-${name}`;\n return [baseClass, iconClass, ...featureList].join(' ');\n }\n case 'mdi':\n // Material Design Icons: no variants, just features\n baseClass = 'mdi';\n iconClass = `mdi-${name}`;\n return [baseClass, iconClass, ...featureList].join(' ');\n case 'material-icons': {\n // Google Material Icons: map variants to full class names\n const styleVariants: Record<string, string> = {\n filled: 'material-icons',\n outlined: 'material-icons-outlined',\n round: 'material-icons-round',\n sharp: 'material-icons-sharp',\n };\n baseClass = variant\n ? styleVariants[variant] || `material-icons-${variant}`\n : 'material-icons';\n return [baseClass, ...featureList].join(' ');\n }\n case 'material-symbols': {\n // Google Material Symbols: map variants to full class names\n const styleVariants: Record<string, string> = {\n outlined: 'material-symbols-outlined',\n rounded: 'material-symbols-rounded',\n sharp: 'material-symbols-sharp',\n };\n baseClass = variant\n ? styleVariants[variant] || `material-symbols-${variant}`\n : 'material-symbols-outlined';\n return [baseClass, ...featureList].join(' ');\n }\n default:\n // fallback: just icon name and features\n return [name, ...featureList].join(' ');\n }\n}\n\n/**\n * Icon component for rendering a Bulma-styled icon container.\n *\n * Supports Bulma helper classes for styling, color, and size, and renders an <i></i> element for the icon itself.\n *\n * @function\n * @param {IconProps} props - Props for the Icon component.\n * @returns {JSX.Element} The rendered icon element.\n * @see {@link https://bulma.io/documentation/elements/icon/ | Bulma Icon documentation}\n */\nexport const Icon: React.FC<IconProps> = ({\n className,\n textColor,\n bgColor,\n name,\n library,\n variant,\n features,\n libraryFeatures, // Deprecated but maintained for backward compatibility\n size,\n ariaLabel = 'icon',\n style,\n icon, // Capture and exclude the deprecated 'icon' prop from DOM\n color: _color, // Exclude 'color' prop if passed directly\n ...restProps\n}) => {\n // Handle deprecated 'icon' prop - parse it to extract the actual name\n let finalName = name;\n if (!name && icon) {\n // If icon prop is provided instead of name, try to parse it\n // e.g., \"mdi mdi-rocket-launch\" -> \"rocket-launch\"\n if (typeof icon === 'string') {\n const parts = icon.split(' ');\n const lastPart = parts[parts.length - 1];\n if (lastPart.startsWith('mdi-')) {\n finalName = lastPart.substring(4); // Remove \"mdi-\" prefix\n } else if (lastPart.startsWith('fa-')) {\n finalName = lastPart.substring(3); // Remove \"fa-\" prefix\n } else {\n finalName = lastPart;\n }\n }\n }\n\n // Get the default icon library from context, fallback to 'fa' if not set\n const defaultLibrary = useIconLibrary();\n const finalLibrary = library || defaultLibrary || 'fa';\n /**\n * Generates Bulma helper classes and separates out remaining props.\n * Note: variant, features, and libraryFeatures are excluded from props spread\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...restProps,\n });\n\n const bulmaClasses = usePrefixedClassNames('icon', {\n [`is-${size}`]: size,\n });\n\n const iconContainerClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n // Backward compatibility: if libraryFeatures is provided, parse it for variant and features\n let finalVariant = variant;\n let finalFeatures = features;\n\n if (libraryFeatures && !variant && !features) {\n const legacyFeatures = Array.isArray(libraryFeatures)\n ? libraryFeatures\n : [libraryFeatures];\n\n // For Font Awesome, extract style from features\n if (finalLibrary === 'fa') {\n const faStyle = legacyFeatures.find(f =>\n [\n 'fas',\n 'far',\n 'fab',\n 'fal',\n 'fad',\n 'fat',\n 'solid',\n 'regular',\n 'brands',\n 'light',\n 'duotone',\n 'thin',\n ].includes(f)\n );\n if (faStyle) {\n finalVariant = faStyle;\n finalFeatures = legacyFeatures.filter(f => f !== faStyle);\n } else {\n finalFeatures = legacyFeatures;\n }\n }\n // For Material Icons/Symbols, extract style variant\n else if (\n finalLibrary === 'material-icons' ||\n finalLibrary === 'material-symbols'\n ) {\n const styleVariants =\n finalLibrary === 'material-icons'\n ? ['filled', 'outlined', 'round', 'sharp']\n : ['outlined', 'rounded', 'sharp'];\n\n const styleVariant = legacyFeatures.find(f => styleVariants.includes(f));\n if (styleVariant) {\n finalVariant = styleVariant;\n finalFeatures = legacyFeatures.filter(f => f !== styleVariant);\n } else {\n finalFeatures = legacyFeatures;\n }\n }\n // For others, all features go to finalFeatures\n else {\n finalFeatures = legacyFeatures;\n }\n }\n\n // Handle web components vs CSS-based icons\n if (finalLibrary === 'ion') {\n // For Ionicons, handle variant in the name\n let ionName = finalName;\n if (finalVariant === 'outline') {\n ionName = `${finalName}-outline`;\n } else if (finalVariant === 'sharp') {\n ionName = `${finalName}-sharp`;\n }\n\n return (\n <span\n className={iconContainerClasses}\n aria-label={ariaLabel}\n style={style}\n {...rest}\n >\n <ion-icon name={ionName} />\n </span>\n );\n }\n\n // Legacy CSS-based icons\n const iClasses = getIconClasses(\n finalLibrary,\n finalName,\n finalVariant,\n finalFeatures\n );\n\n // Material Icons and Material Symbols use text content, not CSS classes for the icon name\n if (\n finalLibrary === 'material-icons' ||\n finalLibrary === 'material-symbols'\n ) {\n return (\n <span\n className={iconContainerClasses}\n aria-label={ariaLabel}\n style={style}\n {...rest}\n >\n <i className={iClasses}>{finalName}</i>\n </span>\n );\n }\n\n return (\n <span\n className={iconContainerClasses}\n aria-label={ariaLabel}\n style={style}\n {...rest}\n >\n <i className={iClasses} />\n </span>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { Icon, IconProps } from './Icon';\n\n/**\n * Represents an item for the IconText component, containing icon props and optional text.\n *\n * @property {IconProps} iconProps - Props for the Icon component.\n * @property {string} [text] - Optional text to display next to the icon.\n */\ninterface IconTextItem {\n iconProps: IconProps;\n text?: string;\n}\n\n/**\n * Props for the IconText component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the icon text.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {IconProps} [iconProps] - Props for a single Icon component.\n * @property {React.ReactNode} [children] - Text for a single icon.\n * @property {IconTextItem[]} [items] - Array of icon/text pairs for multiple icons.\n */\ninterface IconTextProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n BulmaClassesProps {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n iconProps?: IconProps; // For single icon\n children?: React.ReactNode; // Text for single icon\n items?: IconTextItem[]; // For multiple icons\n}\n\n/**\n * IconText component for rendering one or more icons with optional text, styled with Bulma.\n *\n * Supports Bulma helper classes for styling, color, and layout. Can render a single icon with text or multiple icon/text pairs.\n *\n * @function\n * @param {IconTextProps} props - Props for the IconText component.\n * @returns {JSX.Element} The rendered icon text element.\n * @see {@link https://bulma.io/documentation/elements/icon/#icon-text | Bulma IconText documentation}\n */\nexport const IconText: React.FC<IconTextProps> = ({\n className,\n textColor,\n bgColor,\n iconProps,\n children,\n items,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('icon-text');\n const iconTextClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <span className={iconTextClasses} {...rest}>\n {items ? (\n items.map((item, index) => (\n <React.Fragment key={index}>\n <Icon {...item.iconProps} />\n {item.text && <span>{item.text}</span>}\n </React.Fragment>\n ))\n ) : (\n <>\n {iconProps && <Icon {...iconProps} />}\n {children && <span>{children}</span>}\n </>\n )}\n </span>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Image component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the image container.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {string} [size] - Size or aspect ratio modifier (e.g., '128x128', '16by9', etc.).\n * @property {boolean} [isRounded] - Whether the image should have rounded corners.\n * @property {boolean} [isRetina] - Whether to use retina (2x) image source.\n * @property {string} [src] - Image source URL.\n * @property {string} [alt] - Alternate text for the image.\n * @property {React.ReactNode} [children] - Arbitrary children (e.g., iframe or custom content).\n * @property {'figure' | 'div' | 'p'} [as] - The tag to render. Defaults to 'figure', but can be 'p', 'div', etc.\n */\nexport interface ImageProps\n extends React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n size?:\n | '16x16'\n | '24x24'\n | '32x32'\n | '48x48'\n | '64x64'\n | '96x96'\n | '128x128'\n | 'square'\n | '1by1'\n | '5by4'\n | '4by3'\n | '3by2'\n | '5by3'\n | '16by9'\n | '2by1'\n | '3by1'\n | '4by5'\n | '3by4'\n | '2by3'\n | '3by5'\n | '9by16'\n | '1by2'\n | '1by3';\n isRounded?: boolean;\n isRetina?: boolean;\n src?: string;\n alt?: string;\n children?: React.ReactNode;\n as?: 'figure' | 'div' | 'p';\n}\n\n/**\n * Image component for rendering a styled Bulma image element.\n *\n * Supports fixed-size containers, aspect ratios, rounded images, retina images, and arbitrary children (e.g., iframe).\n *\n * The \"as\" prop allows rendering as \"figure\", \"p\", or \"div\" tags etc.\n *\n * @function\n * @param {ImageProps} props - Props for the Image component.\n * @returns {JSX.Element} The rendered image element.\n * @see {@link https://bulma.io/documentation/elements/image/ | Bulma Image documentation}\n */\nexport const Image: React.FC<ImageProps> = ({\n as,\n className,\n textColor,\n bgColor,\n size,\n isRounded,\n isRetina,\n src,\n alt,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('image', {\n [`is-${size}`]: size,\n 'has-ratio': size && typeof size === 'string' && size.includes('by'),\n });\n\n const imageClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n // Default tag logic: if \"as\" is provided, use it.\n // If not, use <figure> for aspect ratios or children, <div> otherwise.\n let Tag: 'figure' | 'div' | 'p';\n if (as) {\n Tag = as;\n } else if (size && typeof size === 'string' && size.includes('by')) {\n Tag = 'figure';\n } else {\n Tag = 'div';\n }\n\n const roundedClass = usePrefixedClassNames('is-rounded');\n\n const content = children ? (\n children\n ) : (\n <img\n className={classNames({ [roundedClass]: isRounded })}\n src={src}\n alt={alt}\n {...(isRetina && src ? { srcSet: `${src} 2x` } : {})}\n />\n );\n\n return (\n <Tag className={imageClasses} {...rest}>\n {content}\n </Tag>\n );\n};\n\nexport default Image;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Notification component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number]} [color] - Bulma color modifier for the notification.\n * @property {boolean} [isLight] - Use the light color variant.\n * @property {boolean} [hasDelete] - Show a delete (close) button.\n * @property {() => void} [onDelete] - Callback fired when the delete button is clicked.\n * @property {React.ReactNode} [children] - Content to be rendered inside the notification.\n */\nexport interface NotificationProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number];\n isLight?: boolean;\n hasDelete?: boolean;\n onDelete?: () => void;\n children?: React.ReactNode;\n}\n\n/**\n * Notification component for rendering a styled Bulma notification.\n *\n * Supports colors, light variants, a delete button, and arbitrary content.\n *\n * @function\n * @param {NotificationProps} props - Props for the Notification component.\n * @returns {JSX.Element} The rendered notification element.\n * @see {@link https://bulma.io/documentation/elements/notification/ | Bulma Notification documentation}\n */\nexport const Notification: React.FC<NotificationProps> = ({\n className,\n color,\n isLight,\n hasDelete,\n onDelete,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('notification', {\n [`is-${color}`]: color && validColors.includes(color),\n 'is-light': isLight,\n });\n\n const deleteClasses = usePrefixedClassNames('delete');\n\n const notificationClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <div className={notificationClasses} {...rest}>\n {hasDelete && (\n <button\n className={deleteClasses}\n onClick={onDelete}\n aria-label=\"Close notification\"\n />\n )}\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Progress component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number]} [color] - Bulma color modifier for the progress bar.\n * @property {'small' | 'medium' | 'large'} [size] - Size modifier for the progress bar.\n * @property {number} [value] - Current value of the progress bar.\n * @property {number} [max] - Maximum value of the progress bar.\n * @property {React.ReactNode} [children] - Optional custom content inside the progress element.\n */\nexport interface ProgressProps\n extends React.ProgressHTMLAttributes<HTMLProgressElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number];\n size?: 'small' | 'medium' | 'large';\n value?: number;\n max?: number;\n children?: React.ReactNode;\n}\n\n/**\n * Progress component for rendering a styled Bulma progress bar.\n *\n * Supports Bulma color and size modifiers, value/max attributes, and optional custom content.\n *\n * @function\n * @param {ProgressProps} props - Props for the Progress component.\n * @returns {JSX.Element} The rendered progress bar element.\n * @see {@link https://bulma.io/documentation/elements/progress/ | Bulma Progress documentation}\n */\nexport const Progress: React.FC<ProgressProps> = ({\n className,\n color,\n size,\n value,\n max,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('progress', {\n [`is-${color}`]: color && validColors.includes(color),\n [`is-${size}`]: size,\n });\n\n const progressClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <progress className={progressClasses} value={value} max={max} {...rest}>\n {children}\n </progress>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Additional CSS classes to apply */\n className?: string;\n /** Variant of skeleton: 'block' (default) or 'lines' */\n variant?: 'block' | 'lines';\n /** Number of lines (only used if variant=\"lines\") */\n lines?: number;\n /** Render content inside the skeleton (block variant only) */\n children?: React.ReactNode;\n}\n\n/**\n * Skeleton component for rendering a styled Bulma skeleton element.\n *\n * @see https://bulma.io/documentation/features/skeletons/\n */\nexport const Skeleton: React.FC<SkeletonProps> = ({\n className,\n variant = 'block',\n lines = 3,\n children,\n ...props\n}) => {\n const linesClass = usePrefixedClassNames('skeleton-lines');\n const blockClass = usePrefixedClassNames('skeleton-block');\n\n if (variant === 'lines') {\n return (\n <div className={classNames(linesClass, className)} {...props}>\n {Array.from({ length: lines }).map((_, i) => (\n <div key={i} />\n ))}\n </div>\n );\n }\n\n return (\n <div className={classNames(blockClass, className)} {...props}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\nconst validSubTitleSizes = ['1', '2', '3', '4', '5', '6'] as const;\n/**\n * Valid size values for the SubTitle component (Bulma subtitle sizes).\n */\nexport type SubTitleSize = (typeof validSubTitleSizes)[number];\n\nconst validSubTitleElements = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'p',\n] as const;\n/**\n * Valid HTML elements for the SubTitle component.\n */\nexport type SubTitleElement = (typeof validSubTitleElements)[number];\n\n/**\n * Props for the SubTitle component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {SubTitleSize} [size] - Size of the subtitle (1-6).\n * @property {SubTitleElement} [as='h1'] - HTML element to render as (h1-h6 or p).\n * @property {boolean} [hasSkeleton] - Adds the has-skeleton CSS class.\n * @property {React.ReactNode} [children] - Subtitle content.\n * @property {string} [textColor] - Text color class (maps to Bulma's color helper).\n * @property {string} [bgColor] - Background color class (maps to Bulma's backgroundColor helper).\n */\nexport interface SubTitleProps\n extends Omit<\n React.HTMLAttributes<HTMLHeadingElement | HTMLParagraphElement>,\n 'color'\n >,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n size?: SubTitleSize;\n as?: SubTitleElement;\n hasSkeleton?: boolean;\n children?: React.ReactNode;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n}\n\n/**\n * SubTitle component for rendering a styled Bulma subtitle.\n *\n * Supports Bulma subtitle sizes and rendering as different HTML elements (h1-h6, p).\n *\n * @function\n * @param {SubTitleProps} props - Props for the SubTitle component.\n * @returns {JSX.Element} The rendered subtitle element.\n * @see {@link https://bulma.io/documentation/elements/title/#subtitle | Bulma Subtitle documentation}\n */\nexport const SubTitle: React.FC<SubTitleProps> = ({\n className,\n size,\n as = 'h1',\n hasSkeleton,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Validate 'as' prop at runtime\n const element = validSubTitleElements.includes(as) ? as : 'h1';\n\n // Validate 'size' prop at runtime\n const validSize =\n size && validSubTitleSizes.includes(size) ? size : undefined;\n\n const bulmaClasses = usePrefixedClassNames('subtitle', {\n [`is-${validSize}`]: validSize,\n 'has-skeleton': hasSkeleton,\n });\n\n const subTitleClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n // Determine the tag based on 'element' and 'validSize'\n const Tag: React.ElementType =\n element === 'p' ? 'p' : validSize ? `h${validSize}` : element;\n\n return (\n <Tag className={subTitleClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nexport default SubTitle;\n","/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Table component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [isBordered] - Adds borders to all the cells.\n * @property {boolean} [isStriped] - Adds zebra-striping to rows.\n * @property {boolean} [isNarrow] - Makes the table more compact by cutting cell padding in half.\n * @property {boolean} [isHoverable] - Adds a hover effect on rows.\n * @property {boolean} [isFullwidth] - Makes the table span the full width of its parent.\n * @property {boolean} [isResponsive] - Makes the table horizontally scrollable on small screens.\n * @property {React.ReactNode} [children] - Table content.\n */\nexport interface TableProps\n extends Omit<React.TableHTMLAttributes<HTMLTableElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n className?: string;\n isBordered?: boolean;\n isStriped?: boolean;\n isNarrow?: boolean;\n isHoverable?: boolean;\n isFullwidth?: boolean;\n isResponsive?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Table component for rendering a styled Bulma table.\n *\n * Supports responsive, bordered, striped, narrow, hoverable, and fullwidth variants.\n *\n * @function\n * @param {TableProps} props - Props for the Table component.\n * @returns {JSX.Element} The rendered table element.\n * @see {@link https://bulma.io/documentation/elements/table/ | Bulma Table documentation}\n */\nexport const Table: React.FC<TableProps> = ({\n className,\n isBordered,\n isStriped,\n isNarrow,\n isHoverable,\n isFullwidth,\n isResponsive,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('table', {\n 'is-bordered': isBordered,\n 'is-striped': isStriped,\n 'is-narrow': isNarrow,\n 'is-hoverable': isHoverable,\n 'is-fullwidth': isFullwidth,\n });\n\n const containerClass = usePrefixedClassNames('table-container');\n const tableClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n const tableElement = (\n <table className={tableClasses} {...rest}>\n {children}\n </table>\n );\n\n if (isResponsive) {\n return <div className={containerClass}>{tableElement}</div>;\n }\n\n return tableElement;\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\nconst validTagColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'black',\n 'dark',\n 'light',\n 'white',\n] as const;\n\n/**\n * Valid color values for the Tag component (Bulma tag colors).\n */\nexport type TagColor = (typeof validTagColors)[number];\n\nconst validTagSizes = ['normal', 'medium', 'large'] as const;\n/**\n * Valid size values for the Tag component (Bulma tag sizes).\n */\nexport type TagSize = (typeof validTagSizes)[number];\n\n/**\n * Props for the Tag component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {TagColor} [color] - Bulma color modifier for the tag.\n * @property {TagSize} [size] - Size modifier for the tag.\n * @property {boolean} [isRounded] - Whether the tag should have rounded corners.\n * @property {boolean} [isDelete] - Whether the tag is a delete button.\n * @property {boolean} [isHoverable] - Whether the tag is hoverable.\n * @property {() => void} [onDelete] - Callback fired when the delete button is clicked.\n * @property {React.ReactNode} [children] - Tag content.\n */\nexport interface TagProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'>,\n Omit<BulmaClassesProps, 'color'> {\n className?: string;\n color?: TagColor;\n size?: TagSize;\n isRounded?: boolean;\n isDelete?: boolean;\n isHoverable?: boolean;\n onDelete?: () => void;\n children?: React.ReactNode;\n}\n\n/**\n * Tag component for rendering a styled Bulma tag.\n *\n * Supports colors, sizes, rounded, delete, and hoverable variants.\n *\n * @function\n * @param {TagProps} props - Props for the Tag component.\n * @returns {JSX.Element} The rendered tag element.\n * @see {@link https://bulma.io/documentation/elements/tag/ | Bulma Tag documentation}\n */\nexport const Tag: React.FC<TagProps> = ({\n className,\n color,\n size,\n isRounded,\n isDelete,\n isHoverable,\n onDelete,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('tag', {\n [`is-${color}`]: color && validTagColors.includes(color),\n [`is-${size}`]: size && size !== 'normal' && validTagSizes.includes(size),\n 'is-rounded': isRounded,\n 'is-delete': isDelete,\n 'is-hoverable': isHoverable,\n });\n\n const tagClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n if (isDelete) {\n return (\n <button\n className={tagClasses}\n onClick={onDelete}\n aria-label=\"Delete tag\"\n {...rest}\n />\n );\n }\n\n return (\n <span className={tagClasses} {...rest}>\n {children}\n </span>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Tags component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [hasAddons] - Group tags together as addons.\n * @property {boolean} [isMultiline] - Allow tags to wrap onto multiple lines.\n * @property {React.ReactNode} [children] - Tag elements to render inside the container.\n */\nexport interface TagsProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n hasAddons?: boolean;\n isMultiline?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Tags component for rendering a styled Bulma tags container.\n *\n * Supports addons and multiline variants.\n *\n * @function\n * @param {TagsProps} props - Props for the Tags component.\n * @returns {JSX.Element} The rendered tags container.\n * @see {@link https://bulma.io/documentation/elements/tag/#list-of-tags | Bulma Tags documentation}\n */\nexport const Tags: React.FC<TagsProps> = ({\n className,\n hasAddons,\n isMultiline,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('tags', {\n 'has-addons': hasAddons,\n 'are-multiline': isMultiline,\n });\n\n const tagsClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <div className={tagsClasses} {...rest}>\n {children}\n </div>\n );\n};\n","/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Tbody component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} [children] - Table body content (rows).\n */\nexport interface TbodyProps\n extends Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Tbody component for rendering a styled Bulma table body.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TbodyProps} props - Props for the Tbody component.\n * @returns {JSX.Element} The rendered table body element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-body | Bulma Table documentation}\n */\nexport const Tbody: React.FC<TbodyProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tbodyClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <tbody className={tbodyClasses} {...rest}>\n {children}\n </tbody>\n );\n};\n","/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\nexport const validTableColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'black',\n 'dark',\n 'light',\n 'white',\n] as const;\n\n/**\n * Valid color values for the Td component (Bulma table cell colors).\n */\nexport type TableColor = (typeof validTableColors)[number];\n\n/**\n * Props for the Td component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {TableColor} [color] - Bulma color modifier for the table cell.\n * @property {React.ReactNode} [children] - Table cell content.\n */\nexport interface TdProps\n extends Omit<React.TdHTMLAttributes<HTMLTableCellElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n color?: TableColor;\n children?: React.ReactNode;\n}\n\n/**\n * Td component for rendering a styled Bulma table cell.\n *\n * Supports Bulma color modifiers and helper classes for additional styling.\n *\n * @function\n * @param {TdProps} props - Props for the Td component.\n * @returns {JSX.Element} The rendered table cell element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-body | Bulma Table documentation}\n */\nexport const Td: React.FC<TdProps> = ({\n className,\n color,\n children,\n ...props\n}) => {\n const colorClass = usePrefixedClassNames('', {\n [`is-${color}`]: color && validTableColors.includes(color),\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tdClasses = classNames(colorClass, className, bulmaHelperClasses);\n\n return (\n <td className={tdClasses} {...rest}>\n {children}\n </td>\n );\n};\n","/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Tfoot component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} [children] - Table footer content (rows).\n */\nexport interface TfootProps\n extends Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Tfoot component for rendering a styled Bulma table footer.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TfootProps} props - Props for the Tfoot component.\n * @returns {JSX.Element} The rendered table footer element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-footer | Bulma Table documentation}\n */\nexport const Tfoot: React.FC<TfootProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tfootClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <tfoot className={tfootClasses} {...rest}>\n {children}\n </tfoot>\n );\n};\n","/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { TableColor, validTableColors } from './Td';\n\nconst validAlignments = ['left', 'right', 'centered'] as const;\n/**\n * Valid alignment values for the Th component.\n */\ntype TableAlignment = (typeof validAlignments)[number];\n\n/**\n * Props for the Th component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {TableAlignment} [isAligned] - Text alignment for the header cell ('left', 'right', 'centered').\n * @property {string|number} [width] - Width of the header cell (e.g., '100px' or 100).\n * @property {TableColor} [color] - Bulma color modifier for the header cell.\n * @property {React.ReactNode} [children] - Table header cell content.\n */\nexport interface ThProps\n extends Omit<React.ThHTMLAttributes<HTMLTableCellElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n isAligned?: TableAlignment;\n width?: string | number;\n color?: TableColor;\n children?: React.ReactNode;\n}\n\n/**\n * Th component for rendering a styled Bulma table header cell.\n *\n * Supports alignment, width, and color modifiers.\n *\n * @function\n * @param {ThProps} props - Props for the Th component.\n * @returns {JSX.Element} The rendered table header cell element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-head | Bulma Table documentation}\n */\nexport const Th: React.FC<ThProps> = ({\n className,\n isAligned,\n width,\n color,\n children,\n ...props\n}) => {\n const bulmaClasses = usePrefixedClassNames('', {\n [`has-text-${isAligned}`]: isAligned && validAlignments.includes(isAligned),\n [`is-${color}`]: color && validTableColors.includes(color),\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const thClasses = classNames(bulmaClasses, className, bulmaHelperClasses);\n\n return (\n <th\n className={thClasses}\n style={\n width\n ? { width: typeof width === 'number' ? `${width}px` : width }\n : undefined\n }\n {...rest}\n >\n {children}\n </th>\n );\n};\n","/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Thead component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} [children] - Table header content (rows).\n */\nexport interface TheadProps\n extends Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Thead component for rendering a styled Bulma table header.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TheadProps} props - Props for the Thead component.\n * @returns {JSX.Element} The rendered table header element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-head | Bulma Table documentation}\n */\nexport const Thead: React.FC<TheadProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const theadClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <thead className={theadClasses} {...rest}>\n {children}\n </thead>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\nconst validTitleSizes = ['1', '2', '3', '4', '5', '6'] as const;\n/**\n * Valid size values for the Title component (Bulma title sizes).\n */\nexport type TitleSize = (typeof validTitleSizes)[number];\n\nconst validTitleElements = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p'] as const;\n/**\n * Valid HTML elements for the Title component.\n */\nexport type TitleElement = (typeof validTitleElements)[number];\n\n/**\n * Props for the Title component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {TitleSize} [size] - Size of the title (1-6).\n * @property {boolean} [isSpaced] - Adds margin below the title.\n * @property {TitleElement} [as='h1'] - HTML element to render as (h1-h6 or p).\n * @property {boolean} [hasSkeleton] - Adds the has-skeleton CSS class.\n * @property {React.ReactNode} [children] - Title content.\n * @property {string} [textColor] - Text color class (maps to Bulma's color helper).\n * @property {string} [bgColor] - Background color class (maps to Bulma's backgroundColor helper).\n */\nexport interface TitleProps\n extends Omit<\n React.HTMLAttributes<HTMLHeadingElement | HTMLParagraphElement>,\n 'color'\n >,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n size?: TitleSize;\n isSpaced?: boolean;\n as?: TitleElement;\n hasSkeleton?: boolean;\n children?: React.ReactNode;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n}\n\n/**\n * Title component for rendering a styled Bulma title.\n *\n * Supports sizes, spacing, and rendering as different HTML elements.\n *\n * @function\n * @param {TitleProps} props - Props for the Title component.\n * @returns {JSX.Element} The rendered title element.\n * @see {@link https://bulma.io/documentation/elements/title/ | Bulma Title documentation}\n */\nexport const Title: React.FC<TitleProps> = ({\n className,\n size,\n isSpaced,\n as = 'h1',\n hasSkeleton,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Validate 'as' prop at runtime\n const element = validTitleElements.includes(as) ? as : 'h1';\n\n // Validate 'size' prop at runtime\n const validSize = size && validTitleSizes.includes(size) ? size : undefined;\n\n const bulmaClasses = usePrefixedClassNames('title', {\n [`is-${validSize}`]: validSize,\n 'is-spaced': isSpaced,\n 'has-skeleton': hasSkeleton,\n });\n\n const titleClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n // Determine the tag based on 'element' and 'validSize'\n const Tag: React.ElementType =\n element === 'p' ? 'p' : validSize ? `h${validSize}` : element;\n\n return (\n <Tag className={titleClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nexport default Title;\n","/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { TableColor, validTableColors } from './Td'; // Import TableColor from Td\n\n/**\n * Props for the Tr component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [isSelected] - Whether the row is selected (adds Bulma's is-selected class).\n * @property {TableColor} [color] - Bulma color modifier for the table row.\n * @property {React.ReactNode} [children] - Table row content (cells).\n */\nexport interface TrProps\n extends Omit<React.HTMLAttributes<HTMLTableRowElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n isSelected?: boolean;\n color?: TableColor;\n children?: React.ReactNode;\n}\n\n/**\n * Tr component for rendering a styled Bulma table row.\n *\n * Supports the is-selected modifier and color modifiers.\n *\n * @function\n * @param {TrProps} props - Props for the Tr component.\n * @returns {JSX.Element} The rendered table row element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-row | Bulma Table documentation}\n */\nexport const Tr: React.FC<TrProps> = ({\n className,\n isSelected,\n color,\n children,\n ...props\n}) => {\n const bulmaClasses = usePrefixedClassNames('', {\n 'is-selected': isSelected,\n [`is-${color}`]: color && validTableColors.includes(color),\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const trClasses = classNames(bulmaClasses, className, bulmaHelperClasses);\n\n return (\n <tr className={trClasses} {...rest}>\n {children}\n </tr>\n );\n};\n","import React, { forwardRef } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Checkbox component.\n *\n * @property {boolean} [disabled] - Whether the checkbox is disabled.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} [children] - The label/content for the checkbox.\n * @see Bulma Checkbox documentation: https://bulma.io/documentation/form/checkbox/\n */\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'color'>,\n Omit<BulmaClassesProps, 'color'> {\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Checkbox component with Bulma helper classes support.\n * The label is provided via the children prop.\n *\n * @function\n * @param {CheckboxProps} props - Props for the Checkbox component.\n * @returns {JSX.Element} The rendered checkbox element.\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ disabled, className, children, ...props }, ref) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('checkbox');\n const checkboxClass = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <label className={checkboxClass}>\n <input ref={ref} type=\"checkbox\" disabled={disabled} {...rest} />\n {children}\n </label>\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Checkboxes component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} [children] - Checkbox elements to render in the group.\n */\nexport interface CheckboxesProps extends Omit<BulmaClassesProps, 'color'> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Wraps Checkbox components inside a Bulma 'checkboxes' wrapper.\n * Leverages useBulmaClasses for consistency with other components.\n *\n * @function\n * @param {CheckboxesProps} props - Props for the Checkboxes component.\n * @returns {JSX.Element} The rendered checkboxes group.\n * @see {@link https://bulma.io/documentation/form/checkbox/#grouped-checkboxes | Bulma Checkboxes documentation}\n */\nexport const Checkboxes: React.FC<CheckboxesProps> = ({\n children,\n className,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('checkboxes');\n const wrapperClass = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <div className={wrapperClass} {...rest}>\n {children}\n </div>\n );\n};\n\nexport default Checkboxes;\n","import React from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { Icon, IconProps } from '../elements/Icon';\nimport { useConfig } from '../helpers/Config';\n\n/**\n * Props for the Control component.\n *\n * @property {boolean} [hasIconsLeft] - Adds left icon container.\n * @property {boolean} [hasIconsRight] - Adds right icon container.\n * @property {boolean} [isLoading] - Shows loading indicator.\n * @property {boolean} [isExpanded] - Makes the control expand to fill available space.\n * @property {'small'|'medium'|'large'} [size] - Sets the control size.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Sets text color.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color for the control.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {IconProps} [iconLeft] - Icon props for left icon.\n * @property {IconProps} [iconRight] - Icon props for right icon.\n * @property {string} [iconLeftName] - Shortcut for left icon name.\n * @property {'small'|'medium'|'large'} [iconLeftSize] - Shortcut for left icon size.\n * @property {string} [iconRightName] - Shortcut for right icon name.\n * @property {'small'|'medium'|'large'} [iconRightSize] - Shortcut for right icon size.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} [children] - Content inside the control.\n * @property {'div'|'p'} [as] - Element type for the control (default: 'div').\n * @property {React.Ref<HTMLDivElement|HTMLParagraphElement>} [ref] - Ref for the control element.\n */\nexport interface ControlBaseProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n hasIconsLeft?: boolean;\n hasIconsRight?: boolean;\n isLoading?: boolean;\n isExpanded?: boolean;\n size?: 'small' | 'medium' | 'large';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n iconLeft?: IconProps;\n iconRight?: IconProps;\n iconLeftName?: string;\n iconLeftSize?: 'small' | 'medium' | 'large';\n iconRightName?: string;\n iconRightSize?: 'small' | 'medium' | 'large';\n className?: string;\n children?: React.ReactNode;\n}\n\ntype ControlProps =\n | ({ as?: 'div' } & ControlBaseProps & { ref?: React.Ref<HTMLDivElement> })\n | ({ as: 'p' } & Omit<\n ControlBaseProps,\n keyof React.HTMLAttributes<HTMLDivElement>\n > &\n React.HTMLAttributes<HTMLParagraphElement> & {\n ref?: React.Ref<HTMLParagraphElement>;\n });\n\nconst allowedColors = [...validColors, 'inherit', 'current'] as const;\n\n/**\n * Bulma Control component for form controls, with icons, loading, and Bulma helper support.\n *\n * @function\n * @param {ControlProps} props - Props for the Control component.\n * @returns {JSX.Element} The rendered control container.\n * @see {@link https://bulma.io/documentation/form/general/#control | Bulma Control documentation}\n */\nexport const Control = React.forwardRef<\n HTMLDivElement | HTMLParagraphElement,\n ControlProps\n>(\n (\n {\n as = 'div',\n hasIconsLeft,\n hasIconsRight,\n isLoading,\n isExpanded,\n size,\n textColor,\n bgColor,\n iconLeft,\n iconRight,\n iconLeftName,\n iconLeftSize,\n iconRightName,\n iconRightSize,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const Component = (as === 'p' ? 'p' : 'div') as 'div' | 'p';\n const { classPrefix } = useConfig();\n\n // Remove textColor/bgColor from props before spreading\n const {\n textColor: _ignoredTextColor,\n bgColor: _ignoredBgColor,\n ...restProps\n } = props as Record<string, unknown>;\n\n const safeTextColor = allowedColors.includes(\n textColor as (typeof allowedColors)[number]\n )\n ? textColor\n : undefined;\n\n const safeBgColor = allowedColors.includes(\n bgColor as (typeof allowedColors)[number]\n )\n ? bgColor\n : undefined;\n\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: safeTextColor,\n backgroundColor: safeBgColor,\n ...restProps,\n });\n\n // Prepare icon props for the shortcut\n const leftIconProps: IconProps | undefined =\n iconLeft ||\n (iconLeftName\n ? {\n name: iconLeftName,\n size: iconLeftSize,\n }\n : undefined);\n\n const rightIconProps: IconProps | undefined =\n iconRight ||\n (iconRightName\n ? {\n name: iconRightName,\n size: iconRightSize,\n }\n : undefined);\n\n const mainClass = usePrefixedClassNames('control', {\n 'has-icons-left': hasIconsLeft || !!leftIconProps,\n 'has-icons-right': hasIconsRight || !!rightIconProps,\n 'is-loading': isLoading,\n 'is-expanded': isExpanded,\n [`is-${size}`]: !!size,\n });\n const controlClass = classNames(mainClass, bulmaHelperClasses, className);\n\n // --- FIX: Spread both restProps (for data-testid, etc) AND rest (from useBulmaClasses) ---\n return (\n <Component\n className={controlClass}\n ref={ref as typeof ref}\n {...restProps}\n {...rest}\n >\n {children}\n {leftIconProps && leftIconProps.name && (\n <Icon\n {...leftIconProps}\n className={prefixedClassNames(classPrefix, 'is-left')}\n />\n )}\n {rightIconProps && rightIconProps.name && (\n <Icon\n {...rightIconProps}\n className={prefixedClassNames(classPrefix, 'is-right')}\n />\n )}\n </Component>\n );\n }\n);\n\nControl.displayName = 'Control';\n\nexport default Control;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Field component.\n *\n * @property {boolean} [horizontal] - Renders the field as horizontal (label and control side by side).\n * @property {boolean|'centered'|'right'|'multiline'} [grouped] - Group controls in a row (optionally centered, right, or multiline).\n * @property {boolean} [hasAddons] - Group controls as addons.\n * @property {React.ReactNode} [label] - Field label.\n * @property {'small'|'normal'|'medium'|'large'} [labelSize] - Size for the label.\n * @property {object} [labelProps] - Props for the label element.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the field.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color for the field.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the field.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Field content.\n */\nexport interface FieldProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n horizontal?: boolean;\n grouped?: boolean | 'centered' | 'right' | 'multiline';\n hasAddons?: boolean;\n label?: React.ReactNode;\n labelSize?: 'small' | 'normal' | 'medium' | 'large';\n labelProps?: React.LabelHTMLAttributes<HTMLLabelElement> & {\n [key: string]: unknown;\n };\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the FieldLabel component.\n *\n * @property {'small'|'normal'|'medium'|'large'} [size] - Size for the field label.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the label.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color for the label.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the label.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Field label content.\n */\nexport interface FieldLabelProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n size?: 'small' | 'normal' | 'medium' | 'large';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the FieldBody component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the field body.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color for the field body.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the field body.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Field body content.\n */\nexport interface FieldBodyProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * FieldLabel component for rendering a Bulma field label.\n *\n * @function\n * @param {FieldLabelProps} props - Props for the FieldLabel component.\n * @returns {JSX.Element} The rendered field label.\n */\nexport const FieldLabel: React.FC<FieldLabelProps> = ({\n size,\n textColor,\n bgColor,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('field-label', {\n [`is-${size}`]: !!size,\n });\n const fieldLabelClass = classNames(mainClass, bulmaHelperClasses, className);\n // Spread ...props and ...rest so custom props like data-testid are included\n return (\n <div className={fieldLabelClass} {...props} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * FieldBody component for rendering Bulma field body.\n *\n * @function\n * @param {FieldBodyProps} props - Props for the FieldBody component.\n * @returns {JSX.Element} The rendered field body.\n */\nexport const FieldBody: React.FC<FieldBodyProps> = ({\n textColor,\n bgColor,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('field-body');\n const fieldBodyClass = classNames(mainClass, bulmaHelperClasses, className);\n // Spread ...props and ...rest so custom props like data-testid are included\n return (\n <div className={fieldBodyClass} {...props} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Field component for rendering a Bulma field container.\n * Supports horizontal, grouped, and labelled fields.\n *\n * @function\n * @param {FieldProps} props - Props for the Field component.\n * @returns {JSX.Element} The rendered field container.\n * @see {@link https://bulma.io/documentation/form/general/#field | Bulma Field documentation}\n */\nexport const Field: React.FC<FieldProps> & {\n Label: typeof FieldLabel;\n Body: typeof FieldBody;\n} = ({\n horizontal,\n grouped,\n hasAddons,\n label,\n labelSize,\n labelProps,\n textColor,\n color: _fieldColor,\n bgColor,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('field', {\n 'is-horizontal': horizontal,\n 'has-addons': !!hasAddons,\n 'is-grouped':\n grouped === true ||\n grouped === 'centered' ||\n grouped === 'right' ||\n grouped === 'multiline',\n 'is-grouped-centered': grouped === 'centered',\n 'is-grouped-right': grouped === 'right',\n 'is-grouped-multiline': grouped === 'multiline',\n });\n const fieldClass = classNames(mainClass, bulmaHelperClasses, className);\n\n // Map 'normal' to undefined for FieldLabel size prop\n const mappedLabelSize: FieldLabelProps['size'] =\n labelSize === 'normal' ? undefined : labelSize;\n\n const labelClass = usePrefixedClassNames('label');\n\n let renderedLabel = null;\n if (label) {\n if (horizontal) {\n renderedLabel = (\n <FieldLabel size={mappedLabelSize}>\n <label\n {...labelProps}\n className={classNames(labelClass, labelProps?.className)}\n style={labelProps?.style}\n >\n {label}\n </label>\n </FieldLabel>\n );\n } else {\n renderedLabel = (\n <label\n {...labelProps}\n className={classNames(labelClass, labelProps?.className)}\n style={{ display: 'block', ...(labelProps?.style || {}) }}\n >\n {label}\n </label>\n );\n }\n }\n\n // If horizontal, wrap children in FieldBody (unless children is already a FieldBody)\n let content = children;\n if (horizontal) {\n // If children is a FieldBody already, don't double wrap\n // Simple check using displayName\n if (\n React.isValidElement(children) &&\n // @ts-expect-error children.type && children.type.displayName &&\n (children.type === FieldBody || children.type.displayName === 'FieldBody')\n ) {\n content = children;\n } else {\n content = <FieldBody>{children}</FieldBody>;\n }\n }\n\n return (\n <div className={fieldClass} {...rest}>\n {renderedLabel}\n {content}\n </div>\n );\n};\n\nFieldLabel.displayName = 'FieldLabel';\nFieldBody.displayName = 'FieldBody';\nField.Label = FieldLabel;\nField.Body = FieldBody;\n\nexport default Field;\n","import React, { forwardRef } from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { useConfig } from '../helpers/Config';\n\n/**\n * Props for the File component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the file input.\n * @property {'small'|'medium'|'large'} [size] - Size modifier for the file input.\n * @property {boolean} [isBoxed] - Whether the file input is boxed.\n * @property {boolean} [isFullwidth] - Whether the file input expands to full width.\n * @property {boolean} [isRight] - Align file input to the right.\n * @property {boolean} [isCentered] - Center the file input.\n * @property {boolean} [hasName] - Show a file name indicator.\n * @property {React.ReactNode} [label] - Custom label text or node.\n * @property {React.ReactNode} [iconLeft] - Left icon element.\n * @property {React.ReactNode} [iconRight] - Right icon element.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {string} [inputClassName] - Additional CSS classes for the input.\n * @property {string} [fileName] - File name to display.\n */\nexport interface FileProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'color' | 'type'\n >,\n Omit<BulmaClassesProps, 'color'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n size?: 'small' | 'medium' | 'large';\n isBoxed?: boolean;\n isFullwidth?: boolean;\n isRight?: boolean;\n isCentered?: boolean;\n hasName?: boolean;\n label?: React.ReactNode;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n className?: string;\n inputClassName?: string;\n fileName?: string;\n}\n\n/**\n * Bulma File upload component with full Bulma helper class support.\n * isRight and isCentered are mutually exclusive (Bulma spec).\n *\n * @function\n * @param {FileProps} props - Props for the File component.\n * @returns {JSX.Element} The rendered file upload field.\n * @see {@link https://bulma.io/documentation/form/file/ | Bulma File documentation}\n */\nexport const File = forwardRef<HTMLInputElement, FileProps>(\n (\n {\n color,\n size,\n isBoxed,\n isFullwidth,\n isRight,\n isCentered,\n hasName,\n label,\n iconLeft,\n iconRight,\n className,\n inputClassName,\n fileName,\n ...props\n },\n ref\n ) => {\n const { classPrefix } = useConfig();\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color,\n ...props,\n });\n\n // Mutually exclusive alignment\n let alignmentClass: string | undefined;\n if (isRight && isCentered) {\n // If both are set, prefer isRight and warn in dev\n alignmentClass = prefixedClassNames(classPrefix, 'is-right');\n } else if (isRight) {\n alignmentClass = prefixedClassNames(classPrefix, 'is-right');\n } else if (isCentered) {\n alignmentClass = prefixedClassNames(classPrefix, 'is-centered');\n }\n\n const mainClass = usePrefixedClassNames('file', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-boxed': isBoxed,\n 'is-fullwidth': isFullwidth,\n 'has-name': hasName,\n });\n const fileClass = classNames(\n mainClass,\n bulmaHelperClasses,\n alignmentClass,\n className\n );\n\n return (\n <div className={fileClass}>\n <label className={usePrefixedClassNames('file-label')}>\n <input\n ref={ref}\n className={classNames(\n usePrefixedClassNames('file-input'),\n inputClassName\n )}\n type=\"file\"\n {...rest}\n />\n <span className={usePrefixedClassNames('file-cta')}>\n {iconLeft && (\n <span className={prefixedClassNames(classPrefix, 'file-icon')}>\n {iconLeft}\n </span>\n )}\n <span className={usePrefixedClassNames('file-label')}>\n {label || 'Choose a file…'}\n </span>\n {iconRight && (\n <span className={prefixedClassNames(classPrefix, 'file-icon')}>\n {iconRight}\n </span>\n )}\n </span>\n {hasName && fileName && (\n <span className={prefixedClassNames(classPrefix, 'file-name')}>\n {fileName}\n </span>\n )}\n </label>\n </div>\n );\n }\n);\n\nFile.displayName = 'File';\n\nexport default File;\n","import React, { forwardRef } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Input component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the input.\n * @property {'small'|'medium'|'large'} [size] - Size modifier for the input.\n * @property {boolean} [isRounded] - Renders the input with rounded corners.\n * @property {boolean} [isStatic] - Renders the input as static text.\n * @property {boolean} [isHovered] - Applies the hovered state.\n * @property {boolean} [isFocused] - Applies the focused state.\n * @property {boolean} [isLoading] - Shows loading indicator.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [disabled] - Whether the input is disabled.\n * @property {boolean} [readOnly] - Whether the input is read-only.\n */\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n Omit<BulmaClassesProps, 'color'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n size?: 'small' | 'medium' | 'large';\n isRounded?: boolean;\n isStatic?: boolean;\n isHovered?: boolean;\n isFocused?: boolean;\n isLoading?: boolean;\n className?: string;\n disabled?: boolean;\n readOnly?: boolean;\n}\n\n/**\n * Bulma Input component with full Bulma helper class support.\n *\n * @function\n * @param {InputProps} props - Props for the Input component.\n * @returns {JSX.Element} The rendered input element.\n * @see {@link https://bulma.io/documentation/form/input/ | Bulma Input documentation}\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n color,\n size,\n isRounded,\n isStatic,\n isHovered,\n isFocused,\n isLoading,\n className,\n disabled,\n readOnly,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('input', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-rounded': isRounded,\n 'is-static': isStatic,\n 'is-hovered': isHovered,\n 'is-focused': isFocused,\n 'is-loading': isLoading,\n });\n const inputClass = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <input\n ref={ref}\n className={inputClass}\n disabled={disabled}\n readOnly={readOnly}\n {...rest}\n />\n );\n }\n);\nInput.displayName = 'Input';\n\nexport default Input;\n","import React, { forwardRef } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Radio component.\n *\n * @property {boolean} [disabled] - Whether the radio is disabled.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} [children] - The label/content for the radio.\n * @see Bulma Radio documentation: https://bulma.io/documentation/form/radio/\n */\nexport interface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'color'>,\n Omit<BulmaClassesProps, 'color'> {\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Radio component with Bulma helper classes support.\n * The label is provided via the children prop.\n *\n * @function\n * @param {RadioProps} props - Props for the Radio component.\n * @returns {JSX.Element} The rendered radio element.\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n ({ disabled, className, children, ...props }, ref) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('radio');\n const radioClass = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <label className={radioClass}>\n <input ref={ref} type=\"radio\" disabled={disabled} {...rest} />\n {children}\n </label>\n );\n }\n);\n\nRadio.displayName = 'Radio';\n\nexport default Radio;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Radios component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} children - Radio elements to render in the group.\n */\nexport interface RadiosProps extends Omit<BulmaClassesProps, 'color'> {\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Wraps Radio components inside a Bulma 'radios' wrapper.\n * Leverages useBulmaClasses for consistency with other components.\n *\n * @function\n * @param {RadiosProps} props - Props for the Radios component.\n * @returns {JSX.Element} The rendered radios group.\n * @see {@link https://bulma.io/documentation/form/radio/#grouped-radios | Bulma Radios documentation}\n */\nexport const Radios: React.FC<RadiosProps> = ({\n children,\n className,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('radios');\n const wrapperClass = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <div className={wrapperClass} {...rest}>\n {children}\n </div>\n );\n};\n\nexport default Radios;\n","import React, { forwardRef } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Select component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the select.\n * @property {'small'|'medium'|'large'} [size] - Size modifier for the select.\n * @property {boolean} [isRounded] - Renders the select with rounded corners.\n * @property {boolean} [isLoading] - Shows loading indicator.\n * @property {boolean} [isActive] - Applies Bulma's is-active modifier.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [disabled] - Whether the select is disabled.\n * @property {boolean} [multiple] - Whether the select allows multiple values.\n * @property {number} [multipleSize] - For multiple select: number of visible options.\n * @property {React.ReactNode} [children] - Option elements.\n */\nexport interface SelectProps\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'>,\n Omit<BulmaClassesProps, 'color'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n size?: 'small' | 'medium' | 'large';\n isRounded?: boolean;\n isLoading?: boolean;\n isActive?: boolean;\n className?: string;\n disabled?: boolean;\n multiple?: boolean;\n multipleSize?: number;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Select component with full Bulma helper class support.\n *\n * @function\n * @param {SelectProps} props - Props for the Select component.\n * @returns {JSX.Element} The rendered select element.\n * @see {@link https://bulma.io/documentation/form/select/ | Bulma Select documentation}\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n color,\n size,\n isRounded,\n isLoading,\n isActive,\n className,\n disabled,\n children,\n multiple,\n multipleSize,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('select', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-rounded': isRounded,\n 'is-loading': isLoading,\n 'is-active': isActive,\n });\n const selectClass = classNames(mainClass, bulmaHelperClasses, className);\n\n // Only set size attribute when multiple is true and multipleSize is specified\n const selectProps: React.SelectHTMLAttributes<HTMLSelectElement> = {\n disabled,\n multiple,\n ...rest,\n };\n\n if (multiple && typeof multipleSize === 'number') {\n selectProps.size = multipleSize;\n }\n\n return (\n <div className={selectClass}>\n <select ref={ref} {...selectProps}>\n {children}\n </select>\n </div>\n );\n }\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n","import React, { forwardRef } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the TextArea component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the textarea.\n * @property {'small'|'medium'|'large'} [size] - Size modifier for the textarea.\n * @property {boolean} [isRounded] - Renders the textarea with rounded corners.\n * @property {boolean} [isStatic] - Renders the textarea as static text.\n * @property {boolean} [isHovered] - Applies the hovered state.\n * @property {boolean} [isFocused] - Applies the focused state.\n * @property {boolean} [isLoading] - Shows loading indicator.\n * @property {boolean} [isActive] - Applies Bulma's is-active modifier.\n * @property {boolean} [hasFixedSize] - Applies Bulma's has-fixed-size modifier.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [disabled] - Whether the textarea is disabled.\n * @property {boolean} [readOnly] - Whether the textarea is read-only.\n * @property {number} [rows] - Number of visible text lines.\n */\nexport interface TextAreaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>,\n Omit<BulmaClassesProps, 'color'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n size?: 'small' | 'medium' | 'large';\n isRounded?: boolean;\n isStatic?: boolean;\n isHovered?: boolean;\n isFocused?: boolean;\n isLoading?: boolean;\n isActive?: boolean;\n hasFixedSize?: boolean;\n className?: string;\n disabled?: boolean;\n readOnly?: boolean;\n rows?: number;\n}\n\n/**\n * Bulma TextArea component with full Bulma helper class support.\n *\n * @function\n * @param {TextAreaProps} props - Props for the TextArea component.\n * @returns {JSX.Element} The rendered textarea element.\n * @see {@link https://bulma.io/documentation/form/textarea/ | Bulma Textarea documentation}\n */\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n color,\n size,\n isRounded,\n isStatic,\n isHovered,\n isFocused,\n isLoading,\n isActive,\n hasFixedSize,\n className,\n disabled,\n readOnly,\n rows,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('textarea', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-rounded': isRounded,\n 'is-static': isStatic,\n 'is-hovered': isHovered,\n 'is-focused': isFocused,\n 'is-loading': isLoading,\n 'is-active': isActive,\n 'has-fixed-size': hasFixedSize,\n });\n const textareaClass = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <textarea\n ref={ref}\n className={textareaClass}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n {...rest}\n />\n );\n }\n);\nTextArea.displayName = 'TextArea';\n\nexport default TextArea;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Type for grid cell span values.\n */\nexport type CellSpanValue = number;\n\n/**\n * Props for the Cell component.\n *\n * @property {number} [colStart] - Which column the cell starts at (Bulma: is-col-start-x).\n * @property {number} [colFromEnd] - Which column the cell ends at, counting from the end (Bulma: is-col-from-end-x).\n * @property {CellSpanValue} [colSpan] - How many columns the cell will span (Bulma: is-col-span-x).\n * @property {number} [rowStart] - Which row the cell starts at (Bulma: is-row-start-x).\n * @property {number} [rowFromEnd] - Which row the cell ends at, counting from the end (Bulma: is-row-from-end-x).\n * @property {CellSpanValue} [rowSpan] - How many rows the cell will span (Bulma: is-row-span-x).\n * @property {string} [className] - Additional CSS class names.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the cell.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Children to render inside the cell.\n */\nexport interface CellProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n colStart?: number;\n colFromEnd?: number;\n colSpan?: CellSpanValue;\n rowStart?: number;\n rowFromEnd?: number;\n rowSpan?: CellSpanValue;\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Cell component for CSS Grid layouts.\n *\n * @function\n * @param {CellProps} props - Props for the Cell component.\n * @returns {JSX.Element} The rendered grid cell.\n * @see {@link https://bulma.io/documentation/grid/ | Bulma Grid documentation}\n */\nexport const Cell: React.FC<CellProps> = ({\n colStart,\n colFromEnd,\n colSpan,\n rowStart,\n rowFromEnd,\n rowSpan,\n className,\n textColor,\n color: _fieldColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('cell');\n\n // Build cell grid classes with prefixes\n const cellGridClasses = usePrefixedClassNames('', {\n [`is-col-start-${colStart}`]: colStart !== undefined && colStart !== null,\n [`is-col-from-end-${colFromEnd}`]:\n colFromEnd !== undefined && colFromEnd !== null,\n [`is-col-span-${colSpan}`]: colSpan !== undefined && colSpan !== null,\n [`is-row-start-${rowStart}`]: rowStart !== undefined && rowStart !== null,\n [`is-row-from-end-${rowFromEnd}`]:\n rowFromEnd !== undefined && rowFromEnd !== null,\n [`is-row-span-${rowSpan}`]: rowSpan !== undefined && rowSpan !== null,\n });\n\n const cellClasses = classNames(\n mainClass,\n cellGridClasses,\n className,\n bulmaHelperClasses\n );\n\n return (\n <div className={cellClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Allowed gap values for Bulma grid.\n */\nexport type BulmaGapValue = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n/**\n * Allowed minimum column values for Bulma grid.\n */\nexport type BulmaMinColValue =\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12\n | 13\n | 14\n | 15\n | 16\n | 17\n | 18\n | 19\n | 20\n | 21\n | 22\n | 23\n | 24\n | 25\n | 26\n | 27\n | 28\n | 29\n | 30\n | 31\n | 32;\n/**\n * Allowed fixed grid columns for Bulma grid.\n */\nexport type BulmaFixedGridCols =\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12;\n/**\n * Allowed fixed grid columns prop for Bulma grid.\n */\nexport type BulmaFixedGridColsProp = BulmaFixedGridCols | 'auto';\n\n/**\n * Props for the Grid component.\n *\n * @property {boolean} [isFixed] - Use a fixed grid layout (Bulma's .fixed-grid > .grid).\n * @property {BulmaGapValue} [gap] - Main gap for grid (applies is-gap-X, 0-8).\n * @property {BulmaGapValue} [columnGap] - Column gap for grid (applies is-column-gap-X, 0-8).\n * @property {BulmaGapValue} [rowGap] - Row gap for grid (applies is-row-gap-X, 0-8).\n * @property {BulmaMinColValue} [minCol] - Minimum column width for the grid (applies is-col-min-X, 1-32).\n * @property {BulmaFixedGridColsProp} [fixedCols] - For fixed grid only: explicit column count (applies has-X-cols, 0-12), or 'auto' for has-auto-count.\n * @property {BulmaFixedGridCols} [fixedColsMobile] - For fixed grid only: explicit column count for mobile.\n * @property {BulmaFixedGridCols} [fixedColsTablet] - For fixed grid only: explicit column count for tablet.\n * @property {BulmaFixedGridCols} [fixedColsDesktop] - For fixed grid only: explicit column count for desktop.\n * @property {BulmaFixedGridCols} [fixedColsWidescreen] - For fixed grid only: explicit column count for widescreen.\n * @property {BulmaFixedGridCols} [fixedColsFullhd] - For fixed grid only: explicit column count for fullhd.\n * @property {string} [className] - Additional CSS class names.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the grid.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Children to render inside the grid.\n */\nexport interface GridProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n isFixed?: boolean;\n gap?: BulmaGapValue;\n columnGap?: BulmaGapValue;\n rowGap?: BulmaGapValue;\n minCol?: BulmaMinColValue;\n fixedCols?: BulmaFixedGridColsProp;\n fixedColsMobile?: BulmaFixedGridCols;\n fixedColsTablet?: BulmaFixedGridCols;\n fixedColsDesktop?: BulmaFixedGridCols;\n fixedColsWidescreen?: BulmaFixedGridCols;\n fixedColsFullhd?: BulmaFixedGridCols;\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Grid component for CSS Grid layouts, supports both fixed and responsive grid modes.\n *\n * @function\n * @param {GridProps} props - Props for the Grid component.\n * @returns {JSX.Element} The rendered grid.\n * @see {@link https://bulma.io/documentation/grid/ | Bulma Grid documentation}\n */\nexport const Grid: React.FC<GridProps> = ({\n isFixed = false,\n gap,\n columnGap,\n rowGap,\n minCol,\n fixedCols,\n fixedColsMobile,\n fixedColsTablet,\n fixedColsDesktop,\n fixedColsWidescreen,\n fixedColsFullhd,\n className,\n textColor,\n color: _fieldColor,\n bgColor,\n children,\n ...props\n}) => {\n // Map textColor and bgColor to color and backgroundColor for useBulmaClasses\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('grid');\n\n // Build grid inner classes with prefixes\n const gridInnerClasses = usePrefixedClassNames('', {\n [`is-gap-${gap}`]: gap !== undefined && gap !== null,\n [`is-column-gap-${columnGap}`]:\n columnGap !== undefined && columnGap !== null,\n [`is-row-gap-${rowGap}`]: rowGap !== undefined && rowGap !== null,\n [`is-col-min-${minCol}`]: minCol !== undefined && minCol !== null,\n });\n\n // Build fixed grid classes with prefixes (always called, used conditionally)\n const fixedGridClasses = usePrefixedClassNames('fixed-grid', {\n 'has-auto-count': fixedCols === 'auto',\n [`has-${fixedCols}-cols`]: fixedCols !== undefined && fixedCols !== 'auto',\n [`has-${fixedColsMobile}-cols-mobile`]:\n fixedColsMobile !== undefined && fixedColsMobile !== null,\n [`has-${fixedColsTablet}-cols-tablet`]:\n fixedColsTablet !== undefined && fixedColsTablet !== null,\n [`has-${fixedColsDesktop}-cols-desktop`]:\n fixedColsDesktop !== undefined && fixedColsDesktop !== null,\n [`has-${fixedColsWidescreen}-cols-widescreen`]:\n fixedColsWidescreen !== undefined && fixedColsWidescreen !== null,\n [`has-${fixedColsFullhd}-cols-fullhd`]:\n fixedColsFullhd !== undefined && fixedColsFullhd !== null,\n });\n\n const gridClasses = classNames(\n mainClass,\n gridInnerClasses,\n bulmaHelperClasses,\n className\n );\n\n if (isFixed) {\n return (\n <div className={fixedGridClasses}>\n <div className={gridClasses} {...rest}>\n {children}\n </div>\n </div>\n );\n }\n\n // Standard Bulma grid (not fixed)\n return (\n <div className={gridClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React, { useEffect, useMemo, ReactNode, CSSProperties } from 'react';\nimport classNames from './classNames';\nimport { useBulmaClasses, BulmaClassesProps } from './useBulmaClasses';\n\n// --- FULL Bulma v1 CSS variable keys (auto-generated from CSSVAR_KEYS) ---\nconst bulmaCssVars = [\n // scheme\n '--bulma-scheme-h',\n '--bulma-scheme-s',\n '--bulma-light-l',\n '--bulma-light-invert-l',\n '--bulma-dark-l',\n '--bulma-dark-invert-l',\n '--bulma-soft-l',\n '--bulma-bold-l',\n '--bulma-soft-invert-l',\n '--bulma-bold-invert-l',\n '--bulma-hover-background-l-delta',\n '--bulma-active-background-l-delta',\n '--bulma-hover-border-l-delta',\n '--bulma-active-border-l-delta',\n '--bulma-hover-color-l-delta',\n '--bulma-active-color-l-delta',\n '--bulma-hover-shadow-a-delta',\n '--bulma-active-shadow-a-delta',\n // colors\n '--bulma-primary-h',\n '--bulma-primary-s',\n '--bulma-primary-l',\n '--bulma-link-h',\n '--bulma-link-s',\n '--bulma-link-l',\n '--bulma-info-h',\n '--bulma-info-s',\n '--bulma-info-l',\n '--bulma-success-h',\n '--bulma-success-s',\n '--bulma-success-l',\n '--bulma-warning-h',\n '--bulma-warning-s',\n '--bulma-warning-l',\n '--bulma-danger-h',\n '--bulma-danger-s',\n '--bulma-danger-l',\n // typography\n '--bulma-family-primary',\n '--bulma-family-secondary',\n '--bulma-family-code',\n '--bulma-size-small',\n '--bulma-size-normal',\n '--bulma-size-medium',\n '--bulma-size-large',\n '--bulma-weight-light',\n '--bulma-weight-normal',\n '--bulma-weight-medium',\n '--bulma-weight-semibold',\n '--bulma-weight-bold',\n '--bulma-weight-extrabold',\n // other\n '--bulma-block-spacing',\n '--bulma-duration',\n '--bulma-easing',\n '--bulma-radius-small',\n '--bulma-radius',\n '--bulma-radius-medium',\n '--bulma-radius-large',\n '--bulma-radius-rounded',\n '--bulma-speed',\n '--bulma-arrow-color',\n '--bulma-loading-color',\n '--bulma-burger-h',\n '--bulma-burger-s',\n '--bulma-burger-l',\n '--bulma-burger-border-radius',\n '--bulma-burger-gap',\n '--bulma-burger-item-height',\n '--bulma-burger-item-width',\n // generic\n '--bulma-body-background-color',\n '--bulma-body-size',\n '--bulma-body-min-width',\n '--bulma-body-rendering',\n '--bulma-body-family',\n '--bulma-body-overflow-x',\n '--bulma-body-overflow-y',\n '--bulma-body-color',\n '--bulma-body-font-size',\n '--bulma-body-weight',\n '--bulma-body-line-height',\n '--bulma-code-family',\n '--bulma-code-padding',\n '--bulma-code-weight',\n '--bulma-code-size',\n '--bulma-small-font-size',\n '--bulma-hr-background-color',\n '--bulma-hr-height',\n '--bulma-hr-margin',\n '--bulma-strong-color',\n '--bulma-strong-weight',\n '--bulma-pre-font-size',\n '--bulma-pre-padding',\n '--bulma-pre-code-font-size',\n // skeleton\n '--bulma-skeleton-background',\n '--bulma-skeleton-radius',\n '--bulma-skeleton-block-min-height',\n '--bulma-skeleton-lines-gap',\n '--bulma-skeleton-line-height',\n // breadcrumb\n '--bulma-breadcrumb-item-color',\n '--bulma-breadcrumb-item-hover-color',\n '--bulma-breadcrumb-item-active-color',\n '--bulma-breadcrumb-item-padding-vertical',\n '--bulma-breadcrumb-item-padding-horizontal',\n '--bulma-breadcrumb-item-separator-color',\n // card\n '--bulma-card-color',\n '--bulma-card-background-color',\n '--bulma-card-shadow',\n '--bulma-card-radius',\n '--bulma-card-header-background-color',\n '--bulma-card-header-color',\n '--bulma-card-header-padding',\n '--bulma-card-header-shadow',\n '--bulma-card-header-weight',\n '--bulma-card-content-background-color',\n '--bulma-card-content-padding',\n '--bulma-card-footer-background-color',\n '--bulma-card-footer-border-top',\n '--bulma-card-footer-padding',\n '--bulma-card-media-margin',\n // dropdown\n '--bulma-dropdown-menu-min-width',\n '--bulma-dropdown-content-background-color',\n '--bulma-dropdown-content-offset',\n '--bulma-dropdown-content-padding-bottom',\n '--bulma-dropdown-content-padding-top',\n '--bulma-dropdown-content-radius',\n '--bulma-dropdown-content-shadow',\n '--bulma-dropdown-content-z',\n '--bulma-dropdown-item-h',\n '--bulma-dropdown-item-s',\n '--bulma-dropdown-item-l',\n '--bulma-dropdown-item-background-l',\n '--bulma-dropdown-item-background-l-delta',\n '--bulma-dropdown-item-hover-background-l-delta',\n '--bulma-dropdown-item-active-background-l-delta',\n '--bulma-dropdown-item-color-l',\n '--bulma-dropdown-item-selected-h',\n '--bulma-dropdown-item-selected-s',\n '--bulma-dropdown-item-selected-l',\n '--bulma-dropdown-item-selected-background-l',\n '--bulma-dropdown-item-selected-color-l',\n '--bulma-dropdown-divider-background-color',\n // menu\n '--bulma-menu-item-h',\n '--bulma-menu-item-s',\n '--bulma-menu-item-l',\n '--bulma-menu-item-background-l',\n '--bulma-menu-item-background-l-delta',\n '--bulma-menu-item-hover-background-l-delta',\n '--bulma-menu-item-active-background-l-delta',\n '--bulma-menu-item-color-l',\n '--bulma-menu-item-radius',\n '--bulma-menu-item-selected-h',\n '--bulma-menu-item-selected-s',\n '--bulma-menu-item-selected-l',\n '--bulma-menu-item-selected-background-l',\n '--bulma-menu-item-selected-color-l',\n '--bulma-menu-list-border-left',\n '--bulma-menu-list-line-height',\n '--bulma-menu-list-link-padding',\n '--bulma-menu-nested-list-margin',\n '--bulma-menu-nested-list-padding-left',\n '--bulma-menu-label-color',\n '--bulma-menu-label-font-size',\n '--bulma-menu-label-letter-spacing',\n '--bulma-menu-label-spacing',\n // message\n '--bulma-message-h',\n '--bulma-message-s',\n '--bulma-message-background-l',\n '--bulma-message-border-l',\n '--bulma-message-border-l-delta',\n '--bulma-message-border-style',\n '--bulma-message-border-width',\n '--bulma-message-color-l',\n '--bulma-message-radius',\n '--bulma-message-header-weight',\n '--bulma-message-header-padding',\n '--bulma-message-header-radius',\n '--bulma-message-header-body-border-width',\n '--bulma-message-header-background-l',\n '--bulma-message-header-color-l',\n '--bulma-message-body-border-width',\n '--bulma-message-body-color',\n '--bulma-message-body-padding',\n '--bulma-message-body-radius',\n '--bulma-message-body-pre-code-background-color',\n // modal\n '--bulma-modal-z',\n '--bulma-modal-background-background-color',\n '--bulma-modal-content-width',\n '--bulma-modal-content-margin-mobile',\n '--bulma-modal-content-spacing-mobile',\n '--bulma-modal-content-spacing-tablet',\n '--bulma-modal-close-dimensions',\n '--bulma-modal-close-right',\n '--bulma-modal-close-top',\n '--bulma-modal-card-spacing',\n '--bulma-modal-card-head-background-color',\n '--bulma-modal-card-head-padding',\n '--bulma-modal-card-head-radius',\n '--bulma-modal-card-title-color',\n '--bulma-modal-card-title-line-height',\n '--bulma-modal-card-title-size',\n '--bulma-modal-card-foot-background-color',\n '--bulma-modal-card-foot-radius',\n '--bulma-modal-card-body-background-color',\n '--bulma-modal-card-body-padding',\n // navbar\n '--bulma-navbar-h',\n '--bulma-navbar-s',\n '--bulma-navbar-l',\n '--bulma-navbar-background-color',\n '--bulma-navbar-box-shadow-size',\n '--bulma-navbar-box-shadow-color',\n '--bulma-navbar-padding-vertical',\n '--bulma-navbar-padding-horizontal',\n '--bulma-navbar-z',\n '--bulma-navbar-fixed-z',\n '--bulma-navbar-item-background-a',\n '--bulma-navbar-item-background-l',\n '--bulma-navbar-item-background-l-delta',\n '--bulma-navbar-item-hover-background-l-delta',\n '--bulma-navbar-item-active-background-l-delta',\n '--bulma-navbar-item-color-l',\n '--bulma-navbar-item-selected-h',\n '--bulma-navbar-item-selected-s',\n '--bulma-navbar-item-selected-l',\n '--bulma-navbar-item-selected-background-l',\n '--bulma-navbar-item-selected-color-l',\n '--bulma-navbar-item-img-max-height',\n '--bulma-navbar-burger-color',\n '--bulma-navbar-tab-hover-background-color',\n '--bulma-navbar-tab-hover-border-bottom-color',\n '--bulma-navbar-tab-active-color',\n '--bulma-navbar-tab-active-background-color',\n '--bulma-navbar-tab-active-border-bottom-color',\n '--bulma-navbar-tab-active-border-bottom-style',\n '--bulma-navbar-tab-active-border-bottom-width',\n '--bulma-navbar-dropdown-background-color',\n '--bulma-navbar-dropdown-border-l',\n '--bulma-navbar-dropdown-border-color',\n '--bulma-navbar-dropdown-border-style',\n '--bulma-navbar-dropdown-border-width',\n '--bulma-navbar-dropdown-offset',\n '--bulma-navbar-dropdown-arrow',\n '--bulma-navbar-dropdown-radius',\n '--bulma-navbar-dropdown-z',\n '--bulma-navbar-dropdown-boxed-radius',\n '--bulma-navbar-dropdown-boxed-shadow',\n '--bulma-navbar-dropdown-item-h',\n '--bulma-navbar-dropdown-item-s',\n '--bulma-navbar-dropdown-item-l',\n '--bulma-navbar-dropdown-item-background-l',\n '--bulma-navbar-dropdown-item-color-l',\n '--bulma-navbar-divider-background-l',\n '--bulma-navbar-divider-height',\n '--bulma-navbar-bottom-box-shadow-size',\n // pagination\n '--bulma-pagination-margin',\n '--bulma-pagination-min-width',\n '--bulma-pagination-item-h',\n '--bulma-pagination-item-s',\n '--bulma-pagination-item-l',\n '--bulma-pagination-item-background-l-delta',\n '--bulma-pagination-item-hover-background-l-delta',\n '--bulma-pagination-item-active-background-l-delta',\n '--bulma-pagination-item-border-style',\n '--bulma-pagination-item-border-width',\n '--bulma-pagination-item-border-l',\n '--bulma-pagination-item-border-l-delta',\n '--bulma-pagination-item-hover-border-l-delta',\n '--bulma-pagination-item-active-border-l-delta',\n '--bulma-pagination-item-focus-border-l-delta',\n '--bulma-pagination-item-color-l',\n '--bulma-pagination-item-font-size',\n '--bulma-pagination-item-margin',\n '--bulma-pagination-item-padding-left',\n '--bulma-pagination-item-padding-right',\n '--bulma-pagination-item-outer-shadow-h',\n '--bulma-pagination-item-outer-shadow-s',\n '--bulma-pagination-item-outer-shadow-l',\n '--bulma-pagination-item-outer-shadow-a',\n '--bulma-pagination-nav-padding-left',\n '--bulma-pagination-nav-padding-right',\n '--bulma-pagination-disabled-color',\n '--bulma-pagination-disabled-background-color',\n '--bulma-pagination-disabled-border-color',\n '--bulma-pagination-current-color',\n '--bulma-pagination-current-background-color',\n '--bulma-pagination-current-border-color',\n '--bulma-pagination-ellipsis-color',\n '--bulma-pagination-shadow-inset',\n '--bulma-pagination-selected-item-h',\n '--bulma-pagination-selected-item-s',\n '--bulma-pagination-selected-item-l',\n '--bulma-pagination-selected-item-background-l',\n '--bulma-pagination-selected-item-border-l',\n '--bulma-pagination-selected-item-color-l',\n // panel\n '--bulma-panel-margin',\n '--bulma-panel-item-border',\n '--bulma-panel-radius',\n '--bulma-panel-shadow',\n '--bulma-panel-heading-line-height',\n '--bulma-panel-heading-padding',\n '--bulma-panel-heading-radius',\n '--bulma-panel-heading-size',\n '--bulma-panel-heading-weight',\n '--bulma-panel-tabs-font-size',\n '--bulma-panel-tab-border-bottom-color',\n '--bulma-panel-tab-border-bottom-style',\n '--bulma-panel-tab-border-bottom-width',\n '--bulma-panel-tab-active-color',\n '--bulma-panel-list-item-color',\n '--bulma-panel-list-item-hover-color',\n '--bulma-panel-block-color',\n '--bulma-panel-block-hover-background-color',\n '--bulma-panel-block-active-border-left-color',\n '--bulma-panel-block-active-color',\n '--bulma-panel-block-active-icon-color',\n '--bulma-panel-icon-color',\n // tabs\n '--bulma-tabs-border-bottom-color',\n '--bulma-tabs-border-bottom-style',\n '--bulma-tabs-border-bottom-width',\n '--bulma-tabs-link-color',\n '--bulma-tabs-link-hover-border-bottom-color',\n '--bulma-tabs-link-hover-color',\n '--bulma-tabs-link-active-border-bottom-color',\n '--bulma-tabs-link-active-color',\n '--bulma-tabs-link-padding',\n '--bulma-tabs-boxed-link-radius',\n '--bulma-tabs-boxed-link-hover-background-color',\n '--bulma-tabs-boxed-link-hover-border-bottom-color',\n '--bulma-tabs-boxed-link-active-background-color',\n '--bulma-tabs-boxed-link-active-border-color',\n '--bulma-tabs-boxed-link-active-border-bottom-color',\n '--bulma-tabs-toggle-link-border-color',\n '--bulma-tabs-toggle-link-border-style',\n '--bulma-tabs-toggle-link-border-width',\n '--bulma-tabs-toggle-link-hover-background-color',\n '--bulma-tabs-toggle-link-hover-border-color',\n '--bulma-tabs-toggle-link-radius',\n '--bulma-tabs-toggle-link-active-background-color',\n '--bulma-tabs-toggle-link-active-border-color',\n '--bulma-tabs-toggle-link-active-color',\n // box\n '--bulma-box-background-color',\n '--bulma-box-color',\n '--bulma-box-radius',\n '--bulma-box-shadow',\n '--bulma-box-padding',\n '--bulma-box-link-hover-shadow',\n '--bulma-box-link-active-shadow',\n // content\n '--bulma-content-heading-color',\n '--bulma-content-heading-weight',\n '--bulma-content-heading-line-height',\n '--bulma-content-block-margin-bottom',\n '--bulma-content-blockquote-background-color',\n '--bulma-content-blockquote-border-left',\n '--bulma-content-blockquote-padding',\n '--bulma-content-pre-padding',\n '--bulma-content-table-cell-border',\n '--bulma-content-table-cell-border-width',\n '--bulma-content-table-cell-padding',\n '--bulma-content-table-cell-heading-color',\n '--bulma-content-table-head-cell-border-width',\n '--bulma-content-table-head-cell-color',\n '--bulma-content-table-body-last-row-cell-border-bottom-width',\n '--bulma-content-table-foot-cell-border-width',\n '--bulma-content-table-foot-cell-color',\n // delete\n '--bulma-delete-dimensions',\n '--bulma-delete-background-l',\n '--bulma-delete-background-alpha',\n '--bulma-delete-color',\n // icon\n '--bulma-icon-dimensions',\n '--bulma-icon-dimensions-small',\n '--bulma-icon-dimensions-medium',\n '--bulma-icon-dimensions-large',\n '--bulma-icon-text-spacing',\n // notification\n '--bulma-notification-h',\n '--bulma-notification-s',\n '--bulma-notification-background-l',\n '--bulma-notification-color-l',\n '--bulma-notification-code-background-color',\n '--bulma-notification-radius',\n '--bulma-notification-padding',\n // progress\n '--bulma-progress-border-radius',\n '--bulma-progress-bar-background-color',\n '--bulma-progress-value-background-color',\n '--bulma-progress-indeterminate-duration',\n // table\n '--bulma-table-color',\n '--bulma-table-background-color',\n '--bulma-table-cell-border-color',\n '--bulma-table-cell-border-style',\n '--bulma-table-cell-border-width',\n '--bulma-table-cell-padding',\n '--bulma-table-cell-heading-color',\n '--bulma-table-cell-text-align',\n '--bulma-table-head-cell-border-width',\n '--bulma-table-head-cell-color',\n '--bulma-table-foot-cell-border-width',\n '--bulma-table-foot-cell-color',\n '--bulma-table-head-background-color',\n '--bulma-table-body-background-color',\n '--bulma-table-foot-background-color',\n '--bulma-table-row-hover-background-color',\n '--bulma-table-row-active-background-color',\n '--bulma-table-row-active-color',\n '--bulma-table-striped-row-even-background-color',\n '--bulma-table-striped-row-even-hover-background-color',\n // tag\n '--bulma-tag-h',\n '--bulma-tag-s',\n '--bulma-tag-background-l',\n '--bulma-tag-background-l-delta',\n '--bulma-tag-hover-background-l-delta',\n '--bulma-tag-active-background-l-delta',\n '--bulma-tag-color-l',\n '--bulma-tag-radius',\n '--bulma-tag-delete-margin',\n // title\n '--bulma-title-color',\n '--bulma-title-family',\n '--bulma-title-size',\n '--bulma-title-weight',\n '--bulma-title-line-height',\n '--bulma-title-strong-color',\n '--bulma-title-strong-weight',\n '--bulma-title-sub-size',\n '--bulma-title-sup-size',\n '--bulma-subtitle-color',\n '--bulma-subtitle-family',\n '--bulma-subtitle-size',\n '--bulma-subtitle-weight',\n '--bulma-subtitle-line-height',\n '--bulma-subtitle-strong-color',\n '--bulma-subtitle-strong-weight',\n // control\n '--bulma-control-radius',\n '--bulma-control-radius-small',\n '--bulma-control-border-width',\n '--bulma-control-height',\n '--bulma-control-line-height',\n '--bulma-control-padding-vertical',\n '--bulma-control-padding-horizontal',\n '--bulma-control-size',\n '--bulma-control-focus-shadow-l',\n // file\n '--bulma-file-radius',\n '--bulma-file-name-border-color',\n '--bulma-file-name-border-style',\n '--bulma-file-name-border-width',\n '--bulma-file-name-max-width',\n '--bulma-file-h',\n '--bulma-file-s',\n '--bulma-file-background-l',\n '--bulma-file-background-l-delta',\n '--bulma-file-hover-background-l-delta',\n '--bulma-file-active-background-l-delta',\n '--bulma-file-border-l',\n '--bulma-file-border-l-delta',\n '--bulma-file-hover-border-l-delta',\n '--bulma-file-active-border-l-delta',\n '--bulma-file-cta-color-l',\n '--bulma-file-name-color-l',\n '--bulma-file-color-l-delta',\n '--bulma-file-hover-color-l-delta',\n '--bulma-file-active-color-l-delta',\n // input\n '--bulma-input-h',\n '--bulma-input-s',\n '--bulma-input-l',\n '--bulma-input-border-style',\n '--bulma-input-border-l',\n '--bulma-input-border-l-delta',\n '--bulma-input-hover-border-l-delta',\n '--bulma-input-active-border-l-delta',\n '--bulma-input-focus-h',\n '--bulma-input-focus-s',\n '--bulma-input-focus-l',\n '--bulma-input-focus-shadow-size',\n '--bulma-input-focus-shadow-alpha',\n '--bulma-input-color-l',\n '--bulma-input-background-l',\n '--bulma-input-background-l-delta',\n '--bulma-input-height',\n '--bulma-input-shadow',\n '--bulma-input-placeholder-color',\n '--bulma-input-disabled-color',\n '--bulma-input-disabled-background-color',\n '--bulma-input-disabled-border-color',\n '--bulma-input-disabled-placeholder-color',\n '--bulma-input-arrow',\n '--bulma-input-icon-color',\n '--bulma-input-icon-hover-color',\n '--bulma-input-icon-focus-color',\n '--bulma-input-radius',\n // columns\n '--bulma-column-gap',\n // grid\n '--bulma-grid-gap',\n '--bulma-grid-column-count',\n '--bulma-grid-column-min',\n '--bulma-grid-cell-column-span',\n '--bulma-grid-cell-column-start',\n // footer\n '--bulma-footer-background-color',\n '--bulma-footer-color',\n '--bulma-footer-padding',\n // hero\n '--bulma-hero-body-padding',\n '--bulma-hero-body-padding-tablet',\n '--bulma-hero-body-padding-small',\n '--bulma-hero-body-padding-medium',\n '--bulma-hero-body-padding-large',\n // media\n '--bulma-media-border-color',\n '--bulma-media-border-size',\n '--bulma-media-spacing',\n '--bulma-media-spacing-large',\n '--bulma-media-content-spacing',\n '--bulma-media-level-1-spacing',\n '--bulma-media-level-1-content-spacing',\n '--bulma-media-level-2-spacing',\n // section\n '--bulma-section-padding',\n '--bulma-section-padding-desktop',\n '--bulma-section-padding-medium',\n '--bulma-section-padding-large',\n] as const;\n\ntype BulmaVarKey = (typeof bulmaCssVars)[number];\ntype BulmaVars = Partial<Record<BulmaVarKey, string>>;\n\n// Utility: Convert Bulma CSS var to camelCase prop name (e.g., --bulma-primary-h -> primaryH)\nfunction cssVarToProp(varName: string): string {\n return varName\n .replace(/^--bulma-/, '')\n .split('-')\n .map((part, i) =>\n i === 0 ? part : part.charAt(0).toUpperCase() + part.slice(1)\n )\n .join('');\n}\n\n// Generate prop names and mapping\nconst bulmaVarPropMap = Object.fromEntries(\n bulmaCssVars.map(cssVar => [cssVarToProp(cssVar), cssVar])\n) as Record<string, string>;\n\n// Explicitly define the props interface to avoid index signature conflicts\nexport interface ThemeProps\n extends Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n children: ReactNode;\n className?: string;\n isRoot?: boolean;\n bulmaVars?: BulmaVars;\n // Bulma scheme variables\n schemeH?: string;\n schemeS?: string;\n lightL?: string;\n lightInvertL?: string;\n darkL?: string;\n darkInvertL?: string;\n softL?: string;\n boldL?: string;\n softInvertL?: string;\n boldInvertL?: string;\n hoverBackgroundLDelta?: string;\n activeBackgroundLDelta?: string;\n hoverBorderLDelta?: string;\n activeBorderLDelta?: string;\n hoverColorLDelta?: string;\n activeColorLDelta?: string;\n hoverShadowADelta?: string;\n activeShadowADelta?: string;\n // Bulma color variables\n primaryH?: string;\n primaryS?: string;\n primaryL?: string;\n linkH?: string;\n linkS?: string;\n linkL?: string;\n infoH?: string;\n infoS?: string;\n infoL?: string;\n successH?: string;\n successS?: string;\n successL?: string;\n warningH?: string;\n warningS?: string;\n warningL?: string;\n dangerH?: string;\n dangerS?: string;\n dangerL?: string;\n // Add other commonly used ones as needed\n}\n\n/**\n * Theme injects Bulma CSS variables as a wrapper component.\n * - className: Additional CSS classes to apply to the wrapper div (when isRoot=false)\n * - bulmaVars: An object mapping Bulma CSS variable names to values.\n * - isRoot: If true, CSS variables are injected globally at :root level. If false (default), they're injected locally on a wrapping div.\n * - Individual props for each Bulma CSS variable (e.g., primaryH, schemeH, etc.)\n * - Supports all BulmaClassesProps for additional styling when isRoot=false\n */\nexport const Theme: React.FC<ThemeProps> = ({\n bulmaVars = {},\n children,\n className,\n isRoot = false,\n ...restProps\n}) => {\n // Extract Bulma variable props from restProps\n const { bulmaVarProps, otherProps } = useMemo(() => {\n const varProps: Record<string, string | undefined> = {};\n const otherPropsObj: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(restProps)) {\n if (Object.prototype.hasOwnProperty.call(bulmaVarPropMap, key)) {\n varProps[key] = value as string;\n } else {\n otherPropsObj[key] = value;\n }\n }\n\n return { bulmaVarProps: varProps, otherProps: otherPropsObj };\n }, [restProps]);\n\n // Use Bulma classes for styling (only when not isRoot)\n const { bulmaHelperClasses, rest } = useBulmaClasses(otherProps);\n\n // Merge bulmaVars and individual props, with props taking precedence\n const mergedVars: BulmaVars = useMemo(() => {\n const vars: BulmaVars = { ...bulmaVars };\n for (const [propName, cssVar] of Object.entries(bulmaVarPropMap)) {\n if (bulmaVarProps[propName] !== undefined) {\n vars[cssVar as BulmaVarKey] = bulmaVarProps[propName] as string;\n }\n }\n return vars;\n }, [bulmaVars, bulmaVarProps]);\n\n // Inject CSS variables globally at :root level\n useEffect(() => {\n if (!isRoot) {\n return;\n }\n\n const validVars = Object.entries(mergedVars).filter(\n ([key, value]) => bulmaCssVars.includes(key as BulmaVarKey) && value\n );\n\n if (validVars.length === 0) {\n return;\n }\n\n // Create and inject a style element for global CSS variables\n const styleId = 'bestax-bulma-theme-vars';\n let styleElement = document.getElementById(styleId) as HTMLStyleElement;\n\n if (!styleElement) {\n styleElement = document.createElement('style');\n styleElement.id = styleId;\n document.head.appendChild(styleElement);\n }\n\n const cssRules = validVars\n .map(([key, value]) => `${key}: ${value};`)\n .join(' ');\n styleElement.textContent = `:root { ${cssRules} }`;\n\n // Cleanup function to remove the style element when component unmounts\n return () => {\n const element = document.getElementById(styleId);\n if (element) {\n element.remove();\n }\n };\n }, [mergedVars, isRoot]);\n\n // For local injection (when isRoot is false), prepare style object for CSS vars\n const style: CSSProperties = useMemo(() => {\n if (isRoot) {\n return {};\n }\n\n const styleObj: CSSProperties = {};\n for (const [key, value] of Object.entries(mergedVars)) {\n if (bulmaCssVars.includes(key as BulmaVarKey) && value) {\n (styleObj as Record<string, string>)[key] = value;\n }\n }\n return styleObj;\n }, [mergedVars, isRoot]);\n\n // Generate combined class names for the wrapper div\n const combinedClassName = useMemo(() => {\n if (isRoot) {\n return '';\n }\n return classNames(className, bulmaHelperClasses);\n }, [className, bulmaHelperClasses, isRoot]);\n\n return isRoot ? (\n <>{children}</>\n ) : (\n <div className={combinedClassName || undefined} style={style} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport classNames, { usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Bulma container breakpoints.\n */\nexport type ContainerBreakpoint = 'tablet' | 'desktop' | 'widescreen';\n\n/**\n * Props for the Container component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {boolean} [fluid] - Full-width container.\n * @property {boolean} [widescreen] - Container is widescreen.\n * @property {boolean} [fullhd] - Container is fullhd.\n * @property {ContainerBreakpoint} [breakpoint] - Responsive breakpoint.\n * @property {boolean} [isMax] - Use is-max-* class for breakpoint.\n * @property {React.ReactNode} [children] - Content inside the container.\n */\nexport interface ContainerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n fluid?: boolean;\n widescreen?: boolean;\n fullhd?: boolean;\n breakpoint?: ContainerBreakpoint;\n isMax?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Container component for Bulma.\n * Adds optional responsive, fluid, and color support, including is-max-* and breakpoint classes.\n *\n * @function\n * @param {ContainerProps} props - Props for the Container component.\n * @returns {JSX.Element} The rendered container.\n * @see {@link https://bulma.io/documentation/layout/container/ | Bulma Container documentation}\n */\nexport const Container: React.FC<ContainerProps> = ({\n className,\n textColor,\n bgColor,\n fluid,\n widescreen,\n fullhd,\n breakpoint,\n isMax,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Only allow isMax for supported breakpoints\n const validMaxBreakpoints: ContainerBreakpoint[] = [\n 'tablet',\n 'desktop',\n 'widescreen',\n ];\n let breakpointClass: string | undefined;\n if (breakpoint) {\n if (isMax && validMaxBreakpoints.includes(breakpoint)) {\n breakpointClass = `is-max-${breakpoint}`;\n } else if (!isMax) {\n breakpointClass = `is-${breakpoint}`;\n }\n }\n\n const mainClass = usePrefixedClassNames('container');\n const containerModifiers = usePrefixedClassNames('', {\n 'is-fluid': fluid,\n 'is-widescreen': widescreen,\n 'is-fullhd': fullhd,\n });\n const prefixedBreakpointClass = usePrefixedClassNames(breakpointClass || '');\n\n const containerClasses = classNames(\n mainClass,\n containerModifiers,\n prefixedBreakpointClass,\n className,\n bulmaHelperClasses\n );\n\n return (\n <div className={containerClasses} {...rest}>\n {children}\n </div>\n );\n};\n\nexport default Container;\n","import React from 'react';\nimport classNames, { usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Footer component.\n *\n * @property {'footer'|'div'} [as] - The HTML tag to render as.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content inside the footer.\n */\nexport interface FooterProps\n extends React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n as?: 'footer' | 'div';\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Footer component.\n *\n * @example\n * <Footer>\n * <div className=\"content has-text-centered\">...</div>\n * </Footer>\n * @see {@link https://bulma.io/documentation/layout/footer/ | Bulma Footer documentation}\n */\nexport const Footer: React.FC<FooterProps> = ({\n as = 'footer',\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n const mainClass = usePrefixedClassNames('footer');\n const footerClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <Tag className={footerClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nexport default Footer;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Possible values for Bulma hero size.\n */\nexport type HeroSize =\n | 'small'\n | 'medium'\n | 'large'\n | 'fullheight'\n | 'fullheight-with-navbar';\n\n/**\n * Props for the Hero component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {HeroSize} [size] - Hero size.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {boolean} [fullheightWithNavbar] - Use fullheight with navbar.\n * @property {React.ReactNode} [children] - Content inside the hero.\n */\nexport interface HeroProps\n extends React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n size?: HeroSize;\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n fullheightWithNavbar?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Hero component root.\n *\n * @function\n * @param {HeroProps} props - Props for the Hero component.\n * @returns {JSX.Element} The rendered hero.\n * @see {@link https://bulma.io/documentation/layout/hero/ | Bulma Hero documentation}\n */\nexport const Hero: React.FC<HeroProps> & {\n Head: typeof HeroHead;\n Body: typeof HeroBody;\n Foot: typeof HeroFoot;\n} = ({\n className,\n color,\n size,\n bgColor,\n fullheightWithNavbar,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('hero', {\n [`is-${color}`]: color,\n [`is-${size}`]: size && size !== 'fullheight-with-navbar',\n 'is-fullheight-with-navbar':\n fullheightWithNavbar || size === 'fullheight-with-navbar',\n });\n const heroClasses = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <section className={heroClasses} {...rest}>\n {children}\n </section>\n );\n};\n\n/**\n * Props for the HeroHead component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier for text.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface HeroHeadProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Hero head section.\n */\nexport const HeroHead: React.FC<HeroHeadProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('hero-head');\n const heroHeadClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <div className={heroHeadClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the HeroBody component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier for text.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface HeroBodyProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Hero body section.\n */\nexport const HeroBody: React.FC<HeroBodyProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('hero-body');\n const heroBodyClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <div className={heroBodyClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the HeroFoot component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier for text.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface HeroFootProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Hero foot section.\n */\nexport const HeroFoot: React.FC<HeroFootProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('hero-foot');\n const heroFootClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <div className={heroFootClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n// Attach subcomponents\nHero.Head = HeroHead;\nHero.Body = HeroBody;\nHero.Foot = HeroFoot;\n\nexport default Hero;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Level component.\n *\n * @property {boolean} [isMobile] - Enable mobile mode.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Level content.\n */\nexport interface LevelProps\n extends React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n isMobile?: boolean;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Level component for horizontal layouts.\n *\n * @function\n * @param {LevelProps} props - Props for the Level component.\n * @returns {JSX.Element} The rendered level.\n * @see {@link https://bulma.io/documentation/layout/level/ | Bulma Level documentation}\n */\nexport const Level: React.FC<LevelProps> & {\n Left: typeof LevelLeft;\n Right: typeof LevelRight;\n Item: typeof LevelItem;\n} = ({\n isMobile,\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level', {\n 'is-mobile': isMobile,\n });\n const levelClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <nav className={levelClasses} {...rest}>\n {children}\n </nav>\n );\n};\n\n/**\n * Props for the LevelLeft component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface LevelLeftProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Level left section.\n */\nexport const LevelLeft: React.FC<LevelLeftProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level-left');\n const levelLeftClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <div className={levelLeftClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the LevelRight component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface LevelRightProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Level right section.\n */\nexport const LevelRight: React.FC<LevelRightProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level-right');\n const levelRightClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={levelRightClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the LevelItem component.\n *\n * @property {'div'|'p'|'a'} [as] - Element type to render.\n * @property {boolean} [hasTextCentered] - Center the text in the item.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n * @property {string} [href] - Href for \"a\" tag.\n * @property {string} [target] - Target for \"a\" tag\n * @property {string} [rel] - Rel for \"a\" tag\n */\nexport interface LevelItemProps\n extends React.HTMLAttributes<\n HTMLDivElement | HTMLParagraphElement | HTMLAnchorElement\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n as?: 'div' | 'p' | 'a';\n hasTextCentered?: boolean;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n href?: string;\n target?: string;\n rel?: string;\n}\n\n/**\n * Bulma Level item section.\n */\nexport const LevelItem: React.FC<LevelItemProps> = ({\n as = 'div',\n hasTextCentered,\n className,\n children,\n href,\n target,\n rel,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n\n const mainClass = usePrefixedClassNames('level-item', {\n 'has-text-centered': hasTextCentered,\n });\n const levelItemClasses = classNames(mainClass, bulmaHelperClasses, className);\n\n // If rendering as \"a\", only pass anchor-specific props\n if (Tag === 'a') {\n return (\n <a\n className={levelItemClasses}\n href={href}\n target={target}\n rel={rel}\n {...rest}\n >\n {children}\n </a>\n );\n }\n\n return (\n <Tag className={levelItemClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nLevel.Left = LevelLeft;\nLevel.Right = LevelRight;\nLevel.Item = LevelItem;\n\nexport default Level;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Media component.\n *\n * @property {'article'|'div'} [as] - Element type to render.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface MediaProps\n extends React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n as?: 'article' | 'div';\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Media component root.\n *\n * @function\n * @param {MediaProps} props - Props for the Media component.\n * @returns {JSX.Element} The rendered media container.\n * @see {@link https://bulma.io/documentation/layout/media-object/ | Bulma Media documentation}\n */\nexport const Media: React.FC<MediaProps> = ({\n as = 'article',\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n const mainClass = usePrefixedClassNames('media');\n const mediaClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <Tag className={mediaClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\n/**\n * Props for the MediaLeft component.\n *\n * @property {'figure'|'div'} [as] - Element type to render.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface MediaLeftProps\n extends React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n as?: 'figure' | 'div';\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Media left section.\n */\nexport const MediaLeft: React.FC<MediaLeftProps> = ({\n as = 'figure',\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n const mainClass = usePrefixedClassNames('media-left');\n const mediaLeftClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <Tag className={mediaLeftClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\n/**\n * Props for the MediaContent component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface MediaContentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Media content section.\n */\nexport const MediaContent: React.FC<MediaContentProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('media-content');\n const mediaContentClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={mediaContentClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the MediaRight component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface MediaRightProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Media right section.\n */\nexport const MediaRight: React.FC<MediaRightProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('media-right');\n const mediaRightClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={mediaRightClasses} {...rest}>\n {children}\n </div>\n );\n};\n\ninterface MediaComponent extends React.FC<MediaProps> {\n Left: React.FC<MediaLeftProps>;\n Content: React.FC<MediaContentProps>;\n Right: React.FC<MediaRightProps>;\n}\n\nconst MediaWithSubcomponents = Media as MediaComponent;\nMediaWithSubcomponents.Left = MediaLeft;\nMediaWithSubcomponents.Content = MediaContent;\nMediaWithSubcomponents.Right = MediaRight;\n\nexport default MediaWithSubcomponents;\n","import React from 'react';\nimport classNames, { usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Section size values for Bulma.\n */\ntype SectionSize = 'medium' | 'large';\n\n/**\n * Props for the Section component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {'medium'|'large'} [size] - Section size.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Section content.\n */\nexport interface SectionProps\n extends React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n size?: SectionSize;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Section component for general layout.\n *\n * @function\n * @param {SectionProps} props - Props for the Section component.\n * @returns {JSX.Element} The rendered section.\n * @see {@link https://bulma.io/documentation/layout/section/ | Bulma Section documentation}\n */\nexport const Section: React.FC<SectionProps> = ({\n size,\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('section');\n const sectionModifiers = usePrefixedClassNames('', {\n [`is-${size}`]: size,\n });\n const sectionClasses = classNames(\n mainClass,\n sectionModifiers,\n className,\n bulmaHelperClasses\n );\n\n return (\n <section className={sectionClasses} {...rest}>\n {children}\n </section>\n );\n};\n"],"names":["_jsx","validSizes","validAlignments","_jsxs","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/helpers/Config.tsx","../src/helpers/classNames.ts","../src/helpers/bulmaClassHelpers.ts","../src/helpers/useColorClasses.tsx","../src/helpers/useSpacingClasses.tsx","../src/helpers/useTypographyClasses.tsx","../src/helpers/useVisibilityClasses.tsx","../src/helpers/useFlexboxClasses.tsx","../src/helpers/useOtherClasses.tsx","../src/helpers/useBulmaClasses.tsx","../src/columns/Column.tsx","../src/columns/Columns.tsx","../src/components/Breadcrumb.tsx","../src/components/Card.tsx","../src/components/Dropdown.tsx","../src/components/Menu.tsx","../src/components/Message.tsx","../src/components/Modal.tsx","../src/components/Navbar.tsx","../src/components/Pagination.tsx","../src/elements/Icon.tsx","../src/components/Panel.tsx","../src/components/Tabs.tsx","../src/components/Loading.tsx","../src/components/Collapse.tsx","../src/components/Tooltip.tsx","../src/components/Steps.tsx","../src/components/Sidebar.tsx","../src/components/Toast.tsx","../src/components/Dialog.tsx","../src/elements/Button.tsx","../src/components/Carousel.tsx","../src/elements/Block.tsx","../src/elements/Box.tsx","../src/elements/Buttons.tsx","../src/elements/LinkButton.tsx","../src/elements/Code.tsx","../src/elements/Content.tsx","../src/elements/Delete.tsx","../src/elements/Divider.tsx","../src/elements/Emphasis.tsx","../src/elements/Figure.tsx","../src/elements/IconText.tsx","../src/elements/Image.tsx","../src/elements/Link.tsx","../src/elements/ListItem.tsx","../src/elements/Notification.tsx","../src/elements/OrderedList.tsx","../src/elements/Paragraph.tsx","../src/elements/Pre.tsx","../src/elements/Progress.tsx","../src/elements/Skeleton.tsx","../src/elements/Span.tsx","../src/elements/Strong.tsx","../src/elements/SubTitle.tsx","../src/elements/Table.tsx","../src/elements/Tag.tsx","../src/elements/Tags.tsx","../src/elements/Tbody.tsx","../src/elements/Td.tsx","../src/elements/Tfoot.tsx","../src/elements/Th.tsx","../src/elements/Thead.tsx","../src/elements/Title.tsx","../src/elements/Tr.tsx","../src/elements/UnorderedList.tsx","../src/form/FormContext.tsx","../src/form/Checkbox.tsx","../src/form/Field.tsx","../src/form/Control.tsx","../src/form/Checkboxes.tsx","../src/form/File.tsx","../src/form/Radio.tsx","../src/form/Radios.tsx","../src/form/Switch.tsx","../src/form/Slider.tsx","../src/form/Numberinput.tsx","../src/form/Rate.tsx","../src/form/Autocomplete.tsx","../src/form/Taginput.tsx","../src/form/InputBase.tsx","../src/form/SelectBase.tsx","../src/form/TextAreaBase.tsx","../src/form/Input.tsx","../src/form/Select.tsx","../src/form/TextArea.tsx","../src/form/_pickerInternals/pickerTypes.ts","../src/form/_pickerInternals/formatters.ts","../src/form/_pickerInternals/dateUtils.ts","../src/form/_pickerInternals/Calendar.tsx","../src/form/_pickerInternals/useFocusTrap.ts","../src/form/_pickerInternals/PickerPopover.tsx","../src/form/_pickerInternals/useNativeMobilePicker.ts","../src/form/_pickerInternals/segmentMap.ts","../src/form/_pickerInternals/useSegmentedEntry.ts","../src/form/DateInputBase.tsx","../src/form/DateInput.tsx","../src/form/_pickerInternals/haptics.ts","../src/form/_pickerInternals/audioTick.ts","../src/form/_pickerInternals/TimeWheels.tsx","../src/form/TimeInputBase.tsx","../src/form/TimeInput.tsx","../src/form/DateTimeInputBase.tsx","../src/form/DateTimeInput.tsx","../src/grid/Cell.tsx","../src/grid/Grid.tsx","../src/helpers/Theme.tsx","../src/layout/Container.tsx","../src/layout/Footer.tsx","../src/layout/Hero.tsx","../src/layout/Level.tsx","../src/layout/Media.tsx","../src/layout/Section.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode } from 'react';\n\n/** Supported icon library identifiers. */\ntype IconLibrary = 'fa' | 'mdi' | 'ion' | 'material-icons' | 'material-symbols';\n\n/**\n * Shape of the configuration context value.\n *\n * @property {string} [classPrefix] - Prefix applied to all Bulma class names.\n * @property {IconLibrary} [iconLibrary] - Default icon library for Icon components.\n */\nexport interface ConfigContextProps {\n classPrefix?: string;\n iconLibrary?: IconLibrary;\n}\n\nconst ConfigContext = createContext<ConfigContextProps>({});\n\n/**\n * Hook to access the bulma-ui configuration context.\n *\n * @function\n * @returns {ConfigContextProps} The current configuration values.\n */\nexport const useConfig = () => useContext(ConfigContext);\n\n/**\n * Props for the ConfigProvider component.\n *\n * @property {React.ReactNode} children - Child components to receive configuration.\n * @property {string} [classPrefix] - Prefix applied to all Bulma class names.\n * @property {IconLibrary} [iconLibrary] - Default icon library for Icon components.\n */\nexport interface ConfigProviderProps {\n children: ReactNode;\n classPrefix?: string;\n iconLibrary?: IconLibrary;\n}\n\n/**\n * ConfigProvider injects configuration into all child components via React context.\n *\n * @function\n * @param {ConfigProviderProps} props - Provider props.\n * @returns {JSX.Element} The context provider wrapping children.\n *\n * @example\n * <ConfigProvider classPrefix=\"my-\" iconLibrary=\"mdi\">\n * <App />\n * </ConfigProvider>\n */\nexport const ConfigProvider: React.FC<ConfigProviderProps> = ({\n classPrefix,\n iconLibrary,\n children,\n}) => {\n return (\n <ConfigContext.Provider value={{ classPrefix, iconLibrary }}>\n {children}\n </ConfigContext.Provider>\n );\n};\n\n/**\n * Utility hook to get the configured class prefix string.\n *\n * @function\n * @returns {string} The class prefix, or empty string if none configured.\n */\nexport const useClassPrefix = () => {\n const { classPrefix } = useConfig();\n return classPrefix || '';\n};\n\n/**\n * Hook that returns a function to prefix a class name with the configured prefix.\n *\n * @function\n * @returns {(className: string) => string} A function that applies the class prefix.\n */\nexport const usePrefixedClass = () => {\n const { classPrefix } = useConfig();\n return (className: string) =>\n classPrefix ? `${classPrefix}${className}` : className;\n};\n\n/**\n * Hook to get the default icon library from configuration.\n *\n * @function\n * @returns {IconLibrary | undefined} The configured icon library, or undefined.\n */\nexport const useIconLibrary = () => {\n const { iconLibrary } = useConfig();\n return iconLibrary;\n};\n","import { useConfig } from './Config';\n\n/**\n * Returns a space-separated string of class names based on input arguments.\n *\n * Accepts any mix of strings, numbers, arrays, or objects. Falsy values are ignored.\n * Array and object values are recursively flattened, and object keys are included\n * if their value is truthy. Duplicate class names are removed.\n *\n * @param {...(string | number | undefined | null | false | Record<string, unknown> | unknown[])} args - Class values to join.\n * @returns {string} A space-separated string of unique class names.\n *\n * @example\n * classNames('foo', ['bar', { baz: true }], { qux: false, quux: true });\n * // => 'foo bar baz quux'\n */\nexport function classNames(\n ...args: (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[]\n): string {\n const classSet = new Set<string>();\n\n function process(\n item:\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n ) {\n if (item === undefined || item === null || item === false || item === '') {\n return;\n }\n if (typeof item === 'string' || typeof item === 'number') {\n for (const cls of String(item).split(/\\s+/)) {\n if (cls) classSet.add(cls);\n }\n } else if (Array.isArray(item)) {\n for (const sub of item as (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[])\n process(sub);\n } else if (typeof item === 'object') {\n for (const key in item) {\n if (Object.prototype.hasOwnProperty.call(item, key) && item[key]) {\n for (const cls of key.split(/\\s+/)) {\n if (cls) classSet.add(cls);\n }\n }\n }\n }\n }\n\n for (const arg of args) {\n process(arg);\n }\n return Array.from(classSet).join(' ');\n}\n\n/**\n * Creates a prefixed version of classNames that automatically applies a prefix to all class names.\n *\n * @param {string} classPrefix - The prefix to apply to all class names.\n * @returns {Function} A classNames function that applies the prefix.\n *\n * @example\n * const prefixedClassNames = createPrefixedClassNames('bulma-');\n * prefixedClassNames('button', { 'is-primary': true });\n * // => 'bulma-button bulma-is-primary'\n */\nexport function createPrefixedClassNames(classPrefix: string) {\n return function prefixedClassNames(\n ...args: (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[]\n ): string {\n const classSet = new Set<string>();\n\n function process(\n item:\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n ) {\n if (\n item === undefined ||\n item === null ||\n item === false ||\n item === ''\n ) {\n return;\n }\n if (typeof item === 'string' || typeof item === 'number') {\n for (const cls of String(item).split(/\\s+/)) {\n if (cls) {\n classSet.add(`${classPrefix}${cls}`);\n }\n }\n } else if (Array.isArray(item)) {\n for (const sub of item as (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[])\n process(sub);\n } else if (typeof item === 'object') {\n for (const key in item) {\n if (Object.prototype.hasOwnProperty.call(item, key) && item[key]) {\n for (const cls of key.split(/\\s+/)) {\n if (cls) {\n classSet.add(`${classPrefix}${cls}`);\n }\n }\n }\n }\n }\n }\n\n for (const arg of args) {\n process(arg);\n }\n return Array.from(classSet).join(' ');\n };\n}\n\nexport default classNames;\n\n/**\n * A simple wrapper around classNames that applies an optional prefix to all class names.\n *\n * @param {string | undefined} prefix - The prefix to apply to all class names. If undefined, no prefix is applied.\n * @param {...(string | number | undefined | null | false | Record<string, unknown> | unknown[])} args - Class values to join.\n * @returns {string} A space-separated string of unique class names, with prefix applied if provided.\n *\n * @example\n * prefixedClassNames('bulma-', 'button', { 'is-primary': true });\n * // => 'bulma-button bulma-is-primary'\n *\n * prefixedClassNames(undefined, 'button', { 'is-primary': true });\n * // => 'button is-primary'\n */\nexport function prefixedClassNames(\n prefix: string | undefined,\n ...args: (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[]\n): string {\n if (!prefix) {\n return classNames(...args);\n }\n\n return createPrefixedClassNames(prefix)(...args);\n}\n\n/**\n * Hook that automatically applies the classPrefix from Config context to class names.\n *\n * @param {...(string | number | undefined | null | false | Record<string, unknown> | unknown[])} args - Class values to join.\n * @returns {string} A space-separated string of unique class names with prefix applied from context.\n *\n * @example\n * // With ConfigProvider providing classPrefix=\"bulma-\"\n * const classes = usePrefixedClassNames('button', { 'is-primary': true });\n * // => 'bulma-button bulma-is-primary'\n */\nexport function usePrefixedClassNames(\n ...args: (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[]\n): string {\n const { classPrefix } = useConfig();\n\n return prefixedClassNames(classPrefix, ...args);\n}\n","/**\n * Valid Bulma color classes.\n * @example 'primary', 'link', 'info'\n */\nexport const validColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'black',\n 'black-bis',\n 'black-ter',\n 'grey-darker',\n 'grey-dark',\n 'grey',\n 'grey-light',\n 'grey-lighter',\n 'white',\n 'light',\n 'dark',\n] as const;\n\n/**\n * Valid Bulma color shade suffixes.\n * @example '00', '05', 'invert', 'light', 'dark', 'soft', 'bold', 'on-scheme'\n */\nexport const validColorShades = [\n '00',\n '05',\n '10',\n '15',\n '20',\n '25',\n '30',\n '35',\n '40',\n '45',\n '50',\n '55',\n '60',\n '65',\n '70',\n '75',\n '80',\n '85',\n '90',\n '95',\n 'invert',\n 'light',\n 'dark',\n 'soft',\n 'bold',\n 'on-scheme',\n] as const;\n\n/**\n * Valid Bulma size classes for margins and paddings.\n * @example '0', '1', 'auto'\n */\nexport const validSizes = ['0', '1', '2', '3', '4', '5', '6', 'auto'] as const;\n\n/**\n * Valid Bulma text size classes.\n * @example '1', '2', '3'\n */\nexport const validTextSizes = ['1', '2', '3', '4', '5', '6', '7'] as const;\n\n/**\n * Valid Bulma text alignment classes.\n * @example 'centered', 'left', 'right'\n */\nexport const validAlignments = [\n 'centered',\n 'justified',\n 'left',\n 'right',\n] as const;\n\n/**\n * Valid Bulma text transformation classes.\n * @example 'capitalized', 'uppercase', 'italic'\n */\nexport const validTextTransforms = [\n 'capitalized',\n 'lowercase',\n 'uppercase',\n 'italic',\n] as const;\n\n/**\n * Valid Bulma text weight classes.\n * @example 'light', 'normal', 'bold'\n */\nexport const validTextWeights = [\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n] as const;\n\n/**\n * Valid Bulma font family classes.\n * @example 'sans-serif', 'monospace', 'code'\n */\nexport const validFontFamilies = [\n 'sans-serif',\n 'monospace',\n 'primary',\n 'secondary',\n 'code',\n] as const;\n\n/**\n * Valid Bulma display classes.\n * @example 'block', 'flex', 'inline'\n */\nexport const validDisplays = [\n 'block',\n 'flex',\n 'inline',\n 'inline-block',\n 'inline-flex',\n] as const;\n\n/**\n * Valid Bulma visibility classes.\n * These are all the valid visibility options available in Bulma.\n * @example 'hidden', 'sr-only', 'invisible'\n */\nexport const validVisibilities = ['hidden', 'sr-only', 'invisible'] as const;\n\n/**\n * Valid Bulma flex direction classes.\n * @example 'row', 'column', 'row-reverse'\n */\nexport const validFlexDirections = [\n 'row',\n 'row-reverse',\n 'column',\n 'column-reverse',\n] as const;\n\n/**\n * Valid Bulma flex wrap classes.\n * @example 'nowrap', 'wrap', 'wrap-reverse'\n */\nexport const validFlexWraps = ['nowrap', 'wrap', 'wrap-reverse'] as const;\n\n/**\n * Valid Bulma justify-content classes.\n * @example 'flex-start', 'center', 'space-between'\n */\nexport const validJustifyContents = [\n 'flex-start',\n 'flex-end',\n 'center',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'start',\n 'end',\n 'left',\n 'right',\n] as const;\n\n/**\n * Valid Bulma align-content classes.\n * @example 'flex-start', 'center', 'stretch'\n */\nexport const validAlignContents = [\n 'flex-start',\n 'flex-end',\n 'center',\n 'space-between',\n 'space-around',\n 'space-evenly',\n 'stretch',\n] as const;\n\n/**\n * Valid Bulma align-items classes.\n * @example 'stretch', 'flex-start', 'center'\n */\nexport const validAlignItems = [\n 'stretch',\n 'flex-start',\n 'flex-end',\n 'center',\n 'baseline',\n 'start',\n 'end',\n] as const;\n\n/**\n * Valid Bulma align-self classes.\n * @example 'auto', 'flex-start', 'center'\n */\nexport const validAlignSelfs = [\n 'auto',\n 'flex-start',\n 'flex-end',\n 'center',\n 'baseline',\n 'stretch',\n] as const;\n\n/**\n * Valid Bulma flex grow and shrink values.\n * @example '0', '1', '2', '3', '4', '5'\n */\nexport const validFlexGrowShrink = ['0', '1', '2', '3', '4', '5'] as const;\n\n/**\n * Valid Bulma viewport classes for responsive design.\n * @example 'mobile', 'tablet', 'desktop'\n */\nexport const validViewports = [\n 'mobile',\n 'tablet',\n 'desktop',\n 'widescreen',\n 'fullhd',\n] as const;\n\n/**\n * Props for applying a Bulma viewport modifier to viewport-aware helper classes.\n */\nexport interface BulmaViewportProps {\n /** Viewport for responsive classes (e.g., 'mobile', 'desktop'). */\n viewport?: (typeof validViewports)[number];\n}\n\n/**\n * Props for applying Bulma display helper classes, including viewport-specific\n * display variants.\n */\nexport interface BulmaDisplayProps {\n /** Display type (e.g., 'block', 'flex'). */\n display?: (typeof validDisplays)[number] | 'none';\n /** Display type for mobile viewport (up to 768px). */\n displayMobile?: (typeof validDisplays)[number] | 'none';\n /** Display type for tablet viewport (769px - 1023px). */\n displayTablet?: (typeof validDisplays)[number] | 'none';\n /** Display type for desktop viewport (1024px - 1215px). */\n displayDesktop?: (typeof validDisplays)[number] | 'none';\n /** Display type for widescreen viewport (1216px - 1407px). */\n displayWidescreen?: (typeof validDisplays)[number] | 'none';\n /** Display type for fullhd viewport (1408px and above). */\n displayFullhd?: (typeof validDisplays)[number] | 'none';\n}\n\n/**\n * Creates the shared class-building helpers used by the Bulma helper hooks.\n *\n * Returns a mutable `classes` array along with the helper functions that push\n * (optionally prefixed, optionally viewport-suffixed) class names onto it.\n *\n * @internal\n * @param classPrefix - Optional prefix applied to all generated class names.\n * @param viewport - Optional viewport modifier for viewport-aware classes.\n */\nexport const createBulmaClassHelpers = (\n classPrefix?: string,\n viewport?: (typeof validViewports)[number]\n) => {\n const classes: string[] = [];\n\n // Helper function to add class with prefix support\n const addPrefixedClass = (className: string) => {\n classes.push(classPrefix ? `${classPrefix}${className}` : className);\n };\n\n // Helper to add class with optional viewport\n const addClass = (\n prefix: string,\n value: string | undefined,\n validValues: readonly string[],\n supportsViewport = false\n ) => {\n if (value && validValues.includes(value)) {\n const className =\n supportsViewport && viewport && validViewports.includes(viewport)\n ? `${prefix}-${value}-${viewport}`\n : `${prefix}-${value}`;\n addPrefixedClass(className);\n }\n };\n\n // Helper specifically for classes that never support viewport modifiers\n const addClassNoViewport = (\n prefix: string,\n value: string | undefined,\n validValues: readonly string[]\n ) => {\n if (value && (!validValues.length || validValues.includes(value))) {\n addPrefixedClass(`${prefix}-${value}`);\n }\n };\n\n return { classes, addPrefixedClass, addClass, addClassNoViewport };\n};\n","import { useMemo } from 'react';\nimport { classNames } from './classNames';\nimport { useConfig } from './Config';\nimport {\n createBulmaClassHelpers,\n validColors,\n validColorShades,\n} from './bulmaClassHelpers';\n\n/**\n * Props for applying Bulma text and background color helper classes.\n */\nexport interface BulmaColorProps {\n /** Text color class (e.g., 'primary', 'info'). */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color shade suffix (e.g., '00', 'invert'). */\n colorShade?: (typeof validColorShades)[number];\n /** Background color class (e.g., 'primary', 'info'). */\n backgroundColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color shade suffix (e.g., '00', 'invert'). */\n backgroundColorShade?: (typeof validColorShades)[number];\n}\n\n/**\n * A hook that generates Bulma text and background color helper classes.\n *\n * @function useColorClasses\n * @param props - Color-related Bulma helper props.\n * @returns A space-separated string of color helper classes.\n * @example\n * const colorClasses = useColorClasses({\n * color: 'primary',\n * backgroundColor: 'info',\n * });\n * // colorClasses: 'has-text-primary has-background-info'\n */\nexport const useColorClasses = (props: BulmaColorProps): string => {\n const { classPrefix } = useConfig();\n\n const { color, colorShade, backgroundColor, backgroundColorShade } = props;\n\n return useMemo(() => {\n const { classes, addPrefixedClass, addClass } =\n createBulmaClassHelpers(classPrefix);\n\n // Color handling\n const addColorClass = (\n prefix: 'has-text' | 'has-background',\n value: string | undefined,\n shade: (typeof validColorShades)[number] | undefined\n ) => {\n if (!value || ![...validColors, 'inherit', 'current'].includes(value))\n return;\n if (shade && validColorShades.includes(shade)) {\n // Color shades never support viewport modifiers in Bulma\n const className = `${prefix}-${value}-${shade}`;\n addPrefixedClass(className);\n } else {\n // Color classes never support viewport modifiers in Bulma\n addClass(\n prefix,\n value,\n [...validColors, 'inherit', 'current'],\n false // supportsViewport = false for all color classes\n );\n }\n };\n\n // Color\n addColorClass('has-text', color, colorShade);\n addColorClass('has-background', backgroundColor, backgroundColorShade);\n\n return classNames(classes);\n }, [classPrefix, color, colorShade, backgroundColor, backgroundColorShade]);\n};\n","import { useMemo } from 'react';\nimport { classNames } from './classNames';\nimport { useConfig } from './Config';\nimport { createBulmaClassHelpers, validSizes } from './bulmaClassHelpers';\n\n/**\n * Props for applying Bulma margin and padding helper classes.\n */\nexport interface BulmaSpacingProps {\n /** Margin (e.g., '0', '1'). */\n m?: (typeof validSizes)[number];\n /** Margin top. */\n mt?: (typeof validSizes)[number];\n /** Margin right. */\n mr?: (typeof validSizes)[number];\n /** Margin bottom. */\n mb?: (typeof validSizes)[number];\n /** Margin left. */\n ml?: (typeof validSizes)[number];\n /** Margin horizontal (left and right). */\n mx?: (typeof validSizes)[number];\n /** Margin vertical (top and bottom). */\n my?: (typeof validSizes)[number];\n /** Padding (e.g., '0', '1'). */\n p?: (typeof validSizes)[number];\n /** Padding top. */\n pt?: (typeof validSizes)[number];\n /** Padding right. */\n pr?: (typeof validSizes)[number];\n /** Padding bottom. */\n pb?: (typeof validSizes)[number];\n /** Padding left. */\n pl?: (typeof validSizes)[number];\n /** Padding horizontal (left and right). */\n px?: (typeof validSizes)[number];\n /** Padding vertical (top and bottom). */\n py?: (typeof validSizes)[number];\n}\n\n/**\n * A hook that generates Bulma margin and padding helper classes.\n *\n * @function useSpacingClasses\n * @param props - Spacing-related Bulma helper props.\n * @returns A space-separated string of spacing helper classes.\n * @example\n * const spacingClasses = useSpacingClasses({ m: '2', px: '4' });\n * // spacingClasses: 'm-2 px-4'\n */\nexport const useSpacingClasses = (props: BulmaSpacingProps): string => {\n const { classPrefix } = useConfig();\n\n const { m, mt, mr, mb, ml, mx, my, p, pt, pr, pb, pl, px, py } = props;\n\n return useMemo(() => {\n const { classes, addClassNoViewport } =\n createBulmaClassHelpers(classPrefix);\n\n // Spacing (no viewport support in Bulma)\n addClassNoViewport('m', m, validSizes);\n addClassNoViewport('mt', mt, validSizes);\n addClassNoViewport('mr', mr, validSizes);\n addClassNoViewport('mb', mb, validSizes);\n addClassNoViewport('ml', ml, validSizes);\n addClassNoViewport('mx', mx, validSizes);\n addClassNoViewport('my', my, validSizes);\n addClassNoViewport('p', p, validSizes);\n addClassNoViewport('pt', pt, validSizes);\n addClassNoViewport('pr', pr, validSizes);\n addClassNoViewport('pb', pb, validSizes);\n addClassNoViewport('pl', pl, validSizes);\n addClassNoViewport('px', px, validSizes);\n addClassNoViewport('py', py, validSizes);\n\n return classNames(classes);\n }, [classPrefix, m, mt, mr, mb, ml, mx, my, p, pt, pr, pb, pl, px, py]);\n};\n","import { useMemo } from 'react';\nimport { classNames } from './classNames';\nimport { useConfig } from './Config';\nimport {\n createBulmaClassHelpers,\n validTextSizes,\n validAlignments,\n validTextTransforms,\n validTextWeights,\n validFontFamilies,\n BulmaViewportProps,\n} from './bulmaClassHelpers';\n\n/**\n * Props for applying Bulma typography helper classes.\n */\nexport interface BulmaTypographyProps extends BulmaViewportProps {\n /** Text size (e.g., '1', '2'). */\n textSize?: (typeof validTextSizes)[number];\n /** Text alignment (e.g., 'centered', 'left'). */\n textAlign?: (typeof validAlignments)[number];\n /** Text transformation (e.g., 'uppercase', 'italic'). */\n textTransform?: (typeof validTextTransforms)[number];\n /** Text weight (e.g., 'light', 'bold'). */\n textWeight?: (typeof validTextWeights)[number];\n /** Font family (e.g., 'sans-serif', 'code'). */\n fontFamily?: (typeof validFontFamilies)[number];\n /** Text size for mobile viewport (up to 768px). */\n textSizeMobile?: (typeof validTextSizes)[number];\n /** Text size for tablet viewport (769px - 1023px). */\n textSizeTablet?: (typeof validTextSizes)[number];\n /** Text size for desktop viewport (1024px - 1215px). */\n textSizeDesktop?: (typeof validTextSizes)[number];\n /** Text size for widescreen viewport (1216px - 1407px). */\n textSizeWidescreen?: (typeof validTextSizes)[number];\n /** Text size for fullhd viewport (1408px and above). */\n textSizeFullhd?: (typeof validTextSizes)[number];\n /** Text alignment for mobile viewport (up to 768px). */\n textAlignMobile?: (typeof validAlignments)[number];\n /** Text alignment for tablet viewport (769px - 1023px). */\n textAlignTablet?: (typeof validAlignments)[number];\n /** Text alignment for desktop viewport (1024px - 1215px). */\n textAlignDesktop?: (typeof validAlignments)[number];\n /** Text alignment for widescreen viewport (1216px - 1407px). */\n textAlignWidescreen?: (typeof validAlignments)[number];\n /** Text alignment for fullhd viewport (1408px and above). */\n textAlignFullhd?: (typeof validAlignments)[number];\n}\n\n/**\n * A hook that generates Bulma typography helper classes, including\n * viewport-specific text size and alignment variants.\n *\n * @function useTypographyClasses\n * @param props - Typography-related Bulma helper props.\n * @returns A space-separated string of typography helper classes.\n * @example\n * const typographyClasses = useTypographyClasses({\n * textSize: '3',\n * textWeight: 'bold',\n * });\n * // typographyClasses: 'is-size-3 has-text-weight-bold'\n */\nexport const useTypographyClasses = (props: BulmaTypographyProps): string => {\n const { classPrefix } = useConfig();\n\n const {\n textSize,\n textAlign,\n textTransform,\n textWeight,\n fontFamily,\n viewport,\n textSizeMobile,\n textSizeTablet,\n textSizeDesktop,\n textSizeWidescreen,\n textSizeFullhd,\n textAlignMobile,\n textAlignTablet,\n textAlignDesktop,\n textAlignWidescreen,\n textAlignFullhd,\n } = props;\n\n return useMemo(() => {\n const { classes, addPrefixedClass, addClass, addClassNoViewport } =\n createBulmaClassHelpers(classPrefix, viewport);\n\n // Typography\n addClass('is-size', textSize, validTextSizes, true); // supports viewport\n addClass('has-text', textAlign, validAlignments, true); // supports viewport\n addClassNoViewport('is', textTransform, validTextTransforms); // no viewport support\n addClassNoViewport('has-text-weight', textWeight, validTextWeights); // no viewport support\n addClassNoViewport('is-family', fontFamily, validFontFamilies); // no viewport support\n\n // Viewport-specific text sizes\n const addViewportSpecificTextSizeClass = (\n value: string | undefined,\n viewportSuffix: string\n ) => {\n if (value && (validTextSizes as readonly string[]).includes(value)) {\n addPrefixedClass(`is-size-${value}${viewportSuffix}`);\n }\n };\n\n addViewportSpecificTextSizeClass(textSizeMobile, '-mobile');\n addViewportSpecificTextSizeClass(textSizeTablet, '-tablet');\n addViewportSpecificTextSizeClass(textSizeDesktop, '-desktop');\n addViewportSpecificTextSizeClass(textSizeWidescreen, '-widescreen');\n addViewportSpecificTextSizeClass(textSizeFullhd, '-fullhd');\n\n // Viewport-specific text alignment\n const addViewportSpecificTextAlignClass = (\n value: string | undefined,\n viewportSuffix: string\n ) => {\n if (value && (validAlignments as readonly string[]).includes(value)) {\n addPrefixedClass(`has-text-${value}${viewportSuffix}`);\n }\n };\n\n addViewportSpecificTextAlignClass(textAlignMobile, '-mobile');\n addViewportSpecificTextAlignClass(textAlignTablet, '-tablet');\n addViewportSpecificTextAlignClass(textAlignDesktop, '-desktop');\n addViewportSpecificTextAlignClass(textAlignWidescreen, '-widescreen');\n addViewportSpecificTextAlignClass(textAlignFullhd, '-fullhd');\n\n return classNames(classes);\n }, [\n classPrefix,\n textSize,\n textAlign,\n textTransform,\n textWeight,\n fontFamily,\n viewport,\n textSizeMobile,\n textSizeTablet,\n textSizeDesktop,\n textSizeWidescreen,\n textSizeFullhd,\n textAlignMobile,\n textAlignTablet,\n textAlignDesktop,\n textAlignWidescreen,\n textAlignFullhd,\n ]);\n};\n","import { useMemo } from 'react';\nimport { classNames } from './classNames';\nimport { useConfig } from './Config';\nimport {\n createBulmaClassHelpers,\n validDisplays,\n validVisibilities,\n validViewports,\n BulmaViewportProps,\n BulmaDisplayProps,\n} from './bulmaClassHelpers';\n\n/**\n * Props for applying Bulma visibility and display helper classes.\n */\nexport interface BulmaVisibilityProps\n extends BulmaViewportProps, BulmaDisplayProps {\n /** Visibility (e.g., 'hidden', 'sr-only'). */\n visibility?: (typeof validVisibilities)[number];\n /** Visibility for mobile viewport (up to 768px). */\n visibilityMobile?: (typeof validVisibilities)[number];\n /** Visibility for tablet viewport (769px - 1023px). */\n visibilityTablet?: (typeof validVisibilities)[number];\n /** Visibility for desktop viewport (1024px - 1215px). */\n visibilityDesktop?: (typeof validVisibilities)[number];\n /** Visibility for widescreen viewport (1216px - 1407px). */\n visibilityWidescreen?: (typeof validVisibilities)[number];\n /** Visibility for fullhd viewport (1408px and above). */\n visibilityFullhd?: (typeof validVisibilities)[number];\n}\n\n/**\n * A hook that generates Bulma visibility and display helper classes. This hook\n * owns all display class emission, including viewport-specific display props,\n * the legacy display/viewport combination, and `display: 'none'` mapping to\n * `is-hidden`.\n *\n * @function useVisibilityClasses\n * @param props - Visibility- and display-related Bulma helper props.\n * @returns A space-separated string of visibility and display helper classes.\n * @example\n * const visibilityClasses = useVisibilityClasses({\n * display: 'flex',\n * visibilityMobile: 'hidden',\n * });\n * // visibilityClasses: 'is-hidden-mobile is-flex'\n */\nexport const useVisibilityClasses = (props: BulmaVisibilityProps): string => {\n const { classPrefix } = useConfig();\n\n const {\n visibility,\n visibilityMobile,\n visibilityTablet,\n visibilityDesktop,\n visibilityWidescreen,\n visibilityFullhd,\n display,\n displayMobile,\n displayTablet,\n displayDesktop,\n displayWidescreen,\n displayFullhd,\n viewport,\n } = props;\n\n return useMemo(() => {\n const { classes, addPrefixedClass, addClass } = createBulmaClassHelpers(\n classPrefix,\n viewport\n );\n\n // Viewport-specific visibility\n const addViewportSpecificVisibilityClass = (\n value: string | undefined,\n viewportSuffix: string\n ) => {\n if (value === 'hidden') {\n addPrefixedClass(`is-hidden${viewportSuffix}`);\n } else if (value === 'sr-only') {\n addPrefixedClass(`is-sr-only${viewportSuffix}`);\n } else if (value === 'invisible') {\n addPrefixedClass(`is-invisible${viewportSuffix}`);\n }\n };\n\n addViewportSpecificVisibilityClass(visibilityMobile, '-mobile');\n addViewportSpecificVisibilityClass(visibilityTablet, '-tablet');\n addViewportSpecificVisibilityClass(visibilityDesktop, '-desktop');\n addViewportSpecificVisibilityClass(visibilityWidescreen, '-widescreen');\n addViewportSpecificVisibilityClass(visibilityFullhd, '-fullhd');\n\n // Visibility and Display\n // Handle viewport-specific display properties first (they take precedence)\n const addDisplayClass = (\n displayValue: string | undefined,\n viewportSuffix: string\n ) => {\n if (displayValue) {\n if (displayValue === 'none') {\n addPrefixedClass(`is-hidden${viewportSuffix}`);\n } else if (\n (validDisplays as readonly string[]).includes(displayValue)\n ) {\n addPrefixedClass(`is-${displayValue}${viewportSuffix}`);\n }\n }\n };\n\n // Apply viewport-specific display classes\n addDisplayClass(displayMobile, '-mobile');\n addDisplayClass(displayTablet, '-tablet');\n addDisplayClass(displayDesktop, '-desktop');\n addDisplayClass(displayWidescreen, '-widescreen');\n addDisplayClass(displayFullhd, '-fullhd');\n\n // Apply legacy display/viewport combination if no viewport-specific display props are set\n const hasViewportSpecificDisplay = !!(\n displayMobile ||\n displayTablet ||\n displayDesktop ||\n displayWidescreen ||\n displayFullhd\n );\n\n if (!hasViewportSpecificDisplay) {\n // Legacy display handling\n if (display === 'none') {\n if (viewport && validViewports.includes(viewport)) {\n addPrefixedClass(`is-hidden-${viewport}`);\n } else {\n addPrefixedClass('is-hidden');\n }\n } else {\n addClass('is', display, [...validDisplays], true); // display supports viewport\n }\n }\n\n // Visibility (always applied regardless of display settings)\n if (visibility) {\n if (\n (visibility === 'hidden' || visibility === 'invisible') &&\n viewport &&\n validViewports.includes(viewport)\n ) {\n addPrefixedClass(`is-${visibility}-${viewport}`);\n } else if (validVisibilities.includes(visibility)) {\n addPrefixedClass(`is-${visibility}`);\n }\n }\n\n return classNames(classes);\n }, [\n classPrefix,\n visibility,\n visibilityMobile,\n visibilityTablet,\n visibilityDesktop,\n visibilityWidescreen,\n visibilityFullhd,\n display,\n displayMobile,\n displayTablet,\n displayDesktop,\n displayWidescreen,\n displayFullhd,\n viewport,\n ]);\n};\n","import { useMemo } from 'react';\nimport { classNames } from './classNames';\nimport { useConfig } from './Config';\nimport {\n createBulmaClassHelpers,\n validFlexDirections,\n validFlexWraps,\n validJustifyContents,\n validAlignContents,\n validAlignItems,\n validAlignSelfs,\n validFlexGrowShrink,\n BulmaDisplayProps,\n} from './bulmaClassHelpers';\n\n/**\n * Props for applying Bulma flexbox helper classes. The display props are read\n * only to gate the flex container helpers; this hook never emits display\n * classes itself.\n */\nexport interface BulmaFlexboxProps extends BulmaDisplayProps {\n /** Flex direction (e.g., 'row', 'column'). */\n flexDirection?: (typeof validFlexDirections)[number];\n /** Flex wrap (e.g., 'wrap', 'nowrap'). */\n flexWrap?: (typeof validFlexWraps)[number];\n /** Justify content (e.g., 'center', 'space-between'). */\n justifyContent?: (typeof validJustifyContents)[number];\n /** Align content (e.g., 'center', 'stretch'). */\n alignContent?: (typeof validAlignContents)[number];\n /** Align items (e.g., 'center', 'flex-start'). */\n alignItems?: (typeof validAlignItems)[number];\n /** Align self (e.g., 'auto', 'center'). */\n alignSelf?: (typeof validAlignSelfs)[number];\n /** Flex grow value (e.g., '0', '1', '2', '3', '4', '5'). */\n flexGrow?: (typeof validFlexGrowShrink)[number];\n /** Flex shrink value (e.g., '0', '1', '2', '3', '4', '5'). */\n flexShrink?: (typeof validFlexGrowShrink)[number];\n}\n\n/**\n * A hook that generates Bulma flexbox helper classes. Flex container helpers\n * (direction, wrap, justify/align content, align items) are only emitted when\n * one of the display props indicates a flex display; flex item helpers\n * (align self, grow, shrink) are always emitted.\n *\n * Note: this hook reads the display props purely as a gate and never emits\n * display classes — `is-flex` and friends come from useVisibilityClasses (or\n * the useBulmaClasses aggregate).\n *\n * @function useFlexboxClasses\n * @param props - Flexbox-related Bulma helper props.\n * @returns A space-separated string of flexbox helper classes.\n * @example\n * const flexboxClasses = useFlexboxClasses({\n * display: 'flex', // gates the container helpers, but emits no 'is-flex'\n * justifyContent: 'center',\n * });\n * // flexboxClasses: 'is-justify-content-center'\n * // ('is-flex' itself comes from useVisibilityClasses/useBulmaClasses)\n */\nexport const useFlexboxClasses = (props: BulmaFlexboxProps): string => {\n const { classPrefix } = useConfig();\n\n const {\n flexDirection,\n flexWrap,\n justifyContent,\n alignContent,\n alignItems,\n alignSelf,\n flexGrow,\n flexShrink,\n display,\n displayMobile,\n displayTablet,\n displayDesktop,\n displayWidescreen,\n displayFullhd,\n } = props;\n\n return useMemo(() => {\n const { classes, addClassNoViewport } =\n createBulmaClassHelpers(classPrefix);\n\n // Flexbox\n const hasFlexDisplay =\n display === 'flex' ||\n display === 'inline-flex' ||\n displayMobile === 'flex' ||\n displayMobile === 'inline-flex' ||\n displayTablet === 'flex' ||\n displayTablet === 'inline-flex' ||\n displayDesktop === 'flex' ||\n displayDesktop === 'inline-flex' ||\n displayWidescreen === 'flex' ||\n displayWidescreen === 'inline-flex' ||\n displayFullhd === 'flex' ||\n displayFullhd === 'inline-flex';\n\n if (hasFlexDisplay) {\n // Flexbox container properties do not support viewport modifiers in Bulma\n addClassNoViewport(\n 'is-flex-direction',\n flexDirection,\n validFlexDirections\n );\n addClassNoViewport('is-flex-wrap', flexWrap, validFlexWraps);\n addClassNoViewport(\n 'is-justify-content',\n justifyContent,\n validJustifyContents\n );\n addClassNoViewport('is-align-content', alignContent, validAlignContents);\n addClassNoViewport('is-align-items', alignItems, validAlignItems);\n }\n\n // Flex item properties (can be applied to any element that is a flex item)\n // These don't require the element itself to have display: flex\n addClassNoViewport('is-align-self', alignSelf, validAlignSelfs);\n addClassNoViewport('is-flex-grow', flexGrow, validFlexGrowShrink);\n addClassNoViewport('is-flex-shrink', flexShrink, validFlexGrowShrink);\n\n return classNames(classes);\n }, [\n classPrefix,\n flexDirection,\n flexWrap,\n justifyContent,\n alignContent,\n alignItems,\n alignSelf,\n flexGrow,\n flexShrink,\n display,\n displayMobile,\n displayTablet,\n displayDesktop,\n displayWidescreen,\n displayFullhd,\n ]);\n};\n","import { useMemo } from 'react';\nimport { classNames } from './classNames';\nimport { useConfig } from './Config';\nimport { createBulmaClassHelpers } from './bulmaClassHelpers';\n\n/**\n * Props for applying miscellaneous Bulma helper classes.\n */\nexport interface BulmaOtherProps {\n /** Float direction (e.g., 'left', 'right'). */\n float?: 'left' | 'right';\n /** Overflow behavior (e.g., 'clipped'). */\n overflow?: 'clipped';\n /** Applies overlay styling if true. */\n overlay?: boolean;\n /** Interaction behavior (e.g., 'unselectable', 'clickable'). */\n interaction?: 'unselectable' | 'clickable';\n /** Cursor style (e.g., 'pointer', 'help'). */\n cursor?: 'pointer' | 'help';\n /** Border radius style (e.g., 'radiusless'). */\n radius?: 'radiusless';\n /** Shadow style (e.g., 'shadowless'). */\n shadow?: 'shadowless';\n /** Responsive behavior (e.g., 'mobile', 'narrow'). */\n responsive?: 'mobile' | 'narrow';\n /** Add Bulma skeleton class if true. */\n skeleton?: boolean;\n /** Applies clearfix to fix floating children if true. */\n clearfix?: boolean;\n /** Applies position: relative if true. */\n relative?: boolean;\n /** Applies height: 100% if true. */\n fullHeight?: boolean;\n}\n\n/**\n * A hook that generates miscellaneous Bulma helper classes (float, overflow,\n * overlay, interaction, cursor, radius, shadow, responsive, skeleton,\n * clearfix, relative, and full height).\n *\n * @function useOtherClasses\n * @param props - Miscellaneous Bulma helper props.\n * @returns A space-separated string of helper classes.\n * @example\n * const otherClasses = useOtherClasses({ float: 'left', skeleton: true });\n * // otherClasses: 'is-pulled-left is-skeleton'\n */\nexport const useOtherClasses = (props: BulmaOtherProps): string => {\n const { classPrefix } = useConfig();\n\n const {\n float,\n overflow,\n overlay,\n interaction,\n cursor,\n radius,\n shadow,\n responsive,\n skeleton,\n clearfix,\n relative,\n fullHeight,\n } = props;\n\n return useMemo(() => {\n const { classes, addPrefixedClass, addClassNoViewport } =\n createBulmaClassHelpers(classPrefix);\n\n // Other Helpers (no viewport support)\n if (float) {\n addClassNoViewport('is-pulled', float, ['left', 'right']);\n }\n if (overflow) {\n addClassNoViewport('is', overflow, ['clipped']);\n }\n if (overlay) {\n addPrefixedClass('is-overlay');\n }\n if (interaction) {\n addClassNoViewport('is', interaction, ['unselectable', 'clickable']);\n }\n if (cursor) {\n if (cursor === 'pointer') {\n addPrefixedClass('is-clickable');\n } else if (cursor === 'help') {\n addPrefixedClass('is-cursor-help');\n }\n }\n if (radius) {\n addClassNoViewport('is', radius, ['radiusless']);\n }\n if (shadow) {\n addClassNoViewport('is', shadow, ['shadowless']);\n }\n if (responsive) {\n addClassNoViewport('is', responsive, ['mobile', 'narrow']);\n }\n\n // Bulma Skeleton Helper\n if (skeleton) {\n addPrefixedClass('is-skeleton');\n }\n\n // Clearfix Helper\n if (clearfix) {\n addPrefixedClass('is-clearfix');\n }\n\n // Position Relative Helper\n if (relative) {\n addPrefixedClass('is-relative');\n }\n\n // Full Height Helper\n if (fullHeight) {\n addPrefixedClass('is-full-height');\n }\n\n return classNames(classes);\n }, [\n classPrefix,\n float,\n overflow,\n overlay,\n interaction,\n cursor,\n radius,\n shadow,\n responsive,\n skeleton,\n clearfix,\n relative,\n fullHeight,\n ]);\n};\n","import { useMemo } from 'react';\nimport { classNames } from '../helpers/classNames';\nimport { BulmaDisplayProps, BulmaViewportProps } from './bulmaClassHelpers';\nimport { useColorClasses, BulmaColorProps } from './useColorClasses';\nimport { useSpacingClasses, BulmaSpacingProps } from './useSpacingClasses';\nimport {\n useTypographyClasses,\n BulmaTypographyProps,\n} from './useTypographyClasses';\nimport {\n useVisibilityClasses,\n BulmaVisibilityProps,\n} from './useVisibilityClasses';\nimport { useFlexboxClasses, BulmaFlexboxProps } from './useFlexboxClasses';\nimport { useOtherClasses, BulmaOtherProps } from './useOtherClasses';\n\n/**\n * Props for applying Bulma helper classes to components.\n */\nexport interface BulmaClassesProps\n extends\n BulmaColorProps,\n BulmaSpacingProps,\n BulmaTypographyProps,\n BulmaVisibilityProps,\n BulmaFlexboxProps,\n BulmaOtherProps {}\n\n/**\n * A hook that generates Bulma helper classes from props and separates unhandled props.\n *\n * Composed from the per-concern mini hooks (useColorClasses, useSpacingClasses,\n * useTypographyClasses, useVisibilityClasses, useFlexboxClasses, and\n * useOtherClasses), which can also be used individually.\n *\n * @function useBulmaClasses\n * @param props - Combination of BulmaClassesProps and additional props.\n * @returns An object containing the Bulma helper classes and unhandled props.\n * @example\n * const { bulmaHelperClasses, rest } = useBulmaClasses({\n * color: 'primary',\n * textSize: '3',\n * className: 'custom-class'\n * });\n * // bulmaHelperClasses: 'has-text-primary is-size-3'\n * // rest: { className: 'custom-class' }\n */\nexport const useBulmaClasses = <T extends Record<string, unknown>>(\n props: BulmaClassesProps & T\n): { bulmaHelperClasses: string; rest: Omit<T, keyof BulmaClassesProps> } => {\n const {\n color,\n backgroundColor,\n colorShade,\n backgroundColorShade,\n m,\n mt,\n mr,\n mb,\n ml,\n mx,\n my,\n p,\n pt,\n pr,\n pb,\n pl,\n px,\n py,\n textSize,\n textAlign,\n textTransform,\n textWeight,\n fontFamily,\n display,\n visibility,\n flexDirection,\n flexWrap,\n justifyContent,\n alignContent,\n alignItems,\n alignSelf,\n flexGrow,\n flexShrink,\n float,\n overflow,\n overlay,\n interaction,\n cursor,\n radius,\n shadow,\n responsive,\n viewport,\n displayMobile,\n displayTablet,\n displayDesktop,\n displayWidescreen,\n displayFullhd,\n textSizeMobile,\n textSizeTablet,\n textSizeDesktop,\n textSizeWidescreen,\n textSizeFullhd,\n textAlignMobile,\n textAlignTablet,\n textAlignDesktop,\n textAlignWidescreen,\n textAlignFullhd,\n visibilityMobile,\n visibilityTablet,\n visibilityDesktop,\n visibilityWidescreen,\n visibilityFullhd,\n skeleton,\n clearfix,\n relative,\n fullHeight,\n ...rest\n } = props;\n\n const colorClasses = useColorClasses({\n color,\n colorShade,\n backgroundColor,\n backgroundColorShade,\n });\n\n const spacingClasses = useSpacingClasses({\n m,\n mt,\n mr,\n mb,\n ml,\n mx,\n my,\n p,\n pt,\n pr,\n pb,\n pl,\n px,\n py,\n });\n\n const typographyClasses = useTypographyClasses({\n textSize,\n textAlign,\n textTransform,\n textWeight,\n fontFamily,\n viewport,\n textSizeMobile,\n textSizeTablet,\n textSizeDesktop,\n textSizeWidescreen,\n textSizeFullhd,\n textAlignMobile,\n textAlignTablet,\n textAlignDesktop,\n textAlignWidescreen,\n textAlignFullhd,\n });\n\n const visibilityClasses = useVisibilityClasses({\n visibility,\n visibilityMobile,\n visibilityTablet,\n visibilityDesktop,\n visibilityWidescreen,\n visibilityFullhd,\n display,\n displayMobile,\n displayTablet,\n displayDesktop,\n displayWidescreen,\n displayFullhd,\n viewport,\n });\n\n const flexboxClasses = useFlexboxClasses({\n flexDirection,\n flexWrap,\n justifyContent,\n alignContent,\n alignItems,\n alignSelf,\n flexGrow,\n flexShrink,\n display,\n displayMobile,\n displayTablet,\n displayDesktop,\n displayWidescreen,\n displayFullhd,\n });\n\n const otherClasses = useOtherClasses({\n float,\n overflow,\n overlay,\n interaction,\n cursor,\n radius,\n shadow,\n responsive,\n skeleton,\n clearfix,\n relative,\n fullHeight,\n });\n\n const bulmaHelperClasses = useMemo(\n () =>\n classNames(\n colorClasses,\n spacingClasses,\n typographyClasses,\n visibilityClasses,\n flexboxClasses,\n otherClasses\n ),\n [\n colorClasses,\n spacingClasses,\n typographyClasses,\n visibilityClasses,\n flexboxClasses,\n otherClasses,\n ]\n );\n\n return { bulmaHelperClasses, rest };\n};\n\nexport {\n validColors,\n validColorShades,\n validSizes,\n validTextSizes,\n validAlignments,\n validTextTransforms,\n validTextWeights,\n validFontFamilies,\n validDisplays,\n validVisibilities,\n validFlexDirections,\n validFlexWraps,\n validJustifyContents,\n validAlignContents,\n validAlignItems,\n validAlignSelfs,\n validFlexGrowShrink,\n validViewports,\n} from './bulmaClassHelpers';\nexport type { BulmaViewportProps, BulmaDisplayProps };\nexport * from './useColorClasses';\nexport * from './useSpacingClasses';\nexport * from './useTypographyClasses';\nexport * from './useVisibilityClasses';\nexport * from './useFlexboxClasses';\nexport * from './useOtherClasses';\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Possible values for Bulma column size.\n */\nexport type BulmaColumnSize =\n | number\n | 'full'\n | 'half'\n | 'one-third'\n | 'two-thirds'\n | 'one-quarter'\n | 'three-quarters'\n | 'one-fifth'\n | 'two-fifths'\n | 'three-fifths'\n | 'four-fifths';\n\n/**\n * Props for the Column component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the column.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n *\n * @property {BulmaColumnSize} [size] - Column size.\n * @property {BulmaColumnSize} [sizeMobile] - Mobile column size.\n * @property {BulmaColumnSize} [sizeTablet] - Tablet column size.\n * @property {BulmaColumnSize} [sizeDesktop] - Desktop column size.\n * @property {BulmaColumnSize} [sizeWidescreen] - Widescreen column size.\n * @property {BulmaColumnSize} [sizeFullhd] - FullHD column size.\n *\n * @property {BulmaColumnSize} [offset] - Column offset.\n * @property {BulmaColumnSize} [offsetMobile] - Mobile column offset.\n * @property {BulmaColumnSize} [offsetTablet] - Tablet column offset.\n * @property {BulmaColumnSize} [offsetDesktop] - Desktop column offset.\n * @property {BulmaColumnSize} [offsetWidescreen] - Widescreen column offset.\n * @property {BulmaColumnSize} [offsetFullhd] - FullHD column offset.\n *\n * @property {boolean} [isNarrow] - The column is narrow.\n * @property {boolean} [isNarrowMobile] - The column is narrow on mobile.\n * @property {boolean} [isNarrowTablet] - The column is narrow on tablet.\n * @property {boolean} [isNarrowTouch] - The column is narrow on touch devices.\n * @property {boolean} [isNarrowDesktop] - The column is narrow on desktop.\n * @property {boolean} [isNarrowWidescreen] - The column is narrow on widescreen.\n * @property {boolean} [isNarrowFullhd] - The column is narrow on fullhd.\n *\n * @property {React.ReactNode} [children] - Children to render inside the column.\n */\nexport interface ColumnProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n\n size?: BulmaColumnSize;\n sizeMobile?: BulmaColumnSize;\n sizeTablet?: BulmaColumnSize;\n sizeDesktop?: BulmaColumnSize;\n sizeWidescreen?: BulmaColumnSize;\n sizeFullhd?: BulmaColumnSize;\n\n offset?: BulmaColumnSize;\n offsetMobile?: BulmaColumnSize;\n offsetTablet?: BulmaColumnSize;\n offsetDesktop?: BulmaColumnSize;\n offsetWidescreen?: BulmaColumnSize;\n offsetFullhd?: BulmaColumnSize;\n\n isNarrow?: boolean;\n isNarrowMobile?: boolean;\n isNarrowTablet?: boolean;\n isNarrowTouch?: boolean;\n isNarrowDesktop?: boolean;\n isNarrowWidescreen?: boolean;\n isNarrowFullhd?: boolean;\n\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Column component for responsive grid layouts.\n *\n * @function\n * @param {ColumnProps} props - Props for the Column component.\n * @returns {JSX.Element} The rendered column.\n * @see {@link https://bulma.io/documentation/columns/ | Bulma Columns documentation}\n */\nexport const Column: React.FC<ColumnProps> = ({\n className,\n textColor,\n color: _fieldColor,\n bgColor,\n size,\n sizeMobile,\n sizeTablet,\n sizeDesktop,\n sizeWidescreen,\n sizeFullhd,\n offset,\n offsetMobile,\n offsetTablet,\n offsetDesktop,\n offsetWidescreen,\n offsetFullhd,\n isNarrow,\n isNarrowMobile,\n isNarrowTablet,\n isNarrowTouch,\n isNarrowDesktop,\n isNarrowWidescreen,\n isNarrowFullhd,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('column');\n\n // Build column-specific classes with prefixes\n const columnSpecificClasses = usePrefixedClassNames('', {\n [`is-${size}`]: size !== undefined && size !== null,\n [`is-${sizeMobile}-mobile`]:\n sizeMobile !== undefined && sizeMobile !== null,\n [`is-${sizeTablet}-tablet`]:\n sizeTablet !== undefined && sizeTablet !== null,\n [`is-${sizeDesktop}-desktop`]:\n sizeDesktop !== undefined && sizeDesktop !== null,\n [`is-${sizeWidescreen}-widescreen`]:\n sizeWidescreen !== undefined && sizeWidescreen !== null,\n [`is-${sizeFullhd}-fullhd`]:\n sizeFullhd !== undefined && sizeFullhd !== null,\n [`is-offset-${offset}`]: offset !== undefined && offset !== null,\n [`is-offset-${offsetMobile}-mobile`]:\n offsetMobile !== undefined && offsetMobile !== null,\n [`is-offset-${offsetTablet}-tablet`]:\n offsetTablet !== undefined && offsetTablet !== null,\n [`is-offset-${offsetDesktop}-desktop`]:\n offsetDesktop !== undefined && offsetDesktop !== null,\n [`is-offset-${offsetWidescreen}-widescreen`]:\n offsetWidescreen !== undefined && offsetWidescreen !== null,\n [`is-offset-${offsetFullhd}-fullhd`]:\n offsetFullhd !== undefined && offsetFullhd !== null,\n 'is-narrow': !!isNarrow,\n 'is-narrow-mobile': !!isNarrowMobile,\n 'is-narrow-tablet': !!isNarrowTablet,\n 'is-narrow-touch': !!isNarrowTouch,\n 'is-narrow-desktop': !!isNarrowDesktop,\n 'is-narrow-widescreen': !!isNarrowWidescreen,\n 'is-narrow-fullhd': !!isNarrowFullhd,\n });\n\n const columnClasses = classNames(\n mainClass,\n columnSpecificClasses,\n className,\n bulmaHelperClasses\n );\n\n return (\n <div className={columnClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Possible values for the Bulma columns gap size.\n */\nexport type BulmaGapSize =\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | '0'\n | '1'\n | '2'\n | '3'\n | '4'\n | '5'\n | '6'\n | '7'\n | '8';\n\n/**\n * Props for the Columns component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for columns.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {boolean} [isCentered] - Center the columns container.\n * @property {boolean} [isGapless] - Remove all column gaps.\n * @property {boolean} [isMultiline] - Allow columns to wrap to multiple lines.\n * @property {boolean} [isVCentered] - Vertically center columns.\n * @property {boolean} [isMobile] - Only apply columns styles on mobile.\n * @property {boolean} [isDesktop] - Only apply columns styles on desktop.\n * @property {BulmaGapSize} [gapSize] - Gap size for all breakpoints.\n * @property {BulmaGapSize} [gapSizeMobile] - Gap size for mobile.\n * @property {BulmaGapSize} [gapSizeTablet] - Gap size for tablet.\n * @property {BulmaGapSize} [gapSizeDesktop] - Gap size for desktop.\n * @property {BulmaGapSize} [gapSizeWidescreen] - Gap size for widescreen.\n * @property {BulmaGapSize} [gapSizeFullhd] - Gap size for fullhd.\n * @property {React.ReactNode} [children] - Columns to render within the container.\n */\nexport interface ColumnsProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n isCentered?: boolean;\n isGapless?: boolean;\n isMultiline?: boolean;\n isVCentered?: boolean;\n isMobile?: boolean;\n isDesktop?: boolean;\n\n gapSize?: BulmaGapSize;\n gapSizeMobile?: BulmaGapSize;\n gapSizeTablet?: BulmaGapSize;\n gapSizeDesktop?: BulmaGapSize;\n gapSizeWidescreen?: BulmaGapSize;\n gapSizeFullhd?: BulmaGapSize;\n\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Columns container for flexible, responsive layouts.\n *\n * @function\n * @param {ColumnsProps} props - Props for the Columns component.\n * @returns {JSX.Element} The rendered columns container.\n * @see {@link https://bulma.io/documentation/columns/ | Bulma Columns documentation}\n */\nexport const Columns: React.FC<ColumnsProps> = ({\n className,\n textColor,\n color: _fieldColor,\n bgColor,\n isCentered,\n isGapless,\n isMultiline,\n isVCentered,\n isMobile,\n isDesktop,\n gapSize,\n gapSizeMobile,\n gapSizeTablet,\n gapSizeDesktop,\n gapSizeWidescreen,\n gapSizeFullhd,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('columns');\n\n // Build gap classes with prefixes\n const gapClasses = usePrefixedClassNames('', {\n [`is-${gapSize}`]: gapSize !== undefined && gapSize !== null,\n [`is-${gapSizeMobile}-mobile`]:\n gapSizeMobile !== undefined && gapSizeMobile !== null,\n [`is-${gapSizeTablet}-tablet`]:\n gapSizeTablet !== undefined && gapSizeTablet !== null,\n [`is-${gapSizeDesktop}-desktop`]:\n gapSizeDesktop !== undefined && gapSizeDesktop !== null,\n [`is-${gapSizeWidescreen}-widescreen`]:\n gapSizeWidescreen !== undefined && gapSizeWidescreen !== null,\n [`is-${gapSizeFullhd}-fullhd`]:\n gapSizeFullhd !== undefined && gapSizeFullhd !== null,\n 'is-centered': !!isCentered,\n 'is-gapless': !!isGapless,\n 'is-multiline': !!isMultiline,\n 'is-vcentered': !!isVCentered,\n 'is-mobile': !!isMobile,\n 'is-desktop': !!isDesktop,\n });\n\n const columnsClasses = classNames(\n mainClass,\n gapClasses,\n className,\n bulmaHelperClasses\n );\n\n return (\n <div className={columnsClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\nconst validBreadcrumbAlignments = ['centered', 'right'] as const;\n/**\n * Valid alignment values for the Breadcrumb component.\n */\nexport type BreadcrumbAlignment = (typeof validBreadcrumbAlignments)[number];\n\nconst validBreadcrumbSeparators = [\n 'arrow',\n 'bullet',\n 'dot',\n 'succeeds',\n] as const;\n/**\n * Valid separator values for the Breadcrumb component.\n */\nexport type BreadcrumbSeparator = (typeof validBreadcrumbSeparators)[number];\n\nconst validBreadcrumbSizes = ['small', 'medium', 'large'] as const;\n/**\n * Valid size values for the Breadcrumb component.\n */\nexport type BreadcrumbSize = (typeof validBreadcrumbSizes)[number];\n\n/**\n * Props for the Breadcrumb component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {BreadcrumbAlignment} [alignment] - Alignment modifier for the breadcrumb.\n * @property {BreadcrumbSeparator} [separator] - Separator style for the breadcrumb.\n * @property {BreadcrumbSize} [size] - Size modifier for the breadcrumb.\n * @property {React.ReactNode} [children] - Breadcrumb items (e.g., \"a\" or \"span\" html elements).\n */\nexport interface BreadcrumbProps\n extends\n Omit<React.HTMLAttributes<HTMLElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n alignment?: BreadcrumbAlignment;\n separator?: BreadcrumbSeparator;\n size?: BreadcrumbSize;\n children?: React.ReactNode;\n}\n\n/**\n * Breadcrumb component for rendering a styled Bulma breadcrumb navigation.\n *\n * Supports alignment, separator styles, and sizes.\n *\n * @function\n * @param {BreadcrumbProps} props - Props for the Breadcrumb component.\n * @returns {JSX.Element} The rendered breadcrumb element.\n * @see {@link https://bulma.io/documentation/components/breadcrumb/ | Bulma Breadcrumb documentation}\n */\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({\n className,\n alignment,\n separator,\n size,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('breadcrumb', {\n [`is-${alignment}`]:\n alignment && validBreadcrumbAlignments.includes(alignment),\n [`has-${separator}-separator`]:\n separator && validBreadcrumbSeparators.includes(separator),\n [`is-${size}`]: size && validBreadcrumbSizes.includes(size),\n });\n\n // Combine prefixed Bulma classes with unprefixed user className and prefixed helper classes\n const breadcrumbClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <nav className={breadcrumbClasses} aria-label=\"breadcrumbs\" {...rest}>\n <ul>{children}</ul>\n </nav>\n );\n};\n","import React from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { useConfig } from '../helpers/Config';\n\n/**\n * Props for the Card component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the card.\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the card.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the card.\n * @property {boolean} [hasShadow] - Whether the card has a shadow (default: true).\n * @property {React.ReactNode} [header] - Card header content, rendered inside `.card-header-title`.\n * @property {boolean} [headerCentered] - If true, centers the header title.\n * @property {React.ReactNode} [headerIcon] - Card header icon, rendered as a sibling to the header title.\n * @property {React.ReactNode|React.ReactNode[]} [footer] - Card footer content, each wrapped in `.card-footer-item`.\n * @property {React.ReactNode|string} [image] - Card image node or image src string.\n * @property {string} [imageAlt] - Alternate text for the card image.\n * @property {React.ReactNode} [children] - Card content.\n */\nexport interface CardProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n hasShadow?: boolean;\n header?: React.ReactNode;\n headerCentered?: boolean;\n headerIcon?: React.ReactNode;\n footer?: React.ReactNode | React.ReactNode[];\n image?: React.ReactNode | string;\n imageAlt?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Wrap each footer item in a `.card-footer-item` span.\n * @param {CardProps['footer']} footer - Footer content (single node or array).\n * @param {string | undefined} classPrefix - Bulma class prefix.\n * @returns {React.ReactNode[] | null} Wrapped footer items, or null if no footer.\n */\nconst renderFooter = (\n footer: CardProps['footer'],\n classPrefix: string | undefined\n) => {\n if (!footer) return null;\n const items = Array.isArray(footer) ? footer : [footer];\n return items.map((item, idx) => (\n <span\n className={prefixedClassNames(classPrefix, 'card-footer-item')}\n key={idx}\n >\n {item}\n </span>\n ));\n};\n\n/**\n * Check if children contain any Card compound sub-components.\n * @param {React.ReactNode} children - The children to inspect.\n * @returns {boolean} True if any child is a Card compound component.\n */\nconst hasCompoundComponents = (children: React.ReactNode): boolean => {\n return React.Children.toArray(children).some(child => {\n if (!React.isValidElement(child)) return false;\n\n // Direct comparison with our compound component functions\n return (\n child.type === CardHeader ||\n child.type === CardContent ||\n child.type === CardImage ||\n child.type === CardFooter ||\n child.type === CardFooterItem ||\n child.type === CardHeaderIcon\n );\n });\n};\n\n/**\n * Card component for rendering a styled Bulma card.\n *\n * @function\n * @param {CardProps} props - Props for the Card component.\n * @returns {JSX.Element} The rendered card element.\n * @see {@link https://bulma.io/documentation/components/card/ | Bulma Card documentation}\n */\nconst CardComponent: React.FC<CardProps> = ({\n className,\n children,\n textColor,\n bgColor,\n hasShadow = true,\n header,\n headerCentered,\n headerIcon,\n footer,\n image,\n imageAlt,\n ...props\n}) => {\n const { classPrefix } = useConfig();\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('card', {\n 'is-shadowless': !hasShadow,\n });\n\n // Combine prefixed Bulma classes with unprefixed user className and prefixed helper classes\n const cardClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n // Render header with optional icon and is-centered modifier\n const renderHeader = (\n header: React.ReactNode,\n headerIcon: React.ReactNode,\n headerCentered: boolean | undefined,\n classPrefix: string | undefined\n ) => {\n if (!header && !headerIcon) return null;\n return (\n <header className={prefixedClassNames(classPrefix, 'card-header')}>\n {header && (\n <div\n className={prefixedClassNames(classPrefix, 'card-header-title', {\n 'is-centered': headerCentered,\n })}\n >\n {header}\n </div>\n )}\n {headerIcon}\n </header>\n );\n };\n\n return (\n <div className={cardClasses} {...rest}>\n {renderHeader(header, headerIcon, headerCentered, classPrefix)}\n {image && (\n <div className={prefixedClassNames(classPrefix, 'card-image')}>\n {typeof image === 'string' ? (\n <figure className={prefixedClassNames(classPrefix, 'image')}>\n <img src={image} alt={imageAlt ?? 'Card image'} />\n </figure>\n ) : (\n image\n )}\n </div>\n )}\n {/* Only render card-content if children is specified and doesn't contain compound components */}\n {typeof children !== 'undefined' &&\n children !== null &&\n children !== '' &&\n !hasCompoundComponents(children) && (\n <div className={prefixedClassNames(classPrefix, 'card-content')}>\n {children}\n </div>\n )}\n {/* Render children directly if they contain compound components */}\n {typeof children !== 'undefined' &&\n children !== null &&\n children !== '' &&\n hasCompoundComponents(children) &&\n children}\n {footer && (\n <footer className={prefixedClassNames(classPrefix, 'card-footer')}>\n {Array.isArray(footer)\n ? footer.map((item, idx) => (\n <span\n className={prefixedClassNames(\n classPrefix,\n 'card-footer-item'\n )}\n key={idx}\n >\n {item}\n </span>\n ))\n : footer && (\n <span\n className={prefixedClassNames(\n classPrefix,\n 'card-footer-item'\n )}\n >\n {footer}\n </span>\n )}\n </footer>\n )}\n </div>\n );\n};\n\n// Compound components for flexible composition\n\n/**\n * Props for the Card.Header compound component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Header content. Wrap in Card.Header.Title for Bulma styling.\n * @property {boolean} [centered] - Whether to center the header title text.\n */\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLElement> {\n className?: string;\n children?: React.ReactNode;\n centered?: boolean;\n}\n\n/**\n * Props for the Card.Image compound component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Image content (e.g. a `<figure>` with an `<img>`).\n */\nexport interface CardImageProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the Card.Content compound component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Card body content.\n */\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the Card.Footer compound component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Footer content, typically Card.FooterItem elements.\n */\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the Card.FooterItem compound component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Footer item content (link, button, text, etc.).\n */\nexport interface CardFooterItemProps extends React.HTMLAttributes<HTMLSpanElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the Card.Header.Title compound component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Title text content.\n * @property {boolean} [centered] - Whether to center the title text.\n */\nexport interface CardHeaderTitleProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n centered?: boolean;\n}\n\n/**\n * Props for the Card.Header.Icon compound component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Icon content (e.g. an icon element).\n */\nexport interface CardHeaderIconProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Card header compound component. Wraps children in a `.card-header` element.\n *\n * @function\n * @param {CardHeaderProps} props - Props for the CardHeader component.\n * @returns {JSX.Element} The rendered card header.\n */\nconst CardHeader: React.FC<CardHeaderProps> = ({\n className,\n children,\n centered,\n ...props\n}) => {\n const { classPrefix } = useConfig();\n\n // Check if children contains a CardHeaderTitle component\n const hasHeaderTitle = React.Children.toArray(children).some(\n child =>\n React.isValidElement(child) &&\n typeof child.type === 'function' &&\n child.type === CardHeaderTitle\n );\n\n const headerClasses = usePrefixedClassNames('card-header');\n\n return (\n <header className={classNames(headerClasses, className)} {...props}>\n {hasHeaderTitle ? (\n children\n ) : (\n <div\n className={classNames(\n prefixedClassNames(classPrefix, 'card-header-title', {\n 'is-centered': centered,\n }),\n className\n )}\n >\n {children}\n </div>\n )}\n </header>\n );\n};\n\n/**\n * Card header title compound component. Renders a `.card-header-title` element.\n *\n * @function\n * @param {CardHeaderTitleProps} props - Props for the CardHeaderTitle component.\n * @returns {JSX.Element} The rendered card header title.\n */\nconst CardHeaderTitle: React.FC<CardHeaderTitleProps> = ({\n className,\n children,\n centered,\n ...props\n}) => (\n <div\n className={classNames(\n usePrefixedClassNames('card-header-title', {\n 'is-centered': centered,\n }),\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Card header icon compound component. Renders a `.card-header-icon` button.\n *\n * @function\n * @param {CardHeaderIconProps} props - Props for the CardHeaderIcon component.\n * @returns {JSX.Element} The rendered card header icon button.\n */\nconst CardHeaderIcon: React.FC<CardHeaderIconProps> = ({\n className,\n children,\n ...props\n}) => (\n <button\n className={classNames(usePrefixedClassNames('card-header-icon'), className)}\n aria-label={props['aria-label'] || 'more options'}\n {...props}\n >\n {children}\n </button>\n);\n\n/**\n * Card image compound component. Wraps children in a `.card-image` element.\n *\n * @function\n * @param {CardImageProps} props - Props for the CardImage component.\n * @returns {JSX.Element} The rendered card image container.\n */\nconst CardImage: React.FC<CardImageProps> = ({\n className,\n children,\n ...props\n}) => (\n <div\n className={classNames(usePrefixedClassNames('card-image'), className)}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Card content compound component. Wraps children in a `.card-content` element.\n *\n * @function\n * @param {CardContentProps} props - Props for the CardContent component.\n * @returns {JSX.Element} The rendered card content container.\n */\nconst CardContent: React.FC<CardContentProps> = ({\n className,\n children,\n ...props\n}) => (\n <div\n className={classNames(usePrefixedClassNames('card-content'), className)}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Card footer compound component. Wraps children in a `.card-footer` element.\n *\n * @function\n * @param {CardFooterProps} props - Props for the CardFooter component.\n * @returns {JSX.Element} The rendered card footer.\n */\nconst CardFooter: React.FC<CardFooterProps> = ({\n className,\n children,\n ...props\n}) => (\n <footer\n className={classNames(usePrefixedClassNames('card-footer'), className)}\n {...props}\n >\n {children}\n </footer>\n);\n\n/**\n * Card footer item compound component. Wraps children in a `.card-footer-item` span.\n *\n * @function\n * @param {CardFooterItemProps} props - Props for the CardFooterItem component.\n * @returns {JSX.Element} The rendered card footer item.\n */\nconst CardFooterItem: React.FC<CardFooterItemProps> = ({\n className,\n children,\n ...props\n}) => (\n <span\n className={classNames(usePrefixedClassNames('card-footer-item'), className)}\n {...props}\n >\n {children}\n </span>\n);\n\n/** Card component type with Header, Image, Content, Footer, and FooterItem sub-components. */\ntype CardWithCompounds = typeof CardComponent & {\n Header: typeof CardHeader & {\n Title: typeof CardHeaderTitle;\n Icon: typeof CardHeaderIcon;\n };\n Image: typeof CardImage;\n Content: typeof CardContent;\n Footer: typeof CardFooter;\n FooterItem: typeof CardFooterItem;\n};\n\n// Cast Card to the compound type and assign compound components\nconst CardWithSubComponents = CardComponent as CardWithCompounds;\n\n// Create CardHeader with nested Title and Icon components\nconst CardHeaderWithTitle = CardHeader as typeof CardHeader & {\n Title: typeof CardHeaderTitle;\n Icon: typeof CardHeaderIcon;\n};\nCardHeaderWithTitle.Title = CardHeaderTitle;\nCardHeaderWithTitle.Icon = CardHeaderIcon;\n\nCardWithSubComponents.Header = CardHeaderWithTitle;\nCardWithSubComponents.Image = CardImage;\nCardWithSubComponents.Content = CardContent;\nCardWithSubComponents.Footer = CardFooter;\nCardWithSubComponents.FooterItem = CardFooterItem;\n\n// Export the compound component\nexport { CardWithSubComponents as Card };\n\n/** Internal test-only exports. Not part of the public API. */\nexport const __test_exports__ = { renderFooter };\n","import React, { useState, useRef, useEffect } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Checks if code is running in a browser environment.\n * @param win - Window object.\n * @param doc - Document object.\n * @returns {boolean} True if in browser, false otherwise.\n */\nexport const isBrowser = (win?: typeof window, doc?: typeof document) =>\n typeof win !== 'undefined' && typeof doc !== 'undefined';\n\n/**\n * Props for the Dropdown component.\n *\n * @property {React.ReactNode} label - The dropdown button content.\n * @property {React.ReactNode} children - The menu items.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {string} [menuClassName] - Additional CSS classes for the dropdown menu.\n * @property {boolean} [active] - Whether the dropdown is open (controlled).\n * @property {boolean} [up] - Dropdown direction up.\n * @property {boolean} [right] - Dropdown aligned to the right.\n * @property {boolean} [hoverable] - Dropdown opens on hover.\n * @property {boolean} [disabled] - Disables the dropdown trigger.\n * @property {(active: boolean) => void} [onActiveChange] - Called when active state changes.\n * @property {boolean} [closeOnClick=true] - Close dropdown when clicking a menu item.\n * @property {string} [id] - ID for the root element.\n */\nexport interface DropdownProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, keyof BulmaClassesProps>,\n BulmaClassesProps {\n label: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n menuClassName?: string;\n active?: boolean;\n up?: boolean;\n right?: boolean;\n hoverable?: boolean;\n disabled?: boolean;\n onActiveChange?: (active: boolean) => void;\n closeOnClick?: boolean;\n id?: string;\n}\n\n/**\n * Bulma Dropdown component.\n *\n * @function\n * @param {DropdownProps} props - Props for the Dropdown component.\n * @returns {JSX.Element} The rendered dropdown.\n * @see {@link https://bulma.io/documentation/components/dropdown/ | Bulma Dropdown documentation}\n */\nconst DropdownComponent: React.FC<DropdownProps> = ({\n label,\n children,\n className,\n menuClassName,\n active: activeProp,\n up,\n right,\n hoverable,\n disabled,\n onActiveChange,\n closeOnClick = true,\n id,\n ...props\n}) => {\n const [active, setActive] = useState<boolean>(!!activeProp);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('dropdown', {\n 'is-active': active,\n 'is-up': up,\n 'is-right': right,\n 'is-hoverable': hoverable,\n 'is-disabled': disabled,\n });\n\n const buttonClass = usePrefixedClassNames('button');\n\n // Controlled mode support\n useEffect(() => {\n if (typeof activeProp === 'boolean') setActive(activeProp);\n }, [activeProp]);\n\n // SSR-safe outside click\n useEffect(() => {\n if (!active) return;\n\n if (!isBrowser(window, document)) return;\n\n const handleClick = (e: MouseEvent) => {\n /* istanbul ignore next: dropdownRef.current is never null while the listener is attached */\n if (!dropdownRef.current?.contains(e.target as Node)) {\n setActive(false);\n onActiveChange?.(false);\n }\n };\n document.addEventListener('mousedown', handleClick);\n return () => document.removeEventListener('mousedown', handleClick);\n }, [active, onActiveChange]);\n\n const handleToggle = () => {\n /* istanbul ignore next: guard is enforced by button[disabled] at the DOM level */\n if (disabled) return;\n\n const newActive = !active;\n setActive(newActive);\n onActiveChange?.(newActive);\n };\n\n const handleMenuClick = () => {\n if (closeOnClick) {\n setActive(false);\n onActiveChange?.(false);\n }\n };\n\n const dropdownClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <div\n className={dropdownClasses}\n ref={dropdownRef}\n id={id}\n data-testid=\"dropdown-root\"\n {...rest}\n >\n <div className={usePrefixedClassNames('dropdown-trigger')}>\n <button\n className={buttonClass}\n aria-haspopup=\"true\"\n aria-controls={id ? `${id}-menu` : undefined}\n aria-expanded={active}\n onClick={handleToggle}\n disabled={disabled}\n type=\"button\"\n >\n <span>{label}</span>\n <span\n className={usePrefixedClassNames('icon', 'is-small')}\n aria-hidden=\"true\"\n >\n <i className=\"fas fa-angle-down\" />\n </span>\n </button>\n </div>\n <div\n className={classNames(\n usePrefixedClassNames('dropdown-menu'),\n menuClassName\n )}\n id={id ? `${id}-menu` : undefined}\n role=\"menu\"\n data-testid=\"dropdown-menu\"\n >\n <div\n className={usePrefixedClassNames('dropdown-content')}\n onClick={handleMenuClick}\n tabIndex={-1}\n >\n {children}\n </div>\n </div>\n </div>\n );\n};\n\n/**\n * Props for the DropdownItem component.\n *\n * @property {boolean} [active] - Whether the item is active.\n * @property {string} [className] - Additional CSS classes.\n * @property {'a'|'div'|'button'} [as] - The element type to render.\n * @property {React.ReactNode} [children] - Item content.\n */\nexport interface DropdownItemProps\n extends\n Omit<React.HTMLAttributes<HTMLElement>, keyof BulmaClassesProps>,\n BulmaClassesProps {\n active?: boolean;\n className?: string;\n as?: 'a' | 'div' | 'button';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Dropdown item.\n *\n * @function\n * @param {DropdownItemProps} props - Props for the DropdownItem component.\n * @returns {JSX.Element} The rendered dropdown item.\n */\nexport const DropdownItem: React.FC<DropdownItemProps> = ({\n children,\n active,\n className,\n as: Component = 'a',\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n return (\n <Component\n className={classNames(\n usePrefixedClassNames('dropdown-item', {\n 'is-active': active,\n }),\n bulmaHelperClasses,\n className\n )}\n tabIndex={0}\n role=\"menuitem\"\n data-testid=\"dropdown-item\"\n {...rest}\n >\n {children}\n </Component>\n );\n};\n\n/**\n * Bulma Dropdown divider.\n *\n * @function\n * @returns {JSX.Element} The rendered divider element.\n */\nexport const DropdownDivider: React.FC = () => (\n <hr className={usePrefixedClassNames('dropdown-divider')} />\n);\n\n/** Bulma Dropdown component with Item and Divider sub-components. */\nexport const Dropdown = Object.assign(DropdownComponent, {\n Item: DropdownItem,\n Divider: DropdownDivider,\n});\n\nexport default Dropdown;\n","import React, { createContext, useContext } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n// Context to track MenuList nesting level\nconst MenuListLevelContext = createContext(0);\n\n/**\n * Props for the Menu component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} children - Menu content.\n */\nexport interface MenuProps\n extends\n Omit<React.HTMLAttributes<HTMLElement>, keyof BulmaClassesProps>,\n BulmaClassesProps {\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Bulma Menu component.\n *\n * @function\n * @param {MenuProps} props - Props for the Menu component.\n * @returns {JSX.Element} The rendered menu.\n * @see {@link https://bulma.io/documentation/components/menu/ | Bulma Menu documentation}\n */\nconst MenuComponent: React.FC<MenuProps> = ({\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('menu');\n\n return (\n <aside\n className={classNames(bulmaClasses, bulmaHelperClasses, className)}\n {...rest}\n >\n {children}\n </aside>\n );\n};\n\n/**\n * Props for the MenuLabel component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} children - Label content.\n */\nexport interface MenuLabelProps\n extends\n Omit<React.HTMLAttributes<HTMLParagraphElement>, keyof BulmaClassesProps>,\n BulmaClassesProps {\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Bulma Menu label component.\n *\n * @function\n * @param {MenuLabelProps} props - Props for the MenuLabel component.\n * @returns {JSX.Element} The rendered menu label.\n */\nexport const MenuLabel: React.FC<MenuLabelProps> = ({\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n return (\n <p\n className={classNames(\n usePrefixedClassNames('menu-label'),\n className,\n bulmaHelperClasses\n )}\n {...rest}\n >\n {children}\n </p>\n );\n};\n\n/**\n * Props for the MenuList component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} children - List items.\n */\nexport interface MenuListProps\n extends\n Omit<React.HTMLAttributes<HTMLUListElement>, keyof BulmaClassesProps>,\n BulmaClassesProps {\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * MenuList applies `menu-list` class only at the top level (not for nested lists).\n *\n * @function\n * @param {MenuListProps} props - Props for the MenuList component.\n * @returns {JSX.Element} The rendered menu list.\n */\nexport const MenuList: React.FC<MenuListProps> = ({\n className,\n children,\n ...props\n}) => {\n const level = useContext(MenuListLevelContext);\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n const ulClass = classNames(className, bulmaHelperClasses, {\n [usePrefixedClassNames('menu-list')]: level === 0,\n });\n\n // Increment level for nested MenuLists\n return (\n <MenuListLevelContext.Provider value={level + 1}>\n <ul className={ulClass} {...rest}>\n {children}\n </ul>\n </MenuListLevelContext.Provider>\n );\n};\n\n/**\n * Props for the MenuItem component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {boolean} [active] - Whether the item is active.\n * @property {string} [href] - Href for link items.\n * @property {React.ElementType} [as] - Render as a custom component.\n * @property {React.ReactNode} children - Item content and optional nested MenuList.\n */\nexport interface MenuItemProps\n extends\n Omit<React.LiHTMLAttributes<HTMLLIElement>, keyof BulmaClassesProps>,\n BulmaClassesProps {\n className?: string;\n children: React.ReactNode;\n active?: boolean;\n href?: string;\n as?: React.ElementType;\n [key: string]: unknown;\n}\n\n/**\n * MenuItem supports `as` prop for custom link components, e.g., react-router-dom Link.\n *\n * @function\n * @param {MenuItemProps} props - Props for the MenuItem component.\n * @returns {JSX.Element} The rendered menu item.\n */\nexport const MenuItem: React.FC<MenuItemProps> = ({\n className,\n children,\n active,\n href,\n as: Component = 'a',\n 'data-testid': testId,\n ...rest\n}) => {\n const { bulmaHelperClasses, rest: bulmaRest } = useBulmaClasses(rest);\n const itemClass = classNames(\n { [usePrefixedClassNames('is-active')]: active },\n bulmaHelperClasses\n );\n\n // Standard <li> props\n const { style, id, title, role, tabIndex, ...linkProps } = bulmaRest;\n\n // Split children into label and nested MenuList(s)\n const labelChildren: React.ReactNode[] = [];\n const nestedMenuLists: React.ReactNode[] = [];\n React.Children.forEach(children, child => {\n if (React.isValidElement(child) && child.type === MenuList) {\n nestedMenuLists.push(child);\n } else {\n labelChildren.push(child);\n }\n });\n\n // href/to should go to the link component\n if (Component === 'a' && href) {\n (linkProps as Record<string, unknown>).href = href;\n }\n if (Object.prototype.hasOwnProperty.call(rest, 'to')) {\n (linkProps as Record<string, unknown>).to = rest.to;\n }\n\n return (\n <li\n className={className}\n data-testid={testId}\n style={style as React.CSSProperties | undefined}\n id={id as string | undefined}\n title={title as string | undefined}\n role={role as React.AriaRole | undefined}\n tabIndex={tabIndex as number | undefined}\n >\n <Component className={itemClass} {...linkProps}>\n {labelChildren}\n </Component>\n {nestedMenuLists}\n </li>\n );\n};\n\n// Attach static subcomponents\nexport const Menu = Object.assign(MenuComponent, {\n Label: MenuLabel,\n List: MenuList,\n Item: MenuItem,\n});\n\nexport default Menu;\n","import React from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { useConfig } from '../helpers/Config';\n\n/**\n * Props for the Message component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [title] - Title displayed in the message header.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma or 'inherit'/'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the message.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma or 'inherit'/'current').\n * @property {() => void} [onClose] - Called when the close button is clicked.\n * @property {React.ReactNode} [children] - Message body content.\n */\nexport interface MessageProps\n extends\n Omit<React.HTMLAttributes<HTMLElement>, 'title'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n title?: React.ReactNode;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n onClose?: () => void;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma-styled Message component.\n *\n * Supports Bulma helper classes, color, and an optional close button.\n *\n * @function\n * @param {MessageProps} props - Props for the Message component.\n * @returns {JSX.Element} The rendered message.\n * @see {@link https://bulma.io/documentation/components/message/ | Bulma Message documentation}\n */\nconst MessageComponent: React.FC<MessageProps> = ({\n className,\n title,\n textColor,\n color,\n bgColor,\n onClose,\n children,\n ...props\n}) => {\n const { classPrefix } = useConfig();\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('message', {\n [`is-${color}`]: color,\n });\n const deleteClass = usePrefixedClassNames('delete');\n\n const messageClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <article className={messageClasses} {...rest} data-testid=\"message\">\n {(title || onClose) && (\n <div className={prefixedClassNames(classPrefix, 'message-header')}>\n {title && <span>{title}</span>}\n {onClose && (\n <button\n className={deleteClass}\n aria-label=\"delete\"\n onClick={onClose}\n type=\"button\"\n data-testid=\"message-close\"\n />\n )}\n </div>\n )}\n {children && (\n <div\n className={prefixedClassNames(classPrefix, 'message-body')}\n data-testid=\"message-body\"\n >\n {children}\n </div>\n )}\n </article>\n );\n};\n\n// Compound components for flexible composition\n\n/**\n * Props for the Message.Header compound component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Header content (title, close button, etc.).\n */\nexport interface MessageHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the Message.Body compound component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Message body content.\n */\nexport interface MessageBodyProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Message header compound component. Renders a `.message-header` element.\n *\n * @function\n * @param {MessageHeaderProps} props - Props for the MessageHeader component.\n * @returns {JSX.Element} The rendered message header.\n */\nconst MessageHeader: React.FC<MessageHeaderProps> = ({\n className,\n children,\n ...props\n}) => (\n <div\n className={classNames(usePrefixedClassNames('message-header'), className)}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Message body compound component. Renders a `.message-body` element.\n *\n * @function\n * @param {MessageBodyProps} props - Props for the MessageBody component.\n * @returns {JSX.Element} The rendered message body.\n */\nconst MessageBody: React.FC<MessageBodyProps> = ({\n className,\n children,\n ...props\n}) => (\n <div\n className={classNames(usePrefixedClassNames('message-body'), className)}\n {...props}\n >\n {children}\n </div>\n);\n\n// Create a type that extends the Message component with compound components\ntype MessageWithCompounds = typeof MessageComponent & {\n Header: typeof MessageHeader;\n Body: typeof MessageBody;\n};\n\n// Cast Message to the compound type and assign compound components\nconst MessageWithSubComponents = MessageComponent as MessageWithCompounds;\nMessageWithSubComponents.Header = MessageHeader;\nMessageWithSubComponents.Body = MessageBody;\n\n// Export the compound component\nexport { MessageWithSubComponents as Message };\n\nexport default MessageWithSubComponents;\n","import React from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { useConfig } from '../helpers/Config';\n\n/**\n * Props for the Modal component.\n *\n * @property {boolean} [active] - Whether the modal is open/visible.\n * @property {boolean} [isActive] - Alias for `active`. Whether the modal is open/visible.\n * @property {() => void} [onClose] - Callback invoked when modal close is requested (background click or close button).\n * @property {string} [className] - Additional CSS classes for the modal.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for modal content.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for modal content.\n * @property {React.ReactNode} [modalCardTitle] - Title for modal card variant (legacy API).\n * @property {React.ReactNode} [modalCardFoot] - Footer for modal card variant (legacy API).\n * @property {'card'|'content'} [type] - Modal type ('card' for modal-card, 'content' for modal-content). Legacy API only.\n * @property {React.ReactNode} [children] - Modal body/content or compound components.\n */\nexport interface ModalProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color' | 'title'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n active?: boolean;\n isActive?: boolean; // Alias for active\n onClose?: () => void;\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n modalCardTitle?: React.ReactNode;\n modalCardFoot?: React.ReactNode;\n type?: 'card' | 'content';\n children?: React.ReactNode;\n}\n\n/**\n * Props for Modal.Background component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalBackgroundProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Content component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalContentProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Card component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalCardProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Card.Head component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalCardHeadProps extends React.HTMLAttributes<HTMLElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Card.Title component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalCardTitleProps extends React.HTMLAttributes<HTMLParagraphElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Card.Body component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalCardBodyProps extends React.HTMLAttributes<HTMLElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Card.Foot component.\n *\n * @property {string} [className] - Additional CSS classes.\n */\nexport interface ModalCardFootProps extends React.HTMLAttributes<HTMLElement> {\n className?: string;\n}\n\n/**\n * Props for Modal.Close component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {'small' | 'medium' | 'large'} [size] - Size of the close button (only applies to 'floating' variant).\n * @property {'delete' | 'floating'} [variant] - Button variant. 'delete' (default) for modal card headers, 'floating' for overlay close button.\n */\nexport interface ModalCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n size?: 'small' | 'medium' | 'large';\n variant?: 'delete' | 'floating';\n}\n\n/**\n * Modal.Background - Renders the modal background overlay.\n *\n * @function\n * @param {ModalBackgroundProps} props - Component props.\n * @returns {JSX.Element} Modal background element.\n */\nconst ModalBackground: React.FC<ModalBackgroundProps> = ({\n className,\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames('modal-background'),\n className\n );\n return <div className={classes} {...props} />;\n};\n\n/**\n * Modal.Content - Renders modal content wrapper for custom content.\n *\n * @function\n * @param {ModalContentProps} props - Component props.\n * @returns {JSX.Element} Modal content element.\n */\nconst ModalContent: React.FC<ModalContentProps> = ({ className, ...props }) => {\n const classes = classNames(usePrefixedClassNames('modal-content'), className);\n return <div className={classes} {...props} />;\n};\n\n/**\n * Modal.Card.Head - Renders modal card header section.\n *\n * @function\n * @param {ModalCardHeadProps} props - Component props.\n * @returns {JSX.Element} Modal card header element.\n */\nconst ModalCardHead: React.FC<ModalCardHeadProps> = ({\n className,\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames('modal-card-head'),\n className\n );\n return <header className={classes} {...props} />;\n};\n\n/**\n * Modal.Card.Title - Renders modal card title.\n *\n * @function\n * @param {ModalCardTitleProps} props - Component props.\n * @returns {JSX.Element} Modal card title element.\n */\nconst ModalCardTitle: React.FC<ModalCardTitleProps> = ({\n className,\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames('modal-card-title'),\n className\n );\n return <p className={classes} {...props} />;\n};\n\n/**\n * Modal.Card.Body - Renders modal card body section.\n *\n * @function\n * @param {ModalCardBodyProps} props - Component props.\n * @returns {JSX.Element} Modal card body element.\n */\nconst ModalCardBody: React.FC<ModalCardBodyProps> = ({\n className,\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames('modal-card-body'),\n className\n );\n return <section className={classes} {...props} />;\n};\n\n/**\n * Modal.Card.Foot - Renders modal card footer section.\n *\n * @function\n * @param {ModalCardFootProps} props - Component props.\n * @returns {JSX.Element} Modal card footer element.\n */\nconst ModalCardFoot: React.FC<ModalCardFootProps> = ({\n className,\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames('modal-card-foot'),\n className\n );\n return <footer className={classes} {...props} />;\n};\n\n/**\n * Modal.Card - Renders modal card wrapper with compound components.\n * Use with Modal.Card.Head, Modal.Card.Title, Modal.Card.Body, and Modal.Card.Foot.\n *\n * @function\n * @param {ModalCardProps} props - Component props.\n * @returns {JSX.Element} Modal card element.\n */\nconst ModalCard: React.FC<ModalCardProps> & {\n Head: typeof ModalCardHead;\n Title: typeof ModalCardTitle;\n Body: typeof ModalCardBody;\n Foot: typeof ModalCardFoot;\n} = ({ className, ...props }) => {\n const classes = classNames(usePrefixedClassNames('modal-card'), className);\n return <div className={classes} {...props} />;\n};\n\nModalCard.Head = ModalCardHead;\nModalCard.Title = ModalCardTitle;\nModalCard.Body = ModalCardBody;\nModalCard.Foot = ModalCardFoot;\n\n/**\n * Modal.Close - Renders modal close button with two variant styles.\n *\n * @function\n * @param {ModalCloseProps} props - Component props.\n * @returns {JSX.Element} Close button element.\n *\n * @remarks\n * Supports two variants:\n * - 'delete' (default): For use in modal card headers, renders with 'delete' class\n * - 'floating': For floating overlay close button, renders with 'modal-close' class\n *\n * The size prop only applies to the 'floating' variant.\n */\nconst ModalClose: React.FC<ModalCloseProps> = ({\n className,\n size = 'large',\n variant = 'delete',\n ...props\n}) => {\n const classes = classNames(\n usePrefixedClassNames(\n variant === 'delete' ? 'delete' : 'modal-close',\n variant === 'floating' && size && { [`is-${size}`]: true }\n ),\n className\n );\n return (\n <button className={classes} aria-label=\"close\" type=\"button\" {...props} />\n );\n};\n\n/**\n * Bulma Modal component, supporting both modal-card and modal-content variants.\n * Supports both legacy props-based API and compound component API.\n *\n * @function\n * @param {ModalProps} props - Props for the Modal component.\n * @returns {JSX.Element} The rendered modal.\n *\n * @example\n * // Legacy API\n * <Modal active={isOpen} onClose={handleClose} modalCardTitle=\"Title\">\n * Content\n * </Modal>\n *\n * @example\n * // Compound Component API\n * <Modal isActive={isOpen}>\n * <Modal.Background onClick={handleClose} />\n * <Modal.Card>\n * <Modal.Card.Head>\n * <Modal.Card.Title>Title</Modal.Card.Title>\n * <Modal.Close onClick={handleClose} />\n * </Modal.Card.Head>\n * <Modal.Card.Body>Content</Modal.Card.Body>\n * </Modal.Card>\n * </Modal>\n *\n * @see {@link https://bulma.io/documentation/components/modal/ | Bulma Modal documentation}\n */\nconst ModalRoot: React.FC<ModalProps> & {\n Background: typeof ModalBackground;\n Content: typeof ModalContent;\n Card: typeof ModalCard;\n Close: typeof ModalClose;\n} = ({\n active,\n isActive,\n onClose,\n className,\n textColor,\n bgColor,\n modalCardTitle,\n modalCardFoot,\n type,\n children,\n ...props\n}) => {\n const { classPrefix } = useConfig();\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Support both active and isActive props\n const isModalActive = active ?? isActive ?? false;\n\n // Check if children contain compound components\n const hasCompoundComponents = React.Children.toArray(children).some(\n child =>\n React.isValidElement(child) &&\n (child.type === ModalBackground ||\n child.type === ModalContent ||\n child.type === ModalCard ||\n child.type === ModalClose)\n );\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('modal', {\n 'is-active': isModalActive,\n });\n const deleteClass = usePrefixedClassNames('delete');\n\n const modalClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n // If using compound components, render children as-is\n if (hasCompoundComponents) {\n return (\n <div className={modalClasses} {...rest} data-testid=\"modal\">\n {children}\n </div>\n );\n }\n\n // Legacy API: EXPLICIT type wins; fallback to auto detection if not provided\n let isModalCard: boolean;\n if (type === 'card') isModalCard = true;\n else if (type === 'content') isModalCard = false;\n else isModalCard = !!modalCardTitle || !!modalCardFoot;\n\n return (\n <div className={modalClasses} {...rest} data-testid=\"modal\">\n <div\n className={prefixedClassNames(classPrefix, 'modal-background')}\n onClick={onClose}\n data-testid=\"modal-background\"\n />\n {isModalCard ? (\n <div className={prefixedClassNames(classPrefix, 'modal-card')}>\n {modalCardTitle && (\n <header\n className={prefixedClassNames(classPrefix, 'modal-card-head')}\n >\n <p\n className={prefixedClassNames(classPrefix, 'modal-card-title')}\n >\n {modalCardTitle}\n </p>\n {onClose && (\n <button\n className={deleteClass}\n aria-label=\"close\"\n onClick={onClose}\n type=\"button\"\n data-testid=\"modal-close\"\n />\n )}\n </header>\n )}\n <section\n className={prefixedClassNames(classPrefix, 'modal-card-body')}\n data-testid=\"modal-body\"\n >\n {children}\n </section>\n {modalCardFoot && (\n <footer\n className={prefixedClassNames(classPrefix, 'modal-card-foot')}\n >\n {modalCardFoot}\n </footer>\n )}\n </div>\n ) : (\n <div\n className={prefixedClassNames(classPrefix, 'modal-content')}\n data-testid=\"modal-content\"\n >\n {children}\n </div>\n )}\n {/* Show floating close button for modal-content, or for modal-card when no header */}\n {(!isModalCard || (!modalCardTitle && onClose)) && onClose && (\n <button\n className={prefixedClassNames(classPrefix, 'modal-close', 'is-large')}\n aria-label=\"close\"\n onClick={onClose}\n type=\"button\"\n data-testid=\"modal-close-float\"\n />\n )}\n </div>\n );\n};\n\nModalRoot.Background = ModalBackground;\nModalRoot.Content = ModalContent;\nModalRoot.Card = ModalCard;\nModalRoot.Close = ModalClose;\n\nexport const Modal = ModalRoot;\nexport default Modal;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Navbar component.\n *\n * @property {string} [className] - Additional CSS classes for the navbar.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Color for text.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the navbar.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the navbar.\n * @property {boolean} [transparent] - Whether the navbar is transparent.\n * @property {'top'|'bottom'} [fixed] - Whether the navbar is fixed to the top or bottom.\n * @property {React.ReactNode} [children] - Navbar content.\n */\nexport interface NavbarProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n transparent?: boolean;\n fixed?: 'top' | 'bottom';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar component, supports subcomponents for structured navigation.\n *\n * @function\n * @param {NavbarProps} props - Props for the Navbar component.\n * @returns {JSX.Element} The rendered navbar.\n * @see {@link https://bulma.io/documentation/components/navbar/ | Bulma Navbar documentation}\n */\nexport const Navbar: React.FC<NavbarProps> & {\n Brand: typeof NavbarBrand;\n Item: typeof NavbarItem;\n Link: typeof NavbarLink;\n Burger: typeof NavbarBurger;\n Menu: typeof NavbarMenu;\n Start: typeof NavbarStart;\n End: typeof NavbarEnd;\n Dropdown: typeof NavbarDropdown;\n DropdownMenu: typeof NavbarDropdownMenu;\n Divider: typeof NavbarDivider;\n} = ({\n className,\n textColor,\n bgColor,\n color,\n transparent,\n fixed,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('navbar', {\n [`is-${color}`]: color,\n 'is-transparent': transparent,\n [`is-fixed-${fixed}`]: fixed,\n });\n\n const navbarClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <nav\n className={navbarClasses}\n role=\"navigation\"\n aria-label=\"main navigation\"\n {...rest}\n >\n {children}\n </nav>\n );\n};\n\n/**\n * Props for the NavbarBrand component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the brand.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the brand.\n * @property {React.ReactNode} [children] - Brand content.\n */\nexport interface NavbarBrandProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar brand area (usually left side).\n *\n * @function\n * @param {NavbarBrandProps} props - Props for the NavbarBrand component.\n * @returns {JSX.Element} The rendered brand area.\n */\nexport const NavbarBrand: React.FC<NavbarBrandProps> = ({\n className,\n children,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n ...props,\n });\n\n return (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-brand'),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Props for the NavbarItem component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ElementType} [as] - Render as a custom component.\n * @property {boolean} [active] - Whether the item is active.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the item.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the item.\n * @property {React.ReactNode} [children] - Navbar item content.\n */\nexport interface NavbarItemProps\n extends\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n as?: React.ElementType;\n active?: boolean;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar item (link, button, etc).\n *\n * @function\n * @param {NavbarItemProps} props - Props for the NavbarItem component.\n * @returns {JSX.Element} The rendered item.\n */\nexport const NavbarItem: React.FC<NavbarItemProps> = ({\n className,\n as: Component = 'a',\n active,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n return (\n <Component\n className={classNames(\n usePrefixedClassNames('navbar-item', {\n 'is-active': active,\n }),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </Component>\n );\n};\n\n/**\n * Props for the NavbarBurger component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the burger.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the burger.\n * @property {boolean} [active] - Whether the burger is active.\n * @property {React.ReactNode} [children] - Custom content inside the burger.\n * @property {string} ['aria-label'] - Aria label for accessibility.\n * @property {boolean} ['aria-expanded'] - Aria expanded state.\n * @property {React.MouseEventHandler<HTMLButtonElement>} [onClick] - Click handler.\n */\nexport interface NavbarBurgerProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n active?: boolean;\n children?: React.ReactNode;\n 'aria-label'?: string;\n 'aria-expanded'?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\n/**\n * Bulma Navbar burger (responsive menu toggle).\n *\n * @function\n * @param {NavbarBurgerProps} props - Props for the NavbarBurger component.\n * @returns {JSX.Element} The rendered burger.\n */\nexport const NavbarBurger: React.FC<NavbarBurgerProps> = ({\n className,\n active,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n return (\n <button\n type=\"button\"\n className={classNames(\n usePrefixedClassNames('navbar-burger', {\n 'is-active': active,\n }),\n bulmaHelperClasses,\n className\n )}\n aria-label={props['aria-label'] || 'menu'}\n aria-expanded={props['aria-expanded'] ?? !!active}\n {...rest}\n >\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n {children}\n </button>\n );\n};\n\n/**\n * Props for the NavbarMenu component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the menu.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the menu.\n * @property {boolean} [active] - Whether the menu is active.\n * @property {React.ReactNode} [children] - Menu content.\n */\nexport interface NavbarMenuProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n active?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar menu area (collapsible content).\n *\n * @function\n * @param {NavbarMenuProps} props - Props for the NavbarMenu component.\n * @returns {JSX.Element} The rendered menu.\n */\nexport const NavbarMenu: React.FC<NavbarMenuProps> = ({\n className,\n active,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n return (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-menu', {\n 'is-active': active,\n }),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Props for the NavbarStartEnd component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface NavbarStartEndProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar start area (left-aligned).\n *\n * @function\n * @param {NavbarStartEndProps} props - Props for the NavbarStart component.\n * @returns {JSX.Element} The rendered start area.\n */\nexport const NavbarStart: React.FC<NavbarStartEndProps> = ({\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n return (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-start'),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Bulma Navbar end area (right-aligned).\n *\n * @function\n * @param {NavbarStartEndProps} props - Props for the NavbarEnd component.\n * @returns {JSX.Element} The rendered end area.\n */\nexport const NavbarEnd: React.FC<NavbarStartEndProps> = ({\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n return (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-end'),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Props for the NavbarLink component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ElementType} [as] - Render as a custom component (default: 'a').\n * @property {boolean} [arrowless] - Remove the dropdown arrow indicator.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {React.ReactNode} [children] - Link content.\n */\nexport interface NavbarLinkProps\n extends\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n as?: React.ElementType;\n arrowless?: boolean;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar link — the dropdown trigger inside a `Navbar.Dropdown`.\n *\n * Renders with the `navbar-link` class, which adds a dropdown arrow indicator\n * automatically. Use `arrowless` to remove the arrow.\n *\n * @function\n * @param {NavbarLinkProps} props - Props for the NavbarLink component.\n * @returns {JSX.Element} The rendered navbar link.\n */\nexport const NavbarLink: React.FC<NavbarLinkProps> = ({\n className,\n as: Component = 'a',\n arrowless,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n return (\n <Component\n className={classNames(\n usePrefixedClassNames('navbar-link', {\n 'is-arrowless': arrowless,\n }),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </Component>\n );\n};\n\n/**\n * Props for the NavbarDropdown component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {boolean} [right] - Dropdown aligned right.\n * @property {boolean} [up] - Dropdown opens upwards.\n * @property {boolean} [hoverable] - Dropdown opens on hover.\n * @property {boolean} [active] - Dropdown is open.\n * @property {React.ReactNode} [children] - Dropdown content.\n */\nexport interface NavbarDropdownProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n right?: boolean;\n up?: boolean;\n hoverable?: boolean;\n active?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar dropdown (for nested dropdown menus).\n *\n * @function\n * @param {NavbarDropdownProps} props - Props for the NavbarDropdown component.\n * @returns {JSX.Element} The rendered dropdown.\n */\nexport const NavbarDropdown: React.FC<NavbarDropdownProps> = ({\n className,\n right,\n up,\n hoverable,\n active,\n children,\n ...props\n}) => (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-item', 'has-dropdown', {\n 'has-dropdown-up': up,\n 'is-right': right,\n 'is-hoverable': hoverable,\n 'is-active': active,\n }),\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Props for the NavbarDropdownMenu component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {boolean} [right] - Dropdown aligned right.\n * @property {boolean} [up] - Dropdown opens upwards.\n * @property {React.ReactNode} [children] - Dropdown menu content.\n */\nexport interface NavbarDropdownMenuProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n right?: boolean;\n up?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Navbar dropdown menu container.\n *\n * @function\n * @param {NavbarDropdownMenuProps} props - Props for the NavbarDropdownMenu component.\n * @returns {JSX.Element} The rendered dropdown menu.\n */\nexport const NavbarDropdownMenu: React.FC<NavbarDropdownMenuProps> = ({\n className,\n right,\n up,\n children,\n ...props\n}) => (\n <div\n className={classNames(\n usePrefixedClassNames('navbar-dropdown', {\n 'is-right': right,\n 'is-up': up,\n }),\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Bulma Navbar divider.\n *\n * @function\n * @param {React.HTMLAttributes<HTMLHRElement>} props - Standard hr props.\n * @returns {JSX.Element} The rendered divider.\n */\nexport const NavbarDivider: React.FC<\n React.HTMLAttributes<HTMLHRElement>\n> = props => (\n <hr className={usePrefixedClassNames('navbar-divider')} {...props} />\n);\n\n// Attach subcomponents\nNavbar.Brand = NavbarBrand;\nNavbar.Item = NavbarItem;\nNavbar.Link = NavbarLink;\nNavbar.Burger = NavbarBurger;\nNavbar.Menu = NavbarMenu;\nNavbar.Start = NavbarStart;\nNavbar.End = NavbarEnd;\nNavbar.Dropdown = NavbarDropdown;\nNavbar.DropdownMenu = NavbarDropdownMenu;\nNavbar.Divider = NavbarDivider;\n\nexport default Navbar;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Pagination component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color for the pagination.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the pagination.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the pagination.\n * @property {'small'|'medium'|'large'} [size] - Size modifier for the pagination.\n * @property {'centered'|'right'} [align] - Alignment for the pagination.\n * @property {boolean} [rounded] - Renders pagination with rounded corners.\n * @property {number} [total] - Total number of pages.\n * @property {number} [current] - Current page.\n * @property {(page: number) => void} [onPageChange] - Page change callback.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Custom pagination content.\n */\nexport interface PaginationProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n size?: 'small' | 'medium' | 'large';\n align?: 'centered' | 'right';\n rounded?: boolean;\n total?: number;\n current?: number;\n onPageChange?: (page: number) => void;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for PaginationPrevious and PaginationNext components.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {boolean} [disabled] - Whether previous/next is disabled.\n * @property {React.ReactNode} [children] - Button content.\n */\nexport interface PaginationPreviousNextProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n className?: string;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Pagination previous button.\n *\n * @function\n * @param {PaginationPreviousNextProps} props - Props for the PaginationPrevious component.\n * @returns {JSX.Element} The rendered previous button.\n */\nexport const PaginationPrevious: React.FC<PaginationPreviousNextProps> = ({\n className,\n disabled,\n children,\n ...props\n}) => (\n <a\n className={classNames(\n usePrefixedClassNames('pagination-previous'),\n className,\n {\n 'is-disabled': disabled,\n }\n )}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n {...props}\n onClick={\n disabled\n ? e => {\n e.preventDefault();\n e.stopPropagation();\n }\n : props.onClick\n }\n >\n {children}\n </a>\n);\n\n/**\n * Bulma Pagination next button.\n *\n * @function\n * @param {PaginationPreviousNextProps} props - Props for the PaginationNext component.\n * @returns {JSX.Element} The rendered next button.\n */\nexport const PaginationNext: React.FC<PaginationPreviousNextProps> = ({\n className,\n disabled,\n children,\n ...props\n}) => (\n <a\n className={classNames(usePrefixedClassNames('pagination-next'), className, {\n 'is-disabled': disabled,\n })}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n {...props}\n onClick={\n disabled\n ? e => {\n e.preventDefault();\n e.stopPropagation();\n }\n : props.onClick\n }\n >\n {children}\n </a>\n);\n\n/**\n * Bulma Pagination navigation component.\n *\n * @function\n * @param {PaginationProps} props - Props for the Pagination component.\n * @returns {JSX.Element} The rendered pagination.\n * @see {@link https://bulma.io/documentation/components/pagination/ | Bulma Pagination documentation}\n */\nexport const Pagination: React.FC<PaginationProps> & {\n Link: typeof PaginationLink;\n List: typeof PaginationList;\n Ellipsis: typeof PaginationEllipsis;\n Previous: typeof PaginationPrevious;\n Next: typeof PaginationNext;\n} = ({\n color,\n textColor,\n bgColor,\n size,\n align,\n rounded,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('pagination', {\n [`is-${color}`]: color,\n [`is-${size}`]: size,\n [`is-${align}`]: align,\n 'is-rounded': rounded,\n });\n\n const paginationClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <nav\n className={paginationClasses}\n role=\"navigation\"\n aria-label=\"pagination\"\n {...rest}\n >\n {children}\n </nav>\n );\n};\n\n/**\n * Props for the PaginationList component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the list.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the list.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the list.\n * @property {React.ReactNode} [children] - List items.\n */\nexport interface PaginationListProps\n extends\n React.HTMLAttributes<HTMLUListElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Pagination list container.\n *\n * @function\n * @param {PaginationListProps} props - Props for the PaginationList component.\n * @returns {JSX.Element} The rendered pagination list.\n */\nexport const PaginationList: React.FC<PaginationListProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n return (\n <ul\n className={classNames(\n usePrefixedClassNames('pagination-list'),\n bulmaHelperClasses,\n className\n )}\n {...rest}\n >\n {children}\n </ul>\n );\n};\n\n/**\n * Props for the PaginationLink component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {boolean} [active] - Whether the link is for the current page.\n * @property {boolean} [disabled] - Whether the link is disabled.\n * @property {React.ReactNode} [children] - Link content.\n */\nexport interface PaginationLinkProps\n extends\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n active?: boolean;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Pagination link (page number).\n *\n * @function\n * @param {PaginationLinkProps} props - Props for the PaginationLink component.\n * @returns {JSX.Element} The rendered pagination link.\n */\nexport const PaginationLink: React.FC<PaginationLinkProps> = ({\n className,\n textColor,\n bgColor,\n active,\n disabled,\n onClick,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (onClick) {\n onClick(e);\n }\n };\n\n return (\n <li>\n <a\n className={classNames(\n usePrefixedClassNames('pagination-link'),\n bulmaHelperClasses,\n className,\n {\n 'is-current': active,\n 'is-disabled': disabled,\n }\n )}\n aria-current={active ? 'page' : undefined}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n onClick={handleClick}\n {...rest}\n >\n {children}\n </a>\n </li>\n );\n};\n\n/**\n * Bulma Pagination ellipsis element.\n *\n * @function\n * @param {React.LiHTMLAttributes<HTMLLIElement>} props - Standard li props.\n * @returns {JSX.Element} The rendered ellipsis.\n */\nexport const PaginationEllipsis: React.FC<\n React.LiHTMLAttributes<HTMLLIElement>\n> = props => (\n <li>\n <span className={usePrefixedClassNames('pagination-ellipsis')} {...props}>\n …\n </span>\n </li>\n);\n\nPagination.Link = PaginationLink;\nPagination.List = PaginationList;\nPagination.Ellipsis = PaginationEllipsis;\nPagination.Previous = PaginationPrevious;\nPagination.Next = PaginationNext;\n\nexport default Pagination;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { useIconLibrary } from '../helpers/Config';\n\n// TypeScript declaration for Ionicons web component\ninterface IonIconProps extends React.HTMLAttributes<HTMLElement> {\n name?: string;\n src?: string;\n icon?: unknown;\n size?: string;\n lazy?: boolean;\n sanitize?: boolean;\n color?: string;\n flipRtl?: boolean;\n ariaLabel?: string;\n ariaHidden?: string;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n 'ion-icon': IonIconProps;\n }\n }\n}\n\ntype IconLibrary = 'fa' | 'mdi' | 'ion' | 'material-icons' | 'material-symbols'; // 'fa' = Font Awesome, 'mdi' = Material Design Icons, 'ion' = Ionicons Web Components, 'material-icons' = Google Material Icons, 'material-symbols' = Google Material Symbols\n\n/**\n * Props for the Icon component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the icon.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {string} name - The icon name (without library prefix).\n * @property {IconLibrary} [library] - The icon library to use ('fa' = Font Awesome, 'mdi' = Material Design Icons, 'ion' = Ionicons Web Components, 'material-icons' = Google Material Icons, 'material-symbols' = Google Material Symbols). Defaults to the value set in ConfigProvider or 'fa' if not configured.\n * @property {string} [variant] - Icon style variant. For Font Awesome: 'solid', 'regular', 'brands', etc. For Material Icons: 'filled', 'outlined', 'round', 'sharp'. For Material Symbols: 'outlined', 'rounded', 'sharp'. For Ionicons: 'outline', 'sharp'.\n * @property {string | string[]} [features] - Additional library-specific modifiers. For Font Awesome: 'fa-lg', 'fa-spin', etc. For others: size classes like 'is-size-1', etc.\n * @property {string | string[]} [libraryFeatures] - DEPRECATED: Use 'variant' and 'features' instead. Additional library-specific classes.\n * @property {'small' | 'medium' | 'large'} [size] - Size modifier for the icon.\n * @property {string} [ariaLabel='icon'] - ARIA label for accessibility (default: 'icon').\n * @property {object} [style] - Inline style object.\n * @property {string} [icon] - DEPRECATED: Legacy prop, use `name` instead.\n * @property {string} [containerClassName] - Override the default 'icon' container class (e.g., 'panel-icon').\n */\nexport interface IconProps\n extends React.HTMLAttributes<HTMLSpanElement>, BulmaClassesProps {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n name: string; // e.g., 'star', 'account', 'home-outline'\n icon?: string; // DEPRECATED: legacy prop that should not be used\n library?: IconLibrary; // defaults to ConfigProvider iconLibrary or 'fa'\n variant?: string; // e.g., 'solid', 'outlined', 'rounded', 'sharp'\n features?: string | string[]; // e.g., 'fa-lg', 'fa-spin', 'is-size-1'\n libraryFeatures?: string | string[]; // DEPRECATED: backward compatibility\n size?: 'small' | 'medium' | 'large';\n ariaLabel?: string;\n style?: React.CSSProperties;\n containerClassName?: string; // Override the default 'icon' container class (e.g., 'panel-icon')\n}\n\n/**\n * Gets the correct classes for the icon element based on the library and features.\n *\n * @param {IconLibrary} library - The icon library.\n * @param {string} name - The icon name.\n * @param {string} [variant] - Icon style variant (e.g., 'solid', 'outlined', 'rounded').\n * @param {string | string[]} [features] - Additional library-specific modifiers.\n * @returns {string} The combined class string for the icon.\n */\nfunction getIconClasses(\n library: IconLibrary,\n name: string,\n variant?: string,\n features?: string | string[]\n): string {\n let baseClass = '';\n let iconClass = '';\n let featureList = Array.isArray(features)\n ? features\n : features\n ? [features]\n : [];\n\n switch (library) {\n case 'fa': {\n // Font Awesome: use variant as style ('solid' -> 'fas', 'regular' -> 'far', etc.)\n const styleMap: Record<string, string> = {\n solid: 'fas',\n regular: 'far',\n brands: 'fab',\n light: 'fal',\n duotone: 'fad',\n thin: 'fat',\n };\n const faStyle = variant ? styleMap[variant] || variant : 'fas';\n baseClass = faStyle;\n iconClass = `fa-${name}`;\n return [baseClass, iconClass, ...featureList].join(' ');\n }\n case 'mdi':\n // Material Design Icons: no variants, just features\n baseClass = 'mdi';\n iconClass = `mdi-${name}`;\n return [baseClass, iconClass, ...featureList].join(' ');\n case 'material-icons': {\n // Google Material Icons: map variants to full class names\n const styleVariants: Record<string, string> = {\n filled: 'material-icons',\n outlined: 'material-icons-outlined',\n round: 'material-icons-round',\n sharp: 'material-icons-sharp',\n };\n baseClass = variant\n ? styleVariants[variant] || `material-icons-${variant}`\n : 'material-icons';\n return [baseClass, ...featureList].join(' ');\n }\n case 'material-symbols': {\n // Google Material Symbols: map variants to full class names\n const styleVariants: Record<string, string> = {\n outlined: 'material-symbols-outlined',\n rounded: 'material-symbols-rounded',\n sharp: 'material-symbols-sharp',\n };\n baseClass = variant\n ? styleVariants[variant] || `material-symbols-${variant}`\n : 'material-symbols-outlined';\n return [baseClass, ...featureList].join(' ');\n }\n default:\n // fallback: just icon name and features\n return [name, ...featureList].join(' ');\n }\n}\n\n/**\n * Icon component for rendering a Bulma-styled icon container.\n *\n * Supports Bulma helper classes for styling, color, and size, and renders an <i></i> element for the icon itself.\n *\n * @function\n * @param {IconProps} props - Props for the Icon component.\n * @returns {JSX.Element} The rendered icon element.\n * @see {@link https://bulma.io/documentation/elements/icon/ | Bulma Icon documentation}\n */\nexport const Icon: React.FC<IconProps> = ({\n className,\n textColor,\n bgColor,\n name,\n library,\n variant,\n features,\n libraryFeatures, // Deprecated but maintained for backward compatibility\n size,\n ariaLabel = 'icon',\n style,\n icon, // Capture and exclude the deprecated 'icon' prop from DOM\n color: _color, // Exclude 'color' prop if passed directly\n containerClassName,\n ...restProps\n}) => {\n // Handle deprecated 'icon' prop - parse it to extract the actual name\n let finalName = name;\n if (!name && icon) {\n // If icon prop is provided instead of name, try to parse it\n // e.g., \"mdi mdi-rocket-launch\" -> \"rocket-launch\"\n if (typeof icon === 'string') {\n const parts = icon.split(' ');\n const lastPart = parts[parts.length - 1];\n if (lastPart.startsWith('mdi-')) {\n finalName = lastPart.substring(4); // Remove \"mdi-\" prefix\n } else if (lastPart.startsWith('fa-')) {\n finalName = lastPart.substring(3); // Remove \"fa-\" prefix\n } else {\n finalName = lastPart;\n }\n }\n }\n\n // Get the default icon library from context, fallback to 'fa' if not set\n const defaultLibrary = useIconLibrary();\n const finalLibrary = library || defaultLibrary || 'fa';\n /**\n * Generates Bulma helper classes and separates out remaining props.\n * Note: variant, features, and libraryFeatures are excluded from props spread\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...restProps,\n });\n\n // Hoisted unconditionally to respect rules-of-hooks; the ternaries below\n // pick which result to consume.\n const defaultIconClasses = usePrefixedClassNames('icon', {\n [`is-${size}`]: size,\n });\n const sizeModifierClass = usePrefixedClassNames(\n size ? `is-${size}` : undefined\n );\n\n const bulmaClasses = containerClassName\n ? containerClassName\n : defaultIconClasses;\n\n const iconContainerClasses = classNames(\n bulmaClasses,\n containerClassName && size ? sizeModifierClass : undefined,\n bulmaHelperClasses,\n className\n );\n\n // Backward compatibility: if libraryFeatures is provided, parse it for variant and features\n let finalVariant = variant;\n let finalFeatures = features;\n\n if (libraryFeatures && !variant && !features) {\n const legacyFeatures = Array.isArray(libraryFeatures)\n ? libraryFeatures\n : [libraryFeatures];\n\n // For Font Awesome, extract style from features\n if (finalLibrary === 'fa') {\n const faStyle = legacyFeatures.find(f =>\n [\n 'fas',\n 'far',\n 'fab',\n 'fal',\n 'fad',\n 'fat',\n 'solid',\n 'regular',\n 'brands',\n 'light',\n 'duotone',\n 'thin',\n ].includes(f)\n );\n if (faStyle) {\n finalVariant = faStyle;\n finalFeatures = legacyFeatures.filter(f => f !== faStyle);\n } else {\n finalFeatures = legacyFeatures;\n }\n }\n // For Material Icons/Symbols, extract style variant\n else if (\n finalLibrary === 'material-icons' ||\n finalLibrary === 'material-symbols'\n ) {\n const styleVariants =\n finalLibrary === 'material-icons'\n ? ['filled', 'outlined', 'round', 'sharp']\n : ['outlined', 'rounded', 'sharp'];\n\n const styleVariant = legacyFeatures.find(f => styleVariants.includes(f));\n if (styleVariant) {\n finalVariant = styleVariant;\n finalFeatures = legacyFeatures.filter(f => f !== styleVariant);\n } else {\n finalFeatures = legacyFeatures;\n }\n }\n // For others, all features go to finalFeatures\n else {\n finalFeatures = legacyFeatures;\n }\n }\n\n // Handle web components vs CSS-based icons\n if (finalLibrary === 'ion') {\n // For Ionicons, handle variant in the name\n let ionName = finalName;\n if (finalVariant === 'outline') {\n ionName = `${finalName}-outline`;\n } else if (finalVariant === 'sharp') {\n ionName = `${finalName}-sharp`;\n }\n\n return (\n <span\n className={iconContainerClasses}\n aria-label={ariaLabel}\n style={style}\n {...rest}\n >\n <ion-icon name={ionName} />\n </span>\n );\n }\n\n // Legacy CSS-based icons\n const iClasses = getIconClasses(\n finalLibrary,\n finalName,\n finalVariant,\n finalFeatures\n );\n\n // Material Icons and Material Symbols use text content, not CSS classes for the icon name\n if (\n finalLibrary === 'material-icons' ||\n finalLibrary === 'material-symbols'\n ) {\n return (\n <span\n className={iconContainerClasses}\n aria-label={ariaLabel}\n style={style}\n {...rest}\n >\n <i className={iClasses}>{finalName}</i>\n </span>\n );\n }\n\n return (\n <span\n className={iconContainerClasses}\n aria-label={ariaLabel}\n style={style}\n {...rest}\n >\n <i className={iClasses} />\n </span>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { Icon, IconProps } from '../elements/Icon';\n\n/**\n * Props for the Panel component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the panel.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Panel content.\n */\nexport interface PanelProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the PanelHeading component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Heading content.\n */\nexport interface PanelHeadingProps extends React.HTMLAttributes<HTMLParagraphElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the PanelTabs component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Tabs content.\n */\nexport interface PanelTabsProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the PanelBlock component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {boolean} [active] - Whether the block is active.\n * @property {React.ReactNode} [children] - Block content.\n */\nexport interface PanelBlockProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n className?: string;\n active?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the PanelIcon component.\n * Extends IconProps but uses 'panel-icon' as the container class.\n */\nexport type PanelIconProps = Omit<IconProps, 'containerClassName'>;\n\n/**\n * Props for the PanelInputBlock component.\n *\n * @property {string} [value] - Input value.\n * @property {(event: React.ChangeEvent<HTMLInputElement>) => void} [onChange] - Input change handler.\n * @property {string} [placeholder] - Input placeholder.\n * @property {string} [iconClassName] - Icon class for left icon (default 'fas fa-search').\n */\nexport interface PanelInputBlockProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n placeholder?: string;\n iconClassName?: string;\n}\n\n/**\n * Props for the PanelCheckboxBlock component.\n *\n * @property {boolean} [checked] - Whether the checkbox is checked.\n * @property {(event: React.ChangeEvent<HTMLInputElement>) => void} [onChange] - Checkbox change handler.\n * @property {React.ReactNode} [children] - Label/content.\n */\nexport interface PanelCheckboxBlockProps extends Omit<\n React.LabelHTMLAttributes<HTMLLabelElement>,\n 'onChange'\n> {\n checked?: boolean;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the PanelButtonBlock component.\n *\n * @property {React.ReactNode} [children] - Button content.\n */\nexport interface PanelButtonBlockProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Panel component, supports various panel subcomponents.\n *\n * @function\n * @param {PanelProps} props - Props for the Panel component.\n * @returns {JSX.Element} The rendered panel.\n * @see {@link https://bulma.io/documentation/components/panel/ | Bulma Panel documentation}\n */\nexport const Panel: React.FC<PanelProps> & {\n Heading: typeof PanelHeading;\n Tabs: typeof PanelTabs;\n Block: typeof PanelBlock;\n Icon: typeof PanelIcon;\n InputBlock: typeof PanelInputBlock;\n CheckboxBlock: typeof PanelCheckboxBlock;\n ButtonBlock: typeof PanelButtonBlock;\n} = ({ color, className, children, ...props }) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('panel', {\n [`is-${color}`]: color,\n });\n\n const panelClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <nav className={panelClasses} {...rest}>\n {children}\n </nav>\n );\n};\n\n/**\n * Bulma Panel heading.\n *\n * @function\n * @param {PanelHeadingProps} props - Props for the PanelHeading component.\n * @returns {JSX.Element} The rendered panel heading.\n */\nexport const PanelHeading: React.FC<PanelHeadingProps> = ({\n className,\n children,\n ...props\n}) => (\n <p\n className={classNames(usePrefixedClassNames('panel-heading'), className)}\n {...props}\n >\n {children}\n </p>\n);\n\n/**\n * Bulma Panel tabs.\n *\n * @function\n * @param {PanelTabsProps} props - Props for the PanelTabs component.\n * @returns {JSX.Element} The rendered panel tabs.\n */\nexport const PanelTabs: React.FC<PanelTabsProps> = ({\n className,\n children,\n ...props\n}) => (\n <p\n className={classNames(usePrefixedClassNames('panel-tabs'), className)}\n {...props}\n >\n {children}\n </p>\n);\n\n/**\n * Bulma Panel block.\n *\n * @function\n * @param {PanelBlockProps} props - Props for the PanelBlock component.\n * @returns {JSX.Element} The rendered panel block.\n */\nexport const PanelBlock: React.FC<PanelBlockProps> = ({\n className,\n active,\n children,\n ...props\n}) => (\n <a\n className={classNames(\n usePrefixedClassNames('panel-block', { 'is-active': active }),\n className\n )}\n {...props}\n >\n {children}\n </a>\n);\n\n/**\n * Bulma Panel icon.\n * Wraps the Icon component with 'panel-icon' container class.\n *\n * @function\n * @param {PanelIconProps} props - Props for the PanelIcon component.\n * @returns {JSX.Element} The rendered panel icon.\n */\nexport const PanelIcon: React.FC<PanelIconProps> = ({\n className,\n ...props\n}) => (\n <Icon\n containerClassName={classNames(\n usePrefixedClassNames('panel-icon'),\n className\n )}\n {...props}\n />\n);\n\n/**\n * Bulma Panel input block.\n *\n * @function\n * @param {PanelInputBlockProps} props - Props for the PanelInputBlock component.\n * @returns {JSX.Element} The rendered panel input block.\n */\nexport const PanelInputBlock: React.FC<PanelInputBlockProps> = ({\n value,\n onChange,\n placeholder,\n iconClassName = 'fas fa-search',\n ...props\n}) => {\n const inputClass = usePrefixedClassNames('input');\n\n return (\n <div className={usePrefixedClassNames('panel-block')} {...props}>\n <p className={usePrefixedClassNames('control', 'has-icons-left')}>\n <input\n className={inputClass}\n type=\"text\"\n placeholder={placeholder}\n value={value}\n onChange={onChange}\n />\n <span className={usePrefixedClassNames('icon', 'is-left')}>\n <i className={iconClassName} aria-hidden=\"true\"></i>\n </span>\n </p>\n </div>\n );\n};\n\n/**\n * Bulma Panel checkbox block.\n *\n * @function\n * @param {PanelCheckboxBlockProps} props - Props for the PanelCheckboxBlock component.\n * @returns {JSX.Element} The rendered panel checkbox block.\n */\nexport const PanelCheckboxBlock: React.FC<PanelCheckboxBlockProps> = ({\n checked,\n onChange,\n children,\n ...props\n}) => (\n <label className={usePrefixedClassNames('panel-block')} {...props}>\n <input type=\"checkbox\" checked={checked} onChange={onChange} />\n {children}\n </label>\n);\n\n/**\n * Bulma Panel button block.\n *\n * @function\n * @param {PanelButtonBlockProps} props - Props for the PanelButtonBlock component.\n * @returns {JSX.Element} The rendered panel button block.\n */\nexport const PanelButtonBlock: React.FC<PanelButtonBlockProps> = ({\n children,\n className,\n ...props\n}) => (\n <div className={usePrefixedClassNames('panel-block')}>\n <button\n className={classNames(\n usePrefixedClassNames(\n 'button',\n 'is-link',\n 'is-outlined',\n 'is-fullwidth'\n ),\n className\n )}\n {...props}\n >\n {children}\n </button>\n </div>\n);\n\nPanel.Heading = PanelHeading;\nPanel.Tabs = PanelTabs;\nPanel.Block = PanelBlock;\nPanel.Icon = PanelIcon;\nPanel.InputBlock = PanelInputBlock;\nPanel.CheckboxBlock = PanelCheckboxBlock;\nPanel.ButtonBlock = PanelButtonBlock;\n\nexport default Panel;\n","import React, { createContext, useContext, useState, useCallback } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { Icon } from '../elements/Icon';\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface TabsContextValue {\n activeTab: number;\n setActiveTab: (index: number) => void;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nfunction useTabsContext(): TabsContextValue | null {\n return useContext(TabsContext);\n}\n\n// ---------------------------------------------------------------------------\n// Tabs (root)\n// ---------------------------------------------------------------------------\n\n/**\n * Props for the Tabs component.\n *\n * @property {'centered'|'right'|'left'} [align] - Tab alignment.\n * @property {'small'|'medium'|'large'} [size] - Tab size.\n * @property {boolean} [fullwidth] - Tabs are fullwidth.\n * @property {boolean} [boxed] - Tabs are boxed style.\n * @property {boolean} [toggle] - Tabs are toggle style.\n * @property {boolean} [rounded] - Tabs are rounded (if toggle).\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color.\n * @property {number} [value] - Controlled active tab index.\n * @property {(index: number) => void} [onChange] - Callback when active tab changes.\n * @property {number} [defaultValue] - Initial active tab index for uncontrolled mode.\n * @property {boolean} [vertical] - Render tabs vertically.\n * @property {'left'|'right'} [side] - Which side vertical tabs appear on.\n * @property {boolean} [expanded] - Vertical tabs fill full height.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Tab content.\n */\nexport interface TabsProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n align?: 'centered' | 'right' | 'left';\n size?: 'small' | 'medium' | 'large';\n fullwidth?: boolean;\n boxed?: boolean;\n toggle?: boolean;\n rounded?: boolean;\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n value?: number;\n onChange?: (index: number) => void;\n defaultValue?: number;\n vertical?: boolean;\n side?: 'left' | 'right';\n expanded?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Tabs component with stateful tab management, content panels, and vertical layout.\n *\n * @function\n * @param {TabsProps} props - Props for the Tabs component.\n * @returns {JSX.Element} The rendered tabs component.\n * @see {@link https://bulma.io/documentation/components/tabs/ | Bulma Tabs documentation}\n *\n * @example\n * // Basic tabs\n * <Tabs>\n * <Tabs.List>\n * <Tabs.Tab index={0}>Pictures</Tabs.Tab>\n * <Tabs.Tab index={1}>Music</Tabs.Tab>\n * </Tabs.List>\n * <Tabs.Content>\n * <Tabs.Content.Item index={0}>Pictures content</Tabs.Content.Item>\n * <Tabs.Content.Item index={1}>Music content</Tabs.Content.Item>\n * </Tabs.Content>\n * </Tabs>\n */\nexport const Tabs: React.FC<TabsProps> & {\n List: typeof TabList;\n Tab: typeof Tab;\n Item: typeof TabItem;\n Content: typeof TabsContent & { Item: typeof TabContentItem };\n} = ({\n align,\n size,\n fullwidth,\n boxed,\n toggle,\n rounded,\n color,\n value,\n onChange,\n defaultValue = 0,\n vertical,\n side,\n expanded,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n // Controlled vs uncontrolled state\n const isControlled = value !== undefined;\n const [internalTab, setInternalTab] = useState(defaultValue);\n const activeTab = isControlled ? value : internalTab;\n\n const setActiveTab = useCallback(\n (index: number) => {\n if (!isControlled) {\n setInternalTab(index);\n }\n onChange?.(index);\n },\n [isControlled, onChange]\n );\n\n const contextValue: TabsContextValue = { activeTab, setActiveTab };\n\n // Build classes for the .tabs div\n const tabsClasses = usePrefixedClassNames('tabs', {\n [`is-${align}`]: align,\n [`is-${size}`]: size,\n [`is-${color}`]: color,\n 'is-fullwidth': fullwidth,\n 'is-boxed': boxed,\n 'is-toggle': toggle,\n 'is-toggle-rounded': rounded,\n });\n\n // Check if children include TabsContent\n const childArray = React.Children.toArray(children);\n const hasContent = childArray.some(\n child => React.isValidElement(child) && child.type === TabsContent\n );\n\n // Hoisted unconditionally to respect rules-of-hooks. Modifiers gate themselves\n // via their truthy values — `tabs-root` is always prefixed, modifiers only\n // apply in the vertical-with-content branch.\n const rootClasses = usePrefixedClassNames('tabs-root', {\n 'is-vertical': hasContent && vertical,\n 'is-right': hasContent && vertical && side === 'right',\n 'is-expanded': hasContent && vertical && expanded,\n });\n\n if (hasContent && vertical) {\n const combinedRootClasses = classNames(\n rootClasses,\n bulmaHelperClasses,\n className\n );\n\n // Split children into list-like and content children\n const listChildren: React.ReactNode[] = [];\n const contentChildren: React.ReactNode[] = [];\n childArray.forEach(child => {\n if (React.isValidElement(child) && child.type === TabsContent) {\n contentChildren.push(child);\n } else {\n listChildren.push(child);\n }\n });\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div className={combinedRootClasses} {...rest}>\n <div className={tabsClasses}>{listChildren}</div>\n {contentChildren}\n </div>\n </TabsContext.Provider>\n );\n }\n\n if (hasContent) {\n const combinedRootClasses = classNames(\n rootClasses,\n bulmaHelperClasses,\n className\n );\n\n const listChildren: React.ReactNode[] = [];\n const contentChildren: React.ReactNode[] = [];\n childArray.forEach(child => {\n if (React.isValidElement(child) && child.type === TabsContent) {\n contentChildren.push(child);\n } else {\n listChildren.push(child);\n }\n });\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div className={combinedRootClasses} {...rest}>\n <div className={tabsClasses}>{listChildren}</div>\n {contentChildren}\n </div>\n </TabsContext.Provider>\n );\n }\n\n // No content children — backward compatible single .tabs div\n const combinedClasses = classNames(\n tabsClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div className={combinedClasses} {...rest}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n};\n\n// ---------------------------------------------------------------------------\n// TabList\n// ---------------------------------------------------------------------------\n\n/**\n * Props for the TabList component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Tab elements.\n */\nexport interface TabListProps extends React.HTMLAttributes<HTMLUListElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Tab list container. Renders a `<ul>` with `role=\"tablist\"`.\n *\n * @function\n * @param {TabListProps} props - Props for the TabList component.\n * @returns {JSX.Element} The rendered tab list.\n */\nexport const TabList: React.FC<TabListProps> = ({\n className,\n children,\n ...props\n}) => (\n <ul role=\"tablist\" className={classNames(className)} {...props}>\n {children}\n </ul>\n);\n\n// ---------------------------------------------------------------------------\n// Tab (new — context-aware)\n// ---------------------------------------------------------------------------\n\ntype IconLibrary = 'fa' | 'mdi' | 'ion' | 'material-icons' | 'material-symbols';\n\n/**\n * Props for the Tab component.\n *\n * @property {number} index - The tab index for state management.\n * @property {boolean} [disabled] - Whether the tab is disabled.\n * @property {string} [icon] - Icon name to render before the label.\n * @property {IconLibrary} [iconLibrary] - Icon library override (defaults to ConfigProvider value or 'fa').\n * @property {string} [iconVariant] - Icon style variant (e.g., 'solid', 'outlined', 'rounded').\n * @property {'small'|'medium'|'large'} [iconSize] - Icon size modifier. Default: 'small'.\n * @property {string|string[]} [iconFeatures] - Additional icon library-specific modifiers.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Tab label content.\n */\nexport interface TabProps extends Omit<\n React.LiHTMLAttributes<HTMLLIElement>,\n 'onClick'\n> {\n index: number;\n disabled?: boolean;\n icon?: string;\n iconLibrary?: IconLibrary;\n iconVariant?: string;\n iconSize?: 'small' | 'medium' | 'large';\n iconFeatures?: string | string[];\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Individual tab button. Consumes Tabs context for active state management.\n * Renders `<a>` internally — consumers provide only the label text/children.\n *\n * @function\n * @param {TabProps} props - Props for the Tab component.\n * @returns {JSX.Element} The rendered tab.\n */\nexport const Tab: React.FC<TabProps> = ({\n index,\n disabled,\n icon,\n iconLibrary,\n iconVariant,\n iconSize = 'small',\n iconFeatures,\n className,\n children,\n ...props\n}) => {\n const ctx = useTabsContext();\n const isActive = ctx ? ctx.activeTab === index : false;\n\n const activeClass = usePrefixedClassNames({ 'is-active': isActive });\n\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n if (!disabled && ctx) {\n ctx.setActiveTab(index);\n }\n },\n [disabled, ctx, index]\n );\n\n return (\n <li\n className={classNames(activeClass, className)}\n role=\"tab\"\n aria-selected={isActive}\n tabIndex={disabled ? -1 : 0}\n {...props}\n >\n <a onClick={handleClick} aria-disabled={disabled || undefined}>\n {icon && (\n <Icon\n name={icon}\n library={iconLibrary}\n variant={iconVariant}\n size={iconSize}\n features={iconFeatures}\n />\n )}\n {children && <span>{children}</span>}\n </a>\n </li>\n );\n};\n\n// ---------------------------------------------------------------------------\n// TabItem (backward-compatible — no context)\n// ---------------------------------------------------------------------------\n\n/**\n * Props for the TabItem component (backward-compatible).\n *\n * @property {boolean} [active] - Whether the tab is active.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Tab content.\n * @property {React.MouseEventHandler<HTMLLIElement>} [onClick] - Click handler.\n */\nexport interface TabItemProps extends React.LiHTMLAttributes<HTMLLIElement> {\n active?: boolean;\n className?: string;\n children?: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLLIElement>;\n}\n\n/**\n * Legacy tab item. Does not consume context — active state is controlled via prop.\n *\n * @function\n * @param {TabItemProps} props - Props for the TabItem component.\n * @returns {JSX.Element} The rendered tab item.\n * @deprecated Use `Tabs.Tab` with an `index` prop instead.\n */\nexport const TabItem: React.FC<TabItemProps> = ({\n active,\n className,\n children,\n onClick,\n ...props\n}) => (\n <li\n className={classNames(\n { [usePrefixedClassNames('is-active')]: active },\n className\n )}\n onClick={onClick}\n {...props}\n >\n {children}\n </li>\n);\n\n// ---------------------------------------------------------------------------\n// TabsContent\n// ---------------------------------------------------------------------------\n\n/**\n * Props for the TabsContent component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - TabContentItem elements.\n */\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Wrapper for tab content panels. Apply `.tabs-content` class.\n *\n * @function\n * @param {TabsContentProps} props - Props for the TabsContent component.\n * @returns {JSX.Element} The rendered tabs content wrapper.\n */\nexport const TabsContent: React.FC<TabsContentProps> & {\n Item: typeof TabContentItem;\n} = ({ className, children, ...props }) => {\n const contentClass = usePrefixedClassNames('tabs-content');\n return (\n <div className={classNames(contentClass, className)} {...props}>\n {children}\n </div>\n );\n};\n\n// ---------------------------------------------------------------------------\n// TabContentItem\n// ---------------------------------------------------------------------------\n\n/**\n * Props for the TabContentItem component.\n *\n * @property {number} index - The tab index this content panel corresponds to.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Panel content.\n */\nexport interface TabContentItemProps extends React.HTMLAttributes<HTMLDivElement> {\n index: number;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Individual content panel. Shows/hides based on active tab from context.\n *\n * @function\n * @param {TabContentItemProps} props - Props for the TabContentItem component.\n * @returns {JSX.Element} The rendered tab content panel.\n */\nexport const TabContentItem: React.FC<TabContentItemProps> = ({\n index,\n className,\n children,\n ...props\n}) => {\n const ctx = useTabsContext();\n const isActive = ctx ? ctx.activeTab === index : false;\n\n const itemClass = usePrefixedClassNames('tabs-content-item', {\n 'is-active': isActive,\n });\n\n return (\n <div\n className={classNames(itemClass, className)}\n role=\"tabpanel\"\n aria-hidden={!isActive}\n {...props}\n >\n {children}\n </div>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Static property attachment\n// ---------------------------------------------------------------------------\n\nTabsContent.Item = TabContentItem;\n\nTabs.List = TabList;\nTabs.Tab = Tab;\nTabs.Item = TabItem;\nTabs.Content = Object.assign(TabsContent, { Item: TabContentItem });\n\nexport default Tabs;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Overlay opacity levels for the Loading background.\n */\nexport type LoadingOverlay = 'light' | 'dark' | 'opaque';\n\n/**\n * Color variants for the Loading spinner.\n */\nexport type LoadingColor =\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger';\n\n/**\n * Props for the Loading component.\n *\n * @property {boolean} [active] - Whether the loading overlay is visible.\n * @property {boolean} [isFullPage] - Cover the entire viewport.\n * @property {'small' | 'medium' | 'large'} [size] - Size of the loading spinner.\n * @property {LoadingColor} [color] - Color variant for the spinner. Default is light grey.\n * @property {boolean} [canCancel] - Show a cancel button/allow closing.\n * @property {() => void} [onCancel] - Callback when cancel is triggered.\n * @property {React.ReactNode} [children] - Content to display below the spinner.\n * @property {string} [className] - Additional CSS classes.\n * @property {string} [overlayClassName] - Additional classes for the overlay.\n * @property {string} [iconClassName] - Additional classes for the spinner icon.\n * @property {React.ReactNode} [indicator] - Custom content to replace the default CSS spinner. The Loading component wraps it in a spinning container.\n * @property {LoadingOverlay} [overlay] - Overlay opacity level: 'light', 'dark', or 'opaque'. Defaults to a medium opacity.\n */\nexport interface LoadingProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor' | 'size' | 'overlay'> {\n active?: boolean;\n isFullPage?: boolean;\n size?: 'small' | 'medium' | 'large';\n color?: LoadingColor;\n canCancel?: boolean;\n onCancel?: () => void;\n overlayClassName?: string;\n iconClassName?: string;\n indicator?: React.ReactNode;\n overlay?: LoadingOverlay;\n}\n\n/**\n * Loading component for displaying a loading overlay with spinner.\n *\n * Can be used as a full-page overlay or a container overlay to indicate\n * loading states. Supports different sizes, color variants, and optional\n * cancel functionality.\n *\n * @function\n * @param {LoadingProps} props - Props for the Loading component.\n * @returns {JSX.Element | null} The rendered loading overlay or null if not active.\n *\n * @example\n * // Full page loading\n * <Loading active isFullPage />\n *\n * @example\n * // Container loading with message\n * <div style={{ position: 'relative', height: '200px' }}>\n * <Loading active>Loading data...</Loading>\n * </div>\n *\n * @example\n * // With color variant\n * <Loading active color=\"primary\" />\n *\n * @example\n * // With cancel functionality\n * <Loading\n * active={isLoading}\n * canCancel\n * onCancel={() => setIsLoading(false)}\n * />\n */\nexport const Loading: React.FC<LoadingProps> = ({\n active = false,\n isFullPage = false,\n size,\n color,\n canCancel = false,\n onCancel,\n children,\n className,\n overlayClassName,\n iconClassName,\n indicator,\n overlay,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n // Generate Bulma classes with prefix\n const loadingClasses = usePrefixedClassNames('loading', {\n 'is-active': active,\n 'is-full-page': isFullPage,\n 'is-cancelable': canCancel,\n [`is-${overlay}`]: !!overlay,\n [`is-${color}`]: !!color,\n });\n\n const iconClasses = usePrefixedClassNames('loading-icon', {\n [`is-${size}`]: size,\n });\n\n // Combine classes\n const combinedClasses = classNames(\n loadingClasses,\n bulmaHelperClasses,\n className\n );\n const combinedOverlayClasses = classNames(\n 'loading-overlay',\n overlayClassName\n );\n const combinedIconClasses = classNames(iconClasses, iconClassName);\n\n // Handle cancel click\n const handleOverlayClick = () => {\n if (canCancel && onCancel) {\n onCancel();\n }\n };\n\n // Handle escape key\n React.useEffect(() => {\n if (!active || !canCancel || !onCancel) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onCancel();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [active, canCancel, onCancel]);\n\n // Prevent body scroll when full page loading is active\n React.useEffect(() => {\n if (isFullPage && active) {\n document.body.style.overflow = 'hidden';\n return () => {\n document.body.style.overflow = '';\n };\n }\n return undefined;\n }, [isFullPage, active]);\n\n if (!active) {\n return null;\n }\n\n return (\n <div\n className={combinedClasses}\n role=\"alert\"\n aria-busy=\"true\"\n aria-label=\"Loading\"\n {...rest}\n >\n <div\n className={combinedOverlayClasses}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n <div className=\"loading-content\">\n {indicator ? (\n <span className=\"loading-icon-custom\">{indicator}</span>\n ) : (\n <span className={combinedIconClasses} />\n )}\n {children && <div className=\"loading-text\">{children}</div>}\n {canCancel && (\n <button\n type=\"button\"\n className=\"loading-cancel\"\n onClick={onCancel}\n aria-label=\"Cancel loading\"\n >\n Cancel\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default Loading;\n","import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Collapse component.\n *\n * @property {boolean} [open] - Controlled open state. If provided, component is controlled.\n * @property {boolean} [defaultOpen] - Initial open state for uncontrolled usage.\n * @property {() => void} [onOpen] - Callback when collapse opens.\n * @property {() => void} [onClose] - Callback when collapse closes.\n * @property {React.ReactNode} [trigger] - The clickable trigger element (usually a header/button).\n * @property {'fade'|'slide'|false} [animation] - Animation type. 'fade' for opacity transition, 'slide' for height transition, false to disable. Default: 'fade'.\n * @property {'top'|'bottom'} [position] - Position of trigger relative to content. Default: 'top'.\n * @property {string} [ariaId] - Custom aria id for accessibility.\n * @property {boolean} [bordered] - Whether to show a border around the collapse.\n * @property {React.ReactNode} [children] - The collapsible content.\n * @property {string} [className] - Additional CSS classes.\n * @property {string} [triggerClassName] - Additional classes for the trigger wrapper.\n * @property {string} [contentClassName] - Additional classes for the content wrapper.\n */\nexport interface CollapseProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n trigger?: React.ReactNode;\n animation?: 'fade' | 'slide' | false;\n position?: 'top' | 'bottom';\n ariaId?: string;\n bordered?: boolean;\n triggerClassName?: string;\n contentClassName?: string;\n}\n\n/**\n * Collapse component for expandable/collapsible content panels.\n *\n * Can be used in controlled or uncontrolled mode. Supports animation\n * and accessibility features for screen readers.\n *\n * @function\n * @param {CollapseProps} props - Props for the Collapse component.\n * @returns {JSX.Element} The rendered collapse component.\n *\n * @example\n * // Basic uncontrolled collapse\n * <Collapse trigger={<button>Click to toggle</button>}>\n * <p>Collapsible content here</p>\n * </Collapse>\n *\n * @example\n * // Controlled collapse\n * const [isOpen, setIsOpen] = useState(false);\n * <Collapse\n * open={isOpen}\n * trigger={<button onClick={() => setIsOpen(!isOpen)}>Toggle</button>}\n * >\n * <p>Content</p>\n * </Collapse>\n *\n * @example\n * // With callbacks\n * <Collapse\n * trigger={<button>Toggle</button>}\n * onOpen={() => console.log('Opened!')}\n * onClose={() => console.log('Closed!')}\n * >\n * <p>Content</p>\n * </Collapse>\n */\nexport const Collapse: React.FC<CollapseProps> = ({\n open: controlledOpen,\n defaultOpen = false,\n onOpen,\n onClose,\n trigger,\n animation = 'fade',\n position = 'top',\n ariaId,\n bordered,\n children,\n className,\n triggerClassName,\n contentClassName,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const contentRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState<number | 'auto'>(\n defaultOpen ? 'auto' : 0\n );\n\n // Determine if controlled or uncontrolled\n const isControlled = controlledOpen !== undefined;\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n // Generate unique ID for accessibility\n const uniqueId = useRef(\n ariaId || `collapse-${Math.random().toString(36).slice(2, 9)}`\n );\n\n // Update height when open state changes (for 'slide' animation)\n useEffect(() => {\n if (!contentRef.current) return undefined;\n if (animation !== 'slide') return undefined;\n\n if (isOpen) {\n // Opening: set height to content's scrollHeight\n const contentHeight = contentRef.current.scrollHeight;\n setHeight(contentHeight);\n\n // After animation completes, set to auto for dynamic content\n const timer = setTimeout(() => {\n setHeight('auto');\n }, 300); // Match CSS transition duration\n return () => clearTimeout(timer);\n } else {\n // Closing: first set to current height, then to 0\n if (height === 'auto') {\n // Read scrollHeight and offsetHeight to capture the current size and\n // force a layout flush, then schedule the height transition to 0.\n // (Reading offsetHeight after assignment is the standard reflow trick;\n // assigning into a state setter avoids a bare expression statement.)\n const currentHeight = contentRef.current.scrollHeight;\n const reflowHeight = contentRef.current.offsetHeight;\n setHeight(Math.max(currentHeight, reflowHeight));\n requestAnimationFrame(() => {\n setHeight(0);\n });\n } else {\n setHeight(0);\n }\n }\n return undefined;\n // `height` is read here but is an output of this effect; re-running when it\n // changes would re-trigger the open/close animation, so it's intentionally\n // excluded from the deps.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen, animation]);\n\n // Handle toggle\n const handleToggle = useCallback(() => {\n if (!isControlled) {\n const newOpen = !internalOpen;\n setInternalOpen(newOpen);\n if (newOpen) {\n onOpen?.();\n } else {\n onClose?.();\n }\n }\n }, [isControlled, internalOpen, onOpen, onClose]);\n\n // Handle keyboard interaction\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle();\n }\n },\n [handleToggle]\n );\n\n // Generate Bulma classes\n const collapseClasses = usePrefixedClassNames('collapse', {\n 'is-active': isOpen,\n 'is-bordered': bordered,\n });\n\n const combinedClasses = classNames(\n collapseClasses,\n bulmaHelperClasses,\n className\n );\n const combinedTriggerClasses = classNames(\n 'collapse-trigger',\n triggerClassName\n );\n const combinedContentClasses = classNames(\n 'collapse-content',\n contentClassName,\n {\n 'is-active': isOpen,\n }\n );\n\n // Content wrapper styles based on animation type\n let contentWrapperStyle: React.CSSProperties;\n\n if (animation === 'slide') {\n contentWrapperStyle = {\n height: height === 'auto' ? 'auto' : `${height}px`,\n overflow: 'hidden',\n transition: 'height 0.3s ease-in-out',\n };\n } else if (animation === 'fade') {\n contentWrapperStyle = {\n opacity: isOpen ? 1 : 0,\n overflow: 'hidden',\n height: isOpen ? 'auto' : 0,\n transition: 'opacity 0.3s ease-in-out',\n };\n } else {\n contentWrapperStyle = {\n display: isOpen ? 'block' : 'none',\n };\n }\n\n const triggerElement = (\n <div\n className={combinedTriggerClasses}\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n aria-expanded={isOpen}\n aria-controls={uniqueId.current}\n >\n {trigger}\n </div>\n );\n\n const contentElement = (\n <div style={contentWrapperStyle}>\n <div\n ref={contentRef}\n id={uniqueId.current}\n className={combinedContentClasses}\n aria-hidden={!isOpen}\n >\n {children}\n </div>\n </div>\n );\n\n return (\n <div className={combinedClasses} {...rest}>\n {position === 'bottom' ? (\n <>\n {contentElement}\n {triggerElement}\n </>\n ) : (\n <>\n {triggerElement}\n {contentElement}\n </>\n )}\n </div>\n );\n};\n\nexport default Collapse;\n","import React, {\n useState,\n useRef,\n useEffect,\n useLayoutEffect,\n useCallback,\n} from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/** Screen positions for the tooltip. */\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right' | 'auto';\n/** Color variants for the tooltip. */\nexport type TooltipColor =\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'dark'\n | 'light';\n/** Size variants for the tooltip. */\nexport type TooltipSize = 'small' | 'medium' | 'large';\n\n/**\n * Props for the Tooltip component.\n *\n * @property {string} [label] - The tooltip text content.\n * @property {React.ReactNode} [content] - Custom rich content for the tooltip (takes precedence over label).\n * @property {TooltipPosition} [position] - Position of the tooltip. Default: 'top'.\n * @property {TooltipColor} [color] - Color variant for the tooltip.\n * @property {TooltipSize} [size] - Size variant for the tooltip ('small', 'medium', 'large').\n * @property {boolean} [active] - Force tooltip to be always visible.\n * @property {boolean} [multiline] - Allow tooltip to wrap to multiple lines.\n * @property {boolean} [animated] - Enable fade animation. Default: true.\n * @property {boolean} [square] - Use square corners instead of rounded.\n * @property {boolean} [dashed] - Show dashed underline on trigger.\n * @property {number} [delay] - Delay before showing tooltip (ms).\n * @property {number} [closeDelay] - Delay before hiding tooltip after mouse leave (ms).\n * @property {React.ReactNode} [children] - The element that triggers the tooltip.\n * @property {string} [className] - Additional CSS classes.\n * @property {string} [tooltipClassName] - Additional classes for the tooltip element.\n */\nexport interface TooltipProps\n extends\n Omit<React.HTMLAttributes<HTMLSpanElement>, 'color' | 'content'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n label?: string;\n content?: React.ReactNode;\n position?: TooltipPosition;\n color?: TooltipColor;\n size?: TooltipSize;\n active?: boolean;\n multiline?: boolean;\n animated?: boolean;\n square?: boolean;\n dashed?: boolean;\n delay?: number;\n closeDelay?: number;\n tooltipClassName?: string;\n}\n\n/**\n * Tooltip component for displaying helpful information on hover.\n *\n * Shows a small popup with text when the user hovers over or focuses\n * on the wrapped element. Supports multiple positions and color variants.\n *\n * @function\n * @param {TooltipProps} props - Props for the Tooltip component.\n * @returns {JSX.Element} The rendered tooltip wrapper.\n *\n * @example\n * // Basic tooltip\n * <Tooltip label=\"This is helpful info\">\n * <button>Hover me</button>\n * </Tooltip>\n *\n * @example\n * // Positioned tooltip with color\n * <Tooltip label=\"Delete item\" position=\"right\" color=\"danger\">\n * <Icon icon=\"fas fa-trash\" />\n * </Tooltip>\n *\n * @example\n * // Multiline tooltip\n * <Tooltip label=\"This is a longer tooltip that wraps to multiple lines\" multiline>\n * <span>?</span>\n * </Tooltip>\n */\nexport const Tooltip: React.FC<TooltipProps> = ({\n label,\n content,\n position = 'top',\n color,\n size,\n active: alwaysActive,\n multiline = false,\n animated = true,\n square = false,\n dashed = false,\n delay = 0,\n closeDelay = 0,\n children,\n className,\n tooltipClassName,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const [isVisible, setIsVisible] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [resolvedPosition, setResolvedPosition] = useState<\n Exclude<TooltipPosition, 'auto'>\n >(position === 'auto' ? 'top' : position);\n const [contentStyle, setContentStyle] = useState<React.CSSProperties>({});\n const openTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const wrapperRef = useRef<HTMLSpanElement | null>(null);\n const contentRef = useRef<HTMLSpanElement | null>(null);\n\n // Clear timeouts on unmount\n useEffect(() => {\n return () => {\n if (openTimeoutRef.current) {\n clearTimeout(openTimeoutRef.current);\n }\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n }\n };\n }, []);\n\n // Handle delayed visibility\n useEffect(() => {\n if (isHovering) {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = null;\n }\n if (delay > 0) {\n openTimeoutRef.current = setTimeout(() => {\n setIsVisible(true);\n }, delay);\n } else {\n setIsVisible(true);\n }\n } else {\n if (openTimeoutRef.current) {\n clearTimeout(openTimeoutRef.current);\n openTimeoutRef.current = null;\n }\n if (closeDelay > 0) {\n closeTimeoutRef.current = setTimeout(() => {\n setIsVisible(false);\n }, closeDelay);\n } else {\n setIsVisible(false);\n }\n }\n }, [isHovering, delay, closeDelay]);\n\n // Auto-placement and overflow correction\n useLayoutEffect(() => {\n const isAuto = position === 'auto';\n\n if (!isAuto) {\n setResolvedPosition(position);\n }\n\n const showing = isVisible || alwaysActive;\n if (!showing) {\n setContentStyle({});\n return;\n }\n\n const wrapper = wrapperRef.current;\n const content = contentRef.current;\n if (!wrapper || !content) return;\n\n const wrapperRect = wrapper.getBoundingClientRect();\n const margin = 40;\n const edgePadding = 8; // minimum distance from viewport edge\n\n // Step 1: determine position (auto mode only)\n if (isAuto) {\n const spaceTop = wrapperRect.top;\n const spaceBottom = window.innerHeight - wrapperRect.bottom;\n\n if (spaceTop >= margin) {\n setResolvedPosition('top');\n } else if (spaceBottom >= margin) {\n setResolvedPosition('bottom');\n } else if (window.innerWidth - wrapperRect.right >= wrapperRect.left) {\n setResolvedPosition('right');\n } else {\n setResolvedPosition('left');\n }\n }\n\n // Step 2: measure tooltip content and correct overflow.\n // Use requestAnimationFrame so the resolved position class is applied first.\n requestAnimationFrame(() => {\n const contentEl = contentRef.current;\n if (!contentEl) return;\n\n const contentRect = contentEl.getBoundingClientRect();\n const style: React.CSSProperties = {};\n\n // For top/bottom positions, tooltip is centered horizontally via CSS\n // (left: 50%; transform: translateX(-50%)).\n // Check if it overflows left or right and apply a corrective shift.\n const pos = isAuto ? undefined : position; // read from state won't be updated yet in auto\n const effectivePos = pos || 'top'; // fallback, actual is set by state\n const isVertical =\n effectivePos === 'top' ||\n effectivePos === 'bottom' ||\n resolvedPosition === 'top' ||\n resolvedPosition === 'bottom';\n\n if (isVertical) {\n if (contentRect.left < edgePadding) {\n // Overflows left — shift right\n const shift = edgePadding - contentRect.left;\n style.left = `calc(50% + ${shift}px)`;\n (style as Record<string, string>)['--tooltip-arrow-offset'] =\n `${-shift}px`;\n } else if (contentRect.right > window.innerWidth - edgePadding) {\n // Overflows right — shift left\n const shift = contentRect.right - (window.innerWidth - edgePadding);\n style.left = `calc(50% - ${shift}px)`;\n (style as Record<string, string>)['--tooltip-arrow-offset'] =\n `${shift}px`;\n }\n } else {\n // For left/right positions, tooltip is centered vertically via CSS\n // (top: 50%; transform: translateY(-50%)).\n if (contentRect.top < edgePadding) {\n const shift = edgePadding - contentRect.top;\n style.top = `calc(50% + ${shift}px)`;\n (style as Record<string, string>)['--tooltip-arrow-offset'] =\n `${-shift}px`;\n } else if (contentRect.bottom > window.innerHeight - edgePadding) {\n const shift = contentRect.bottom - (window.innerHeight - edgePadding);\n style.top = `calc(50% - ${shift}px)`;\n (style as Record<string, string>)['--tooltip-arrow-offset'] =\n `${shift}px`;\n }\n }\n\n setContentStyle(style);\n });\n }, [position, resolvedPosition, isVisible, alwaysActive, label, content]);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovering(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovering(false);\n }, []);\n\n const handleFocus = useCallback(() => {\n setIsHovering(true);\n }, []);\n\n const handleBlur = useCallback(() => {\n setIsHovering(false);\n }, []);\n\n // Generate Bulma classes\n const tooltipClasses = usePrefixedClassNames('tooltip', {\n 'is-active': alwaysActive || isVisible,\n [`is-${resolvedPosition}`]: resolvedPosition,\n [`is-${color}`]: color,\n [`is-${size}`]: size,\n 'is-multiline': multiline,\n 'is-animated': animated,\n 'is-square': square,\n 'is-dashed': dashed,\n });\n\n const combinedClasses = classNames(\n tooltipClasses,\n bulmaHelperClasses,\n className\n );\n const combinedTooltipClasses = usePrefixedClassNames(\n 'tooltip-content',\n tooltipClassName\n );\n\n return (\n <span\n ref={wrapperRef}\n className={combinedClasses}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...(label ? { 'data-tooltip': label } : {})}\n {...rest}\n >\n {children}\n <span\n ref={contentRef}\n className={combinedTooltipClasses}\n role=\"tooltip\"\n aria-hidden={!isVisible && !alwaysActive}\n style={Object.keys(contentStyle).length > 0 ? contentStyle : undefined}\n >\n {content || label}\n </span>\n </span>\n );\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/** Available size modifiers for the Steps component. */\nexport type StepsSize = 'small' | 'medium' | 'large';\n/** Available color variants for the Steps component. */\nexport type StepsColor =\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger';\n\n/**\n * Props for individual Step items.\n *\n * @property {React.ReactNode} [label] - Step label/title.\n * @property {React.ReactNode} [icon] - Icon for the step marker.\n * @property {React.ReactNode} [completedIcon] - Custom icon for completed state. Set to null to show step number instead of checkmark.\n * @property {boolean} [clickable] - Whether this step is clickable.\n * @property {string} [className] - Additional class for this step.\n */\nexport interface StepItemProps {\n /** Step label/title */\n label?: React.ReactNode;\n /** Icon for the step marker */\n icon?: React.ReactNode;\n /** Custom icon for completed state. Set to null to show step number instead of checkmark. */\n completedIcon?: React.ReactNode;\n /** Whether this step is clickable */\n clickable?: boolean;\n /** Additional class for this step */\n className?: string;\n}\n\n/**\n * Props for the Steps component.\n *\n * @property {number} [value] - Current active step (0-indexed).\n * @property {StepItemProps[]} [items] - Array of step items.\n * @property {StepsSize} [size] - Size of the steps.\n * @property {StepsColor} [color] - Color variant.\n * @property {boolean} [hasMarker] - Show step markers. Default: true.\n * @property {boolean} [animated] - Enable animations. Default: true.\n * @property {boolean} [rounded] - Use rounded markers. Default: true.\n * @property {boolean} [vertical] - Vertical layout.\n * @property {'bottom' | 'right' | 'left'} [labelPosition] - Position of labels.\n * @property {boolean} [showStepNumbers] - Show step numbers in markers. Default: true.\n * @property {boolean} [hasNavigation] - Render built-in prev/next buttons.\n * @property {string} [prevLabel] - Custom prev button text (default 'Previous').\n * @property {string} [nextLabel] - Custom next button text (default 'Next').\n * @property {() => void} [onPrev] - Custom prev button callback.\n * @property {() => void} [onNext] - Custom next button callback.\n * @property {(step: number) => void} [onStepClick] - Callback when a step is clicked.\n * @property {'minimal' | 'compact' | 'right'} [mobileMode] - Mobile display mode.\n * @property {React.ReactNode} [children] - Step children (alternative to items).\n */\nexport interface StepsProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor' | 'size'> {\n value?: number;\n items?: StepItemProps[];\n size?: StepsSize;\n color?: StepsColor;\n hasMarker?: boolean;\n animated?: boolean;\n rounded?: boolean;\n vertical?: boolean;\n labelPosition?: 'bottom' | 'right' | 'left';\n mobileMode?: 'minimal' | 'compact' | 'right';\n showStepNumbers?: boolean;\n hasNavigation?: boolean;\n prevLabel?: string;\n nextLabel?: string;\n onPrev?: () => void;\n onNext?: () => void;\n onStepClick?: (step: number) => void;\n}\n\n/**\n * Props for the Step subcomponent.\n *\n * @property {boolean} [isActive] - Whether this step is active.\n * @property {boolean} [isCompleted] - Whether this step is completed.\n * @property {React.ReactNode} [label] - Step label/title.\n * @property {React.ReactNode} [icon] - Icon for the step marker.\n * @property {boolean} [clickable] - Whether this step is clickable.\n * @property {() => void} [onClick] - Click handler.\n * @property {number} [stepNumber] - Step number to display in marker (1-indexed).\n * @property {React.ReactNode} [completedIcon] - Custom icon for completed state.\n */\nexport interface StepProps\n extends\n Omit<React.LiHTMLAttributes<HTMLLIElement>, 'color'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Whether this step is active */\n isActive?: boolean;\n /** Whether this step is completed */\n isCompleted?: boolean;\n /** Step label/title */\n label?: React.ReactNode;\n /** Icon for the step marker */\n icon?: React.ReactNode;\n /** Whether this step is clickable */\n clickable?: boolean;\n /** Click handler */\n onClick?: () => void;\n /** Step number to display in marker (1-indexed) */\n stepNumber?: number;\n /** Custom icon for completed state. Set to null to show step number instead of checkmark. */\n completedIcon?: React.ReactNode;\n}\n\n/**\n * Individual Step component for use inside Steps.\n *\n * @function\n * @param {StepProps} props - Props for the Step component.\n * @returns {JSX.Element} The rendered step segment.\n */\nexport const Step: React.FC<StepProps> = ({\n isActive = false,\n isCompleted = false,\n label,\n icon,\n clickable = false,\n onClick,\n stepNumber,\n completedIcon,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n const stepClasses = classNames(\n 'steps-segment',\n {\n 'is-active': isActive,\n 'is-completed': isCompleted,\n },\n bulmaHelperClasses,\n className\n );\n\n const handleClick = () => {\n if (clickable && onClick) {\n onClick();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (clickable && onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onClick();\n }\n };\n\n const resolvedCompletedIcon =\n completedIcon === undefined ? '\\u2713' : completedIcon;\n const markerContent =\n icon ||\n (isCompleted && resolvedCompletedIcon\n ? resolvedCompletedIcon\n : (stepNumber ?? null));\n\n return (\n <li\n className={stepClasses}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n tabIndex={clickable ? 0 : undefined}\n role={clickable ? 'button' : undefined}\n aria-current={isActive ? 'step' : undefined}\n {...rest}\n >\n <div className=\"steps-link\">\n <span className=\"steps-marker\">{markerContent}</span>\n {(label || children) && (\n <div className=\"steps-content\">\n <p className=\"steps-title\">{label || children}</p>\n </div>\n )}\n </div>\n </li>\n );\n};\n\n/**\n * Steps component for multi-step progress indication.\n *\n * Use for wizard flows, checkout processes, or any multi-step workflow.\n * Supports horizontal and vertical layouts with customizable markers.\n *\n * @function\n * @param {StepsProps} props - Props for the Steps component.\n * @returns {JSX.Element} The rendered steps component.\n *\n * @example\n * // Basic steps with items\n * <Steps\n * value={1}\n * items={[\n * { label: 'Account' },\n * { label: 'Profile' },\n * { label: 'Complete' },\n * ]}\n * />\n *\n * @example\n * // Clickable steps with navigation\n * <Steps\n * value={currentStep}\n * onStepClick={(step) => setCurrentStep(step)}\n * hasNavigation\n * items={[\n * { label: 'Step 1', clickable: true },\n * { label: 'Step 2', clickable: true },\n * { label: 'Step 3', clickable: true },\n * ]}\n * />\n */\nexport const Steps: React.FC<StepsProps> & { Step: typeof Step } = ({\n value = 0,\n items,\n size,\n color,\n hasMarker = true,\n animated = true,\n rounded = true,\n vertical = false,\n labelPosition = 'bottom',\n mobileMode,\n showStepNumbers = true,\n hasNavigation = false,\n prevLabel,\n nextLabel,\n onPrev,\n onNext,\n onStepClick,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n\n // Generate classes for the wrapper div\n const stepsClasses = usePrefixedClassNames('steps', {\n [`is-${size}`]: size,\n [`is-${color}`]: color,\n 'has-marker': hasMarker,\n 'is-animated': animated,\n 'is-rounded': rounded,\n 'is-vertical': vertical,\n [`has-label-${labelPosition}`]:\n labelPosition && (labelPosition !== 'bottom' || vertical),\n [`is-${mobileMode}`]: mobileMode,\n });\n\n const combinedClasses = classNames(\n stepsClasses,\n bulmaHelperClasses,\n className\n );\n\n // Generate classes for the ul (list)\n const listClasses = classNames('steps-list', {\n 'is-vertical': vertical,\n });\n\n // Count total steps for navigation\n const totalSteps = items ? items.length : React.Children.count(children);\n\n // Render items if provided\n const renderSteps = () => {\n if (items && items.length > 0) {\n return items.map((item, index) => (\n <Step\n key={index}\n isActive={index === value}\n isCompleted={index < value}\n label={item.label}\n icon={item.icon}\n completedIcon={item.completedIcon}\n clickable={item.clickable}\n stepNumber={showStepNumbers ? index + 1 : undefined}\n onClick={\n item.clickable && onStepClick ? () => onStepClick(index) : undefined\n }\n className={item.className}\n />\n ));\n }\n\n // If children are provided, clone them with active/completed states\n if (children) {\n return React.Children.map(children, (child, index) => {\n if (React.isValidElement<StepProps>(child)) {\n return React.cloneElement(child, {\n isActive: index === value,\n isCompleted: index < value,\n stepNumber: showStepNumbers ? index + 1 : undefined,\n onClick:\n child.props.clickable && onStepClick\n ? () => onStepClick(index)\n : child.props.onClick,\n });\n }\n return child;\n });\n }\n\n return null;\n };\n\n return (\n <div className={combinedClasses} {...rest}>\n <ul className={listClasses}>{renderSteps()}</ul>\n {hasNavigation && (\n <div className=\"steps-navigation\">\n <button\n className=\"button\"\n disabled={value === 0}\n onClick={onPrev ?? (() => onStepClick?.(value - 1))}\n >\n {prevLabel ?? 'Previous'}\n </button>\n <button\n className=\"button is-primary\"\n disabled={value === totalSteps - 1}\n onClick={onNext ?? (() => onStepClick?.(value + 1))}\n >\n {nextLabel ?? 'Next'}\n </button>\n </div>\n )}\n </div>\n );\n};\n\n// Attach Step as static property\nSteps.Step = Step;\n\nexport default Steps;\n","import React, { forwardRef, useEffect, useCallback, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/** Position of the sidebar relative to the viewport. */\nexport type SidebarPosition = 'left' | 'right';\n\n/**\n * Props for the Sidebar component.\n *\n * @property {boolean} isOpen - Whether the sidebar is open.\n * @property {() => void} [onClose] - Callback when sidebar should close.\n * @property {SidebarPosition} [position] - Which side the sidebar appears from. Default: 'left'.\n * @property {string} [width] - Custom width. Default: '260px'.\n * @property {boolean} [fullWidth] - Sidebar takes full width (mobile-style).\n * @property {boolean} [overlay] - Show overlay behind sidebar. Default: true.\n * @property {boolean} [overlayClose] - Close sidebar when overlay is clicked. Default: true.\n * @property {boolean} [escapeClose] - Close sidebar on Escape key. Default: true.\n * @property {boolean} [canCancel] - Allow closing the sidebar. Default: true.\n * @property {React.ReactNode} [children] - Content to display in the sidebar.\n */\nexport interface SidebarProps\n extends\n Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'color'>,\n BulmaClassesProps {\n isOpen: boolean;\n onClose?: () => void;\n position?: SidebarPosition;\n width?: string;\n fullWidth?: boolean;\n overlay?: boolean;\n overlayClose?: boolean;\n escapeClose?: boolean;\n canCancel?: boolean;\n children?: React.ReactNode;\n /** Render without portal. Default false. */\n inline?: boolean;\n}\n\n/**\n * Sidebar component for slide-out navigation panels.\n *\n * Provides a side panel that slides in from the left or right,\n * with optional overlay, keyboard support, and customizable width.\n *\n * @function\n * @param {SidebarProps} props - Props for the Sidebar component.\n * @param {React.Ref<HTMLElement>} ref - Forwarded ref to the sidebar element.\n * @returns {JSX.Element | null} The rendered sidebar component.\n *\n * @example\n * // Basic sidebar\n * const [isOpen, setIsOpen] = useState(false);\n * <Sidebar isOpen={isOpen} onClose={() => setIsOpen(false)}>\n * <Menu>...</Menu>\n * </Sidebar>\n *\n * @example\n * // Right-side sidebar with custom width\n * <Sidebar\n * isOpen={isOpen}\n * onClose={() => setIsOpen(false)}\n * position=\"right\"\n * width=\"320px\"\n * >\n * <div>Panel content</div>\n * </Sidebar>\n */\nconst SidebarComponent = forwardRef<HTMLElement, SidebarProps>(\n (\n {\n isOpen,\n onClose,\n position = 'left',\n width = '260px',\n fullWidth = false,\n overlay = true,\n overlayClose = true,\n escapeClose = true,\n canCancel = true,\n children,\n inline = false,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const sidebarRef = useRef<HTMLElement>(null);\n\n // Close handler\n const handleClose = useCallback(() => {\n if (canCancel && onClose) {\n onClose();\n }\n }, [canCancel, onClose]);\n\n // Handle overlay click\n const handleOverlayClick = useCallback(() => {\n if (overlayClose) {\n handleClose();\n }\n }, [overlayClose, handleClose]);\n\n // Handle escape key\n useEffect(() => {\n if (!isOpen || !escapeClose) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleClose();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [isOpen, escapeClose, handleClose]);\n\n // Prevent body scroll when sidebar is open\n useEffect(() => {\n if (isOpen && overlay) {\n const originalOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n return () => {\n document.body.style.overflow = originalOverflow;\n };\n }\n return undefined;\n }, [isOpen, overlay]);\n\n // Focus trap (basic - focus sidebar when opened)\n useEffect(() => {\n if (isOpen) {\n const element = sidebarRef.current;\n if (element) {\n // Focus first focusable element or sidebar itself\n const focusable = element.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n if (focusable) {\n focusable.focus();\n } else {\n element.focus();\n }\n }\n }\n }, [isOpen]);\n\n // Use combined ref\n const combinedRef = useCallback(\n (node: HTMLElement | null) => {\n (sidebarRef as React.MutableRefObject<HTMLElement | null>).current =\n node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLElement | null>).current = node;\n }\n },\n [ref]\n );\n\n // Generate classes\n const sidebarClasses = usePrefixedClassNames('sidebar', {\n 'is-active': isOpen,\n [`is-${position}`]: position,\n 'is-fullwidth': fullWidth,\n });\n const backgroundClass = usePrefixedClassNames('sidebar-background');\n const contentClass = usePrefixedClassNames('sidebar-content');\n\n const combinedClasses = classNames(\n sidebarClasses,\n bulmaHelperClasses,\n className\n );\n\n // Custom style for width\n const sidebarStyle: React.CSSProperties = {\n ...style,\n '--bulma-sidebar-width': fullWidth ? '100%' : width,\n } as React.CSSProperties;\n\n const sidebarContent = (\n <>\n {overlay && (\n <div\n className={classNames(backgroundClass, {\n 'is-active': isOpen,\n })}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n )}\n <aside\n ref={combinedRef}\n className={combinedClasses}\n style={sidebarStyle}\n role=\"dialog\"\n aria-modal={overlay ? 'true' : undefined}\n aria-hidden={!isOpen}\n tabIndex={-1}\n {...rest}\n >\n <div className={contentClass}>{children}</div>\n </aside>\n </>\n );\n\n if (inline) {\n return sidebarContent;\n }\n\n // Render to portal for proper stacking\n if (typeof document !== 'undefined') {\n return createPortal(sidebarContent, document.body);\n }\n\n return null;\n }\n);\n\nSidebarComponent.displayName = 'Sidebar';\n\n// Sub-components\n\n/**\n * Props for the SidebarHeader component.\n *\n * @property {React.ReactNode} [children] - Header content.\n */\ninterface SidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n}\n\n/**\n * Sidebar header section.\n *\n * @function\n * @param {SidebarHeaderProps} props - Props for the SidebarHeader component.\n * @returns {JSX.Element} The rendered sidebar header.\n */\nconst SidebarHeader: React.FC<SidebarHeaderProps> = ({\n className,\n children,\n ...props\n}) => {\n const headerClass = usePrefixedClassNames('sidebar-header');\n return (\n <div className={classNames(headerClass, className)} {...props}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the SidebarTitle component.\n *\n * @property {React.ReactNode} [children] - Title content.\n */\ninterface SidebarTitleProps extends React.HTMLAttributes<HTMLParagraphElement> {\n children?: React.ReactNode;\n}\n\n/**\n * Sidebar title text.\n *\n * @function\n * @param {SidebarTitleProps} props - Props for the SidebarTitle component.\n * @returns {JSX.Element} The rendered sidebar title.\n */\nconst SidebarTitle: React.FC<SidebarTitleProps> = ({\n className,\n children,\n ...props\n}) => {\n const titleClass = usePrefixedClassNames('sidebar-title');\n return (\n <p className={classNames(titleClass, className)} {...props}>\n {children}\n </p>\n );\n};\n\n/**\n * Props for the SidebarClose component.\n * Extends standard button attributes.\n */\ntype SidebarCloseProps = React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * Sidebar close button.\n *\n * @function\n * @param {SidebarCloseProps} props - Props for the SidebarClose component.\n * @returns {JSX.Element} The rendered close button.\n */\nconst SidebarClose: React.FC<SidebarCloseProps> = ({\n className,\n children,\n ...props\n}) => {\n const closeClass = usePrefixedClassNames('sidebar-close');\n return (\n <button\n type=\"button\"\n className={classNames(closeClass, className)}\n aria-label=\"Close\"\n {...props}\n >\n {children}\n </button>\n );\n};\n\n/**\n * Props for the SidebarBody component.\n *\n * @property {React.ReactNode} [children] - Body content.\n */\ninterface SidebarBodyProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n}\n\n/**\n * Sidebar body/main content area.\n *\n * @function\n * @param {SidebarBodyProps} props - Props for the SidebarBody component.\n * @returns {JSX.Element} The rendered sidebar body.\n */\nconst SidebarBody: React.FC<SidebarBodyProps> = ({\n className,\n children,\n ...props\n}) => {\n const bodyClass = usePrefixedClassNames('sidebar-body');\n return (\n <div className={classNames(bodyClass, className)} {...props}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the SidebarFooter component.\n *\n * @property {React.ReactNode} [children] - Footer content.\n */\ninterface SidebarFooterProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n}\n\n/**\n * Sidebar footer section.\n *\n * @function\n * @param {SidebarFooterProps} props - Props for the SidebarFooter component.\n * @returns {JSX.Element} The rendered sidebar footer.\n */\nconst SidebarFooter: React.FC<SidebarFooterProps> = ({\n className,\n children,\n ...props\n}) => {\n const footerClass = usePrefixedClassNames('sidebar-footer');\n return (\n <div className={classNames(footerClass, className)} {...props}>\n {children}\n </div>\n );\n};\n\n// Attach static subcomponents\nexport const Sidebar = Object.assign(SidebarComponent, {\n Header: SidebarHeader,\n Title: SidebarTitle,\n Close: SidebarClose,\n Body: SidebarBody,\n Footer: SidebarFooter,\n});\n\nexport default Sidebar;\n","import React, {\n forwardRef,\n useEffect,\n useRef,\n useState,\n useCallback,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/** Color/style type presets for toast messages. */\nexport type ToastType =\n | 'default'\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger';\n\n/** Screen positions where toasts can be displayed. */\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\n/**\n * Props for the Toast component.\n *\n * @property {string} message - The message to display.\n * @property {ToastType} [type] - Colors the toast background. Default: 'default'.\n * @property {ToastType} [actionType] - Colors the action button text.\n * @property {ToastPosition} [position] - Position on the screen. Default: 'top-right'.\n * @property {number} [duration] - Duration in ms before auto-close (0 disables). Default: 2000.\n * @property {boolean} [indefinite] - Stay open until dismissed. Default: false.\n * @property {boolean} [dismissible] - Click toast (or outside) to dismiss. Default: true.\n * @property {boolean} [closable] - Show an explicit close (X) button. Default: false.\n * @property {boolean} [rounded] - Pill-shaped toast. Default: false.\n * @property {boolean} [pauseOnHover] - Pause auto-close timer on hover. Default: false.\n * @property {boolean} [cancelable] - Whether the toast can be dismissed with Escape. Default: true.\n * @property {string} [actionText] - Text for action button.\n * @property {string} [cancelText] - Text for cancel button.\n * @property {() => void} [onAction] - Callback when action button is clicked.\n * @property {() => void} [onClose] - Callback when toast closes.\n * @property {string | HTMLElement} [container] - Custom mount target (CSS selector string or HTMLElement).\n * @property {boolean} [inline] - Render only the .toast element without portal/container wrapper. Default: false.\n */\nexport interface ToastProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color'> {\n message: string;\n type?: ToastType;\n actionType?: ToastType;\n position?: ToastPosition;\n duration?: number;\n indefinite?: boolean;\n dismissible?: boolean;\n closable?: boolean;\n rounded?: boolean;\n pauseOnHover?: boolean;\n cancelable?: boolean;\n actionText?: string;\n cancelText?: string;\n onAction?: () => void;\n onClose?: () => void;\n container?: string | HTMLElement;\n inline?: boolean;\n}\n\n/**\n * Toast component for displaying brief notification messages with optional action buttons.\n *\n * Appears at a configurable screen position with auto-close, pause-on-hover,\n * keyboard dismiss, action/cancel buttons, and an optional explicit close button.\n *\n * @function\n * @param {ToastProps} props - Props for the Toast component.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the toast element.\n * @returns {JSX.Element | null} The rendered toast component.\n *\n * @example\n * // Basic toast\n * <Toast message=\"Operation successful!\" type=\"success\" />\n *\n * @example\n * // Toast with action button\n * <Toast message=\"Item deleted\" actionText=\"Undo\" onAction={handleUndo} />\n */\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n message,\n type = 'default',\n actionType,\n position = 'top-right',\n duration = 2000,\n indefinite = false,\n dismissible = true,\n closable = false,\n rounded = false,\n pauseOnHover = false,\n cancelable = true,\n actionText,\n cancelText,\n onAction,\n onClose,\n container,\n inline = false,\n className,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const [isVisible, setIsVisible] = useState(true);\n const [isPaused, setIsPaused] = useState(false);\n const toastRef = useRef<HTMLDivElement | null>(null);\n\n const handleClose = useCallback(() => {\n setIsVisible(false);\n onClose?.();\n }, [onClose]);\n\n const handleAction = useCallback(() => {\n onAction?.();\n handleClose();\n }, [onAction, handleClose]);\n\n useEffect(() => {\n if (indefinite || duration === 0 || isPaused) return undefined;\n\n const timer = setTimeout(() => {\n handleClose();\n }, duration);\n\n return () => clearTimeout(timer);\n }, [duration, indefinite, isPaused, handleClose]);\n\n const handleMouseEnter = useCallback(() => {\n if (pauseOnHover) {\n setIsPaused(true);\n }\n }, [pauseOnHover]);\n\n const handleMouseLeave = useCallback(() => {\n if (pauseOnHover) {\n setIsPaused(false);\n }\n }, [pauseOnHover]);\n\n // Click-outside dismiss — deferred so the click that spawned the toast\n // doesn't immediately dismiss it before it's even visible.\n useEffect(() => {\n if (!dismissible || !isVisible) return undefined;\n\n const handleDocumentClick = (e: MouseEvent) => {\n if (toastRef.current && !toastRef.current.contains(e.target as Node)) {\n handleClose();\n }\n };\n\n const raf = requestAnimationFrame(() => {\n document.addEventListener('click', handleDocumentClick);\n });\n\n return () => {\n cancelAnimationFrame(raf);\n document.removeEventListener('click', handleDocumentClick);\n };\n }, [dismissible, isVisible, handleClose]);\n\n useEffect(() => {\n if (!cancelable) return undefined;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleClose();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [cancelable, handleClose]);\n\n const containerClasses = usePrefixedClassNames('toast-container', {\n [`is-${position}`]: true,\n });\n\n const toastClasses = usePrefixedClassNames('toast', {\n [`is-${type}`]: type !== 'default',\n [`is-action-${actionType}`]: !!actionType && actionType !== 'default',\n 'is-rounded': rounded,\n });\n\n const combinedClasses = classNames(\n toastClasses,\n bulmaHelperClasses,\n className\n );\n\n if (!isVisible) {\n return null;\n }\n\n const resolveContainer = (): HTMLElement => {\n if (container) {\n if (typeof container === 'string') {\n return (\n (document.querySelector(container) as HTMLElement) || document.body\n );\n }\n return container;\n }\n return document.body;\n };\n\n const setRef = (node: HTMLDivElement | null) => {\n toastRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n const toastElement = (\n <div\n ref={setRef}\n className={combinedClasses}\n role=\"alert\"\n aria-live={\n type === 'danger' || type === 'warning' ? 'assertive' : 'polite'\n }\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={dismissible ? handleClose : undefined}\n {...rest}\n >\n <span className=\"toast-message\">{message}</span>\n {(cancelText || actionText) && (\n <div className=\"toast-actions\">\n {cancelText && (\n <span className=\"toast-cancel\">\n <button\n type=\"button\"\n className=\"button\"\n onClick={e => {\n e.stopPropagation();\n handleClose();\n }}\n >\n {cancelText}\n </button>\n </span>\n )}\n {actionText && (\n <span className=\"toast-action\">\n <button\n type=\"button\"\n className=\"button\"\n onClick={e => {\n e.stopPropagation();\n handleAction();\n }}\n >\n {actionText}\n </button>\n </span>\n )}\n </div>\n )}\n {closable && (\n <button\n type=\"button\"\n className=\"delete is-small\"\n onClick={e => {\n e.stopPropagation();\n handleClose();\n }}\n aria-label=\"Close\"\n />\n )}\n </div>\n );\n\n if (inline) {\n return toastElement;\n }\n\n const toastContent = <div className={containerClasses}>{toastElement}</div>;\n\n if (typeof document !== 'undefined') {\n return createPortal(toastContent, resolveContainer());\n }\n\n return null;\n }\n);\n\nToast.displayName = 'Toast';\n\n// Toast Manager for programmatic toasts\n\n/**\n * Options for showing a programmatic toast. Extends ToastProps with a required message.\n *\n * @property {string} message - The message to display.\n * @property {boolean} [queue] - When true, toasts enter a FIFO queue and display one at a time. Default: false.\n */\nexport interface ToastOptions extends Omit<ToastProps, 'message'> {\n message: string;\n /** When true, toasts enter a FIFO queue and display one at a time. Default false. */\n queue?: boolean;\n}\n\n/**\n * Internal representation of a toast instance.\n *\n * @property {string} id - Unique identifier for this toast.\n * @property {ToastOptions} props - Configuration options for the toast.\n */\nexport interface ToastInstance {\n id: string;\n props: ToastOptions;\n}\n\nlet toastId = 0;\nconst toastListeners: Set<(toasts: ToastInstance[]) => void> = new Set();\nlet toasts: ToastInstance[] = [];\n\n// Queued toasts: FIFO queue, one at a time\nlet queuedToasts: ToastInstance[] = [];\nlet currentQueuedToast: ToastInstance | null = null;\n\nconst notifyListeners = () => {\n const allVisible = [...toasts];\n if (currentQueuedToast) {\n allVisible.push(currentQueuedToast);\n }\n toastListeners.forEach(listener => listener([...allVisible]));\n};\n\nconst processQueuedToast = () => {\n if (currentQueuedToast || queuedToasts.length === 0) return;\n currentQueuedToast = queuedToasts.shift()!;\n notifyListeners();\n};\n\n/**\n * Programmatic toast API for showing, closing, and managing toasts.\n *\n * @example\n * toast.success('Saved!');\n * toast.show({ message: 'Item deleted', actionText: 'Undo', onAction: handleUndo });\n */\nexport const toast = {\n /**\n * Show a toast with the given options.\n * @param {ToastOptions} options - Toast configuration.\n * @returns {string} The unique ID of the created toast.\n */\n show: (options: ToastOptions): string => {\n const id = `toast-${++toastId}`;\n const instance = { id, props: options };\n\n if (options.queue) {\n queuedToasts.push(instance);\n processQueuedToast();\n } else {\n toasts.push(instance);\n notifyListeners();\n }\n\n return id;\n },\n\n /**\n * Show a success toast.\n * @param {string} message - The message to display.\n * @param {Partial<ToastOptions>} [options] - Additional options.\n * @returns {string} The toast ID.\n */\n success: (message: string, options?: Partial<ToastOptions>): string => {\n return toast.show({ message, type: 'success', ...options });\n },\n\n /**\n * Show a danger toast.\n * @param {string} message - The message to display.\n * @param {Partial<ToastOptions>} [options] - Additional options.\n * @returns {string} The toast ID.\n */\n danger: (message: string, options?: Partial<ToastOptions>): string => {\n return toast.show({ message, type: 'danger', ...options });\n },\n\n /**\n * Show a warning toast.\n * @param {string} message - The message to display.\n * @param {Partial<ToastOptions>} [options] - Additional options.\n * @returns {string} The toast ID.\n */\n warning: (message: string, options?: Partial<ToastOptions>): string => {\n return toast.show({ message, type: 'warning', ...options });\n },\n\n /**\n * Show an info toast.\n * @param {string} message - The message to display.\n * @param {Partial<ToastOptions>} [options] - Additional options.\n * @returns {string} The toast ID.\n */\n info: (message: string, options?: Partial<ToastOptions>): string => {\n return toast.show({ message, type: 'info', ...options });\n },\n\n /**\n * Close a specific toast by ID.\n * @param {string} id - The toast ID to close.\n */\n close: (id: string): void => {\n if (currentQueuedToast && currentQueuedToast.id === id) {\n currentQueuedToast = null;\n processQueuedToast();\n } else {\n queuedToasts = queuedToasts.filter(t => t.id !== id);\n toasts = toasts.filter(t => t.id !== id);\n }\n notifyListeners();\n },\n\n /** Close all toasts and clear the queue. */\n closeAll: (): void => {\n toasts = [];\n queuedToasts = [];\n currentQueuedToast = null;\n notifyListeners();\n },\n\n /**\n * Subscribe to toast state changes.\n * @param {(toasts: ToastInstance[]) => void} listener - Callback invoked on changes.\n * @returns {() => void} Unsubscribe function.\n */\n subscribe: (listener: (toasts: ToastInstance[]) => void): (() => void) => {\n toastListeners.add(listener);\n return () => toastListeners.delete(listener);\n },\n};\n\n/**\n * Container component for rendering programmatic toasts.\n * Place once at your app root to enable the toast API.\n *\n * @function\n * @param {{ position?: ToastPosition }} props - Container props.\n * @returns {JSX.Element | null} The rendered toast container, or null if empty.\n */\nexport const ToastContainer: React.FC<{ position?: ToastPosition }> = ({\n position = 'top-right',\n}) => {\n const [toastList, setToastList] = useState<ToastInstance[]>([]);\n\n useEffect(() => {\n return toast.subscribe(setToastList);\n }, []);\n\n if (typeof document === 'undefined' || toastList.length === 0) {\n return null;\n }\n\n return createPortal(\n <div className={`toast-container is-${position}`}>\n {toastList.map(t => {\n const { queue: _queue, ...toastProps } = t.props;\n return (\n <Toast\n key={t.id}\n {...toastProps}\n position={position}\n onClose={() => toast.close(t.id)}\n />\n );\n })}\n </div>,\n document.body\n );\n};\n\nexport default Toast;\n","import React, { forwardRef, useEffect, useCallback, useRef } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { Modal } from './Modal';\n\n// Ref-counted body scroll lock for chained/overlapping dialogs\nlet _scrollLockCount = 0;\nlet _originalOverflow = '';\n\n/** Valid dialog type/color values. */\nexport type DialogType = 'default' | 'success' | 'danger' | 'warning' | 'info';\n\n/**\n * Props for the Dialog component.\n *\n * @property {boolean} isOpen - Whether the dialog is open.\n * @property {string} [title] - Dialog title.\n * @property {string | React.ReactNode} message - Dialog message/content.\n * @property {DialogType} [type] - The type/color of the dialog. Default: 'default'.\n * @property {string} [confirmText] - Text for confirm button. Default: 'OK'.\n * @property {string} [cancelText] - Text for cancel button. Default: 'Cancel'.\n * @property {() => void} [onConfirm] - Callback when confirm button is clicked.\n * @property {() => void} [onCancel] - Callback when cancel button is clicked or dialog is dismissed.\n * @property {boolean} [showCancel] - Whether to show cancel button. Default: true for confirm dialogs.\n * @property {boolean} [canCancel] - Whether the dialog can be dismissed. Default: true.\n * @property {boolean} [focusCancel] - Focus cancel button instead of confirm. Default: false.\n * @property {React.ReactNode} [icon] - Custom icon to display.\n */\nexport interface DialogProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'color'> {\n isOpen: boolean;\n title?: string;\n message: string | React.ReactNode;\n type?: DialogType;\n confirmText?: string;\n cancelText?: string;\n onConfirm?: () => void;\n onCancel?: () => void;\n showCancel?: boolean;\n canCancel?: boolean;\n focusCancel?: boolean;\n icon?: React.ReactNode;\n}\n\n/**\n * Dialog component for confirmation and alert dialogs.\n *\n * Provides a modal dialog with confirm/cancel actions, customizable\n * appearance, and keyboard support.\n *\n * @function\n * @param {DialogProps} props - Props for the Dialog component.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the dialog element.\n * @returns {JSX.Element | null} The rendered dialog component.\n *\n * @example\n * // Alert dialog\n * <Dialog\n * isOpen={showAlert}\n * title=\"Success\"\n * message=\"Operation completed successfully!\"\n * type=\"success\"\n * onConfirm={() => setShowAlert(false)}\n * showCancel={false}\n * />\n *\n * @example\n * // Confirm dialog\n * <Dialog\n * isOpen={showConfirm}\n * title=\"Delete Item?\"\n * message=\"This action cannot be undone.\"\n * type=\"danger\"\n * confirmText=\"Delete\"\n * onConfirm={handleDelete}\n * onCancel={() => setShowConfirm(false)}\n * />\n */\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(\n (\n {\n isOpen,\n title,\n message,\n type = 'default',\n confirmText = 'OK',\n cancelText = 'Cancel',\n onConfirm,\n onCancel,\n showCancel = true,\n canCancel = true,\n focusCancel = false,\n icon,\n className,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const dialogRef = useRef<HTMLDivElement>(null);\n const confirmRef = useRef<HTMLButtonElement>(null);\n const cancelRef = useRef<HTMLButtonElement>(null);\n\n // Handle cancel\n const handleCancel = useCallback(() => {\n if (canCancel) {\n onCancel?.();\n }\n }, [canCancel, onCancel]);\n\n // Handle confirm\n const handleConfirm = useCallback(() => {\n onConfirm?.();\n }, [onConfirm]);\n\n // Handle background click\n const handleBackgroundClick = useCallback(() => {\n if (canCancel) {\n handleCancel();\n }\n }, [canCancel, handleCancel]);\n\n // Handle escape key\n useEffect(() => {\n if (!isOpen || !canCancel) return undefined;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleCancel();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [isOpen, canCancel, handleCancel]);\n\n // Focus management\n useEffect(() => {\n if (isOpen) {\n const buttonToFocus =\n focusCancel && showCancel ? cancelRef.current : confirmRef.current;\n buttonToFocus?.focus();\n }\n }, [isOpen, focusCancel, showCancel]);\n\n // Prevent body scroll (ref-counted so chained dialogs work correctly)\n useEffect(() => {\n if (isOpen) {\n _scrollLockCount++;\n if (_scrollLockCount === 1) {\n _originalOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n return () => {\n _scrollLockCount--;\n if (_scrollLockCount === 0) {\n document.body.style.overflow = _originalOverflow;\n }\n };\n }\n return undefined;\n }, [isOpen]);\n\n // Use combined ref\n const combinedRef = useCallback(\n (node: HTMLDivElement | null) => {\n (dialogRef as React.MutableRefObject<HTMLDivElement | null>).current =\n node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [ref]\n );\n\n // Generate classes\n const dialogClasses = usePrefixedClassNames('dialog', {\n [`is-${type}`]: type !== 'default',\n });\n const headerClass = usePrefixedClassNames('dialog-header');\n const iconClass = usePrefixedClassNames('dialog-icon');\n const titleClass = usePrefixedClassNames('dialog-title');\n const bodyClass = usePrefixedClassNames('dialog-body');\n const footerClass = usePrefixedClassNames('dialog-footer');\n const cancelButtonClass = usePrefixedClassNames('button');\n const confirmButtonClass = usePrefixedClassNames('button', {\n 'is-success': type === 'success',\n 'is-danger': type === 'danger',\n 'is-warning': type === 'warning',\n 'is-info': type === 'info',\n 'is-primary': type === 'default',\n });\n\n const combinedClasses = classNames(\n dialogClasses,\n bulmaHelperClasses,\n className\n );\n\n // Get default icon based on type\n const getDefaultIcon = () => {\n switch (type) {\n case 'success':\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M20 6L9 17l-5-5\" />\n </svg>\n );\n case 'danger':\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n );\n case 'warning':\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n stroke=\"none\"\n >\n <path d=\"M12 2L1 21h22L12 2zm0 3.99L19.53 19H4.47L12 5.99zM11 16h2v2h-2zm0-6h2v4h-2z\" />\n </svg>\n );\n case 'info':\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n stroke=\"none\"\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-1-9h2v6h-2zm0-4h2v2h-2z\" />\n </svg>\n );\n default:\n return null;\n }\n };\n\n const displayIcon = icon !== undefined ? icon : getDefaultIcon();\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <Modal isActive={isOpen}>\n <Modal.Background onClick={handleBackgroundClick} />\n <div\n ref={combinedRef}\n className={combinedClasses}\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? 'dialog-title' : undefined}\n aria-describedby=\"dialog-message\"\n {...rest}\n >\n {title && (\n <div className={headerClass}>\n {displayIcon && <span className={iconClass}>{displayIcon}</span>}\n <h3 id=\"dialog-title\" className={titleClass}>\n {title}\n </h3>\n </div>\n )}\n <div id=\"dialog-message\" className={bodyClass}>\n {message}\n </div>\n <div className={footerClass}>\n {showCancel && (\n <button\n ref={cancelRef}\n type=\"button\"\n className={cancelButtonClass}\n onClick={handleCancel}\n >\n {cancelText}\n </button>\n )}\n <button\n ref={confirmRef}\n type=\"button\"\n className={confirmButtonClass}\n onClick={handleConfirm}\n >\n {confirmText}\n </button>\n </div>\n </div>\n </Modal>\n );\n }\n);\n\nDialog.displayName = 'Dialog';\n\n// Dialog Manager for programmatic dialogs\n\n/**\n * Options for showing a programmatic alert dialog.\n *\n * @property {string} [title] - Dialog title.\n * @property {string | React.ReactNode} message - Dialog message/content.\n * @property {DialogType} [type] - Dialog type/color.\n * @property {string} [confirmText] - Text for the confirm button.\n * @property {React.ReactNode} [icon] - Custom icon to display.\n */\nexport interface AlertOptions {\n title?: string;\n message: string | React.ReactNode;\n type?: DialogType;\n confirmText?: string;\n icon?: React.ReactNode;\n}\n\n/**\n * Options for showing a programmatic confirm dialog.\n *\n * @property {string} [cancelText] - Text for the cancel button.\n * @property {boolean} [focusCancel] - Focus cancel button instead of confirm.\n */\nexport interface ConfirmOptions extends AlertOptions {\n cancelText?: string;\n focusCancel?: boolean;\n}\n\n/**\n * Options for showing a programmatic prompt dialog.\n *\n * @property {string} [placeholder] - Input placeholder text.\n * @property {string} [defaultValue] - Default input value.\n */\nexport interface PromptOptions extends ConfirmOptions {\n placeholder?: string;\n defaultValue?: string;\n}\n\ntype DialogResolve = (value?: void | boolean | string) => void;\n\ntype DialogState = {\n type: 'alert' | 'confirm' | 'prompt';\n options: PromptOptions;\n resolve: DialogResolve;\n};\n\nlet dialogListeners: Set<(dialog: DialogState | null) => void> = new Set();\nlet currentDialog: DialogState | null = null;\n\nconst notifyDialogListeners = () => {\n dialogListeners.forEach(listener => listener(currentDialog));\n};\n\n/**\n * Programmatic dialog API for showing dialogs from anywhere.\n */\nexport const dialog = {\n /**\n * Show an alert dialog. Returns a promise that resolves when closed.\n */\n alert: (options: AlertOptions | string): Promise<void> => {\n return new Promise<void>(resolve => {\n const opts = typeof options === 'string' ? { message: options } : options;\n currentDialog = {\n type: 'alert',\n options: opts,\n resolve: () => resolve(),\n };\n notifyDialogListeners();\n });\n },\n\n /**\n * Show a confirm dialog. Returns a promise that resolves to true/false.\n */\n confirm: (options: ConfirmOptions | string): Promise<boolean> => {\n return new Promise<boolean>(resolve => {\n const opts = typeof options === 'string' ? { message: options } : options;\n currentDialog = {\n type: 'confirm',\n options: opts,\n resolve: value => resolve(Boolean(value)),\n };\n notifyDialogListeners();\n });\n },\n\n /**\n * Close the current dialog.\n */\n close: (value?: void | boolean | string): void => {\n if (currentDialog) {\n currentDialog.resolve(value);\n currentDialog = null;\n notifyDialogListeners();\n }\n },\n\n /**\n * Subscribe to dialog changes.\n */\n subscribe: (listener: (dialog: DialogState | null) => void): (() => void) => {\n dialogListeners.add(listener);\n return () => dialogListeners.delete(listener);\n },\n};\n\n/**\n * DialogContainer component to render programmatic dialogs.\n * Place this once at the root of your app.\n *\n * @function\n * @returns {JSX.Element | null} The rendered dialog, or null if none is active.\n */\nexport const DialogContainer: React.FC = () => {\n const [current, setCurrent] = React.useState<DialogState | null>(null);\n\n useEffect(() => {\n return dialog.subscribe(setCurrent);\n }, []);\n\n if (!current) {\n return null;\n }\n\n const { type, options } = current;\n\n return (\n <Dialog\n isOpen\n title={options.title}\n message={options.message}\n type={options.type}\n confirmText={options.confirmText}\n cancelText={options.cancelText}\n icon={options.icon}\n showCancel={type === 'confirm'}\n focusCancel={options.focusCancel}\n onConfirm={() => dialog.close(type === 'confirm' ? true : undefined)}\n onCancel={() => dialog.close(type === 'confirm' ? false : undefined)}\n />\n );\n};\n\nexport default Dialog;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Button component.\n *\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger' | 'white' | 'light' | 'dark' | 'black' | 'text' | 'ghost'} [color] - Bulma color modifier for the button.\n * @property {'small' | 'normal' | 'medium' | 'large'} [size] - Button size.\n * @property {boolean} [isLight] - Use the light version of the color.\n * @property {boolean} [isRounded] - Button is fully rounded.\n * @property {boolean} [isLoading] - Button shows a loading spinner.\n * @property {boolean} [isStatic] - Button is static and non-interactive.\n * @property {boolean} [isFullWidth] - Button takes the full width of parent.\n * @property {boolean} [isOutlined] - Use outlined button style.\n * @property {boolean} [isInverted] - Use inverted color style.\n * @property {boolean} [isFocused] - Button is styled as focused.\n * @property {boolean} [isActive] - Button is styled as active.\n * @property {boolean} [isHovered] - Button is styled as hovered.\n * @property {boolean} [isDisabled] - Button is disabled.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {'a' | 'button'} [as] - Render as an anchor or button element.\n * @property {string} [href] - Specifies the URL for anchor buttons.\n * @property {React.MouseEventHandler<HTMLButtonElement> | React.MouseEventHandler<HTMLAnchorElement>} [onClick] - Click handler for the button or anchor.\n * @property {string} [target] - Target for anchor element.\n * @property {string} [rel] - Rel attribute for anchor element.\n * @property {React.ReactNode} [children] - Content to be rendered inside the button.\n */\nexport interface ButtonProps\n extends\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'color' | 'onClick'>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor' | 'size'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'white'\n | 'light'\n | 'dark'\n | 'black'\n | 'text'\n | 'ghost';\n size?: 'small' | 'normal' | 'medium' | 'large';\n isLight?: boolean;\n isRounded?: boolean;\n isLoading?: boolean;\n isStatic?: boolean;\n isFullWidth?: boolean;\n isOutlined?: boolean;\n isInverted?: boolean;\n isFocused?: boolean;\n isActive?: boolean;\n isHovered?: boolean;\n isDisabled?: boolean;\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n as?: 'a' | 'button';\n href?: string;\n onClick?:\n | React.MouseEventHandler<HTMLButtonElement>\n | React.MouseEventHandler<HTMLAnchorElement>;\n target?: string;\n rel?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Button component for rendering a Bulma-styled button or anchor.\n *\n * Supports Bulma helper classes for colors, sizes, and various button states and modifiers.\n *\n * @function\n * @param {ButtonProps} props - Props for the Button component.\n * @returns {JSX.Element} The rendered button or anchor element.\n * @see {@link https://bulma.io/documentation/elements/button/ | Bulma Button documentation}\n */\nconst validButtonColors = [...validColors, 'text', 'ghost'] as const;\n\nexport const Button: React.FC<ButtonProps> = ({\n color,\n size,\n isLight,\n isRounded,\n isLoading,\n isStatic,\n isFullWidth,\n isOutlined,\n isInverted,\n isFocused,\n isActive,\n isHovered,\n isDisabled,\n className,\n children,\n textColor,\n bgColor,\n as = 'button',\n href,\n onClick,\n target,\n rel,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const bulmaClasses = usePrefixedClassNames('button', {\n [`is-${color}`]:\n color &&\n validButtonColors.includes(color as (typeof validButtonColors)[number]),\n [`is-${size}`]: size,\n 'is-outlined': isOutlined,\n 'is-light': isLight,\n 'is-loading': isLoading,\n 'is-static': isStatic,\n 'is-disabled': isDisabled,\n 'is-rounded': isRounded,\n 'is-hovered': isHovered,\n 'is-focused': isFocused,\n 'is-active': isActive,\n 'is-inverted': isInverted,\n 'is-fullwidth': isFullWidth,\n });\n\n // Combine prefixed Bulma classes with unprefixed user className and prefixed helper classes\n const buttonClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n if (as === 'a') {\n // Create anchor-specific props by excluding button-specific ones\n const {\n type: _type,\n disabled: _disabled,\n form: _form,\n formAction: _formAction,\n formEncType: _formEncType,\n formMethod: _formMethod,\n formNoValidate: _formNoValidate,\n formTarget: _formTarget,\n name: _name,\n value: _value,\n autoFocus: _autoFocus,\n ...anchorRest\n } = rest as React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n return (\n <a\n className={buttonClasses}\n href={href}\n target={target}\n rel={rel}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : undefined}\n onClick={\n isDisabled\n ? (e: React.MouseEvent<HTMLAnchorElement>) => e.preventDefault()\n : (onClick as\n | React.MouseEventHandler<HTMLAnchorElement>\n | undefined)\n }\n {...(anchorRest as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {children}\n </a>\n );\n }\n\n return (\n <button\n className={buttonClasses}\n disabled={isDisabled}\n onClick={\n onClick as React.MouseEventHandler<HTMLButtonElement> | undefined\n }\n {...rest}\n >\n {children}\n </button>\n );\n};\n\nexport default Button;\n","import React, {\n forwardRef,\n useState,\n useRef,\n useEffect,\n useCallback,\n Children,\n isValidElement,\n cloneElement,\n} from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { Icon } from '../elements/Icon';\nimport { Button } from '../elements/Button';\n\n/**\n * Props for the CarouselItem component.\n *\n * @property {boolean} [active] - Whether this item is the active/visible slide.\n */\nexport interface CarouselItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether this item is active */\n active?: boolean;\n}\n\n/**\n * Individual carousel item/slide.\n *\n * @function\n * @param {CarouselItemProps} props - Props for the CarouselItem component.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the carousel item element.\n * @returns {JSX.Element} The rendered carousel item.\n */\nexport const CarouselItem = forwardRef<HTMLDivElement, CarouselItemProps>(\n ({ active, className, children, ...props }, ref) => {\n const itemClasses = classNames('carousel-item', className, {\n 'is-active': active,\n });\n\n return (\n <div ref={ref} className={itemClasses} {...props}>\n {children}\n </div>\n );\n }\n);\n\nCarouselItem.displayName = 'CarouselItem';\n\ntype IconLibrary = 'fa' | 'mdi' | 'ion' | 'material-icons' | 'material-symbols';\n\n/**\n * Default SVG icon for the previous arrow button.\n *\n * @function\n * @returns {JSX.Element} The rendered SVG chevron-left icon.\n */\nconst DefaultPrevIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n);\n\n/**\n * Default SVG icon for the next arrow button.\n *\n * @function\n * @returns {JSX.Element} The rendered SVG chevron-right icon.\n */\nconst DefaultNextIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n);\n\n/**\n * Props for the Carousel component.\n *\n * @property {number} [value] - Current active slide index (controlled).\n * @property {boolean} [autoplay] - Enable auto-play.\n * @property {number} [interval] - Auto-play interval in milliseconds. Default: 5000.\n * @property {boolean} [pauseOnHover] - Pause auto-play on hover. Default: true.\n * @property {boolean} [repeat] - Loop back to first slide after last. Default: true.\n * @property {boolean} [hasDrag] - Enable drag/swipe navigation. Default: true.\n * @property {boolean} [arrow] - Show navigation arrows. Default: true.\n * @property {boolean} [arrowHover] - Only show arrows on hover.\n * @property {boolean} [indicator] - Show slide indicators. Default: true.\n * @property {boolean} [indicatorInside] - Position indicators inside carousel.\n * @property {'bottom'|'top'} [indicatorPosition] - Indicator position. Default: 'bottom'.\n * @property {'circles'|'dots'|'lines'|'bars'} [indicatorStyle] - Indicator style. Default: 'dots'.\n * @property {string} [iconPrev] - Icon name for the previous arrow button.\n * @property {string} [iconNext] - Icon name for the next arrow button.\n * @property {IconLibrary} [iconLibrary] - Icon library to use.\n * @property {string} [iconVariant] - Icon style variant (e.g., 'solid', 'outlined').\n * @property {'small' | 'medium' | 'large'} [iconSize] - Icon size modifier.\n * @property {string | string[]} [iconFeatures] - Additional icon modifiers.\n * @property {boolean} [arrowBackground] - Show semi-transparent background on arrow buttons. Default: true.\n * @property {'light'|'dark'} [arrowColor] - Arrow icon color variant. Useful for transparent arrows on dark/light backgrounds.\n * @property {(value: number) => void} [onChange] - Callback when slide changes.\n * @property {React.ReactNode} [children] - Carousel slide items (CarouselItem elements).\n */\nexport interface CarouselProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'color'>,\n BulmaClassesProps {\n value?: number;\n autoplay?: boolean;\n interval?: number;\n pauseOnHover?: boolean;\n repeat?: boolean;\n hasDrag?: boolean;\n arrow?: boolean;\n arrowHover?: boolean;\n indicator?: boolean;\n indicatorInside?: boolean;\n indicatorPosition?: 'bottom' | 'top';\n indicatorStyle?: 'circles' | 'dots' | 'lines' | 'bars';\n iconPrev?: string;\n iconNext?: string;\n iconLibrary?: IconLibrary;\n iconVariant?: string;\n iconSize?: 'small' | 'medium' | 'large';\n iconFeatures?: string | string[];\n arrowBackground?: boolean;\n arrowColor?: 'light' | 'dark';\n /** Accessible label for the carousel region. Default: 'Image carousel'. */\n ariaLabel?: string;\n onChange?: (value: number) => void;\n children?: React.ReactNode;\n}\n\n/**\n * Carousel component for displaying slides with navigation.\n *\n * Supports auto-play, drag navigation, indicators, and customizable arrows.\n *\n * @function\n * @param {CarouselProps} props - Props for the Carousel component.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the carousel element.\n * @returns {JSX.Element} The rendered carousel component.\n *\n * @example\n * // Basic carousel\n * <Carousel>\n * <CarouselItem>Slide 1</CarouselItem>\n * <CarouselItem>Slide 2</CarouselItem>\n * <CarouselItem>Slide 3</CarouselItem>\n * </Carousel>\n *\n * @example\n * // Auto-playing carousel\n * <Carousel autoplay interval={3000}>\n * <CarouselItem>\n * <img src=\"image1.jpg\" alt=\"Slide 1\" />\n * </CarouselItem>\n * <CarouselItem>\n * <img src=\"image2.jpg\" alt=\"Slide 2\" />\n * </CarouselItem>\n * </Carousel>\n */\nexport const Carousel = forwardRef<HTMLDivElement, CarouselProps>(\n (\n {\n value: controlledValue,\n autoplay = false,\n interval = 5000,\n pauseOnHover = true,\n repeat = true,\n hasDrag = true,\n arrow = true,\n arrowHover = false,\n indicator = true,\n indicatorInside = false,\n indicatorPosition = 'bottom',\n indicatorStyle = 'dots',\n iconPrev,\n iconNext,\n iconLibrary,\n iconVariant,\n iconSize,\n iconFeatures,\n arrowBackground = true,\n arrowColor,\n ariaLabel = 'Image carousel',\n onChange,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const carouselRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [internalValue, setInternalValue] = useState(0);\n const [isPaused, setIsPaused] = useState(false);\n const [isDragging, setIsDragging] = useState(false);\n const [dragStart, setDragStart] = useState(0);\n const [dragOffset, setDragOffset] = useState(0);\n const [isWrapping, setIsWrapping] = useState(false);\n const [displayIndex, setDisplayIndex] = useState(0);\n const [skipTransition, setSkipTransition] = useState(false);\n\n // Get valid children\n const items = Children.toArray(children).filter(isValidElement);\n const itemCount = items.length;\n\n // Use controlled or internal value\n const activeIndex =\n controlledValue !== undefined ? controlledValue : internalValue;\n\n // Sync displayIndex when controlled value changes externally\n useEffect(() => {\n if (controlledValue !== undefined && !isWrapping) {\n setDisplayIndex(controlledValue);\n }\n }, [controlledValue, isWrapping]);\n\n // Update active index\n const setActiveIndex = useCallback(\n (index: number, syncDisplay = true) => {\n let newIndex = index;\n\n if (repeat) {\n if (index < 0) {\n newIndex = itemCount - 1;\n } else if (index >= itemCount) {\n newIndex = 0;\n }\n } else {\n newIndex = Math.max(0, Math.min(index, itemCount - 1));\n }\n\n if (controlledValue === undefined) {\n setInternalValue(newIndex);\n }\n if (syncDisplay) {\n setDisplayIndex(newIndex);\n }\n onChange?.(newIndex);\n },\n [controlledValue, itemCount, repeat, onChange]\n );\n\n // Navigation handlers\n const goToPrev = useCallback(() => {\n if (activeIndex === 0 && repeat && itemCount > 1) {\n // Animate to clone of last slide (position -1)\n setDisplayIndex(-1);\n setIsWrapping(true);\n } else {\n setActiveIndex(activeIndex - 1);\n }\n }, [activeIndex, repeat, itemCount, setActiveIndex]);\n\n const goToNext = useCallback(() => {\n if (activeIndex === itemCount - 1 && repeat && itemCount > 1) {\n // Animate to clone of first slide (position itemCount)\n setDisplayIndex(itemCount);\n setIsWrapping(true);\n } else {\n setActiveIndex(activeIndex + 1);\n }\n }, [activeIndex, itemCount, repeat, setActiveIndex]);\n\n const goToSlide = useCallback(\n (index: number) => {\n setIsWrapping(false);\n setActiveIndex(index);\n },\n [setActiveIndex]\n );\n\n // Auto-play\n useEffect(() => {\n if (!autoplay || isPaused || itemCount <= 1) return undefined;\n\n const timer = setInterval(() => {\n goToNext();\n }, interval);\n\n return () => clearInterval(timer);\n }, [autoplay, isPaused, interval, goToNext, itemCount]);\n\n // Pause on hover\n const handleMouseEnter = useCallback(() => {\n if (pauseOnHover) {\n setIsPaused(true);\n }\n }, [pauseOnHover]);\n\n const handleMouseLeave = useCallback(() => {\n if (pauseOnHover) {\n setIsPaused(false);\n }\n }, [pauseOnHover]);\n\n // Drag handlers\n const handleDragStart = useCallback(\n (clientX: number) => {\n if (!hasDrag) return;\n setIsDragging(true);\n setDragStart(clientX);\n setDragOffset(0);\n },\n [hasDrag]\n );\n\n const handleDragMove = useCallback(\n (clientX: number) => {\n if (!isDragging) return;\n setDragOffset(clientX - dragStart);\n },\n [isDragging, dragStart]\n );\n\n const handleDragEnd = useCallback(() => {\n if (!isDragging) return;\n setIsDragging(false);\n\n const threshold = 50;\n if (dragOffset < -threshold) {\n goToNext();\n } else if (dragOffset > threshold) {\n goToPrev();\n }\n\n setDragOffset(0);\n }, [isDragging, dragOffset, goToNext, goToPrev]);\n\n // Mouse events\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n handleDragStart(e.clientX);\n },\n [handleDragStart]\n );\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent) => {\n handleDragMove(e.clientX);\n },\n [handleDragMove]\n );\n\n const handleMouseUp = useCallback(() => {\n handleDragEnd();\n }, [handleDragEnd]);\n\n // Touch events\n const handleTouchStart = useCallback(\n (e: React.TouchEvent) => {\n handleDragStart(e.touches[0].clientX);\n },\n [handleDragStart]\n );\n\n const handleTouchMove = useCallback(\n (e: React.TouchEvent) => {\n handleDragMove(e.touches[0].clientX);\n },\n [handleDragMove]\n );\n\n const handleTouchEnd = useCallback(() => {\n handleDragEnd();\n }, [handleDragEnd]);\n\n // Keyboard navigation\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!carouselRef.current?.contains(document.activeElement)) return;\n\n switch (e.key) {\n case 'ArrowLeft':\n e.preventDefault();\n goToPrev();\n break;\n case 'ArrowRight':\n e.preventDefault();\n goToNext();\n break;\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [goToPrev, goToNext]);\n\n // Handle wrap-around transition end\n const handleTransitionEnd = useCallback(() => {\n if (isWrapping) {\n // Skip transition for the instant snap\n setSkipTransition(true);\n setIsWrapping(false);\n\n if (displayIndex === itemCount) {\n // Was at clone of first slide, snap to real first slide\n setActiveIndex(0, false);\n setDisplayIndex(0);\n } else if (displayIndex === -1) {\n // Was at clone of last slide, snap to real last slide\n setActiveIndex(itemCount - 1, false);\n setDisplayIndex(itemCount - 1);\n }\n\n // Re-enable transition after the snap\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setSkipTransition(false);\n });\n });\n }\n }, [isWrapping, displayIndex, itemCount, setActiveIndex]);\n\n // Combined ref\n const combinedRef = useCallback(\n (node: HTMLDivElement | null) => {\n (carouselRef as React.MutableRefObject<HTMLDivElement | null>).current =\n node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [ref]\n );\n\n // Can navigate\n const canGoPrev = repeat || activeIndex > 0;\n const canGoNext = repeat || activeIndex < itemCount - 1;\n\n // Generate classes\n const carouselClasses = usePrefixedClassNames('carousel', {\n 'is-overlay': indicatorInside,\n 'has-arrow-hover': arrowHover,\n [`is-indicator-${indicatorStyle}`]: indicatorStyle !== 'dots',\n [`is-arrow-${arrowColor}`]: !!arrowColor,\n });\n\n const combinedClasses = classNames(\n carouselClasses,\n bulmaHelperClasses,\n className\n );\n\n // Render slides with active state (includes clones for infinite loop)\n const renderSlides = () => {\n const slides = items.map((item, index) => {\n if (isValidElement<CarouselItemProps>(item)) {\n return cloneElement(item, {\n key: index,\n active: index === activeIndex,\n });\n }\n return item;\n });\n\n // Add clones for seamless infinite loop when repeat is enabled\n if (repeat && itemCount > 1) {\n const lastItem = items[itemCount - 1];\n const firstItem = items[0];\n\n const lastClone = isValidElement<CarouselItemProps>(lastItem)\n ? cloneElement(lastItem as React.ReactElement<CarouselItemProps>, {\n key: 'clone-last',\n active: false,\n })\n : null;\n\n const firstClone = isValidElement<CarouselItemProps>(firstItem)\n ? cloneElement(firstItem as React.ReactElement<CarouselItemProps>, {\n key: 'clone-first',\n active: false,\n })\n : null;\n\n return [lastClone, ...slides, firstClone];\n }\n\n return slides;\n };\n\n return (\n <div\n ref={combinedRef}\n className={combinedClasses}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n role=\"region\"\n aria-roledescription=\"carousel\"\n aria-label={ariaLabel}\n {...rest}\n >\n <div\n ref={containerRef}\n className=\"carousel-container\"\n onMouseDown={hasDrag ? handleMouseDown : undefined}\n onMouseMove={hasDrag && isDragging ? handleMouseMove : undefined}\n onMouseUp={hasDrag ? handleMouseUp : undefined}\n onMouseLeave={hasDrag ? handleMouseUp : undefined}\n onTouchStart={hasDrag ? handleTouchStart : undefined}\n onTouchMove={hasDrag ? handleTouchMove : undefined}\n onTouchEnd={hasDrag ? handleTouchEnd : undefined}\n style={{\n transform: isDragging ? `translateX(${dragOffset}px)` : undefined,\n cursor: hasDrag ? (isDragging ? 'grabbing' : 'grab') : undefined,\n }}\n >\n <div\n className=\"carousel-slides\"\n style={{\n // When repeat is enabled, account for the prepended clone (+1 offset)\n transform: `translateX(-${(repeat && itemCount > 1 ? displayIndex + 1 : displayIndex) * 100}%)`,\n // Disable transition during drag or instant snap after wrap-around\n transition:\n isDragging || skipTransition\n ? 'none'\n : 'transform 0.3s ease-in-out',\n }}\n onTransitionEnd={handleTransitionEnd}\n >\n {renderSlides()}\n </div>\n {arrow && itemCount > 1 && (\n <>\n <Button\n className={classNames('carousel-arrow is-prev', {\n 'is-transparent': !arrowBackground,\n })}\n onClick={goToPrev}\n isDisabled={!canGoPrev}\n aria-label=\"Previous slide\"\n >\n {iconPrev ? (\n <Icon\n name={iconPrev}\n library={iconLibrary}\n variant={iconVariant}\n size={iconSize}\n features={iconFeatures}\n />\n ) : (\n <DefaultPrevIcon />\n )}\n </Button>\n <Button\n className={classNames('carousel-arrow is-next', {\n 'is-transparent': !arrowBackground,\n })}\n onClick={goToNext}\n isDisabled={!canGoNext}\n aria-label=\"Next slide\"\n >\n {iconNext ? (\n <Icon\n name={iconNext}\n library={iconLibrary}\n variant={iconVariant}\n size={iconSize}\n features={iconFeatures}\n />\n ) : (\n <DefaultNextIcon />\n )}\n </Button>\n </>\n )}\n </div>\n\n {indicator && itemCount > 1 && (\n <div\n className={classNames('carousel-indicator', {\n 'is-inside': indicatorInside,\n 'is-top': indicatorPosition === 'top',\n })}\n role=\"tablist\"\n >\n {items.map((_, index) => (\n <Button\n key={index}\n className={classNames('indicator-item', {\n 'is-active': index === activeIndex,\n })}\n onClick={() => goToSlide(index)}\n role=\"tab\"\n aria-selected={index === activeIndex}\n aria-label={`Go to slide ${index + 1}`}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nCarousel.displayName = 'Carousel';\n\nexport default Carousel;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Block component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the block.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Content to be rendered inside the block.\n */\nexport interface BlockProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Block component for rendering a styled Bulma block element.\n *\n * A block is a simple utility element that adds spacing (margin-bottom) between elements.\n * Supports Bulma helper classes for additional styling like text color, background color, and layout.\n *\n * @function\n * @param {BlockProps} props - Props for the Block component.\n * @returns {JSX.Element} The rendered block element.\n * @see {@link https://bulma.io/documentation/elements/block/ | Bulma Block documentation}\n */\nexport const Block: React.FC<BlockProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('block');\n const blockClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <div className={blockClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Box component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the box.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {boolean} [hasShadow=true] - Whether the box has a shadow (default: true).\n * @property {React.ReactNode} [children] - Content to be rendered inside the box.\n */\nexport interface BoxProps\n /** @ignore */\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n hasShadow?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Box component for rendering a styled Bulma box element.\n *\n * Supports Bulma helper classes for styling and layout, with optional shadow control.\n *\n * @function\n * @param {BoxProps} props - Props for the Box component.\n * @returns {JSX.Element} The rendered box element.\n * @see {@link https://bulma.io/documentation/elements/box/ | Bulma Box documentation}\n */\nexport const Box: React.FC<BoxProps> = ({\n className,\n textColor,\n bgColor,\n hasShadow = true,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('box', {\n 'is-shadowless': !hasShadow,\n });\n\n const boxClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <div className={boxClasses} {...rest}>\n {children}\n </div>\n );\n};\n\nexport default Box;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Buttons component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the buttons group.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {boolean} [isCentered] - Center the group of buttons.\n * @property {boolean} [isRight] - Align the group of buttons to the right.\n * @property {boolean} [hasAddons] - Group buttons together as addons.\n * @property {React.ReactNode} children - The button elements to render inside the group.\n */\ninterface ButtonsProps\n extends React.HTMLAttributes<HTMLDivElement>, BulmaClassesProps {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n isCentered?: boolean;\n isRight?: boolean;\n hasAddons?: boolean;\n children: React.ReactNode;\n}\n\n/**\n * Buttons component for rendering a group of Bulma-styled buttons.\n *\n * Supports Bulma helper classes for styling, color, and layout, including centering, right alignment, and grouping as addons.\n *\n * @function\n * @param {ButtonsProps} props - Props for the Buttons component.\n * @returns {JSX.Element} The rendered group of buttons.\n * @see {@link https://bulma.io/documentation/elements/button/#group | Bulma Button Group documentation}\n */\nexport const Buttons: React.FC<ButtonsProps> = ({\n className,\n textColor,\n bgColor,\n isCentered,\n isRight,\n hasAddons,\n children,\n ...props\n}) => {\n const buttonsClasses = usePrefixedClassNames('buttons', {\n 'is-centered': isCentered,\n 'is-right': isRight,\n 'has-addons': hasAddons,\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const combinedClasses = classNames(\n buttonsClasses,\n className,\n bulmaHelperClasses\n );\n\n return (\n <div className={combinedClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { Button, ButtonProps } from './Button';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\n\n/**\n * Props for the LinkButton component.\n *\n * @property {'text' | 'ghost' | 'underline'} [variant] - Display mode. 'text' renders a minimal button without underline; 'ghost' renders a link-like button with default text color; 'underline' renders a text button that underlines on hover/focus. Defaults to 'text'.\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger' | 'white' | 'light' | 'dark' | 'black'} [color] - Text color override.\n */\nexport interface LinkButtonProps extends Omit<\n ButtonProps,\n 'color' | 'isOutlined' | 'isInverted' | 'isLight'\n> {\n variant?: 'text' | 'ghost' | 'underline';\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'white'\n | 'light'\n | 'dark'\n | 'black';\n}\n\n/**\n * A button that visually looks like text or a link, for a11y-friendly replacements\n * of `<div onClick>` anti-patterns.\n *\n * Wraps the Button component with `is-text` or `is-ghost` styling, plus CSS overrides\n * to remove the underline (text variant) or link color (ghost variant).\n * The 'underline' variant uses `is-text` styling with an underline that appears on hover/focus.\n *\n * @function\n * @param {LinkButtonProps} props - Props for the LinkButton component.\n * @returns {JSX.Element} The rendered link-styled button element.\n *\n * @example\n * // Text variant (default)\n * <LinkButton onClick={handleClick}>Click me</LinkButton>\n *\n * @example\n * // Underline variant with color\n * <LinkButton variant=\"underline\" color=\"primary\">Learn more</LinkButton>\n */\nexport const LinkButton: React.FC<LinkButtonProps> = ({\n variant = 'text',\n color,\n className,\n ...props\n}) => {\n const buttonColor = variant === 'underline' ? 'text' : variant;\n\n const prefixedClasses = usePrefixedClassNames(\n 'link-button',\n color && `link-button-${color}`,\n variant === 'underline' && 'link-button-underline'\n );\n\n return (\n <Button\n color={buttonColor}\n className={classNames(prefixedClasses, className)}\n {...props}\n />\n );\n};\n\nexport default LinkButton;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Code component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Code content to be rendered inside the element.\n */\nexport interface CodeProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Code component for rendering inline code snippets.\n *\n * A Code wraps the HTML `<code>` element with Bulma helper class integration.\n * Use it for short inline code snippets, variable names, or technical terms.\n * For multi-line code blocks, use the Pre component.\n *\n * @function\n * @param {CodeProps} props - Props for the Code component.\n * @returns {JSX.Element} The rendered code element.\n */\nexport const Code: React.FC<CodeProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const codeClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <code className={codeClasses || undefined} {...rest}>\n {children}\n </code>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Content component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the content.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {'small' | 'normal' | 'medium' | 'large'} [size] - Size modifier for the content.\n * @property {React.ReactNode} [children] - Content to be rendered inside the block.\n */\ninterface ContentProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n size?: 'small' | 'normal' | 'medium' | 'large';\n children?: React.ReactNode;\n}\n\n// Valid size modifiers for the content class\nconst validSizes = ['small', 'medium', 'large'] as const;\n\n/**\n * Content component for rendering a styled Bulma content block.\n *\n * Applies typographic styles to HTML content (e.g., paragraphs, headings, lists) with Bulma's content class.\n * Supports size modifiers and Bulma helper classes for additional styling.\n *\n * @function\n * @param {ContentProps} props - Props for the Content component.\n * @returns {JSX.Element} The rendered content block.\n * @see {@link https://bulma.io/documentation/elements/content/ | Bulma Content documentation}\n */\nexport const Content: React.FC<ContentProps> = ({\n className,\n textColor,\n bgColor,\n size,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('content', {\n [`is-${size}`]: size && size !== 'normal' && validSizes.includes(size),\n });\n\n const contentClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <div className={contentClasses} {...rest}>\n {children}\n </div>\n );\n};\n\nexport default Content;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Delete component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the delete button.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {(event: React.MouseEvent<HTMLButtonElement>) => void} [onClick] - Click handler for the button.\n * @property {'small' | 'medium' | 'large'} [size] - Size modifier for the delete button.\n * @property {string} [ariaLabel='Close'] - ARIA label for accessibility (default: 'Close').\n * @property {boolean} [disabled=false] - Whether the button is disabled (default: false).\n */\ninterface DeleteProps\n extends React.HTMLAttributes<HTMLButtonElement>, BulmaClassesProps {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n size?: 'small' | 'medium' | 'large';\n ariaLabel?: string;\n disabled?: boolean;\n}\n\n/**\n * Delete component for rendering a Bulma-styled delete/close button.\n *\n * Supports Bulma helper classes for styling, color, and size, and includes accessibility and disabled state.\n *\n * @function\n * @param {DeleteProps} props - Props for the Delete component.\n * @returns {JSX.Element} The rendered delete button.\n * @see {@link https://bulma.io/documentation/elements/delete/ | Bulma Delete documentation}\n */\nexport const Delete: React.FC<DeleteProps> = ({\n className,\n textColor,\n bgColor,\n onClick,\n size,\n ariaLabel = 'Close',\n disabled = false,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('delete', {\n [`is-${size}`]: size,\n 'is-disabled': disabled,\n });\n\n const classes = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <button\n className={classes}\n onClick={onClick}\n aria-label={ariaLabel}\n disabled={disabled}\n type=\"button\"\n {...rest}\n />\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Divider component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n */\nexport interface DividerProps\n extends\n React.HTMLAttributes<HTMLHRElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n}\n\n/**\n * Divider component for rendering a styled horizontal rule element.\n *\n * A Divider wraps the HTML `<hr>` element with Bulma helper class integration.\n * Use it to visually separate content sections with a horizontal line.\n *\n * @function\n * @param {DividerProps} props - Props for the Divider component.\n * @returns {JSX.Element} The rendered hr element.\n */\nexport const Divider: React.FC<DividerProps> = ({\n className,\n bgColor,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const dividerClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return <hr className={dividerClasses || undefined} {...rest} />;\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Emphasis component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Content to be rendered inside the em element.\n */\nexport interface EmphasisProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Emphasis component for rendering semantically emphasized italic text.\n *\n * An Emphasis wraps the HTML `<em>` element with Bulma helper class integration.\n * Use it for text that has stress emphasis, affecting the meaning of the sentence.\n * For visual-only italic styling without semantic meaning, use CSS font-style: italic.\n *\n * @function\n * @param {EmphasisProps} props - Props for the Emphasis component.\n * @returns {JSX.Element} The rendered em element.\n */\nexport const Emphasis: React.FC<EmphasisProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const emphasisClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <em className={emphasisClasses || undefined} {...rest}>\n {children}\n </em>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the FigureCaption component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Content to be rendered inside the figcaption.\n */\nexport interface FigureCaptionProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * FigureCaption component for rendering a styled figcaption element.\n *\n * A FigureCaption wraps the HTML `<figcaption>` element with Bulma helper class integration.\n * Use it inside Figure components to provide captions for images or other media.\n *\n * @function\n * @param {FigureCaptionProps} props - Props for the FigureCaption component.\n * @returns {JSX.Element} The rendered figcaption element.\n */\nconst FigureCaption: React.FC<FigureCaptionProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const captionClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <figcaption className={captionClasses || undefined} {...rest}>\n {children}\n </figcaption>\n );\n};\n\n/**\n * Props for the Figure component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Content to be rendered inside the figure.\n */\nexport interface FigureProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Figure component for rendering a styled figure element.\n *\n * A Figure wraps the HTML `<figure>` element with Bulma helper class integration.\n * Use it to group self-contained content like images, illustrations, diagrams, or code snippets\n * with an optional caption via Figure.Caption.\n *\n * @function\n * @param {FigureProps} props - Props for the Figure component.\n * @returns {JSX.Element} The rendered figure element.\n */\nconst FigureComponent: React.FC<FigureProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const figureClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <figure className={figureClasses || undefined} {...rest}>\n {children}\n </figure>\n );\n};\n\n/**\n * Figure component with Caption subcomponent.\n *\n * @example\n * <Figure>\n * <img src=\"image.jpg\" alt=\"Description\" />\n * <Figure.Caption>Image caption text</Figure.Caption>\n * </Figure>\n */\nexport const Figure = Object.assign(FigureComponent, {\n Caption: FigureCaption,\n});\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { Icon, IconProps } from './Icon';\n\n/**\n * Represents an item for the IconText component, containing icon props and optional text.\n *\n * @property {IconProps} iconProps - Props for the Icon component.\n * @property {string} [text] - Optional text to display next to the icon.\n */\ninterface IconTextItem {\n iconProps: IconProps;\n text?: string;\n}\n\n/**\n * Props for the IconText component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the icon text.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {IconProps} [iconProps] - Props for a single Icon component.\n * @property {React.ReactNode} [children] - Text for a single icon.\n * @property {IconTextItem[]} [items] - Array of icon/text pairs for multiple icons.\n */\ninterface IconTextProps\n extends React.HTMLAttributes<HTMLSpanElement>, BulmaClassesProps {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n iconProps?: IconProps; // For single icon\n children?: React.ReactNode; // Text for single icon\n items?: IconTextItem[]; // For multiple icons\n}\n\n/**\n * IconText component for rendering one or more icons with optional text, styled with Bulma.\n *\n * Supports Bulma helper classes for styling, color, and layout. Can render a single icon with text or multiple icon/text pairs.\n *\n * @function\n * @param {IconTextProps} props - Props for the IconText component.\n * @returns {JSX.Element} The rendered icon text element.\n * @see {@link https://bulma.io/documentation/elements/icon/#icon-text | Bulma IconText documentation}\n */\nexport const IconText: React.FC<IconTextProps> = ({\n className,\n textColor,\n bgColor,\n iconProps,\n children,\n items,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('icon-text');\n const iconTextClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <span className={iconTextClasses} {...rest}>\n {items ? (\n items.map((item, index) => (\n <React.Fragment key={index}>\n <Icon {...item.iconProps} />\n {item.text && <span>{item.text}</span>}\n </React.Fragment>\n ))\n ) : (\n <>\n {iconProps && <Icon {...iconProps} />}\n {children && <span>{children}</span>}\n </>\n )}\n </span>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Image component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the image container.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {string} [size] - Size or aspect ratio modifier (e.g., '128x128', '16by9', etc.).\n * @property {boolean} [isRounded] - Whether the image should have rounded corners.\n * @property {boolean} [isRetina] - Whether to use retina (2x) image source.\n * @property {string} [src] - Image source URL.\n * @property {string} [alt] - Alternate text for the image.\n * @property {React.ReactNode} [children] - Arbitrary children (e.g., iframe or custom content).\n * @property {'figure' | 'div' | 'p'} [as] - The tag to render. Defaults to 'figure', but can be 'p', 'div', etc.\n */\nexport interface ImageProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n size?:\n | '16x16'\n | '24x24'\n | '32x32'\n | '48x48'\n | '64x64'\n | '96x96'\n | '128x128'\n | 'square'\n | '1by1'\n | '5by4'\n | '4by3'\n | '3by2'\n | '5by3'\n | '16by9'\n | '2by1'\n | '3by1'\n | '4by5'\n | '3by4'\n | '2by3'\n | '3by5'\n | '9by16'\n | '1by2'\n | '1by3';\n isRounded?: boolean;\n isRetina?: boolean;\n src?: string;\n alt?: string;\n children?: React.ReactNode;\n as?: 'figure' | 'div' | 'p';\n}\n\n/**\n * Image component for rendering a styled Bulma image element.\n *\n * Supports fixed-size containers, aspect ratios, rounded images, retina images, and arbitrary children (e.g., iframe).\n *\n * The \"as\" prop allows rendering as \"figure\", \"p\", or \"div\" tags etc.\n *\n * @function\n * @param {ImageProps} props - Props for the Image component.\n * @returns {JSX.Element} The rendered image element.\n * @see {@link https://bulma.io/documentation/elements/image/ | Bulma Image documentation}\n */\nexport const Image: React.FC<ImageProps> = ({\n as,\n className,\n textColor,\n bgColor,\n size,\n isRounded,\n isRetina,\n src,\n alt,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('image', {\n [`is-${size}`]: size,\n 'has-ratio': size && typeof size === 'string' && size.includes('by'),\n });\n\n const imageClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n // Default tag logic: if \"as\" is provided, use it.\n // If not, use <figure> for aspect ratios or children, <div> otherwise.\n let Tag: 'figure' | 'div' | 'p';\n if (as) {\n Tag = as;\n } else if (size && typeof size === 'string' && size.includes('by')) {\n Tag = 'figure';\n } else {\n Tag = 'div';\n }\n\n const roundedClass = usePrefixedClassNames('is-rounded');\n\n const content = children ? (\n children\n ) : (\n <img\n className={classNames({ [roundedClass]: isRounded })}\n src={src}\n alt={alt}\n {...(isRetina && src ? { srcSet: `${src} 2x` } : {})}\n />\n );\n\n return (\n <Tag className={imageClasses} {...rest}>\n {content}\n </Tag>\n );\n};\n\nexport default Image;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Link component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {string} [href] - The URL the link points to.\n * @property {string} [target] - Where to open the linked document.\n * @property {string} [rel] - Relationship between the current and linked document.\n * @property {boolean} [isActive] - Whether the link appears active.\n * @property {React.ReactNode} [children] - Content to be rendered inside the link.\n */\nexport interface LinkProps\n extends\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n isActive?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Link component for rendering a styled Bulma anchor element.\n *\n * A Link wraps the HTML `<a>` element with Bulma styling support and helper class integration.\n * Supports Bulma helper classes for additional styling like text color, background color, and layout.\n *\n * @function\n * @param {LinkProps} props - Props for the Link component.\n * @returns {JSX.Element} The rendered anchor element.\n * @see {@link https://bulma.io/documentation/elements/content/ | Bulma Content documentation}\n */\nexport const Link: React.FC<LinkProps> = ({\n className,\n textColor,\n bgColor,\n isActive,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames({\n 'is-active': isActive,\n });\n const linkClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <a className={linkClasses || undefined} {...rest}>\n {children}\n </a>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the ListItem component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Content to be rendered inside the list item.\n */\nexport interface ListItemProps\n extends\n React.LiHTMLAttributes<HTMLLIElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * ListItem component for rendering a styled list item element.\n *\n * A ListItem wraps the HTML `<li>` element with Bulma helper class integration.\n * Use it inside UnorderedList or OrderedList components.\n * Supports Bulma helper classes for additional styling like text color, background color,\n * and spacing utilities.\n *\n * @function\n * @param {ListItemProps} props - Props for the ListItem component.\n * @returns {JSX.Element} The rendered li element.\n */\nexport const ListItem: React.FC<ListItemProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const itemClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <li className={itemClasses || undefined} {...rest}>\n {children}\n </li>\n );\n};\n","import React, { useEffect, useState, useCallback } from 'react';\nimport { createPortal } from 'react-dom';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Notification component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number]} [color] - Bulma color modifier for the notification.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {boolean} [isLight] - Use the light color variant.\n * @property {boolean} [hasDelete] - Show a delete (close) button.\n * @property {() => void} [onDelete] - Callback fired when the delete button is clicked.\n * @property {React.ReactNode} [children] - Content to be rendered inside the notification.\n */\nexport interface NotificationProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number];\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n isLight?: boolean;\n hasDelete?: boolean;\n onDelete?: () => void;\n children?: React.ReactNode;\n}\n\n/**\n * Notification component for rendering a styled Bulma notification.\n *\n * Supports colors, light variants, a delete button, and arbitrary content.\n *\n * @function\n * @param {NotificationProps} props - Props for the Notification component.\n * @returns {JSX.Element} The rendered notification element.\n * @see {@link https://bulma.io/documentation/elements/notification/ | Bulma Notification documentation}\n */\nexport const Notification: React.FC<NotificationProps> = ({\n className,\n color,\n textColor,\n isLight,\n hasDelete,\n onDelete,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('notification', {\n [`is-${color}`]: color && validColors.includes(color),\n 'is-light': isLight,\n });\n\n const deleteClasses = usePrefixedClassNames('delete');\n\n const notificationClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <div className={notificationClasses} {...rest}>\n {hasDelete && (\n <button\n className={deleteClasses}\n onClick={onDelete}\n aria-label=\"Close notification\"\n />\n )}\n {children}\n </div>\n );\n};\n\n// Programmatic Notification API\n\n/** Screen positions where programmatic notifications can be displayed. */\nexport type NotificationPosition =\n | 'top-left'\n | 'top'\n | 'top-right'\n | 'bottom-left'\n | 'bottom'\n | 'bottom-right';\n\n/**\n * Options for showing a programmatic notification.\n *\n * @property {string|React.ReactNode} message - The message to display.\n * @property {(typeof validColors)[number]} [color] - Bulma color modifier.\n * @property {boolean} [isLight] - Use the light color variant.\n * @property {number} [duration] - Duration in ms before auto-close. Default: 3000.\n * @property {NotificationPosition} [position] - Position on the screen. Default: 'top-right'.\n * @property {boolean} [queue] - Display notifications one at a time in FIFO order.\n * @property {boolean} [hasDelete] - Show a delete (close) button. Default: true.\n * @property {boolean} [indefinite] - Stay open until dismissed.\n * @property {boolean} [pauseOnHover] - Pause auto-close timer on hover. Default: true.\n */\nexport interface NotificationOptions {\n message: string | React.ReactNode;\n color?: (typeof validColors)[number];\n isLight?: boolean;\n /** Duration in ms before auto-close. Default 3000. */\n duration?: number;\n /** Position on the screen. Default 'top-right'. */\n position?: NotificationPosition;\n /** When true, notifications enter a FIFO queue and display one at a time. Default false. */\n queue?: boolean;\n /** Show a delete (close) button. Default true. */\n hasDelete?: boolean;\n /** Stay open until dismissed. */\n indefinite?: boolean;\n /** Pause auto-close timer on hover. Default true. */\n pauseOnHover?: boolean;\n}\n\n/**\n * Internal representation of a notification instance.\n *\n * @property {string} id - Unique identifier for this notification.\n * @property {NotificationOptions} options - Configuration options for the notification.\n */\ninterface NotificationInstance {\n id: string;\n options: NotificationOptions;\n}\n\nlet notificationId = 0;\nconst notificationListeners: Set<(items: NotificationInstance[]) => void> =\n new Set();\nlet notifications: NotificationInstance[] = [];\n\n// Queue support\nlet queuedNotifications: NotificationInstance[] = [];\nlet currentQueuedNotification: NotificationInstance | null = null;\n\nconst notifyNotificationListeners = () => {\n const allVisible = [...notifications];\n if (currentQueuedNotification) {\n allVisible.push(currentQueuedNotification);\n }\n notificationListeners.forEach(listener => listener([...allVisible]));\n};\n\nconst processQueuedNotification = () => {\n if (currentQueuedNotification || queuedNotifications.length === 0) return;\n currentQueuedNotification = queuedNotifications.shift()!;\n notifyNotificationListeners();\n};\n\n/**\n * Programmatic notification API for showing, closing, and managing notifications.\n *\n * @example\n * notification.success('File saved successfully');\n * notification.danger('Something went wrong', { duration: 5000 });\n */\nexport const notification = {\n /**\n * Show a notification with the given options.\n * @param {NotificationOptions} options - Notification configuration.\n * @returns {string} The unique ID of the created notification.\n */\n show: (options: NotificationOptions): string => {\n const id = `notification-${++notificationId}`;\n const instance = { id, options };\n\n if (options.queue) {\n queuedNotifications.push(instance);\n processQueuedNotification();\n } else {\n notifications.push(instance);\n notifyNotificationListeners();\n }\n\n return id;\n },\n\n /**\n * Show a success notification.\n * @param {string|React.ReactNode} message - The message to display.\n * @param {Partial<NotificationOptions>} [options] - Additional options.\n * @returns {string} The notification ID.\n */\n success: (\n message: string | React.ReactNode,\n options?: Partial<NotificationOptions>\n ): string => {\n return notification.show({ message, color: 'success', ...options });\n },\n\n /**\n * Show a danger notification.\n * @param {string|React.ReactNode} message - The message to display.\n * @param {Partial<NotificationOptions>} [options] - Additional options.\n * @returns {string} The notification ID.\n */\n danger: (\n message: string | React.ReactNode,\n options?: Partial<NotificationOptions>\n ): string => {\n return notification.show({ message, color: 'danger', ...options });\n },\n\n /**\n * Show a warning notification.\n * @param {string|React.ReactNode} message - The message to display.\n * @param {Partial<NotificationOptions>} [options] - Additional options.\n * @returns {string} The notification ID.\n */\n warning: (\n message: string | React.ReactNode,\n options?: Partial<NotificationOptions>\n ): string => {\n return notification.show({ message, color: 'warning', ...options });\n },\n\n /**\n * Show an info notification.\n * @param {string|React.ReactNode} message - The message to display.\n * @param {Partial<NotificationOptions>} [options] - Additional options.\n * @returns {string} The notification ID.\n */\n info: (\n message: string | React.ReactNode,\n options?: Partial<NotificationOptions>\n ): string => {\n return notification.show({ message, color: 'info', ...options });\n },\n\n /**\n * Close a specific notification by ID.\n * @param {string} id - The notification ID to close.\n */\n close: (id: string): void => {\n if (currentQueuedNotification && currentQueuedNotification.id === id) {\n currentQueuedNotification = null;\n processQueuedNotification();\n } else {\n queuedNotifications = queuedNotifications.filter(n => n.id !== id);\n notifications = notifications.filter(n => n.id !== id);\n }\n notifyNotificationListeners();\n },\n\n /** Close all notifications and clear the queue. */\n closeAll: (): void => {\n notifications = [];\n queuedNotifications = [];\n currentQueuedNotification = null;\n notifyNotificationListeners();\n },\n\n /**\n * Subscribe to notification state changes.\n * @param {(items: NotificationInstance[]) => void} listener - Callback invoked on changes.\n * @returns {() => void} Unsubscribe function.\n */\n subscribe: (\n listener: (items: NotificationInstance[]) => void\n ): (() => void) => {\n notificationListeners.add(listener);\n return () => notificationListeners.delete(listener);\n },\n};\n\n/**\n * Single auto-dismissing notification item used by NotificationContainer.\n *\n * @function\n * @param {{ instance: NotificationInstance; onClose: (id: string) => void }} props - Component props.\n * @returns {JSX.Element} The rendered notification item.\n */\nconst NotificationItem: React.FC<{\n instance: NotificationInstance;\n onClose: (id: string) => void;\n}> = ({ instance, onClose }) => {\n const {\n message,\n color,\n isLight,\n duration = 3000,\n hasDelete = true,\n indefinite = false,\n pauseOnHover = true,\n } = instance.options;\n\n const [isPaused, setIsPaused] = useState(false);\n\n const handleClose = useCallback(() => {\n onClose(instance.id);\n }, [onClose, instance.id]);\n\n // Auto-close timer\n useEffect(() => {\n if (indefinite || duration === 0 || isPaused) return undefined;\n\n const timer = setTimeout(handleClose, duration);\n return () => clearTimeout(timer);\n }, [duration, indefinite, isPaused, handleClose]);\n\n const handleMouseEnter = useCallback(() => {\n if (pauseOnHover) setIsPaused(true);\n }, [pauseOnHover]);\n\n const handleMouseLeave = useCallback(() => {\n if (pauseOnHover) setIsPaused(false);\n }, [pauseOnHover]);\n\n return (\n <Notification\n color={color}\n isLight={isLight}\n hasDelete={hasDelete}\n onDelete={handleClose}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n style={{ pointerEvents: 'auto' }}\n >\n {message}\n </Notification>\n );\n};\n\n/**\n * Container component for rendering programmatic notifications.\n * Place once at your app root to enable the notification API.\n *\n * @function\n * @param {{ position?: NotificationPosition }} props - Container props.\n * @returns {JSX.Element | null} The rendered notification container, or null if empty.\n */\nexport const NotificationContainer: React.FC<{\n position?: NotificationPosition;\n}> = ({ position = 'top-right' }) => {\n const [items, setItems] = useState<NotificationInstance[]>([]);\n\n useEffect(() => {\n return notification.subscribe(setItems);\n }, []);\n\n if (typeof document === 'undefined' || items.length === 0) {\n return null;\n }\n\n const isBottom = position.startsWith('bottom');\n const isCenter = position === 'top' || position === 'bottom';\n const isRight = position.endsWith('right');\n\n const containerStyle: React.CSSProperties = {\n position: 'fixed',\n zIndex: 100,\n display: 'flex',\n flexDirection: isBottom ? 'column-reverse' : 'column',\n gap: '0.75rem',\n padding: '1rem',\n pointerEvents: 'none',\n maxWidth: '100%',\n ...(isBottom ? { bottom: 0 } : { top: 0 }),\n ...(isCenter\n ? { left: '50%', transform: 'translateX(-50%)', alignItems: 'center' }\n : isRight\n ? { right: 0, alignItems: 'flex-end' }\n : { left: 0, alignItems: 'flex-start' }),\n };\n\n return createPortal(\n <div style={containerStyle}>\n {items.map(item => (\n <NotificationItem\n key={item.id}\n instance={item}\n onClose={notification.close}\n />\n ))}\n </div>,\n document.body\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the OrderedList component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {'1' | 'a' | 'A' | 'i' | 'I'} [type] - The numbering type for the list.\n * @property {number} [start] - The starting number for the list.\n * @property {boolean} [reversed] - Whether to reverse the list numbering.\n * @property {React.ReactNode} [children] - List items to be rendered inside the list.\n */\nexport interface OrderedListProps\n extends\n React.OlHTMLAttributes<HTMLOListElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * OrderedList component for rendering a styled ordered list element.\n *\n * An OrderedList wraps the HTML `<ol>` element with Bulma helper class integration.\n * Supports Bulma helper classes for additional styling like text color, background color,\n * and spacing utilities. Also supports standard `<ol>` attributes like `type`, `start`, and `reversed`.\n *\n * @function\n * @param {OrderedListProps} props - Props for the OrderedList component.\n * @returns {JSX.Element} The rendered ol element.\n */\nexport const OrderedList: React.FC<OrderedListProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const listClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <ol className={listClasses || undefined} {...rest}>\n {children}\n </ol>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Paragraph component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Content to be rendered inside the paragraph.\n */\nexport interface ParagraphProps\n extends\n React.HTMLAttributes<HTMLParagraphElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Paragraph component for rendering a styled paragraph element.\n *\n * A Paragraph wraps the HTML `<p>` element with Bulma helper class integration.\n * Supports Bulma helper classes for additional styling like text color, background color,\n * typography, and spacing utilities.\n *\n * @function\n * @param {ParagraphProps} props - Props for the Paragraph component.\n * @returns {JSX.Element} The rendered paragraph element.\n */\nexport const Paragraph: React.FC<ParagraphProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const paragraphClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <p className={paragraphClasses || undefined} {...rest}>\n {children}\n </p>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Pre component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Preformatted content to be rendered inside the element.\n */\nexport interface PreProps\n extends\n React.HTMLAttributes<HTMLPreElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Pre component for rendering preformatted text blocks.\n *\n * A Pre wraps the HTML `<pre>` element with Bulma helper class integration.\n * Use it for multi-line code blocks, ASCII art, or any content where whitespace\n * formatting must be preserved. Often used together with the Code component.\n *\n * @function\n * @param {PreProps} props - Props for the Pre component.\n * @returns {JSX.Element} The rendered pre element.\n */\nexport const Pre: React.FC<PreProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const preClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <pre className={preClasses || undefined} {...rest}>\n {children}\n </pre>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Progress component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number]} [color] - Bulma color modifier for the progress bar.\n * @property {'small' | 'medium' | 'large'} [size] - Size modifier for the progress bar.\n * @property {number} [value] - Current value of the progress bar.\n * @property {number} [max] - Maximum value of the progress bar.\n * @property {React.ReactNode} [children] - Optional custom content inside the progress element.\n */\nexport interface ProgressProps\n extends\n React.ProgressHTMLAttributes<HTMLProgressElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number];\n size?: 'small' | 'medium' | 'large';\n value?: number;\n max?: number;\n children?: React.ReactNode;\n}\n\n/**\n * Progress component for rendering a styled Bulma progress bar.\n *\n * Supports Bulma color and size modifiers, value/max attributes, and optional custom content.\n *\n * @function\n * @param {ProgressProps} props - Props for the Progress component.\n * @returns {JSX.Element} The rendered progress bar element.\n * @see {@link https://bulma.io/documentation/elements/progress/ | Bulma Progress documentation}\n */\nexport const Progress: React.FC<ProgressProps> = ({\n className,\n color,\n size,\n value,\n max,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n const bulmaClasses = usePrefixedClassNames('progress', {\n [`is-${color}`]: color && validColors.includes(color),\n [`is-${size}`]: size,\n });\n\n const progressClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <progress className={progressClasses} value={value} max={max} {...rest}>\n {children}\n </progress>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\n\n/**\n * Props for the Skeleton component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {'block' | 'lines'} [variant] - Variant of skeleton: 'block' (default) or 'lines'.\n * @property {number} [lines] - Number of lines (only used if variant=\"lines\").\n * @property {React.ReactNode} [children] - Render content inside the skeleton (block variant only).\n * @see {@link https://bulma.io/documentation/features/skeletons/ | Bulma Skeletons documentation}\n */\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Additional CSS classes to apply */\n className?: string;\n /** Variant of skeleton: 'block' (default) or 'lines' */\n variant?: 'block' | 'lines';\n /** Number of lines (only used if variant=\"lines\") */\n lines?: number;\n /** Render content inside the skeleton (block variant only) */\n children?: React.ReactNode;\n}\n\n/**\n * Skeleton component for rendering a styled Bulma skeleton element.\n *\n * Renders an animated placeholder that indicates content is loading.\n * Supports block and multi-line variants.\n *\n * @function\n * @param {SkeletonProps} props - Props for the Skeleton component.\n * @returns {JSX.Element} The rendered skeleton element.\n *\n * @example\n * // Block skeleton\n * <Skeleton />\n *\n * @example\n * // Multi-line skeleton\n * <Skeleton variant=\"lines\" lines={5} />\n */\nexport const Skeleton: React.FC<SkeletonProps> = ({\n className,\n variant = 'block',\n lines = 3,\n children,\n ...props\n}) => {\n const linesClass = usePrefixedClassNames('skeleton-lines');\n const blockClass = usePrefixedClassNames('skeleton-block');\n\n if (variant === 'lines') {\n return (\n <div className={classNames(linesClass, className)} {...props}>\n {Array.from({ length: lines }).map((_, i) => (\n <div key={i} />\n ))}\n </div>\n );\n }\n\n return (\n <div className={classNames(blockClass, className)} {...props}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Span component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Content to be rendered inside the span.\n */\nexport interface SpanProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Span component for rendering a styled inline element.\n *\n * A Span wraps the HTML `<span>` element with Bulma helper class integration.\n * Useful for styling inline text with Bulma's color, typography, and spacing utilities.\n *\n * @function\n * @param {SpanProps} props - Props for the Span component.\n * @returns {JSX.Element} The rendered span element.\n */\nexport const Span: React.FC<SpanProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const spanClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <span className={spanClasses || undefined} {...rest}>\n {children}\n </span>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Strong component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Content to be rendered inside the strong element.\n */\nexport interface StrongProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Strong component for rendering semantically important bold text.\n *\n * A Strong wraps the HTML `<strong>` element with Bulma helper class integration.\n * Use it for text that has strong importance, seriousness, or urgency.\n * For visual-only bold styling without semantic meaning, use Span with textWeight=\"bold\".\n *\n * @function\n * @param {StrongProps} props - Props for the Strong component.\n * @returns {JSX.Element} The rendered strong element.\n */\nexport const Strong: React.FC<StrongProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const strongClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <strong className={strongClasses || undefined} {...rest}>\n {children}\n </strong>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\nconst validSubTitleSizes = ['1', '2', '3', '4', '5', '6'] as const;\n/**\n * Valid size values for the SubTitle component (Bulma subtitle sizes).\n */\nexport type SubTitleSize = (typeof validSubTitleSizes)[number];\n\nconst validSubTitleElements = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'p',\n] as const;\n/**\n * Valid HTML elements for the SubTitle component.\n */\nexport type SubTitleElement = (typeof validSubTitleElements)[number];\n\n/**\n * Props for the SubTitle component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {SubTitleSize} [size] - Size of the subtitle (1-6).\n * @property {SubTitleElement} [as='h1'] - HTML element to render as (h1-h6 or p).\n * @property {boolean} [hasSkeleton] - Adds the has-skeleton CSS class.\n * @property {React.ReactNode} [children] - Subtitle content.\n * @property {string} [textColor] - Text color class (maps to Bulma's color helper).\n * @property {string} [bgColor] - Background color class (maps to Bulma's backgroundColor helper).\n */\nexport interface SubTitleProps\n extends\n Omit<\n React.HTMLAttributes<HTMLHeadingElement | HTMLParagraphElement>,\n 'color'\n >,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n size?: SubTitleSize;\n as?: SubTitleElement;\n hasSkeleton?: boolean;\n children?: React.ReactNode;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n}\n\n/**\n * SubTitle component for rendering a styled Bulma subtitle.\n *\n * Supports Bulma subtitle sizes and rendering as different HTML elements (h1-h6, p).\n *\n * @function\n * @param {SubTitleProps} props - Props for the SubTitle component.\n * @returns {JSX.Element} The rendered subtitle element.\n * @see {@link https://bulma.io/documentation/elements/title/#subtitle | Bulma Subtitle documentation}\n */\nexport const SubTitle: React.FC<SubTitleProps> = ({\n className,\n size,\n as = 'h1',\n hasSkeleton,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Validate 'as' prop at runtime\n const element = validSubTitleElements.includes(as) ? as : 'h1';\n\n // Validate 'size' prop at runtime\n const validSize =\n size && validSubTitleSizes.includes(size) ? size : undefined;\n\n const bulmaClasses = usePrefixedClassNames('subtitle', {\n [`is-${validSize}`]: validSize,\n 'has-skeleton': hasSkeleton,\n });\n\n const subTitleClasses = classNames(\n bulmaClasses,\n bulmaHelperClasses,\n className\n );\n\n // Determine the tag based on 'element' and 'validSize'\n const Tag: React.ElementType =\n element === 'p' ? 'p' : validSize ? `h${validSize}` : element;\n\n return (\n <Tag className={subTitleClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nexport default SubTitle;\n","/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Table component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [isBordered] - Adds borders to all the cells.\n * @property {boolean} [isStriped] - Adds zebra-striping to rows.\n * @property {boolean} [isNarrow] - Makes the table more compact by cutting cell padding in half.\n * @property {boolean} [isHoverable] - Adds a hover effect on rows.\n * @property {boolean} [isFullwidth] - Makes the table span the full width of its parent.\n * @property {boolean} [isResponsive] - Makes the table horizontally scrollable on small screens.\n * @property {React.ReactNode} [children] - Table content.\n */\nexport interface TableProps\n extends\n Omit<React.TableHTMLAttributes<HTMLTableElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n className?: string;\n isBordered?: boolean;\n isStriped?: boolean;\n isNarrow?: boolean;\n isHoverable?: boolean;\n isFullwidth?: boolean;\n isResponsive?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Table component for rendering a styled Bulma table.\n *\n * Supports responsive, bordered, striped, narrow, hoverable, and fullwidth variants.\n *\n * @function\n * @param {TableProps} props - Props for the Table component.\n * @returns {JSX.Element} The rendered table element.\n * @see {@link https://bulma.io/documentation/elements/table/ | Bulma Table documentation}\n */\nexport const Table: React.FC<TableProps> = ({\n className,\n isBordered,\n isStriped,\n isNarrow,\n isHoverable,\n isFullwidth,\n isResponsive,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('table', {\n 'is-bordered': isBordered,\n 'is-striped': isStriped,\n 'is-narrow': isNarrow,\n 'is-hoverable': isHoverable,\n 'is-fullwidth': isFullwidth,\n });\n\n const containerClass = usePrefixedClassNames('table-container');\n const tableClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n const tableElement = (\n <table className={tableClasses} {...rest}>\n {children}\n </table>\n );\n\n if (isResponsive) {\n return <div className={containerClass}>{tableElement}</div>;\n }\n\n return tableElement;\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\nconst validTagColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'black',\n 'dark',\n 'light',\n 'white',\n] as const;\n\n/**\n * Valid color values for the Tag component (Bulma tag colors).\n */\nexport type TagColor = (typeof validTagColors)[number];\n\nconst validTagSizes = ['normal', 'medium', 'large'] as const;\n/**\n * Valid size values for the Tag component (Bulma tag sizes).\n */\nexport type TagSize = (typeof validTagSizes)[number];\n\n/**\n * Props for the Tag component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {TagColor} [color] - Bulma color modifier for the tag.\n * @property {TagSize} [size] - Size modifier for the tag.\n * @property {boolean} [isRounded] - Whether the tag should have rounded corners.\n * @property {boolean} [isDelete] - Whether the tag is a delete button.\n * @property {boolean} [isHoverable] - Whether the tag is hoverable.\n * @property {() => void} [onDelete] - Callback fired when the delete button is clicked.\n * @property {React.ReactNode} [children] - Tag content.\n */\nexport interface TagProps\n extends\n Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'>,\n Omit<BulmaClassesProps, 'color'> {\n className?: string;\n color?: TagColor;\n size?: TagSize;\n isRounded?: boolean;\n isDelete?: boolean;\n isHoverable?: boolean;\n onDelete?: () => void;\n children?: React.ReactNode;\n}\n\n/**\n * Tag component for rendering a styled Bulma tag.\n *\n * Supports colors, sizes, rounded, delete, and hoverable variants.\n *\n * @function\n * @param {TagProps} props - Props for the Tag component.\n * @returns {JSX.Element} The rendered tag element.\n * @see {@link https://bulma.io/documentation/elements/tag/ | Bulma Tag documentation}\n */\nexport const Tag: React.FC<TagProps> = ({\n className,\n color,\n size,\n isRounded,\n isDelete,\n isHoverable,\n onDelete,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('tag', {\n [`is-${color}`]: color && validTagColors.includes(color),\n [`is-${size}`]: size && size !== 'normal' && validTagSizes.includes(size),\n 'is-rounded': isRounded,\n 'is-delete': isDelete,\n 'is-hoverable': isHoverable,\n });\n\n const tagClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n if (isDelete) {\n return (\n <button\n className={tagClasses}\n onClick={onDelete}\n aria-label=\"Delete tag\"\n {...rest}\n />\n );\n }\n\n return (\n <span className={tagClasses} {...rest}>\n {children}\n </span>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Tags component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [hasAddons] - Group tags together as addons.\n * @property {boolean} [isMultiline] - Allow tags to wrap onto multiple lines.\n * @property {React.ReactNode} [children] - Tag elements to render inside the container.\n */\nexport interface TagsProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n hasAddons?: boolean;\n isMultiline?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Tags component for rendering a styled Bulma tags container.\n *\n * Supports addons and multiline variants.\n *\n * @function\n * @param {TagsProps} props - Props for the Tags component.\n * @returns {JSX.Element} The rendered tags container.\n * @see {@link https://bulma.io/documentation/elements/tag/#list-of-tags | Bulma Tags documentation}\n */\nexport const Tags: React.FC<TagsProps> = ({\n className,\n hasAddons,\n isMultiline,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const bulmaClasses = usePrefixedClassNames('tags', {\n 'has-addons': hasAddons,\n 'are-multiline': isMultiline,\n });\n\n const tagsClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <div className={tagsClasses} {...rest}>\n {children}\n </div>\n );\n};\n","/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Tbody component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} [children] - Table body content (rows).\n */\nexport interface TbodyProps\n extends\n Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Tbody component for rendering a styled Bulma table body.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TbodyProps} props - Props for the Tbody component.\n * @returns {JSX.Element} The rendered table body element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-body | Bulma Table documentation}\n */\nexport const Tbody: React.FC<TbodyProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tbodyClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <tbody className={tbodyClasses} {...rest}>\n {children}\n </tbody>\n );\n};\n","/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/** Valid Bulma color values for table cells. */\nexport const validTableColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n 'black',\n 'dark',\n 'light',\n 'white',\n] as const;\n\n/**\n * Valid color values for the Td component (Bulma table cell colors).\n */\nexport type TableColor = (typeof validTableColors)[number];\n\n/**\n * Props for the Td component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {TableColor} [color] - Bulma color modifier for the table cell.\n * @property {React.ReactNode} [children] - Table cell content.\n */\nexport interface TdProps\n extends\n Omit<React.TdHTMLAttributes<HTMLTableCellElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n color?: TableColor;\n children?: React.ReactNode;\n}\n\n/**\n * Td component for rendering a styled Bulma table cell.\n *\n * Supports Bulma color modifiers and helper classes for additional styling.\n *\n * @function\n * @param {TdProps} props - Props for the Td component.\n * @returns {JSX.Element} The rendered table cell element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-body | Bulma Table documentation}\n */\nexport const Td: React.FC<TdProps> = ({\n className,\n color,\n children,\n ...props\n}) => {\n const colorClass = usePrefixedClassNames('', {\n [`is-${color}`]: color && validTableColors.includes(color),\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tdClasses = classNames(colorClass, className, bulmaHelperClasses);\n\n return (\n <td className={tdClasses} {...rest}>\n {children}\n </td>\n );\n};\n","/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Tfoot component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} [children] - Table footer content (rows).\n */\nexport interface TfootProps\n extends\n Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Tfoot component for rendering a styled Bulma table footer.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TfootProps} props - Props for the Tfoot component.\n * @returns {JSX.Element} The rendered table footer element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-footer | Bulma Table documentation}\n */\nexport const Tfoot: React.FC<TfootProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const tfootClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <tfoot className={tfootClasses} {...rest}>\n {children}\n </tfoot>\n );\n};\n","/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { TableColor, validTableColors } from './Td';\n\nconst validAlignments = ['left', 'right', 'centered'] as const;\n/**\n * Valid alignment values for the Th component.\n */\ntype TableAlignment = (typeof validAlignments)[number];\n\n/**\n * Props for the Th component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {TableAlignment} [isAligned] - Text alignment for the header cell ('left', 'right', 'centered').\n * @property {string|number} [width] - Width of the header cell (e.g., '100px' or 100).\n * @property {TableColor} [color] - Bulma color modifier for the header cell.\n * @property {React.ReactNode} [children] - Table header cell content.\n */\nexport interface ThProps\n extends\n Omit<React.ThHTMLAttributes<HTMLTableCellElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n isAligned?: TableAlignment;\n width?: string | number;\n color?: TableColor;\n children?: React.ReactNode;\n}\n\n/**\n * Th component for rendering a styled Bulma table header cell.\n *\n * Supports alignment, width, and color modifiers.\n *\n * @function\n * @param {ThProps} props - Props for the Th component.\n * @returns {JSX.Element} The rendered table header cell element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-head | Bulma Table documentation}\n */\nexport const Th: React.FC<ThProps> = ({\n className,\n isAligned,\n width,\n color,\n children,\n ...props\n}) => {\n const bulmaClasses = usePrefixedClassNames('', {\n [`has-text-${isAligned}`]: isAligned && validAlignments.includes(isAligned),\n [`is-${color}`]: color && validTableColors.includes(color),\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const thClasses = classNames(bulmaClasses, className, bulmaHelperClasses);\n\n return (\n <th\n className={thClasses}\n style={\n width\n ? { width: typeof width === 'number' ? `${width}px` : width }\n : undefined\n }\n {...rest}\n >\n {children}\n </th>\n );\n};\n","/**\n * @group Table\n */\nimport React from 'react';\nimport classNames from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Thead component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} [children] - Table header content (rows).\n */\nexport interface TheadProps\n extends\n Omit<React.HTMLAttributes<HTMLTableSectionElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor'> {\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Thead component for rendering a styled Bulma table header.\n *\n * Supports Bulma helper classes for additional styling.\n *\n * @function\n * @param {TheadProps} props - Props for the Thead component.\n * @returns {JSX.Element} The rendered table header element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-head | Bulma Table documentation}\n */\nexport const Thead: React.FC<TheadProps> = ({\n className,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const theadClasses = classNames(className, bulmaHelperClasses);\n\n return (\n <thead className={theadClasses} {...rest}>\n {children}\n </thead>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\nconst validTitleSizes = ['1', '2', '3', '4', '5', '6'] as const;\n/**\n * Valid size values for the Title component (Bulma title sizes).\n */\nexport type TitleSize = (typeof validTitleSizes)[number];\n\nconst validTitleElements = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p'] as const;\n/**\n * Valid HTML elements for the Title component.\n */\nexport type TitleElement = (typeof validTitleElements)[number];\n\n/**\n * Props for the Title component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {TitleSize} [size] - Size of the title (1-6).\n * @property {boolean} [isSpaced] - Adds margin below the title.\n * @property {TitleElement} [as='h1'] - HTML element to render as (h1-h6 or p).\n * @property {boolean} [hasSkeleton] - Adds the has-skeleton CSS class.\n * @property {React.ReactNode} [children] - Title content.\n * @property {string} [textColor] - Text color class (maps to Bulma's color helper).\n * @property {string} [bgColor] - Background color class (maps to Bulma's backgroundColor helper).\n */\nexport interface TitleProps\n extends\n Omit<\n React.HTMLAttributes<HTMLHeadingElement | HTMLParagraphElement>,\n 'color'\n >,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n size?: TitleSize;\n isSpaced?: boolean;\n as?: TitleElement;\n hasSkeleton?: boolean;\n children?: React.ReactNode;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n}\n\n/**\n * Title component for rendering a styled Bulma title.\n *\n * Supports sizes, spacing, and rendering as different HTML elements.\n *\n * @function\n * @param {TitleProps} props - Props for the Title component.\n * @returns {JSX.Element} The rendered title element.\n * @see {@link https://bulma.io/documentation/elements/title/ | Bulma Title documentation}\n */\nexport const Title: React.FC<TitleProps> = ({\n className,\n size,\n isSpaced,\n as = 'h1',\n hasSkeleton,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Validate 'as' prop at runtime\n const element = validTitleElements.includes(as) ? as : 'h1';\n\n // Validate 'size' prop at runtime\n const validSize = size && validTitleSizes.includes(size) ? size : undefined;\n\n const bulmaClasses = usePrefixedClassNames('title', {\n [`is-${validSize}`]: validSize,\n 'is-spaced': isSpaced,\n 'has-skeleton': hasSkeleton,\n });\n\n const titleClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n // Determine the tag based on 'element' and 'validSize'\n const Tag: React.ElementType =\n element === 'p' ? 'p' : validSize ? `h${validSize}` : element;\n\n return (\n <Tag className={titleClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nexport default Title;\n","/**\n * @group Table\n */\nimport React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { TableColor, validTableColors } from './Td'; // Import TableColor from Td\n\n/**\n * Props for the Tr component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [isSelected] - Whether the row is selected (adds Bulma's is-selected class).\n * @property {TableColor} [color] - Bulma color modifier for the table row.\n * @property {React.ReactNode} [children] - Table row content (cells).\n */\nexport interface TrProps\n extends\n Omit<React.HTMLAttributes<HTMLTableRowElement>, 'color'>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n className?: string;\n isSelected?: boolean;\n color?: TableColor;\n children?: React.ReactNode;\n}\n\n/**\n * Tr component for rendering a styled Bulma table row.\n *\n * Supports the is-selected modifier and color modifiers.\n *\n * @function\n * @param {TrProps} props - Props for the Tr component.\n * @returns {JSX.Element} The rendered table row element.\n * @see {@link https://bulma.io/documentation/elements/table/#table-row | Bulma Table documentation}\n */\nexport const Tr: React.FC<TrProps> = ({\n className,\n isSelected,\n color,\n children,\n ...props\n}) => {\n const bulmaClasses = usePrefixedClassNames('', {\n 'is-selected': isSelected,\n [`is-${color}`]: color && validTableColors.includes(color),\n });\n\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });\n\n const trClasses = classNames(bulmaClasses, className, bulmaHelperClasses);\n\n return (\n <tr className={trClasses} {...rest}>\n {children}\n </tr>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the UnorderedList component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - List items to be rendered inside the list.\n */\nexport interface UnorderedListProps\n extends\n React.HTMLAttributes<HTMLUListElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * UnorderedList component for rendering a styled unordered list element.\n *\n * An UnorderedList wraps the HTML `<ul>` element with Bulma helper class integration.\n * Supports Bulma helper classes for additional styling like text color, background color,\n * and spacing utilities.\n *\n * @function\n * @param {UnorderedListProps} props - Props for the UnorderedList component.\n * @returns {JSX.Element} The rendered ul element.\n */\nexport const UnorderedList: React.FC<UnorderedListProps> = ({\n className,\n textColor,\n bgColor,\n children,\n ...props\n}) => {\n /**\n * Generates Bulma helper classes and separates out remaining props.\n */\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n } as BulmaClassesProps & typeof props);\n\n const bulmaClasses = usePrefixedClassNames();\n const listClasses = classNames(bulmaClasses, bulmaHelperClasses, className);\n\n return (\n <ul className={listClasses || undefined} {...rest}>\n {children}\n </ul>\n );\n};\n","import { createContext, useContext } from 'react';\n\nconst FieldContext = createContext(false);\nconst ControlContext = createContext(false);\n\n/**\n * Hook to detect if the component is inside a Field wrapper.\n * Form components use this to skip rendering their own Field.\n */\nexport const useInsideField = () => useContext(FieldContext);\n\n/**\n * Hook to detect if the component is inside a Control wrapper.\n * Form components use this to skip rendering their own Control.\n */\nexport const useInsideControl = () => useContext(ControlContext);\n\n/** Provider for Field context — used internally by Field component. */\nexport const FieldProvider = FieldContext.Provider;\n\n/** Provider for Control context — used internally by Control component. */\nexport const ControlProvider = ControlContext.Provider;\n\n/**\n * Shape of the Radios group context. The group provides:\n * - `name`: shared form field name (Stage 1)\n * - `value`: currently-selected radio value (Stage 2 — group-managed selection)\n * - `onChange`: dispatched by child Radios when clicked (Stage 2)\n *\n * Group sets `value`/`onChange` only when actively managing selection\n * (i.e., the user passed `value`, `defaultValue`, or `onChange` to `<Radios>`).\n * When only `name` is provided, the group is in \"name-only\" mode and child\n * Radios manage their own checked state independently.\n */\nexport interface RadiosGroupContextValue {\n name?: string;\n value?: string;\n onChange?: (value: string) => void;\n}\n\n/**\n * Shape of the Checkboxes group context. Like Radios but with array semantics\n * for multi-select.\n */\nexport interface CheckboxesGroupContextValue {\n name?: string;\n value?: string[];\n onChange?: (values: string[]) => void;\n}\n\nconst RadiosContext = createContext<RadiosGroupContextValue | undefined>(\n undefined\n);\nconst CheckboxesContext = createContext<\n CheckboxesGroupContextValue | undefined\n>(undefined);\n\n/**\n * Hook to read the full surrounding `<Radios>` group context (name + selection).\n * Returns `undefined` when not inside a `<Radios>` group.\n */\nexport const useRadiosGroup = () => useContext(RadiosContext);\n\n/**\n * Hook to read the full surrounding `<Checkboxes>` group context.\n * Returns `undefined` when not inside a `<Checkboxes>` group.\n */\nexport const useCheckboxesGroup = () => useContext(CheckboxesContext);\n\n/**\n * Hook to read just the shared `name` from a surrounding `<Radios>` group.\n * Child `<Radio>` components fall back to this when no local `name` prop is set.\n * Returns `undefined` outside of a `<Radios>` group.\n */\nexport const useRadiosName = () => useRadiosGroup()?.name;\n\n/**\n * Hook to read just the shared `name` from a surrounding `<Checkboxes>` group.\n * Returns `undefined` outside of a `<Checkboxes>` group.\n */\nexport const useCheckboxesName = () => useCheckboxesGroup()?.name;\n\n/** Provider for the Radios group context — used internally by Radios. */\nexport const RadiosProvider = RadiosContext.Provider;\n\n/** Provider for the Checkboxes group context — used internally by Checkboxes. */\nexport const CheckboxesProvider = CheckboxesContext.Provider;\n\n// --- Backward-compat aliases (Stage 1 names) -----------------------------\n// Internal callers may still import these. Both still work because they refer\n// to the same providers/hooks under the new shape.\n\n/** @deprecated Use `RadiosProvider` (provides {name, value, onChange}). */\nexport const RadiosNameProvider = RadiosProvider;\n\n/** @deprecated Use `CheckboxesProvider` (provides {name, value, onChange}). */\nexport const CheckboxesNameProvider = CheckboxesProvider;\n","import React, { forwardRef, useCallback } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { useCheckboxesGroup } from './FormContext';\n\n/**\n * Valid colors for the Checkbox component.\n */\nexport const checkboxColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n] as const;\n\n/**\n * Valid sizes for the Checkbox component.\n */\nexport const checkboxSizes = ['small', 'normal', 'medium', 'large'] as const;\n\n/**\n * Props for the Checkbox component.\n *\n * @property {(typeof checkboxColors)[number]} [color] - Color variant for the checkbox.\n * @property {(typeof checkboxSizes)[number]} [size] - Size of the checkbox.\n * @property {boolean} [disabled] - Whether the checkbox is disabled.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {React.ReactNode} [children] - The label/content for the checkbox.\n * @see Bulma Checkbox documentation: https://bulma.io/documentation/form/checkbox/\n */\nexport interface CheckboxProps\n extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'type' | 'color'\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor' | 'size'> {\n color?: (typeof checkboxColors)[number];\n size?: (typeof checkboxSizes)[number];\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Checkbox component with themed styling support.\n *\n * Renders a custom-styled checkbox with a visual check indicator,\n * supporting colors, sizes, and various states. Inside a `<Checkboxes>`\n * group, Checkbox inherits `name` and (when the group is in controlled or\n * uncontrolled mode) derives its `checked` state from membership in the\n * group's `value` array. On click, dispatches the new array via the group's\n * `onChange`.\n *\n * Local props always win over group context.\n *\n * @function\n * @param {CheckboxProps} props - Props for the Checkbox component.\n * @returns {JSX.Element} The rendered checkbox element.\n *\n * @example\n * // Basic checkbox\n * <Checkbox>Accept terms</Checkbox>\n *\n * @example\n * // Inside a group\n * <Checkboxes name=\"tags\" defaultValue={['react']}>\n * <Checkbox value=\"react\">React</Checkbox>\n * <Checkbox value=\"vue\">Vue</Checkbox>\n * </Checkboxes>\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n color,\n size,\n className,\n children,\n textColor,\n disabled,\n name,\n value,\n checked,\n defaultChecked,\n onChange,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n ...props,\n });\n\n // Inherit name + selection state from a surrounding <Checkboxes> group.\n // Local props always win over the group (explicit > implicit).\n const group = useCheckboxesGroup();\n const effectiveName = name ?? group?.name;\n\n // Group-managed checked state — only when the group is in\n // controlled/uncontrolled mode (group.value is defined) AND this Checkbox\n // has a value to compare against. Local `checked` always wins.\n const groupManaged = group?.value !== undefined && value !== undefined;\n const groupHas = groupManaged && group!.value!.includes(String(value));\n const effectiveChecked =\n checked !== undefined ? checked : groupManaged ? groupHas : undefined;\n // When the group manages checked, suppress local defaultChecked to avoid\n // the controlled/uncontrolled React warning.\n const effectiveDefaultChecked = groupManaged ? undefined : defaultChecked;\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n // Local onChange always fires.\n onChange?.(e);\n // Dispatch to the group additionally — toggle this value's\n // membership in the group's array.\n if (group?.onChange && value !== undefined) {\n const valStr = String(value);\n const currentArr = group.value ?? [];\n const next = e.target.checked\n ? currentArr.includes(valStr)\n ? currentArr\n : [...currentArr, valStr]\n : currentArr.filter(v => v !== valStr);\n group.onChange(next);\n }\n },\n [onChange, group, value]\n );\n\n const mainClass = usePrefixedClassNames('styled-checkbox', 'checkbox', {\n [`is-${color}`]: color && checkboxColors.includes(color),\n [`is-${size}`]: size && checkboxSizes.includes(size),\n });\n const checkboxClass = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <label className={checkboxClass}>\n <input\n ref={ref}\n type=\"checkbox\"\n disabled={disabled}\n name={effectiveName}\n value={value}\n checked={effectiveChecked}\n defaultChecked={effectiveDefaultChecked}\n onChange={handleChange}\n {...rest}\n />\n <span className=\"check\" />\n {children && <span className=\"control-label\">{children}</span>}\n </label>\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { FieldProvider } from './FormContext';\n\n/**\n * Props for the Field component.\n *\n * @property {boolean} [horizontal] - Renders the field as horizontal (label and control side by side).\n * @property {boolean|'centered'|'right'|'multiline'} [grouped] - Group controls in a row (optionally centered, right, or multiline).\n * @property {boolean|'centered'|'right'} [hasAddons] - Group controls as addons (optionally centered or right-aligned).\n * @property {boolean} [narrow] - Constrains the field to its content's width (used inside horizontal field bodies).\n * @property {React.ReactNode} [label] - Field label.\n * @property {'small'|'normal'|'medium'|'large'} [labelSize] - Size for the label.\n * @property {object} [labelProps] - Props for the label element.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the field.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color for the field.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the field.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Field content.\n */\nexport interface FieldProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n horizontal?: boolean;\n grouped?: boolean | 'centered' | 'right' | 'multiline';\n hasAddons?: boolean | 'centered' | 'right';\n narrow?: boolean;\n label?: React.ReactNode;\n labelSize?: 'small' | 'normal' | 'medium' | 'large';\n labelProps?: React.LabelHTMLAttributes<HTMLLabelElement> & {\n [key: string]: unknown;\n };\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the FieldLabel component.\n *\n * @property {'small'|'normal'|'medium'|'large'} [size] - Size for the field label.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the label.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color for the label.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the label.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Field label content.\n */\nexport interface FieldLabelProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n size?: 'small' | 'normal' | 'medium' | 'large';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Props for the FieldBody component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color for the field body.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color for the field body.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color for the field body.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Field body content.\n */\nexport interface FieldBodyProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * FieldLabel component for rendering a Bulma field label.\n *\n * @function\n * @param {FieldLabelProps} props - Props for the FieldLabel component.\n * @returns {JSX.Element} The rendered field label.\n *\n * @example\n * <FieldLabel size=\"normal\">Name</FieldLabel>\n */\nexport const FieldLabel: React.FC<FieldLabelProps> = ({\n size,\n textColor,\n bgColor,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('field-label', {\n [`is-${size}`]: !!size,\n });\n const fieldLabelClass = classNames(mainClass, bulmaHelperClasses, className);\n // Spread ...props and ...rest so custom props like data-testid are included\n return (\n <div className={fieldLabelClass} {...props} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * FieldBody component for rendering Bulma field body.\n *\n * @function\n * @param {FieldBodyProps} props - Props for the FieldBody component.\n * @returns {JSX.Element} The rendered field body.\n *\n * @example\n * <FieldBody><input className=\"input\" /></FieldBody>\n */\nexport const FieldBody: React.FC<FieldBodyProps> = ({\n textColor,\n bgColor,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('field-body');\n const fieldBodyClass = classNames(mainClass, bulmaHelperClasses, className);\n // Spread ...props and ...rest so custom props like data-testid are included\n return (\n <div className={fieldBodyClass} {...props} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Field component for rendering a Bulma field container.\n * Supports horizontal, grouped, and labelled fields.\n *\n * @function\n * @param {FieldProps} props - Props for the Field component.\n * @returns {JSX.Element} The rendered field container.\n * @see {@link https://bulma.io/documentation/form/general/#field | Bulma Field documentation}\n *\n * @example\n * // Labelled field\n * <Field label=\"Email\">\n * <input className=\"input\" type=\"email\" />\n * </Field>\n *\n * @example\n * // Horizontal field\n * <Field horizontal label=\"Name\">\n * <input className=\"input\" />\n * </Field>\n */\nexport const Field: React.FC<FieldProps> & {\n Label: typeof FieldLabel;\n Body: typeof FieldBody;\n} = ({\n horizontal,\n grouped,\n hasAddons,\n narrow,\n label,\n labelSize,\n labelProps,\n textColor,\n color: _fieldColor,\n bgColor,\n className,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('field', {\n 'is-horizontal': horizontal,\n 'has-addons': !!hasAddons,\n 'has-addons-centered': hasAddons === 'centered',\n 'has-addons-right': hasAddons === 'right',\n 'is-narrow': narrow,\n 'is-grouped':\n grouped === true ||\n grouped === 'centered' ||\n grouped === 'right' ||\n grouped === 'multiline',\n 'is-grouped-centered': grouped === 'centered',\n 'is-grouped-right': grouped === 'right',\n 'is-grouped-multiline': grouped === 'multiline',\n });\n const fieldClass = classNames(mainClass, bulmaHelperClasses, className);\n\n // Default labelSize to 'normal' when horizontal for proper baseline alignment\n const effectiveLabelSize = labelSize ?? (horizontal ? 'normal' : undefined);\n\n const labelClass = usePrefixedClassNames('label');\n\n let renderedLabel = null;\n if (label) {\n if (horizontal) {\n renderedLabel = (\n <FieldLabel size={effectiveLabelSize}>\n <label\n {...labelProps}\n className={classNames(labelClass, labelProps?.className)}\n style={labelProps?.style}\n >\n {label}\n </label>\n </FieldLabel>\n );\n } else {\n renderedLabel = (\n <label\n {...labelProps}\n className={classNames(labelClass, labelProps?.className)}\n style={{ display: 'block', ...(labelProps?.style || {}) }}\n >\n {label}\n </label>\n );\n }\n }\n\n // If horizontal, wrap children in FieldBody (unless the user already provided\n // a FieldBody — either as the single child, or as one element among siblings\n // like <Field.Label/> + <Field.Body/>).\n let content = children;\n if (horizontal) {\n const isFieldBody = (c: React.ReactNode): boolean =>\n React.isValidElement(c) &&\n // @ts-expect-error displayName isn't on the public type\n (c.type === FieldBody || c.type?.displayName === 'FieldBody');\n const isFieldLabel = (c: React.ReactNode): boolean =>\n React.isValidElement(c) &&\n // @ts-expect-error displayName isn't on the public type\n (c.type === FieldLabel || c.type?.displayName === 'FieldLabel');\n const childArray = React.Children.toArray(children);\n const userProvidedStructure = childArray.some(\n c => isFieldBody(c) || isFieldLabel(c)\n );\n if (userProvidedStructure) {\n content = children;\n } else {\n content = <FieldBody>{children}</FieldBody>;\n }\n }\n\n return (\n <FieldProvider value={true}>\n <div className={fieldClass} {...rest}>\n {renderedLabel}\n {content}\n </div>\n </FieldProvider>\n );\n};\n\nFieldLabel.displayName = 'FieldLabel';\nFieldBody.displayName = 'FieldBody';\nField.Label = FieldLabel;\nField.Body = FieldBody;\n\nexport default Field;\n","import React from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { Icon, IconProps } from '../elements/Icon';\nimport { useConfig } from '../helpers/Config';\nimport { ControlProvider } from './FormContext';\n\n/**\n * Props for the Control component.\n *\n * @property {boolean} [hasIconsLeft] - Adds left icon container.\n * @property {boolean} [hasIconsRight] - Adds right icon container.\n * @property {boolean} [isLoading] - Shows loading indicator.\n * @property {boolean} [isExpanded] - Makes the control expand to fill available space.\n * @property {'small'|'medium'|'large'} [size] - Sets the control size.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Sets text color.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color for the control.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {IconProps} [iconLeft] - Icon props for left icon.\n * @property {IconProps} [iconRight] - Icon props for right icon.\n * @property {string} [iconLeftName] - Shortcut for left icon name.\n * @property {'small'|'medium'|'large'} [iconLeftSize] - Shortcut for left icon size.\n * @property {string} [iconRightName] - Shortcut for right icon name.\n * @property {'small'|'medium'|'large'} [iconRightSize] - Shortcut for right icon size.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {React.ReactNode} [children] - Content inside the control.\n * @property {'div'|'p'} [as] - Element type for the control (default: 'div').\n * @property {React.Ref<HTMLDivElement|HTMLParagraphElement>} [ref] - Ref for the control element.\n */\nexport interface ControlBaseProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n hasIconsLeft?: boolean;\n hasIconsRight?: boolean;\n isLoading?: boolean;\n isExpanded?: boolean;\n size?: 'small' | 'medium' | 'large';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n iconLeft?: IconProps;\n iconRight?: IconProps;\n iconLeftName?: string;\n iconLeftSize?: 'small' | 'medium' | 'large';\n iconRightName?: string;\n iconRightSize?: 'small' | 'medium' | 'large';\n className?: string;\n children?: React.ReactNode;\n}\n\n/** Props for the Control component, supporting either `div` or `p` as the root element. */\ntype ControlProps =\n | ({ as?: 'div' } & ControlBaseProps & { ref?: React.Ref<HTMLDivElement> })\n | ({ as: 'p' } & Omit<\n ControlBaseProps,\n keyof React.HTMLAttributes<HTMLDivElement>\n > &\n React.HTMLAttributes<HTMLParagraphElement> & {\n ref?: React.Ref<HTMLParagraphElement>;\n });\n\nconst allowedColors = [...validColors, 'inherit', 'current'] as const;\n\n/**\n * Bulma Control component for form controls, with icons, loading, and Bulma helper support.\n *\n * @function\n * @param {ControlProps} props - Props for the Control component.\n * @returns {JSX.Element} The rendered control container.\n * @see {@link https://bulma.io/documentation/form/general/#control | Bulma Control documentation}\n *\n * @example\n * // Control with left icon\n * <Control iconLeftName=\"envelope\" iconLeftSize=\"small\">\n * <input className=\"input\" type=\"email\" placeholder=\"Email\" />\n * </Control>\n */\nexport const Control = React.forwardRef<\n HTMLDivElement | HTMLParagraphElement,\n ControlProps\n>(\n (\n {\n as = 'div',\n hasIconsLeft,\n hasIconsRight,\n isLoading,\n isExpanded,\n size,\n textColor,\n bgColor,\n iconLeft,\n iconRight,\n iconLeftName,\n iconLeftSize,\n iconRightName,\n iconRightSize,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const Component = (as === 'p' ? 'p' : 'div') as 'div' | 'p';\n const { classPrefix } = useConfig();\n\n // Remove textColor/bgColor from props before spreading\n const {\n textColor: _ignoredTextColor,\n bgColor: _ignoredBgColor,\n ...restProps\n } = props as Record<string, unknown>;\n\n const safeTextColor = allowedColors.includes(\n textColor as (typeof allowedColors)[number]\n )\n ? textColor\n : undefined;\n\n const safeBgColor = allowedColors.includes(\n bgColor as (typeof allowedColors)[number]\n )\n ? bgColor\n : undefined;\n\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: safeTextColor,\n backgroundColor: safeBgColor,\n ...restProps,\n });\n\n // Prepare icon props for the shortcut\n const leftIconProps: IconProps | undefined =\n iconLeft ||\n (iconLeftName\n ? {\n name: iconLeftName,\n size: iconLeftSize,\n }\n : undefined);\n\n const rightIconProps: IconProps | undefined =\n iconRight ||\n (iconRightName\n ? {\n name: iconRightName,\n size: iconRightSize,\n }\n : undefined);\n\n const mainClass = usePrefixedClassNames('control', {\n 'has-icons-left': hasIconsLeft || !!leftIconProps,\n 'has-icons-right': hasIconsRight || !!rightIconProps,\n 'is-loading': isLoading,\n 'is-expanded': isExpanded,\n [`is-${size}`]: !!size,\n });\n const controlClass = classNames(mainClass, bulmaHelperClasses, className);\n\n // --- FIX: Spread both restProps (for data-testid, etc) AND rest (from useBulmaClasses) ---\n return (\n <ControlProvider value={true}>\n <Component\n className={controlClass}\n ref={ref as typeof ref}\n {...restProps}\n {...rest}\n >\n {children}\n {leftIconProps && leftIconProps.name && (\n <Icon\n {...leftIconProps}\n className={prefixedClassNames(classPrefix, 'is-left')}\n />\n )}\n {rightIconProps && rightIconProps.name && (\n <Icon\n {...rightIconProps}\n className={prefixedClassNames(classPrefix, 'is-right')}\n />\n )}\n </Component>\n </ControlProvider>\n );\n }\n);\n\nControl.displayName = 'Control';\n\nexport default Control;\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport {\n useInsideField,\n useInsideControl,\n CheckboxesProvider,\n CheckboxesGroupContextValue,\n} from './FormContext';\nimport { Field } from './Field';\nimport { Control } from './Control';\nimport { FormFieldProps } from './fieldProps';\n\n/**\n * Props for the Checkboxes component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {string} [name] - Form field name shared by every Checkbox in the group.\n * @property {string[]} [value] - Currently-selected values (controlled mode).\n * @property {string[]} [defaultValue] - Initial selected values (uncontrolled mode).\n * @property {(values: string[]) => void} [onChange] - Fired when the selection changes. Receives the new array of selected values.\n * @property {React.ReactNode} [children] - Checkbox elements to render in the group.\n */\nexport interface CheckboxesProps\n extends Omit<BulmaClassesProps, 'color'>, FormFieldProps {\n className?: string;\n name?: string;\n value?: string[];\n defaultValue?: string[];\n onChange?: (values: string[]) => void;\n children?: React.ReactNode;\n}\n\n/**\n * Wraps Checkbox components inside a Bulma 'checkboxes' wrapper. Manages the\n * selected-values array for the entire group when given\n * `value`/`defaultValue`/`onChange`.\n *\n * Three usage modes:\n *\n * 1. **Name-only** — pass `name`. Each child Checkbox manages its own checked\n * state via `defaultChecked` or `checked`. Backwards compatible.\n *\n * 2. **Controlled** — pass `value` (array) and `onChange`. The group owns\n * selection; each child derives `checked` from `value.includes(my.value)`.\n *\n * 3. **Uncontrolled** — pass `defaultValue` (array) and optionally `onChange`.\n * The group manages internal state; `onChange` fires with the new array.\n *\n * @function\n * @param {CheckboxesProps} props - Props for the Checkboxes component.\n * @returns {JSX.Element} The rendered checkboxes group.\n * @see {@link https://bulma.io/documentation/form/checkbox/#grouped-checkboxes | Bulma Checkboxes documentation}\n *\n * @example\n * // Controlled\n * const [tags, setTags] = useState(['react']);\n * <Checkboxes name=\"tags\" value={tags} onChange={setTags}>\n * <Checkbox value=\"react\">React</Checkbox>\n * <Checkbox value=\"vue\">Vue</Checkbox>\n * <Checkbox value=\"angular\">Angular</Checkbox>\n * </Checkboxes>\n *\n * @example\n * // Uncontrolled\n * <Checkboxes name=\"tags\" defaultValue={['react', 'vue']}>\n * <Checkbox value=\"react\">React</Checkbox>\n * <Checkbox value=\"vue\">Vue</Checkbox>\n * <Checkbox value=\"angular\">Angular</Checkbox>\n * </Checkboxes>\n */\nexport const Checkboxes: React.FC<CheckboxesProps> = ({\n label,\n labelSize,\n labelProps,\n horizontal,\n message,\n messageColor,\n fieldClassName,\n name,\n value,\n defaultValue,\n onChange,\n children,\n className,\n ...props\n}) => {\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('checkboxes');\n const wrapperClass = classNames(mainClass, bulmaHelperClasses, className);\n\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n const groupActive =\n value !== undefined || defaultValue !== undefined || onChange !== undefined;\n\n const [internalValue, setInternalValue] = useState<string[] | undefined>(\n defaultValue\n );\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange = useCallback(\n (newValues: string[]) => {\n if (!isControlled) setInternalValue(newValues);\n onChange?.(newValues);\n },\n [isControlled, onChange]\n );\n\n const ctx = useMemo<CheckboxesGroupContextValue>(\n () => ({\n name,\n ...(groupActive ? { value: currentValue, onChange: handleChange } : {}),\n }),\n [name, groupActive, currentValue, handleChange]\n );\n\n const checkboxesElement = (\n <div className={wrapperClass} {...rest}>\n <CheckboxesProvider value={ctx}>{children}</CheckboxesProvider>\n </div>\n );\n\n let content = checkboxesElement;\n\n if (!insideControl) {\n content = <Control>{content}</Control>;\n }\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n};\n\nexport default Checkboxes;\n","import React, { forwardRef } from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { useConfig } from '../helpers/Config';\nimport { useInsideField } from './FormContext';\nimport { Field } from './Field';\nimport { FormFieldProps } from './fieldProps';\n\n/**\n * Props for the File component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the file input.\n * @property {'small'|'medium'|'large'} [size] - Size modifier for the file input.\n * @property {boolean} [isBoxed] - Whether the file input is boxed.\n * @property {boolean} [isFullwidth] - Whether the file input expands to full width.\n * @property {boolean} [isRight] - Align file input to the right.\n * @property {boolean} [isCentered] - Center the file input.\n * @property {boolean} [hasName] - Show a file name indicator.\n * @property {React.ReactNode} [buttonLabel] - Custom button label text or node.\n * @property {React.ReactNode} [iconLeft] - Left icon element.\n * @property {React.ReactNode} [iconRight] - Right icon element.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {string} [inputClassName] - Additional CSS classes for the input.\n * @property {string} [fileName] - File name to display.\n */\nexport interface FileProps\n extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'color' | 'type'\n >,\n Omit<BulmaClassesProps, 'color'>,\n FormFieldProps {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n size?: 'small' | 'medium' | 'large';\n isBoxed?: boolean;\n isFullwidth?: boolean;\n isRight?: boolean;\n isCentered?: boolean;\n hasName?: boolean;\n buttonLabel?: React.ReactNode;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n className?: string;\n inputClassName?: string;\n fileName?: string;\n}\n\n/**\n * Bulma File upload component with full Bulma helper class support.\n * isRight and isCentered are mutually exclusive (Bulma spec).\n *\n * @function\n * @param {FileProps} props - Props for the File component.\n * @returns {JSX.Element} The rendered file upload field.\n * @see {@link https://bulma.io/documentation/form/file/ | Bulma File documentation}\n */\nexport const File = forwardRef<HTMLInputElement, FileProps>(\n (\n {\n // Field props\n label,\n labelSize,\n labelProps,\n horizontal,\n message,\n messageColor,\n fieldClassName,\n color,\n size,\n isBoxed,\n isFullwidth,\n isRight,\n isCentered,\n hasName,\n buttonLabel,\n iconLeft,\n iconRight,\n className,\n inputClassName,\n fileName,\n ...props\n },\n ref\n ) => {\n const insideField = useInsideField();\n const { classPrefix } = useConfig();\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color,\n ...props,\n });\n\n // Mutually exclusive alignment\n let alignmentClass: string | undefined;\n if (isRight && isCentered) {\n // If both are set, prefer isRight and warn in dev\n alignmentClass = prefixedClassNames(classPrefix, 'is-right');\n } else if (isRight) {\n alignmentClass = prefixedClassNames(classPrefix, 'is-right');\n } else if (isCentered) {\n alignmentClass = prefixedClassNames(classPrefix, 'is-centered');\n }\n\n const mainClass = usePrefixedClassNames('file', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-boxed': isBoxed,\n 'is-fullwidth': isFullwidth,\n 'has-name': hasName,\n });\n const fileClass = classNames(\n mainClass,\n bulmaHelperClasses,\n alignmentClass,\n className\n );\n\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n const fileElement = (\n <div className={fileClass}>\n <label className={usePrefixedClassNames('file-label')}>\n <input\n ref={ref}\n className={classNames(\n usePrefixedClassNames('file-input'),\n inputClassName\n )}\n type=\"file\"\n {...rest}\n />\n <span className={usePrefixedClassNames('file-cta')}>\n {iconLeft && (\n <span className={prefixedClassNames(classPrefix, 'file-icon')}>\n {iconLeft}\n </span>\n )}\n <span className={usePrefixedClassNames('file-label')}>\n {buttonLabel || 'Choose a file\\u2026'}\n </span>\n {iconRight && (\n <span className={prefixedClassNames(classPrefix, 'file-icon')}>\n {iconRight}\n </span>\n )}\n </span>\n {hasName && fileName && (\n <span className={prefixedClassNames(classPrefix, 'file-name')}>\n {fileName}\n </span>\n )}\n </label>\n </div>\n );\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {fileElement}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {fileElement}\n {messageEl}\n </>\n );\n }\n);\n\nFile.displayName = 'File';\n\nexport default File;\n","import React, { forwardRef, useCallback } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\nimport { useRadiosGroup } from './FormContext';\n\n/**\n * Valid colors for the Radio component.\n */\nexport const radioColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n] as const;\n\n/**\n * Valid sizes for the Radio component.\n */\nexport const radioSizes = ['small', 'normal', 'medium', 'large'] as const;\n\n/**\n * Props for the Radio component.\n *\n * @property {(typeof radioColors)[number]} [color] - Color variant for the radio.\n * @property {(typeof radioSizes)[number]} [size] - Size of the radio.\n * @property {boolean} [disabled] - Whether the radio is disabled.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {React.ReactNode} [children] - The label/content for the radio.\n * @see Bulma Radio documentation: https://bulma.io/documentation/form/radio/\n */\nexport interface RadioProps\n extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'type' | 'color'\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor' | 'size'> {\n color?: (typeof radioColors)[number];\n size?: (typeof radioSizes)[number];\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Radio component with themed styling support.\n *\n * Renders a custom-styled radio button with a visual indicator,\n * supporting colors, sizes, and various states. Inside a `<Radios>` group,\n * Radio inherits `name` and (when the group is in controlled or uncontrolled\n * mode) derives its `checked` state from the group's `value` and dispatches\n * the group's `onChange` when clicked.\n *\n * Local props always win over group context (`name`, `checked`, `onChange`\n * on Radio override the group). Required for opt-out scenarios.\n *\n * @function\n * @param {RadioProps} props - Props for the Radio component.\n * @returns {JSX.Element} The rendered radio element.\n *\n * @example\n * // Basic radio\n * <Radio name=\"option\">Option A</Radio>\n *\n * @example\n * // Inside a group\n * <Radios name=\"color\" defaultValue=\"red\">\n * <Radio value=\"red\">Red</Radio>\n * <Radio value=\"blue\">Blue</Radio>\n * </Radios>\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n color,\n size,\n className,\n children,\n textColor,\n disabled,\n name,\n value,\n checked,\n defaultChecked,\n onChange,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n ...props,\n });\n\n // Inherit name + selection state from a surrounding <Radios> group.\n // Local props always win over the group (explicit > implicit).\n const group = useRadiosGroup();\n const effectiveName = name ?? group?.name;\n\n // Group-managed checked state — only when the group is in\n // controlled/uncontrolled mode (group.value is defined) AND this Radio\n // has a value to compare against. Local `checked` always wins.\n const groupManaged = group?.value !== undefined && value !== undefined;\n const effectiveChecked =\n checked !== undefined\n ? checked\n : groupManaged\n ? group!.value === value\n : undefined;\n // When the group manages checked, suppress local defaultChecked to avoid\n // the controlled/uncontrolled React warning.\n const effectiveDefaultChecked = groupManaged ? undefined : defaultChecked;\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n // Local onChange always fires.\n onChange?.(e);\n // Dispatch to the group additionally — keeps group state in sync.\n if (group?.onChange && value !== undefined) {\n group.onChange(String(value));\n }\n },\n [onChange, group, value]\n );\n\n const mainClass = usePrefixedClassNames('styled-radio', 'radio', {\n [`is-${color}`]: color && radioColors.includes(color),\n [`is-${size}`]: size && radioSizes.includes(size),\n });\n const radioClass = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <label className={radioClass}>\n <input\n ref={ref}\n type=\"radio\"\n disabled={disabled}\n name={effectiveName}\n value={value}\n checked={effectiveChecked}\n defaultChecked={effectiveDefaultChecked}\n onChange={handleChange}\n {...rest}\n />\n <span className=\"check\" />\n {children && <span className=\"control-label\">{children}</span>}\n </label>\n );\n }\n);\n\nRadio.displayName = 'Radio';\n\nexport default Radio;\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport {\n useInsideField,\n useInsideControl,\n RadiosProvider,\n RadiosGroupContextValue,\n} from './FormContext';\nimport { Field } from './Field';\nimport { Control } from './Control';\nimport { FormFieldProps } from './fieldProps';\n\n/**\n * Props for the Radios component.\n *\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {string} [name] - Form field name shared by every Radio in the group.\n * @property {string} [value] - Currently-selected value (controlled mode).\n * @property {string} [defaultValue] - Initial selected value (uncontrolled mode).\n * @property {(value: string) => void} [onChange] - Fired when the selection changes. Receives the new value.\n * @property {React.ReactNode} children - Radio elements to render in the group.\n */\nexport interface RadiosProps\n extends Omit<BulmaClassesProps, 'color'>, FormFieldProps {\n className?: string;\n name?: string;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n children: React.ReactNode;\n}\n\n/**\n * Wraps Radio components inside a Bulma 'radios' wrapper. Manages selection\n * state for the entire group when given `value`/`defaultValue`/`onChange`,\n * matching the pattern used by MUI's RadioGroup, Radix's RadioGroup, and React\n * Aria's RadioGroup.\n *\n * Three usage modes:\n *\n * 1. **Name-only** — pass `name`. Each child Radio manages its own checked\n * state via `defaultChecked` or `checked`. Backwards compatible.\n *\n * 2. **Controlled** — pass `value` and `onChange`. The group owns selection;\n * each child derives `checked` from `value === my.value`.\n *\n * 3. **Uncontrolled** — pass `defaultValue` (and optionally `onChange`). The\n * group manages internal state; `onChange` fires on selection change.\n *\n * @function\n * @param {RadiosProps} props - Props for the Radios component.\n * @returns {JSX.Element} The rendered radios group.\n * @see {@link https://bulma.io/documentation/form/radio/#grouped-radios | Bulma Radios documentation}\n *\n * @example\n * // Controlled\n * const [color, setColor] = useState('red');\n * <Radios name=\"color\" value={color} onChange={setColor}>\n * <Radio value=\"red\">Red</Radio>\n * <Radio value=\"green\">Green</Radio>\n * <Radio value=\"blue\">Blue</Radio>\n * </Radios>\n *\n * @example\n * // Uncontrolled\n * <Radios name=\"color\" defaultValue=\"red\" onChange={v => console.log(v)}>\n * <Radio value=\"red\">Red</Radio>\n * <Radio value=\"green\">Green</Radio>\n * </Radios>\n */\nexport const Radios: React.FC<RadiosProps> = ({\n label,\n labelSize,\n labelProps,\n horizontal,\n message,\n messageColor,\n fieldClassName,\n name,\n value,\n defaultValue,\n onChange,\n children,\n className,\n ...props\n}) => {\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('radios');\n const wrapperClass = classNames(mainClass, bulmaHelperClasses, className);\n\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n // The group is \"active\" (manages child selection) when the user opted in by\n // passing value, defaultValue, or onChange. Otherwise it's name-only and\n // children manage their own checked state (Stage 1 behavior).\n const groupActive =\n value !== undefined || defaultValue !== undefined || onChange !== undefined;\n\n const [internalValue, setInternalValue] = useState<string | undefined>(\n defaultValue\n );\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange = useCallback(\n (newValue: string) => {\n if (!isControlled) setInternalValue(newValue);\n onChange?.(newValue);\n },\n [isControlled, onChange]\n );\n\n const ctx = useMemo<RadiosGroupContextValue>(\n () => ({\n name,\n ...(groupActive ? { value: currentValue, onChange: handleChange } : {}),\n }),\n [name, groupActive, currentValue, handleChange]\n );\n\n const radiosElement = (\n <div className={wrapperClass} {...rest}>\n <RadiosProvider value={ctx}>{children}</RadiosProvider>\n </div>\n );\n\n let content = radiosElement;\n\n if (!insideControl) {\n content = <Control>{content}</Control>;\n }\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n};\n\nexport default Radios;\n","import React, { forwardRef } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Valid colors for the Switch component.\n */\nexport const switchColors = [\n 'primary',\n 'link',\n 'info',\n 'success',\n 'warning',\n 'danger',\n] as const;\n\n/**\n * Valid sizes for the Switch component.\n */\nexport const switchSizes = ['small', 'normal', 'medium', 'large'] as const;\n\n/**\n * Props for the Switch component.\n *\n * @property {(typeof switchColors)[number]} [color] - Color variant for the switch.\n * @property {(typeof switchSizes)[number]} [size] - Size of the switch.\n * @property {boolean} [isRounded] - Use rounded switch style.\n * @property {boolean} [isThin] - Use thin switch style.\n * @property {boolean} [isOutlined] - Use outlined switch style.\n * @property {boolean} [isRtl] - Right-to-left layout (label on left).\n * @property {(typeof switchColors)[number]} [passiveType] - Color for the unchecked (inactive) state.\n * @property {boolean} [checked] - Whether the switch is checked.\n * @property {boolean} [defaultChecked] - Default checked state for uncontrolled usage.\n * @property {boolean} [disabled] - Whether the switch is disabled.\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {React.ReactNode} [children] - Label content for the switch.\n * @property {(event: React.ChangeEvent<HTMLInputElement>) => void} [onChange] - Change handler.\n */\nexport interface SwitchProps\n extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'type' | 'color'\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor' | 'size'> {\n color?: (typeof switchColors)[number];\n size?: (typeof switchSizes)[number];\n isRounded?: boolean;\n isThin?: boolean;\n isOutlined?: boolean;\n isRtl?: boolean;\n passiveType?: (typeof switchColors)[number];\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Switch component for toggling between on/off states.\n *\n * A styled checkbox that appears as a toggle switch, commonly used for\n * settings and preferences. Supports various colors, sizes, and styles.\n *\n * @function\n * @param {SwitchProps} props - Props for the Switch component.\n * @returns {JSX.Element} The rendered switch element.\n *\n * @example\n * // Basic switch\n * <Switch>Enable notifications</Switch>\n *\n * @example\n * // Colored and rounded switch\n * <Switch color=\"success\" isRounded checked>\n * Active\n * </Switch>\n *\n * @example\n * // Controlled switch\n * <Switch\n * checked={isEnabled}\n * onChange={(e) => setIsEnabled(e.target.checked)}\n * >\n * Feature enabled\n * </Switch>\n */\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n color,\n size,\n isRounded,\n isThin,\n isOutlined,\n isRtl,\n passiveType,\n className,\n children,\n textColor,\n disabled,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n ...props,\n });\n\n // Generate Bulma classes with prefix\n const switchClasses = usePrefixedClassNames('switch', {\n [`is-${color}`]: color && switchColors.includes(color),\n [`is-${size}`]: size && switchSizes.includes(size),\n 'is-rounded': isRounded,\n 'is-thin': isThin,\n 'is-outlined': isOutlined,\n 'is-rtl': isRtl,\n [`is-${passiveType}-passive`]:\n passiveType && switchColors.includes(passiveType),\n });\n\n // Combine prefixed Bulma classes with unprefixed user className and helper classes\n const labelClasses = classNames(\n switchClasses,\n bulmaHelperClasses,\n className\n );\n\n return (\n <label className={labelClasses}>\n <input ref={ref} type=\"checkbox\" disabled={disabled} {...rest} />\n <span className=\"check\" />\n {children && <span className=\"control-label\">{children}</span>}\n </label>\n );\n }\n);\n\nSwitch.displayName = 'Switch';\n\nexport default Switch;\n","import React, {\n forwardRef,\n useState,\n useCallback,\n useRef,\n useMemo,\n useLayoutEffect,\n} from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { useInsideField, useInsideControl } from './FormContext';\nimport { Field } from './Field';\nimport { Control } from './Control';\nimport { FormFieldProps } from './fieldProps';\n\n/** Valid sizes for the Slider component. */\nexport type SliderSize = 'small' | 'medium' | 'large';\n\n/** Valid colors for the Slider component. */\nexport type SliderColor =\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger';\n\n/** Tooltip display mode for the Slider component. */\nexport type SliderTooltip = 'auto' | 'always' | 'hidden';\n\n/** Orientation of the Slider component. */\nexport type SliderOrientation = 'horizontal' | 'vertical';\n\n/**\n * A tick mark displayed along the Slider track.\n *\n * @property {number} value - Position of the mark along the slider range.\n * @property {React.ReactNode} [label] - Optional label rendered below the tick mark.\n */\nexport interface SliderMark {\n value: number;\n label?: React.ReactNode;\n}\n\n/**\n * Shared base props for single and range Slider modes.\n *\n * @property {number} [min] - Minimum slider value (default: 0).\n * @property {number} [max] - Maximum slider value (default: 100).\n * @property {number} [step] - Step increment (default: 1).\n * @property {SliderSize} [size] - Size of the slider.\n * @property {SliderColor} [color] - Color of the slider.\n * @property {boolean} [isRounded] - Whether the slider thumb is rounded.\n * @property {boolean} [isCircle] - Whether the slider thumb is circular.\n * @property {boolean} [showOutput] - Whether to show a tooltip with the current value (maps to tooltip 'auto').\n * @property {SliderTooltip} [tooltip] - Tooltip display mode (overrides showOutput).\n * @property {boolean} [ticks] - Whether to display tick marks at each step.\n * @property {SliderMark[]} [marks] - Custom tick mark positions and labels.\n * @property {SliderOrientation} [orientation] - Slider orientation (default: 'horizontal').\n * @property {(value: number) => number} [scale] - Non-linear scale function for displayed values.\n * @property {(value: number) => string} [getAriaValueText] - Custom aria-valuetext formatter.\n * @property {(value: number) => string} [formatOutput] - Custom formatter for the tooltip output.\n */\ninterface SliderBaseProps\n extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'color' | 'size' | 'onChange' | 'value' | 'defaultValue'\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor' | 'size'>,\n FormFieldProps {\n min?: number;\n max?: number;\n step?: number;\n size?: SliderSize;\n color?: SliderColor;\n isRounded?: boolean;\n isCircle?: boolean;\n showOutput?: boolean;\n tooltip?: SliderTooltip;\n ticks?: boolean;\n marks?: SliderMark[];\n orientation?: SliderOrientation;\n scale?: (value: number) => number;\n getAriaValueText?: (value: number) => string;\n formatOutput?: (value: number) => string;\n}\n\n/**\n * Props for the Slider in single-value mode.\n *\n * @property {false} [range] - Must be false or omitted for single-value mode.\n * @property {number} [value] - Controlled slider value.\n * @property {number} [defaultValue] - Initial value for uncontrolled mode.\n * @property {(value: number) => void} [onChange] - Callback when the value changes.\n * @property {never} [minDistance] - Not applicable in single-value mode.\n * @property {string} [ariaLabel] - Accessible label for the slider input.\n */\nexport interface SliderSingleProps extends SliderBaseProps {\n range?: false;\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n minDistance?: never;\n ariaLabel?: string;\n}\n\n/**\n * Props for the Slider in range (dual-thumb) mode.\n *\n * @property {true} range - Must be true to enable range mode.\n * @property {[number, number]} [value] - Controlled range value as [low, high].\n * @property {[number, number]} [defaultValue] - Initial range for uncontrolled mode.\n * @property {(value: [number, number]) => void} [onChange] - Callback when the range changes.\n * @property {number} [minDistance] - Minimum distance between the two thumbs.\n * @property {[string, string]} [ariaLabel] - Accessible labels for the low and high thumb inputs.\n * @property {string} [nameLow] - Form field name for the low thumb. Use this in range mode so each thumb submits with its own name.\n * @property {string} [nameHigh] - Form field name for the high thumb.\n */\nexport interface SliderRangeProps extends SliderBaseProps {\n range: true;\n value?: [number, number];\n defaultValue?: [number, number];\n onChange?: (value: [number, number]) => void;\n minDistance?: number;\n ariaLabel?: [string, string];\n nameLow?: string;\n nameHigh?: string;\n}\n\n/** Props for the Slider component — a discriminated union of single and range modes. */\nexport type SliderProps = SliderSingleProps | SliderRangeProps;\n\n/**\n * Helper to compute tick positions.\n * If `marks` are provided, those positions are used.\n * If `ticks` is true, generates ticks at every step (capped at 100).\n */\nfunction getTickPositions(\n min: number,\n max: number,\n step: number,\n ticks?: boolean,\n marks?: SliderMark[]\n): SliderMark[] {\n if (marks && marks.length > 0) return marks;\n if (!ticks) return [];\n const positions: SliderMark[] = [];\n const count = Math.round((max - min) / step);\n if (count > 100) {\n // Cap at 100 ticks to prevent perf issues\n const tickStep = (max - min) / 100;\n // Skip first (i=0) and last (i=100) — no ticks at endpoints\n for (let i = 1; i < 100; i++) {\n positions.push({ value: min + i * tickStep });\n }\n } else {\n // Skip first (i=0) and last (i=count) — no ticks at endpoints\n for (let i = 1; i < count; i++) {\n positions.push({ value: min + i * step });\n }\n }\n return positions;\n}\n\n/**\n * Slider component for selecting a value or range from a range.\n *\n * A styled range input that supports different sizes, colors,\n * optional value display, ticks/marks, range mode (dual thumb),\n * vertical orientation, and non-linear scale.\n *\n * @function\n * @param {SliderProps} props - Props for the Slider component.\n * @returns {JSX.Element} The rendered slider element.\n *\n * @example\n * // Basic slider\n * <Slider defaultValue={50} />\n *\n * @example\n * // Range slider\n * <Slider range defaultValue={[20, 80]} onChange={([low, high]) => {}} />\n */\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n (props, ref) => {\n // Pull out fields that differ between the single and range branches\n // *first*, by narrowing on the `range` discriminator. We then destructure\n // the remaining base props from a `SliderBaseProps` view of `props`.\n //\n // Why not destructure everything via `props as SliderRangeProps & SliderSingleProps`?\n // Because intersecting the two halves of a discriminated union collapses\n // overlapping fields (e.g. `range: true & false`, `value: number & [number, number]`,\n // `onChange`, `ariaLabel`) to `never`, which breaks call sites and rest spreads.\n let range: boolean | undefined;\n let controlledValue: number | [number, number] | undefined;\n let defaultValue: number | [number, number] | undefined;\n let onChange:\n | ((v: number) => void)\n | ((v: [number, number]) => void)\n | undefined;\n let ariaLabel: string | [string, string] | undefined;\n let minDistance = 0;\n let nameLow: string | undefined;\n let nameHigh: string | undefined;\n if (props.range === true) {\n range = true;\n controlledValue = props.value;\n defaultValue = props.defaultValue;\n onChange = props.onChange;\n ariaLabel = props.ariaLabel;\n minDistance = props.minDistance ?? 0;\n nameLow = props.nameLow;\n nameHigh = props.nameHigh;\n } else {\n range = props.range;\n controlledValue = props.value;\n defaultValue = props.defaultValue;\n onChange = props.onChange;\n ariaLabel = props.ariaLabel;\n }\n\n // Destructure base / shared props from a `SliderBaseProps` view. None of\n // these fields differ between the two branches, so this view is safe.\n const {\n label,\n labelSize,\n labelProps,\n horizontal,\n message,\n messageColor,\n fieldClassName,\n min = 0,\n max = 100,\n step = 1,\n size,\n color,\n isRounded = false,\n isCircle = false,\n disabled = false,\n showOutput = false,\n tooltip,\n ticks,\n marks,\n orientation = 'horizontal',\n scale,\n getAriaValueText,\n formatOutput,\n className,\n // Strip the discriminated/union fields from `restProps` so they don't\n // flow back into `useBulmaClasses` / spread onto inputs.\n range: _range,\n value: _value,\n defaultValue: _defaultValue,\n onChange: _onChange,\n ariaLabel: _ariaLabel,\n minDistance: _minDistance,\n nameLow: _nameLow,\n nameHigh: _nameHigh,\n ...restProps\n } = props as SliderBaseProps & {\n range?: boolean;\n value?: number | [number, number];\n defaultValue?: number | [number, number];\n onChange?: (v: never) => void;\n ariaLabel?: string | [string, string];\n minDistance?: number;\n nameLow?: string;\n nameHigh?: string;\n };\n void _range;\n void _value;\n void _defaultValue;\n void _onChange;\n void _ariaLabel;\n void _minDistance;\n void _nameLow;\n void _nameHigh;\n\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const { bulmaHelperClasses, rest } = useBulmaClasses(restProps);\n\n // Resolve tooltip mode: explicit tooltip prop takes precedence, else showOutput maps to 'auto'\n const tooltipMode: SliderTooltip =\n tooltip ?? (showOutput ? 'auto' : 'hidden');\n\n // --- Range mode state ---\n const [internalRange, setInternalRange] = useState<[number, number]>(() =>\n range ? ((defaultValue as [number, number]) ?? [min, max]) : [min, min]\n );\n const [internalSingle, setInternalSingle] = useState<number>(() =>\n !range ? ((defaultValue as number) ?? 0) : 0\n );\n const [showTooltip, setShowTooltip] = useState(false);\n const [showTooltipHigh, setShowTooltipHigh] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const inputHighRef = useRef<HTMLInputElement>(null);\n const outputRef = useRef<HTMLOutputElement>(null);\n const outputHighRef = useRef<HTMLOutputElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [flipped, setFlipped] = useState(false);\n const [flippedHigh, setFlippedHigh] = useState(false);\n const [nudgeX, setNudgeX] = useState(0);\n const [nudgeXHigh, setNudgeXHigh] = useState(0);\n const [verticalFlippedLeft, setVerticalFlippedLeft] = useState(false);\n\n const isControlled = controlledValue !== undefined;\n\n // Current values\n const currentRange: [number, number] = range\n ? isControlled\n ? (controlledValue as [number, number])\n : internalRange\n : [0, 0];\n const currentSingle: number = !range\n ? isControlled\n ? (controlledValue as number)\n : internalSingle\n : 0;\n\n // Progress percentages\n const progressSingle = !range\n ? ((currentSingle - min) / (max - min)) * 100\n : 0;\n const progressLow = range\n ? ((currentRange[0] - min) / (max - min)) * 100\n : 0;\n const progressHigh = range\n ? ((currentRange[1] - min) / (max - min)) * 100\n : 0;\n\n // Scale helper\n const scaleValue = useCallback(\n (v: number) => (scale ? scale(v) : v),\n [scale]\n );\n\n // Format helper\n const formatValue = useCallback(\n (v: number) => {\n const scaled = scaleValue(v);\n return formatOutput ? formatOutput(scaled) : scaled.toString();\n },\n [formatOutput, scaleValue]\n );\n\n // --- Handlers ---\n const handleSingleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = parseFloat(e.target.value);\n if (!isControlled) setInternalSingle(newValue);\n (onChange as ((v: number) => void) | undefined)?.(newValue);\n },\n [isControlled, onChange]\n );\n\n const handleRangeLowChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = parseFloat(e.target.value);\n const clamped = Math.min(raw, currentRange[1] - minDistance);\n const newRange: [number, number] = [clamped, currentRange[1]];\n if (!isControlled) setInternalRange(newRange);\n (onChange as ((v: [number, number]) => void) | undefined)?.(newRange);\n },\n [isControlled, onChange, currentRange, minDistance]\n );\n\n const handleRangeHighChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = parseFloat(e.target.value);\n const clamped = Math.max(raw, currentRange[0] + minDistance);\n const newRange: [number, number] = [currentRange[0], clamped];\n if (!isControlled) setInternalRange(newRange);\n (onChange as ((v: [number, number]) => void) | undefined)?.(newRange);\n },\n [isControlled, onChange, currentRange, minDistance]\n );\n\n // Key handler for Home/End\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Home') {\n e.preventDefault();\n if (!range) {\n if (!isControlled) setInternalSingle(min);\n (onChange as ((v: number) => void) | undefined)?.(min);\n }\n } else if (e.key === 'End') {\n e.preventDefault();\n if (!range) {\n if (!isControlled) setInternalSingle(max);\n (onChange as ((v: number) => void) | undefined)?.(max);\n }\n }\n },\n [range, isControlled, onChange, min, max]\n );\n\n // Tick positions\n const tickPositions = useMemo(\n () => getTickPositions(min, max, step, ticks, marks),\n [min, max, step, ticks, marks]\n );\n\n const hasLabels = tickPositions.some(t => t.label !== undefined);\n const isVertical = orientation === 'vertical';\n\n // Compute corrected thumb position CSS calc expression.\n // The browser insets the range input thumb by half its size from each edge,\n // so the tooltip left must account for this to align with the thumb center.\n const thumbVarName = size\n ? `slider-thumb-size-${size}`\n : 'slider-thumb-size';\n const thumbCssVar = `var(--bulma-${thumbVarName})`;\n const effectiveThumbExpr = isCircle\n ? `(${thumbCssVar} * 1.2)`\n : thumbCssVar;\n\n const getThumbLeft = (progressPct: number) => {\n const fraction = progressPct / 100;\n return `calc(${effectiveThumbExpr} / 2 + ${fraction} * (100% - ${effectiveThumbExpr}))`;\n };\n\n // Vertical tooltip offset: position to the right or left of the thumb\n const verticalTooltipOffset = `calc(50% + ${effectiveThumbExpr} / 2 + 0.5rem)`;\n\n // Get effective thumb size in px for nudge computation\n const getThumbSizePx = (): number => {\n const el = inputRef.current;\n if (!el) return 0;\n const style = getComputedStyle(el);\n const raw = style.getPropertyValue(`--bulma-${thumbVarName}`).trim();\n const value = parseFloat(raw);\n if (isNaN(value)) return 0;\n let px: number;\n if (raw.includes('rem')) {\n const rootFs =\n parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\n px = value * rootFs;\n } else {\n px = value;\n }\n return isCircle ? px * 1.2 : px;\n };\n\n // Generate wrapper classes\n const sliderClasses = usePrefixedClassNames('slider', {\n [`is-${size}`]: size,\n [`is-${color}`]: color,\n 'is-rounded': isRounded,\n 'is-circle': isCircle,\n 'is-disabled': disabled,\n 'has-output': tooltipMode !== 'hidden',\n 'has-output-always': tooltipMode === 'always',\n 'is-vertical': isVertical,\n 'is-range': range,\n 'has-ticks': tickPositions.length > 0,\n 'has-tick-labels': hasLabels,\n });\n\n const combinedClasses = classNames(\n sliderClasses,\n bulmaHelperClasses,\n className\n );\n\n // Combined ref for the first (or only) input\n const combinedRef = (node: HTMLInputElement | null) => {\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n };\n\n // Tooltip show/hide for auto mode\n const showTipLow =\n tooltipMode === 'always' || (tooltipMode === 'auto' && showTooltip);\n const showTipHigh =\n tooltipMode === 'always' || (tooltipMode === 'auto' && showTooltipHigh);\n\n // Aria value text\n const getAriaProps = (value: number) => {\n const ariaProps: Record<string, string> = {};\n if (getAriaValueText) {\n ariaProps['aria-valuetext'] = getAriaValueText(value);\n } else if (scale) {\n ariaProps['aria-valuetext'] = scaleValue(value).toString();\n }\n return ariaProps;\n };\n\n // Detect tooltip overflow: flip vertically if clipped at top,\n // nudge horizontally if clipped at left/right edge.\n // We compute the un-nudged tooltip position from the progress %\n // and wrapper rect to avoid feedback loops.\n const computeNudge = useCallback(\n (\n el: HTMLElement,\n wrapper: HTMLElement,\n progressPct: number,\n thumbSizePx: number\n ): number => {\n const wr = wrapper.getBoundingClientRect();\n const tooltipWidth = el.offsetWidth;\n // Corrected center: accounts for thumb inset from track edges\n const fraction = progressPct / 100;\n const centerX =\n wr.left + thumbSizePx / 2 + fraction * (wr.width - thumbSizePx);\n const tooltipLeft = centerX - tooltipWidth / 2;\n const tooltipRight = centerX + tooltipWidth / 2;\n if (tooltipLeft < wr.left) {\n return wr.left - tooltipLeft; // nudge right\n }\n if (tooltipRight > wr.right) {\n return wr.right - tooltipRight; // nudge left (negative)\n }\n return 0;\n },\n []\n );\n\n useLayoutEffect(() => {\n if (isVertical) return;\n const wrapper = wrapperRef.current;\n const el = outputRef.current;\n if (wrapper && el) {\n const wrapperTop = wrapper.getBoundingClientRect().top;\n const tooltipHeight = el.offsetHeight + 10;\n setFlipped(wrapperTop < tooltipHeight);\n const pct = range ? progressLow : progressSingle;\n const thumbPx = getThumbSizePx();\n setNudgeX(computeNudge(el, wrapper, pct, thumbPx));\n }\n });\n\n useLayoutEffect(() => {\n if (isVertical || !range) return;\n const wrapper = wrapperRef.current;\n const el = outputHighRef.current;\n if (wrapper && el) {\n const wrapperTop = wrapper.getBoundingClientRect().top;\n const tooltipHeight = el.offsetHeight + 10;\n setFlippedHigh(wrapperTop < tooltipHeight);\n const thumbPx = getThumbSizePx();\n setNudgeXHigh(computeNudge(el, wrapper, progressHigh, thumbPx));\n }\n });\n\n // Detect vertical tooltip overflow: flip to left if no space on right\n useLayoutEffect(() => {\n if (!isVertical) return;\n const wrapper = wrapperRef.current;\n const el = outputRef.current;\n if (!wrapper || !el) return;\n const wrapperRect = wrapper.getBoundingClientRect();\n const tooltipWidth = el.offsetWidth;\n const thumbPx = getThumbSizePx();\n const gap = 8; // 0.5rem\n // Tooltip right edge if placed to the right of the thumb\n const tooltipRightEdge =\n wrapperRect.left +\n wrapperRect.width / 2 +\n thumbPx / 2 +\n gap +\n tooltipWidth;\n setVerticalFlippedLeft(tooltipRightEdge > window.innerWidth);\n });\n\n // Vertical wrapper style\n const wrapperStyle = isVertical\n ? ({\n height: 'var(--bulma-slider-vertical-height, 200px)',\n } as React.CSSProperties)\n : undefined;\n\n // Render ticks\n const renderTicks = () => {\n if (tickPositions.length === 0) return null;\n return (\n <div className=\"slider-ticks\">\n {tickPositions.map((tick, i) => {\n const pct = ((tick.value - min) / (max - min)) * 100;\n const posStyle = isVertical\n ? { bottom: `${pct}%` }\n : { left: `${pct}%` };\n const isEndpoint = tick.value === min || tick.value === max;\n return (\n <span\n key={i}\n className={classNames('slider-tick', {\n 'is-endpoint': isEndpoint,\n })}\n style={posStyle}\n >\n {tick.label !== undefined && (\n <span className=\"slider-tick-label\">{tick.label}</span>\n )}\n </span>\n );\n })}\n </div>\n );\n };\n\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n // --- Single slider ---\n const sliderElement = !range ? (\n <div ref={wrapperRef} className={combinedClasses} style={wrapperStyle}>\n <input\n ref={combinedRef}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={currentSingle}\n disabled={disabled}\n onChange={handleSingleChange}\n onKeyDown={handleKeyDown}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onFocus={() => setShowTooltip(true)}\n onBlur={() => setShowTooltip(false)}\n className=\"slider-input\"\n style={\n {\n '--slider-progress': `${progressSingle}%`,\n } as React.CSSProperties\n }\n aria-valuenow={currentSingle}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-orientation={isVertical ? 'vertical' : undefined}\n aria-label={ariaLabel as string | undefined}\n {...getAriaProps(currentSingle)}\n {...rest}\n />\n {tooltipMode !== 'hidden' && (\n <output\n ref={outputRef}\n className={classNames('slider-output', {\n 'is-visible': showTipLow,\n 'is-flipped': flipped,\n 'is-flipped-left': isVertical && verticalFlippedLeft,\n })}\n style={\n isVertical\n ? ((verticalFlippedLeft\n ? {\n bottom: getThumbLeft(progressSingle),\n right: verticalTooltipOffset,\n left: 'auto',\n }\n : {\n bottom: getThumbLeft(progressSingle),\n left: verticalTooltipOffset,\n right: 'auto',\n }) as React.CSSProperties)\n : ({\n left: getThumbLeft(progressSingle),\n transform: `translateX(calc(-50% + ${nudgeX}px))`,\n '--slider-output-arrow-offset': `calc(50% - ${nudgeX}px)`,\n } as React.CSSProperties)\n }\n >\n {formatValue(currentSingle)}\n </output>\n )}\n {renderTicks()}\n </div>\n ) : (\n // --- Range slider ---\n <div ref={wrapperRef} className={combinedClasses} style={wrapperStyle}>\n {/* Visible track background */}\n <div\n className=\"slider-track\"\n style={\n isVertical\n ? ({\n '--slider-progress-low': `${progressLow}%`,\n '--slider-progress-high': `${progressHigh}%`,\n } as React.CSSProperties)\n : ({\n '--slider-progress-low': `${progressLow}%`,\n '--slider-progress-high': `${progressHigh}%`,\n } as React.CSSProperties)\n }\n />\n {/* Low thumb. nameLow overrides any `name` from rest so each thumb has its own form field. */}\n <input\n ref={combinedRef}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={currentRange[0]}\n disabled={disabled}\n onChange={handleRangeLowChange}\n onKeyDown={handleKeyDown}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onFocus={() => setShowTooltip(true)}\n onBlur={() => setShowTooltip(false)}\n className=\"slider-input slider-input-low\"\n aria-valuenow={currentRange[0]}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-orientation={isVertical ? 'vertical' : undefined}\n aria-label={\n (ariaLabel as [string, string] | undefined)?.[0] ?? 'Minimum value'\n }\n {...getAriaProps(currentRange[0])}\n {...rest}\n {...(nameLow !== undefined ? { name: nameLow } : {})}\n />\n {/* High thumb */}\n <input\n ref={inputHighRef}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={currentRange[1]}\n disabled={disabled}\n onChange={handleRangeHighChange}\n onMouseEnter={() => setShowTooltipHigh(true)}\n onMouseLeave={() => setShowTooltipHigh(false)}\n onFocus={() => setShowTooltipHigh(true)}\n onBlur={() => setShowTooltipHigh(false)}\n className=\"slider-input slider-input-high\"\n aria-valuenow={currentRange[1]}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-orientation={isVertical ? 'vertical' : undefined}\n aria-label={\n (ariaLabel as [string, string] | undefined)?.[1] ?? 'Maximum value'\n }\n {...getAriaProps(currentRange[1])}\n name={nameHigh}\n />\n {/* Low tooltip */}\n {tooltipMode !== 'hidden' && (\n <output\n ref={outputRef}\n className={classNames('slider-output slider-output-low', {\n 'is-visible': showTipLow,\n 'is-flipped': flipped,\n 'is-flipped-left': isVertical && verticalFlippedLeft,\n })}\n style={\n isVertical\n ? ((verticalFlippedLeft\n ? {\n bottom: getThumbLeft(progressLow),\n right: verticalTooltipOffset,\n left: 'auto',\n }\n : {\n bottom: getThumbLeft(progressLow),\n left: verticalTooltipOffset,\n right: 'auto',\n }) as React.CSSProperties)\n : ({\n left: getThumbLeft(progressLow),\n transform: `translateX(calc(-50% + ${nudgeX}px))`,\n '--slider-output-arrow-offset': `calc(50% - ${nudgeX}px)`,\n } as React.CSSProperties)\n }\n >\n {formatValue(currentRange[0])}\n </output>\n )}\n {/* High tooltip */}\n {tooltipMode !== 'hidden' && (\n <output\n ref={outputHighRef}\n className={classNames('slider-output slider-output-high', {\n 'is-visible': showTipHigh,\n 'is-flipped': flippedHigh,\n 'is-flipped-left': isVertical && verticalFlippedLeft,\n })}\n style={\n isVertical\n ? ((verticalFlippedLeft\n ? {\n bottom: getThumbLeft(progressHigh),\n right: verticalTooltipOffset,\n left: 'auto',\n }\n : {\n bottom: getThumbLeft(progressHigh),\n left: verticalTooltipOffset,\n right: 'auto',\n }) as React.CSSProperties)\n : ({\n left: getThumbLeft(progressHigh),\n transform: `translateX(calc(-50% + ${nudgeXHigh}px))`,\n '--slider-output-arrow-offset': `calc(50% - ${nudgeXHigh}px)`,\n } as React.CSSProperties)\n }\n >\n {formatValue(currentRange[1])}\n </output>\n )}\n {renderTicks()}\n </div>\n );\n\n let content = sliderElement;\n\n if (!insideControl) {\n content = <Control>{content}</Control>;\n }\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n }\n);\n\nSlider.displayName = 'Slider';\n\nexport default Slider;\n","import React, { forwardRef, useState, useCallback, useRef } from 'react';\nimport type { JSX } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { useInsideField } from './FormContext';\nimport { Field } from './Field';\nimport { FormFieldProps } from './fieldProps';\n\n/** Valid sizes for the Numberinput component. */\nexport type NumberinputSize = 'small' | 'medium' | 'large';\n\n/** Valid colors for the Numberinput wrapper and control buttons. */\nexport type NumberinputColor =\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'light'\n | 'dark';\n\n/** Valid colors for the Numberinput inner input element. */\nexport type NumberinputInputColor =\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger';\n\n/** Position of the increment/decrement control buttons. */\nexport type NumberinputControlsPosition = 'left' | 'right' | 'both';\n\n/** Visual variant for the Numberinput controls. */\nexport type NumberinputVariant = 'plusminus' | 'stepper';\n\n/**\n * Props for the Numberinput component.\n *\n * @property {number} [value] - Controlled numeric value.\n * @property {number} [defaultValue] - Initial value for uncontrolled mode.\n * @property {number} [min] - Minimum allowed value.\n * @property {number} [max] - Maximum allowed value.\n * @property {number} [step] - Step increment (default: 1).\n * @property {NumberinputSize} [size] - Size of the input and buttons.\n * @property {NumberinputColor} [color] - Color for the control buttons.\n * @property {NumberinputInputColor} [inputColor] - Color for the inner input element.\n * @property {NumberinputControlsPosition} [controlsPosition] - Position of increment/decrement buttons (default: 'both').\n * @property {boolean} [controlsRounded] - Whether the control buttons are rounded.\n * @property {boolean} [compact] - Whether to use compact (addons) layout.\n * @property {boolean} [bare] - Bare mode: no outer .field wrapper, for composing inside a parent Field.\n * @property {NumberinputVariant} [variant] - Control variant: 'plusminus' (default) or 'stepper'.\n * @property {boolean} [disabled] - Whether the input is disabled.\n * @property {boolean} [editable] - Whether the user can type directly into the input (default: true).\n * @property {boolean} [isLoading] - Whether to show a loading spinner on the input.\n * @property {boolean} [exponential] - Whether the step grows with the value magnitude.\n * @property {(value: number) => void} [onChange] - Callback when the value changes.\n * @see {@link https://buefy.org/documentation/numberinput | Buefy Numberinput documentation}\n */\nexport interface NumberinputProps\n extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'color' | 'size' | 'onChange' | 'value' | 'defaultValue' | 'type'\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor' | 'size'>,\n FormFieldProps {\n value?: number;\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n size?: NumberinputSize;\n color?: NumberinputColor;\n inputColor?: NumberinputInputColor;\n controlsPosition?: NumberinputControlsPosition;\n controlsRounded?: boolean;\n compact?: boolean;\n bare?: boolean;\n variant?: NumberinputVariant;\n disabled?: boolean;\n editable?: boolean;\n isLoading?: boolean;\n exponential?: boolean;\n onChange?: (value: number) => void;\n}\n\nconst ArrowDropUp = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M7 14.5l5-5 5 5\" />\n </svg>\n);\n\nconst ArrowDropDown = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M7 9.5l5 5 5-5\" />\n </svg>\n);\n\n/**\n * Bulma-styled numeric input with increment/decrement controls.\n *\n * Supports plus/minus buttons or a compact stepper variant,\n * with configurable min/max, step, and exponential stepping.\n *\n * @function\n * @param {NumberinputProps} props - Props for the Numberinput component.\n * @returns {JSX.Element} The rendered numeric input element.\n *\n * @example\n * // Basic number input\n * <Numberinput defaultValue={5} min={0} max={100} />\n *\n * @example\n * // Stepper variant with color\n * <Numberinput variant=\"stepper\" color=\"primary\" step={10} />\n */\nexport const Numberinput = forwardRef<HTMLInputElement, NumberinputProps>(\n (\n {\n // Field props\n label,\n labelSize,\n labelProps,\n horizontal,\n message,\n messageColor,\n fieldClassName,\n value: controlledValue,\n defaultValue,\n min,\n max,\n step = 1,\n size,\n color,\n inputColor,\n controlsPosition = 'both',\n controlsRounded = false,\n compact = false,\n bare,\n variant = 'plusminus',\n disabled = false,\n editable = true,\n isLoading = false,\n exponential = false,\n onChange,\n className,\n ...props\n },\n ref\n ) => {\n const insideField = useInsideField();\n const effectiveBare = bare ?? insideField;\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const [internalValue, setInternalValue] = useState<number | undefined>(\n defaultValue\n );\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Determine if controlled\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n\n // Layout mode\n const isStepper = variant === 'stepper';\n const isAddons = compact || isStepper;\n const effectiveControlsPosition = isStepper ? 'right' : controlsPosition;\n\n // Clamp value to min/max\n const clampValue = useCallback(\n (val: number): number => {\n let clamped = val;\n if (min !== undefined && clamped < min) clamped = min;\n if (max !== undefined && clamped > max) clamped = max;\n return clamped;\n },\n [min, max]\n );\n\n // Update value\n const updateValue = useCallback(\n (newValue: number) => {\n const clampedValue = clampValue(newValue);\n if (!isControlled) {\n setInternalValue(clampedValue);\n }\n onChange?.(clampedValue);\n },\n [isControlled, clampValue, onChange]\n );\n\n // Exponential step: step grows with value magnitude\n const getEffectiveStep = useCallback(() => {\n if (!exponential) return step;\n return step * Math.max(1, Math.floor(Math.abs(currentValue ?? 0)));\n }, [exponential, step, currentValue]);\n\n // Handle increment\n const handleIncrement = useCallback(() => {\n updateValue((currentValue ?? 0) + getEffectiveStep());\n }, [currentValue, getEffectiveStep, updateValue]);\n\n // Handle decrement\n const handleDecrement = useCallback(() => {\n updateValue((currentValue ?? 0) - getEffectiveStep());\n }, [currentValue, getEffectiveStep, updateValue]);\n\n // Handle input change\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = parseFloat(e.target.value);\n if (!isNaN(newValue)) {\n updateValue(newValue);\n }\n },\n [updateValue]\n );\n\n // Handle keyboard\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n handleIncrement();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n handleDecrement();\n }\n },\n [handleIncrement, handleDecrement]\n );\n\n // Check if at limits\n const isAtMin =\n min !== undefined && currentValue !== undefined && currentValue <= min;\n const isAtMax =\n max !== undefined && currentValue !== undefined && currentValue >= max;\n\n // Generate classes\n const fieldClasses = usePrefixedClassNames('field', {\n 'is-grouped': !isAddons,\n 'has-addons': isAddons,\n });\n\n const numberinputClasses = usePrefixedClassNames('numberinput', {\n 'is-compact': isAddons,\n 'is-stepper': isStepper,\n [`is-${size}`]: !!size,\n 'is-disabled': disabled,\n [`controls-${effectiveControlsPosition}`]:\n effectiveControlsPosition !== 'both',\n });\n\n const controlClasses = usePrefixedClassNames('control');\n const expandedControlClasses = usePrefixedClassNames('control', {\n 'is-expanded': true,\n 'is-loading': isLoading,\n });\n\n const buttonClasses = usePrefixedClassNames('button', {\n [`is-${size}`]: !!size,\n [`is-${color}`]: !!color,\n 'is-rounded': controlsRounded,\n });\n\n const inputClasses = usePrefixedClassNames('input', {\n [`is-${size}`]: !!size,\n [`is-${inputColor}`]: !!inputColor,\n });\n\n const iconClasses = usePrefixedClassNames('icon', 'is-small');\n const stepperClasses = usePrefixedClassNames('numberinput-stepper');\n const stepperButtonClasses = usePrefixedClassNames(\n 'numberinput-stepper-button'\n );\n\n const combinedClasses = classNames(\n fieldClasses,\n numberinputClasses,\n bulmaHelperClasses,\n className\n );\n\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n // Use combined ref\n const combinedRef = (node: HTMLInputElement | null) => {\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n };\n\n // Shared input element\n const inputControl = (\n <div className={expandedControlClasses}>\n <input\n ref={combinedRef}\n type=\"number\"\n className={inputClasses}\n value={currentValue ?? ''}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n readOnly={!editable}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n aria-valuenow={currentValue ?? undefined}\n aria-valuemin={min}\n aria-valuemax={max}\n {...rest}\n />\n </div>\n );\n\n // Stepper variant\n if (isStepper) {\n const stepperElement = (\n <div className={combinedClasses}>\n {inputControl}\n <div className={controlClasses}>\n <div className={stepperClasses}>\n <button\n type=\"button\"\n className={stepperButtonClasses}\n onClick={handleIncrement}\n disabled={disabled || isAtMax}\n tabIndex={-1}\n aria-label=\"Increase value\"\n >\n <ArrowDropUp />\n </button>\n <button\n type=\"button\"\n className={stepperButtonClasses}\n onClick={handleDecrement}\n disabled={disabled || isAtMin}\n tabIndex={-1}\n aria-label=\"Decrease value\"\n >\n <ArrowDropDown />\n </button>\n </div>\n </div>\n </div>\n );\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {stepperElement}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {stepperElement}\n {messageEl}\n </>\n );\n }\n\n // Plusminus buttons\n const decrementButton = (\n <button\n type=\"button\"\n className={buttonClasses}\n onClick={handleDecrement}\n disabled={disabled || isAtMin}\n tabIndex={-1}\n aria-label=\"Decrease value\"\n >\n <span className={iconClasses}>\n <span aria-hidden=\"true\">−</span>\n </span>\n </button>\n );\n\n const incrementButton = (\n <button\n type=\"button\"\n className={buttonClasses}\n onClick={handleIncrement}\n disabled={disabled || isAtMax}\n tabIndex={-1}\n aria-label=\"Increase value\"\n >\n <span className={iconClasses}>\n <span aria-hidden=\"true\">+</span>\n </span>\n </button>\n );\n\n const decrementControl = (\n <div className={controlClasses}>{decrementButton}</div>\n );\n const incrementControl = (\n <div className={controlClasses}>{incrementButton}</div>\n );\n\n // Bare mode: no outer .field wrapper, for composing inside a parent Field\n if (effectiveBare) {\n const bareClasses = classNames(\n numberinputClasses,\n bulmaHelperClasses,\n className\n );\n\n if (effectiveControlsPosition === 'left') {\n return (\n <div className={bareClasses} style={{ display: 'contents' }}>\n {decrementControl}\n {incrementControl}\n {inputControl}\n </div>\n );\n }\n\n if (effectiveControlsPosition === 'right') {\n return (\n <div className={bareClasses} style={{ display: 'contents' }}>\n {inputControl}\n {decrementControl}\n {incrementControl}\n </div>\n );\n }\n\n return (\n <div className={bareClasses} style={{ display: 'contents' }}>\n {decrementControl}\n {inputControl}\n {incrementControl}\n </div>\n );\n }\n\n // Controls left: [−] [+] [input]\n let numberinputElement: JSX.Element;\n if (effectiveControlsPosition === 'left') {\n numberinputElement = (\n <div className={combinedClasses}>\n {decrementControl}\n {incrementControl}\n {inputControl}\n </div>\n );\n } else if (effectiveControlsPosition === 'right') {\n // Controls right: [input] [−] [+]\n numberinputElement = (\n <div className={combinedClasses}>\n {inputControl}\n {decrementControl}\n {incrementControl}\n </div>\n );\n } else {\n // Both sides (default): [−] [input] [+]\n numberinputElement = (\n <div className={combinedClasses}>\n {decrementControl}\n {inputControl}\n {incrementControl}\n </div>\n );\n }\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {numberinputElement}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {numberinputElement}\n {messageEl}\n </>\n );\n }\n);\n\nNumberinput.displayName = 'Numberinput';\n\nexport default Numberinput;\n","import React, { forwardRef, useState, useCallback } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { Icon } from '../elements/Icon';\nimport { useIconLibrary } from '../helpers/Config';\nimport { useInsideField, useInsideControl } from './FormContext';\nimport { Field } from './Field';\nimport { Control } from './Control';\nimport { FormFieldProps } from './fieldProps';\n\n/** Available size modifiers for the Rate component. */\nexport type RateSize = 'small' | 'medium' | 'large';\ntype IconLibrary = 'fa' | 'mdi' | 'ion' | 'material-icons' | 'material-symbols';\ntype BulmaColor =\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger';\n\n/**\n * Props for individual rate icons.\n *\n * @property {number} index - The index of this icon (0-based).\n * @property {boolean} isActive - Whether this icon is currently active (filled).\n * @property {boolean} isHovered - Whether this icon is currently hovered.\n * @property {number} value - The current value.\n * @property {number} fillPercent - Fill percentage for partial icons (0-100). Used with precision < 1.\n */\nexport interface RateIconProps {\n /** The index of this icon (0-based) */\n index: number;\n /** Whether this icon is currently active (filled) */\n isActive: boolean;\n /** Whether this icon is currently hovered */\n isHovered: boolean;\n /** The current value */\n value: number;\n /** Fill percentage for partial icons (0-100). Used with precision < 1. */\n fillPercent: number;\n}\n\n/**\n * Props for the Rate component.\n *\n * @property {number} [value] - Controlled rating value.\n * @property {number} [defaultValue] - Initial value for uncontrolled mode. Default: 0.\n * @property {number} [max] - Maximum number of icons. Default: 5.\n * @property {RateSize} [size] - Size modifier for the component.\n * @property {boolean} [disabled] - Whether the rating is disabled.\n * @property {boolean} [showScore] - Display the numeric score next to icons.\n * @property {boolean} [showText] - Display text label for the current value.\n * @property {string[]} [texts] - Text labels per rating level (used with showText).\n * @property {(value: number) => void} [onChange] - Callback when the rating changes.\n * @property {(props: RateIconProps) => React.ReactNode} [customIcon] - Custom icon render function.\n * @property {boolean} [spaced] - Add spacing between icons.\n * @property {boolean} [rtl] - Render icons in right-to-left order.\n * @property {string} [iconName] - Font icon name (e.g., 'star'). When set, renders Icon instead of default SVG.\n * @property {IconLibrary} [iconLibrary] - Icon library to use (defaults to ConfigProvider value or 'fa').\n * @property {string} [iconVariant] - Icon style variant (e.g., 'solid', 'outlined').\n * @property {string|string[]} [iconFeatures] - Additional icon modifiers.\n * @property {BulmaColor} [color] - Bulma color for active icons.\n * @property {number} [precision] - Granularity: 1 for whole stars, 0.5 for half, 0.25 for quarter. Default: 1.\n * @property {string} [customText] - Text displayed after score (e.g., \"(128 reviews)\").\n * @property {string} [name] - Form field name. When provided, a hidden input is rendered so the rating value is submitted with the surrounding form.\n * @property {string} [form] - The id of the form this hidden input belongs to (for use outside the form element).\n */\nexport interface RateProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'color'>,\n Omit<BulmaClassesProps, 'size'>,\n FormFieldProps {\n name?: string;\n form?: string;\n value?: number;\n defaultValue?: number;\n max?: number;\n size?: RateSize;\n disabled?: boolean;\n showScore?: boolean;\n showText?: boolean;\n texts?: string[];\n onChange?: (value: number) => void;\n customIcon?: (props: RateIconProps) => React.ReactNode;\n spaced?: boolean;\n rtl?: boolean;\n /** Font icon name (e.g., 'star'). When set, renders <Icon> instead of default SVG. */\n iconName?: string;\n /** Icon library to use (defaults to ConfigProvider value or 'fa'). */\n iconLibrary?: IconLibrary;\n /** Icon style variant (e.g., 'solid', 'outlined'). */\n iconVariant?: string;\n /** Additional icon modifiers. */\n iconFeatures?: string | string[];\n /** Bulma color for active icons. */\n color?: BulmaColor;\n /** Granularity: 1 for whole stars, 0.5 for half, 0.25 for quarter. */\n precision?: number;\n /** Text displayed after score (e.g., \"(128 reviews)\"). */\n customText?: string;\n}\n\n/**\n * Default star icon component.\n */\nconst StarIcon: React.FC<{ filled: boolean }> = ({ filled }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill={filled ? 'currentColor' : 'none'}\n stroke=\"currentColor\"\n strokeWidth={filled ? 0 : 2}\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\"\n />\n </svg>\n);\n\n/** Snap a value to the nearest precision step. */\nfunction snapToPrecision(val: number, precision: number): number {\n return Math.round(val / precision) * precision;\n}\n\n/** Get fill percentage for a given icon index based on current value. */\nfunction getFillPercent(iconIndex: number, value: number): number {\n if (value >= iconIndex + 1) return 100;\n if (value <= iconIndex) return 0;\n return Math.round((value - iconIndex) * 100);\n}\n\n/**\n * Rate component for star/icon-based ratings.\n *\n * Provides an interactive rating system with customizable icons,\n * sizes, and display options. Works in controlled or uncontrolled modes.\n * Supports icon libraries, Bulma color variants, and fractional precision.\n *\n * @function\n * @param {RateProps} props - Props for the Rate component.\n * @param {React.Ref<HTMLDivElement>} ref - Forwarded ref to the container element.\n * @returns {JSX.Element} The rendered rating component.\n *\n * @example\n * // Basic 5-star rating\n * <Rate defaultValue={3} />\n *\n * @example\n * // With color and precision\n * <Rate defaultValue={3.5} color=\"warning\" precision={0.5} showScore />\n *\n * @example\n * // With Font Awesome icons\n * <Rate iconName=\"star\" iconLibrary=\"fa\" iconVariant=\"solid\" />\n */\nexport const Rate = forwardRef<HTMLDivElement, RateProps>(\n (\n {\n label,\n labelSize,\n labelProps,\n horizontal,\n message,\n messageColor,\n fieldClassName,\n value: controlledValue,\n defaultValue = 0,\n max = 5,\n size,\n disabled = false,\n showScore = false,\n showText = false,\n texts,\n onChange,\n customIcon,\n spaced = false,\n rtl = false,\n iconName,\n iconLibrary: iconLibraryProp,\n iconVariant,\n iconFeatures,\n color,\n precision = 1,\n customText,\n name,\n form,\n className,\n ...props\n },\n ref\n ) => {\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [hoverValue, setHoverValue] = useState<number | null>(null);\n\n const defaultIconLibrary = useIconLibrary();\n const resolvedLibrary = iconLibraryProp || defaultIconLibrary || 'fa';\n\n // Determine if controlled\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n const displayValue = hoverValue !== null ? hoverValue : currentValue;\n\n // Update value\n const updateValue = useCallback(\n (newValue: number) => {\n if (disabled) return;\n\n // Allow clicking same value to deselect (set to 0)\n const finalValue = newValue === currentValue ? 0 : newValue;\n\n if (!isControlled) {\n setInternalValue(finalValue);\n }\n onChange?.(finalValue);\n },\n [isControlled, currentValue, disabled, onChange]\n );\n\n // Handle click with precision support\n const handleClick = useCallback(\n (iconIndex: number, e: React.MouseEvent<HTMLSpanElement>) => {\n if (disabled) return;\n\n if (precision < 1) {\n const rect = e.currentTarget.getBoundingClientRect();\n let relativeX = (e.clientX - rect.left) / rect.width;\n if (rtl) relativeX = 1 - relativeX;\n const rawValue = iconIndex + relativeX;\n const snapped = snapToPrecision(rawValue, precision);\n const clamped = Math.max(precision, Math.min(snapped, max));\n updateValue(clamped);\n } else {\n updateValue(iconIndex + 1);\n }\n },\n [disabled, precision, rtl, max, updateValue]\n );\n\n // Handle mouse enter on icon\n const handleMouseEnter = useCallback(\n (iconIndex: number) => {\n if (disabled) return;\n setHoverValue(iconIndex + 1);\n },\n [disabled]\n );\n\n // Handle mouse move with precision support\n const handleMouseMove = useCallback(\n (iconIndex: number, e: React.MouseEvent<HTMLSpanElement>) => {\n if (disabled || precision >= 1) return;\n const rect = e.currentTarget.getBoundingClientRect();\n let relativeX = (e.clientX - rect.left) / rect.width;\n if (rtl) relativeX = 1 - relativeX;\n const rawValue = iconIndex + relativeX;\n const snapped = snapToPrecision(rawValue, precision);\n const clamped = Math.max(precision, Math.min(snapped, max));\n setHoverValue(clamped);\n },\n [disabled, precision, rtl, max]\n );\n\n // Handle mouse leave\n const handleMouseLeave = useCallback(() => {\n setHoverValue(null);\n }, []);\n\n // Handle keyboard\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n let newValue = currentValue;\n const step = precision < 1 ? precision : 1;\n\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\n e.preventDefault();\n newValue = Math.min(currentValue + step, max);\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\n e.preventDefault();\n newValue = Math.max(currentValue - step, 0);\n } else if (e.key === 'Home') {\n e.preventDefault();\n newValue = 0;\n } else if (e.key === 'End') {\n e.preventDefault();\n newValue = max;\n }\n\n // Round to avoid floating point issues\n newValue = Math.round(newValue * 1000) / 1000;\n\n if (newValue !== currentValue) {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n }\n },\n [currentValue, max, precision, disabled, isControlled, onChange]\n );\n\n // Get text for current value\n const getText = () => {\n if (!showText || !texts) return null;\n const wholeIndex = Math.ceil(displayValue) - 1;\n const baseText = texts[wholeIndex] || null;\n if (!baseText) return null;\n // For fractional hover values with precision < 1, append \"+\"\n if (precision < 1 && hoverValue !== null && hoverValue % 1 !== 0) {\n return `${baseText}+`;\n }\n return baseText;\n };\n\n // Format score display\n const getScoreDisplay = () => {\n if (precision < 1 && currentValue % 1 !== 0) {\n return currentValue.toFixed(1);\n }\n return currentValue;\n };\n\n // Generate classes\n const rateClasses = usePrefixedClassNames('rate', {\n [`is-${size}`]: size,\n 'is-disabled': disabled,\n 'is-spaced': spaced,\n 'is-rtl': rtl,\n [`is-${color}`]: color,\n });\n\n const combinedClasses = classNames(\n rateClasses,\n bulmaHelperClasses,\n className\n );\n\n // Render a single icon based on priority: customIcon > iconName > default SVG\n const renderIcon = (\n iconIndex: number,\n isActive: boolean,\n fillPercent: number\n ) => {\n const iconProps: RateIconProps = {\n index: iconIndex,\n isActive,\n isHovered: hoverValue !== null && iconIndex < hoverValue,\n value: displayValue,\n fillPercent,\n };\n\n if (customIcon) {\n return customIcon(iconProps);\n }\n\n if (iconName) {\n return (\n <Icon\n name={iconName}\n library={resolvedLibrary}\n variant={iconVariant}\n features={iconFeatures}\n />\n );\n }\n\n return <StarIcon filled={isActive} />;\n };\n\n // Render partial icon with layered approach\n const renderPartialIcon = (iconIndex: number, fillPercent: number) => {\n if (customIcon) {\n // For custom icons, pass fillPercent and let consumer handle it\n const iconProps: RateIconProps = {\n index: iconIndex,\n isActive: fillPercent > 0,\n isHovered: hoverValue !== null && iconIndex < (hoverValue ?? 0),\n value: displayValue,\n fillPercent,\n };\n return customIcon(iconProps);\n }\n\n if (iconName) {\n return (\n <span\n className=\"rate-icon-partial\"\n style={\n {\n '--rate-fill-percent': `${fillPercent}%`,\n } as React.CSSProperties\n }\n >\n <span className=\"rate-icon-bg\">\n <Icon\n name={iconName}\n library={resolvedLibrary}\n variant={iconVariant}\n features={iconFeatures}\n />\n </span>\n <span className=\"rate-icon-fg\">\n <Icon\n name={iconName}\n library={resolvedLibrary}\n variant={iconVariant}\n features={iconFeatures}\n />\n </span>\n </span>\n );\n }\n\n // Default SVG with clipPath for partial fill\n const clipId = `rate-clip-${iconIndex}`;\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <defs>\n <clipPath id={clipId}>\n <rect\n x=\"0\"\n y=\"0\"\n width={`${(fillPercent / 100) * 24}`}\n height=\"24\"\n />\n </clipPath>\n </defs>\n {/* Background: empty star */}\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\"\n />\n {/* Foreground: filled portion */}\n <path\n clipPath={`url(#${clipId})`}\n fill=\"currentColor\"\n d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\"\n />\n </svg>\n );\n };\n\n // Render icons\n const renderIcons = () => {\n const icons = [];\n\n for (let i = 0; i < max; i++) {\n const iconIndex = rtl ? max - 1 - i : i;\n const fillPercent = getFillPercent(iconIndex, displayValue);\n const isActive = fillPercent === 100;\n const isHovered = hoverValue !== null && iconIndex < hoverValue;\n const isPartial = fillPercent > 0 && fillPercent < 100;\n\n const icon = isPartial\n ? renderPartialIcon(iconIndex, fillPercent)\n : renderIcon(iconIndex, isActive, fillPercent);\n\n icons.push(\n <span\n key={iconIndex}\n className={classNames('rate-item', {\n 'is-active': isActive,\n 'is-hovered': isHovered,\n })}\n onClick={e => handleClick(iconIndex, e)}\n onMouseEnter={() => handleMouseEnter(iconIndex)}\n onMouseMove={e => handleMouseMove(iconIndex, e)}\n onMouseLeave={handleMouseLeave}\n role=\"radio\"\n aria-checked={\n currentValue === iconIndex + 1 ||\n (precision < 1 &&\n currentValue > iconIndex &&\n currentValue <= iconIndex + 1)\n }\n aria-label={`${iconIndex + 1} star${iconIndex === 0 ? '' : 's'}`}\n tabIndex={-1}\n >\n {icon}\n </span>\n );\n }\n\n return icons;\n };\n\n const text = getText();\n const ariaValueText =\n precision < 1 && currentValue % 1 !== 0\n ? `${currentValue.toFixed(1)} out of ${max} stars`\n : undefined;\n\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n const rateElement = (\n <div\n ref={ref}\n className={combinedClasses}\n role=\"radiogroup\"\n aria-label=\"Rating\"\n aria-valuenow={currentValue}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuetext={ariaValueText}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n <div className=\"rate-items\">{renderIcons()}</div>\n {showScore && <span className=\"rate-score\">{getScoreDisplay()}</span>}\n {text && <span className=\"rate-text\">{text}</span>}\n {customText && <span className=\"rate-custom-text\">{customText}</span>}\n {name && (\n <input type=\"hidden\" name={name} value={currentValue} form={form} />\n )}\n </div>\n );\n\n let content = rateElement;\n\n if (!insideControl) {\n content = <Control>{content}</Control>;\n }\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n }\n);\n\nRate.displayName = 'Rate';\n\nexport default Rate;\n","import React, {\n forwardRef,\n useState,\n useRef,\n useEffect,\n useCallback,\n} from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport { useConfig } from '../helpers/Config';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { useInsideField } from './FormContext';\nimport { Field } from './Field';\nimport { FormFieldProps } from './fieldProps';\n\n/**\n * An item in the Autocomplete dropdown list.\n *\n * @property {string} value - The value used for filtering and selection.\n * @property {string} [label] - Display label (falls back to value if omitted).\n * @property {boolean} [disabled] - Whether the item is disabled and unselectable.\n */\nexport interface AutocompleteItem {\n value: string;\n label?: string;\n disabled?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * Props for the Autocomplete component.\n *\n * @property {AutocompleteItem[] | string[]} data - The options data to display.\n * @property {string} [value] - The current input value (controlled).\n * @property {AutocompleteItem | string | null} [selected] - The selected item (controlled).\n * @property {string} [placeholder] - Placeholder text for the input.\n * @property {string} [field] - Object property to use as the display field.\n * @property {boolean} [clearable] - Whether to show a clear button.\n * @property {boolean} [openOnFocus] - Open dropdown when input is focused.\n * @property {boolean} [keepFirst] - Keep first option highlighted.\n * @property {boolean} [keepOpen] - Keep dropdown open after selection.\n * @property {boolean} [selectOnClickOutside] - Select highlighted item on click outside.\n * @property {number} [maxHeight] - Maximum dropdown height in pixels.\n * @property {boolean} [dropdown] - Render as dropdown style.\n * @property {boolean} [loading] - Show loading state.\n * @property {boolean} [disabled] - Whether the input is disabled.\n * @property {boolean} [checkInfiniteScroll] - Enable infinite scroll detection.\n * @property {number} [infiniteScrollDistance] - Distance threshold for infinite scroll.\n * @property {(value: string) => void} [onInput] - Callback when input value changes.\n * @property {(item: AutocompleteItem | string | null) => void} [onSelect] - Callback when item is selected.\n * @property {(active: boolean) => void} [onActiveChange] - Callback when dropdown active state changes.\n * @property {() => void} [onInfiniteScroll] - Callback when scrolled to bottom (infinite scroll).\n * @property {(item: AutocompleteItem | string) => React.ReactNode} [itemTemplate] - Custom render for items.\n * @property {React.ReactNode} [header] - Custom header in dropdown.\n * @property {React.ReactNode} [footer] - Custom footer in dropdown.\n * @property {React.ReactNode} [empty] - Content to show when no results.\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the input.\n * @property {'small' | 'medium' | 'large'} [size] - Size modifier for the input.\n * @property {string} [name] - Form field name; forwarded to the inner input so the typed/selected value submits with the surrounding form.\n * @property {string} [form] - The id of the form the input belongs to.\n * @property {boolean} [required] - Whether the input is required.\n */\nexport interface AutocompleteProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect' | 'onInput'>,\n Omit<BulmaClassesProps, 'color'>,\n FormFieldProps {\n data: AutocompleteItem[] | string[];\n value?: string;\n selected?: AutocompleteItem | string | null;\n placeholder?: string;\n field?: string;\n clearable?: boolean;\n openOnFocus?: boolean;\n keepFirst?: boolean;\n keepOpen?: boolean;\n selectOnClickOutside?: boolean;\n maxHeight?: number;\n dropdown?: boolean;\n loading?: boolean;\n disabled?: boolean;\n checkInfiniteScroll?: boolean;\n infiniteScrollDistance?: number;\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n size?: 'small' | 'medium' | 'large';\n name?: string;\n form?: string;\n required?: boolean;\n onInput?: (value: string) => void;\n onSelect?: (item: AutocompleteItem | string | null) => void;\n onActiveChange?: (active: boolean) => void;\n onInfiniteScroll?: () => void;\n itemTemplate?: (item: AutocompleteItem | string) => React.ReactNode;\n header?: React.ReactNode;\n footer?: React.ReactNode;\n empty?: React.ReactNode;\n}\n\n/**\n * Autocomplete component with dropdown suggestions.\n *\n * Provides an input field with a dropdown of suggestions that filter\n * based on user input.\n *\n * @function\n * @param {AutocompleteProps} props - Props for the Autocomplete component.\n * @param {React.Ref<HTMLInputElement>} ref - Forwarded ref to the input element.\n * @returns {JSX.Element} The rendered autocomplete component.\n *\n * @example\n * // Basic usage with string array\n * <Autocomplete\n * data={['Apple', 'Banana', 'Cherry']}\n * placeholder=\"Search fruit...\"\n * onSelect={(item) => console.log(item)}\n * />\n *\n * @example\n * // With object data\n * <Autocomplete\n * data={[{ value: '1', label: 'Option 1' }, { value: '2', label: 'Option 2' }]}\n * field=\"label\"\n * onSelect={(item) => console.log(item)}\n * />\n */\nexport const Autocomplete = forwardRef<HTMLInputElement, AutocompleteProps>(\n (\n {\n data = [],\n value: controlledValue,\n placeholder,\n field = 'label',\n clearable = false,\n openOnFocus = false,\n keepFirst = false,\n keepOpen = false,\n selectOnClickOutside = false,\n maxHeight = 200,\n loading = false,\n disabled = false,\n checkInfiniteScroll = false,\n infiniteScrollDistance = 50,\n color,\n size,\n onInput,\n onSelect,\n onActiveChange,\n onInfiniteScroll,\n itemTemplate,\n header,\n footer,\n empty,\n name,\n form,\n required,\n // Field props\n label,\n labelSize,\n labelProps,\n horizontal,\n message,\n messageColor,\n fieldClassName,\n className,\n ...props\n },\n ref\n ) => {\n const insideField = useInsideField();\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const { classPrefix } = useConfig();\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const [internalValue, setInternalValue] = useState('');\n const [isActive, setIsActive] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n // Use controlled or internal value\n const inputValue =\n controlledValue !== undefined ? controlledValue : internalValue;\n\n // Get display value from item\n const getDisplayValue = (item: AutocompleteItem | string): string => {\n if (typeof item === 'string') return item;\n const fieldValue = item[field];\n if (typeof fieldValue === 'string') return fieldValue;\n return item.value || '';\n };\n\n // Filter data based on input\n const filteredData = data.filter(item => {\n const displayValue = getDisplayValue(item);\n return displayValue.toLowerCase().includes(inputValue.toLowerCase());\n });\n\n // Handle input change\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n onInput?.(newValue);\n if (!isActive && newValue) {\n setIsActive(true);\n }\n },\n [controlledValue, isActive, onInput]\n );\n\n // Handle item selection\n const handleSelect = useCallback(\n (item: AutocompleteItem | string) => {\n if (typeof item !== 'string' && item.disabled) return;\n\n const displayValue = getDisplayValue(item);\n if (controlledValue === undefined) {\n setInternalValue(displayValue);\n }\n onInput?.(displayValue);\n onSelect?.(item);\n\n if (!keepOpen) {\n setIsActive(false);\n }\n setHighlightedIndex(-1);\n },\n [controlledValue, field, keepOpen, onInput, onSelect]\n );\n\n // Handle clear\n const handleClear = useCallback(() => {\n if (controlledValue === undefined) {\n setInternalValue('');\n }\n onInput?.('');\n onSelect?.(null);\n inputRef.current?.focus();\n }, [controlledValue, onInput, onSelect]);\n\n // Handle focus\n const handleFocus = useCallback(() => {\n if (openOnFocus && !disabled) {\n setIsActive(true);\n }\n }, [openOnFocus, disabled]);\n\n // Handle blur (click outside)\n useEffect(() => {\n if (!isActive) return undefined;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (!containerRef.current) return;\n\n // Use composedPath() to correctly detect clicks inside Shadow DOM\n const path = e.composedPath();\n const isInside = path.includes(containerRef.current);\n\n if (!isInside) {\n if (selectOnClickOutside && highlightedIndex >= 0) {\n handleSelect(filteredData[highlightedIndex]);\n }\n setIsActive(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () =>\n document.removeEventListener('mousedown', handleClickOutside);\n }, [\n isActive,\n selectOnClickOutside,\n highlightedIndex,\n filteredData,\n handleSelect,\n ]);\n\n // Notify active state change\n useEffect(() => {\n onActiveChange?.(isActive);\n }, [isActive, onActiveChange]);\n\n // Keep first highlighted\n useEffect(() => {\n if (keepFirst && isActive && filteredData.length > 0) {\n setHighlightedIndex(0);\n }\n }, [keepFirst, isActive, filteredData.length, inputValue]);\n\n // Handle keyboard navigation\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!isActive) {\n setIsActive(true);\n } else {\n setHighlightedIndex(prev =>\n prev < filteredData.length - 1 ? prev + 1 : prev\n );\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n setHighlightedIndex(prev => (prev > 0 ? prev - 1 : prev));\n break;\n case 'Enter':\n e.preventDefault();\n if (highlightedIndex >= 0 && filteredData[highlightedIndex]) {\n handleSelect(filteredData[highlightedIndex]);\n }\n break;\n case 'Escape':\n e.preventDefault();\n setIsActive(false);\n setHighlightedIndex(-1);\n break;\n case 'Tab':\n if (highlightedIndex >= 0 && filteredData[highlightedIndex]) {\n handleSelect(filteredData[highlightedIndex]);\n }\n setIsActive(false);\n break;\n }\n },\n [disabled, isActive, highlightedIndex, filteredData, handleSelect]\n );\n\n // Handle dropdown scroll for infinite scroll\n const handleDropdownScroll = useCallback(() => {\n if (!checkInfiniteScroll || !dropdownRef.current) return;\n\n const { scrollTop, scrollHeight, clientHeight } = dropdownRef.current;\n if (scrollHeight - scrollTop - clientHeight <= infiniteScrollDistance) {\n onInfiniteScroll?.();\n }\n }, [checkInfiniteScroll, infiniteScrollDistance, onInfiniteScroll]);\n\n // Scroll highlighted item into view\n useEffect(() => {\n if (highlightedIndex >= 0 && dropdownRef.current) {\n const highlightedEl = dropdownRef.current.querySelector(\n `[data-index=\"${highlightedIndex}\"]`\n );\n if (\n highlightedEl &&\n typeof highlightedEl.scrollIntoView === 'function'\n ) {\n highlightedEl.scrollIntoView({ block: 'nearest' });\n }\n }\n }, [highlightedIndex]);\n\n // Combined ref\n const combinedRef = useCallback(\n (node: HTMLInputElement | null) => {\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n }\n },\n [ref]\n );\n\n // Generate classes\n const autocompleteClasses = usePrefixedClassNames('autocomplete', {\n 'is-active': isActive,\n [`is-${size}`]: !!size,\n });\n\n const inputClasses = usePrefixedClassNames('input', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-loading': loading,\n });\n\n const controlClasses = usePrefixedClassNames(\n 'control',\n 'is-expanded',\n 'has-icons-right'\n );\n\n const dropdownMenuClasses = usePrefixedClassNames('dropdown-menu', {\n 'is-active': isActive && (filteredData.length > 0 || !!empty),\n });\n\n const dropdownContentClass = usePrefixedClassNames('dropdown-content');\n const dropdownHeaderClass = usePrefixedClassNames('dropdown-header');\n const dropdownFooterClass = usePrefixedClassNames('dropdown-footer');\n const emptyItemClasses = usePrefixedClassNames(\n 'dropdown-item',\n 'has-text-grey'\n );\n\n const iconRightClickableClass = usePrefixedClassNames(\n 'icon',\n 'is-right',\n 'is-clickable'\n );\n const iconRightClass = usePrefixedClassNames('icon', 'is-right');\n const loaderClass = usePrefixedClassNames('loader', 'is-loading');\n\n const combinedClasses = classNames(\n autocompleteClasses,\n bulmaHelperClasses,\n className\n );\n\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n const autocompleteElement = (\n <div ref={containerRef} className={combinedClasses} {...rest}>\n <div className={controlClasses}>\n <input\n ref={combinedRef}\n type=\"text\"\n className={inputClasses}\n value={inputValue}\n placeholder={placeholder}\n disabled={disabled}\n name={name}\n form={form}\n required={required}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n role=\"combobox\"\n aria-expanded={isActive}\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autoComplete=\"off\"\n />\n {clearable && inputValue && !disabled && (\n <span\n className={iconRightClickableClass}\n onClick={handleClear}\n role=\"button\"\n aria-label=\"Clear\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n width=\"16\"\n height=\"16\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </span>\n )}\n {loading && (\n <span className={iconRightClass}>\n <span className={loaderClass} />\n </span>\n )}\n </div>\n\n {isActive && (filteredData.length > 0 || empty) && (\n <div className={dropdownMenuClasses}>\n <div\n ref={dropdownRef}\n className={dropdownContentClass}\n style={{ maxHeight: `${maxHeight}px`, overflowY: 'auto' }}\n role=\"listbox\"\n onScroll={handleDropdownScroll}\n >\n {header && <div className={dropdownHeaderClass}>{header}</div>}\n\n {filteredData.length > 0 ? (\n filteredData.map((item, index) => {\n const isDisabled = typeof item !== 'string' && item.disabled;\n const isHighlighted = index === highlightedIndex;\n\n const itemClasses = prefixedClassNames(\n classPrefix,\n 'dropdown-item',\n {\n 'is-active': isHighlighted,\n 'is-disabled': isDisabled,\n }\n );\n\n return (\n <a\n key={index}\n data-index={index}\n className={itemClasses}\n onClick={() => !isDisabled && handleSelect(item)}\n onMouseEnter={() =>\n !isDisabled && setHighlightedIndex(index)\n }\n role=\"option\"\n aria-selected={isHighlighted}\n aria-disabled={isDisabled}\n >\n {itemTemplate\n ? itemTemplate(item)\n : getDisplayValue(item)}\n </a>\n );\n })\n ) : (\n <div className={emptyItemClasses}>{empty}</div>\n )}\n\n {footer && <div className={dropdownFooterClass}>{footer}</div>}\n </div>\n </div>\n )}\n </div>\n );\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {autocompleteElement}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {autocompleteElement}\n {messageEl}\n </>\n );\n }\n);\n\nAutocomplete.displayName = 'Autocomplete';\n\nexport default Autocomplete;\n","import React, {\n forwardRef,\n useState,\n useRef,\n useEffect,\n useCallback,\n} from 'react';\nimport {\n classNames,\n usePrefixedClassNames,\n prefixedClassNames,\n} from '../helpers/classNames';\nimport { useConfig, useIconLibrary } from '../helpers/Config';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport { useInsideField } from './FormContext';\nimport { Field } from './Field';\nimport { FormFieldProps } from './fieldProps';\nimport { Icon } from '../elements/Icon';\n\n/**\n * Represents a tag item object with a value and optional label.\n *\n * @property {string} value - The tag value.\n * @property {string} [label] - Display label for the tag.\n */\nexport interface TaginputItem {\n value: string;\n label?: string;\n [key: string]: unknown;\n}\n\n/** A tag can be either a TaginputItem object or a plain string. */\nexport type TaginputTag = TaginputItem | string;\n\ntype IconLibrary = 'fa' | 'mdi' | 'ion' | 'material-icons' | 'material-symbols';\n\n/**\n * Props for the Taginput component.\n *\n * @property {TaginputTag[]} [value] - The current tags (controlled).\n * @property {TaginputTag[]} [defaultValue] - Default tags (uncontrolled).\n * @property {string[]} [data] - Autocomplete suggestions.\n * @property {string} [placeholder] - Placeholder text when no tags.\n * @property {string} [field] - Object property to use as display field.\n * @property {boolean} [allowNew] - Allow creating new tags not in suggestions.\n * @property {boolean} [allowDuplicates] - Allow duplicate tags.\n * @property {boolean} [openOnFocus] - Open autocomplete dropdown on focus.\n * @property {boolean} [removeOnKeys] - Remove tag on backspace. Default: true.\n * @property {string[]} [confirmKeys] - Keys to confirm tag creation. Default: ['Enter', ','].\n * @property {boolean} [closable] - Show close button on tags. Default: true.\n * @property {boolean} [attached] - Attach tags visually.\n * @property {number} [maxTags] - Maximum number of tags allowed.\n * @property {number} [maxlength] - Maximum length of input.\n * @property {boolean} [disabled] - Whether the input is disabled.\n * @property {boolean} [readonly] - Whether the input is read-only.\n * @property {boolean} [rounded] - Makes tags rounded.\n * @property {boolean} [ellipsis] - Truncate long tag text with ellipsis and show title tooltip.\n * @property {boolean} [hasCounter] - Show counter for maxTags/maxlength. Default: true.\n * @property {string[]} [onPasteSeparators] - Characters to split on paste. Default: [','].\n * @property {(tag: string) => boolean} [beforeAdding] - Validate before adding a tag.\n * @property {(input: string) => TaginputTag} [createTag] - Transform input string to tag.\n * @property {boolean} [keepFirst] - Auto-highlight first autocomplete result.\n * @property {boolean} [keepOpen] - Keep dropdown open after selecting. Default: true.\n * @property {boolean} [loading] - Show loading spinner in input.\n * @property {string} [ariaCloseLabel] - Accessibility label for close buttons.\n * @property {(tags: TaginputTag[]) => void} [onChange] - Callback when tags change.\n * @property {(tag: TaginputTag) => void} [onAdd] - Callback when tag is added.\n * @property {(tag: TaginputTag, index: number) => void} [onRemove] - Callback when tag is removed.\n * @property {(value: string) => void} [onTyping] - Callback when typing in input.\n * @property {(tag: TaginputTag) => React.ReactNode} [tagTemplate] - Custom render for tags.\n * @property {string} [name] - Form field name. When provided, one hidden input per tag is rendered so tags submit as a standard form-encoded array (e.g., `tags=react&tags=vue`).\n * @property {string} [form] - The id of the form the hidden inputs belong to.\n * @property {string} [icon] - Icon name for the input field.\n * @property {IconLibrary} [iconLibrary] - Icon library to use.\n * @property {string} [iconVariant] - Icon style variant (e.g., 'solid', 'outlined').\n * @property {string | string[]} [iconFeatures] - Additional icon modifiers.\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'} [color] - Bulma color modifier for the input.\n * @property {'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger' | 'dark' | 'light'} [tagColor] - Color modifier for tags.\n * @property {'small' | 'medium' | 'large'} [size] - Size modifier for the component.\n */\nexport interface TaginputProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'>,\n Omit<BulmaClassesProps, 'color'>,\n FormFieldProps {\n value?: TaginputTag[];\n defaultValue?: TaginputTag[];\n data?: string[];\n placeholder?: string;\n field?: string;\n allowNew?: boolean;\n allowDuplicates?: boolean;\n openOnFocus?: boolean;\n removeOnKeys?: boolean;\n confirmKeys?: string[];\n closable?: boolean;\n attached?: boolean;\n maxTags?: number;\n maxlength?: number;\n disabled?: boolean;\n readonly?: boolean;\n rounded?: boolean;\n ellipsis?: boolean;\n hasCounter?: boolean;\n onPasteSeparators?: string[];\n beforeAdding?: (tag: string) => boolean;\n createTag?: (input: string) => TaginputTag;\n keepFirst?: boolean;\n keepOpen?: boolean;\n loading?: boolean;\n ariaCloseLabel?: string;\n icon?: string;\n iconLibrary?: IconLibrary;\n iconVariant?: string;\n iconFeatures?: string | string[];\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n tagColor?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'dark'\n | 'light';\n size?: 'small' | 'medium' | 'large';\n name?: string;\n form?: string;\n onChange?: (tags: TaginputTag[]) => void;\n onAdd?: (tag: TaginputTag) => void;\n onRemove?: (tag: TaginputTag, index: number) => void;\n onTyping?: (value: string) => void;\n tagTemplate?: (tag: TaginputTag) => React.ReactNode;\n}\n\n/**\n * Taginput component for managing multiple tags.\n *\n * Allows users to create, edit, and remove tags with optional\n * autocomplete suggestions.\n *\n * @function\n * @param {TaginputProps} props - Props for the Taginput component.\n * @param {React.Ref<HTMLInputElement>} ref - Forwarded ref to the input element.\n * @returns {JSX.Element} The rendered taginput component.\n *\n * @example\n * // Basic usage\n * <Taginput\n * placeholder=\"Add a tag...\"\n * onChange={(tags) => console.log(tags)}\n * />\n *\n * @example\n * // With autocomplete\n * <Taginput\n * data={['React', 'Vue', 'Angular', 'Svelte']}\n * allowNew={false}\n * placeholder=\"Select frameworks...\"\n * />\n */\nexport const Taginput = forwardRef<HTMLInputElement, TaginputProps>(\n (\n {\n // Field props\n label,\n labelSize,\n labelProps,\n horizontal,\n message,\n messageColor,\n fieldClassName,\n value: controlledValue,\n defaultValue = [],\n data = [],\n placeholder,\n field = 'label',\n allowNew = true,\n allowDuplicates = false,\n openOnFocus = false,\n removeOnKeys = true,\n confirmKeys = ['Enter', ','],\n closable = true,\n attached = false,\n maxTags,\n maxlength,\n disabled = false,\n readonly = false,\n rounded = false,\n ellipsis = false,\n hasCounter = true,\n onPasteSeparators = [','],\n beforeAdding,\n createTag,\n keepFirst = false,\n keepOpen = true,\n loading = false,\n ariaCloseLabel,\n icon,\n iconLibrary: iconLibraryProp,\n iconVariant,\n iconFeatures,\n color,\n tagColor,\n size,\n onChange,\n onAdd,\n onRemove,\n onTyping,\n tagTemplate,\n name,\n form,\n className,\n ...props\n },\n ref\n ) => {\n const insideField = useInsideField();\n const { bulmaHelperClasses, rest } = useBulmaClasses(props);\n const { classPrefix } = useConfig();\n const defaultIconLibrary = useIconLibrary();\n const resolvedLibrary = iconLibraryProp || defaultIconLibrary || 'fa';\n const pcn = (\n ...args: (\n | string\n | number\n | undefined\n | null\n | false\n | Record<string, unknown>\n | unknown[]\n )[]\n ) => prefixedClassNames(classPrefix, ...args);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const [internalTags, setInternalTags] =\n useState<TaginputTag[]>(defaultValue);\n const [inputValue, setInputValue] = useState('');\n const [isActive, setIsActive] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n // Use controlled or internal tags\n const tags = controlledValue !== undefined ? controlledValue : internalTags;\n\n // Get display value from tag\n const getDisplayValue = (tag: TaginputTag): string => {\n if (typeof tag === 'string') return tag;\n const fieldValue = tag[field];\n if (typeof fieldValue === 'string') return fieldValue;\n return tag.value || '';\n };\n\n // Filter autocomplete data\n const filteredData = data.filter(item => {\n const displayValue = item.toLowerCase();\n const matchesInput = displayValue.includes(inputValue.toLowerCase());\n const notAlreadyAdded =\n allowDuplicates ||\n !tags.some(tag => getDisplayValue(tag).toLowerCase() === displayValue);\n const hasInput = inputValue || (openOnFocus && isActive);\n return matchesInput && notAlreadyAdded && hasInput;\n });\n\n // keepFirst: auto-highlight first item when dropdown opens\n useEffect(() => {\n if (keepFirst && isActive && filteredData.length > 0) {\n setHighlightedIndex(0);\n }\n }, [keepFirst, isActive, filteredData.length]);\n\n // Update tags\n const updateTags = useCallback(\n (newTags: TaginputTag[]) => {\n if (controlledValue === undefined) {\n setInternalTags(newTags);\n }\n onChange?.(newTags);\n },\n [controlledValue, onChange]\n );\n\n // Add tag\n const addTag = useCallback(\n (value: string | TaginputTag) => {\n if (disabled || readonly) return;\n\n const tagValue = typeof value === 'string' ? value.trim() : value;\n const displayValue =\n typeof tagValue === 'string' ? tagValue : getDisplayValue(tagValue);\n\n if (!displayValue) return;\n\n // Check max tags\n if (maxTags && tags.length >= maxTags) return;\n\n // Check duplicates\n if (!allowDuplicates) {\n const exists = tags.some(\n tag =>\n getDisplayValue(tag).toLowerCase() === displayValue.toLowerCase()\n );\n if (exists) return;\n }\n\n // Check if allowed (must be in data if allowNew is false). Compare\n // case-insensitively, consistent with the dropdown filter and the\n // duplicate check above.\n if (\n !allowNew &&\n !data.some(d => d.toLowerCase() === displayValue.toLowerCase())\n )\n return;\n\n // beforeAdding validation\n if (beforeAdding && !beforeAdding(displayValue)) return;\n\n // createTag transformation\n const finalTag = createTag ? createTag(displayValue) : tagValue;\n\n const newTags = [...tags, finalTag];\n updateTags(newTags);\n onAdd?.(finalTag);\n setInputValue('');\n if (!keepOpen) {\n setIsActive(false);\n }\n setHighlightedIndex(-1);\n },\n [\n disabled,\n readonly,\n tags,\n maxTags,\n allowDuplicates,\n allowNew,\n data,\n field,\n updateTags,\n onAdd,\n beforeAdding,\n createTag,\n keepOpen,\n ]\n );\n\n // Remove tag\n const removeTag = useCallback(\n (index: number) => {\n /* istanbul ignore next: both triggers (delete button click, Backspace handler) are already gated on disabled/readonly */\n if (disabled || readonly) return;\n\n const removedTag = tags[index];\n const newTags = tags.filter((_, i) => i !== index);\n updateTags(newTags);\n onRemove?.(removedTag, index);\n },\n [disabled, readonly, tags, updateTags, onRemove]\n );\n\n // Handle input change\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n\n // Check if a confirm key was typed\n const lastChar = newValue.slice(-1);\n if (confirmKeys.includes(lastChar) && lastChar !== 'Enter') {\n const valueWithoutKey = newValue.slice(0, -1).trim();\n if (valueWithoutKey) {\n addTag(valueWithoutKey);\n }\n return;\n }\n\n setInputValue(newValue);\n onTyping?.(newValue);\n\n if (newValue && data.length > 0) {\n setIsActive(true);\n }\n },\n [confirmKeys, addTag, onTyping, data.length]\n );\n\n // Handle paste\n const handlePaste = useCallback(\n (e: React.ClipboardEvent<HTMLInputElement>) => {\n if (onPasteSeparators.length === 0) return;\n\n const pastedText = e.clipboardData.getData('text');\n // Check if any separator exists in the pasted text\n const hasSeparator = onPasteSeparators.some(sep =>\n pastedText.includes(sep)\n );\n\n if (!hasSeparator) return;\n\n e.preventDefault();\n\n // Build a regex from all separators\n const escapedSeparators = onPasteSeparators.map(s =>\n s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n );\n const regex = new RegExp(`[${escapedSeparators.join('')}]`);\n\n const parts = pastedText\n .split(regex)\n .map(s => s.trim())\n .filter(Boolean);\n\n for (const part of parts) {\n addTag(part);\n }\n },\n [onPasteSeparators, addTag]\n );\n\n // Handle focus\n const handleFocus = useCallback(() => {\n if (openOnFocus && data.length > 0 && !disabled) {\n setIsActive(true);\n }\n }, [openOnFocus, data.length, disabled]);\n\n // Handle click outside\n useEffect(() => {\n if (!isActive) return undefined;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node)\n ) {\n setIsActive(false);\n setHighlightedIndex(-1);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () =>\n document.removeEventListener('mousedown', handleClickOutside);\n }, [isActive]);\n\n // Handle keyboard\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled || readonly) return;\n\n // Handle confirm keys\n if (confirmKeys.includes(e.key)) {\n e.preventDefault();\n if (highlightedIndex >= 0 && filteredData[highlightedIndex]) {\n addTag(filteredData[highlightedIndex]);\n } else if (inputValue.trim()) {\n addTag(inputValue);\n }\n return;\n }\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!isActive && data.length > 0) {\n setIsActive(true);\n } else {\n setHighlightedIndex(prev =>\n prev < filteredData.length - 1 ? prev + 1 : prev\n );\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n setHighlightedIndex(prev => (prev > 0 ? prev - 1 : prev));\n break;\n case 'Backspace':\n if (removeOnKeys && !inputValue && tags.length > 0) {\n e.preventDefault();\n removeTag(tags.length - 1);\n }\n break;\n case 'Escape':\n setIsActive(false);\n setHighlightedIndex(-1);\n break;\n }\n },\n [\n disabled,\n readonly,\n confirmKeys,\n highlightedIndex,\n filteredData,\n addTag,\n inputValue,\n isActive,\n data.length,\n removeOnKeys,\n tags.length,\n removeTag,\n ]\n );\n\n // Combined ref\n const combinedRef = useCallback(\n (node: HTMLInputElement | null) => {\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n }\n },\n [ref]\n );\n\n // Focus input when container is clicked\n const handleContainerClick = useCallback(() => {\n inputRef.current?.focus();\n }, []);\n\n // Generate classes\n const taginputClasses = pcn('taginput', {\n 'is-active': isActive,\n [`is-${size}`]: !!size,\n [`is-${color}`]: !!color,\n 'is-disabled': disabled,\n 'is-rounded': rounded,\n 'is-ellipsis': ellipsis,\n });\n\n const containerClasses = pcn('taginput-container', {\n 'is-attached': attached,\n 'has-icons-left': !!icon,\n });\n\n const inputClasses = pcn('input', {\n [`is-${size}`]: !!size,\n });\n\n const tagClasses = pcn('tag', {\n [`is-${tagColor}`]: !!tagColor,\n [`is-${size}`]: !!size,\n });\n\n const combinedClasses = classNames(\n taginputClasses,\n bulmaHelperClasses,\n className\n );\n\n const isMaxReached = maxTags !== undefined && tags.length >= maxTags;\n\n // Counter text\n const showCounter =\n hasCounter && (maxTags !== undefined || maxlength !== undefined);\n const counterText =\n maxTags !== undefined\n ? `${tags.length} / ${maxTags}`\n : maxlength !== undefined\n ? `${inputValue.length} / ${maxlength}`\n : '';\n\n const counterClasses = pcn('help', 'counter');\n const tagsClasses = pcn('tags');\n const dropdownMenuClasses = pcn('dropdown-menu', 'is-active');\n const dropdownContentClasses = pcn('dropdown-content');\n const iconRightClass = pcn('icon', 'is-right');\n const loaderClass = pcn('loader', 'is-loading');\n\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n const taginputElement = (\n <div\n ref={containerRef}\n className={combinedClasses}\n onClick={handleContainerClick}\n {...rest}\n >\n <div className={containerClasses}>\n {icon && (\n <Icon\n name={icon}\n library={resolvedLibrary}\n variant={iconVariant}\n features={iconFeatures}\n containerClassName={pcn('icon', 'is-left')}\n />\n )}\n <div className={tagsClasses}>\n {tags.map((tag, index) => {\n const displayVal = getDisplayValue(tag);\n return (\n <span key={index} className={tagClasses}>\n {tagTemplate ? (\n tagTemplate(tag)\n ) : ellipsis ? (\n <span title={displayVal}>{displayVal}</span>\n ) : (\n displayVal\n )}\n {closable && !disabled && !readonly && (\n <button\n type=\"button\"\n className=\"delete is-small\"\n onClick={e => {\n e.stopPropagation();\n removeTag(index);\n }}\n aria-label={ariaCloseLabel || `Remove ${displayVal}`}\n />\n )}\n </span>\n );\n })}\n {!isMaxReached && (\n <input\n ref={combinedRef}\n type=\"text\"\n className={inputClasses}\n value={inputValue}\n placeholder={tags.length === 0 ? placeholder : undefined}\n disabled={disabled}\n readOnly={readonly}\n maxLength={maxlength}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n aria-label=\"Add tag\"\n />\n )}\n </div>\n {loading && (\n <span className={iconRightClass}>\n <span className={loaderClass} />\n </span>\n )}\n </div>\n\n {isActive && filteredData.length > 0 && (\n <div className={dropdownMenuClasses}>\n <div\n ref={dropdownRef}\n className={dropdownContentClasses}\n role=\"listbox\"\n >\n {filteredData.map((item, index) => (\n <a\n key={index}\n className={pcn('dropdown-item', {\n 'is-active': index === highlightedIndex,\n })}\n onClick={() => addTag(item)}\n onMouseEnter={() => setHighlightedIndex(index)}\n role=\"option\"\n aria-selected={index === highlightedIndex}\n >\n {item}\n </a>\n ))}\n </div>\n </div>\n )}\n\n {showCounter && <small className={counterClasses}>{counterText}</small>}\n\n {name &&\n tags.map((tag, i) => (\n <input\n key={`tag-input-${i}`}\n type=\"hidden\"\n name={name}\n value={getDisplayValue(tag)}\n form={form}\n />\n ))}\n </div>\n );\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {taginputElement}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {taginputElement}\n {messageEl}\n </>\n );\n }\n);\n\nTaginput.displayName = 'Taginput';\n\nexport default Taginput;\n","import React, { forwardRef } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Input component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the input.\n * @property {'small'|'medium'|'large'} [size] - Size modifier for the input.\n * @property {boolean} [isRounded] - Renders the input with rounded corners.\n * @property {boolean} [isStatic] - Renders the input as static text.\n * @property {boolean} [isHovered] - Applies the hovered state.\n * @property {boolean} [isFocused] - Applies the focused state.\n * @property {boolean} [isLoading] - Shows loading indicator.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [disabled] - Whether the input is disabled.\n * @property {boolean} [readOnly] - Whether the input is read-only.\n */\nexport interface InputBaseProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n Omit<BulmaClassesProps, 'color'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n size?: 'small' | 'medium' | 'large';\n isRounded?: boolean;\n isStatic?: boolean;\n isHovered?: boolean;\n isFocused?: boolean;\n isLoading?: boolean;\n className?: string;\n disabled?: boolean;\n readOnly?: boolean;\n}\n\n/**\n * Bulma Input component with full Bulma helper class support.\n *\n * @function\n * @param {InputBaseProps} props - Props for the Input component.\n * @returns {JSX.Element} The rendered input element.\n * @see {@link https://bulma.io/documentation/form/input/ | Bulma Input documentation}\n */\nexport const InputBase = forwardRef<HTMLInputElement, InputBaseProps>(\n (\n {\n color,\n size,\n isRounded,\n isStatic,\n isHovered,\n isFocused,\n isLoading,\n className,\n disabled,\n readOnly,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('input', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-rounded': isRounded,\n 'is-static': isStatic,\n 'is-hovered': isHovered,\n 'is-focused': isFocused,\n 'is-loading': isLoading,\n });\n const inputClass = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <input\n ref={ref}\n className={inputClass}\n disabled={disabled}\n readOnly={readOnly}\n {...rest}\n />\n );\n }\n);\nInputBase.displayName = 'InputBase';\n\nexport default InputBase;\n","import React, { forwardRef } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Select component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the select.\n * @property {'small'|'medium'|'large'} [size] - Size modifier for the select.\n * @property {boolean} [isRounded] - Renders the select with rounded corners.\n * @property {boolean} [isLoading] - Shows loading indicator.\n * @property {boolean} [isActive] - Applies Bulma's is-active modifier.\n * @property {boolean} [isHovered] - Forces the hovered state on the inner select element.\n * @property {boolean} [isFocused] - Forces the focused state on the inner select element.\n * @property {boolean} [isFullwidth] - Makes the select span the full width of its parent.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [disabled] - Whether the select is disabled.\n * @property {boolean} [multiple] - Whether the select allows multiple values.\n * @property {number} [multipleSize] - For multiple select: number of visible options.\n * @property {React.ReactNode} [children] - Option elements.\n */\nexport interface SelectBaseProps\n extends\n Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'>,\n Omit<BulmaClassesProps, 'color'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n size?: 'small' | 'medium' | 'large';\n isRounded?: boolean;\n isLoading?: boolean;\n isActive?: boolean;\n isHovered?: boolean;\n isFocused?: boolean;\n isFullwidth?: boolean;\n className?: string;\n disabled?: boolean;\n multiple?: boolean;\n multipleSize?: number;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Select component with full Bulma helper class support.\n *\n * @function\n * @param {SelectBaseProps} props - Props for the SelectBase component.\n * @returns {JSX.Element} The rendered select element.\n * @see {@link https://bulma.io/documentation/form/select/ | Bulma Select documentation}\n */\nexport const SelectBase = forwardRef<HTMLSelectElement, SelectBaseProps>(\n (\n {\n color,\n size,\n isRounded,\n isLoading,\n isActive,\n isHovered,\n isFocused,\n isFullwidth,\n className,\n disabled,\n children,\n multiple,\n multipleSize,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('select', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-rounded': isRounded,\n 'is-loading': isLoading,\n 'is-active': isActive,\n 'is-multiple': !!multiple,\n 'is-fullwidth': isFullwidth,\n });\n const selectClass = classNames(mainClass, bulmaHelperClasses, className);\n\n // is-hovered / is-focused belong on the inner <select> element, not the wrapper.\n const innerSelectClass = usePrefixedClassNames('', {\n 'is-hovered': isHovered,\n 'is-focused': isFocused,\n });\n\n // Only set size attribute when multiple is true and multipleSize is specified\n const selectProps: React.SelectHTMLAttributes<HTMLSelectElement> = {\n disabled,\n multiple,\n ...rest,\n };\n\n if (multiple && typeof multipleSize === 'number') {\n selectProps.size = multipleSize;\n }\n\n return (\n <div className={selectClass}>\n <select\n ref={ref}\n className={innerSelectClass || undefined}\n {...selectProps}\n >\n {children}\n </select>\n </div>\n );\n }\n);\n\nSelectBase.displayName = 'SelectBase';\n\nexport default SelectBase;\n","import React, { forwardRef } from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\n\n/**\n * Props for the TextArea component.\n *\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'|'black'|'dark'|'light'|'white'} [color] - Bulma color modifier for the textarea.\n * @property {'small'|'medium'|'large'} [size] - Size modifier for the textarea.\n * @property {boolean} [isRounded] - Renders the textarea with rounded corners.\n * @property {boolean} [isStatic] - Renders the textarea as static text.\n * @property {boolean} [isHovered] - Applies the hovered state.\n * @property {boolean} [isFocused] - Applies the focused state.\n * @property {boolean} [isLoading] - Shows loading indicator.\n * @property {boolean} [isActive] - Applies Bulma's is-active modifier.\n * @property {boolean} [hasFixedSize] - Applies Bulma's has-fixed-size modifier.\n * @property {string} [className] - Additional CSS classes to apply.\n * @property {boolean} [disabled] - Whether the textarea is disabled.\n * @property {boolean} [readOnly] - Whether the textarea is read-only.\n * @property {number} [rows] - Number of visible text lines.\n */\nexport interface TextAreaBaseProps\n extends\n Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>,\n Omit<BulmaClassesProps, 'color'> {\n color?:\n | 'primary'\n | 'link'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'black'\n | 'dark'\n | 'light'\n | 'white';\n size?: 'small' | 'medium' | 'large';\n isRounded?: boolean;\n isStatic?: boolean;\n isHovered?: boolean;\n isFocused?: boolean;\n isLoading?: boolean;\n isActive?: boolean;\n hasFixedSize?: boolean;\n className?: string;\n disabled?: boolean;\n readOnly?: boolean;\n rows?: number;\n}\n\n/**\n * Bulma TextArea component with full Bulma helper class support.\n *\n * @function\n * @param {TextAreaBaseProps} props - Props for the TextAreaBase component.\n * @returns {JSX.Element} The rendered textarea element.\n * @see {@link https://bulma.io/documentation/form/textarea/ | Bulma Textarea documentation}\n */\nexport const TextAreaBase = forwardRef<HTMLTextAreaElement, TextAreaBaseProps>(\n (\n {\n color,\n size,\n isRounded,\n isStatic,\n isHovered,\n isFocused,\n isLoading: _isLoading,\n isActive,\n hasFixedSize,\n className,\n disabled,\n readOnly,\n rows,\n ...props\n },\n ref\n ) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color,\n ...props,\n });\n\n // Note: `is-loading` is intentionally NOT applied to the <textarea> itself —\n // Bulma documents `<div class=\"control is-loading\">` as the loading pattern\n // for textareas, not `<textarea class=\"textarea is-loading\">`. The convenience\n // <TextArea> component routes its `isLoading` prop to the wrapping Control.\n const mainClass = usePrefixedClassNames('textarea', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-rounded': isRounded,\n 'is-static': isStatic,\n 'is-hovered': isHovered,\n 'is-focused': isFocused,\n 'is-active': isActive,\n 'has-fixed-size': hasFixedSize,\n });\n const textareaClass = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <textarea\n ref={ref}\n className={textareaClass}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n {...rest}\n />\n );\n }\n);\nTextAreaBase.displayName = 'TextAreaBase';\n\nexport default TextAreaBase;\n","import React, { forwardRef } from 'react';\nimport { usePrefixedClassNames } from '../helpers/classNames';\nimport { Field, FieldProps } from './Field';\nimport { Control, ControlBaseProps } from './Control';\nimport { InputBase, InputBaseProps } from './InputBase';\nimport { useInsideField, useInsideControl } from './FormContext';\n\n/**\n * Props for the Input component.\n *\n * Composes Field, Control, and Input into a single convenience component.\n * Supports all Input props, plus Field-level (label, horizontal) and\n * Control-level (icons, loading) props.\n *\n * @property {React.ReactNode} [label] - Field label.\n * @property {FieldProps['labelSize']} [labelSize] - Size for the label.\n * @property {FieldProps['labelProps']} [labelProps] - Props for the label element.\n * @property {boolean} [horizontal] - Horizontal field layout.\n * @property {ControlBaseProps['iconLeft']} [iconLeft] - Icon props for left icon.\n * @property {ControlBaseProps['iconRight']} [iconRight] - Icon props for right icon.\n * @property {string} [iconLeftName] - Shortcut for left icon name.\n * @property {string} [iconRightName] - Shortcut for right icon name.\n * @property {ControlBaseProps['iconLeftSize']} [iconLeftSize] - Shortcut for left icon size.\n * @property {ControlBaseProps['iconRightSize']} [iconRightSize] - Shortcut for right icon size.\n * @property {boolean} [hasIconsLeft] - Force left icon container.\n * @property {boolean} [hasIconsRight] - Force right icon container.\n * @property {boolean} [isLoading] - Show loading indicator on the control.\n * @property {boolean} [isExpanded] - Expand the control.\n * @property {'small'|'medium'|'large'} [controlSize] - Control size.\n * @property {React.ReactNode} [message] - Help/validation message below the input.\n * @property {string} [messageColor] - Bulma color for the message.\n * @property {string} [fieldClassName] - Additional CSS classes for the Field.\n * @property {string} [controlClassName] - Additional CSS classes for the Control.\n */\nexport interface InputProps extends InputBaseProps {\n label?: React.ReactNode;\n labelSize?: FieldProps['labelSize'];\n labelProps?: FieldProps['labelProps'];\n horizontal?: boolean;\n iconLeft?: ControlBaseProps['iconLeft'];\n iconRight?: ControlBaseProps['iconRight'];\n iconLeftName?: string;\n iconRightName?: string;\n iconLeftSize?: ControlBaseProps['iconLeftSize'];\n iconRightSize?: ControlBaseProps['iconRightSize'];\n hasIconsLeft?: boolean;\n hasIconsRight?: boolean;\n isLoading?: boolean;\n isExpanded?: boolean;\n controlSize?: ControlBaseProps['size'];\n message?: React.ReactNode;\n messageColor?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n fieldClassName?: string;\n controlClassName?: string;\n}\n\n/**\n * Input is a convenience component that composes Field, Control, and Input.\n *\n * Use this for typical form fields. For complex layouts (grouped fields,\n * addons, etc.), compose Field, Control, and Input directly.\n *\n * @function\n * @param {InputProps} props - Props for Input.\n * @returns {JSX.Element} The composed field element.\n *\n * @example\n * <Input label=\"Username\" placeholder=\"Enter username\" iconLeftName=\"user\" />\n *\n * @example\n * <Input\n * label=\"Email\"\n * type=\"email\"\n * message=\"Please enter a valid email\"\n * messageColor=\"danger\"\n * color=\"danger\"\n * />\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n // Field props\n label,\n labelSize,\n labelProps,\n horizontal,\n // Control props\n iconLeft,\n iconRight,\n iconLeftName,\n iconRightName,\n iconLeftSize,\n iconRightSize,\n hasIconsLeft,\n hasIconsRight,\n isLoading,\n isExpanded,\n controlSize,\n // Message props\n message,\n messageColor,\n // Container class overrides\n fieldClassName,\n controlClassName,\n // Everything else goes to Input\n ...inputProps\n },\n ref\n ) => {\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n\n let content = <InputBase ref={ref} {...inputProps} />;\n\n if (!insideControl) {\n content = (\n <Control\n iconLeft={iconLeft}\n iconRight={iconRight}\n iconLeftName={iconLeftName}\n iconRightName={iconRightName}\n iconLeftSize={iconLeftSize}\n iconRightSize={iconRightSize}\n hasIconsLeft={hasIconsLeft}\n hasIconsRight={hasIconsRight}\n isLoading={isLoading}\n isExpanded={isExpanded}\n size={controlSize}\n className={controlClassName}\n >\n {content}\n </Control>\n );\n }\n\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n","import React, { forwardRef } from 'react';\nimport { usePrefixedClassNames } from '../helpers/classNames';\nimport { Field, FieldProps } from './Field';\nimport { Control, ControlBaseProps } from './Control';\nimport { SelectBase, SelectBaseProps } from './SelectBase';\nimport { useInsideField, useInsideControl } from './FormContext';\n\n/**\n * Props for the Select component.\n *\n * Composes Field, Control, and SelectBase into a single convenience component.\n * Supports all SelectBase props, plus Field-level (label, horizontal) and\n * Control-level (icons, loading) props.\n *\n * @property {React.ReactNode} [label] - Field label.\n * @property {FieldProps['labelSize']} [labelSize] - Size for the label.\n * @property {FieldProps['labelProps']} [labelProps] - Props for the label element.\n * @property {boolean} [horizontal] - Horizontal field layout.\n * @property {ControlBaseProps['iconLeft']} [iconLeft] - Icon props for left icon.\n * @property {string} [iconLeftName] - Shortcut for left icon name.\n * @property {ControlBaseProps['iconLeftSize']} [iconLeftSize] - Shortcut for left icon size.\n * @property {boolean} [hasIconsLeft] - Force left icon container.\n * @property {boolean} [isLoading] - Show loading indicator on the control.\n * @property {boolean} [isExpanded] - Expand the control.\n * @property {'small'|'medium'|'large'} [controlSize] - Control size.\n * @property {React.ReactNode} [message] - Help/validation message below the select.\n * @property {string} [messageColor] - Bulma color for the message.\n * @property {string} [fieldClassName] - Additional CSS classes for the Field.\n * @property {string} [controlClassName] - Additional CSS classes for the Control.\n */\nexport interface SelectProps extends SelectBaseProps {\n label?: React.ReactNode;\n labelSize?: FieldProps['labelSize'];\n labelProps?: FieldProps['labelProps'];\n horizontal?: boolean;\n iconLeft?: ControlBaseProps['iconLeft'];\n iconLeftName?: string;\n iconLeftSize?: ControlBaseProps['iconLeftSize'];\n hasIconsLeft?: boolean;\n isLoading?: boolean;\n isExpanded?: boolean;\n controlSize?: ControlBaseProps['size'];\n message?: React.ReactNode;\n messageColor?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n fieldClassName?: string;\n controlClassName?: string;\n}\n\n/**\n * Select is a convenience component that composes Field, Control, and SelectBase.\n *\n * Use this for typical form fields. For complex layouts (grouped fields,\n * addons, etc.), compose Field, Control, and SelectBase directly.\n *\n * @function\n * @param {SelectProps} props - Props for Select.\n * @returns {JSX.Element} The composed field element.\n *\n * @example\n * <Select label=\"Country\" iconLeftName=\"globe\">\n * <option>United States</option>\n * <option>Canada</option>\n * </Select>\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n // Field props\n label,\n labelSize,\n labelProps,\n horizontal,\n // Control props\n iconLeft,\n iconLeftName,\n iconLeftSize,\n hasIconsLeft,\n isExpanded,\n controlSize,\n // Message props\n message,\n messageColor,\n // Container class overrides\n fieldClassName,\n controlClassName,\n // Everything else (including isLoading) goes to Select.\n // Note: isLoading on a select is rendered on the .select wrapper itself\n // (replacing the chevron with a spinner), not on .control — this matches\n // Bulma's documented behavior for `<div class=\"select is-loading\">`.\n ...selectProps\n },\n ref\n ) => {\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n\n let content = <SelectBase ref={ref} {...selectProps} />;\n\n if (!insideControl) {\n content = (\n <Control\n iconLeft={iconLeft}\n iconLeftName={iconLeftName}\n iconLeftSize={iconLeftSize}\n hasIconsLeft={hasIconsLeft}\n isExpanded={isExpanded}\n size={controlSize}\n className={controlClassName}\n >\n {content}\n </Control>\n );\n }\n\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n }\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n","import React, { forwardRef } from 'react';\nimport { usePrefixedClassNames } from '../helpers/classNames';\nimport { Field, FieldProps } from './Field';\nimport { Control, ControlBaseProps } from './Control';\nimport { TextAreaBase, TextAreaBaseProps } from './TextAreaBase';\nimport { useInsideField, useInsideControl } from './FormContext';\n\n/**\n * Props for the TextArea component.\n *\n * Composes Field, Control, and TextAreaBase into a single convenience component.\n * Supports all TextAreaBase props, plus Field-level (label, horizontal) and\n * Control-level (loading) props.\n *\n * @property {React.ReactNode} [label] - Field label.\n * @property {FieldProps['labelSize']} [labelSize] - Size for the label.\n * @property {FieldProps['labelProps']} [labelProps] - Props for the label element.\n * @property {boolean} [horizontal] - Horizontal field layout.\n * @property {boolean} [isLoading] - Show loading indicator on the control.\n * @property {'small'|'medium'|'large'} [controlSize] - Control size.\n * @property {React.ReactNode} [message] - Help/validation message below the textarea.\n * @property {string} [messageColor] - Bulma color for the message.\n * @property {string} [fieldClassName] - Additional CSS classes for the Field.\n * @property {string} [controlClassName] - Additional CSS classes for the Control.\n */\nexport interface TextAreaProps extends TextAreaBaseProps {\n label?: React.ReactNode;\n labelSize?: FieldProps['labelSize'];\n labelProps?: FieldProps['labelProps'];\n horizontal?: boolean;\n isLoading?: boolean;\n controlSize?: ControlBaseProps['size'];\n message?: React.ReactNode;\n messageColor?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n fieldClassName?: string;\n controlClassName?: string;\n}\n\n/**\n * TextArea is a convenience component that composes Field, Control, and TextAreaBase.\n *\n * Use this for typical form fields. For complex layouts (grouped fields,\n * addons, etc.), compose Field, Control, and TextAreaBase directly.\n *\n * @function\n * @param {TextAreaProps} props - Props for TextArea.\n * @returns {JSX.Element} The composed field element.\n *\n * @example\n * <TextArea label=\"Bio\" placeholder=\"Tell us about yourself\" rows={4} />\n *\n * @example\n * <TextArea\n * label=\"Comments\"\n * message=\"Max 500 characters\"\n * messageColor=\"info\"\n * />\n */\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n // Field props\n label,\n labelSize,\n labelProps,\n horizontal,\n // Control props\n isLoading: controlIsLoading,\n controlSize,\n // Message props\n message,\n messageColor,\n // Container class overrides\n fieldClassName,\n controlClassName,\n // Everything else goes to TextAreaBase\n ...textAreaProps\n },\n ref\n ) => {\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n\n let content = <TextAreaBase ref={ref} {...textAreaProps} />;\n\n if (!insideControl) {\n content = (\n <Control\n isLoading={controlIsLoading}\n size={controlSize}\n className={controlClassName}\n >\n {content}\n </Control>\n );\n }\n\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n }\n);\n\nTextArea.displayName = 'TextArea';\n\nexport default TextArea;\n","export type PickerPosition =\n | 'bottom-left'\n | 'bottom-right'\n | 'top-left'\n | 'top-right'\n | 'auto';\n\nexport type HourFormat = '12' | '24';\n\nexport type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n/**\n * Translatable strings used across all four pickers. Pass via the `labels`\n * prop to override defaults; consumers manage their own locale-driven mapping.\n */\nexport interface PickerLabels {\n // Calendar\n prevMonth?: string;\n nextMonth?: string;\n chooseDate?: string;\n // Time spinner\n hours?: string;\n minutes?: string;\n seconds?: string;\n ampm?: string;\n increaseHours?: string;\n decreaseHours?: string;\n increaseMinutes?: string;\n decreaseMinutes?: string;\n increaseSeconds?: string;\n decreaseSeconds?: string;\n toggleAmPm?: string;\n chooseTime?: string;\n chooseDateTime?: string;\n // Footer buttons\n now?: string;\n today?: string;\n clear?: string;\n cancel?: string;\n ok?: string;\n /** Mobile footer: text link that reverts to the value at open (like iOS). */\n reset?: string;\n /** Mobile footer: aria-label for the circular checkmark commit button. */\n done?: string;\n /** DateTimeInput footer: label preceding the selected-time display. */\n time?: string;\n}\n\nexport const DEFAULT_PICKER_LABELS: Required<PickerLabels> = {\n prevMonth: 'Previous month',\n nextMonth: 'Next month',\n chooseDate: 'Choose date',\n hours: 'hours',\n minutes: 'minutes',\n seconds: 'seconds',\n ampm: 'ampm',\n increaseHours: 'Increase hours',\n decreaseHours: 'Decrease hours',\n increaseMinutes: 'Increase minutes',\n decreaseMinutes: 'Decrease minutes',\n increaseSeconds: 'Increase seconds',\n decreaseSeconds: 'Decrease seconds',\n toggleAmPm: 'Toggle AM/PM',\n chooseTime: 'Choose time',\n chooseDateTime: 'Choose date and time',\n now: 'Now',\n today: 'Today',\n clear: 'Clear',\n cancel: 'Cancel',\n ok: 'OK',\n reset: 'Reset',\n done: 'Done',\n time: 'Time',\n};\n\n/** Merge user-supplied label overrides with the defaults. */\nexport const mergeLabels = (\n overrides?: PickerLabels\n): Required<PickerLabels> => ({\n ...DEFAULT_PICKER_LABELS,\n ...(overrides ?? {}),\n});\n","export type DateFormatOption = Intl.DateTimeFormatOptions | string;\n\nexport const DEFAULT_DATE_FORMAT = 'YYYY-MM-DD';\nexport const DEFAULT_TIME_FORMAT_24 = 'HH:mm';\nexport const DEFAULT_TIME_FORMAT_12 = 'hh:mm A';\nexport const DEFAULT_DATETIME_FORMAT = 'YYYY-MM-DD HH:mm';\n\nconst pad = (n: number, width = 2): string => String(n).padStart(width, '0');\n\nconst TOKEN_RE = /YYYY|YY|MM|M|DD|D|HH|H|hh|h|mm|m|ss|s|A|a/g;\n\nfunction formatToken(d: Date, token: string): string {\n switch (token) {\n case 'YYYY':\n // Zero-pad to a fixed 4 chars so the rendered width matches the\n // segment-map width during digit-by-digit keyboard entry (and to match\n // ISO 8601). Years >9999 keep their natural width.\n return pad(d.getFullYear(), 4);\n case 'YY':\n return pad(d.getFullYear() % 100);\n case 'MM':\n return pad(d.getMonth() + 1);\n case 'M':\n return String(d.getMonth() + 1);\n case 'DD':\n return pad(d.getDate());\n case 'D':\n return String(d.getDate());\n case 'HH':\n return pad(d.getHours());\n case 'H':\n return String(d.getHours());\n case 'hh': {\n const h12 = d.getHours() % 12 || 12;\n return pad(h12);\n }\n case 'h': {\n const h12 = d.getHours() % 12 || 12;\n return String(h12);\n }\n case 'mm':\n return pad(d.getMinutes());\n case 'm':\n return String(d.getMinutes());\n case 'ss':\n return pad(d.getSeconds());\n case 's':\n return String(d.getSeconds());\n case 'A':\n return d.getHours() < 12 ? 'AM' : 'PM';\n case 'a':\n return d.getHours() < 12 ? 'am' : 'pm';\n default:\n return token;\n }\n}\n\nfunction formatTokenString(d: Date, fmt: string): string {\n return fmt.replace(TOKEN_RE, t => formatToken(d, t));\n}\n\nfunction formatWithIntl(\n d: Date,\n options: Intl.DateTimeFormatOptions,\n locale?: string\n): string {\n return new Intl.DateTimeFormat(locale, options).format(d);\n}\n\nexport function formatDate(\n d: Date,\n fmt: DateFormatOption | undefined,\n locale?: string\n): string {\n const f = fmt ?? DEFAULT_DATE_FORMAT;\n if (typeof f === 'string') return formatTokenString(d, f);\n return formatWithIntl(d, f, locale);\n}\n\nexport function formatTime(\n d: Date,\n fmt: DateFormatOption | undefined,\n locale?: string\n): string {\n const f = fmt ?? DEFAULT_TIME_FORMAT_24;\n if (typeof f === 'string') return formatTokenString(d, f);\n return formatWithIntl(d, f, locale);\n}\n\nexport function formatDateTime(\n d: Date,\n fmt: DateFormatOption | undefined,\n locale?: string\n): string {\n const f = fmt ?? DEFAULT_DATETIME_FORMAT;\n if (typeof f === 'string') return formatTokenString(d, f);\n return formatWithIntl(d, f, locale);\n}\n\n/**\n * Derive the hour cycle (`'12'` or `'24'`) a display format will render, from\n * its first hour token: `h`/`hh` → 12-hour with meridiem, `H`/`HH` → 24-hour.\n *\n * Returns `null` when the cycle can't be read from the format — it's an\n * `Intl.DateTimeFormat` options object (no token string), `undefined`, or has\n * no hour token — so callers fall back to the raw `hourFormat` prop. Scans with\n * the same {@link TOKEN_RE} grammar the input renders with, so the derived cycle\n * always agrees with what the field actually displays.\n */\nexport function hourCycleFromFormat(\n fmt: DateFormatOption | undefined\n): '12' | '24' | null {\n if (typeof fmt !== 'string') return null;\n for (const [token] of fmt.matchAll(TOKEN_RE)) {\n if (token === 'H' || token === 'HH') return '24';\n if (token === 'h' || token === 'hh') return '12';\n }\n return null;\n}\n\n/**\n * Parse a date string against a token format. Returns null on mismatch.\n * For Intl-options formats parsing is the consumer's responsibility — pass\n * a custom `parse` prop on the picker.\n */\nexport function parseDate(\n s: string,\n fmt?: string,\n // locale arg accepted for symmetry; locale-aware parsing is not supported.\n _locale?: string\n): Date | null {\n if (!s) return null;\n const format = fmt ?? DEFAULT_DATE_FORMAT;\n const parts = parseTokens(s, format);\n if (!parts) return null;\n const year = parts.year ?? new Date().getFullYear();\n const month = (parts.month ?? 1) - 1;\n const day = parts.day ?? 1;\n const hours = parts.hours ?? 0;\n const minutes = parts.minutes ?? 0;\n const seconds = parts.seconds ?? 0;\n const d = new Date(year, month, day, hours, minutes, seconds, 0);\n if (\n d.getFullYear() !== year ||\n d.getMonth() !== month ||\n d.getDate() !== day\n ) {\n return null;\n }\n return d;\n}\n\nexport function parseTime(s: string, fmt?: string): Date | null {\n if (!s) return null;\n const format = fmt ?? DEFAULT_TIME_FORMAT_24;\n const parts = parseTokens(s, format);\n if (!parts) return null;\n const today = new Date();\n return new Date(\n today.getFullYear(),\n today.getMonth(),\n today.getDate(),\n parts.hours ?? 0,\n parts.minutes ?? 0,\n parts.seconds ?? 0,\n 0\n );\n}\n\ninterface ParsedParts {\n year?: number;\n month?: number;\n day?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n meridiem?: 'am' | 'pm';\n}\n\nfunction escapeRegExp(s: string): string {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction parseTokens(input: string, fmt: string): ParsedParts | null {\n const tokenOrder: string[] = [];\n let regex = '';\n let i = 0;\n while (i < fmt.length) {\n const four = fmt.slice(i, i + 4);\n const two = fmt.slice(i, i + 2);\n const one = fmt[i];\n let token: string | null = null;\n if (four === 'YYYY') token = 'YYYY';\n else if (\n two === 'YY' ||\n two === 'MM' ||\n two === 'DD' ||\n two === 'HH' ||\n two === 'hh' ||\n two === 'mm' ||\n two === 'ss'\n )\n token = two;\n else if (\n one === 'M' ||\n one === 'D' ||\n one === 'H' ||\n one === 'h' ||\n one === 'm' ||\n one === 's' ||\n one === 'A' ||\n one === 'a'\n )\n token = one;\n\n if (token) {\n tokenOrder.push(token);\n switch (token) {\n case 'YYYY':\n regex += '(\\\\d{4})';\n break;\n case 'YY':\n regex += '(\\\\d{2})';\n break;\n case 'MM':\n case 'DD':\n case 'HH':\n case 'hh':\n case 'mm':\n case 'ss':\n regex += '(\\\\d{1,2})';\n break;\n case 'M':\n case 'D':\n case 'H':\n case 'h':\n case 'm':\n case 's':\n regex += '(\\\\d{1,2})';\n break;\n case 'A':\n regex += '(AM|PM)';\n break;\n case 'a':\n regex += '(am|pm)';\n break;\n }\n i += token.length;\n } else {\n regex += escapeRegExp(one);\n i += 1;\n }\n }\n const m = new RegExp('^' + regex + '$').exec(input);\n if (!m) return null;\n const out: ParsedParts = {};\n tokenOrder.forEach((token, idx) => {\n const v = m[idx + 1];\n switch (token) {\n case 'YYYY':\n out.year = Number(v);\n break;\n case 'YY':\n out.year = 2000 + Number(v);\n break;\n case 'MM':\n case 'M':\n out.month = Number(v);\n break;\n case 'DD':\n case 'D':\n out.day = Number(v);\n break;\n case 'HH':\n case 'H':\n out.hours = Number(v);\n break;\n case 'hh':\n case 'h':\n out.hours = Number(v);\n break;\n case 'mm':\n case 'm':\n out.minutes = Number(v);\n break;\n case 'ss':\n case 's':\n out.seconds = Number(v);\n break;\n case 'A':\n out.meridiem = v.toLowerCase() === 'am' ? 'am' : 'pm';\n break;\n case 'a':\n out.meridiem = v === 'am' ? 'am' : 'pm';\n break;\n }\n });\n if (out.meridiem !== undefined && out.hours !== undefined) {\n if (out.meridiem === 'pm' && out.hours < 12) out.hours += 12;\n if (out.meridiem === 'am' && out.hours === 12) out.hours = 0;\n }\n return out;\n}\n\n/**\n * Locale-aware day name labels in calendar order (Sunday → Saturday).\n * Caller rotates by `firstDayOfWeek`.\n */\nexport function getDayNames(\n locale: string | undefined,\n length: 'narrow' | 'short' | 'long' = 'short'\n): string[] {\n const fmt = new Intl.DateTimeFormat(locale, { weekday: length });\n // 2021-01-03 was a Sunday; use it as the anchor.\n const sunday = new Date(2021, 0, 3);\n const out: string[] = [];\n for (let i = 0; i < 7; i++) {\n const d = new Date(sunday);\n d.setDate(sunday.getDate() + i);\n out.push(fmt.format(d));\n }\n return out;\n}\n\nexport function getMonthNames(\n locale: string | undefined,\n length: 'short' | 'long' = 'long'\n): string[] {\n const fmt = new Intl.DateTimeFormat(locale, { month: length });\n const out: string[] = [];\n for (let i = 0; i < 12; i++) {\n out.push(fmt.format(new Date(2021, i, 1)));\n }\n return out;\n}\n","import { DayOfWeek } from './pickerTypes';\n\nexport interface CalendarCell {\n date: Date;\n inCurrentMonth: boolean;\n isToday: boolean;\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function isBefore(a: Date, b: Date): boolean {\n return a.getTime() < b.getTime();\n}\n\nexport function isAfter(a: Date, b: Date): boolean {\n return a.getTime() > b.getTime();\n}\n\nexport function isWithin(d: Date, min?: Date, max?: Date): boolean {\n if (min && isBefore(d, min)) return false;\n if (max && isAfter(d, max)) return false;\n return true;\n}\n\nexport function startOfDay(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0, 0);\n}\n\nexport function endOfDay(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59, 59, 999);\n}\n\nexport function startOfMonth(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), 1, 0, 0, 0, 0);\n}\n\nexport function endOfMonth(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth() + 1, 0, 23, 59, 59, 999);\n}\n\nexport function addDays(d: Date, n: number): Date {\n const r = new Date(d);\n r.setDate(r.getDate() + n);\n return r;\n}\n\nexport function addMonths(d: Date, n: number): Date {\n const r = new Date(d);\n const day = r.getDate();\n r.setDate(1);\n r.setMonth(r.getMonth() + n);\n // Clamp day to last day of new month if original day is out of range.\n const lastDay = new Date(r.getFullYear(), r.getMonth() + 1, 0).getDate();\n r.setDate(Math.min(day, lastDay));\n return r;\n}\n\nexport function addYears(d: Date, n: number): Date {\n return addMonths(d, n * 12);\n}\n\nexport function addHours(d: Date, n: number): Date {\n const r = new Date(d);\n r.setHours(r.getHours() + n);\n return r;\n}\n\nexport function addMinutes(d: Date, n: number): Date {\n const r = new Date(d);\n r.setMinutes(r.getMinutes() + n);\n return r;\n}\n\nexport function addSeconds(d: Date, n: number): Date {\n const r = new Date(d);\n r.setSeconds(r.getSeconds() + n);\n return r;\n}\n\nexport function setTimeOfDay(\n d: Date,\n parts: { hours?: number; minutes?: number; seconds?: number }\n): Date {\n const r = new Date(d);\n if (parts.hours !== undefined) r.setHours(parts.hours);\n if (parts.minutes !== undefined) r.setMinutes(parts.minutes);\n if (parts.seconds !== undefined) r.setSeconds(parts.seconds);\n return r;\n}\n\nexport function getTimeOfDay(d: Date): {\n hours: number;\n minutes: number;\n seconds: number;\n} {\n return {\n hours: d.getHours(),\n minutes: d.getMinutes(),\n seconds: d.getSeconds(),\n };\n}\n\nexport function clampDate(d: Date, min?: Date, max?: Date): Date {\n if (min && isBefore(d, min)) return new Date(min);\n if (max && isAfter(d, max)) return new Date(max);\n return new Date(d);\n}\n\n/**\n * Snap a Date's time-of-day to the nearest grid defined by the given\n * increment steps. Used by the \"Now\" button in pickers configured with\n * non-1 hour / minute / second steps so the committed time always lands on\n * a slot that exists on the wheel. Overflows roll up: e.g.\n * 13:58 with step=15 → 14:00. Seconds are zeroed when `enableSeconds` is\n * false, regardless of step.\n */\nexport function snapTimeToIncrement(\n d: Date,\n opts: {\n incrementHours?: number;\n incrementMinutes?: number;\n incrementSeconds?: number;\n enableSeconds?: boolean;\n } = {}\n): Date {\n const {\n incrementHours = 1,\n incrementMinutes = 1,\n incrementSeconds = 1,\n enableSeconds = false,\n } = opts;\n const r = new Date(d);\n let h = r.getHours();\n let m = r.getMinutes();\n let s = enableSeconds ? r.getSeconds() : 0;\n\n if (enableSeconds && incrementSeconds > 1) {\n s = Math.round(s / incrementSeconds) * incrementSeconds;\n if (s >= 60) {\n s -= 60;\n m += 1;\n }\n }\n\n if (incrementMinutes > 1) {\n m = Math.round(m / incrementMinutes) * incrementMinutes;\n if (m >= 60) {\n m -= 60;\n h += 1;\n }\n }\n\n if (incrementHours > 1) {\n h = Math.round(h / incrementHours) * incrementHours;\n // setHours handles 24+ overflow naturally (rolls forward into next day).\n }\n\n r.setHours(h, m, s, 0);\n return r;\n}\n\n/**\n * Build a 6-week × 7-day grid (42 cells) anchored on the month containing\n * `monthAnchor`. The first cell is the start of the week containing the first\n * of the month, where the week starts on `firstDayOfWeek`.\n */\nexport function buildMonthGrid(\n monthAnchor: Date,\n firstDayOfWeek: DayOfWeek = 0\n): CalendarCell[] {\n const monthStart = startOfMonth(monthAnchor);\n const firstWeekday = monthStart.getDay();\n const offset = (firstWeekday - firstDayOfWeek + 7) % 7;\n const gridStart = addDays(monthStart, -offset);\n const today = startOfDay(new Date());\n const cells: CalendarCell[] = [];\n for (let i = 0; i < 42; i++) {\n const date = addDays(gridStart, i);\n cells.push({\n date,\n inCurrentMonth: date.getMonth() === monthAnchor.getMonth(),\n isToday: isSameDay(date, today),\n });\n }\n return cells;\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n classNames,\n prefixedClassNames,\n usePrefixedClassNames,\n} from '../../helpers/classNames';\nimport { useConfig } from '../../helpers/Config';\nimport { DayOfWeek, PickerLabels, mergeLabels } from './pickerTypes';\nimport {\n addDays,\n addMonths,\n addYears,\n buildMonthGrid,\n isSameDay,\n isSameMonth,\n isWithin,\n startOfDay,\n} from './dateUtils';\nimport { getDayNames, getMonthNames } from './formatters';\n\nexport interface CalendarProps {\n value: Date | null;\n focusedDate: Date;\n onSelect: (d: Date) => void;\n onFocusedDateChange: (d: Date) => void;\n min?: Date;\n max?: Date;\n shouldDisableDate?: (d: Date) => boolean;\n unselectableDates?: Date[];\n firstDayOfWeek?: DayOfWeek;\n locale?: string;\n dayNames?: string[];\n monthNames?: string[];\n nearbyMonthDays?: boolean;\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n size?: 'small' | 'medium' | 'large';\n className?: string;\n id?: string;\n /** When true, focus the cell matching `focusedDate` after each render. */\n autoFocusCell?: boolean;\n /** Optional translatable string overrides. */\n labels?: PickerLabels;\n /**\n * Inclusive `[min, max]` year range shown in the year-dropdown view.\n * Defaults to ±100 years around the focused year, clamped by `min`/`max`.\n */\n yearsRange?: [number, number];\n}\n\nexport const Calendar: React.FC<CalendarProps> = ({\n value,\n focusedDate,\n onSelect,\n onFocusedDateChange,\n min,\n max,\n shouldDisableDate,\n unselectableDates,\n firstDayOfWeek = 0,\n locale,\n dayNames,\n monthNames,\n nearbyMonthDays = true,\n color,\n size,\n className,\n id,\n autoFocusCell = false,\n labels,\n yearsRange,\n}) => {\n const gridRef = useRef<HTMLDivElement>(null);\n const yearGridRef = useRef<HTMLDivElement>(null);\n const { classPrefix } = useConfig();\n const t = mergeLabels(labels);\n const [view, setView] = useState<'days' | 'years'>('days');\n\n const computedDayNames = useMemo(() => {\n if (dayNames && dayNames.length === 7) return dayNames;\n const sundayFirst = getDayNames(locale, 'short');\n return [\n ...sundayFirst.slice(firstDayOfWeek),\n ...sundayFirst.slice(0, firstDayOfWeek),\n ];\n }, [dayNames, locale, firstDayOfWeek]);\n\n const computedMonthNames = useMemo(() => {\n if (monthNames && monthNames.length === 12) return monthNames;\n return getMonthNames(locale, 'long');\n }, [monthNames, locale]);\n\n const cells = useMemo(\n () => buildMonthGrid(focusedDate, firstDayOfWeek),\n [focusedDate, firstDayOfWeek]\n );\n\n const isDateUnselectable = useCallback(\n (d: Date) => {\n if (!isWithin(d, min, max)) return true;\n if (shouldDisableDate?.(d)) return true;\n if (unselectableDates?.some(u => isSameDay(u, d))) return true;\n return false;\n },\n [min, max, shouldDisableDate, unselectableDates]\n );\n\n // Step from `next` by `direction` days until we hit a selectable date,\n // skipping past dates blocked by min/max, shouldDisableDate, or\n // unselectableDates. If the whole searched range is disabled, focus stays\n // put. Cap iterations to guard against pathologically empty ranges.\n const moveFocus = useCallback(\n (next: Date, direction: 1 | -1) => {\n let candidate = next;\n for (let i = 0; i < 366; i++) {\n if (min && candidate.getTime() < startOfDay(min).getTime()) return;\n if (max && candidate.getTime() > startOfDay(max).getTime()) return;\n if (!isDateUnselectable(candidate)) {\n onFocusedDateChange(candidate);\n return;\n }\n candidate = addDays(candidate, direction);\n }\n },\n [min, max, isDateUnselectable, onFocusedDateChange]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowLeft':\n e.preventDefault();\n moveFocus(addDays(focusedDate, -1), -1);\n break;\n case 'ArrowRight':\n e.preventDefault();\n moveFocus(addDays(focusedDate, 1), 1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n moveFocus(addDays(focusedDate, -7), -1);\n break;\n case 'ArrowDown':\n e.preventDefault();\n moveFocus(addDays(focusedDate, 7), 1);\n break;\n case 'PageUp':\n e.preventDefault();\n moveFocus(\n e.shiftKey ? addYears(focusedDate, -1) : addMonths(focusedDate, -1),\n -1\n );\n break;\n case 'PageDown':\n e.preventDefault();\n moveFocus(\n e.shiftKey ? addYears(focusedDate, 1) : addMonths(focusedDate, 1),\n 1\n );\n break;\n case 'Home': {\n e.preventDefault();\n const dayOfWeek = focusedDate.getDay();\n const offset = (dayOfWeek - firstDayOfWeek + 7) % 7;\n moveFocus(addDays(focusedDate, -offset), 1);\n break;\n }\n case 'End': {\n e.preventDefault();\n const dayOfWeek = focusedDate.getDay();\n const offset = (dayOfWeek - firstDayOfWeek + 7) % 7;\n moveFocus(addDays(focusedDate, 6 - offset), -1);\n break;\n }\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (!isDateUnselectable(focusedDate)) onSelect(focusedDate);\n break;\n }\n },\n [focusedDate, firstDayOfWeek, isDateUnselectable, moveFocus, onSelect]\n );\n\n const calendarClass = usePrefixedClassNames('dateinput', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n });\n const headerClass = usePrefixedClassNames('dateinput-header');\n const monthTriggerClass = usePrefixedClassNames('dateinput-month-trigger', {\n 'is-active': view === 'years',\n });\n const monthCaretClass = usePrefixedClassNames('dateinput-month-caret');\n const navGroupClass = usePrefixedClassNames('dateinput-nav-group');\n const navPrevClass = usePrefixedClassNames('dateinput-nav-prev');\n const navNextClass = usePrefixedClassNames('dateinput-nav-next');\n const monthLabelClass = usePrefixedClassNames('dateinput-month-label');\n const dayNamesRowClass = usePrefixedClassNames('dateinput-day-names');\n const dayNameClass = usePrefixedClassNames('dateinput-day-name');\n const gridClass = usePrefixedClassNames('dateinput-grid');\n const yearsGridClass = usePrefixedClassNames('dateinput-years-grid');\n\n const prevMonthAnchor = addMonths(focusedDate, -1);\n const nextMonthAnchor = addMonths(focusedDate, 1);\n const prevDisabled = !!(\n min &&\n prevMonthAnchor.getTime() < startOfDay(min).getTime() &&\n isSameMonth(focusedDate, min)\n );\n const nextDisabled = !!(\n max &&\n nextMonthAnchor.getTime() > startOfDay(max).getTime() &&\n isSameMonth(focusedDate, max)\n );\n\n const labelId = id ? `${id}-label` : undefined;\n const monthLabel = `${computedMonthNames[focusedDate.getMonth()]} ${focusedDate.getFullYear()}`;\n\n const yearList = useMemo<number[]>(() => {\n const focusedYear = focusedDate.getFullYear();\n const minYear = min ? min.getFullYear() : focusedYear - 100;\n const maxYear = max ? max.getFullYear() : focusedYear + 100;\n const [lo, hi] = yearsRange ?? [minYear, maxYear];\n const start = Math.max(lo, minYear);\n const end = Math.min(hi, maxYear);\n const out: number[] = [];\n for (let y = start; y <= end; y++) out.push(y);\n return out;\n }, [focusedDate, min, max, yearsRange]);\n\n const handleYearSelect = useCallback(\n (year: number) => {\n const next = new Date(focusedDate);\n next.setFullYear(year);\n // Keep month/day but clamp into [min, max].\n onFocusedDateChange(next);\n setView('days');\n },\n [focusedDate, onFocusedDateChange]\n );\n\n useEffect(() => {\n if (view !== 'days') return;\n if (!autoFocusCell || !gridRef.current) return;\n const target = gridRef.current.querySelector<HTMLElement>(\n '[data-focused=\"true\"]'\n );\n target?.focus();\n }, [autoFocusCell, focusedDate, view]);\n\n // When the year view opens, scroll the focused year into view.\n useEffect(() => {\n if (view !== 'years' || !yearGridRef.current) return;\n const sel = yearGridRef.current.querySelector<HTMLElement>(\n '[data-focused-year=\"true\"]'\n );\n sel?.scrollIntoView({ block: 'center' });\n sel?.focus();\n }, [view]);\n\n const focusedYear = focusedDate.getFullYear();\n const todayYear = new Date().getFullYear();\n\n return (\n <div className={classNames(calendarClass, className)} id={id}>\n <div className={headerClass}>\n <button\n type=\"button\"\n className={monthTriggerClass}\n aria-haspopup=\"listbox\"\n aria-expanded={view === 'years'}\n onClick={() => setView(v => (v === 'years' ? 'days' : 'years'))}\n >\n <span className={monthLabelClass} id={labelId} aria-live=\"polite\">\n {monthLabel}\n </span>\n <svg\n className={monthCaretClass}\n viewBox=\"0 0 12 12\"\n width=\"10\"\n height=\"10\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M2 4l4 4 4-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <div className={navGroupClass}>\n <button\n type=\"button\"\n className={navPrevClass}\n aria-label={t.prevMonth}\n disabled={prevDisabled || view !== 'days'}\n onClick={() => onFocusedDateChange(prevMonthAnchor)}\n >\n <svg viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" aria-hidden=\"true\">\n <path\n d=\"M10 3l-5 5 5 5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button\n type=\"button\"\n className={navNextClass}\n aria-label={t.nextMonth}\n disabled={nextDisabled || view !== 'days'}\n onClick={() => onFocusedDateChange(nextMonthAnchor)}\n >\n <svg viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" aria-hidden=\"true\">\n <path\n d=\"M6 3l5 5-5 5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n\n {view === 'days' ? (\n <>\n <div className={dayNamesRowClass} aria-hidden=\"true\">\n {computedDayNames.map((name, i) => (\n <div key={i} className={dayNameClass}>\n {name}\n </div>\n ))}\n </div>\n <div\n ref={gridRef}\n role=\"grid\"\n aria-labelledby={labelId}\n className={gridClass}\n onKeyDown={handleKeyDown}\n >\n {cells.map(cell => {\n const disabled = isDateUnselectable(cell.date);\n const isSelected = !!value && isSameDay(value, cell.date);\n const isFocused = isSameDay(cell.date, focusedDate);\n const otherMonth = !cell.inCurrentMonth;\n const cellClass = prefixedClassNames(\n classPrefix,\n 'dateinput-cell',\n {\n 'is-selected': isSelected,\n 'is-today': cell.isToday,\n 'is-disabled': disabled,\n 'is-other-month': otherMonth,\n }\n );\n const display = !otherMonth || nearbyMonthDays;\n return (\n <button\n key={cell.date.toISOString()}\n type=\"button\"\n role=\"gridcell\"\n tabIndex={isFocused ? 0 : -1}\n aria-selected={isSelected}\n aria-disabled={disabled}\n aria-current={cell.isToday ? 'date' : undefined}\n data-focused={isFocused ? 'true' : undefined}\n disabled={disabled || !display}\n className={cellClass}\n onClick={() => {\n if (disabled) return;\n onFocusedDateChange(cell.date);\n onSelect(cell.date);\n }}\n style={!display ? { visibility: 'hidden' } : undefined}\n >\n {cell.date.getDate()}\n </button>\n );\n })}\n </div>\n </>\n ) : (\n <div\n ref={yearGridRef}\n className={yearsGridClass}\n role=\"listbox\"\n aria-label={monthLabel}\n onKeyDown={e => {\n if (e.key === 'Escape') {\n e.preventDefault();\n setView('days');\n }\n }}\n >\n {yearList.map(year => {\n const isFocused = year === focusedYear;\n const isToday = year === todayYear;\n const cellCls = prefixedClassNames(\n classPrefix,\n 'dateinput-year-cell',\n {\n 'is-selected': isFocused,\n 'is-today': isToday,\n }\n );\n return (\n <button\n key={year}\n type=\"button\"\n role=\"option\"\n aria-selected={isFocused}\n data-focused-year={isFocused ? 'true' : undefined}\n tabIndex={isFocused ? 0 : -1}\n className={cellCls}\n onClick={() => handleYearSelect(year)}\n >\n {year}\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\nCalendar.displayName = 'Calendar';\n\nexport default Calendar;\n","import * as React from 'react';\nimport { useEffect } from 'react';\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\ninterface UseFocusTrapOptions {\n initialFocusRef?: React.RefObject<HTMLElement>;\n restoreFocus?: boolean;\n}\n\nexport function useFocusTrap(\n containerRef: React.RefObject<HTMLElement>,\n active: boolean,\n options: UseFocusTrapOptions = {}\n): void {\n const { initialFocusRef, restoreFocus = true } = options;\n\n useEffect(() => {\n if (!active) return undefined;\n const container = containerRef.current;\n if (!container) return undefined;\n const previouslyFocused =\n typeof document !== 'undefined'\n ? (document.activeElement as HTMLElement | null)\n : null;\n\n const focusInitial = () => {\n if (initialFocusRef?.current) {\n initialFocusRef.current.focus();\n return;\n }\n const focusables = Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)\n ).filter(el => !el.hasAttribute('disabled'));\n const target = focusables[0] ?? container;\n target.focus();\n };\n focusInitial();\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Tab') return;\n const focusables = Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)\n ).filter(el => !el.hasAttribute('disabled'));\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const activeEl = document.activeElement as HTMLElement | null;\n if (e.shiftKey && activeEl === first) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && activeEl === last) {\n e.preventDefault();\n first.focus();\n }\n };\n\n container.addEventListener('keydown', handleKeyDown);\n return () => {\n container.removeEventListener('keydown', handleKeyDown);\n if (restoreFocus && previouslyFocused?.focus) {\n previouslyFocused.focus();\n }\n };\n }, [active, containerRef, initialFocusRef, restoreFocus]);\n}\n","import React, {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { classNames, usePrefixedClassNames } from '../../helpers/classNames';\nimport { useFocusTrap } from './useFocusTrap';\nimport { PickerPosition } from './pickerTypes';\n\nexport interface PickerPopoverProps {\n isOpen: boolean;\n onClose: () => void;\n anchorRef: React.RefObject<HTMLElement | null>;\n children: React.ReactNode;\n position?: PickerPosition;\n appendToBody?: boolean;\n className?: string;\n trapFocus?: boolean;\n closeOnClickOutside?: boolean;\n closeOnEscape?: boolean;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n role?: 'dialog' | 'group';\n id?: string;\n}\n\nconst isBrowser = typeof window !== 'undefined';\n\ninterface ResolvedPosition {\n position: Exclude<PickerPosition, 'auto'>;\n top?: number;\n left?: number;\n}\n\nfunction resolveAuto(\n rect: DOMRect,\n panelWidth: number,\n panelHeight: number\n): Exclude<PickerPosition, 'auto'> {\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const fitsBelow = rect.bottom + panelHeight + 4 <= vh;\n const fitsRight = rect.left + panelWidth <= vw;\n if (fitsBelow && fitsRight) return 'bottom-left';\n if (fitsBelow && !fitsRight) return 'bottom-right';\n if (!fitsBelow && fitsRight) return 'top-left';\n return 'top-right';\n}\n\nexport const PickerPopover: React.FC<PickerPopoverProps> = ({\n isOpen,\n onClose,\n anchorRef,\n children,\n position = 'bottom-left',\n appendToBody = false,\n className,\n trapFocus = true,\n closeOnClickOutside = true,\n closeOnEscape = true,\n ariaLabel,\n ariaLabelledBy,\n role = 'dialog',\n id,\n}) => {\n const panelRef = useRef<HTMLDivElement>(null);\n const [resolved, setResolved] = useState<ResolvedPosition>({\n position: position === 'auto' ? 'bottom-left' : position,\n });\n\n const updatePosition = useCallback(() => {\n if (!isBrowser || !isOpen) return;\n const anchor = anchorRef.current;\n const panel = panelRef.current;\n if (!anchor || !panel) return;\n const rect = anchor.getBoundingClientRect();\n const panelRect = panel.getBoundingClientRect();\n const w = panelRect.width;\n const h = panelRect.height;\n const finalPos = position === 'auto' ? resolveAuto(rect, w, h) : position;\n if (!appendToBody) {\n setResolved({ position: finalPos });\n return;\n }\n let top = 0;\n let left = 0;\n switch (finalPos) {\n case 'bottom-left':\n top = rect.bottom + 4;\n left = rect.left;\n break;\n case 'bottom-right':\n top = rect.bottom + 4;\n left = rect.right - w;\n break;\n case 'top-left':\n top = rect.top - h - 4;\n left = rect.left;\n break;\n case 'top-right':\n top = rect.top - h - 4;\n left = rect.right - w;\n break;\n }\n setResolved({ position: finalPos, top, left });\n }, [anchorRef, appendToBody, isOpen, position]);\n\n useLayoutEffect(() => {\n if (!isOpen) return undefined;\n updatePosition();\n if (!isBrowser) return undefined;\n const handler = () => updatePosition();\n window.addEventListener('resize', handler, { passive: true });\n window.addEventListener('scroll', handler, {\n passive: true,\n capture: true,\n });\n return () => {\n window.removeEventListener('resize', handler);\n window.removeEventListener('scroll', handler, { capture: true });\n };\n }, [isOpen, updatePosition]);\n\n useEffect(() => {\n if (!isOpen || !closeOnClickOutside || !isBrowser) return undefined;\n // Listen on `pointerdown` (rather than `mousedown`) so touch starts\n // outside the popover dismiss it on mobile — including swipe-from-outside\n // gestures, where the synthetic mouse event would otherwise lag a few\n // hundred ms behind the actual touch.\n const handler = (e: PointerEvent) => {\n const path = e.composedPath();\n if (panelRef.current && path.includes(panelRef.current)) return;\n if (anchorRef.current && path.includes(anchorRef.current)) return;\n onClose();\n };\n document.addEventListener('pointerdown', handler);\n return () => document.removeEventListener('pointerdown', handler);\n }, [isOpen, closeOnClickOutside, anchorRef, onClose]);\n\n useEffect(() => {\n if (!isOpen || !closeOnEscape || !isBrowser) return undefined;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n onClose();\n }\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [isOpen, closeOnEscape, onClose]);\n\n useFocusTrap(panelRef, isOpen && trapFocus);\n\n const panelClass = usePrefixedClassNames('picker-popover', {\n 'is-active': isOpen,\n [`is-${resolved.position}`]: true,\n 'is-portal': appendToBody,\n });\n\n if (!isOpen) return null;\n\n const style: React.CSSProperties = appendToBody\n ? {\n position: 'fixed',\n top: resolved.top,\n left: resolved.left,\n }\n : {};\n\n const panel = (\n <div\n ref={panelRef}\n id={id}\n role={role}\n aria-modal={role === 'dialog' ? 'false' : undefined}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n tabIndex={-1}\n className={classNames(panelClass, className)}\n style={style}\n >\n {children}\n </div>\n );\n\n if (appendToBody && isBrowser) {\n return createPortal(panel, document.body);\n }\n return panel;\n};\n\nPickerPopover.displayName = 'PickerPopover';\n\nexport default PickerPopover;\n","import { useEffect, useState } from 'react';\n\nexport interface NativeMobileDetect {\n isCoarsePointer: boolean;\n isSmallViewport: boolean;\n shouldUseNative: boolean;\n}\n\nexport interface UseNativeMobilePickerOptions {\n smallViewportMaxPx?: number;\n /** When set, overrides detection. */\n force?: boolean;\n}\n\nexport function useNativeMobilePicker(\n options: UseNativeMobilePickerOptions = {}\n): NativeMobileDetect {\n const { smallViewportMaxPx = 768, force } = options;\n const [state, setState] = useState<NativeMobileDetect>({\n isCoarsePointer: false,\n isSmallViewport: false,\n shouldUseNative: force === true,\n });\n\n useEffect(() => {\n const isBrowser =\n typeof window !== 'undefined' && typeof window.matchMedia === 'function';\n if (!isBrowser) return undefined;\n const coarse = window.matchMedia('(pointer: coarse)');\n const small = window.matchMedia(`(max-width: ${smallViewportMaxPx}px)`);\n\n const update = () => {\n const isCoarsePointer = coarse.matches;\n const isSmallViewport = small.matches;\n const shouldUseNative =\n force === true\n ? true\n : force === false\n ? false\n : isCoarsePointer && isSmallViewport;\n setState({ isCoarsePointer, isSmallViewport, shouldUseNative });\n };\n\n update();\n const subscribe = (mql: MediaQueryList, fn: () => void) => {\n if (mql.addEventListener) {\n mql.addEventListener('change', fn);\n return () => mql.removeEventListener('change', fn);\n }\n // Older Safari fallback\n mql.addListener(fn);\n return () => mql.removeListener(fn);\n };\n const unsubCoarse = subscribe(coarse, update);\n const unsubSmall = subscribe(small, update);\n return () => {\n unsubCoarse();\n unsubSmall();\n };\n }, [smallViewportMaxPx, force]);\n\n return state;\n}\n","/**\n * Segment-map utility for manual keyboard entry on a date / time picker input.\n * Given a token-format string like `'YYYY-MM-DD'`, `'HH:mm:ss'`, `'hh:mm A'`,\n * or a combined `'YYYY-MM-DD HH:mm'`, we compute the character ranges of each\n * editable segment in the formatted output, plus arithmetic helpers\n * (increment / digit-set) for each kind.\n *\n * Variable-width tokens (`Y`, `YYY`, `M`, `D`, `H`, `h`, `m`, `s`) cause the\n * renderer to emit output of unpredictable width depending on value, which\n * would shift segment boundaries between renders and break the selection.\n * `buildSegmentMap` returns `null` for any format containing those, signalling\n * the caller to fall back to free-form text entry.\n */\n\nimport { addYears } from './dateUtils';\n\nexport type SegmentKind =\n | 'year'\n | 'month'\n | 'day'\n | 'hours'\n | 'minutes'\n | 'seconds'\n | 'ampm'\n | 'literal';\n\nexport interface Segment {\n kind: SegmentKind;\n /** Source token (e.g., `'HH'`) for editable segments; literal text for `'literal'`. */\n token: string;\n /** Inclusive char index into the formatted-string output. */\n start: number;\n /** Exclusive char index. */\n end: number;\n /** Populated only when `kind === 'hours'`. */\n hourFormat?: '12' | '24';\n}\n\nexport interface SegmentMap {\n segments: Segment[];\n /** Indices of non-literal segments, left to right. */\n editable: number[];\n}\n\n// Match longest tokens first so `HH` doesn't collapse to two `H`s and `YYYY`\n// doesn't collapse to `YY` + `YY`. The single-char and odd-width variants\n// (`Y`, `YYY`, `M`, `D`, `H`, `h`, `m`, `s`) are matched only so they can be\n// explicitly rejected below — otherwise a format like `'YYY-MM'` would\n// silently mis-tokenize as `YY` + a stray `Y`.\nconst TOKEN_REGEX = /YYYY|YYY|YY|Y|MM|M|DD|D|HH|hh|mm|ss|H|h|m|s|A|a/g;\n\n// Fixed-width tokens render the same number of chars on every value. All are 2\n// wide except the 4-digit year.\nconst tokenWidth = (token: string): number => (token === 'YYYY' ? 4 : 2);\n\nconst KIND_BY_TOKEN: Record<string, SegmentKind> = {\n YYYY: 'year',\n YY: 'year',\n MM: 'month',\n DD: 'day',\n HH: 'hours',\n hh: 'hours',\n mm: 'minutes',\n ss: 'seconds',\n A: 'ampm',\n a: 'ampm',\n};\n\n/**\n * Walk a token-format string and produce a {@link SegmentMap}, or `null` if\n * the format contains any variable-width tokens (`H`, `h`, `m`, `s`) — the\n * caller should treat that case as \"segment mode unsupported, use the input's\n * free-form text-entry fallback\".\n */\nexport function buildSegmentMap(format: string): SegmentMap | null {\n const segments: Segment[] = [];\n let cursor = 0;\n let renderedPos = 0;\n // Reset the regex's lastIndex from any previous use (it's a /g regex).\n TOKEN_REGEX.lastIndex = 0;\n let match: RegExpExecArray | null;\n while ((match = TOKEN_REGEX.exec(format)) !== null) {\n const token = match[0];\n\n // Reject variable / odd-width tokens — they render an unpredictable number\n // of characters, which would break fixed segment boundaries.\n if (\n token === 'H' ||\n token === 'h' ||\n token === 'm' ||\n token === 's' ||\n token === 'M' ||\n token === 'D' ||\n token === 'Y' ||\n token === 'YYY'\n ) {\n return null;\n }\n\n // Capture any literal text between the previous cursor and this match.\n if (match.index > cursor) {\n const literal = format.slice(cursor, match.index);\n segments.push({\n kind: 'literal',\n token: literal,\n start: renderedPos,\n end: renderedPos + literal.length,\n });\n renderedPos += literal.length;\n }\n\n const kind = KIND_BY_TOKEN[token];\n const width = tokenWidth(token);\n const seg: Segment = {\n kind,\n token,\n start: renderedPos,\n end: renderedPos + width,\n };\n if (kind === 'hours') seg.hourFormat = token === 'hh' ? '12' : '24';\n segments.push(seg);\n\n renderedPos += width;\n cursor = match.index + token.length;\n }\n\n // Trailing literal after the final token.\n if (cursor < format.length) {\n const literal = format.slice(cursor);\n segments.push({\n kind: 'literal',\n token: literal,\n start: renderedPos,\n end: renderedPos + literal.length,\n });\n }\n\n const editable: number[] = [];\n for (let i = 0; i < segments.length; i++) {\n if (segments[i].kind !== 'literal') editable.push(i);\n }\n // Defensive: a format with no editable token is not segment-editable.\n if (editable.length === 0) return null;\n return { segments, editable };\n}\n\n// ---------------------------------------------------------------------------\n// Arithmetic helpers\n// ---------------------------------------------------------------------------\n\nconst wrap = (n: number, max: number): number => ((n % max) + max) % max;\nconst clamp = (n: number, min: number, max: number): number =>\n Math.max(min, Math.min(max, n));\n\n/** Number of days in the month of `d` (handles leap Februarys). */\nconst daysInMonth = (d: Date): number =>\n new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n\n/**\n * Returns a new Date with the given segment incremented (`delta` = +1 or -1).\n * Wraps at segment boundaries: year is unbounded, month 0↔11 (in place, no\n * year roll), day within the current month's length, hours-24 0↔23, hours-12\n * 1↔12, minutes/seconds 0↔59, am/pm toggles. Day is re-clamped after a\n * month/year change (Jan 31 → Feb 28/29). `isPm` is the *current* meridiem\n * when editing a 12h hour segment so we preserve it across the increment;\n * date segments ignore it.\n */\nexport function incrementSegmentValue(\n segment: Segment,\n currentDate: Date,\n delta: number,\n isPm: boolean\n): Date {\n const next = new Date(currentDate);\n switch (segment.kind) {\n case 'year':\n // Unbounded ±1; addYears clamps Feb 29 → Feb 28 on non-leap targets.\n return addYears(next, delta);\n case 'month': {\n // In-place wrap Jan↔Dec without rolling the year, then clamp the day to\n // the new month's length (e.g. Jan 31 → Feb → day 28/29).\n const day = next.getDate();\n const m0 = wrap(next.getMonth() + delta, 12);\n next.setDate(1);\n next.setMonth(m0);\n next.setDate(Math.min(day, daysInMonth(next)));\n return next;\n }\n case 'day': {\n // Wrap within the current month's day count.\n const dim = daysInMonth(next);\n next.setDate(wrap(next.getDate() - 1 + delta, dim) + 1);\n return next;\n }\n case 'hours': {\n if (segment.hourFormat === '12') {\n const h = next.getHours();\n const displayed = h % 12 === 0 ? 12 : h % 12; // 1..12\n // Move within 1..12 and preserve the current AM/PM.\n const nextDisplayed = wrap(displayed - 1 + delta, 12) + 1;\n const next24 = isPm ? (nextDisplayed % 12) + 12 : nextDisplayed % 12;\n next.setHours(next24);\n } else {\n next.setHours(wrap(next.getHours() + delta, 24));\n }\n return next;\n }\n case 'minutes':\n next.setMinutes(wrap(next.getMinutes() + delta, 60));\n return next;\n case 'seconds':\n next.setSeconds(wrap(next.getSeconds() + delta, 60));\n return next;\n case 'ampm':\n // Toggle by shifting 12 hours in either direction.\n next.setHours((next.getHours() + 12) % 24);\n return next;\n default:\n return next;\n }\n}\n\n/**\n * Apply a buffered string of typed digits to the active segment. Returns the\n * updated Date plus an `advance` flag — `true` when the buffer is full (its\n * token width) or when the first digit alone forecloses any valid multi-digit\n * completion (e.g., first digit `3` for hours-24 since 30+ is out of range, or\n * `2` for month since there is no month 20+).\n *\n * Special cases: a leading `'0'` is held without committing for hours-12,\n * month, and day (00 isn't a valid display value for any of them) — the buffer\n * must reach `'0X'` first. Month/day writes clamp to range and re-clamp the\n * day to the month's length; year writes re-clamp the day across leap-year\n * boundaries.\n */\nexport function setSegmentValue(\n segment: Segment,\n currentDate: Date,\n rawDigits: string,\n isPm: boolean\n): { date: Date; advance: boolean } {\n if (rawDigits.length === 0) return { date: currentDate, advance: false };\n const value = parseInt(rawDigits, 10);\n if (Number.isNaN(value)) return { date: currentDate, advance: false };\n const next = new Date(currentDate);\n switch (segment.kind) {\n case 'year': {\n // YYYY buffers 4 digits; YY buffers 2 (mapped into the 2000s).\n const full = segment.token === 'YYYY';\n const maxLen = full ? 4 : 2;\n const yr = full ? value : 2000 + (value % 100);\n // Set day to 1 before changing the year so a Feb-29 source doesn't roll\n // into March on a non-leap target; then restore the clamped day.\n const day = next.getDate();\n next.setDate(1);\n next.setFullYear(yr);\n next.setDate(Math.min(day, daysInMonth(next)));\n return { date: next, advance: rawDigits.length >= maxLen };\n }\n case 'month': {\n if (rawDigits === '0') {\n // Hold: 00 is invalid; wait for the second digit (01..09).\n return { date: currentDate, advance: false };\n }\n const clamped = clamp(value, 1, 12);\n const day = next.getDate();\n next.setDate(1);\n next.setMonth(clamped - 1);\n next.setDate(Math.min(day, daysInMonth(next)));\n // Advance when buffer is full, or first digit >=2 (no month 20+). First\n // digit 1 still waits for 10/11/12.\n const advance = rawDigits.length >= 2 || value >= 2;\n return { date: next, advance };\n }\n case 'day': {\n if (rawDigits === '0') {\n // Hold: 00 is invalid; wait for the second digit (01..09).\n return { date: currentDate, advance: false };\n }\n const clamped = clamp(value, 1, daysInMonth(next));\n next.setDate(clamped);\n // Advance when buffer is full, or first digit >=4 (no day 40+). First\n // digit 3 still waits for 30/31.\n const advance = rawDigits.length >= 2 || value >= 4;\n return { date: next, advance };\n }\n case 'hours': {\n if (segment.hourFormat === '12') {\n if (rawDigits === '0') {\n // Don't commit yet; wait for the second digit (01..09 are valid).\n return { date: currentDate, advance: false };\n }\n const clamped = clamp(value, 1, 12);\n const h24 = isPm ? (clamped % 12) + 12 : clamped % 12;\n next.setHours(h24);\n // Advance when the buffer is full, or when no valid 2-digit\n // completion starting with this digit exists. For 12h: only 0 and 1\n // can be the first of a 2-digit value (giving 01..09 and 10..12);\n // any other first digit completes the segment.\n const advance = rawDigits.length >= 2 || value >= 2;\n return { date: next, advance };\n }\n // 24h: valid range 0..23.\n const clamped = clamp(value, 0, 23);\n next.setHours(clamped);\n // Advance when buffer is full, or when first digit is 3..9 (since\n // 30..99 are all out of range). First digits 0, 1, 2 can still accept\n // a second digit.\n const advance = rawDigits.length >= 2 || value >= 3;\n return { date: next, advance };\n }\n case 'minutes': {\n const clamped = clamp(value, 0, 59);\n next.setMinutes(clamped);\n // Advance when buffer full, or first digit 6..9 (can't form 60..99).\n const advance = rawDigits.length >= 2 || value >= 6;\n return { date: next, advance };\n }\n case 'seconds': {\n const clamped = clamp(value, 0, 59);\n next.setSeconds(clamped);\n const advance = rawDigits.length >= 2 || value >= 6;\n return { date: next, advance };\n }\n default:\n return { date: currentDate, advance: false };\n }\n}\n\n/** Force the meridiem of `currentDate` to AM (isPm=false) or PM (true). */\nexport function setAmPm(currentDate: Date, isPm: boolean): Date {\n const next = new Date(currentDate);\n const h = next.getHours();\n if (isPm && h < 12) next.setHours(h + 12);\n if (!isPm && h >= 12) next.setHours(h - 12);\n return next;\n}\n\n/** Map a caret position into the index of the segment that contains it. */\nexport function segmentIndexAtCaret(\n map: SegmentMap,\n caret: number\n): number | null {\n // Prefer an editable segment that strictly contains the caret; otherwise\n // the nearest editable segment by char distance.\n for (const idx of map.editable) {\n const s = map.segments[idx];\n if (caret >= s.start && caret <= s.end) return idx;\n }\n let bestIdx = map.editable[0] ?? null;\n let bestDist = Infinity;\n for (const idx of map.editable) {\n const s = map.segments[idx];\n const dist = Math.min(Math.abs(caret - s.start), Math.abs(caret - s.end));\n if (dist < bestDist) {\n bestDist = dist;\n bestIdx = idx;\n }\n }\n return bestIdx;\n}\n","import React, {\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { DateFormatOption } from './formatters';\nimport { isWithin } from './dateUtils';\nimport {\n buildSegmentMap,\n incrementSegmentValue,\n setSegmentValue,\n setAmPm,\n segmentIndexAtCaret,\n SegmentMap,\n} from './segmentMap';\n\n/**\n * Single-character literals that, when typed, jump the caret to the next\n * editable segment — the slash / colon / dash / dot / space separators that\n * appear between date and time tokens. Lets a user type `12/25/2026` or\n * `13:45` straight through, skipping over the format's punctuation.\n */\nconst SEPARATOR_RE = /[/:\\-.\\s]/;\n\nexport interface UseSegmentedEntryParams {\n /** Resolved format actually used to render (the host's default format). */\n format: DateFormatOption;\n /** Current canonical value (controlled or internal). */\n value: Date | null;\n /** Commit a new Date through the host's onChange / internal pipeline. */\n commitValue: (next: Date | null) => void;\n /** Host formatter: formatDate | formatTime | formatDateTime. */\n formatFn: (\n d: Date,\n fmt: DateFormatOption | undefined,\n locale?: string\n ) => string;\n /** Host parser used by the free-form fallback (parseDate / parseTime / custom). */\n tryParse: (s: string) => Date | null;\n /** Host's displayed-text state and setter (the hook drives it during edits). */\n text: string;\n setText: (s: string) => void;\n /**\n * Seed for an empty value when the user starts typing: Time → today at noon,\n * Date → today at 00:00, DateTime → now. Should be referentially stable.\n */\n makeBaseDate: () => Date;\n locale?: string;\n min?: Date;\n max?: Date;\n /**\n * Host-supplied blocking predicate (composed from shouldDisableDate /\n * unselectableDates / unselectableTimes). Checked alongside min/max on\n * every manual-entry commit; return true to reject the candidate value.\n */\n isBlocked?: (d: Date) => boolean;\n disabled?: boolean;\n readOnly?: boolean;\n /** Allow segmented typing. When false, segment mode never engages. */\n editable?: boolean;\n /** Whether a popover exists; gates open-on-focus / click / ArrowDown. */\n popover?: boolean;\n openOnFocus?: boolean;\n closeOnSelect?: boolean;\n isOpen: boolean;\n setOpen: (next: boolean) => void;\n inputRef: React.RefObject<HTMLInputElement | null>;\n containerRef: React.RefObject<HTMLElement | null>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onClick?: React.MouseEventHandler<HTMLInputElement>;\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n}\n\nexport interface UseSegmentedEntryResult {\n segmentMap: SegmentMap | null;\n activeSegmentIdx: number | null;\n /** True when segment typing is available (map + editable + not disabled/readOnly). */\n segmentEditable: boolean;\n /** True when a segment is actively selected. */\n inSegmentMode: boolean;\n /** Spread onto the combobox `<input>`. */\n inputHandlers: {\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n onFocus: React.FocusEventHandler<HTMLInputElement>;\n onClick: React.MouseEventHandler<HTMLInputElement>;\n onKeyDown: React.KeyboardEventHandler<HTMLInputElement>;\n onBlur: React.FocusEventHandler<HTMLInputElement>;\n };\n}\n\n/**\n * Segmented manual keyboard entry for a date / time picker input. Computes a\n * segment map from the token format, tracks the active segment, and returns\n * the full set of `<input>` event handlers — segment-mutating keys (arrows,\n * digits, AM/PM, separators) are handled here, while popover open/close and\n * free-form parse-on-blur/Enter are driven through the host-supplied\n * `setOpen` / `tryParse` / `commitValue` callbacks. When the format is an\n * `Intl` options object or contains variable-width tokens, the segment map is\n * null and the input transparently falls back to free-form text entry.\n */\nexport function useSegmentedEntry(\n params: UseSegmentedEntryParams\n): UseSegmentedEntryResult {\n const {\n format,\n value,\n commitValue,\n formatFn,\n tryParse,\n text,\n setText,\n makeBaseDate,\n locale,\n min,\n max,\n isBlocked,\n disabled,\n readOnly,\n editable = true,\n popover = true,\n openOnFocus = true,\n closeOnSelect = false,\n isOpen,\n setOpen,\n inputRef,\n containerRef,\n onFocus,\n onClick,\n onKeyDown,\n onBlur,\n } = params;\n\n const segmentMap: SegmentMap | null = useMemo(\n () => (typeof format === 'string' ? buildSegmentMap(format) : null),\n [format]\n );\n const [activeSegmentIdx, setActiveSegmentIdx] = useState<number | null>(null);\n // Buffer of digits typed within the current segment, cleared on segment\n // change. Kept in a ref because key handlers read+update synchronously\n // within the same event tick.\n const typedDigitsRef = useRef<string>('');\n\n // Segment mode is unavailable for disabled / read-only / non-editable\n // pickers and for Intl-options / variable-width formats (segmentMap null).\n const segmentEditable = !!segmentMap && !!editable && !disabled && !readOnly;\n\n // The Date we edit when the user starts without a current value.\n const segmentBaseDate = useCallback(\n (): Date => value ?? makeBaseDate(),\n [value, makeBaseDate]\n );\n\n // Single gate for every manual-entry commit: min/max bounds plus the\n // host's blocking predicate.\n const isAllowed = useCallback(\n (d: Date) => isWithin(d, min, max) && !isBlocked?.(d),\n [min, max, isBlocked]\n );\n\n // Apply a segment-driven date update: commit through the host pipeline (so\n // onChange / controlled mode keep working) and re-render the text so the\n // active selection range stays valid.\n const applyDateFromSegment = useCallback(\n (next: Date) => {\n if (!isAllowed(next)) return;\n commitValue(next);\n setText(formatFn(next, format, locale));\n },\n [commitValue, isAllowed, formatFn, format, locale, setText]\n );\n\n // After every segment-driven change, restore the system selection on the\n // active segment's char range. useLayoutEffect runs synchronously before\n // paint so the user never sees a stray caret position. We deliberately do\n // NOT gate on document.activeElement: when openOnFocus is true the focus\n // trap moves focus into the popover, but setSelectionRange on an unfocused\n // input is well-defined and the selection becomes visible on refocus.\n useLayoutEffect(() => {\n if (activeSegmentIdx === null || !segmentMap || !inputRef.current) return;\n const seg = segmentMap.segments[activeSegmentIdx];\n if (!seg) return;\n try {\n inputRef.current.setSelectionRange(seg.start, seg.end);\n } catch {\n // Some read-only inputs reject setSelectionRange; harmless.\n }\n }, [activeSegmentIdx, segmentMap, text, inputRef]);\n\n const moveSegment = useCallback(\n (delta: 1 | -1) => {\n if (!segmentMap || activeSegmentIdx === null) return;\n const pos = segmentMap.editable.indexOf(activeSegmentIdx);\n if (pos < 0) return;\n const nextPos = Math.max(\n 0,\n Math.min(segmentMap.editable.length - 1, pos + delta)\n );\n const nextIdx = segmentMap.editable[nextPos];\n if (nextIdx !== activeSegmentIdx) {\n typedDigitsRef.current = '';\n setActiveSegmentIdx(nextIdx);\n }\n },\n [segmentMap, activeSegmentIdx]\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n // In segment mode the text is managed programmatically (every edit\n // re-formats from the canonical Date). Browser-issued input events\n // would otherwise clobber it. The free-form path runs only when\n // segment mode is inactive.\n if (activeSegmentIdx !== null && segmentEditable) return;\n setText(e.target.value);\n },\n [activeSegmentIdx, segmentEditable, setText]\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n // The popover opens on focus by default, and the focus trap moves focus\n // into the popover panel — that fires this blur even though the user is\n // still in the same picker. Only tear down segment state and re-parse\n // when focus has truly left the picker's container.\n const nextFocus = e.relatedTarget as HTMLElement | null;\n const stayingInPicker =\n nextFocus !== null &&\n containerRef.current !== null &&\n containerRef.current.contains(nextFocus);\n if (stayingInPicker) {\n onBlur?.(e);\n return;\n }\n setActiveSegmentIdx(null);\n typedDigitsRef.current = '';\n const parsed = tryParse(text);\n if (parsed && isAllowed(parsed)) {\n commitValue(parsed);\n } else {\n setText(value ? formatFn(value, format, locale) : '');\n }\n onBlur?.(e);\n },\n [\n containerRef,\n tryParse,\n text,\n isAllowed,\n commitValue,\n value,\n formatFn,\n format,\n locale,\n setText,\n onBlur,\n ]\n );\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n if (openOnFocus && popover && !disabled && !readOnly) setOpen(true);\n // Enter segment mode: prime an initial value (so editing works even when\n // empty), seed the text, and highlight the first editable segment.\n if (segmentEditable && segmentMap) {\n if (!value) {\n setText(formatFn(makeBaseDate(), format, locale));\n }\n typedDigitsRef.current = '';\n setActiveSegmentIdx(segmentMap.editable[0]);\n }\n onFocus?.(e);\n },\n [\n openOnFocus,\n popover,\n disabled,\n readOnly,\n setOpen,\n segmentEditable,\n segmentMap,\n value,\n makeBaseDate,\n formatFn,\n format,\n locale,\n setText,\n onFocus,\n ]\n );\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLInputElement>) => {\n // Clicking the field opens the popover only when `openOnFocus` is on —\n // a click is just a focus. With `openOnFocus={false}` (manual-entry\n // mode) the click positions the caret for typing and the popover is\n // opened explicitly via the right launcher button (or ArrowDown).\n if (openOnFocus && popover && !disabled && !readOnly) setOpen(true);\n if (segmentEditable && segmentMap && inputRef.current) {\n const caret = inputRef.current.selectionStart ?? 0;\n const idx = segmentIndexAtCaret(segmentMap, caret);\n if (idx !== null && idx !== activeSegmentIdx) {\n typedDigitsRef.current = '';\n setActiveSegmentIdx(idx);\n }\n }\n onClick?.(e);\n },\n [\n openOnFocus,\n popover,\n disabled,\n readOnly,\n setOpen,\n segmentEditable,\n segmentMap,\n inputRef,\n activeSegmentIdx,\n onClick,\n ]\n );\n\n const inSegmentMode =\n segmentEditable && segmentMap !== null && activeSegmentIdx !== null;\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Segment-mode key routing comes first. When segment mode isn't engaged\n // (not editable, no map, or no active segment — e.g. after a typed-text\n // fallback), unhandled keys fall through to the popover / free-form\n // handling below.\n if (inSegmentMode && segmentMap && activeSegmentIdx !== null) {\n const seg = segmentMap.segments[activeSegmentIdx];\n const base = segmentBaseDate();\n const isPm = base.getHours() >= 12;\n switch (e.key) {\n case 'ArrowUp':\n e.preventDefault();\n typedDigitsRef.current = '';\n applyDateFromSegment(incrementSegmentValue(seg, base, 1, isPm));\n return;\n case 'ArrowDown':\n e.preventDefault();\n typedDigitsRef.current = '';\n applyDateFromSegment(incrementSegmentValue(seg, base, -1, isPm));\n return;\n case 'ArrowRight':\n e.preventDefault();\n moveSegment(1);\n return;\n case 'ArrowLeft':\n e.preventDefault();\n moveSegment(-1);\n return;\n case 'Backspace':\n e.preventDefault();\n if (typedDigitsRef.current.length > 0) {\n typedDigitsRef.current = '';\n } else {\n moveSegment(-1);\n }\n return;\n case 'Escape':\n if (isOpen) {\n e.preventDefault();\n setOpen(false);\n }\n return;\n case 'Enter':\n e.preventDefault();\n if (closeOnSelect) setOpen(false);\n return;\n case 'Tab':\n setActiveSegmentIdx(null);\n typedDigitsRef.current = '';\n return;\n default:\n // AM/PM keys.\n if (seg.kind === 'ampm') {\n if (e.key === 'a' || e.key === 'A') {\n e.preventDefault();\n typedDigitsRef.current = '';\n applyDateFromSegment(setAmPm(base, false));\n moveSegment(1);\n return;\n }\n if (e.key === 'p' || e.key === 'P') {\n e.preventDefault();\n typedDigitsRef.current = '';\n applyDateFromSegment(setAmPm(base, true));\n moveSegment(1);\n return;\n }\n }\n // Typing a format separator (/, :, -, ., space) jumps to the next\n // segment, skipping over the literal punctuation.\n if (e.key.length === 1 && SEPARATOR_RE.test(e.key)) {\n e.preventDefault();\n typedDigitsRef.current = '';\n moveSegment(1);\n return;\n }\n // Digit entry for numeric segments.\n if (/^[0-9]$/.test(e.key) && seg.kind !== 'ampm') {\n e.preventDefault();\n const nextBuffer = typedDigitsRef.current + e.key;\n typedDigitsRef.current = nextBuffer;\n const { date, advance } = setSegmentValue(\n seg,\n base,\n nextBuffer,\n isPm\n );\n applyDateFromSegment(date);\n if (advance) {\n typedDigitsRef.current = '';\n moveSegment(1);\n }\n return;\n }\n }\n }\n // ----- free-form / popover key handling -----\n if (e.key === 'ArrowDown' && !isOpen && popover) {\n e.preventDefault();\n setOpen(true);\n return;\n }\n if (e.key === 'Escape' && isOpen) {\n e.preventDefault();\n setOpen(false);\n return;\n }\n if (e.key === 'Enter') {\n e.preventDefault();\n const parsed = tryParse(text);\n if (parsed && isAllowed(parsed)) {\n commitValue(parsed);\n if (closeOnSelect) setOpen(false);\n }\n }\n onKeyDown?.(e);\n },\n [\n inSegmentMode,\n segmentMap,\n activeSegmentIdx,\n segmentBaseDate,\n applyDateFromSegment,\n moveSegment,\n isOpen,\n setOpen,\n closeOnSelect,\n popover,\n tryParse,\n text,\n isAllowed,\n commitValue,\n onKeyDown,\n ]\n );\n\n return {\n segmentMap,\n activeSegmentIdx,\n segmentEditable,\n inSegmentMode,\n inputHandlers: {\n onChange: handleChange,\n onFocus: handleFocus,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onBlur: handleBlur,\n },\n };\n}\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport {\n PickerPosition,\n DayOfWeek,\n PickerLabels,\n mergeLabels,\n} from './_pickerInternals/pickerTypes';\nimport {\n formatDate,\n parseDate,\n DateFormatOption,\n DEFAULT_DATE_FORMAT,\n} from './_pickerInternals/formatters';\nimport { isWithin, clampDate, isSameDay } from './_pickerInternals/dateUtils';\nimport { Calendar } from './_pickerInternals/Calendar';\nimport { PickerPopover } from './_pickerInternals/PickerPopover';\nimport { useNativeMobilePicker } from './_pickerInternals/useNativeMobilePicker';\nimport { useSegmentedEntry } from './_pickerInternals/useSegmentedEntry';\nimport { Icon } from '../elements/Icon';\n\nconst toIsoDate = (d: Date): string =>\n `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;\n\nconst fromIsoDate = (s: string): Date | null => {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(s);\n if (!m) return null;\n return new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]));\n};\n\n/**\n * Props for the raw DateInput base. Use the higher-level `DateInput` for\n * Field/Control composition; `DateInputBase` is the input + popover only.\n *\n * @property {Date | null} [value] - Controlled selected date.\n * @property {Date | null} [defaultValue] - Initial date for uncontrolled usage.\n * @property {(d: Date | null) => void} [onChange] - Fired when the value changes.\n * @property {() => void} [onOpen] - Fired when the popover opens.\n * @property {() => void} [onClose] - Fired when the popover closes.\n * @property {Date} [min] - Earliest selectable date.\n * @property {Date} [max] - Latest selectable date.\n * @property {boolean} [disabled] - Disable the input.\n * @property {boolean} [readOnly] - Make the input read-only.\n * @property {string} [placeholder] - Placeholder text.\n * @property {DateFormatOption} [format] - Token format string or `Intl.DateTimeFormat` options. Default `'YYYY-MM-DD'`.\n * @property {(s: string) => Date | null} [parse] - Custom parser (use when `format` is `Intl.DateTimeFormatOptions`).\n * @property {string} [locale] - BCP-47 locale tag for day/month names.\n * @property {boolean} [inline] - Render the calendar inline (no popover).\n * @property {boolean | 'auto'} [mobileNative] - Use native `<input type=\"date\">` on coarse-pointer + small-viewport devices.\n * @property {boolean} [editable] - Allow segmented keyboard typing in the input (type the date directly, auto-advancing across segments). Default `true`.\n * @property {boolean} [popover] - Whether the calendar popover exists. `false` makes the field input-only (segmented typing with no popover). Default `true`.\n * @property {boolean} [openOnFocus] - Open the popover on focus. Default `true`.\n * @property {boolean} [closeOnSelect] - Close the popover after selection. Default `true`.\n * @property {PickerPosition} [position] - Popover anchor position.\n * @property {boolean} [appendToBody] - Render the popover into `document.body` via portal.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier.\n * @property {'small'|'medium'|'large'} [size] - Size variant.\n * @property {boolean} [isRounded] - Render the input with rounded corners.\n * @property {(d: Date) => boolean} [shouldDisableDate] - Predicate to disable specific dates. Blocked dates can't be selected in the calendar and are rejected by manual typing (segmented and free-form).\n * @property {Date[]} [unselectableDates] - Convenience array of disabled dates, matched by calendar day; also rejected by manual typing.\n * @property {DayOfWeek} [firstDayOfWeek] - Day the week starts on (0 = Sunday).\n * @property {string[]} [dayNames] - Override the 7 day-name labels.\n * @property {string[]} [monthNames] - Override the 12 month-name labels.\n * @property {boolean} [nearbyMonthDays] - Show dimmed dates from adjacent months. Default `true`.\n * @property {string} [iconLeftName] - Decorative left icon glyph for the wrapping Control (shown by default; set to '' to hide).\n * @property {boolean} [triggerIcon] - Show a clickable launcher button on the right that toggles the popover. Default `true`.\n * @property {string} [triggerIconName] - Glyph name for the right launcher button. Default `'chevron-down'`.\n */\nexport interface DateInputBaseProps\n extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'size'\n | 'color'\n | 'min'\n | 'max'\n | 'type'\n | 'popover'\n >,\n Omit<BulmaClassesProps, 'color'> {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (d: Date | null) => void;\n onOpen?: () => void;\n onClose?: () => void;\n min?: Date;\n max?: Date;\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n format?: DateFormatOption;\n parse?: (s: string) => Date | null;\n locale?: string;\n inline?: boolean;\n mobileNative?: boolean | 'auto';\n editable?: boolean;\n popover?: boolean;\n openOnFocus?: boolean;\n closeOnSelect?: boolean;\n position?: PickerPosition;\n appendToBody?: boolean;\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n size?: 'small' | 'medium' | 'large';\n isRounded?: boolean;\n shouldDisableDate?: (d: Date) => boolean;\n unselectableDates?: Date[];\n firstDayOfWeek?: DayOfWeek;\n dayNames?: string[];\n monthNames?: string[];\n nearbyMonthDays?: boolean;\n iconLeftName?: string;\n triggerIcon?: boolean;\n triggerIconName?: string;\n /** Optional translatable string overrides (ARIA labels, button text). */\n labels?: PickerLabels;\n}\n\n/**\n * Raw DateInput — input + popover calendar without Field/Control wrapping.\n * Use `DateInput` for the convenience wrapper.\n *\n * @function\n * @param {DateInputBaseProps} props\n * @returns {JSX.Element}\n */\nexport const DateInputBase = forwardRef<HTMLInputElement, DateInputBaseProps>(\n (props, ref) => {\n const {\n value: controlledValue,\n defaultValue,\n onChange,\n onOpen,\n onClose,\n min,\n max,\n disabled,\n readOnly,\n placeholder,\n format,\n parse,\n locale,\n inline = false,\n mobileNative = 'auto',\n editable = true,\n popover = true,\n openOnFocus = true,\n closeOnSelect = true,\n position = 'bottom-left',\n appendToBody = false,\n color,\n size,\n isRounded,\n shouldDisableDate,\n unselectableDates,\n firstDayOfWeek = 0,\n dayNames,\n monthNames,\n nearbyMonthDays = true,\n className,\n name,\n form,\n required,\n id,\n onFocus,\n onClick,\n onKeyDown,\n onBlur,\n iconLeftName: _iconLeftName,\n triggerIcon = true,\n triggerIconName = 'chevron-down',\n labels,\n ...rest\n } = props;\n\n const t = mergeLabels(labels);\n\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<Date | null>(\n defaultValue ?? null\n );\n const value = isControlled ? (controlledValue ?? null) : internalValue;\n\n const initialFocused = useMemo(\n () => clampDate(value ?? new Date(), min, max),\n // intentionally only on mount: keep focusedDate stable until value/open change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const [focusedDate, setFocusedDate] = useState<Date>(initialFocused);\n // Re-clamp focusedDate if min/max change after mount so the focused cell\n // never disappears outside the displayable range.\n useEffect(() => {\n setFocusedDate(prev => clampDate(prev, min, max));\n }, [min, max]);\n const [open, setOpenState] = useState(false);\n const [text, setText] = useState<string>(\n value ? formatDate(value, format, locale) : ''\n );\n\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const reactId = useId();\n const popoverId = id ? `${id}-popover` : `picker-${reactId}`;\n\n const { bulmaHelperClasses, rest: cleanRest } = useBulmaClasses(rest);\n\n const { shouldUseNative } = useNativeMobilePicker({\n force: mobileNative === 'auto' ? undefined : mobileNative,\n });\n const useNative = !inline && shouldUseNative;\n\n const inputClass = usePrefixedClassNames('input', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-rounded': isRounded,\n });\n const containerClass = usePrefixedClassNames('dateinput-container');\n const triggerClass = usePrefixedClassNames('dateinput-trigger');\n\n const setOpen = useCallback(\n (next: boolean) => {\n setOpenState(prev => {\n if (prev === next) return prev;\n if (next) onOpen?.();\n else onClose?.();\n return next;\n });\n },\n [onOpen, onClose]\n );\n\n // Sync displayed text with value when value changes externally.\n useEffect(() => {\n setText(value ? formatDate(value, format, locale) : '');\n }, [value, format, locale]);\n\n const commitValue = useCallback(\n (next: Date | null) => {\n if (!isControlled) setInternalValue(next);\n // Keep the calendar's focused cell tracking typed / parsed values.\n if (next) setFocusedDate(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const handleSelect = useCallback(\n (d: Date) => {\n if (!isWithin(d, min, max)) return;\n commitValue(d);\n setFocusedDate(d);\n if (closeOnSelect) setOpen(false);\n },\n [min, max, commitValue, closeOnSelect, setOpen]\n );\n\n const tryParse = useCallback(\n (s: string): Date | null => {\n const trimmed = s.trim();\n if (!trimmed) return null;\n const fmt = typeof format === 'string' ? format : undefined;\n return parse\n ? parse(trimmed)\n : parseDate(trimmed, fmt ?? DEFAULT_DATE_FORMAT, locale);\n },\n [parse, format, locale]\n );\n\n // The Date the user edits when starting without a current value (today at\n // midnight; the hook clamps to min/max on commit).\n const makeBaseDate = useCallback((): Date => {\n const d = new Date();\n d.setHours(0, 0, 0, 0);\n return d;\n }, []);\n\n const inputReadOnlyAttr = !!readOnly || !editable;\n const canOpen = !!popover && !disabled && !readOnly;\n\n // Blocking predicate for manual entry, matching the calendar's\n // disabled-cell logic (shouldDisableDate + unselectableDates by day).\n const isBlocked = useMemo(() => {\n if (!shouldDisableDate && !unselectableDates?.length) return undefined;\n return (d: Date) =>\n !!shouldDisableDate?.(d) ||\n !!unselectableDates?.some(u => isSameDay(u, d));\n }, [shouldDisableDate, unselectableDates]);\n\n const { inputHandlers } = useSegmentedEntry({\n format: format ?? DEFAULT_DATE_FORMAT,\n value,\n commitValue,\n formatFn: formatDate,\n tryParse,\n text,\n setText,\n makeBaseDate,\n locale,\n min,\n max,\n isBlocked,\n disabled,\n readOnly,\n editable,\n popover,\n openOnFocus,\n closeOnSelect,\n isOpen: open,\n setOpen,\n inputRef,\n containerRef,\n onFocus,\n onClick,\n onKeyDown,\n onBlur,\n });\n\n const handlePopoverClose = useCallback(() => setOpen(false), [setOpen]);\n\n const combinedRef = useCallback(\n (node: HTMLInputElement | null) => {\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n if (typeof ref === 'function') ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n },\n [ref]\n );\n\n // Native mobile path renders <input type=\"date\">.\n if (useNative) {\n return (\n <input\n {...cleanRest}\n ref={combinedRef}\n type=\"date\"\n className={classNames(inputClass, bulmaHelperClasses, className)}\n value={value ? toIsoDate(value) : ''}\n onChange={e => {\n const parsed = e.target.value ? fromIsoDate(e.target.value) : null;\n commitValue(parsed);\n }}\n min={min ? toIsoDate(min) : undefined}\n max={max ? toIsoDate(max) : undefined}\n disabled={disabled}\n readOnly={readOnly}\n placeholder={placeholder}\n name={name}\n form={form}\n required={required}\n id={id}\n />\n );\n }\n\n const calendar = (\n <Calendar\n value={value}\n focusedDate={focusedDate}\n onSelect={handleSelect}\n onFocusedDateChange={setFocusedDate}\n min={min}\n max={max}\n shouldDisableDate={shouldDisableDate}\n unselectableDates={unselectableDates}\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n dayNames={dayNames}\n monthNames={monthNames}\n nearbyMonthDays={nearbyMonthDays}\n color={color}\n size={size}\n id={popoverId}\n autoFocusCell={open}\n labels={labels}\n />\n );\n\n if (inline) {\n return (\n <div\n {...cleanRest}\n ref={containerRef}\n className={classNames(containerClass, bulmaHelperClasses, className)}\n >\n {calendar}\n {name && (\n <input\n type=\"hidden\"\n name={name}\n form={form}\n value={value ? toIsoDate(value) : ''}\n required={required}\n />\n )}\n </div>\n );\n }\n\n return (\n <div\n ref={containerRef}\n className={classNames(containerClass, bulmaHelperClasses, className)}\n {...cleanRest}\n >\n <input\n ref={combinedRef}\n type=\"text\"\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-controls={popoverId}\n autoComplete=\"off\"\n className={inputClass}\n value={text}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={inputReadOnlyAttr}\n name={name}\n form={form}\n required={required}\n id={id}\n {...inputHandlers}\n />\n {popover && triggerIcon && (\n <button\n type=\"button\"\n className={triggerClass}\n onClick={() => {\n if (canOpen) setOpen(!open);\n }}\n disabled={!canOpen}\n aria-label={t.chooseDate}\n aria-haspopup=\"dialog\"\n aria-controls={popoverId}\n aria-expanded={open}\n tabIndex={canOpen ? 0 : -1}\n >\n <Icon name={triggerIconName} size={size} />\n </button>\n )}\n {popover && (\n <PickerPopover\n isOpen={open}\n onClose={handlePopoverClose}\n anchorRef={containerRef}\n position={position}\n appendToBody={appendToBody}\n ariaLabel={t.chooseDate}\n id={popoverId}\n >\n {calendar}\n </PickerPopover>\n )}\n </div>\n );\n }\n);\n\nDateInputBase.displayName = 'DateInputBase';\n\nexport default DateInputBase;\n","import React, { forwardRef } from 'react';\nimport { usePrefixedClassNames } from '../helpers/classNames';\nimport { Field, FieldProps } from './Field';\nimport { Control, ControlBaseProps } from './Control';\nimport { DateInputBase, DateInputBaseProps } from './DateInputBase';\nimport { useInsideField, useInsideControl } from './FormContext';\n\n/**\n * Props for the DateInput convenience wrapper. Extends `DateInputBaseProps`\n * with Field-level (label, horizontal) and Control-level (icons, loading) props.\n *\n * @property {React.ReactNode} [label] - Field label.\n * @property {FieldProps['labelSize']} [labelSize] - Size for the label.\n * @property {FieldProps['labelProps']} [labelProps] - Props for the label element.\n * @property {boolean} [horizontal] - Render the field with horizontal layout.\n * @property {ControlBaseProps['iconLeft']} [iconLeft] - Icon props for the left icon.\n * @property {ControlBaseProps['iconRight']} [iconRight] - Icon props for the right icon.\n * @property {string} [iconRightName] - Shortcut for the right icon name.\n * @property {ControlBaseProps['iconLeftSize']} [iconLeftSize] - Shortcut for left icon size.\n * @property {ControlBaseProps['iconRightSize']} [iconRightSize] - Shortcut for right icon size.\n * @property {boolean} [hasIconsLeft] - Force the left icon container.\n * @property {boolean} [hasIconsRight] - Force the right icon container.\n * @property {boolean} [isLoading] - Show a loading indicator on the control.\n * @property {boolean} [isExpanded] - Expand the control to fill its container.\n * @property {ControlBaseProps['size']} [controlSize] - Size of the wrapping Control.\n * @property {React.ReactNode} [message] - Help/validation text below the input.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [messageColor] - Message color.\n * @property {string} [fieldClassName] - Additional CSS classes for the Field wrapper.\n * @property {string} [controlClassName] - Additional CSS classes for the Control wrapper.\n */\nexport interface DateInputProps extends DateInputBaseProps {\n label?: React.ReactNode;\n labelSize?: FieldProps['labelSize'];\n labelProps?: FieldProps['labelProps'];\n horizontal?: boolean;\n iconLeft?: ControlBaseProps['iconLeft'];\n iconRight?: ControlBaseProps['iconRight'];\n iconRightName?: string;\n iconLeftSize?: ControlBaseProps['iconLeftSize'];\n iconRightSize?: ControlBaseProps['iconRightSize'];\n hasIconsLeft?: boolean;\n hasIconsRight?: boolean;\n isLoading?: boolean;\n isExpanded?: boolean;\n controlSize?: ControlBaseProps['size'];\n message?: React.ReactNode;\n messageColor?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n fieldClassName?: string;\n controlClassName?: string;\n}\n\n/**\n * DateInput is a form input that opens a popover calendar for date selection.\n * Uses native `Date` and `Intl` only (no extra dependencies). Supports min/max\n * bounds, disabled-date predicates, custom formats, locale-aware day/month\n * names, an inline mode, and a native `<input type=\"date\">` fallback for touch\n * devices.\n *\n * @function\n * @param {DateInputProps} props - Props for the DateInput.\n * @returns {JSX.Element}\n *\n * @example\n * <DateInput label=\"Date of birth\" defaultValue={new Date(1990, 0, 1)} />\n *\n * @example\n * <DateInput\n * label=\"Booking\"\n * min={new Date()}\n * shouldDisableDate={d => d.getDay() === 0 || d.getDay() === 6}\n * />\n */\nexport const DateInput = forwardRef<HTMLInputElement, DateInputProps>(\n (\n {\n label,\n labelSize,\n labelProps,\n horizontal,\n iconLeft,\n iconRight,\n iconLeftName = 'calendar',\n iconRightName,\n iconLeftSize,\n iconRightSize,\n hasIconsLeft,\n hasIconsRight,\n isLoading,\n isExpanded,\n controlSize,\n message,\n messageColor,\n fieldClassName,\n controlClassName,\n ...baseProps\n },\n ref\n ) => {\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n\n // The right-side launcher is on by default; suppress it while the Control\n // shows its loading spinner (also on the right) unless explicitly set.\n let content: React.ReactNode = (\n <DateInputBase\n ref={ref}\n {...baseProps}\n triggerIcon={baseProps.triggerIcon ?? !isLoading}\n />\n );\n\n // Inline mode renders a bare calendar with no input, so the Control's\n // icon-left container has nothing to anchor to. Skip the Control wrap.\n if (!insideControl && !baseProps.inline) {\n content = (\n <Control\n iconLeft={iconLeft}\n iconRight={iconRight}\n iconLeftName={iconLeftName}\n iconRightName={iconRightName}\n iconLeftSize={iconLeftSize}\n iconRightSize={iconRightSize}\n hasIconsLeft={hasIconsLeft || !!iconLeftName}\n hasIconsRight={hasIconsRight}\n isLoading={isLoading}\n isExpanded={isExpanded}\n size={controlSize}\n className={controlClassName}\n >\n {content}\n </Control>\n );\n }\n\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n }\n);\n\nDateInput.displayName = 'DateInput';\n\nexport default DateInput;\n","/**\n * Tiny haptic blip used to signal each item tick on the time-wheel scroller.\n *\n * Implementation: feature-detect `navigator.vibrate()` and call it with a\n * 5ms duration. Supported on Android Chrome (since v30), Firefox Android,\n * and Samsung Internet. Silently no-ops elsewhere.\n *\n * iOS Safari does not expose `navigator.vibrate` and has no other web-\n * accessible haptic API as of May 2026. We previously shipped a fallback\n * that toggled a hidden `<input type=\"checkbox\" switch>` element via\n * `.click()` — that produced toggle haptics on iOS 17.4 through 26.4, but\n * Apple patched the loophole in iOS 26.5: haptics now only fire on\n * genuine, user-initiated taps on a visible switch, not on programmatic\n * invocation. There is no public WebKit ticket for the patch; it's\n * documented in the `tijnjh/ios-haptics` README and downstream community\n * write-ups. The Web Audio \"silent buffer\" trick unlocks audio playback\n * but never produced Taptic Engine output. PWAs added to the Home Screen\n * use the same WebKit and gain no extra haptic capability.\n *\n * If you need haptics on iOS, the only path today is wrapping the web view\n * in a native shell (Capacitor, react-native-webview) and bridging to\n * `UIImpactFeedbackGenerator`. Pure web cannot do it.\n */\nexport const tickHaptic = (): void => {\n if (\n typeof navigator !== 'undefined' &&\n typeof navigator.vibrate === 'function'\n ) {\n try {\n navigator.vibrate(5);\n } catch {\n // Some browsers throw on hidden documents — swallow.\n }\n }\n};\n","/**\n * Audio-tick fallback for platforms with no haptic API. iOS Safari has no\n * web-accessible Taptic path (see `./haptics.ts` for the full story), so the\n * closest UX substitute is a very short audible thunk played per item tick.\n *\n * Sound design — tuned to read as a body-felt impact, not an ear-felt beep:\n *\n * - Single triangle-wave oscillator at 160Hz, exponentially sweeping down to\n * 110Hz over ~30ms. The low fundamental matches the frequency band where\n * the Taptic Engine fires its UI pops (~150–200Hz); the downward sweep is\n * the single biggest contributor to the perception of a damped physical\n * impact (vs. a flat tone, which reads as a beep).\n *\n * - Triangle adds one odd harmonic over sine — just enough body to feel\n * \"soft\" without the buzz of square or sawtooth.\n *\n * - Quick 1ms attack to 0.08 gain; exponential decay to silence over ~30ms;\n * oscillator stops at +0.04s. Ramped envelope (no hard 0→1 jumps) avoids\n * the classic Web Audio speaker pop on attack/release.\n *\n * - Uses a single oscillator + envelope rather than an audio buffer /\n * decoded sample so there's no asset to ship and no `decodeAudioData`\n * round-trip.\n *\n * - iOS Safari requires a user gesture to *resume* a suspended\n * `AudioContext`. Call `unlockAudioTick()` from inside a touch / click\n * handler before the first `playAudioTick()`. After that single resume,\n * the context stays running and subsequent ticks play with no further\n * gesture needed.\n *\n * - Silent / Ring switch behaviour on iOS: with the side switch in silent\n * mode, this tick is suppressed (Web Audio respects the ringer). That\n * matches iOS native UX expectations — silent mode means silent UI.\n *\n * - On hardware with neither speakers nor an audio device, every call\n * silently no-ops.\n */\n\nlet audioCtx: AudioContext | null = null;\n\ninterface WindowWithWebkitAudio extends Window {\n // `AudioContext` lives on `typeof globalThis`, which a plain `Window` cast\n // drops — declare both the standard and the legacy webkit-prefixed ctor.\n AudioContext?: typeof AudioContext;\n webkitAudioContext?: typeof AudioContext;\n}\n\nconst getAudioContextCtor = (): typeof AudioContext | null => {\n if (typeof window === 'undefined') return null;\n const w = window as WindowWithWebkitAudio;\n return w.AudioContext ?? w.webkitAudioContext ?? null;\n};\n\nconst ensureAudioCtx = (): AudioContext | null => {\n if (audioCtx) return audioCtx;\n const Ctor = getAudioContextCtor();\n if (!Ctor) return null;\n try {\n audioCtx = new Ctor();\n return audioCtx;\n } catch {\n return null;\n }\n};\n\n/**\n * Call from inside a user-gesture handler (pointerdown, click, touchstart)\n * to resume the AudioContext on iOS Safari. Idempotent and cheap; safe to\n * call on every gesture. No-ops on platforms without Web Audio.\n */\nexport const unlockAudioTick = (): void => {\n const ctx = ensureAudioCtx();\n if (!ctx) return;\n if (ctx.state === 'suspended') {\n // Fire-and-forget: if the resume promise rejects (no gesture in\n // progress), the next call from a real gesture will succeed.\n void ctx.resume().catch(() => {});\n }\n};\n\n/**\n * Play a single short tick. No-op if Web Audio is unavailable or the\n * context hasn't been unlocked yet.\n */\nexport const playAudioTick = (): void => {\n const ctx = ensureAudioCtx();\n if (!ctx || ctx.state !== 'running') return;\n try {\n const now = ctx.currentTime;\n const osc = ctx.createOscillator();\n const gain = ctx.createGain();\n osc.type = 'triangle';\n // Pitch sweep: 160Hz → 110Hz over 30ms. The downward exponential ramp\n // is what makes this read as a damped impact rather than a flat beep.\n osc.frequency.setValueAtTime(160, now);\n osc.frequency.exponentialRampToValueAtTime(110, now + 0.03);\n // Envelope: 1ms attack to 0.08, exponential-style decay to near-zero\n // over 30ms. `exponentialRampToValueAtTime` requires a strictly\n // positive target — 0.0001 is inaudible and stops cleanly.\n gain.gain.setValueAtTime(0, now);\n gain.gain.linearRampToValueAtTime(0.08, now + 0.001);\n gain.gain.exponentialRampToValueAtTime(0.0001, now + 0.03);\n osc.connect(gain).connect(ctx.destination);\n osc.start(now);\n osc.stop(now + 0.04);\n } catch {\n // Connecting / starting an oscillator in an aborted context can throw;\n // best-effort, never propagate.\n }\n};\n\n/** Test-only hook to drop the singleton AudioContext. */\nexport const __resetAudioTickForTest = (): void => {\n if (audioCtx) {\n try {\n void audioCtx.close();\n } catch {\n // ignore\n }\n }\n audioCtx = null;\n};\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n classNames,\n prefixedClassNames,\n usePrefixedClassNames,\n} from '../../helpers/classNames';\nimport { useConfig } from '../../helpers/Config';\nimport { HourFormat, PickerLabels, mergeLabels } from './pickerTypes';\nimport { setTimeOfDay } from './dateUtils';\nimport { tickHaptic as fireTickHaptic } from './haptics';\nimport { playAudioTick, unlockAudioTick } from './audioTick';\n\nexport interface TimeWheelsValue {\n hours: number;\n minutes: number;\n seconds?: number;\n}\n\nexport interface TimeWheelsProps {\n value: TimeWheelsValue;\n onChange: (v: TimeWheelsValue) => void;\n hourFormat?: HourFormat;\n enableSeconds?: boolean;\n /** Step between visible values in the wheel. Default `1`. */\n incrementHours?: number;\n incrementMinutes?: number;\n incrementSeconds?: number;\n unselectableTimes?: (d: Date) => boolean;\n size?: 'small' | 'medium' | 'large';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n disabled?: boolean;\n className?: string;\n id?: string;\n labels?: PickerLabels;\n /** Number of items visible at once (must be odd). Default 5. */\n visibleCount?: number;\n /** Item height in px. Default 32. */\n itemHeight?: number;\n /**\n * Play a short audible tick on each item crossing. Useful as a fallback on\n * iOS Safari, where there is no web-accessible haptic API. Off by default\n * to avoid surprising users with sound; flip on for iOS-targeted UIs.\n */\n audioTick?: boolean;\n /**\n * Fired when the user presses Enter on a wheel column. The current value is\n * already committed (each wheel-tick calls onChange), so this typically just\n * needs to close the surrounding popover.\n */\n onCommit?: () => void;\n}\n\nconst wrap = (n: number, max: number): number => ((n % max) + max) % max;\n\n/**\n * Walk forward (or backward) from `start` in `step` steps until `test` returns\n * true or we've cycled all `max` candidates. Used to skip past unselectable\n * values without freezing the wheel.\n */\nfunction nextValid(\n start: number,\n step: number,\n max: number,\n test: (n: number) => boolean\n): number {\n let candidate = wrap(start, max);\n for (let i = 0; i < max; i++) {\n if (test(candidate)) return candidate;\n candidate = wrap(candidate + step, max);\n }\n return start;\n}\n\nconst pad2 = (n: number): string => String(n).padStart(2, '0');\n\ninterface WheelHandle {\n focus: () => void;\n /**\n * Begin a drag externally — used by the parent's empty-space forwarder so\n * the user can grab the wheel by touching anywhere in the wheels row, not\n * just on the column itself (matches iOS native picker behavior).\n *\n * The pointer must already be active (i.e., a real `pointerdown` is in\n * flight). We immediately capture the pointer on the wheel root so the\n * existing `onPointerMove` / `onPointerUp` handlers will fire here.\n */\n startDrag: (pointerId: number, clientY: number) => void;\n}\n\ninterface WheelProps<T> {\n values: T[];\n index: number;\n onChange: (nextIndex: number) => void;\n formatLabel: (v: T) => string;\n formatAriaText?: (v: T) => string;\n ariaLabel: string;\n visibleCount: number;\n itemHeight: number;\n disabled?: boolean;\n size?: 'small' | 'medium' | 'large';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n onFocusPrev?: () => void;\n onFocusNext?: () => void;\n /** Fired when Enter is pressed (current value is already committed live). */\n onCommit?: () => void;\n /**\n * Whether the wheel wraps at the edges. When true, scrolling past the last\n * value rolls back to the first (and vice versa) and neighbouring values\n * are visible above the first / below the last item.\n */\n wrap?: boolean;\n /**\n * Optional predicate. Items for which it returns `true` are rendered with\n * the `disabled` attribute (and visually dimmed via the `:disabled` SCSS\n * rule), giving users a clear cue that the value is blocked. Keyboard /\n * wheel navigation may still pass over these positions, but `onChange`\n * callers (`TimeWheels`) skip them via `nextValid`.\n */\n disabledFor?: (v: T) => boolean;\n /**\n * Play an audible tick on each item crossing. Used as the iOS substitute\n * for haptic feedback; threaded from `TimeWheels.audioTick`.\n */\n audioTick?: boolean;\n}\n\nconst WheelInner = <T,>(\n {\n values,\n index,\n onChange,\n formatLabel,\n formatAriaText,\n ariaLabel,\n visibleCount,\n itemHeight,\n disabled,\n size,\n color,\n onFocusPrev,\n onFocusNext,\n onCommit,\n wrap = false,\n disabledFor,\n audioTick = false,\n }: WheelProps<T>,\n ref: React.Ref<WheelHandle>\n) => {\n const { classPrefix } = useConfig();\n const N = values.length;\n const half = Math.floor(visibleCount / 2);\n const containerHeight = visibleCount * itemHeight;\n // Buffer around the visible window so adjacent items animate in/out smoothly.\n const BUFFER = half + 2;\n\n // Continuous wheel position in units of items. Math.round(position) is the\n // \"active\" virtual index; the fractional part is the drag/momentum offset\n // within an item slot. Using a single float (rather than virtualIdx +\n // dragOffset) keeps drag and tick-update in lockstep so items move with the\n // finger without a 40px overshoot when crossing item boundaries.\n const [position, setPosition] = useState<number>(index);\n const positionRef = useRef<number>(index);\n positionRef.current = position;\n const [isDragging, setIsDragging] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n // Ref to the stationary selection band — populated by the JSX below. The\n // band briefly scales + brightens on each item tick so users perceive a\n // body-felt \"thunk\" even on iOS where no haptic API exists.\n const bandRef = useRef<HTMLDivElement>(null);\n // Cached MediaQueryList for `prefers-reduced-motion`. We read this on\n // every tick to decide whether to fire the band pulse; caching the MQL\n // saves a `matchMedia` call per tick (which can fire at ~20Hz during a\n // momentum flick).\n const reducedMotionMqlRef = useRef<MediaQueryList | null>(null);\n if (\n reducedMotionMqlRef.current === null &&\n typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function'\n ) {\n reducedMotionMqlRef.current = window.matchMedia(\n '(prefers-reduced-motion: reduce)'\n );\n }\n // In-flight band pulse animation (Web Animations API). Tracked so we can\n // cancel on unmount; the WAI's `composite: 'replace'` semantics handle\n // re-trigger automatically without us needing to cancel between ticks.\n const pulseAnimRef = useRef<Animation | null>(null);\n // True while the external `index` prop sync useEffect runs, so we don't\n // fire a haptic blip when the parent updates the value programmatically.\n const isSyncingRef = useRef<boolean>(false);\n\n // Tiny haptic/audio/visual blip per item tick. Haptic uses\n // `navigator.vibrate` where available (Android Chrome / Firefox Android /\n // Samsung Internet); iOS has no web-accessible haptic path as of May\n // 2026, so the optional `audioTick` plays a low-frequency thunk as the\n // closest UX substitute. The visual band-pulse fires on every tick on\n // every platform (gated only by `prefers-reduced-motion`) so the\n // selection band feels reactive — visual reinforcement of the tactile\n // feedback. We skip all three during programmatic prop sync so a parent\n // re-render doesn't blip.\n const audioTickEnabledRef = useRef<boolean>(audioTick);\n audioTickEnabledRef.current = audioTick;\n const playBandPulse = useCallback(() => {\n const el = bandRef.current;\n if (!el || typeof el.animate !== 'function') return;\n if (reducedMotionMqlRef.current?.matches) return;\n // Compound scale + brightness pulse, peaking at 40% through the 110ms\n // duration. `composite: 'replace'` means a re-trigger mid-pulse cleanly\n // restarts rather than queueing — important at fling rates where ticks\n // can fire every ~50ms.\n pulseAnimRef.current = el.animate(\n [\n { transform: 'scale(1)', filter: 'brightness(1)' },\n {\n transform: 'scale(1.04)',\n filter: 'brightness(1.15)',\n offset: 0.4,\n },\n { transform: 'scale(1)', filter: 'brightness(1)' },\n ],\n { duration: 110, easing: 'ease-out', composite: 'replace' }\n );\n }, []);\n const tickFeedback = useCallback(() => {\n /* istanbul ignore next: the sync flag is only true synchronously inside the prop-sync effect, which sets position directly and never routes through commitPosition */\n if (isSyncingRef.current) return;\n fireTickHaptic();\n if (audioTickEnabledRef.current) playAudioTick();\n playBandPulse();\n }, [playBandPulse]);\n const dragStateRef = useRef<{\n pointerId: number | null;\n startY: number;\n startPosition: number;\n captured: boolean;\n samples: { t: number; y: number }[];\n }>({\n pointerId: null,\n startY: 0,\n startPosition: 0,\n captured: false,\n samples: [],\n });\n // RAF id for the in-flight momentum / snap animation, so we can cancel when\n // the user grabs the wheel again or the component unmounts.\n const rafIdRef = useRef<number | null>(null);\n\n const virtualIdx = Math.round(position);\n\n const cancelRaf = useCallback(() => {\n if (rafIdRef.current !== null) {\n cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = null;\n }\n }, []);\n\n useEffect(\n () => () => {\n cancelRaf();\n // Cancel any in-flight band pulse so it doesn't keep a reference to\n // a detached DOM node. WAI Animation.cancel() is safe to call even\n // if the animation has already finished.\n pulseAnimRef.current?.cancel();\n pulseAnimRef.current = null;\n },\n [cancelRaf]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n focus: () => rootRef.current?.focus(),\n startDrag: (pointerId: number, clientY: number) => {\n /* istanbul ignore next: the empty-space forwarder (sole caller) already returns on the same disabled prop */\n if (disabled) return;\n cancelRaf();\n if (audioTickEnabledRef.current) unlockAudioTick();\n const now =\n typeof performance !== 'undefined' ? performance.now() : Date.now();\n dragStateRef.current = {\n pointerId,\n startY: clientY,\n startPosition: positionRef.current,\n // Skip the drag-threshold gate: the parent forwarder has already\n // decided this is a drag (a pointerdown landed on empty space,\n // which has no click target).\n captured: true,\n samples: [{ t: now, y: clientY }],\n };\n try {\n rootRef.current?.setPointerCapture(pointerId);\n } catch {\n // setPointerCapture can throw if the pointer isn't currently\n // active for this element; the existing onPointerMove handler\n // still matches on pointerId so the drag will work either way.\n }\n setIsDragging(true);\n },\n }),\n [disabled, cancelRaf]\n );\n\n // Resolve a virtualIdx into an actual values[] index (modulo wrap if `wrap`).\n const toActual = useCallback(\n (v: number) => {\n if (wrap) return ((v % N) + N) % N;\n return Math.max(0, Math.min(N - 1, v));\n },\n [wrap, N]\n );\n\n const clampPosition = useCallback(\n (p: number) => {\n if (wrap) return p;\n return Math.max(0, Math.min(N - 1, p));\n },\n [wrap, N]\n );\n\n // Update position and fire onChange if the rounded value changed.\n const commitPosition = useCallback(\n (next: number) => {\n const clamped = clampPosition(next);\n const prevRound = Math.round(positionRef.current);\n const nextRound = Math.round(clamped);\n positionRef.current = clamped;\n setPosition(clamped);\n if (nextRound !== prevRound) {\n onChange(toActual(nextRound));\n tickFeedback();\n }\n },\n [clampPosition, onChange, toActual, tickFeedback]\n );\n\n // When the external `index` changes (e.g. from typed input), re-sync\n // position to the closest virtual position that maps to it.\n //\n // Crucial subtlety: this effect re-runs every time the parent value\n // changes — including the round-trip case where the user's own scroll\n // commits a tick → fires onChange → parent re-renders with the new\n // index → here. If we cancelled the in-flight momentum/snap RAF on\n // every such echo, the snap would never get to land on an integer\n // (the user's wheel would stop wherever the last tick fired). So we\n // bail out early when the rounded position already matches the\n // incoming index — the echo case — and only cancel + apply an actual\n // jump when the parent has moved us somewhere we don't already round\n // to.\n useEffect(() => {\n const prev = positionRef.current;\n const wrappedRoundPrev = ((Math.round(prev) % N) + N) % N;\n if (wrappedRoundPrev === index) return;\n cancelRaf();\n isSyncingRef.current = true;\n setPosition(prevPos => {\n if (!wrap) {\n positionRef.current = index;\n return index;\n }\n const wrappedPrev = ((prevPos % N) + N) % N;\n const forward = (index - wrappedPrev + N) % N;\n const backward = forward - N;\n const delta =\n Math.abs(forward) <= Math.abs(backward) ? forward : backward;\n const next = prevPos + delta;\n positionRef.current = next;\n return next;\n });\n isSyncingRef.current = false;\n }, [index, N, wrap, cancelRaf]);\n\n const moveBy = useCallback(\n (delta: number) => {\n if (disabled) return;\n cancelRaf();\n commitPosition(Math.round(positionRef.current) + delta);\n },\n [disabled, cancelRaf, commitPosition]\n );\n\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowUp':\n e.preventDefault();\n moveBy(-1);\n break;\n case 'ArrowDown':\n e.preventDefault();\n moveBy(1);\n break;\n case 'PageUp':\n e.preventDefault();\n moveBy(-5);\n break;\n case 'PageDown':\n e.preventDefault();\n moveBy(5);\n break;\n case 'Home':\n e.preventDefault();\n if (disabled) break;\n cancelRaf();\n commitPosition(0);\n break;\n case 'End':\n e.preventDefault();\n if (disabled) break;\n cancelRaf();\n commitPosition(N - 1);\n break;\n case 'ArrowLeft':\n e.preventDefault();\n onFocusPrev?.();\n break;\n case 'ArrowRight':\n e.preventDefault();\n onFocusNext?.();\n break;\n case 'Enter':\n e.preventDefault();\n onCommit?.();\n break;\n }\n },\n [\n moveBy,\n disabled,\n commitPosition,\n cancelRaf,\n N,\n onFocusPrev,\n onFocusNext,\n onCommit,\n ]\n );\n\n // Animate position to the nearest integer with ease-out cubic. Used after a\n // drag / momentum settles, so the wheel always rests aligned to an item.\n const animateSnap = useCallback(() => {\n cancelRaf();\n const start = positionRef.current;\n const target = Math.round(start);\n if (start === target) return;\n const duration = 180;\n const startTime =\n typeof performance !== 'undefined' ? performance.now() : Date.now();\n const tick = (now: number) => {\n const t = Math.min(1, (now - startTime) / duration);\n const eased = 1 - Math.pow(1 - t, 3);\n const next = start + (target - start) * eased;\n commitPosition(next);\n if (t < 1) {\n rafIdRef.current = requestAnimationFrame(tick);\n } else {\n rafIdRef.current = null;\n }\n };\n rafIdRef.current = requestAnimationFrame(tick);\n }, [cancelRaf, commitPosition]);\n\n // Kinetic momentum after a flick. Uses exponential friction so the velocity\n // tapers smoothly. Updates `position` in items/ms; commitPosition handles\n // the onChange ticks as virtualIdx crosses integers.\n const startMomentum = useCallback(\n (initialPxPerMs: number) => {\n cancelRaf();\n // Drag-up (negative dy/dt in screen coords) should INCREASE position\n // (later values come into view), so flip the sign.\n let velocity = -initialPxPerMs / itemHeight; // items / ms\n // Cap initial velocity so a frantic swipe doesn't blast through the\n // whole list. Empirically tuned to match iOS feel.\n const MAX_VEL = 0.05; // items/ms (≈ 50 items/sec)\n if (velocity > MAX_VEL) velocity = MAX_VEL;\n if (velocity < -MAX_VEL) velocity = -MAX_VEL;\n const STOP_VEL = 0.0015; // items/ms (≈ 1.5 items/sec)\n // Friction coefficient per millisecond — chosen so velocity halves\n // every ~120ms.\n const FRICTION_PER_MS = Math.pow(0.5, 1 / 120);\n let lastTime =\n typeof performance !== 'undefined' ? performance.now() : Date.now();\n const tick = (now: number) => {\n const dt = Math.max(1, now - lastTime);\n lastTime = now;\n let next = positionRef.current + velocity * dt;\n // Boundary handling for non-wrapping wheels: clamp and zero the\n // velocity so we don't keep ticking against the wall.\n if (!wrap) {\n if (next <= 0) {\n next = 0;\n velocity = 0;\n } else if (next >= N - 1) {\n next = N - 1;\n velocity = 0;\n }\n }\n commitPosition(next);\n velocity *= Math.pow(FRICTION_PER_MS, dt);\n if (Math.abs(velocity) < STOP_VEL) {\n animateSnap();\n return;\n }\n rafIdRef.current = requestAnimationFrame(tick);\n };\n rafIdRef.current = requestAnimationFrame(tick);\n },\n [cancelRaf, commitPosition, itemHeight, wrap, N, animateSnap]\n );\n\n // Mouse wheel: accumulate deltaY across events and step when the\n // accumulator crosses SCROLL_STEP_PX. Trackpads emit dozens of small\n // events per swipe; without accumulation a single gesture flies the wheel.\n useEffect(() => {\n const el = rootRef.current;\n if (!el || disabled) return undefined;\n const SCROLL_STEP_PX = 60;\n const QUIET_MS = 250;\n let accumulated = 0;\n let resetTimer: ReturnType<typeof setTimeout> | null = null;\n const resetAccumulator = () => {\n accumulated = 0;\n };\n const onWheel = (e: WheelEvent) => {\n e.preventDefault();\n // Reset accumulator if scroll direction reversed mid-gesture.\n if (accumulated !== 0 && Math.sign(accumulated) !== Math.sign(e.deltaY)) {\n accumulated = 0;\n }\n accumulated += e.deltaY;\n while (Math.abs(accumulated) >= SCROLL_STEP_PX) {\n if (accumulated > 0) {\n moveBy(1);\n accumulated -= SCROLL_STEP_PX;\n } else {\n moveBy(-1);\n accumulated += SCROLL_STEP_PX;\n }\n }\n if (resetTimer) clearTimeout(resetTimer);\n resetTimer = setTimeout(resetAccumulator, QUIET_MS);\n };\n el.addEventListener('wheel', onWheel, { passive: false });\n return () => {\n el.removeEventListener('wheel', onWheel);\n if (resetTimer) clearTimeout(resetTimer);\n };\n }, [moveBy, disabled]);\n\n // Pointer drag.\n // We DELAY capturing the pointer until the user moves more than\n // DRAG_THRESHOLD_PX. Without this, capturing on pointerdown would redirect\n // mouseup → wheel root, which suppresses the click event on the item button\n // the user pressed (so single-clicks on neighbouring items would no-op).\n const DRAG_THRESHOLD_PX = 4;\n const onPointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n cancelRaf();\n if (audioTickEnabledRef.current) {\n // Resume the AudioContext from inside the user gesture so the first\n // tick of this drag can play (iOS Safari requires this; other browsers\n // are forgiving but it's a cheap idempotent call).\n unlockAudioTick();\n }\n const now =\n typeof performance !== 'undefined' ? performance.now() : Date.now();\n dragStateRef.current = {\n pointerId: e.pointerId,\n startY: e.clientY,\n startPosition: positionRef.current,\n captured: false,\n samples: [{ t: now, y: e.clientY }],\n };\n };\n const onPointerMove = (e: React.PointerEvent<HTMLDivElement>) => {\n const s = dragStateRef.current;\n if (s.pointerId !== e.pointerId) return;\n const dy = e.clientY - s.startY;\n if (!s.captured) {\n if (Math.abs(dy) < DRAG_THRESHOLD_PX) return;\n rootRef.current?.setPointerCapture(e.pointerId);\n s.captured = true;\n setIsDragging(true);\n }\n const now =\n typeof performance !== 'undefined' ? performance.now() : Date.now();\n s.samples.push({ t: now, y: e.clientY });\n // Keep the velocity sample window short so the post-flick velocity\n // reflects the *recent* finger speed, not the whole-drag average.\n const VELOCITY_WINDOW_MS = 100;\n while (s.samples.length > 2 && now - s.samples[0].t > VELOCITY_WINDOW_MS) {\n s.samples.shift();\n }\n // Continuous position: every itemHeight worth of finger drag advances\n // the wheel by 1 unit. Pulling the finger DOWN (positive dy) shows\n // EARLIER values, which means position decreases.\n commitPosition(s.startPosition - dy / itemHeight);\n };\n const onPointerUp = (e: React.PointerEvent<HTMLDivElement>) => {\n const s = dragStateRef.current;\n if (s.pointerId !== e.pointerId) return;\n if (s.captured) {\n rootRef.current?.releasePointerCapture(e.pointerId);\n // Drags don't fire click → focus would be left on whichever child\n // received pointerdown. Pull it back to the wheel root so :focus\n // emphasis still reads correctly after a drag.\n rootRef.current?.focus();\n // Compute fling velocity from the recent sample window.\n const samples = s.samples;\n let pxPerMs = 0;\n if (samples.length >= 2) {\n const first = samples[0];\n const last = samples[samples.length - 1];\n const dt = last.t - first.t;\n if (dt > 0) pxPerMs = (last.y - first.y) / dt;\n }\n // Threshold below which we just snap to the nearest item; above which\n // we kick off momentum.\n const FLING_THRESHOLD = 0.25; // px/ms ≈ 250 px/sec\n if (Math.abs(pxPerMs) > FLING_THRESHOLD) {\n startMomentum(pxPerMs);\n } else {\n animateSnap();\n }\n }\n s.pointerId = null;\n s.captured = false;\n s.samples = [];\n setIsDragging(false);\n };\n\n const rootClass = prefixedClassNames(classPrefix, 'timeinput-wheel', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-disabled': disabled,\n 'is-dragging': isDragging,\n });\n const itemClass = (selected: boolean) =>\n prefixedClassNames(classPrefix, 'timeinput-wheel-item', {\n 'is-selected': selected,\n [`is-${color}`]: selected && !!color,\n });\n const bandClass = prefixedClassNames(classPrefix, 'timeinput-wheel-band', {\n [`is-${color}`]: !!color,\n });\n\n // Build the buffered window of items to render around the current position.\n const items: { vIdx: number; aIdx: number }[] = [];\n for (let off = -BUFFER; off <= BUFFER; off++) {\n const vIdx = virtualIdx + off;\n if (!wrap && (vIdx < 0 || vIdx >= N)) continue;\n const aIdx = toActual(vIdx);\n items.push({ vIdx, aIdx });\n }\n\n const ariaText = formatAriaText\n ? formatAriaText(values[toActual(virtualIdx)])\n : formatLabel(values[toActual(virtualIdx)]);\n\n // Center of the wheel viewport, in px from the top.\n const centreTop = containerHeight / 2 - itemHeight / 2;\n\n return (\n <div\n ref={rootRef}\n role=\"spinbutton\"\n aria-label={ariaLabel}\n aria-valuemin={0}\n aria-valuemax={N - 1}\n aria-valuenow={toActual(virtualIdx)}\n aria-valuetext={ariaText}\n tabIndex={disabled ? -1 : 0}\n className={rootClass}\n style={{ height: containerHeight }}\n onKeyDown={onKeyDown}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerUp}\n >\n {/* Stationary selection band — sits at the centre of the viewport while\n items slide through it, like the iOS native picker. The ref lets\n `playBandPulse` animate scale + brightness on each item tick. */}\n <div\n ref={bandRef}\n className={bandClass}\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n left: 0,\n right: 0,\n top: centreTop,\n height: itemHeight,\n pointerEvents: 'none',\n }}\n />\n {items.map(({ vIdx, aIdx }) => {\n // Continuous offset in items: items at the centre have offset ≈ 0;\n // top of viewport is negative, bottom positive.\n const offCentreItems = vIdx - position;\n const top = centreTop + offCentreItems * itemHeight;\n const selected = vIdx === virtualIdx;\n const itemDisabled =\n disabled || (disabledFor ? disabledFor(values[aIdx]) : false);\n return (\n <button\n key={vIdx}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n tabIndex={-1}\n className={itemClass(selected)}\n style={{\n position: 'absolute',\n left: 0,\n right: 0,\n height: itemHeight,\n top: `${top}px`,\n }}\n disabled={itemDisabled}\n onClick={() => {\n moveBy(vIdx - virtualIdx);\n // Click focuses the <button> child by default; pull focus back\n // to the wheel root so the column emphasis (:focus rules) match.\n rootRef.current?.focus();\n }}\n >\n {formatLabel(values[aIdx])}\n </button>\n );\n })}\n </div>\n );\n};\n\nconst Wheel = React.forwardRef(WheelInner) as <T>(\n props: WheelProps<T> & { ref?: React.Ref<WheelHandle> }\n) => React.ReactElement;\n\nexport const TimeWheels: React.FC<TimeWheelsProps> = ({\n value,\n onChange,\n hourFormat = '24',\n enableSeconds = false,\n incrementHours = 1,\n incrementMinutes = 1,\n incrementSeconds = 1,\n unselectableTimes,\n size,\n color,\n disabled,\n className,\n id,\n labels,\n visibleCount = 5,\n itemHeight = 32,\n audioTick = false,\n onCommit,\n}) => {\n const t = mergeLabels(labels);\n\n const rootClass = usePrefixedClassNames('timeinput', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-disabled': disabled,\n });\n const wheelsClass = usePrefixedClassNames('timeinput-wheels');\n const sepClass = usePrefixedClassNames('timeinput-separator');\n // Use the prefixed class through the same helper the wheels themselves do,\n // so the selector matches the actual rendered class regardless of whether\n // the consumer configured `classPrefix` via ConfigProvider. Building the\n // selector with `${classPrefix}timeinput-wheel` is wrong when classPrefix\n // is undefined (defaults to the empty prefix) — it would stringify to\n // \"undefinedtimeinput-wheel\".\n const wheelSingleClass = usePrefixedClassNames('timeinput-wheel');\n const wheelsContainerRef = useRef<HTMLDivElement>(null);\n\n const isPm = value.hours >= 12;\n\n const isTimeAllowed = useCallback(\n (h: number, m: number, s: number) => {\n if (!unselectableTimes) return true;\n const probe = setTimeOfDay(new Date(), {\n hours: h,\n minutes: m,\n seconds: s,\n });\n return !unselectableTimes(probe);\n },\n [unselectableTimes]\n );\n\n // Per-column \"is this value disabled?\" predicates. We compute them against\n // the current value's other parts, so e.g. a predicate that only blocks\n // 12:00–12:59 leaves all minutes selectable when the user moves the hour\n // off 12. Returning `undefined` (rather than a function) when there is no\n // unselectableTimes lets the Wheel skip the disabled-attribute branch.\n const isHourDisabled = useCallback(\n (display: number) => {\n let h24 = display;\n if (hourFormat === '12') {\n const base = display % 12;\n h24 = isPm ? base + 12 : base;\n }\n return !isTimeAllowed(h24, value.minutes, value.seconds ?? 0);\n },\n [hourFormat, isPm, isTimeAllowed, value.minutes, value.seconds]\n );\n const isMinuteDisabled = useCallback(\n (m: number) => !isTimeAllowed(value.hours, m, value.seconds ?? 0),\n [isTimeAllowed, value.hours, value.seconds]\n );\n const isSecondDisabled = useCallback(\n (s: number) => !isTimeAllowed(value.hours, value.minutes, s),\n [isTimeAllowed, value.hours, value.minutes]\n );\n const hourDisabledFor = unselectableTimes ? isHourDisabled : undefined;\n const minuteDisabledFor = unselectableTimes ? isMinuteDisabled : undefined;\n const secondDisabledFor = unselectableTimes ? isSecondDisabled : undefined;\n\n const commit = useCallback(\n (next: Partial<TimeWheelsValue>) => {\n const merged: TimeWheelsValue = {\n hours: next.hours ?? value.hours,\n minutes: next.minutes ?? value.minutes,\n seconds: enableSeconds\n ? (next.seconds ?? value.seconds ?? 0)\n : undefined,\n };\n if (!isTimeAllowed(merged.hours, merged.minutes, merged.seconds ?? 0)) {\n return;\n }\n onChange(merged);\n },\n [value, enableSeconds, isTimeAllowed, onChange]\n );\n\n // Build the value lists per column.\n const hourValues = useMemo<number[]>(() => {\n const step = Math.max(1, incrementHours);\n if (hourFormat === '12') {\n const out: number[] = [];\n for (let h = 1; h <= 12; h += step) out.push(h);\n return out;\n }\n const out: number[] = [];\n for (let h = 0; h < 24; h += step) out.push(h);\n return out;\n }, [hourFormat, incrementHours]);\n\n const minuteValues = useMemo<number[]>(() => {\n const step = Math.max(1, incrementMinutes);\n const out: number[] = [];\n for (let m = 0; m < 60; m += step) out.push(m);\n return out;\n }, [incrementMinutes]);\n\n const secondValues = useMemo<number[]>(() => {\n const step = Math.max(1, incrementSeconds);\n const out: number[] = [];\n for (let s = 0; s < 60; s += step) out.push(s);\n return out;\n }, [incrementSeconds]);\n\n // Map current value → wheel index.\n const displayedHours =\n hourFormat === '12'\n ? value.hours % 12 === 0\n ? 12\n : value.hours % 12\n : value.hours;\n const hourIndex = Math.max(0, hourValues.indexOf(displayedHours));\n const minuteIndex = Math.max(0, minuteValues.indexOf(value.minutes));\n const secondIndex = Math.max(0, secondValues.indexOf(value.seconds ?? 0));\n const ampmIndex = isPm ? 1 : 0;\n\n // Refs for column focus management.\n const hoursRef = useRef<WheelHandle>(null);\n const minutesRef = useRef<WheelHandle>(null);\n const secondsRef = useRef<WheelHandle>(null);\n const ampmRef = useRef<WheelHandle>(null);\n\n // Build the focus order at runtime.\n const columnOrder: React.RefObject<WheelHandle | null>[] = [];\n columnOrder.push(hoursRef);\n columnOrder.push(minutesRef);\n if (enableSeconds) columnOrder.push(secondsRef);\n if (hourFormat === '12') columnOrder.push(ampmRef);\n const focusAt = (i: number) => columnOrder[i]?.current?.focus();\n const indexOf = (r: React.RefObject<WheelHandle | null>): number =>\n columnOrder.indexOf(r);\n const focusPrevOf = (r: React.RefObject<WheelHandle | null>) => () =>\n focusAt(indexOf(r) - 1);\n const focusNextOf = (r: React.RefObject<WheelHandle | null>) => () =>\n focusAt(indexOf(r) + 1);\n\n // Hour change — translate displayed value back into 24h.\n const onHourIndex = (next: number) => {\n const display =\n hourValues[Math.max(0, Math.min(hourValues.length - 1, next))];\n let next24 = display;\n if (hourFormat === '12') {\n const baseHour = display % 12;\n next24 = isPm ? baseHour + 12 : baseHour;\n }\n // Skip past any blocked hour using nextValid.\n const allowed = nextValid(next24, next24 >= value.hours ? 1 : -1, 24, h =>\n isTimeAllowed(h, value.minutes, value.seconds ?? 0)\n );\n commit({ hours: allowed });\n };\n\n const onMinuteIndex = (next: number) => {\n const m =\n minuteValues[Math.max(0, Math.min(minuteValues.length - 1, next))];\n const allowed = nextValid(m, m >= value.minutes ? 1 : -1, 60, mm =>\n isTimeAllowed(value.hours, mm, value.seconds ?? 0)\n );\n commit({ minutes: allowed });\n };\n\n const onSecondIndex = (next: number) => {\n const s =\n secondValues[Math.max(0, Math.min(secondValues.length - 1, next))];\n const allowed = nextValid(s, s >= (value.seconds ?? 0) ? 1 : -1, 60, ss =>\n isTimeAllowed(value.hours, value.minutes, ss)\n );\n commit({ seconds: allowed });\n };\n\n const onAmpmIndex = (next: number) => {\n if (next === ampmIndex) return;\n commit({ hours: (value.hours + 12) % 24 });\n };\n\n // Forward drags that originate on the empty space inside the wheels row\n // (left of the leftmost wheel, right of the rightmost wheel, on the\n // separator) to whichever wheel column is nearest to the pointer X — so\n // the picker behaves like the iOS native one, where the whole picker\n // surface is grabbable, not just the column itself.\n const onWheelsContainerPointerDown = (\n e: React.PointerEvent<HTMLDivElement>\n ) => {\n if (disabled) return;\n // If the pointerdown landed on a real wheel column, the wheel's own\n // handler takes over — don't double-dispatch.\n if ((e.target as HTMLElement).closest(`.${wheelSingleClass}`)) return;\n const container = wheelsContainerRef.current;\n /* istanbul ignore next: the handler is attached to the very element this ref points to, so it can't be null while events fire */\n if (!container) return;\n const wheels = container.querySelectorAll<HTMLElement>(\n `.${wheelSingleClass}`\n );\n if (wheels.length === 0) return;\n let nearestIdx = 0;\n let nearestDist = Infinity;\n const x = e.clientX;\n wheels.forEach((el, i) => {\n const r = el.getBoundingClientRect();\n const cx = (r.left + r.right) / 2;\n const d = Math.abs(x - cx);\n if (d < nearestDist) {\n nearestDist = d;\n nearestIdx = i;\n }\n });\n columnOrder[nearestIdx]?.current?.startDrag(e.pointerId, e.clientY);\n };\n\n return (\n <div\n id={id}\n className={classNames(rootClass, className)}\n aria-disabled={disabled}\n >\n <div\n className={wheelsClass}\n ref={wheelsContainerRef}\n onPointerDown={onWheelsContainerPointerDown}\n >\n <Wheel\n ref={hoursRef}\n values={hourValues}\n index={hourIndex}\n onChange={onHourIndex}\n formatLabel={pad2}\n ariaLabel={t.hours}\n visibleCount={visibleCount}\n itemHeight={itemHeight}\n disabled={disabled}\n size={size}\n color={color}\n wrap\n onCommit={onCommit}\n onFocusPrev={focusPrevOf(hoursRef)}\n onFocusNext={focusNextOf(hoursRef)}\n disabledFor={hourDisabledFor}\n audioTick={audioTick}\n />\n <div className={sepClass} aria-hidden=\"true\">\n :\n </div>\n <Wheel\n ref={minutesRef}\n values={minuteValues}\n index={minuteIndex}\n onChange={onMinuteIndex}\n formatLabel={pad2}\n ariaLabel={t.minutes}\n visibleCount={visibleCount}\n itemHeight={itemHeight}\n disabled={disabled}\n size={size}\n color={color}\n wrap\n onCommit={onCommit}\n onFocusPrev={focusPrevOf(minutesRef)}\n onFocusNext={focusNextOf(minutesRef)}\n disabledFor={minuteDisabledFor}\n audioTick={audioTick}\n />\n {enableSeconds && (\n <>\n <div className={sepClass} aria-hidden=\"true\">\n :\n </div>\n <Wheel\n ref={secondsRef}\n values={secondValues}\n index={secondIndex}\n onChange={onSecondIndex}\n formatLabel={pad2}\n ariaLabel={t.seconds}\n visibleCount={visibleCount}\n itemHeight={itemHeight}\n disabled={disabled}\n size={size}\n color={color}\n wrap\n onFocusPrev={focusPrevOf(secondsRef)}\n onFocusNext={focusNextOf(secondsRef)}\n disabledFor={secondDisabledFor}\n audioTick={audioTick}\n />\n </>\n )}\n {hourFormat === '12' && (\n <Wheel\n ref={ampmRef}\n values={['AM', 'PM']}\n index={ampmIndex}\n onChange={onAmpmIndex}\n formatLabel={v => v}\n ariaLabel={t.ampm}\n visibleCount={visibleCount}\n itemHeight={itemHeight}\n disabled={disabled}\n size={size}\n color={color}\n onCommit={onCommit}\n onFocusPrev={focusPrevOf(ampmRef)}\n onFocusNext={focusNextOf(ampmRef)}\n audioTick={audioTick}\n />\n )}\n </div>\n </div>\n );\n};\n\nTimeWheels.displayName = 'TimeWheels';\n\nexport default TimeWheels;\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport {\n PickerPosition,\n HourFormat,\n PickerLabels,\n mergeLabels,\n} from './_pickerInternals/pickerTypes';\nimport {\n formatTime,\n hourCycleFromFormat,\n parseTime,\n DateFormatOption,\n DEFAULT_TIME_FORMAT_24,\n DEFAULT_TIME_FORMAT_12,\n} from './_pickerInternals/formatters';\nimport {\n setTimeOfDay,\n isWithin,\n snapTimeToIncrement,\n} from './_pickerInternals/dateUtils';\nimport { TimeWheels } from './_pickerInternals/TimeWheels';\nimport { PickerPopover } from './_pickerInternals/PickerPopover';\nimport { useNativeMobilePicker } from './_pickerInternals/useNativeMobilePicker';\nimport { useSegmentedEntry } from './_pickerInternals/useSegmentedEntry';\nimport { Icon } from '../elements/Icon';\nimport { Buttons } from '../elements/Buttons';\n\nconst toIsoTime = (d: Date, withSeconds: boolean): string => {\n const hh = String(d.getHours()).padStart(2, '0');\n const mm = String(d.getMinutes()).padStart(2, '0');\n if (!withSeconds) return `${hh}:${mm}`;\n const ss = String(d.getSeconds()).padStart(2, '0');\n return `${hh}:${mm}:${ss}`;\n};\n\nconst fromIsoTime = (s: string): Date | null => {\n // The HTML time value may carry fractional seconds (the spec allows them\n // and some engines normalize to `:ss.sss`); accept and drop.\n const m = /^(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.\\d{1,3})?)?$/.exec(s);\n if (!m) return null;\n const today = new Date();\n return new Date(\n today.getFullYear(),\n today.getMonth(),\n today.getDate(),\n Number(m[1]),\n Number(m[2]),\n m[3] ? Number(m[3]) : 0,\n 0\n );\n};\n\n/**\n * Props for the raw TimeInput base. Use the higher-level `TimeInput` for\n * Field/Control composition; `TimeInputBase` is the input + popover only.\n *\n * @property {Date | null} [value] - Controlled selected time.\n * @property {Date | null} [defaultValue] - Initial value for uncontrolled usage.\n * @property {(d: Date | null) => void} [onChange] - Fired when the value changes.\n * @property {() => void} [onOpen] - Fired when the popover opens.\n * @property {() => void} [onClose] - Fired when the popover closes.\n * @property {Date} [min] - Earliest selectable time.\n * @property {Date} [max] - Latest selectable time.\n * @property {boolean} [disabled] - Disable the input.\n * @property {boolean} [readOnly] - Make the input read-only.\n * @property {string} [placeholder] - Placeholder text.\n * @property {DateFormatOption} [format] - Token format string or `Intl.DateTimeFormat` options.\n * @property {(s: string) => Date | null} [parse] - Custom parser.\n * @property {string} [locale] - BCP-47 locale tag.\n * @property {boolean} [inline] - Render the spinner inline (no popover).\n * @property {boolean | 'auto'} [mobileNative] - Use native `<input type=\"time\">` on coarse-pointer devices.\n * @property {boolean} [editable] - Allow segmented keyboard typing in the input (type the time directly, auto-advancing across segments). Default `true`.\n * @property {boolean} [popover] - Whether the spinner popover exists. `false` makes the field input-only (segmented typing with no popover). Default `true`.\n * @property {boolean} [openOnFocus] - Open the popover on focus. Default `true`.\n * @property {boolean} [closeOnSelect] - Close after selection. Default `false`.\n * @property {PickerPosition} [position] - Popover anchor position.\n * @property {boolean} [appendToBody] - Render the popover into `document.body` via portal.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier.\n * @property {'small'|'medium'|'large'} [size] - Size variant.\n * @property {boolean} [isRounded] - Rounded input corners.\n * @property {HourFormat} [hourFormat] - `'12'` or `'24'`. Default `'24'`.\n * @property {boolean} [enableSeconds] - Show a seconds column. Note: iOS Safari's native time picker has no seconds wheel; combine with `mobileNative={false}` if a seconds wheel is required on iOS.\n * @property {number} [incrementHours] - Hour step. Default `1`.\n * @property {number} [incrementMinutes] - Minute step. Default `1`.\n * @property {number} [incrementSeconds] - Second step. Default `1`.\n * @property {(d: Date) => boolean} [unselectableTimes] - Predicate for blocked times (the spinner skips ahead; manual typing rejects them).\n * @property {string} [iconLeftName] - Decorative left icon glyph for the wrapping Control (shown by default; set to '' to hide).\n * @property {boolean} [triggerIcon] - Show a clickable launcher button on the right that toggles the popover. Default `true`.\n * @property {string} [triggerIconName] - Glyph name for the right launcher button. Default `'chevron-down'`.\n * @property {boolean} [audioTick] - Play a short audible tick on each wheel-item crossing. Useful as a substitute for haptic feedback on iOS Safari, which has no web-accessible haptic API. Off by default.\n * @property {boolean} [haptics] - Auto-route platform-appropriate tactile feedback per wheel tick: real vibration on Android (via `navigator.vibrate`) and an audible thunk on iOS (where no haptic API exists). Adds the audio thunk only when vibrate is unavailable, so Android devices aren't subjected to extra sound. The visual band pulse fires regardless. Off by default for backward compat.\n */\nexport interface TimeInputBaseProps\n extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'size'\n | 'color'\n | 'min'\n | 'max'\n | 'type'\n | 'popover'\n >,\n Omit<BulmaClassesProps, 'color'> {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (d: Date | null) => void;\n onOpen?: () => void;\n onClose?: () => void;\n min?: Date;\n max?: Date;\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n format?: DateFormatOption;\n parse?: (s: string) => Date | null;\n locale?: string;\n inline?: boolean;\n mobileNative?: boolean | 'auto';\n editable?: boolean;\n popover?: boolean;\n openOnFocus?: boolean;\n closeOnSelect?: boolean;\n position?: PickerPosition;\n appendToBody?: boolean;\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n size?: 'small' | 'medium' | 'large';\n isRounded?: boolean;\n hourFormat?: HourFormat;\n enableSeconds?: boolean;\n incrementHours?: number;\n incrementMinutes?: number;\n incrementSeconds?: number;\n unselectableTimes?: (d: Date) => boolean;\n iconLeftName?: string;\n triggerIcon?: boolean;\n triggerIconName?: string;\n /** Optional translatable string overrides. */\n labels?: PickerLabels;\n /**\n * Play a short audible tick on each wheel-item crossing. Provides a\n * substitute for haptic feedback on iOS Safari, which has no web-\n * accessible haptic API as of May 2026. Off by default to avoid\n * surprising users with sound; the tick respects the device's silent\n * switch and is suppressed when no audio device is available.\n */\n audioTick?: boolean;\n /**\n * Auto-route platform-appropriate tactile feedback per wheel tick. When\n * `true`:\n * - On platforms where `navigator.vibrate` is implemented (Android\n * Chrome / Firefox Android / Samsung Internet), the existing\n * unconditional `navigator.vibrate(5)` carries the haptic — no audio\n * is added (don't want to subject Android users to extra sound).\n * - On platforms where `navigator.vibrate` is absent (notably iOS\n * Safari, which has no web-accessible haptic API as of May 2026),\n * the audio thunk is enabled automatically — same as setting\n * `audioTick={true}` manually.\n * - The visual band pulse fires regardless (gated only by\n * `prefers-reduced-motion`).\n * Off by default for backward compat. If `audioTick` is also set, the\n * audio fires regardless of detection (manual opt-in wins).\n */\n haptics?: boolean;\n}\n\n/**\n * Raw TimeInput — input + popover spinner without Field/Control wrapping.\n * Use `TimeInput` for the convenience wrapper.\n *\n * @function\n * @param {TimeInputBaseProps} props\n * @returns {JSX.Element}\n */\nexport const TimeInputBase = forwardRef<HTMLInputElement, TimeInputBaseProps>(\n (props, ref) => {\n const {\n value: controlledValue,\n defaultValue,\n onChange,\n onOpen,\n onClose,\n min,\n max,\n disabled,\n readOnly,\n placeholder,\n format,\n parse,\n locale,\n inline = false,\n mobileNative = 'auto',\n editable = true,\n popover = true,\n openOnFocus = true,\n closeOnSelect = false,\n position = 'bottom-left',\n appendToBody = false,\n color,\n size,\n isRounded,\n hourFormat = '24',\n enableSeconds = false,\n incrementHours = 1,\n incrementMinutes = 1,\n incrementSeconds = 1,\n unselectableTimes,\n className,\n name,\n form,\n required,\n id,\n onFocus,\n onClick,\n onKeyDown,\n onBlur,\n iconLeftName: _iconLeftName,\n triggerIcon = true,\n triggerIconName = 'chevron-down',\n labels,\n audioTick = false,\n haptics = false,\n ...rest\n } = props;\n\n // Platform-appropriate feedback routing: when `haptics` is opted in and\n // the runtime has no Vibration API (notably iOS Safari), enable the\n // audio thunk so the user still gets *some* tactile cue. When vibrate\n // is available (Android Chrome etc.), the existing unconditional\n // `navigator.vibrate(5)` carries the haptic — no audio added unless\n // the consumer explicitly set `audioTick`. `audioTick` always wins.\n const hasVibrate =\n typeof navigator !== 'undefined' &&\n typeof navigator.vibrate === 'function';\n const effectiveAudioTick = audioTick || (haptics && !hasVibrate);\n const t = mergeLabels(labels);\n\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<Date | null>(\n defaultValue ?? null\n );\n const value = isControlled ? (controlledValue ?? null) : internalValue;\n\n const defaultFormat: DateFormatOption =\n format ??\n (hourFormat === '12'\n ? enableSeconds\n ? 'hh:mm:ss A'\n : DEFAULT_TIME_FORMAT_12\n : enableSeconds\n ? 'HH:mm:ss'\n : DEFAULT_TIME_FORMAT_24);\n\n // The displayed format is the source of truth for the hour cycle: an\n // explicit 12-hour `format` must drive a 12-hour wheel even when\n // `hourFormat` was left at its default. Fall back to the raw prop only when\n // the cycle can't be read from the format (an Intl-options object, or no\n // hour token).\n const effectiveHourFormat =\n hourCycleFromFormat(defaultFormat) ?? hourFormat;\n\n const [open, setOpenState] = useState(false);\n const [text, setText] = useState<string>(\n value ? formatTime(value, defaultFormat, locale) : ''\n );\n\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n // Snapshot of value at the moment the popover opens, used by Cancel.\n const valueAtOpenRef = useRef<Date | null>(null);\n const reactId = useId();\n const popoverId = id ? `${id}-popover` : `picker-${reactId}`;\n\n const { bulmaHelperClasses, rest: cleanRest } = useBulmaClasses(rest);\n\n const { shouldUseNative, isSmallViewport } = useNativeMobilePicker({\n force: mobileNative === 'auto' ? undefined : mobileNative,\n });\n const useNative = !inline && shouldUseNative;\n const wheelItemHeight = isSmallViewport ? 40 : 32;\n\n const inputClass = usePrefixedClassNames('input', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-rounded': isRounded,\n });\n const containerClass = usePrefixedClassNames('timeinput-container');\n const triggerClass = usePrefixedClassNames('timeinput-trigger');\n const panelClass = usePrefixedClassNames('timeinput-panel');\n const footerClass = usePrefixedClassNames('timeinput-footer');\n const footerButton = usePrefixedClassNames('button', 'is-small');\n const footerOkClass = usePrefixedClassNames(\n 'button',\n 'is-small',\n 'timeinput-footer-ok'\n );\n const mobileFooterClass = usePrefixedClassNames('timeinput-footer-mobile');\n const mobileFooterResetClass = usePrefixedClassNames(\n 'timeinput-footer-reset'\n );\n const mobileFooterDoneClass = usePrefixedClassNames(\n 'timeinput-footer-done'\n );\n\n const setOpen = useCallback(\n (next: boolean) => {\n setOpenState(prev => {\n if (prev === next) return prev;\n if (next) {\n valueAtOpenRef.current = value;\n onOpen?.();\n } else {\n onClose?.();\n }\n return next;\n });\n },\n [onOpen, onClose, value]\n );\n\n useEffect(() => {\n setText(value ? formatTime(value, defaultFormat, locale) : '');\n }, [value, defaultFormat, locale]);\n\n const commitValue = useCallback(\n (next: Date | null) => {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const handleSpinnerChange = useCallback(\n (parts: { hours: number; minutes: number; seconds?: number }) => {\n const base = value ?? new Date();\n const next = setTimeOfDay(base, parts);\n if (!isWithin(next, min, max)) return;\n commitValue(next);\n },\n [value, min, max, commitValue]\n );\n\n const tryParse = useCallback(\n (s: string): Date | null => {\n const trimmed = s.trim();\n if (!trimmed) return null;\n const fmt = typeof format === 'string' ? format : undefined;\n return parse\n ? parse(trimmed)\n : parseTime(\n trimmed,\n fmt ??\n (typeof defaultFormat === 'string'\n ? defaultFormat\n : DEFAULT_TIME_FORMAT_24)\n );\n },\n [parse, format, defaultFormat]\n );\n\n // The Date the user edits when starting without a current value. Noon so\n // the 12h / 24h hour calculations are unambiguous.\n const makeBaseDate = useCallback((): Date => {\n const d = new Date();\n d.setHours(12, 0, 0, 0);\n return d;\n }, []);\n\n const inputReadOnlyAttr = !!readOnly || !editable;\n const canOpen = !!popover && !disabled && !readOnly;\n\n const { inputHandlers } = useSegmentedEntry({\n format: defaultFormat,\n value,\n commitValue,\n formatFn: formatTime,\n tryParse,\n text,\n setText,\n makeBaseDate,\n locale,\n min,\n max,\n isBlocked: unselectableTimes,\n disabled,\n readOnly,\n editable,\n popover,\n openOnFocus,\n closeOnSelect,\n isOpen: open,\n setOpen,\n inputRef,\n containerRef,\n onFocus,\n onClick,\n onKeyDown,\n onBlur,\n });\n\n const combinedRef = useCallback(\n (node: HTMLInputElement | null) => {\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n if (typeof ref === 'function') ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n },\n [ref]\n );\n\n if (useNative) {\n const nativeStep = enableSeconds\n ? incrementSeconds\n : incrementMinutes * 60;\n return (\n <input\n {...cleanRest}\n ref={combinedRef}\n type=\"time\"\n step={nativeStep}\n className={classNames(inputClass, bulmaHelperClasses, className)}\n value={value ? toIsoTime(value, enableSeconds) : ''}\n onChange={e => {\n const parsed = e.target.value ? fromIsoTime(e.target.value) : null;\n commitValue(parsed);\n }}\n min={min ? toIsoTime(min, enableSeconds) : undefined}\n max={max ? toIsoTime(max, enableSeconds) : undefined}\n disabled={disabled}\n readOnly={readOnly}\n placeholder={placeholder}\n name={name}\n form={form}\n required={required}\n id={id}\n />\n );\n }\n\n const spinnerValue = {\n hours: value?.getHours() ?? 0,\n minutes: value?.getMinutes() ?? 0,\n seconds: enableSeconds ? (value?.getSeconds() ?? 0) : undefined,\n };\n\n const panel = (\n <div className={panelClass}>\n <TimeWheels\n value={spinnerValue}\n onChange={handleSpinnerChange}\n hourFormat={effectiveHourFormat}\n enableSeconds={enableSeconds}\n incrementHours={incrementHours}\n incrementMinutes={incrementMinutes}\n incrementSeconds={incrementSeconds}\n unselectableTimes={unselectableTimes}\n color={color}\n size={size}\n disabled={disabled}\n id={popoverId}\n labels={labels}\n itemHeight={wheelItemHeight}\n audioTick={effectiveAudioTick}\n onCommit={() => setOpen(false)}\n />\n {/* Footer is popover-only. Desktop gets the OK / Now / Cancel triad;\n mobile drops to an iOS-style \"Reset / ✓\" pair to match the OS\n picker's footer affordances and free up vertical space on small\n screens. */}\n {!inline && !isSmallViewport && (\n <Buttons className={footerClass} hasAddons>\n <button\n type=\"button\"\n className={footerOkClass}\n onClick={() => setOpen(false)}\n >\n {t.ok}\n </button>\n <button\n type=\"button\"\n className={footerButton}\n onClick={() => {\n commitValue(\n snapTimeToIncrement(new Date(), {\n incrementHours,\n incrementMinutes,\n incrementSeconds,\n enableSeconds,\n })\n );\n setOpen(false);\n }}\n >\n {t.now}\n </button>\n <button\n type=\"button\"\n className={footerButton}\n onClick={() => {\n commitValue(valueAtOpenRef.current);\n setOpen(false);\n }}\n >\n {t.cancel}\n </button>\n </Buttons>\n )}\n {!inline && isSmallViewport && (\n <div className={mobileFooterClass}>\n <button\n type=\"button\"\n className={mobileFooterResetClass}\n onClick={() => {\n commitValue(valueAtOpenRef.current);\n setOpen(false);\n }}\n >\n {t.reset}\n </button>\n <button\n type=\"button\"\n className={mobileFooterDoneClass}\n aria-label={t.done}\n onClick={() => setOpen(false)}\n >\n <svg\n width=\"22\"\n height=\"22\"\n viewBox=\"0 0 22 22\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M5 11l4 4 8-8\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n )}\n </div>\n );\n\n if (inline) {\n return (\n <div\n {...cleanRest}\n ref={containerRef}\n className={classNames(containerClass, bulmaHelperClasses, className)}\n >\n {panel}\n {name && (\n <input\n type=\"hidden\"\n name={name}\n form={form}\n value={value ? toIsoTime(value, enableSeconds) : ''}\n required={required}\n />\n )}\n </div>\n );\n }\n\n return (\n <div\n ref={containerRef}\n className={classNames(containerClass, bulmaHelperClasses, className)}\n {...cleanRest}\n >\n <input\n ref={combinedRef}\n type=\"text\"\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-controls={popoverId}\n autoComplete=\"off\"\n className={inputClass}\n value={text}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={inputReadOnlyAttr}\n name={name}\n form={form}\n required={required}\n id={id}\n {...inputHandlers}\n />\n {popover && triggerIcon && (\n <button\n type=\"button\"\n className={triggerClass}\n onClick={() => {\n if (canOpen) setOpen(!open);\n }}\n disabled={!canOpen}\n aria-label={t.chooseTime}\n aria-haspopup=\"dialog\"\n aria-controls={popoverId}\n aria-expanded={open}\n tabIndex={canOpen ? 0 : -1}\n >\n <Icon name={triggerIconName} size={size} />\n </button>\n )}\n {popover && (\n <PickerPopover\n isOpen={open}\n onClose={() => setOpen(false)}\n anchorRef={containerRef}\n position={position}\n appendToBody={appendToBody}\n ariaLabel={t.chooseTime}\n id={popoverId}\n >\n {panel}\n </PickerPopover>\n )}\n </div>\n );\n }\n);\n\nTimeInputBase.displayName = 'TimeInputBase';\n\nexport default TimeInputBase;\n","import React, { forwardRef } from 'react';\nimport { usePrefixedClassNames } from '../helpers/classNames';\nimport { Field, FieldProps } from './Field';\nimport { Control, ControlBaseProps } from './Control';\nimport { TimeInputBase, TimeInputBaseProps } from './TimeInputBase';\nimport { useInsideField, useInsideControl } from './FormContext';\n\n/**\n * Props for the TimeInput convenience wrapper. Extends `TimeInputBaseProps`\n * with Field-level (label, horizontal) and Control-level (icons, loading) props.\n *\n * @property {React.ReactNode} [label] - Field label.\n * @property {FieldProps['labelSize']} [labelSize] - Size for the label.\n * @property {FieldProps['labelProps']} [labelProps] - Props for the label element.\n * @property {boolean} [horizontal] - Render the field with horizontal layout.\n * @property {ControlBaseProps['iconLeft']} [iconLeft] - Icon props for the left icon.\n * @property {ControlBaseProps['iconRight']} [iconRight] - Icon props for the right icon.\n * @property {string} [iconRightName] - Shortcut for the right icon name.\n * @property {ControlBaseProps['iconLeftSize']} [iconLeftSize] - Shortcut for left icon size.\n * @property {ControlBaseProps['iconRightSize']} [iconRightSize] - Shortcut for right icon size.\n * @property {boolean} [hasIconsLeft] - Force the left icon container.\n * @property {boolean} [hasIconsRight] - Force the right icon container.\n * @property {boolean} [isLoading] - Show a loading indicator on the control.\n * @property {boolean} [isExpanded] - Expand the control to fill its container.\n * @property {ControlBaseProps['size']} [controlSize] - Size of the wrapping Control.\n * @property {React.ReactNode} [message] - Help/validation text below the input.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [messageColor] - Message color.\n * @property {string} [fieldClassName] - Additional CSS classes for the Field wrapper.\n * @property {string} [controlClassName] - Additional CSS classes for the Control wrapper.\n */\nexport interface TimeInputProps extends TimeInputBaseProps {\n label?: React.ReactNode;\n labelSize?: FieldProps['labelSize'];\n labelProps?: FieldProps['labelProps'];\n horizontal?: boolean;\n iconLeft?: ControlBaseProps['iconLeft'];\n iconRight?: ControlBaseProps['iconRight'];\n iconRightName?: string;\n iconLeftSize?: ControlBaseProps['iconLeftSize'];\n iconRightSize?: ControlBaseProps['iconRightSize'];\n hasIconsLeft?: boolean;\n hasIconsRight?: boolean;\n isLoading?: boolean;\n isExpanded?: boolean;\n controlSize?: ControlBaseProps['size'];\n message?: React.ReactNode;\n messageColor?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n fieldClassName?: string;\n controlClassName?: string;\n}\n\n/**\n * TimeInput is a form input that opens a popover spinner for time-of-day\n * selection. Supports 12h/24h, optional seconds, custom step increments,\n * min/max bounds, an unselectable-times predicate, and a native\n * `<input type=\"time\">` fallback for touch devices.\n *\n * @function\n * @param {TimeInputProps} props\n * @returns {JSX.Element}\n *\n * @example\n * <TimeInput label=\"Departure\" defaultValue={new Date()} />\n *\n * @example\n * <TimeInput label=\"Slot\" hourFormat=\"12\" incrementMinutes={15} />\n */\nexport const TimeInput = forwardRef<HTMLInputElement, TimeInputProps>(\n (\n {\n label,\n labelSize,\n labelProps,\n horizontal,\n iconLeft,\n iconRight,\n iconLeftName = 'clock',\n iconRightName,\n iconLeftSize,\n iconRightSize,\n hasIconsLeft,\n hasIconsRight,\n isLoading,\n isExpanded,\n controlSize,\n message,\n messageColor,\n fieldClassName,\n controlClassName,\n ...baseProps\n },\n ref\n ) => {\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n\n // The right-side launcher is on by default; suppress it while the Control\n // shows its loading spinner (also on the right) unless explicitly set.\n let content: React.ReactNode = (\n <TimeInputBase\n ref={ref}\n {...baseProps}\n triggerIcon={baseProps.triggerIcon ?? !isLoading}\n />\n );\n\n // Inline mode renders a bare panel with no input, so the Control's\n // icon-left container has nothing to anchor to. Skip the Control wrap.\n if (!insideControl && !baseProps.inline) {\n content = (\n <Control\n iconLeft={iconLeft}\n iconRight={iconRight}\n iconLeftName={iconLeftName}\n iconRightName={iconRightName}\n iconLeftSize={iconLeftSize}\n iconRightSize={iconRightSize}\n hasIconsLeft={hasIconsLeft || !!iconLeftName}\n hasIconsRight={hasIconsRight}\n isLoading={isLoading}\n isExpanded={isExpanded}\n size={controlSize}\n className={controlClassName}\n >\n {content}\n </Control>\n );\n }\n\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n }\n);\n\nTimeInput.displayName = 'TimeInput';\n\nexport default TimeInput;\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { useBulmaClasses, BulmaClassesProps } from '../helpers/useBulmaClasses';\nimport {\n PickerPosition,\n HourFormat,\n DayOfWeek,\n PickerLabels,\n mergeLabels,\n} from './_pickerInternals/pickerTypes';\nimport {\n formatDateTime,\n formatTime,\n hourCycleFromFormat,\n parseDate,\n DateFormatOption,\n DEFAULT_DATETIME_FORMAT,\n} from './_pickerInternals/formatters';\nimport {\n isWithin,\n setTimeOfDay,\n clampDate,\n isSameDay,\n} from './_pickerInternals/dateUtils';\nimport { Calendar } from './_pickerInternals/Calendar';\nimport { TimeWheels } from './_pickerInternals/TimeWheels';\nimport { PickerPopover } from './_pickerInternals/PickerPopover';\nimport { useNativeMobilePicker } from './_pickerInternals/useNativeMobilePicker';\nimport { useSegmentedEntry } from './_pickerInternals/useSegmentedEntry';\nimport { Icon } from '../elements/Icon';\n\nconst toIsoDateTime = (d: Date, withSeconds: boolean): string => {\n const yyyy = d.getFullYear();\n const mo = String(d.getMonth() + 1).padStart(2, '0');\n const dd = String(d.getDate()).padStart(2, '0');\n const hh = String(d.getHours()).padStart(2, '0');\n const mm = String(d.getMinutes()).padStart(2, '0');\n const ss = String(d.getSeconds()).padStart(2, '0');\n return withSeconds\n ? `${yyyy}-${mo}-${dd}T${hh}:${mm}:${ss}`\n : `${yyyy}-${mo}-${dd}T${hh}:${mm}`;\n};\n\nconst fromIsoDateTime = (s: string): Date | null => {\n // The HTML datetime-local value may carry fractional seconds (the spec\n // allows them and some engines normalize to `:ss.sss`); accept and drop.\n const m =\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.\\d{1,3})?)?$/.exec(\n s\n );\n if (!m) return null;\n return new Date(\n Number(m[1]),\n Number(m[2]) - 1,\n Number(m[3]),\n Number(m[4]),\n Number(m[5]),\n m[6] ? Number(m[6]) : 0,\n 0\n );\n};\n\n/**\n * Props for the raw DateTimeInput base. Use the higher-level `DateTimeInput`\n * for Field/Control composition. Combines the prop set of `DateInputBaseProps`\n * and `TimeInputBaseProps`.\n *\n * @property {Date | null} [value] - Controlled selected date-time.\n * @property {Date | null} [defaultValue] - Initial value for uncontrolled usage.\n * @property {(d: Date | null) => void} [onChange] - Fired when either half changes.\n * @property {() => void} [onOpen] - Fired when the popover opens.\n * @property {() => void} [onClose] - Fired when the popover closes.\n * @property {Date} [min] - Lower bound for the combined date-time.\n * @property {Date} [max] - Upper bound for the combined date-time.\n * @property {boolean} [disabled] - Disable the input.\n * @property {boolean} [readOnly] - Read-only input.\n * @property {string} [placeholder] - Placeholder text.\n * @property {DateFormatOption} [format] - Token format string or `Intl.DateTimeFormat` options. Default `'YYYY-MM-DD HH:mm'`.\n * @property {(s: string) => Date | null} [parse] - Custom parser.\n * @property {string} [locale] - BCP-47 locale tag.\n * @property {boolean} [inline] - Render the panel inline (no popover).\n * @property {boolean | 'auto'} [mobileNative] - Use native `<input type=\"datetime-local\">` on coarse-pointer devices.\n * @property {boolean} [editable] - Allow segmented keyboard typing in the input (type the date-time directly, auto-advancing across segments). Default `true`.\n * @property {boolean} [popover] - Whether the calendar + time popover exists. `false` makes the field input-only (segmented typing with no popover). Default `true`.\n * @property {boolean} [openOnFocus] - Open the popover on focus. Default `true`.\n * @property {boolean} [closeOnSelect] - Close after selection. Default `false`.\n * @property {PickerPosition} [position] - Popover anchor position.\n * @property {boolean} [appendToBody] - Render the popover into `document.body` via portal.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier.\n * @property {'small'|'medium'|'large'} [size] - Size variant.\n * @property {boolean} [isRounded] - Rounded input corners.\n * @property {(d: Date) => boolean} [shouldDisableDate] - Predicate for disabled dates. Blocked dates can't be picked in the calendar and are rejected by manual typing; during entry the predicate receives the full candidate date-time, so prefer day-based checks.\n * @property {Date[]} [unselectableDates] - Convenience array of disabled dates, matched by calendar day; also rejected by manual typing.\n * @property {DayOfWeek} [firstDayOfWeek] - Day the calendar week starts on.\n * @property {string[]} [dayNames] - Override the 7 day-name labels.\n * @property {string[]} [monthNames] - Override the 12 month-name labels.\n * @property {boolean} [nearbyMonthDays] - Show dimmed dates from adjacent months.\n * @property {HourFormat} [hourFormat] - `'12'` or `'24'`. Default `'24'`.\n * @property {boolean} [enableSeconds] - Show a seconds column. Note: iOS Safari's native datetime-local picker has no seconds wheel; combine with `mobileNative={false}` if a seconds wheel is required on iOS.\n * @property {number} [incrementHours] - Hour step.\n * @property {number} [incrementMinutes] - Minute step.\n * @property {number} [incrementSeconds] - Second step.\n * @property {(d: Date) => boolean} [unselectableTimes] - Predicate for blocked times (the wheels skip ahead; manual typing rejects them).\n * @property {string} [iconLeftName] - Decorative left icon glyph for the wrapping Control (shown by default; set to '' to hide).\n * @property {boolean} [triggerIcon] - Show a clickable launcher button on the right that toggles the popover. Default `true`.\n * @property {string} [triggerIconName] - Glyph name for the right launcher button. Default `'chevron-down'`.\n * @property {boolean} [audioTick] - Play a short audible tick on each time-wheel crossing. Default `false`.\n * @property {boolean} [haptics] - Auto-route tactile feedback per wheel tick (vibrate on Android, audio thunk on iOS). Default `false`.\n */\nexport interface DateTimeInputBaseProps\n extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'size'\n | 'color'\n | 'min'\n | 'max'\n | 'type'\n | 'popover'\n >,\n Omit<BulmaClassesProps, 'color'> {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (d: Date | null) => void;\n onOpen?: () => void;\n onClose?: () => void;\n min?: Date;\n max?: Date;\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n format?: DateFormatOption;\n parse?: (s: string) => Date | null;\n locale?: string;\n inline?: boolean;\n mobileNative?: boolean | 'auto';\n editable?: boolean;\n popover?: boolean;\n openOnFocus?: boolean;\n closeOnSelect?: boolean;\n position?: PickerPosition;\n appendToBody?: boolean;\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n size?: 'small' | 'medium' | 'large';\n isRounded?: boolean;\n // date subset\n shouldDisableDate?: (d: Date) => boolean;\n unselectableDates?: Date[];\n firstDayOfWeek?: DayOfWeek;\n dayNames?: string[];\n monthNames?: string[];\n nearbyMonthDays?: boolean;\n // time subset\n hourFormat?: HourFormat;\n enableSeconds?: boolean;\n incrementHours?: number;\n incrementMinutes?: number;\n incrementSeconds?: number;\n unselectableTimes?: (d: Date) => boolean;\n iconLeftName?: string;\n triggerIcon?: boolean;\n triggerIconName?: string;\n audioTick?: boolean;\n haptics?: boolean;\n /** Optional translatable string overrides. */\n labels?: PickerLabels;\n}\n\n/**\n * Raw DateTimeInput — combined input + calendar + time spinner without\n * Field/Control wrapping. Use `DateTimeInput` for the convenience wrapper.\n *\n * @function\n * @param {DateTimeInputBaseProps} props\n * @returns {JSX.Element}\n */\nexport const DateTimeInputBase = forwardRef<\n HTMLInputElement,\n DateTimeInputBaseProps\n>((props, ref) => {\n const {\n value: controlledValue,\n defaultValue,\n onChange,\n onOpen,\n onClose,\n min,\n max,\n disabled,\n readOnly,\n placeholder,\n format,\n parse,\n locale,\n inline = false,\n mobileNative = 'auto',\n editable = true,\n popover = true,\n openOnFocus = true,\n closeOnSelect = false,\n position = 'bottom-left',\n appendToBody = false,\n color,\n size,\n isRounded,\n shouldDisableDate,\n unselectableDates,\n firstDayOfWeek = 0,\n dayNames,\n monthNames,\n nearbyMonthDays = true,\n hourFormat = '24',\n enableSeconds = false,\n incrementHours = 1,\n // Step between visible wheel values; 1 gives the iOS-style every-minute wheel.\n incrementMinutes = 1,\n incrementSeconds = 1,\n unselectableTimes,\n className,\n name,\n form,\n required,\n id,\n onFocus,\n onClick,\n onKeyDown,\n onBlur,\n iconLeftName: _iconLeftName,\n triggerIcon = true,\n triggerIconName = 'chevron-down',\n audioTick = false,\n haptics = false,\n labels,\n ...rest\n } = props;\n const t = mergeLabels(labels);\n\n // Platform-appropriate feedback routing for the time wheel: on iOS (no\n // navigator.vibrate) the audio thunk fills in; on Android the real haptic\n // fires and no audio is layered on. `audioTick` always wins.\n const hasVibrate =\n typeof navigator !== 'undefined' && typeof navigator.vibrate === 'function';\n const effectiveAudioTick = audioTick || (haptics && !hasVibrate);\n\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<Date | null>(\n defaultValue ?? null\n );\n const value = isControlled ? (controlledValue ?? null) : internalValue;\n\n const initialFocused = useMemo(\n () => clampDate(value ?? new Date(), min, max),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const [focusedDate, setFocusedDate] = useState<Date>(initialFocused);\n // Re-clamp focusedDate when min/max change so the focused cell stays valid.\n useEffect(() => {\n setFocusedDate(prev => clampDate(prev, min, max));\n }, [min, max]);\n\n const defaultFormat: DateFormatOption =\n format ??\n (hourFormat === '12'\n ? enableSeconds\n ? 'YYYY-MM-DD hh:mm:ss A'\n : 'YYYY-MM-DD hh:mm A'\n : enableSeconds\n ? 'YYYY-MM-DD HH:mm:ss'\n : DEFAULT_DATETIME_FORMAT);\n\n // The displayed format is the source of truth for the hour cycle: an explicit\n // 12-hour `format` must drive a 12-hour wheel + pill even when `hourFormat`\n // was left at its default. Fall back to the raw prop only when the cycle\n // can't be read from the format (an Intl-options object, or no hour token).\n const effectiveHourFormat = hourCycleFromFormat(defaultFormat) ?? hourFormat;\n\n const [open, setOpenState] = useState(false);\n // The time wheels are collapsed by default (iOS-style); the user reveals\n // them by clicking the time value in the footer.\n const [timeOpen, setTimeOpen] = useState(false);\n const [text, setText] = useState<string>(\n value ? formatDateTime(value, defaultFormat, locale) : ''\n );\n\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n // Snapshot of the value when the popover opens, so Reset can revert the\n // edits made in this session (reverting to empty if it opened empty).\n const valueAtOpenRef = useRef<Date | null>(null);\n const reactId = useId();\n const popoverId = id ? `${id}-popover` : `picker-${reactId}`;\n\n const { bulmaHelperClasses, rest: cleanRest } = useBulmaClasses(rest);\n\n const { shouldUseNative, isSmallViewport } = useNativeMobilePicker({\n force: mobileNative === 'auto' ? undefined : mobileNative,\n });\n const useNative = !inline && shouldUseNative;\n const wheelItemHeight = isSmallViewport ? 40 : 32;\n\n // Time-only format for the footer's \"Time 5:07 PM\" display.\n const timeDisplayFormat =\n effectiveHourFormat === '12'\n ? enableSeconds\n ? 'h:mm:ss A'\n : 'h:mm A'\n : enableSeconds\n ? 'HH:mm:ss'\n : 'HH:mm';\n\n const inputClass = usePrefixedClassNames('input', {\n [`is-${color}`]: !!color,\n [`is-${size}`]: !!size,\n 'is-rounded': isRounded,\n });\n const containerClass = usePrefixedClassNames('datetimeinput-container');\n const triggerClass = usePrefixedClassNames('datetimeinput-trigger');\n const panelClass = usePrefixedClassNames('datetimeinput');\n const calendarWrapClass = usePrefixedClassNames(\n 'datetimeinput-calendar-wrap'\n );\n const timeOverlayClass = usePrefixedClassNames('datetimeinput-time-overlay');\n const timeCardClass = usePrefixedClassNames('datetimeinput-time-card');\n const footerClass = usePrefixedClassNames('datetimeinput-footer');\n const footerTimeClass = usePrefixedClassNames('datetimeinput-footer-time');\n const footerActionsClass = usePrefixedClassNames(\n 'datetimeinput-footer-actions'\n );\n const footerResetClass = usePrefixedClassNames('datetimeinput-footer-reset');\n const footerDoneClass = usePrefixedClassNames('datetimeinput-footer-done');\n const footerTimePillClass = usePrefixedClassNames(\n 'datetimeinput-footer-time-pill'\n );\n\n const setOpen = useCallback(\n (next: boolean) => {\n setOpenState(prev => {\n if (prev === next) return prev;\n if (next) {\n valueAtOpenRef.current = value;\n onOpen?.();\n } else {\n onClose?.();\n }\n return next;\n });\n },\n [onOpen, onClose, value]\n );\n\n useEffect(() => {\n setText(value ? formatDateTime(value, defaultFormat, locale) : '');\n }, [value, defaultFormat, locale]);\n\n // Collapse the time wheels whenever the popover closes.\n useEffect(() => {\n if (!open) setTimeOpen(false);\n }, [open]);\n\n const commitValue = useCallback(\n (next: Date | null) => {\n if (!isControlled) setInternalValue(next);\n // Keep the calendar's focused cell tracking typed / parsed values.\n if (next) setFocusedDate(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const handleDateSelect = useCallback(\n (d: Date) => {\n const merged = setTimeOfDay(d, {\n hours: value?.getHours() ?? 0,\n minutes: value?.getMinutes() ?? 0,\n seconds: enableSeconds ? (value?.getSeconds() ?? 0) : undefined,\n });\n if (!isWithin(merged, min, max)) return;\n commitValue(merged);\n setFocusedDate(d);\n },\n [value, enableSeconds, min, max, commitValue]\n );\n\n const handleTimeChange = useCallback(\n (parts: { hours: number; minutes: number; seconds?: number }) => {\n const base = value ?? focusedDate;\n const next = setTimeOfDay(base, parts);\n if (!isWithin(next, min, max)) return;\n commitValue(next);\n },\n [value, focusedDate, min, max, commitValue]\n );\n\n const tryParse = useCallback(\n (s: string): Date | null => {\n const trimmed = s.trim();\n if (!trimmed) return null;\n if (parse) return parse(trimmed);\n const fmt = typeof defaultFormat === 'string' ? defaultFormat : undefined;\n return parseDate(trimmed, fmt ?? DEFAULT_DATETIME_FORMAT, locale);\n },\n [parse, defaultFormat, locale]\n );\n\n // The Date the user edits when starting without a current value (now).\n const makeBaseDate = useCallback((): Date => new Date(), []);\n\n const inputReadOnlyAttr = !!readOnly || !editable;\n const canOpen = !!popover && !disabled && !readOnly;\n\n // Blocking predicate for manual entry, combining the calendar's\n // disabled-day logic with the wheels' unselectable-times predicate. The\n // candidate passed in carries the full date-time, so date predicates\n // should use day-based checks.\n const isBlocked = useMemo(() => {\n if (!shouldDisableDate && !unselectableDates?.length && !unselectableTimes)\n return undefined;\n return (d: Date) =>\n !!shouldDisableDate?.(d) ||\n !!unselectableDates?.some(u => isSameDay(u, d)) ||\n !!unselectableTimes?.(d);\n }, [shouldDisableDate, unselectableDates, unselectableTimes]);\n\n const { inputHandlers } = useSegmentedEntry({\n format: defaultFormat,\n value,\n commitValue,\n formatFn: formatDateTime,\n tryParse,\n text,\n setText,\n makeBaseDate,\n locale,\n min,\n max,\n isBlocked,\n disabled,\n readOnly,\n editable,\n popover,\n openOnFocus,\n closeOnSelect,\n isOpen: open,\n setOpen,\n inputRef,\n containerRef,\n onFocus,\n onClick,\n onKeyDown,\n onBlur,\n });\n\n const combinedRef = useCallback(\n (node: HTMLInputElement | null) => {\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n if (typeof ref === 'function') ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n },\n [ref]\n );\n\n if (useNative) {\n const nativeStep = enableSeconds ? incrementSeconds : incrementMinutes * 60;\n return (\n <input\n {...cleanRest}\n ref={combinedRef}\n type=\"datetime-local\"\n step={nativeStep}\n className={classNames(inputClass, bulmaHelperClasses, className)}\n value={value ? toIsoDateTime(value, enableSeconds) : ''}\n onChange={e => {\n const parsed = e.target.value\n ? fromIsoDateTime(e.target.value)\n : null;\n commitValue(parsed);\n }}\n min={min ? toIsoDateTime(min, enableSeconds) : undefined}\n max={max ? toIsoDateTime(max, enableSeconds) : undefined}\n disabled={disabled}\n readOnly={readOnly}\n placeholder={placeholder}\n name={name}\n form={form}\n required={required}\n id={id}\n />\n );\n }\n\n const spinnerValue = {\n hours: value?.getHours() ?? 0,\n minutes: value?.getMinutes() ?? 0,\n seconds: enableSeconds ? (value?.getSeconds() ?? 0) : undefined,\n };\n\n const panel = (\n <div\n className={panelClass}\n onKeyDown={e => {\n // First Escape collapses the floating time wheels; the popover's own\n // Escape handler (which closes the whole panel) only sees the second.\n if (timeOpen && e.key === 'Escape') {\n e.stopPropagation();\n setTimeOpen(false);\n }\n }}\n >\n <div className={calendarWrapClass}>\n <Calendar\n value={value}\n focusedDate={focusedDate}\n onSelect={handleDateSelect}\n onFocusedDateChange={setFocusedDate}\n min={min}\n max={max}\n shouldDisableDate={shouldDisableDate}\n unselectableDates={unselectableDates}\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n dayNames={dayNames}\n monthNames={monthNames}\n nearbyMonthDays={nearbyMonthDays}\n color={color}\n size={size}\n id={`${popoverId}-cal`}\n autoFocusCell={open}\n labels={labels}\n />\n {timeOpen && (\n <div\n className={timeOverlayClass}\n onClick={e => {\n // Tap outside the wheel card (on the covered calendar area)\n // collapses the wheels without selecting a date, matching the\n // native behavior.\n if (e.target === e.currentTarget) setTimeOpen(false);\n }}\n >\n <div className={timeCardClass}>\n <TimeWheels\n value={spinnerValue}\n onChange={handleTimeChange}\n hourFormat={effectiveHourFormat}\n enableSeconds={enableSeconds}\n incrementHours={incrementHours}\n incrementMinutes={incrementMinutes}\n incrementSeconds={incrementSeconds}\n unselectableTimes={unselectableTimes}\n color={color}\n size={size}\n disabled={disabled}\n id={`${popoverId}-time`}\n labels={labels}\n itemHeight={wheelItemHeight}\n audioTick={effectiveAudioTick}\n onCommit={() => setOpen(false)}\n />\n </div>\n </div>\n )}\n </div>\n <div className={footerClass}>\n <button\n type=\"button\"\n className={footerTimeClass}\n onClick={() => setTimeOpen(o => !o)}\n aria-expanded={timeOpen}\n disabled={disabled}\n >\n <span>{t.time}</span>\n <span className={footerTimePillClass}>\n {value ? formatTime(value, timeDisplayFormat, locale) : '—'}\n </span>\n </button>\n <div className={footerActionsClass}>\n <button\n type=\"button\"\n className={footerResetClass}\n onClick={() => commitValue(valueAtOpenRef.current)}\n >\n {t.reset}\n </button>\n <button\n type=\"button\"\n className={footerDoneClass}\n aria-label={t.done}\n onClick={() => setOpen(false)}\n >\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" aria-hidden=\"true\">\n <path\n d=\"M5 11l4 4 8-8\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n );\n\n if (inline) {\n return (\n <div\n {...cleanRest}\n ref={containerRef}\n className={classNames(containerClass, bulmaHelperClasses, className)}\n >\n {panel}\n {name && (\n <input\n type=\"hidden\"\n name={name}\n form={form}\n value={value ? toIsoDateTime(value, enableSeconds) : ''}\n required={required}\n />\n )}\n </div>\n );\n }\n\n return (\n <div\n ref={containerRef}\n className={classNames(containerClass, bulmaHelperClasses, className)}\n {...cleanRest}\n >\n <input\n ref={combinedRef}\n type=\"text\"\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-controls={popoverId}\n autoComplete=\"off\"\n className={inputClass}\n value={text}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={inputReadOnlyAttr}\n name={name}\n form={form}\n required={required}\n id={id}\n {...inputHandlers}\n />\n {popover && triggerIcon && (\n <button\n type=\"button\"\n className={triggerClass}\n onClick={() => {\n if (canOpen) setOpen(!open);\n }}\n disabled={!canOpen}\n aria-label={t.chooseDateTime}\n aria-haspopup=\"dialog\"\n aria-controls={popoverId}\n aria-expanded={open}\n tabIndex={canOpen ? 0 : -1}\n >\n <Icon name={triggerIconName} size={size} />\n </button>\n )}\n {popover && (\n <PickerPopover\n isOpen={open}\n onClose={() => setOpen(false)}\n anchorRef={containerRef}\n position={position}\n appendToBody={appendToBody}\n ariaLabel={t.chooseDateTime}\n id={popoverId}\n >\n {panel}\n </PickerPopover>\n )}\n </div>\n );\n});\n\nDateTimeInputBase.displayName = 'DateTimeInputBase';\n\nexport default DateTimeInputBase;\n","import React, { forwardRef } from 'react';\nimport { usePrefixedClassNames } from '../helpers/classNames';\nimport { Field, FieldProps } from './Field';\nimport { Control, ControlBaseProps } from './Control';\nimport { DateTimeInputBase, DateTimeInputBaseProps } from './DateTimeInputBase';\nimport { useInsideField, useInsideControl } from './FormContext';\n\n/**\n * Props for the DateTimeInput convenience wrapper. Extends\n * `DateTimeInputBaseProps` with Field-level and Control-level props.\n *\n * @property {React.ReactNode} [label] - Field label.\n * @property {FieldProps['labelSize']} [labelSize] - Size for the label.\n * @property {FieldProps['labelProps']} [labelProps] - Props for the label element.\n * @property {boolean} [horizontal] - Render the field with horizontal layout.\n * @property {ControlBaseProps['iconLeft']} [iconLeft] - Icon props for the left icon.\n * @property {ControlBaseProps['iconRight']} [iconRight] - Icon props for the right icon.\n * @property {string} [iconRightName] - Shortcut for the right icon name.\n * @property {ControlBaseProps['iconLeftSize']} [iconLeftSize] - Shortcut for left icon size.\n * @property {ControlBaseProps['iconRightSize']} [iconRightSize] - Shortcut for right icon size.\n * @property {boolean} [hasIconsLeft] - Force the left icon container.\n * @property {boolean} [hasIconsRight] - Force the right icon container.\n * @property {boolean} [isLoading] - Show a loading indicator on the control.\n * @property {boolean} [isExpanded] - Expand the control to fill its container.\n * @property {ControlBaseProps['size']} [controlSize] - Size of the wrapping Control.\n * @property {React.ReactNode} [message] - Help/validation text below the input.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [messageColor] - Message color.\n * @property {string} [fieldClassName] - Additional CSS classes for the Field wrapper.\n * @property {string} [controlClassName] - Additional CSS classes for the Control wrapper.\n */\nexport interface DateTimeInputProps extends DateTimeInputBaseProps {\n label?: React.ReactNode;\n labelSize?: FieldProps['labelSize'];\n labelProps?: FieldProps['labelProps'];\n horizontal?: boolean;\n iconLeft?: ControlBaseProps['iconLeft'];\n iconRight?: ControlBaseProps['iconRight'];\n iconRightName?: string;\n iconLeftSize?: ControlBaseProps['iconLeftSize'];\n iconRightSize?: ControlBaseProps['iconRightSize'];\n hasIconsLeft?: boolean;\n hasIconsRight?: boolean;\n isLoading?: boolean;\n isExpanded?: boolean;\n controlSize?: ControlBaseProps['size'];\n message?: React.ReactNode;\n messageColor?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n fieldClassName?: string;\n controlClassName?: string;\n}\n\n/**\n * DateTimeInput is a form input that opens a popover combining a calendar\n * (above) and a time spinner (below). Footer offers Today / Now / Clear / OK.\n * Includes a native `<input type=\"datetime-local\">` fallback for touch devices.\n *\n * @function\n * @param {DateTimeInputProps} props\n * @returns {JSX.Element}\n *\n * @example\n * <DateTimeInput label=\"Appointment\" defaultValue={new Date()} />\n *\n * @example\n * <DateTimeInput\n * label=\"When\"\n * hourFormat=\"12\"\n * shouldDisableDate={d => d.getDay() === 0 || d.getDay() === 6}\n * />\n */\nexport const DateTimeInput = forwardRef<HTMLInputElement, DateTimeInputProps>(\n (\n {\n label,\n labelSize,\n labelProps,\n horizontal,\n iconLeft,\n iconRight,\n iconLeftName = 'calendar-alt',\n iconRightName,\n iconLeftSize,\n iconRightSize,\n hasIconsLeft,\n hasIconsRight,\n isLoading,\n isExpanded,\n controlSize,\n message,\n messageColor,\n fieldClassName,\n controlClassName,\n ...baseProps\n },\n ref\n ) => {\n const insideField = useInsideField();\n const insideControl = useInsideControl();\n const helpClass = usePrefixedClassNames('help', {\n [`is-${messageColor}`]: !!messageColor,\n });\n\n // The right-side launcher is on by default; suppress it while the Control\n // shows its loading spinner (also on the right) unless explicitly set.\n let content: React.ReactNode = (\n <DateTimeInputBase\n ref={ref}\n {...baseProps}\n triggerIcon={baseProps.triggerIcon ?? !isLoading}\n />\n );\n\n // Inline mode renders a bare picker with no input, so the Control's\n // icon-left container has nothing to anchor to. Skip the Control wrap.\n if (!insideControl && !baseProps.inline) {\n content = (\n <Control\n iconLeft={iconLeft}\n iconRight={iconRight}\n iconLeftName={iconLeftName}\n iconRightName={iconRightName}\n iconLeftSize={iconLeftSize}\n iconRightSize={iconRightSize}\n hasIconsLeft={hasIconsLeft || !!iconLeftName}\n hasIconsRight={hasIconsRight}\n isLoading={isLoading}\n isExpanded={isExpanded}\n size={controlSize}\n className={controlClassName}\n >\n {content}\n </Control>\n );\n }\n\n const messageEl = message ? <p className={helpClass}>{message}</p> : null;\n\n if (!insideField) {\n return (\n <Field\n label={label}\n labelSize={labelSize}\n labelProps={labelProps}\n horizontal={horizontal}\n className={fieldClassName}\n >\n {content}\n {messageEl}\n </Field>\n );\n }\n\n return (\n <>\n {content}\n {messageEl}\n </>\n );\n }\n);\n\nDateTimeInput.displayName = 'DateTimeInput';\n\nexport default DateTimeInput;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Type for grid cell span values.\n */\nexport type CellSpanValue = number;\n\n/**\n * Props for the Cell component.\n *\n * @property {number} [colStart] - Which column the cell starts at (Bulma: is-col-start-x).\n * @property {number} [colFromEnd] - Which column the cell ends at, counting from the end (Bulma: is-col-from-end-x).\n * @property {CellSpanValue} [colSpan] - How many columns the cell will span (Bulma: is-col-span-x).\n * @property {number} [rowStart] - Which row the cell starts at (Bulma: is-row-start-x).\n * @property {number} [rowFromEnd] - Which row the cell ends at, counting from the end (Bulma: is-row-from-end-x).\n * @property {CellSpanValue} [rowSpan] - How many rows the cell will span (Bulma: is-row-span-x).\n * @property {string} [className] - Additional CSS class names.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the cell.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Children to render inside the cell.\n */\nexport interface CellProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n colStart?: number;\n colFromEnd?: number;\n colSpan?: CellSpanValue;\n rowStart?: number;\n rowFromEnd?: number;\n rowSpan?: CellSpanValue;\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Cell component for CSS Grid layouts.\n *\n * @function\n * @param {CellProps} props - Props for the Cell component.\n * @returns {JSX.Element} The rendered grid cell.\n * @see {@link https://bulma.io/documentation/grid/ | Bulma Grid documentation}\n */\nexport const Cell: React.FC<CellProps> = ({\n colStart,\n colFromEnd,\n colSpan,\n rowStart,\n rowFromEnd,\n rowSpan,\n className,\n textColor,\n color: _fieldColor,\n bgColor,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('cell');\n\n // Build cell grid classes with prefixes\n const cellGridClasses = usePrefixedClassNames('', {\n [`is-col-start-${colStart}`]: colStart !== undefined && colStart !== null,\n [`is-col-from-end-${colFromEnd}`]:\n colFromEnd !== undefined && colFromEnd !== null,\n [`is-col-span-${colSpan}`]: colSpan !== undefined && colSpan !== null,\n [`is-row-start-${rowStart}`]: rowStart !== undefined && rowStart !== null,\n [`is-row-from-end-${rowFromEnd}`]:\n rowFromEnd !== undefined && rowFromEnd !== null,\n [`is-row-span-${rowSpan}`]: rowSpan !== undefined && rowSpan !== null,\n });\n\n const cellClasses = classNames(\n mainClass,\n cellGridClasses,\n className,\n bulmaHelperClasses\n );\n\n return (\n <div className={cellClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Allowed gap values for Bulma grid.\n */\nexport type BulmaGapValue = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n/**\n * Allowed minimum column values for Bulma grid.\n */\nexport type BulmaMinColValue =\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12\n | 13\n | 14\n | 15\n | 16\n | 17\n | 18\n | 19\n | 20\n | 21\n | 22\n | 23\n | 24\n | 25\n | 26\n | 27\n | 28\n | 29\n | 30\n | 31\n | 32;\n/**\n * Allowed fixed grid columns for Bulma grid.\n */\nexport type BulmaFixedGridCols =\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12;\n/**\n * Allowed fixed grid columns prop for Bulma grid.\n */\nexport type BulmaFixedGridColsProp = BulmaFixedGridCols | 'auto';\n\n/**\n * Props for the Grid component.\n *\n * @property {boolean} [isFixed] - Use a fixed grid layout (Bulma's .fixed-grid > .grid).\n * @property {BulmaGapValue} [gap] - Main gap for grid (applies is-gap-X, 0-8).\n * @property {BulmaGapValue} [columnGap] - Column gap for grid (applies is-column-gap-X, 0-8).\n * @property {BulmaGapValue} [rowGap] - Row gap for grid (applies is-row-gap-X, 0-8).\n * @property {BulmaMinColValue} [minCol] - Minimum column width for the grid (applies is-col-min-X, 1-32).\n * @property {BulmaFixedGridColsProp} [fixedCols] - For fixed grid only: explicit column count (applies has-X-cols, 0-12), or 'auto' for has-auto-count.\n * @property {BulmaFixedGridCols} [fixedColsMobile] - For fixed grid only: explicit column count for mobile.\n * @property {BulmaFixedGridCols} [fixedColsTablet] - For fixed grid only: explicit column count for tablet.\n * @property {BulmaFixedGridCols} [fixedColsDesktop] - For fixed grid only: explicit column count for desktop.\n * @property {BulmaFixedGridCols} [fixedColsWidescreen] - For fixed grid only: explicit column count for widescreen.\n * @property {BulmaFixedGridCols} [fixedColsFullhd] - For fixed grid only: explicit column count for fullhd.\n * @property {string} [className] - Additional CSS class names.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color (Bulma color, 'inherit', or 'current').\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier for the grid.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color (Bulma color, 'inherit', or 'current').\n * @property {React.ReactNode} [children] - Children to render inside the grid.\n */\nexport interface GridProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n isFixed?: boolean;\n gap?: BulmaGapValue;\n columnGap?: BulmaGapValue;\n rowGap?: BulmaGapValue;\n minCol?: BulmaMinColValue;\n fixedCols?: BulmaFixedGridColsProp;\n fixedColsMobile?: BulmaFixedGridCols;\n fixedColsTablet?: BulmaFixedGridCols;\n fixedColsDesktop?: BulmaFixedGridCols;\n fixedColsWidescreen?: BulmaFixedGridCols;\n fixedColsFullhd?: BulmaFixedGridCols;\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Grid component for CSS Grid layouts, supports both fixed and responsive grid modes.\n *\n * @function\n * @param {GridProps} props - Props for the Grid component.\n * @returns {JSX.Element} The rendered grid.\n * @see {@link https://bulma.io/documentation/grid/ | Bulma Grid documentation}\n */\nexport const Grid: React.FC<GridProps> = ({\n isFixed = false,\n gap,\n columnGap,\n rowGap,\n minCol,\n fixedCols,\n fixedColsMobile,\n fixedColsTablet,\n fixedColsDesktop,\n fixedColsWidescreen,\n fixedColsFullhd,\n className,\n textColor,\n color: _fieldColor,\n bgColor,\n children,\n ...props\n}) => {\n // Map textColor and bgColor to color and backgroundColor for useBulmaClasses\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('grid');\n\n // Build grid inner classes with prefixes\n const gridInnerClasses = usePrefixedClassNames('', {\n [`is-gap-${gap}`]: gap !== undefined && gap !== null,\n [`is-column-gap-${columnGap}`]:\n columnGap !== undefined && columnGap !== null,\n [`is-row-gap-${rowGap}`]: rowGap !== undefined && rowGap !== null,\n [`is-col-min-${minCol}`]: minCol !== undefined && minCol !== null,\n });\n\n // Build fixed grid classes with prefixes (always called, used conditionally)\n const fixedGridClasses = usePrefixedClassNames('fixed-grid', {\n 'has-auto-count': fixedCols === 'auto',\n [`has-${fixedCols}-cols`]: fixedCols !== undefined && fixedCols !== 'auto',\n [`has-${fixedColsMobile}-cols-mobile`]:\n fixedColsMobile !== undefined && fixedColsMobile !== null,\n [`has-${fixedColsTablet}-cols-tablet`]:\n fixedColsTablet !== undefined && fixedColsTablet !== null,\n [`has-${fixedColsDesktop}-cols-desktop`]:\n fixedColsDesktop !== undefined && fixedColsDesktop !== null,\n [`has-${fixedColsWidescreen}-cols-widescreen`]:\n fixedColsWidescreen !== undefined && fixedColsWidescreen !== null,\n [`has-${fixedColsFullhd}-cols-fullhd`]:\n fixedColsFullhd !== undefined && fixedColsFullhd !== null,\n });\n\n const gridClasses = classNames(\n mainClass,\n gridInnerClasses,\n bulmaHelperClasses,\n className\n );\n\n if (isFixed) {\n return (\n <div className={fixedGridClasses}>\n <div className={gridClasses} {...rest}>\n {children}\n </div>\n </div>\n );\n }\n\n // Standard Bulma grid (not fixed)\n return (\n <div className={gridClasses} {...rest}>\n {children}\n </div>\n );\n};\n","import React, { useEffect, useMemo, ReactNode, CSSProperties } from 'react';\nimport classNames from './classNames';\nimport { useBulmaClasses, BulmaClassesProps } from './useBulmaClasses';\n\n// --- FULL Bulma v1 CSS variable keys (auto-generated from CSSVAR_KEYS) ---\nconst bulmaCssVars = [\n // scheme\n '--bulma-scheme-h',\n '--bulma-scheme-s',\n '--bulma-light-l',\n '--bulma-light-invert-l',\n '--bulma-dark-l',\n '--bulma-dark-invert-l',\n '--bulma-soft-l',\n '--bulma-bold-l',\n '--bulma-soft-invert-l',\n '--bulma-bold-invert-l',\n '--bulma-hover-background-l-delta',\n '--bulma-active-background-l-delta',\n '--bulma-hover-border-l-delta',\n '--bulma-active-border-l-delta',\n '--bulma-hover-color-l-delta',\n '--bulma-active-color-l-delta',\n '--bulma-hover-shadow-a-delta',\n '--bulma-active-shadow-a-delta',\n // colors\n '--bulma-primary-h',\n '--bulma-primary-s',\n '--bulma-primary-l',\n '--bulma-link-h',\n '--bulma-link-s',\n '--bulma-link-l',\n '--bulma-info-h',\n '--bulma-info-s',\n '--bulma-info-l',\n '--bulma-success-h',\n '--bulma-success-s',\n '--bulma-success-l',\n '--bulma-warning-h',\n '--bulma-warning-s',\n '--bulma-warning-l',\n '--bulma-danger-h',\n '--bulma-danger-s',\n '--bulma-danger-l',\n // typography\n '--bulma-family-primary',\n '--bulma-family-secondary',\n '--bulma-family-code',\n '--bulma-size-small',\n '--bulma-size-normal',\n '--bulma-size-medium',\n '--bulma-size-large',\n '--bulma-weight-light',\n '--bulma-weight-normal',\n '--bulma-weight-medium',\n '--bulma-weight-semibold',\n '--bulma-weight-bold',\n '--bulma-weight-extrabold',\n // other\n '--bulma-block-spacing',\n '--bulma-duration',\n '--bulma-easing',\n '--bulma-radius-small',\n '--bulma-radius',\n '--bulma-radius-medium',\n '--bulma-radius-large',\n '--bulma-radius-rounded',\n '--bulma-speed',\n '--bulma-arrow-color',\n '--bulma-loading-color',\n '--bulma-burger-h',\n '--bulma-burger-s',\n '--bulma-burger-l',\n '--bulma-burger-border-radius',\n '--bulma-burger-gap',\n '--bulma-burger-item-height',\n '--bulma-burger-item-width',\n // generic\n '--bulma-body-background-color',\n '--bulma-body-size',\n '--bulma-body-min-width',\n '--bulma-body-rendering',\n '--bulma-body-family',\n '--bulma-body-overflow-x',\n '--bulma-body-overflow-y',\n '--bulma-body-color',\n '--bulma-body-font-size',\n '--bulma-body-weight',\n '--bulma-body-line-height',\n '--bulma-code-family',\n '--bulma-code-padding',\n '--bulma-code-weight',\n '--bulma-code-size',\n '--bulma-small-font-size',\n '--bulma-hr-background-color',\n '--bulma-hr-height',\n '--bulma-hr-margin',\n '--bulma-strong-color',\n '--bulma-strong-weight',\n '--bulma-pre-font-size',\n '--bulma-pre-padding',\n '--bulma-pre-code-font-size',\n // skeleton\n '--bulma-skeleton-background',\n '--bulma-skeleton-radius',\n '--bulma-skeleton-block-min-height',\n '--bulma-skeleton-lines-gap',\n '--bulma-skeleton-line-height',\n // breadcrumb\n '--bulma-breadcrumb-item-color',\n '--bulma-breadcrumb-item-hover-color',\n '--bulma-breadcrumb-item-active-color',\n '--bulma-breadcrumb-item-padding-vertical',\n '--bulma-breadcrumb-item-padding-horizontal',\n '--bulma-breadcrumb-item-separator-color',\n // card\n '--bulma-card-color',\n '--bulma-card-background-color',\n '--bulma-card-shadow',\n '--bulma-card-radius',\n '--bulma-card-header-background-color',\n '--bulma-card-header-color',\n '--bulma-card-header-padding',\n '--bulma-card-header-shadow',\n '--bulma-card-header-weight',\n '--bulma-card-content-background-color',\n '--bulma-card-content-padding',\n '--bulma-card-footer-background-color',\n '--bulma-card-footer-border-top',\n '--bulma-card-footer-padding',\n '--bulma-card-media-margin',\n // dropdown\n '--bulma-dropdown-menu-min-width',\n '--bulma-dropdown-content-background-color',\n '--bulma-dropdown-content-offset',\n '--bulma-dropdown-content-padding-bottom',\n '--bulma-dropdown-content-padding-top',\n '--bulma-dropdown-content-radius',\n '--bulma-dropdown-content-shadow',\n '--bulma-dropdown-content-z',\n '--bulma-dropdown-item-h',\n '--bulma-dropdown-item-s',\n '--bulma-dropdown-item-l',\n '--bulma-dropdown-item-background-l',\n '--bulma-dropdown-item-background-l-delta',\n '--bulma-dropdown-item-hover-background-l-delta',\n '--bulma-dropdown-item-active-background-l-delta',\n '--bulma-dropdown-item-color-l',\n '--bulma-dropdown-item-selected-h',\n '--bulma-dropdown-item-selected-s',\n '--bulma-dropdown-item-selected-l',\n '--bulma-dropdown-item-selected-background-l',\n '--bulma-dropdown-item-selected-color-l',\n '--bulma-dropdown-divider-background-color',\n // menu\n '--bulma-menu-item-h',\n '--bulma-menu-item-s',\n '--bulma-menu-item-l',\n '--bulma-menu-item-background-l',\n '--bulma-menu-item-background-l-delta',\n '--bulma-menu-item-hover-background-l-delta',\n '--bulma-menu-item-active-background-l-delta',\n '--bulma-menu-item-color-l',\n '--bulma-menu-item-radius',\n '--bulma-menu-item-selected-h',\n '--bulma-menu-item-selected-s',\n '--bulma-menu-item-selected-l',\n '--bulma-menu-item-selected-background-l',\n '--bulma-menu-item-selected-color-l',\n '--bulma-menu-list-border-left',\n '--bulma-menu-list-line-height',\n '--bulma-menu-list-link-padding',\n '--bulma-menu-nested-list-margin',\n '--bulma-menu-nested-list-padding-left',\n '--bulma-menu-label-color',\n '--bulma-menu-label-font-size',\n '--bulma-menu-label-letter-spacing',\n '--bulma-menu-label-spacing',\n // message\n '--bulma-message-h',\n '--bulma-message-s',\n '--bulma-message-background-l',\n '--bulma-message-border-l',\n '--bulma-message-border-l-delta',\n '--bulma-message-border-style',\n '--bulma-message-border-width',\n '--bulma-message-color-l',\n '--bulma-message-radius',\n '--bulma-message-header-weight',\n '--bulma-message-header-padding',\n '--bulma-message-header-radius',\n '--bulma-message-header-body-border-width',\n '--bulma-message-header-background-l',\n '--bulma-message-header-color-l',\n '--bulma-message-body-border-width',\n '--bulma-message-body-color',\n '--bulma-message-body-padding',\n '--bulma-message-body-radius',\n '--bulma-message-body-pre-code-background-color',\n // modal\n '--bulma-modal-z',\n '--bulma-modal-background-background-color',\n '--bulma-modal-content-width',\n '--bulma-modal-content-margin-mobile',\n '--bulma-modal-content-spacing-mobile',\n '--bulma-modal-content-spacing-tablet',\n '--bulma-modal-close-dimensions',\n '--bulma-modal-close-right',\n '--bulma-modal-close-top',\n '--bulma-modal-card-spacing',\n '--bulma-modal-card-head-background-color',\n '--bulma-modal-card-head-padding',\n '--bulma-modal-card-head-radius',\n '--bulma-modal-card-title-color',\n '--bulma-modal-card-title-line-height',\n '--bulma-modal-card-title-size',\n '--bulma-modal-card-foot-background-color',\n '--bulma-modal-card-foot-radius',\n '--bulma-modal-card-body-background-color',\n '--bulma-modal-card-body-padding',\n // navbar\n '--bulma-navbar-h',\n '--bulma-navbar-s',\n '--bulma-navbar-l',\n '--bulma-navbar-background-color',\n '--bulma-navbar-box-shadow-size',\n '--bulma-navbar-box-shadow-color',\n '--bulma-navbar-padding-vertical',\n '--bulma-navbar-padding-horizontal',\n '--bulma-navbar-z',\n '--bulma-navbar-fixed-z',\n '--bulma-navbar-item-background-a',\n '--bulma-navbar-item-background-l',\n '--bulma-navbar-item-background-l-delta',\n '--bulma-navbar-item-hover-background-l-delta',\n '--bulma-navbar-item-active-background-l-delta',\n '--bulma-navbar-item-color-l',\n '--bulma-navbar-item-selected-h',\n '--bulma-navbar-item-selected-s',\n '--bulma-navbar-item-selected-l',\n '--bulma-navbar-item-selected-background-l',\n '--bulma-navbar-item-selected-color-l',\n '--bulma-navbar-item-img-max-height',\n '--bulma-navbar-burger-color',\n '--bulma-navbar-tab-hover-background-color',\n '--bulma-navbar-tab-hover-border-bottom-color',\n '--bulma-navbar-tab-active-color',\n '--bulma-navbar-tab-active-background-color',\n '--bulma-navbar-tab-active-border-bottom-color',\n '--bulma-navbar-tab-active-border-bottom-style',\n '--bulma-navbar-tab-active-border-bottom-width',\n '--bulma-navbar-dropdown-background-color',\n '--bulma-navbar-dropdown-border-l',\n '--bulma-navbar-dropdown-border-color',\n '--bulma-navbar-dropdown-border-style',\n '--bulma-navbar-dropdown-border-width',\n '--bulma-navbar-dropdown-offset',\n '--bulma-navbar-dropdown-arrow',\n '--bulma-navbar-dropdown-radius',\n '--bulma-navbar-dropdown-z',\n '--bulma-navbar-dropdown-boxed-radius',\n '--bulma-navbar-dropdown-boxed-shadow',\n '--bulma-navbar-dropdown-item-h',\n '--bulma-navbar-dropdown-item-s',\n '--bulma-navbar-dropdown-item-l',\n '--bulma-navbar-dropdown-item-background-l',\n '--bulma-navbar-dropdown-item-color-l',\n '--bulma-navbar-divider-background-l',\n '--bulma-navbar-divider-height',\n '--bulma-navbar-bottom-box-shadow-size',\n // pagination\n '--bulma-pagination-margin',\n '--bulma-pagination-min-width',\n '--bulma-pagination-item-h',\n '--bulma-pagination-item-s',\n '--bulma-pagination-item-l',\n '--bulma-pagination-item-background-l-delta',\n '--bulma-pagination-item-hover-background-l-delta',\n '--bulma-pagination-item-active-background-l-delta',\n '--bulma-pagination-item-border-style',\n '--bulma-pagination-item-border-width',\n '--bulma-pagination-item-border-l',\n '--bulma-pagination-item-border-l-delta',\n '--bulma-pagination-item-hover-border-l-delta',\n '--bulma-pagination-item-active-border-l-delta',\n '--bulma-pagination-item-focus-border-l-delta',\n '--bulma-pagination-item-color-l',\n '--bulma-pagination-item-font-size',\n '--bulma-pagination-item-margin',\n '--bulma-pagination-item-padding-left',\n '--bulma-pagination-item-padding-right',\n '--bulma-pagination-item-outer-shadow-h',\n '--bulma-pagination-item-outer-shadow-s',\n '--bulma-pagination-item-outer-shadow-l',\n '--bulma-pagination-item-outer-shadow-a',\n '--bulma-pagination-nav-padding-left',\n '--bulma-pagination-nav-padding-right',\n '--bulma-pagination-disabled-color',\n '--bulma-pagination-disabled-background-color',\n '--bulma-pagination-disabled-border-color',\n '--bulma-pagination-current-color',\n '--bulma-pagination-current-background-color',\n '--bulma-pagination-current-border-color',\n '--bulma-pagination-ellipsis-color',\n '--bulma-pagination-shadow-inset',\n '--bulma-pagination-selected-item-h',\n '--bulma-pagination-selected-item-s',\n '--bulma-pagination-selected-item-l',\n '--bulma-pagination-selected-item-background-l',\n '--bulma-pagination-selected-item-border-l',\n '--bulma-pagination-selected-item-color-l',\n // panel\n '--bulma-panel-margin',\n '--bulma-panel-item-border',\n '--bulma-panel-radius',\n '--bulma-panel-shadow',\n '--bulma-panel-heading-line-height',\n '--bulma-panel-heading-padding',\n '--bulma-panel-heading-radius',\n '--bulma-panel-heading-size',\n '--bulma-panel-heading-weight',\n '--bulma-panel-tabs-font-size',\n '--bulma-panel-tab-border-bottom-color',\n '--bulma-panel-tab-border-bottom-style',\n '--bulma-panel-tab-border-bottom-width',\n '--bulma-panel-tab-active-color',\n '--bulma-panel-list-item-color',\n '--bulma-panel-list-item-hover-color',\n '--bulma-panel-block-color',\n '--bulma-panel-block-hover-background-color',\n '--bulma-panel-block-active-border-left-color',\n '--bulma-panel-block-active-color',\n '--bulma-panel-block-active-icon-color',\n '--bulma-panel-icon-color',\n // tabs\n '--bulma-tabs-border-bottom-color',\n '--bulma-tabs-border-bottom-style',\n '--bulma-tabs-border-bottom-width',\n '--bulma-tabs-link-color',\n '--bulma-tabs-link-hover-border-bottom-color',\n '--bulma-tabs-link-hover-color',\n '--bulma-tabs-link-active-border-bottom-color',\n '--bulma-tabs-link-active-color',\n '--bulma-tabs-link-padding',\n '--bulma-tabs-boxed-link-radius',\n '--bulma-tabs-boxed-link-hover-background-color',\n '--bulma-tabs-boxed-link-hover-border-bottom-color',\n '--bulma-tabs-boxed-link-active-background-color',\n '--bulma-tabs-boxed-link-active-border-color',\n '--bulma-tabs-boxed-link-active-border-bottom-color',\n '--bulma-tabs-toggle-link-border-color',\n '--bulma-tabs-toggle-link-border-style',\n '--bulma-tabs-toggle-link-border-width',\n '--bulma-tabs-toggle-link-hover-background-color',\n '--bulma-tabs-toggle-link-hover-border-color',\n '--bulma-tabs-toggle-link-radius',\n '--bulma-tabs-toggle-link-active-background-color',\n '--bulma-tabs-toggle-link-active-border-color',\n '--bulma-tabs-toggle-link-active-color',\n // box\n '--bulma-box-background-color',\n '--bulma-box-color',\n '--bulma-box-radius',\n '--bulma-box-shadow',\n '--bulma-box-padding',\n '--bulma-box-link-hover-shadow',\n '--bulma-box-link-active-shadow',\n // content\n '--bulma-content-heading-color',\n '--bulma-content-heading-weight',\n '--bulma-content-heading-line-height',\n '--bulma-content-block-margin-bottom',\n '--bulma-content-blockquote-background-color',\n '--bulma-content-blockquote-border-left',\n '--bulma-content-blockquote-padding',\n '--bulma-content-pre-padding',\n '--bulma-content-table-cell-border',\n '--bulma-content-table-cell-border-width',\n '--bulma-content-table-cell-padding',\n '--bulma-content-table-cell-heading-color',\n '--bulma-content-table-head-cell-border-width',\n '--bulma-content-table-head-cell-color',\n '--bulma-content-table-body-last-row-cell-border-bottom-width',\n '--bulma-content-table-foot-cell-border-width',\n '--bulma-content-table-foot-cell-color',\n // delete\n '--bulma-delete-dimensions',\n '--bulma-delete-background-l',\n '--bulma-delete-background-alpha',\n '--bulma-delete-color',\n // icon\n '--bulma-icon-dimensions',\n '--bulma-icon-dimensions-small',\n '--bulma-icon-dimensions-medium',\n '--bulma-icon-dimensions-large',\n '--bulma-icon-text-spacing',\n // notification\n '--bulma-notification-h',\n '--bulma-notification-s',\n '--bulma-notification-background-l',\n '--bulma-notification-color-l',\n '--bulma-notification-code-background-color',\n '--bulma-notification-radius',\n '--bulma-notification-padding',\n // progress\n '--bulma-progress-border-radius',\n '--bulma-progress-bar-background-color',\n '--bulma-progress-value-background-color',\n '--bulma-progress-indeterminate-duration',\n // table\n '--bulma-table-color',\n '--bulma-table-background-color',\n '--bulma-table-cell-border-color',\n '--bulma-table-cell-border-style',\n '--bulma-table-cell-border-width',\n '--bulma-table-cell-padding',\n '--bulma-table-cell-heading-color',\n '--bulma-table-cell-text-align',\n '--bulma-table-head-cell-border-width',\n '--bulma-table-head-cell-color',\n '--bulma-table-foot-cell-border-width',\n '--bulma-table-foot-cell-color',\n '--bulma-table-head-background-color',\n '--bulma-table-body-background-color',\n '--bulma-table-foot-background-color',\n '--bulma-table-row-hover-background-color',\n '--bulma-table-row-active-background-color',\n '--bulma-table-row-active-color',\n '--bulma-table-striped-row-even-background-color',\n '--bulma-table-striped-row-even-hover-background-color',\n // tag\n '--bulma-tag-h',\n '--bulma-tag-s',\n '--bulma-tag-background-l',\n '--bulma-tag-background-l-delta',\n '--bulma-tag-hover-background-l-delta',\n '--bulma-tag-active-background-l-delta',\n '--bulma-tag-color-l',\n '--bulma-tag-radius',\n '--bulma-tag-delete-margin',\n // title\n '--bulma-title-color',\n '--bulma-title-family',\n '--bulma-title-size',\n '--bulma-title-weight',\n '--bulma-title-line-height',\n '--bulma-title-strong-color',\n '--bulma-title-strong-weight',\n '--bulma-title-sub-size',\n '--bulma-title-sup-size',\n '--bulma-subtitle-color',\n '--bulma-subtitle-family',\n '--bulma-subtitle-size',\n '--bulma-subtitle-weight',\n '--bulma-subtitle-line-height',\n '--bulma-subtitle-strong-color',\n '--bulma-subtitle-strong-weight',\n // control\n '--bulma-control-radius',\n '--bulma-control-radius-small',\n '--bulma-control-border-width',\n '--bulma-control-height',\n '--bulma-control-line-height',\n '--bulma-control-padding-vertical',\n '--bulma-control-padding-horizontal',\n '--bulma-control-size',\n '--bulma-control-focus-shadow-l',\n // file\n '--bulma-file-radius',\n '--bulma-file-name-border-color',\n '--bulma-file-name-border-style',\n '--bulma-file-name-border-width',\n '--bulma-file-name-max-width',\n '--bulma-file-h',\n '--bulma-file-s',\n '--bulma-file-background-l',\n '--bulma-file-background-l-delta',\n '--bulma-file-hover-background-l-delta',\n '--bulma-file-active-background-l-delta',\n '--bulma-file-border-l',\n '--bulma-file-border-l-delta',\n '--bulma-file-hover-border-l-delta',\n '--bulma-file-active-border-l-delta',\n '--bulma-file-cta-color-l',\n '--bulma-file-name-color-l',\n '--bulma-file-color-l-delta',\n '--bulma-file-hover-color-l-delta',\n '--bulma-file-active-color-l-delta',\n // input\n '--bulma-input-h',\n '--bulma-input-s',\n '--bulma-input-l',\n '--bulma-input-border-style',\n '--bulma-input-border-l',\n '--bulma-input-border-l-delta',\n '--bulma-input-hover-border-l-delta',\n '--bulma-input-active-border-l-delta',\n '--bulma-input-focus-h',\n '--bulma-input-focus-s',\n '--bulma-input-focus-l',\n '--bulma-input-focus-shadow-size',\n '--bulma-input-focus-shadow-alpha',\n '--bulma-input-color-l',\n '--bulma-input-background-l',\n '--bulma-input-background-l-delta',\n '--bulma-input-height',\n '--bulma-input-shadow',\n '--bulma-input-placeholder-color',\n '--bulma-input-disabled-color',\n '--bulma-input-disabled-background-color',\n '--bulma-input-disabled-border-color',\n '--bulma-input-disabled-placeholder-color',\n '--bulma-input-arrow',\n '--bulma-input-icon-color',\n '--bulma-input-icon-hover-color',\n '--bulma-input-icon-focus-color',\n '--bulma-input-radius',\n // columns\n '--bulma-column-gap',\n // grid\n '--bulma-grid-gap',\n '--bulma-grid-column-count',\n '--bulma-grid-column-min',\n '--bulma-grid-cell-column-span',\n '--bulma-grid-cell-column-start',\n // footer\n '--bulma-footer-background-color',\n '--bulma-footer-color',\n '--bulma-footer-padding',\n // hero\n '--bulma-hero-body-padding',\n '--bulma-hero-body-padding-tablet',\n '--bulma-hero-body-padding-small',\n '--bulma-hero-body-padding-medium',\n '--bulma-hero-body-padding-large',\n // media\n '--bulma-media-border-color',\n '--bulma-media-border-size',\n '--bulma-media-spacing',\n '--bulma-media-spacing-large',\n '--bulma-media-content-spacing',\n '--bulma-media-level-1-spacing',\n '--bulma-media-level-1-content-spacing',\n '--bulma-media-level-2-spacing',\n // section\n '--bulma-section-padding',\n '--bulma-section-padding-desktop',\n '--bulma-section-padding-medium',\n '--bulma-section-padding-large',\n] as const;\n\n/** A single Bulma CSS variable key from the `bulmaCssVars` tuple. */\ntype BulmaVarKey = (typeof bulmaCssVars)[number];\n/** A partial record mapping Bulma CSS variable keys to string values. */\ntype BulmaVars = Partial<Record<BulmaVarKey, string>>;\n\n/**\n * Convert a Bulma CSS variable name to a camelCase prop name.\n * @param {string} varName - CSS variable name (e.g., '--bulma-primary-h').\n * @returns {string} The camelCase prop name (e.g., 'primaryH').\n */\nfunction cssVarToProp(varName: string): string {\n return varName\n .replace(/^--bulma-/, '')\n .split('-')\n .map((part, i) =>\n i === 0 ? part : part.charAt(0).toUpperCase() + part.slice(1)\n )\n .join('');\n}\n\n/** Mapping of camelCase prop names to their Bulma CSS variable counterparts. */\nconst bulmaVarPropMap = Object.fromEntries(\n bulmaCssVars.map(cssVar => [cssVarToProp(cssVar), cssVar])\n) as Record<string, string>;\n\n/**\n * Props for the Theme component.\n *\n * @property {React.ReactNode} children - Content to render inside the theme scope.\n * @property {string} [className] - Additional CSS classes (only when isRoot is false).\n * @property {boolean} [isRoot] - Inject CSS variables globally at :root level. Default: false.\n * @property {BulmaVars} [bulmaVars] - Object mapping Bulma CSS variable names to values.\n * @property {string} [schemeH] - Scheme hue value.\n * @property {string} [schemeS] - Scheme saturation value.\n * @property {string} [lightL] - Light theme lightness value.\n * @property {string} [lightInvertL] - Light theme inverted lightness value.\n * @property {string} [darkL] - Dark theme lightness value.\n * @property {string} [darkInvertL] - Dark theme inverted lightness value.\n * @property {string} [softL] - Soft lightness value.\n * @property {string} [boldL] - Bold lightness value.\n * @property {string} [softInvertL] - Soft inverted lightness value.\n * @property {string} [boldInvertL] - Bold inverted lightness value.\n * @property {string} [hoverBackgroundLDelta] - Background lightness delta on hover.\n * @property {string} [activeBackgroundLDelta] - Background lightness delta on active.\n * @property {string} [hoverBorderLDelta] - Border lightness delta on hover.\n * @property {string} [activeBorderLDelta] - Border lightness delta on active.\n * @property {string} [hoverColorLDelta] - Text color lightness delta on hover.\n * @property {string} [activeColorLDelta] - Text color lightness delta on active.\n * @property {string} [hoverShadowADelta] - Shadow alpha delta on hover.\n * @property {string} [activeShadowADelta] - Shadow alpha delta on active.\n * @property {string} [primaryH] - Primary color hue.\n * @property {string} [primaryS] - Primary color saturation.\n * @property {string} [primaryL] - Primary color lightness.\n * @property {string} [linkH] - Link color hue.\n * @property {string} [linkS] - Link color saturation.\n * @property {string} [linkL] - Link color lightness.\n * @property {string} [infoH] - Info color hue.\n * @property {string} [infoS] - Info color saturation.\n * @property {string} [infoL] - Info color lightness.\n * @property {string} [successH] - Success color hue.\n * @property {string} [successS] - Success color saturation.\n * @property {string} [successL] - Success color lightness.\n * @property {string} [warningH] - Warning color hue.\n * @property {string} [warningS] - Warning color saturation.\n * @property {string} [warningL] - Warning color lightness.\n * @property {string} [dangerH] - Danger color hue.\n * @property {string} [dangerS] - Danger color saturation.\n * @property {string} [dangerL] - Danger color lightness.\n */\nexport interface ThemeProps extends Omit<\n BulmaClassesProps,\n 'color' | 'backgroundColor'\n> {\n children: ReactNode;\n className?: string;\n isRoot?: boolean;\n bulmaVars?: BulmaVars;\n // Bulma scheme variables\n schemeH?: string;\n schemeS?: string;\n lightL?: string;\n lightInvertL?: string;\n darkL?: string;\n darkInvertL?: string;\n softL?: string;\n boldL?: string;\n softInvertL?: string;\n boldInvertL?: string;\n hoverBackgroundLDelta?: string;\n activeBackgroundLDelta?: string;\n hoverBorderLDelta?: string;\n activeBorderLDelta?: string;\n hoverColorLDelta?: string;\n activeColorLDelta?: string;\n hoverShadowADelta?: string;\n activeShadowADelta?: string;\n // Bulma color variables\n primaryH?: string;\n primaryS?: string;\n primaryL?: string;\n linkH?: string;\n linkS?: string;\n linkL?: string;\n infoH?: string;\n infoS?: string;\n infoL?: string;\n successH?: string;\n successS?: string;\n successL?: string;\n warningH?: string;\n warningS?: string;\n warningL?: string;\n dangerH?: string;\n dangerS?: string;\n dangerL?: string;\n // Add other commonly used ones as needed\n}\n\n/**\n * Theme component that injects Bulma CSS variables either globally or locally.\n *\n * When `isRoot` is true, variables are injected at `:root`. Otherwise, a wrapping\n * `<div>` scopes the variables to its children.\n *\n * @function\n * @param {ThemeProps} props - Props for the Theme component.\n * @returns {JSX.Element} The theme wrapper or fragment.\n *\n * @example\n * // Local theme scope\n * <Theme primaryH=\"171\" primaryS=\"100%\" primaryL=\"41%\">\n * <Button color=\"primary\">Themed</Button>\n * </Theme>\n */\nexport const Theme: React.FC<ThemeProps> = ({\n bulmaVars = {},\n children,\n className,\n isRoot = false,\n ...restProps\n}) => {\n // Extract Bulma variable props from restProps\n const { bulmaVarProps, otherProps } = useMemo(() => {\n const varProps: Record<string, string | undefined> = {};\n const otherPropsObj: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(restProps)) {\n if (Object.prototype.hasOwnProperty.call(bulmaVarPropMap, key)) {\n varProps[key] = value as string;\n } else {\n otherPropsObj[key] = value;\n }\n }\n\n return { bulmaVarProps: varProps, otherProps: otherPropsObj };\n }, [restProps]);\n\n // Use Bulma classes for styling (only when not isRoot)\n const { bulmaHelperClasses, rest } = useBulmaClasses(otherProps);\n\n // Merge bulmaVars and individual props, with props taking precedence\n const mergedVars: BulmaVars = useMemo(() => {\n const vars: BulmaVars = { ...bulmaVars };\n for (const [propName, cssVar] of Object.entries(bulmaVarPropMap)) {\n if (bulmaVarProps[propName] !== undefined) {\n vars[cssVar as BulmaVarKey] = bulmaVarProps[propName] as string;\n }\n }\n return vars;\n }, [bulmaVars, bulmaVarProps]);\n\n // Inject CSS variables globally at :root level\n useEffect(() => {\n if (!isRoot) {\n return;\n }\n\n const validVars = Object.entries(mergedVars).filter(\n ([key, value]) => bulmaCssVars.includes(key as BulmaVarKey) && value\n );\n\n if (validVars.length === 0) {\n return;\n }\n\n // Create and inject a style element for global CSS variables\n const styleId = 'bestax-bulma-theme-vars';\n let styleElement = document.getElementById(styleId) as HTMLStyleElement;\n\n if (!styleElement) {\n styleElement = document.createElement('style');\n styleElement.id = styleId;\n document.head.appendChild(styleElement);\n }\n\n const cssRules = validVars\n .map(([key, value]) => `${key}: ${value};`)\n .join(' ');\n styleElement.textContent = `:root { ${cssRules} }`;\n\n // Cleanup function to remove the style element when component unmounts\n return () => {\n const element = document.getElementById(styleId);\n if (element) {\n element.remove();\n }\n };\n }, [mergedVars, isRoot]);\n\n // For local injection (when isRoot is false), prepare style object for CSS vars\n const style: CSSProperties = useMemo(() => {\n if (isRoot) {\n return {};\n }\n\n const styleObj: CSSProperties = {};\n for (const [key, value] of Object.entries(mergedVars)) {\n if (bulmaCssVars.includes(key as BulmaVarKey) && value) {\n (styleObj as Record<string, string>)[key] = value;\n }\n }\n return styleObj;\n }, [mergedVars, isRoot]);\n\n // Generate combined class names for the wrapper div\n const combinedClassName = useMemo(() => {\n if (isRoot) {\n return '';\n }\n return classNames(className, bulmaHelperClasses);\n }, [className, bulmaHelperClasses, isRoot]);\n\n return isRoot ? (\n <>{children}</>\n ) : (\n <div className={combinedClassName || undefined} style={style} {...rest}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport classNames, { usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Bulma container breakpoints.\n */\nexport type ContainerBreakpoint = 'tablet' | 'desktop' | 'widescreen';\n\n/**\n * Props for the Container component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {'primary'|'link'|'info'|'success'|'warning'|'danger'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {boolean} [fluid] - Full-width container.\n * @property {boolean} [widescreen] - Container is widescreen.\n * @property {boolean} [fullhd] - Container is fullhd.\n * @property {ContainerBreakpoint} [breakpoint] - Responsive breakpoint.\n * @property {boolean} [isMax] - Use is-max-* class for breakpoint.\n * @property {React.ReactNode} [children] - Content inside the container.\n */\nexport interface ContainerProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n color?: 'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n fluid?: boolean;\n widescreen?: boolean;\n fullhd?: boolean;\n breakpoint?: ContainerBreakpoint;\n isMax?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Container component for Bulma.\n * Adds optional responsive, fluid, and color support, including is-max-* and breakpoint classes.\n *\n * @function\n * @param {ContainerProps} props - Props for the Container component.\n * @returns {JSX.Element} The rendered container.\n * @see {@link https://bulma.io/documentation/layout/container/ | Bulma Container documentation}\n */\nexport const Container: React.FC<ContainerProps> = ({\n className,\n textColor,\n bgColor,\n fluid,\n widescreen,\n fullhd,\n breakpoint,\n isMax,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor,\n backgroundColor: bgColor,\n ...props,\n });\n\n // Only allow isMax for supported breakpoints\n const validMaxBreakpoints: ContainerBreakpoint[] = [\n 'tablet',\n 'desktop',\n 'widescreen',\n ];\n let breakpointClass: string | undefined;\n if (breakpoint) {\n if (isMax && validMaxBreakpoints.includes(breakpoint)) {\n breakpointClass = `is-max-${breakpoint}`;\n } else if (!isMax) {\n breakpointClass = `is-${breakpoint}`;\n }\n }\n\n const mainClass = usePrefixedClassNames('container');\n const containerModifiers = usePrefixedClassNames('', {\n 'is-fluid': fluid,\n 'is-widescreen': widescreen,\n 'is-fullhd': fullhd,\n });\n const prefixedBreakpointClass = usePrefixedClassNames(breakpointClass || '');\n\n const containerClasses = classNames(\n mainClass,\n containerModifiers,\n prefixedBreakpointClass,\n className,\n bulmaHelperClasses\n );\n\n return (\n <div className={containerClasses} {...rest}>\n {children}\n </div>\n );\n};\n\nexport default Container;\n","import React from 'react';\nimport classNames, { usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Footer component.\n *\n * @property {'footer'|'div'} [as] - The HTML tag to render as.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content inside the footer.\n */\nexport interface FooterProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n as?: 'footer' | 'div';\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Footer component.\n *\n * @function\n * @param {FooterProps} props - Props for the Footer component.\n * @returns {JSX.Element} The rendered footer element.\n * @see {@link https://bulma.io/documentation/layout/footer/ | Bulma Footer documentation}\n *\n * @example\n * <Footer>\n * <div className=\"content has-text-centered\">...</div>\n * </Footer>\n */\nexport const Footer: React.FC<FooterProps> = ({\n as = 'footer',\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n const mainClass = usePrefixedClassNames('footer');\n const footerClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <Tag className={footerClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nexport default Footer;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Possible values for Bulma hero size.\n */\nexport type HeroSize =\n | 'small'\n | 'medium'\n | 'large'\n | 'fullheight'\n | 'fullheight-with-navbar';\n\n/**\n * Props for the Hero component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {HeroSize} [size] - Hero size.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {boolean} [fullheightWithNavbar] - Use fullheight with navbar.\n * @property {React.ReactNode} [children] - Content inside the hero.\n */\nexport interface HeroProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n size?: HeroSize;\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n fullheightWithNavbar?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Hero component root.\n *\n * @function\n * @param {HeroProps} props - Props for the Hero component.\n * @returns {JSX.Element} The rendered hero.\n * @see {@link https://bulma.io/documentation/layout/hero/ | Bulma Hero documentation}\n */\nexport const Hero: React.FC<HeroProps> & {\n Head: typeof HeroHead;\n Body: typeof HeroBody;\n Foot: typeof HeroFoot;\n} = ({\n className,\n color,\n size,\n bgColor,\n fullheightWithNavbar,\n children,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('hero', {\n [`is-${color}`]: color,\n [`is-${size}`]: size && size !== 'fullheight-with-navbar',\n 'is-fullheight-with-navbar':\n fullheightWithNavbar || size === 'fullheight-with-navbar',\n });\n const heroClasses = classNames(mainClass, bulmaHelperClasses, className);\n\n return (\n <section className={heroClasses} {...rest}>\n {children}\n </section>\n );\n};\n\n/**\n * Props for the HeroHead component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier for text.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface HeroHeadProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Hero head section.\n *\n * @function\n * @param {HeroHeadProps} props - Props for the HeroHead component.\n * @returns {JSX.Element} The rendered hero head.\n */\nexport const HeroHead: React.FC<HeroHeadProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('hero-head');\n const heroHeadClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <div className={heroHeadClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the HeroBody component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier for text.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface HeroBodyProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Hero body section.\n *\n * @function\n * @param {HeroBodyProps} props - Props for the HeroBody component.\n * @returns {JSX.Element} The rendered hero body.\n */\nexport const HeroBody: React.FC<HeroBodyProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('hero-body');\n const heroBodyClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <div className={heroBodyClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the HeroFoot component.\n *\n * @property {string} [className] - Additional CSS classes.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier for text.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface HeroFootProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n className?: string;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Hero foot section.\n *\n * @function\n * @param {HeroFootProps} props - Props for the HeroFoot component.\n * @returns {JSX.Element} The rendered hero foot.\n */\nexport const HeroFoot: React.FC<HeroFootProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('hero-foot');\n const heroFootClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <div className={heroFootClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n// Attach subcomponents\nHero.Head = HeroHead;\nHero.Body = HeroBody;\nHero.Foot = HeroFoot;\n\nexport default Hero;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Level component.\n *\n * @property {boolean} [isMobile] - Enable mobile mode.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Level content.\n */\nexport interface LevelProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n isMobile?: boolean;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Level component for horizontal layouts.\n *\n * @function\n * @param {LevelProps} props - Props for the Level component.\n * @returns {JSX.Element} The rendered level.\n * @see {@link https://bulma.io/documentation/layout/level/ | Bulma Level documentation}\n */\nexport const Level: React.FC<LevelProps> & {\n Left: typeof LevelLeft;\n Right: typeof LevelRight;\n Item: typeof LevelItem;\n} = ({\n isMobile,\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level', {\n 'is-mobile': isMobile,\n });\n const levelClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <nav className={levelClasses} {...rest}>\n {children}\n </nav>\n );\n};\n\n/**\n * Props for the LevelLeft component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface LevelLeftProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Level left section.\n *\n * @function\n * @param {LevelLeftProps} props - Props for the LevelLeft component.\n * @returns {JSX.Element} The rendered level left section.\n */\nexport const LevelLeft: React.FC<LevelLeftProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level-left');\n const levelLeftClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <div className={levelLeftClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the LevelRight component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface LevelRightProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Level right section.\n *\n * @function\n * @param {LevelRightProps} props - Props for the LevelRight component.\n * @returns {JSX.Element} The rendered level right section.\n */\nexport const LevelRight: React.FC<LevelRightProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('level-right');\n const levelRightClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={levelRightClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the LevelItem component.\n *\n * @property {'div'|'p'|'a'} [as] - Element type to render.\n * @property {boolean} [hasTextCentered] - Center the text in the item.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n * @property {string} [href] - Href for \"a\" tag.\n * @property {string} [target] - Target for \"a\" tag\n * @property {string} [rel] - Rel for \"a\" tag\n */\nexport interface LevelItemProps\n extends\n React.HTMLAttributes<\n HTMLDivElement | HTMLParagraphElement | HTMLAnchorElement\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n as?: 'div' | 'p' | 'a';\n hasTextCentered?: boolean;\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n href?: string;\n target?: string;\n rel?: string;\n}\n\n/**\n * Bulma Level item section.\n *\n * @function\n * @param {LevelItemProps} props - Props for the LevelItem component.\n * @returns {JSX.Element} The rendered level item.\n */\nexport const LevelItem: React.FC<LevelItemProps> = ({\n as = 'div',\n hasTextCentered,\n className,\n children,\n href,\n target,\n rel,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n\n const mainClass = usePrefixedClassNames('level-item', {\n 'has-text-centered': hasTextCentered,\n });\n const levelItemClasses = classNames(mainClass, bulmaHelperClasses, className);\n\n // If rendering as \"a\", only pass anchor-specific props\n if (Tag === 'a') {\n return (\n <a\n className={levelItemClasses}\n href={href}\n target={target}\n rel={rel}\n {...rest}\n >\n {children}\n </a>\n );\n }\n\n return (\n <Tag className={levelItemClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\nLevel.Left = LevelLeft;\nLevel.Right = LevelRight;\nLevel.Item = LevelItem;\n\nexport default Level;\n","import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Media component.\n *\n * @property {'article'|'div'} [as] - Element type to render.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface MediaProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n as?: 'article' | 'div';\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Media component root.\n *\n * @function\n * @param {MediaProps} props - Props for the Media component.\n * @returns {JSX.Element} The rendered media container.\n * @see {@link https://bulma.io/documentation/layout/media-object/ | Bulma Media documentation}\n */\nexport const Media: React.FC<MediaProps> = ({\n as = 'article',\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n const mainClass = usePrefixedClassNames('media');\n const mediaClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <Tag className={mediaClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\n/**\n * Props for the MediaLeft component.\n *\n * @property {'figure'|'div'} [as] - Element type to render.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface MediaLeftProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n as?: 'figure' | 'div';\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Media left section.\n *\n * @function\n * @param {MediaLeftProps} props - Props for the MediaLeft component.\n * @returns {JSX.Element} The rendered media left section.\n */\nexport const MediaLeft: React.FC<MediaLeftProps> = ({\n as = 'figure',\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const Tag = as;\n const mainClass = usePrefixedClassNames('media-left');\n const mediaLeftClasses = classNames(mainClass, bulmaHelperClasses, className);\n return (\n <Tag className={mediaLeftClasses} {...rest}>\n {children}\n </Tag>\n );\n};\n\n/**\n * Props for the MediaContent component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface MediaContentProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Media content section.\n *\n * @function\n * @param {MediaContentProps} props - Props for the MediaContent component.\n * @returns {JSX.Element} The rendered media content section.\n */\nexport const MediaContent: React.FC<MediaContentProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('media-content');\n const mediaContentClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={mediaContentClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/**\n * Props for the MediaRight component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Content.\n */\nexport interface MediaRightProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Media right section.\n *\n * @function\n * @param {MediaRightProps} props - Props for the MediaRight component.\n * @returns {JSX.Element} The rendered media right section.\n */\nexport const MediaRight: React.FC<MediaRightProps> = ({\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n const mainClass = usePrefixedClassNames('media-right');\n const mediaRightClasses = classNames(\n mainClass,\n bulmaHelperClasses,\n className\n );\n return (\n <div className={mediaRightClasses} {...rest}>\n {children}\n </div>\n );\n};\n\n/** Media component type with Left, Content, and Right sub-components. */\ninterface MediaComponent extends React.FC<MediaProps> {\n Left: React.FC<MediaLeftProps>;\n Content: React.FC<MediaContentProps>;\n Right: React.FC<MediaRightProps>;\n}\n\nconst MediaWithSubcomponents = Media as MediaComponent;\nMediaWithSubcomponents.Left = MediaLeft;\nMediaWithSubcomponents.Content = MediaContent;\nMediaWithSubcomponents.Right = MediaRight;\n\nexport default MediaWithSubcomponents;\n","import React from 'react';\nimport classNames, { usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Section size values for Bulma.\n */\ntype SectionSize = 'medium' | 'large';\n\n/**\n * Props for the Section component.\n *\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [color] - Bulma color modifier.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [bgColor] - Background color.\n * @property {(typeof validColors)[number] | 'inherit' | 'current'} [textColor] - Text color.\n * @property {'medium'|'large'} [size] - Section size.\n * @property {string} [className] - Additional CSS classes.\n * @property {React.ReactNode} [children] - Section content.\n */\nexport interface SectionProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n size?: SectionSize;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Bulma Section component for general layout.\n *\n * @function\n * @param {SectionProps} props - Props for the Section component.\n * @returns {JSX.Element} The rendered section.\n * @see {@link https://bulma.io/documentation/layout/section/ | Bulma Section documentation}\n */\nexport const Section: React.FC<SectionProps> = ({\n size,\n className,\n children,\n color,\n bgColor,\n textColor,\n ...props\n}) => {\n const { bulmaHelperClasses, rest } = useBulmaClasses({\n color: textColor ?? color,\n backgroundColor: bgColor,\n ...props,\n });\n\n const mainClass = usePrefixedClassNames('section');\n const sectionModifiers = usePrefixedClassNames('', {\n [`is-${size}`]: size,\n });\n const sectionClasses = classNames(\n mainClass,\n sectionModifiers,\n className,\n bulmaHelperClasses\n );\n\n return (\n <section className={sectionClasses} {...rest}>\n {children}\n </section>\n );\n};\n"],"names":["_jsx","validSizes","validAlignments","_jsxs","isBrowser","_Fragment","wrap","fireTickHaptic"],"mappings":"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"}
|