@allxsmith/bestax-bulma 5.27.0 → 5.27.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/dist/bestax.css +1 -1
- package/dist/bestax.css.map +1 -1
- package/dist/esm/columns/Column.js +48 -0
- package/dist/esm/columns/Column.js.map +1 -0
- package/dist/esm/columns/Columns.js +53 -0
- package/dist/esm/columns/Columns.js.map +1 -0
- package/dist/esm/components/Avatar.js +299 -0
- package/dist/esm/components/Avatar.js.map +1 -0
- package/dist/esm/components/Avatars.js +81 -0
- package/dist/esm/components/Avatars.js.map +1 -0
- package/dist/esm/components/Badge.js +105 -0
- package/dist/esm/components/Badge.js.map +1 -0
- package/dist/esm/components/Breadcrumb.js +36 -0
- package/dist/esm/components/Breadcrumb.js.map +1 -0
- package/dist/esm/components/Card.js +252 -0
- package/dist/esm/components/Card.js.map +1 -0
- package/dist/esm/components/Carousel.js +351 -0
- package/dist/esm/components/Carousel.js.map +1 -0
- package/dist/esm/components/Collapse.js +193 -0
- package/dist/esm/components/Collapse.js.map +1 -0
- package/dist/esm/components/Collapses.js +99 -0
- package/dist/esm/components/Collapses.js.map +1 -0
- package/dist/esm/components/Dialog.js +230 -0
- package/dist/esm/components/Dialog.js.map +1 -0
- package/dist/esm/components/Dropdown.js +362 -0
- package/dist/esm/components/Dropdown.js.map +1 -0
- package/dist/esm/components/Loading.js +87 -0
- package/dist/esm/components/Loading.js.map +1 -0
- package/dist/esm/components/Menu.js +117 -0
- package/dist/esm/components/Menu.js.map +1 -0
- package/dist/esm/components/Message.js +56 -0
- package/dist/esm/components/Message.js.map +1 -0
- package/dist/esm/components/Modal.js +354 -0
- package/dist/esm/components/Modal.js.map +1 -0
- package/dist/esm/components/Navbar.js +287 -0
- package/dist/esm/components/Navbar.js.map +1 -0
- package/dist/esm/components/Pagination.js +191 -0
- package/dist/esm/components/Pagination.js.map +1 -0
- package/dist/esm/components/Panel.js +100 -0
- package/dist/esm/components/Panel.js.map +1 -0
- package/dist/esm/components/Popover.js +298 -0
- package/dist/esm/components/Popover.js.map +1 -0
- package/dist/esm/components/Reveal.js +157 -0
- package/dist/esm/components/Reveal.js.map +1 -0
- package/dist/esm/components/Sidebar.js +209 -0
- package/dist/esm/components/Sidebar.js.map +1 -0
- package/dist/esm/components/Steps.js +128 -0
- package/dist/esm/components/Steps.js.map +1 -0
- package/dist/esm/components/Tabs.js +335 -0
- package/dist/esm/components/Tabs.js.map +1 -0
- package/dist/esm/components/Toast.js +322 -0
- package/dist/esm/components/Toast.js.map +1 -0
- package/dist/esm/components/Tooltip.js +202 -0
- package/dist/esm/components/Tooltip.js.map +1 -0
- package/dist/esm/components/collapsesContext.js +12 -0
- package/dist/esm/components/collapsesContext.js.map +1 -0
- package/dist/esm/elements/Block.js +29 -0
- package/dist/esm/elements/Block.js.map +1 -0
- package/dist/esm/elements/Box.js +32 -0
- package/dist/esm/elements/Box.js.map +1 -0
- package/dist/esm/elements/Button.js +139 -0
- package/dist/esm/elements/Button.js.map +1 -0
- package/dist/esm/elements/Buttons.js +42 -0
- package/dist/esm/elements/Buttons.js.map +1 -0
- package/dist/esm/elements/Code.js +25 -0
- package/dist/esm/elements/Code.js.map +1 -0
- package/dist/esm/elements/Content.js +33 -0
- package/dist/esm/elements/Content.js.map +1 -0
- package/dist/esm/elements/Delete.js +35 -0
- package/dist/esm/elements/Delete.js.map +1 -0
- package/dist/esm/elements/Divider.js +27 -0
- package/dist/esm/elements/Divider.js.map +1 -0
- package/dist/esm/elements/Emphasis.js +25 -0
- package/dist/esm/elements/Emphasis.js.map +1 -0
- package/dist/esm/elements/Figure.js +58 -0
- package/dist/esm/elements/Figure.js.map +1 -0
- package/dist/esm/elements/Icon.js +256 -0
- package/dist/esm/elements/Icon.js.map +1 -0
- package/dist/esm/elements/IconText.js +36 -0
- package/dist/esm/elements/IconText.js.map +1 -0
- package/dist/esm/elements/Image.js +46 -0
- package/dist/esm/elements/Image.js.map +1 -0
- package/dist/esm/elements/Link.js +36 -0
- package/dist/esm/elements/Link.js.map +1 -0
- package/dist/esm/elements/LinkButton.js +37 -0
- package/dist/esm/elements/LinkButton.js.map +1 -0
- package/dist/esm/elements/ListItem.js +28 -0
- package/dist/esm/elements/ListItem.js.map +1 -0
- package/dist/esm/elements/Loader.js +37 -0
- package/dist/esm/elements/Loader.js.map +1 -0
- package/dist/esm/elements/Notification.js +316 -0
- package/dist/esm/elements/Notification.js.map +1 -0
- package/dist/esm/elements/OrderedList.js +31 -0
- package/dist/esm/elements/OrderedList.js.map +1 -0
- package/dist/esm/elements/Paragraph.js +28 -0
- package/dist/esm/elements/Paragraph.js.map +1 -0
- package/dist/esm/elements/Pre.js +25 -0
- package/dist/esm/elements/Pre.js.map +1 -0
- package/dist/esm/elements/Progress.js +33 -0
- package/dist/esm/elements/Progress.js.map +1 -0
- package/dist/esm/elements/Skeleton.js +30 -0
- package/dist/esm/elements/Skeleton.js.map +1 -0
- package/dist/esm/elements/Span.js +28 -0
- package/dist/esm/elements/Span.js.map +1 -0
- package/dist/esm/elements/Strong.js +25 -0
- package/dist/esm/elements/Strong.js.map +1 -0
- package/dist/esm/elements/SubTitle.js +51 -0
- package/dist/esm/elements/SubTitle.js.map +1 -0
- package/dist/esm/elements/Table.js +51 -0
- package/dist/esm/elements/Table.js.map +1 -0
- package/dist/esm/elements/Tag.js +49 -0
- package/dist/esm/elements/Tag.js.map +1 -0
- package/dist/esm/elements/Tags.js +34 -0
- package/dist/esm/elements/Tags.js.map +1 -0
- package/dist/esm/elements/Tbody.js +26 -0
- package/dist/esm/elements/Tbody.js.map +1 -0
- package/dist/esm/elements/Td.js +61 -0
- package/dist/esm/elements/Td.js.map +1 -0
- package/dist/esm/elements/Tfoot.js +26 -0
- package/dist/esm/elements/Tfoot.js.map +1 -0
- package/dist/esm/elements/Th.js +34 -0
- package/dist/esm/elements/Th.js.map +1 -0
- package/dist/esm/elements/Thead.js +26 -0
- package/dist/esm/elements/Thead.js.map +1 -0
- package/dist/esm/elements/Title.js +44 -0
- package/dist/esm/elements/Title.js.map +1 -0
- package/dist/esm/elements/Tr.js +31 -0
- package/dist/esm/elements/Tr.js.map +1 -0
- package/dist/esm/elements/UnorderedList.js +31 -0
- package/dist/esm/elements/UnorderedList.js.map +1 -0
- package/dist/esm/elements/iconProps.js +49 -0
- package/dist/esm/elements/iconProps.js.map +1 -0
- package/dist/esm/form/Autocomplete.js +279 -0
- package/dist/esm/form/Autocomplete.js.map +1 -0
- package/dist/esm/form/Checkbox.js +111 -0
- package/dist/esm/form/Checkbox.js.map +1 -0
- package/dist/esm/form/Checkboxes.js +89 -0
- package/dist/esm/form/Checkboxes.js.map +1 -0
- package/dist/esm/form/Control.js +79 -0
- package/dist/esm/form/Control.js.map +1 -0
- package/dist/esm/form/DateInput.js +87 -0
- package/dist/esm/form/DateInput.js.map +1 -0
- package/dist/esm/form/DateInputBase.js +263 -0
- package/dist/esm/form/DateInputBase.js.map +1 -0
- package/dist/esm/form/DateRangeInput.js +76 -0
- package/dist/esm/form/DateRangeInput.js.map +1 -0
- package/dist/esm/form/DateRangeInputBase.js +301 -0
- package/dist/esm/form/DateRangeInputBase.js.map +1 -0
- package/dist/esm/form/DateTimeInput.js +87 -0
- package/dist/esm/form/DateTimeInput.js.map +1 -0
- package/dist/esm/form/DateTimeInputBase.js +333 -0
- package/dist/esm/form/DateTimeInputBase.js.map +1 -0
- package/dist/esm/form/Field.js +153 -0
- package/dist/esm/form/Field.js.map +1 -0
- package/dist/esm/form/File.js +109 -0
- package/dist/esm/form/File.js.map +1 -0
- package/dist/esm/form/FormContext.js +170 -0
- package/dist/esm/form/FormContext.js.map +1 -0
- package/dist/esm/form/Input.js +88 -0
- package/dist/esm/form/Input.js.map +1 -0
- package/dist/esm/form/InputBase.js +40 -0
- package/dist/esm/form/InputBase.js.map +1 -0
- package/dist/esm/form/Numberinput.js +199 -0
- package/dist/esm/form/Numberinput.js.map +1 -0
- package/dist/esm/form/Radio.js +108 -0
- package/dist/esm/form/Radio.js.map +1 -0
- package/dist/esm/form/Radios.js +91 -0
- package/dist/esm/form/Radios.js.map +1 -0
- package/dist/esm/form/Rate.js +279 -0
- package/dist/esm/form/Rate.js.map +1 -0
- package/dist/esm/form/Select.js +81 -0
- package/dist/esm/form/Select.js.map +1 -0
- package/dist/esm/form/SelectBase.js +54 -0
- package/dist/esm/form/SelectBase.js.map +1 -0
- package/dist/esm/form/Slider.js +459 -0
- package/dist/esm/form/Slider.js.map +1 -0
- package/dist/esm/form/Switch.js +96 -0
- package/dist/esm/form/Switch.js.map +1 -0
- package/dist/esm/form/Taginput.js +352 -0
- package/dist/esm/form/Taginput.js.map +1 -0
- package/dist/esm/form/TextArea.js +77 -0
- package/dist/esm/form/TextArea.js.map +1 -0
- package/dist/esm/form/TextAreaBase.js +45 -0
- package/dist/esm/form/TextAreaBase.js.map +1 -0
- package/dist/esm/form/TimeInput.js +83 -0
- package/dist/esm/form/TimeInput.js.map +1 -0
- package/dist/esm/form/TimeInputBase.js +246 -0
- package/dist/esm/form/TimeInputBase.js.map +1 -0
- package/dist/esm/form/_pickerInternals/Calendar.js +760 -0
- package/dist/esm/form/_pickerInternals/Calendar.js.map +1 -0
- package/dist/esm/form/_pickerInternals/PickerPopover.js +95 -0
- package/dist/esm/form/_pickerInternals/PickerPopover.js.map +1 -0
- package/dist/esm/form/_pickerInternals/TimeWheels.js +721 -0
- package/dist/esm/form/_pickerInternals/TimeWheels.js.map +1 -0
- package/dist/esm/form/_pickerInternals/audioTick.js +109 -0
- package/dist/esm/form/_pickerInternals/audioTick.js.map +1 -0
- package/dist/esm/form/_pickerInternals/dateUtils.js +267 -0
- package/dist/esm/form/_pickerInternals/dateUtils.js.map +1 -0
- package/dist/esm/form/_pickerInternals/formatters.js +322 -0
- package/dist/esm/form/_pickerInternals/formatters.js.map +1 -0
- package/dist/esm/form/_pickerInternals/haptics.js +38 -0
- package/dist/esm/form/_pickerInternals/haptics.js.map +1 -0
- package/dist/esm/form/_pickerInternals/nativeInputSupport.js +25 -0
- package/dist/esm/form/_pickerInternals/nativeInputSupport.js.map +1 -0
- package/dist/esm/form/_pickerInternals/pickerTypes.js +50 -0
- package/dist/esm/form/_pickerInternals/pickerTypes.js.map +1 -0
- package/dist/esm/form/_pickerInternals/segmentMap.js +315 -0
- package/dist/esm/form/_pickerInternals/segmentMap.js.map +1 -0
- package/dist/esm/form/_pickerInternals/useNativeMobilePicker.js +49 -0
- package/dist/esm/form/_pickerInternals/useNativeMobilePicker.js.map +1 -0
- package/dist/esm/form/_pickerInternals/useSegmentedEntry.js +427 -0
- package/dist/esm/form/_pickerInternals/useSegmentedEntry.js.map +1 -0
- package/dist/esm/form/controlLoading.js +18 -0
- package/dist/esm/form/controlLoading.js.map +1 -0
- package/dist/esm/form/useAutoLabelId.js +54 -0
- package/dist/esm/form/useAutoLabelId.js.map +1 -0
- package/dist/esm/grid/Cell.js +35 -0
- package/dist/esm/grid/Cell.js.map +1 -0
- package/dist/esm/grid/Grid.js +51 -0
- package/dist/esm/grid/Grid.js.map +1 -0
- package/dist/esm/helpers/ClientOnly.js +33 -0
- package/dist/esm/helpers/ClientOnly.js.map +1 -0
- package/dist/esm/helpers/Config.js +60 -0
- package/dist/esm/helpers/Config.js.map +1 -0
- package/dist/esm/helpers/Theme.js +947 -0
- package/dist/esm/helpers/Theme.js.map +1 -0
- package/dist/esm/helpers/anchorAttrs.js +72 -0
- package/dist/esm/helpers/anchorAttrs.js.map +1 -0
- package/dist/esm/helpers/bulmaClassHelpers.js +415 -0
- package/dist/esm/helpers/bulmaClassHelpers.js.map +1 -0
- package/dist/esm/helpers/buttonType.js +24 -0
- package/dist/esm/helpers/buttonType.js.map +1 -0
- package/dist/esm/helpers/classNames.js +137 -0
- package/dist/esm/helpers/classNames.js.map +1 -0
- package/dist/esm/helpers/colorDeprecations.js +50 -0
- package/dist/esm/helpers/colorDeprecations.js.map +1 -0
- package/dist/esm/helpers/devWarnings.js +27 -0
- package/dist/esm/helpers/devWarnings.js.map +1 -0
- package/dist/esm/helpers/inertProps.js +27 -0
- package/dist/esm/helpers/inertProps.js.map +1 -0
- package/dist/esm/helpers/mergeBulmaStyles.js +20 -0
- package/dist/esm/helpers/mergeBulmaStyles.js.map +1 -0
- package/dist/esm/helpers/polymorphic.js +18 -0
- package/dist/esm/helpers/polymorphic.js.map +1 -0
- package/dist/esm/helpers/portal.js +76 -0
- package/dist/esm/helpers/portal.js.map +1 -0
- package/dist/esm/helpers/positionStacks.js +45 -0
- package/dist/esm/helpers/positionStacks.js.map +1 -0
- package/dist/esm/helpers/scrollLock.js +38 -0
- package/dist/esm/helpers/scrollLock.js.map +1 -0
- package/dist/esm/helpers/shadowDom.js +71 -0
- package/dist/esm/helpers/shadowDom.js.map +1 -0
- package/dist/esm/helpers/statusRegion.js +282 -0
- package/dist/esm/helpers/statusRegion.js.map +1 -0
- package/dist/esm/helpers/useAnchoredPosition.js +86 -0
- package/dist/esm/helpers/useAnchoredPosition.js.map +1 -0
- package/dist/esm/helpers/useBulmaClasses.js +158 -0
- package/dist/esm/helpers/useBulmaClasses.js.map +1 -0
- package/dist/esm/helpers/useClientLayoutEffect.js +13 -0
- package/dist/esm/helpers/useClientLayoutEffect.js.map +1 -0
- package/dist/esm/helpers/useColorClasses.js +84 -0
- package/dist/esm/helpers/useColorClasses.js.map +1 -0
- package/dist/esm/helpers/useFlexboxClasses.js +92 -0
- package/dist/esm/helpers/useFlexboxClasses.js.map +1 -0
- package/dist/esm/helpers/useFocusTrap.js +470 -0
- package/dist/esm/helpers/useFocusTrap.js.map +1 -0
- package/dist/esm/helpers/useIsHydrated.js +31 -0
- package/dist/esm/helpers/useIsHydrated.js.map +1 -0
- package/dist/esm/helpers/useOtherClasses.js +115 -0
- package/dist/esm/helpers/useOtherClasses.js.map +1 -0
- package/dist/esm/helpers/useSpacingClasses.js +82 -0
- package/dist/esm/helpers/useSpacingClasses.js.map +1 -0
- package/dist/esm/helpers/useTypographyClasses.js +93 -0
- package/dist/esm/helpers/useTypographyClasses.js.map +1 -0
- package/dist/esm/helpers/useVisibilityClasses.js +134 -0
- package/dist/esm/helpers/useVisibilityClasses.js.map +1 -0
- package/dist/esm/helpers/withSubComponents.js +24 -0
- package/dist/esm/helpers/withSubComponents.js.map +1 -0
- package/dist/esm/layout/Container.js +48 -0
- package/dist/esm/layout/Container.js.map +1 -0
- package/dist/esm/layout/Footer.js +33 -0
- package/dist/esm/layout/Footer.js.map +1 -0
- package/dist/esm/layout/Hero.js +90 -0
- package/dist/esm/layout/Hero.js.map +1 -0
- package/dist/esm/layout/Level.js +110 -0
- package/dist/esm/layout/Level.js.map +1 -0
- package/dist/esm/layout/Media.js +86 -0
- package/dist/esm/layout/Media.js.map +1 -0
- package/dist/esm/layout/Section.js +30 -0
- package/dist/esm/layout/Section.js.map +1 -0
- package/dist/extras.css +1 -1
- package/dist/extras.css.map +1 -1
- package/dist/index.cjs +75 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +115 -17516
- package/dist/index.esm.js.map +1 -1
- package/dist/types/elements/Icon.d.ts +10 -7
- package/dist/types/form/DateInputBase.d.ts +3 -4
- package/dist/types/form/DateTimeInputBase.d.ts +3 -4
- package/dist/types/form/File.d.ts +3 -3
- package/dist/types-cjs/elements/Icon.d.ts +10 -7
- package/dist/types-cjs/form/DateInputBase.d.ts +3 -4
- package/dist/types-cjs/form/DateTimeInputBase.d.ts +3 -4
- package/dist/types-cjs/form/File.d.ts +3 -3
- package/dist/versions/bestax-no-dark-mode.css +1 -1
- package/dist/versions/bestax-no-dark-mode.css.map +1 -1
- package/dist/versions/bestax-no-helpers-prefixed.css +1 -1
- package/dist/versions/bestax-no-helpers-prefixed.css.map +1 -1
- package/dist/versions/bestax-no-helpers.css +1 -1
- package/dist/versions/bestax-no-helpers.css.map +1 -1
- package/dist/versions/bestax-prefixed.css +1 -1
- package/dist/versions/bestax-prefixed.css.map +1 -1
- package/package.json +1 -1
- package/src/scss/form/_dateinput.scss +37 -6
- package/src/scss/form/_datetimeinput.scss +7 -2
- package/src/scss/form/_picker-popover.scss +1 -4
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* @allxsmith/bestax-bulma — AI agents: see AGENTS.md in the package root, or https://bestax.io/llms.txt */
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
|
|
4
|
+
import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
|
|
5
|
+
import { mergeBulmaStyles } from '../helpers/mergeBulmaStyles.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The `Footer` component provides a semantic and accessible site footer for your Bulma React UI.
|
|
9
|
+
*
|
|
10
|
+
* @function
|
|
11
|
+
* @param {FooterProps} props - Props for the Footer component.
|
|
12
|
+
* @returns {JSX.Element} The rendered footer element.
|
|
13
|
+
* @see {@link https://bulma.io/documentation/layout/footer/ | Bulma Footer documentation}
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* <Footer>
|
|
17
|
+
* <div className="content has-text-centered">...</div>
|
|
18
|
+
* </Footer>
|
|
19
|
+
*/
|
|
20
|
+
const Footer = ({ as = 'footer', className, children, color, bgColor, textColor, style, ...props }) => {
|
|
21
|
+
const { bulmaHelperClasses, bulmaHelperStyles, rest } = useBulmaClasses({
|
|
22
|
+
color: textColor ?? color,
|
|
23
|
+
backgroundColor: bgColor,
|
|
24
|
+
...props,
|
|
25
|
+
});
|
|
26
|
+
const Tag = as;
|
|
27
|
+
const mainClass = usePrefixedClassNames('footer');
|
|
28
|
+
const footerClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
29
|
+
return (jsx(Tag, { className: footerClasses, style: mergeBulmaStyles(bulmaHelperStyles, style), ...rest, children: children }));
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export { Footer };
|
|
33
|
+
//# sourceMappingURL=Footer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer.js","sources":["../../../src/layout/Footer.tsx"],"sourcesContent":["import React from 'react';\nimport classNames, { usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n validSchemeColors,\n} from '../helpers/useBulmaClasses';\nimport { mergeBulmaStyles } from '../helpers/mergeBulmaStyles';\n\n/**\n * Props for the Footer component.\n */\nexport interface FooterProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** The HTML tag to render as. */\n as?: 'footer' | 'div';\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /**\n * Background color. `scheme-*` values render as a dark-mode-safe inline\n * `background-color: var(--bulma-scheme-*)` instead of a class. The\n * `scheme-invert*` values do not change text color — pair them with a\n * contrasting foreground.\n */\n bgColor?:\n | (typeof validColors)[number]\n | (typeof validSchemeColors)[number]\n | 'inherit'\n | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content inside the footer. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Footer` component provides a semantic and accessible site footer for your Bulma React UI.\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 style,\n ...props\n}) => {\n const { bulmaHelperClasses, bulmaHelperStyles, 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\n className={footerClasses}\n style={mergeBulmaStyles(bulmaHelperStyles, style)}\n {...rest}\n >\n {children}\n </Tag>\n );\n};\n\nexport default Footer;\n"],"names":["_jsx"],"mappings":";;;;;;AAwCA;;;;;;;;;;;;AAYG;AACI,MAAM,MAAM,GAA0B,CAAC,EAC5C,EAAE,GAAG,QAAQ,EACb,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,KAAI;IACH,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QACtE,KAAK,EAAE,SAAS,IAAI,KAAK;AACzB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;IACF,MAAM,GAAG,GAAG,EAAE;AACd,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC;IACjD,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,CAAC;IAC1E,QACEA,IAAC,GAAG,EAAA,EACF,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAA,GAC7C,IAAI,EAAA,QAAA,EAEP,QAAQ,EAAA,CACL;AAEV;;"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/* @allxsmith/bestax-bulma — AI agents: see AGENTS.md in the package root, or https://bestax.io/llms.txt */
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
|
|
4
|
+
import { withSubComponents } from '../helpers/withSubComponents.js';
|
|
5
|
+
import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
|
|
6
|
+
import { mergeBulmaStyles } from '../helpers/mergeBulmaStyles.js';
|
|
7
|
+
import { warnUnstyledColor } from '../helpers/colorDeprecations.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The `Hero` component provides a responsive, flexible, and visually striking section for your Bulma React UI.
|
|
11
|
+
*
|
|
12
|
+
* @function
|
|
13
|
+
* @param {HeroProps} props - Props for the Hero component.
|
|
14
|
+
* @returns {JSX.Element} The rendered hero.
|
|
15
|
+
* @see {@link https://bulma.io/documentation/layout/hero/ | Bulma Hero documentation}
|
|
16
|
+
*/
|
|
17
|
+
const HeroComponent = ({ className, color, size, bgColor, fullheightWithNavbar, children, style, ...props }) => {
|
|
18
|
+
warnUnstyledColor('Hero', color, ['inherit', 'current']);
|
|
19
|
+
const { bulmaHelperClasses, bulmaHelperStyles, rest } = useBulmaClasses({
|
|
20
|
+
backgroundColor: bgColor,
|
|
21
|
+
...props,
|
|
22
|
+
});
|
|
23
|
+
const mainClass = usePrefixedClassNames('hero', {
|
|
24
|
+
[`is-${color}`]: color,
|
|
25
|
+
[`is-${size}`]: size && size !== 'fullheight-with-navbar',
|
|
26
|
+
'is-fullheight-with-navbar': fullheightWithNavbar || size === 'fullheight-with-navbar',
|
|
27
|
+
});
|
|
28
|
+
const heroClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
29
|
+
return (jsx("section", { className: heroClasses, style: mergeBulmaStyles(bulmaHelperStyles, style), ...rest, children: children }));
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Top bar for navigation or branding.
|
|
33
|
+
*
|
|
34
|
+
* @function
|
|
35
|
+
* @param {HeroHeadProps} props - Props for the HeroHead component.
|
|
36
|
+
* @returns {JSX.Element} The rendered hero head.
|
|
37
|
+
*/
|
|
38
|
+
const HeroHead = ({ className, children, color, bgColor, textColor, style, ...props }) => {
|
|
39
|
+
const { bulmaHelperClasses, bulmaHelperStyles, rest } = useBulmaClasses({
|
|
40
|
+
color: textColor ?? color,
|
|
41
|
+
backgroundColor: bgColor,
|
|
42
|
+
...props,
|
|
43
|
+
});
|
|
44
|
+
const mainClass = usePrefixedClassNames('hero-head');
|
|
45
|
+
const heroHeadClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
46
|
+
return (jsx("div", { className: heroHeadClasses, style: mergeBulmaStyles(bulmaHelperStyles, style), ...rest, children: children }));
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Main content area, vertically centered by default.
|
|
50
|
+
*
|
|
51
|
+
* @function
|
|
52
|
+
* @param {HeroBodyProps} props - Props for the HeroBody component.
|
|
53
|
+
* @returns {JSX.Element} The rendered hero body.
|
|
54
|
+
*/
|
|
55
|
+
const HeroBody = ({ className, children, color, bgColor, textColor, style, ...props }) => {
|
|
56
|
+
const { bulmaHelperClasses, bulmaHelperStyles, rest } = useBulmaClasses({
|
|
57
|
+
color: textColor ?? color,
|
|
58
|
+
backgroundColor: bgColor,
|
|
59
|
+
...props,
|
|
60
|
+
});
|
|
61
|
+
const mainClass = usePrefixedClassNames('hero-body');
|
|
62
|
+
const heroBodyClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
63
|
+
return (jsx("div", { className: heroBodyClasses, style: mergeBulmaStyles(bulmaHelperStyles, style), ...rest, children: children }));
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Bottom bar for tabs or actions.
|
|
67
|
+
*
|
|
68
|
+
* @function
|
|
69
|
+
* @param {HeroFootProps} props - Props for the HeroFoot component.
|
|
70
|
+
* @returns {JSX.Element} The rendered hero foot.
|
|
71
|
+
*/
|
|
72
|
+
const HeroFoot = ({ className, children, color, bgColor, textColor, style, ...props }) => {
|
|
73
|
+
const { bulmaHelperClasses, bulmaHelperStyles, rest } = useBulmaClasses({
|
|
74
|
+
color: textColor ?? color,
|
|
75
|
+
backgroundColor: bgColor,
|
|
76
|
+
...props,
|
|
77
|
+
});
|
|
78
|
+
const mainClass = usePrefixedClassNames('hero-foot');
|
|
79
|
+
const heroFootClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
80
|
+
return (jsx("div", { className: heroFootClasses, style: mergeBulmaStyles(bulmaHelperStyles, style), ...rest, children: children }));
|
|
81
|
+
};
|
|
82
|
+
// Attach subcomponents
|
|
83
|
+
const Hero = withSubComponents(HeroComponent, {
|
|
84
|
+
Head: HeroHead,
|
|
85
|
+
Body: HeroBody,
|
|
86
|
+
Foot: HeroFoot,
|
|
87
|
+
}, 'Hero');
|
|
88
|
+
|
|
89
|
+
export { Hero, HeroBody, HeroFoot, HeroHead };
|
|
90
|
+
//# sourceMappingURL=Hero.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Hero.js","sources":["../../../src/layout/Hero.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n validSchemeColors,\n} from '../helpers/useBulmaClasses';\nimport { mergeBulmaStyles } from '../helpers/mergeBulmaStyles';\nimport { warnUnstyledColor } from '../helpers/colorDeprecations';\n\n/**\n * Possible values for Bulma hero size.\n */\nexport type HeroSize =\n 'small' | 'medium' | 'large' | 'fullheight' | 'fullheight-with-navbar';\n\n/**\n * Props for the Hero component.\n */\nexport interface HeroProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes. */\n className?: string;\n /**\n * Bulma color modifier for the hero section (renders `is-<color>`).\n *\n * Only `primary`, `link`, `info`, `success`, `warning`, `danger`, `black`,\n * `white`, `light`, and `dark` have shipped CSS for `.hero`. Every other\n * value the union accepts emits a class no CSS rule matches, so the hero\n * renders unstyled; those log a console warning in development and will be\n * removed from this union in the next major version.\n */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Hero size. */\n size?: HeroSize;\n /**\n * Bulma background color helper. `scheme-*` values render as a\n * dark-mode-safe inline `background-color: var(--bulma-scheme-*)` instead\n * of a class. The `scheme-invert*` values do not change text color — pair\n * them with a contrasting foreground.\n */\n bgColor?:\n | (typeof validColors)[number]\n | (typeof validSchemeColors)[number]\n | 'inherit'\n | 'current';\n /** Use fullheight hero with a navbar offset. */\n fullheightWithNavbar?: boolean;\n /** Hero content (often includes `Hero.Head`, `Hero.Body`, `Hero.Foot`). */\n children?: React.ReactNode;\n}\n\n/**\n * The `Hero` component provides a responsive, flexible, and visually striking section for your Bulma React UI.\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 */\nconst HeroComponent: React.FC<HeroProps> = ({\n className,\n color,\n size,\n bgColor,\n fullheightWithNavbar,\n children,\n style,\n ...props\n}) => {\n warnUnstyledColor('Hero', color, ['inherit', 'current']);\n\n const { bulmaHelperClasses, bulmaHelperStyles, 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\n className={heroClasses}\n style={mergeBulmaStyles(bulmaHelperStyles, style)}\n {...rest}\n >\n {children}\n </section>\n );\n};\n\n/**\n * Props for the HeroHead component.\n */\nexport interface HeroHeadProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes. */\n className?: string;\n /** Bulma color modifier for text. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /**\n * Background color. `scheme-*` values render as a dark-mode-safe inline\n * `background-color: var(--bulma-scheme-*)` instead of a class. The\n * `scheme-invert*` values do not change text color — pair them with a\n * contrasting foreground.\n */\n bgColor?:\n | (typeof validColors)[number]\n | (typeof validSchemeColors)[number]\n | 'inherit'\n | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Top bar for navigation or branding.\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 style,\n ...props\n}) => {\n const { bulmaHelperClasses, bulmaHelperStyles, 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\n className={heroHeadClasses}\n style={mergeBulmaStyles(bulmaHelperStyles, style)}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Props for the HeroBody component.\n */\nexport interface HeroBodyProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes. */\n className?: string;\n /** Bulma color modifier for text. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /**\n * Background color. `scheme-*` values render as a dark-mode-safe inline\n * `background-color: var(--bulma-scheme-*)` instead of a class. The\n * `scheme-invert*` values do not change text color — pair them with a\n * contrasting foreground.\n */\n bgColor?:\n | (typeof validColors)[number]\n | (typeof validSchemeColors)[number]\n | 'inherit'\n | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Main content area, vertically centered by default.\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 style,\n ...props\n}) => {\n const { bulmaHelperClasses, bulmaHelperStyles, 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\n className={heroBodyClasses}\n style={mergeBulmaStyles(bulmaHelperStyles, style)}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Props for the HeroFoot component.\n */\nexport interface HeroFootProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Additional CSS classes. */\n className?: string;\n /** Bulma color modifier for text. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /**\n * Background color. `scheme-*` values render as a dark-mode-safe inline\n * `background-color: var(--bulma-scheme-*)` instead of a class. The\n * `scheme-invert*` values do not change text color — pair them with a\n * contrasting foreground.\n */\n bgColor?:\n | (typeof validColors)[number]\n | (typeof validSchemeColors)[number]\n | 'inherit'\n | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Bottom bar for tabs or actions.\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 style,\n ...props\n}) => {\n const { bulmaHelperClasses, bulmaHelperStyles, 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\n className={heroFootClasses}\n style={mergeBulmaStyles(bulmaHelperStyles, style)}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n// Attach subcomponents\nexport const Hero = withSubComponents(\n HeroComponent,\n {\n Head: HeroHead,\n Body: HeroBody,\n Foot: HeroFoot,\n },\n 'Hero'\n);\n\nexport default Hero;\n"],"names":["_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/* @allxsmith/bestax-bulma — AI agents: see AGENTS.md in the package root, or https://bestax.io/llms.txt */
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
|
|
4
|
+
import { withSubComponents } from '../helpers/withSubComponents.js';
|
|
5
|
+
import { ANCHOR_ONLY_ATTRS, omitAttrs } from '../helpers/anchorAttrs.js';
|
|
6
|
+
import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The `Level` component provides a flexible horizontal layout for your Bulma React UI, perfect for aligning items on the left and right, distributing items evenly, or centering statistics and controls.
|
|
10
|
+
*
|
|
11
|
+
* @function
|
|
12
|
+
* @param {LevelProps} props - Props for the Level component.
|
|
13
|
+
* @returns {JSX.Element} The rendered level.
|
|
14
|
+
* @see {@link https://bulma.io/documentation/layout/level/ | Bulma Level documentation}
|
|
15
|
+
*/
|
|
16
|
+
const LevelComponent = ({ isMobile, className, children, color, bgColor, textColor, ...props }) => {
|
|
17
|
+
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
18
|
+
color: textColor ?? color,
|
|
19
|
+
backgroundColor: bgColor,
|
|
20
|
+
...props,
|
|
21
|
+
});
|
|
22
|
+
const mainClass = usePrefixedClassNames('level', {
|
|
23
|
+
'is-mobile': isMobile,
|
|
24
|
+
});
|
|
25
|
+
const levelClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
26
|
+
return (jsx("nav", { className: levelClasses, ...rest, children: children }));
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Left-aligned content.
|
|
30
|
+
*
|
|
31
|
+
* @function
|
|
32
|
+
* @param {LevelLeftProps} props - Props for the LevelLeft component.
|
|
33
|
+
* @returns {JSX.Element} The rendered level left section.
|
|
34
|
+
*/
|
|
35
|
+
const LevelLeft = ({ className, children, color, bgColor, textColor, ...props }) => {
|
|
36
|
+
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
37
|
+
color: textColor ?? color,
|
|
38
|
+
backgroundColor: bgColor,
|
|
39
|
+
...props,
|
|
40
|
+
});
|
|
41
|
+
const mainClass = usePrefixedClassNames('level-left');
|
|
42
|
+
const levelLeftClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
43
|
+
return (jsx("div", { className: levelLeftClasses, ...rest, children: children }));
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Right-aligned content.
|
|
47
|
+
*
|
|
48
|
+
* @function
|
|
49
|
+
* @param {LevelRightProps} props - Props for the LevelRight component.
|
|
50
|
+
* @returns {JSX.Element} The rendered level right section.
|
|
51
|
+
*/
|
|
52
|
+
const LevelRight = ({ className, children, color, bgColor, textColor, ...props }) => {
|
|
53
|
+
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
54
|
+
color: textColor ?? color,
|
|
55
|
+
backgroundColor: bgColor,
|
|
56
|
+
...props,
|
|
57
|
+
});
|
|
58
|
+
const mainClass = usePrefixedClassNames('level-right');
|
|
59
|
+
const levelRightClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
60
|
+
return (jsx("div", { className: levelRightClasses, ...rest, children: children }));
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* The derived set plus `rel`.
|
|
64
|
+
*
|
|
65
|
+
* `rel` is not an anchor-only attribute — React declares it on every element, so
|
|
66
|
+
* `AnchorOnlyAttributes` excludes it — but this component has always withheld it
|
|
67
|
+
* from a non-anchor, so it is named separately rather than folded into the shared
|
|
68
|
+
* set. That separation is what says which names come from where.
|
|
69
|
+
*
|
|
70
|
+
* The annotation is load-bearing: without it a typo adds a key nobody strips, and
|
|
71
|
+
* widening the key type to `string` also erases `omitAttrs`'s return type.
|
|
72
|
+
*/
|
|
73
|
+
const STRIP_FROM_NON_ANCHOR = { ...ANCHOR_ONLY_ATTRS, rel: true };
|
|
74
|
+
/**
|
|
75
|
+
* Individual item, can be rendered as `div`, `p`, or `a`.
|
|
76
|
+
*
|
|
77
|
+
* @function
|
|
78
|
+
* @param {LevelItemProps} props - Props for the LevelItem component.
|
|
79
|
+
* @returns {JSX.Element} The rendered level item.
|
|
80
|
+
*/
|
|
81
|
+
const LevelItem = ({ as = 'div', hasTextCentered, className, children, color, bgColor, textColor, ...props }) => {
|
|
82
|
+
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
83
|
+
color: textColor ?? color,
|
|
84
|
+
backgroundColor: bgColor,
|
|
85
|
+
...props,
|
|
86
|
+
});
|
|
87
|
+
const Tag = as;
|
|
88
|
+
const mainClass = usePrefixedClassNames('level-item', {
|
|
89
|
+
'has-text-centered': hasTextCentered,
|
|
90
|
+
});
|
|
91
|
+
const levelItemClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
92
|
+
// The anchor's own attributes reach an `<a>` and nothing else. The type
|
|
93
|
+
// declares them at every `as` — narrowing that is source-breaking (#672) — so
|
|
94
|
+
// the runtime is what keeps `<Level.Item as="p" download>` from rendering a
|
|
95
|
+
// dead attribute.
|
|
96
|
+
// `STRIP_FROM_NON_ANCHOR` above names the set and why `rel` is in it.
|
|
97
|
+
if (Tag === 'a') {
|
|
98
|
+
return (jsx("a", { className: levelItemClasses, ...rest, children: children }));
|
|
99
|
+
}
|
|
100
|
+
const withoutAnchorAttrs = omitAttrs(rest, STRIP_FROM_NON_ANCHOR);
|
|
101
|
+
return (jsx(Tag, { className: levelItemClasses, ...withoutAnchorAttrs, children: children }));
|
|
102
|
+
};
|
|
103
|
+
const Level = withSubComponents(LevelComponent, {
|
|
104
|
+
Left: LevelLeft,
|
|
105
|
+
Right: LevelRight,
|
|
106
|
+
Item: LevelItem,
|
|
107
|
+
}, 'Level');
|
|
108
|
+
|
|
109
|
+
export { Level, LevelItem, LevelLeft, LevelRight };
|
|
110
|
+
//# sourceMappingURL=Level.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Level.js","sources":["../../../src/layout/Level.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport {\n type AnchorOnlyAttributes,\n ANCHOR_ONLY_ATTRS,\n omitAttrs,\n} from '../helpers/anchorAttrs';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Level component.\n */\nexport interface LevelProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Keeps the level horizontal on mobile (Bulma `is-mobile`). Without it\n * the level stacks vertically below tablet. */\n isMobile?: boolean;\n /** Bulma color modifier for the level. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Level content (`Level.Left`, `Level.Right`, `Level.Item`). */\n children?: React.ReactNode;\n}\n\n/**\n * The `Level` component provides a flexible horizontal layout for your Bulma React UI, perfect for aligning items on the left and right, distributing items evenly, or centering statistics and controls.\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 */\nconst LevelComponent: React.FC<LevelProps> = ({\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 */\nexport interface LevelLeftProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Left-aligned content.\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 */\nexport interface LevelRightProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Right-aligned content.\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 * The derived set plus `rel`.\n *\n * `rel` is not an anchor-only attribute — React declares it on every element, so\n * `AnchorOnlyAttributes` excludes it — but this component has always withheld it\n * from a non-anchor, so it is named separately rather than folded into the shared\n * set. That separation is what says which names come from where.\n *\n * The annotation is load-bearing: without it a typo adds a key nobody strips, and\n * widening the key type to `string` also erases `omitAttrs`'s return type.\n */\nconst STRIP_FROM_NON_ANCHOR: Readonly<\n Record<keyof AnchorOnlyAttributes | 'rel', true>\n> = { ...ANCHOR_ONLY_ATTRS, rel: true };\n\n/**\n * Props for the LevelItem component.\n *\n * The anchor attributes arrive through `AnchorOnlyAttributes`, at every `as`, and\n * are forwarded only when the tag is an `<a>` — so `<Level.Item as=\"p\" download>` compiles and\n * renders a `<p>` without it. That asymmetry is deliberate for now: deriving\n * them from `as` instead is what makes the dead pair a type error, and it also\n * stops `const p: LevelItemProps = { href }` compiling for consumers who write\n * it today. #672 carries that half, labelled `next-major`.\n *\n * What that set must NOT become is a hand-written list. Enumerating only `href`,\n * `target` and `rel` made every other anchor attribute a type error even at\n * `as=\"a\"`, which is what #641 reported; `helpers/anchorAttrs.ts` derives it from\n * React instead, and `ANCHOR_ONLY_ATTRS` there is the guard to protect.\n */\nexport interface LevelItemProps\n extends\n AnchorOnlyAttributes,\n React.HTMLAttributes<\n HTMLDivElement | HTMLParagraphElement | HTMLAnchorElement\n >,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Element type to render. */\n as?: 'div' | 'p' | 'a';\n /** Center the text in the item. */\n hasTextCentered?: boolean;\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Individual item, can be rendered as `div`, `p`, or `a`.\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 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 // The anchor's own attributes reach an `<a>` and nothing else. The type\n // declares them at every `as` — narrowing that is source-breaking (#672) — so\n // the runtime is what keeps `<Level.Item as=\"p\" download>` from rendering a\n // dead attribute.\n // `STRIP_FROM_NON_ANCHOR` above names the set and why `rel` is in it.\n\n if (Tag === 'a') {\n return (\n <a className={levelItemClasses} {...rest}>\n {children}\n </a>\n );\n }\n\n const withoutAnchorAttrs = omitAttrs(rest, STRIP_FROM_NON_ANCHOR);\n\n return (\n <Tag className={levelItemClasses} {...withoutAnchorAttrs}>\n {children}\n </Tag>\n );\n};\n\nexport const Level = withSubComponents(\n LevelComponent,\n {\n Left: LevelLeft,\n Right: LevelRight,\n Item: LevelItem,\n },\n 'Level'\n);\n\nexport default Level;\n"],"names":["_jsx"],"mappings":";;;;;;;AAoCA;;;;;;;AAOG;AACH,MAAM,cAAc,GAAyB,CAAC,EAC5C,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QACnD,KAAK,EAAE,SAAS,IAAI,KAAK;AACzB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;AACF,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,EAAE;AAC/C,QAAA,WAAW,EAAE,QAAQ;AACtB,KAAA,CAAC;IACF,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,CAAC;IACzE,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,YAAY,EAAA,GAAM,IAAI,EAAA,QAAA,EACnC,QAAQ,EAAA,CACL;AAEV,CAAC;AAqBD;;;;;;AAMG;MACU,SAAS,GAA6B,CAAC,EAClD,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QACnD,KAAK,EAAE,SAAS,IAAI,KAAK;AACzB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;AACF,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC;IACrD,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,CAAC;IAC7E,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,gBAAgB,EAAA,GAAM,IAAI,EAAA,QAAA,EACvC,QAAQ,EAAA,CACL;AAEV;AAqBA;;;;;;AAMG;MACU,UAAU,GAA8B,CAAC,EACpD,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QACnD,KAAK,EAAE,SAAS,IAAI,KAAK;AACzB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;AACF,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,aAAa,CAAC;IACtD,MAAM,iBAAiB,GAAG,UAAU,CAClC,SAAS,EACT,kBAAkB,EAClB,SAAS,CACV;IACD,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,iBAAiB,EAAA,GAAM,IAAI,EAAA,QAAA,EACxC,QAAQ,EAAA,CACL;AAEV;AAEA;;;;;;;;;;AAUG;AACH,MAAM,qBAAqB,GAEvB,EAAE,GAAG,iBAAiB,EAAE,GAAG,EAAE,IAAI,EAAE;AAwCvC;;;;;;AAMG;AACI,MAAM,SAAS,GAA6B,CAAC,EAClD,EAAE,GAAG,KAAK,EACV,eAAe,EACf,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QACnD,KAAK,EAAE,SAAS,IAAI,KAAK;AACzB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;IACF,MAAM,GAAG,GAAG,EAAE;AAEd,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,YAAY,EAAE;AACpD,QAAA,mBAAmB,EAAE,eAAe;AACrC,KAAA,CAAC;IACF,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,CAAC;;;;;;AAQ7E,IAAA,IAAI,GAAG,KAAK,GAAG,EAAE;QACf,QACEA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,gBAAgB,EAAA,GAAM,IAAI,EAAA,QAAA,EACrC,QAAQ,EAAA,CACP;IAER;IAEA,MAAM,kBAAkB,GAAG,SAAS,CAAC,IAAI,EAAE,qBAAqB,CAAC;AAEjE,IAAA,QACEA,GAAA,CAAC,GAAG,EAAA,EAAC,SAAS,EAAE,gBAAgB,EAAA,GAAM,kBAAkB,EAAA,QAAA,EACrD,QAAQ,EAAA,CACL;AAEV;AAEO,MAAM,KAAK,GAAG,iBAAiB,CACpC,cAAc,EACd;AACE,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,KAAK,EAAE,UAAU;AACjB,IAAA,IAAI,EAAE,SAAS;CAChB,EACD,OAAO;;"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/* @allxsmith/bestax-bulma — AI agents: see AGENTS.md in the package root, or https://bestax.io/llms.txt */
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
|
|
4
|
+
import { withSubComponents } from '../helpers/withSubComponents.js';
|
|
5
|
+
import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The `Media` component implements Bulma’s powerful media object layout for React.
|
|
9
|
+
*
|
|
10
|
+
* @function
|
|
11
|
+
* @param {MediaProps} props - Props for the Media component.
|
|
12
|
+
* @returns {JSX.Element} The rendered media container.
|
|
13
|
+
* @see {@link https://bulma.io/documentation/layout/media-object/ | Bulma Media documentation}
|
|
14
|
+
*/
|
|
15
|
+
const MediaComponent = ({ as = 'article', className, children, color, bgColor, textColor, ...props }) => {
|
|
16
|
+
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
17
|
+
color: textColor ?? color,
|
|
18
|
+
backgroundColor: bgColor,
|
|
19
|
+
...props,
|
|
20
|
+
});
|
|
21
|
+
const Tag = as;
|
|
22
|
+
const mainClass = usePrefixedClassNames('media');
|
|
23
|
+
const mediaClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
24
|
+
return (jsx(Tag, { className: mediaClasses, ...rest, children: children }));
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* For avatars, thumbnails, icons (renders as `figure` or `div`)
|
|
28
|
+
*
|
|
29
|
+
* @function
|
|
30
|
+
* @param {MediaLeftProps} props - Props for the MediaLeft component.
|
|
31
|
+
* @returns {JSX.Element} The rendered media left section.
|
|
32
|
+
*/
|
|
33
|
+
const MediaLeft = ({ as = 'figure', className, children, color, bgColor, textColor, ...props }) => {
|
|
34
|
+
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
35
|
+
color: textColor ?? color,
|
|
36
|
+
backgroundColor: bgColor,
|
|
37
|
+
...props,
|
|
38
|
+
});
|
|
39
|
+
const Tag = as;
|
|
40
|
+
const mainClass = usePrefixedClassNames('media-left');
|
|
41
|
+
const mediaLeftClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
42
|
+
return (jsx(Tag, { className: mediaLeftClasses, ...rest, children: children }));
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Main content (renders as `div`)
|
|
46
|
+
*
|
|
47
|
+
* @function
|
|
48
|
+
* @param {MediaContentProps} props - Props for the MediaContent component.
|
|
49
|
+
* @returns {JSX.Element} The rendered media content section.
|
|
50
|
+
*/
|
|
51
|
+
const MediaContent = ({ className, children, color, bgColor, textColor, ...props }) => {
|
|
52
|
+
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
53
|
+
color: textColor ?? color,
|
|
54
|
+
backgroundColor: bgColor,
|
|
55
|
+
...props,
|
|
56
|
+
});
|
|
57
|
+
const mainClass = usePrefixedClassNames('media-content');
|
|
58
|
+
const mediaContentClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
59
|
+
return (jsx("div", { className: mediaContentClasses, ...rest, children: children }));
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Actions or controls (renders as `div`)
|
|
63
|
+
*
|
|
64
|
+
* @function
|
|
65
|
+
* @param {MediaRightProps} props - Props for the MediaRight component.
|
|
66
|
+
* @returns {JSX.Element} The rendered media right section.
|
|
67
|
+
*/
|
|
68
|
+
const MediaRight = ({ className, children, color, bgColor, textColor, ...props }) => {
|
|
69
|
+
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
70
|
+
color: textColor ?? color,
|
|
71
|
+
backgroundColor: bgColor,
|
|
72
|
+
...props,
|
|
73
|
+
});
|
|
74
|
+
const mainClass = usePrefixedClassNames('media-right');
|
|
75
|
+
const mediaRightClasses = classNames(mainClass, bulmaHelperClasses, className);
|
|
76
|
+
return (jsx("div", { className: mediaRightClasses, ...rest, children: children }));
|
|
77
|
+
};
|
|
78
|
+
/** Media component with Left, Content, and Right sub-components. */
|
|
79
|
+
const Media = withSubComponents(MediaComponent, {
|
|
80
|
+
Left: MediaLeft,
|
|
81
|
+
Content: MediaContent,
|
|
82
|
+
Right: MediaRight,
|
|
83
|
+
}, 'Media');
|
|
84
|
+
|
|
85
|
+
export { Media, MediaContent, MediaLeft, MediaRight };
|
|
86
|
+
//# sourceMappingURL=Media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Media.js","sources":["../../../src/layout/Media.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, usePrefixedClassNames } from '../helpers/classNames';\nimport { withSubComponents } from '../helpers/withSubComponents';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n} from '../helpers/useBulmaClasses';\n\n/**\n * Props for the Media component.\n */\nexport interface MediaProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Element type for the root Media container. */\n as?: 'article' | 'div';\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma background color helper. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Bulma text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content inside the media container. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Media` component implements Bulma’s powerful media object layout for React.\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 */\nconst MediaComponent: 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 */\nexport interface MediaLeftProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Element type to render. */\n as?: 'figure' | 'div';\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * For avatars, thumbnails, icons (renders as `figure` or `div`)\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 */\nexport interface MediaContentProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Main content (renders as `div`)\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 */\nexport interface MediaRightProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<BulmaClassesProps, 'color' | 'backgroundColor'> {\n /** Bulma color modifier. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Background color. */\n bgColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Text color. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Additional CSS classes. */\n className?: string;\n /** Content. */\n children?: React.ReactNode;\n}\n\n/**\n * Actions or controls (renders as `div`)\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 with Left, Content, and Right sub-components. */\nexport const Media = withSubComponents(\n MediaComponent,\n {\n Left: MediaLeft,\n Content: MediaContent,\n Right: MediaRight,\n },\n 'Media'\n);\n\nexport default Media;\n"],"names":["_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* @allxsmith/bestax-bulma — AI agents: see AGENTS.md in the package root, or https://bestax.io/llms.txt */
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { usePrefixedClassNames, classNames } from '../helpers/classNames.js';
|
|
4
|
+
import { useBulmaClasses } from '../helpers/useBulmaClasses.js';
|
|
5
|
+
import { mergeBulmaStyles } from '../helpers/mergeBulmaStyles.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The `Section` component provides vertical spacing and visual separation for your Bulma React UI.
|
|
9
|
+
*
|
|
10
|
+
* @function
|
|
11
|
+
* @param {SectionProps} props - Props for the Section component.
|
|
12
|
+
* @returns {JSX.Element} The rendered section.
|
|
13
|
+
* @see {@link https://bulma.io/documentation/layout/section/ | Bulma Section documentation}
|
|
14
|
+
*/
|
|
15
|
+
const Section = ({ size, className, children, color, bgColor, textColor, style, ...props }) => {
|
|
16
|
+
const { bulmaHelperClasses, bulmaHelperStyles, rest } = useBulmaClasses({
|
|
17
|
+
color: textColor ?? color,
|
|
18
|
+
backgroundColor: bgColor,
|
|
19
|
+
...props,
|
|
20
|
+
});
|
|
21
|
+
const mainClass = usePrefixedClassNames('section');
|
|
22
|
+
const sectionModifiers = usePrefixedClassNames('', {
|
|
23
|
+
[`is-${size}`]: size,
|
|
24
|
+
});
|
|
25
|
+
const sectionClasses = classNames(mainClass, sectionModifiers, className, bulmaHelperClasses);
|
|
26
|
+
return (jsx("section", { className: sectionClasses, style: mergeBulmaStyles(bulmaHelperStyles, style), ...rest, children: children }));
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export { Section };
|
|
30
|
+
//# sourceMappingURL=Section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.js","sources":["../../../src/layout/Section.tsx"],"sourcesContent":["import React from 'react';\nimport classNames, { usePrefixedClassNames } from '../helpers/classNames';\nimport {\n useBulmaClasses,\n BulmaClassesProps,\n validColors,\n validSchemeColors,\n} from '../helpers/useBulmaClasses';\nimport { mergeBulmaStyles } from '../helpers/mergeBulmaStyles';\n\n/**\n * Section size values for Bulma.\n */\ntype SectionSize = 'medium' | 'large';\n\n/**\n * Props for the Section component.\n */\nexport interface SectionProps\n extends\n React.HTMLAttributes<HTMLElement>,\n Omit<BulmaClassesProps, 'backgroundColor' | 'color'> {\n /** Bulma color modifier for text. */\n color?: (typeof validColors)[number] | 'inherit' | 'current';\n /**\n * Bulma background color helper. `scheme-*` values render as a\n * dark-mode-safe inline `background-color: var(--bulma-scheme-*)` instead\n * of a class. The `scheme-invert*` values do not change text color — pair\n * them with a contrasting foreground.\n */\n bgColor?:\n | (typeof validColors)[number]\n | (typeof validSchemeColors)[number]\n | 'inherit'\n | 'current';\n /** Bulma text color helper. */\n textColor?: (typeof validColors)[number] | 'inherit' | 'current';\n /** Section size for extra vertical spacing. */\n size?: SectionSize;\n /** Additional CSS classes. */\n className?: string;\n /** Section content. */\n children?: React.ReactNode;\n}\n\n/**\n * The `Section` component provides vertical spacing and visual separation for your Bulma React UI.\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 style,\n ...props\n}) => {\n const { bulmaHelperClasses, bulmaHelperStyles, 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\n className={sectionClasses}\n style={mergeBulmaStyles(bulmaHelperStyles, style)}\n {...rest}\n >\n {children}\n </section>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;AA6CA;;;;;;;AAOG;AACI,MAAM,OAAO,GAA2B,CAAC,EAC9C,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,KAAI;IACH,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QACtE,KAAK,EAAE,SAAS,IAAI,KAAK;AACzB,QAAA,eAAe,EAAE,OAAO;AACxB,QAAA,GAAG,KAAK;AACT,KAAA,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC;AAClD,IAAA,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,EAAE,EAAE;AACjD,QAAA,CAAC,CAAA,GAAA,EAAM,IAAI,CAAA,CAAE,GAAG,IAAI;AACrB,KAAA,CAAC;AACF,IAAA,MAAM,cAAc,GAAG,UAAU,CAC/B,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,kBAAkB,CACnB;IAED,QACEA,iBACE,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAA,GAC7C,IAAI,YAEP,QAAQ,EAAA,CACD;AAEd;;"}
|