@allxsmith/bestax-bulma 5.8.0 → 5.8.2
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 +20 -0
- package/dist/index.cjs.js +304 -387
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +304 -387
- package/dist/index.esm.js.map +1 -1
- package/dist/types/columns/Column.d.ts +25 -30
- package/dist/types/columns/Columns.d.ts +23 -30
- package/dist/types/components/Avatar.d.ts +15 -20
- package/dist/types/components/Avatars.d.ts +8 -9
- package/dist/types/components/Badge.d.ts +13 -21
- package/dist/types/components/Breadcrumb.d.ts +6 -9
- package/dist/types/components/Card.d.ts +34 -36
- package/dist/types/components/Carousel.d.ts +29 -29
- package/dist/types/components/Collapse.d.ts +17 -18
- package/dist/types/components/Dialog.d.ts +24 -29
- package/dist/types/components/Dropdown.d.ts +16 -18
- package/dist/types/components/Loading.d.ts +13 -18
- package/dist/types/components/Menu.d.ts +11 -15
- package/dist/types/components/Message.d.ts +11 -14
- package/dist/types/components/Modal.d.ts +23 -29
- package/dist/types/components/Navbar.d.ts +60 -72
- package/dist/types/components/Pagination.d.ts +39 -35
- package/dist/types/components/Panel.d.ts +26 -33
- package/dist/types/components/Reveal.d.ts +11 -17
- package/dist/types/components/Sidebar.d.ts +17 -20
- package/dist/types/components/Steps.d.ts +28 -37
- package/dist/types/components/Tabs.d.ts +44 -43
- package/dist/types/components/Toast.d.ts +23 -28
- package/dist/types/components/Tooltip.d.ts +16 -20
- package/dist/types/elements/Block.d.ts +11 -10
- package/dist/types/elements/Box.d.ts +12 -10
- package/dist/types/elements/Button.d.ts +30 -23
- package/dist/types/elements/Buttons.d.ts +13 -9
- package/dist/types/elements/Code.d.ts +5 -10
- package/dist/types/elements/Content.d.ts +12 -11
- package/dist/types/elements/Delete.d.ts +14 -12
- package/dist/types/elements/Divider.d.ts +3 -7
- package/dist/types/elements/Emphasis.d.ts +5 -10
- package/dist/types/elements/Figure.d.ts +8 -10
- package/dist/types/elements/Icon.d.ts +18 -18
- package/dist/types/elements/IconText.d.ts +14 -11
- package/dist/types/elements/Image.d.ts +17 -17
- package/dist/types/elements/Link.d.ts +10 -14
- package/dist/types/elements/LinkButton.d.ts +3 -9
- package/dist/types/elements/ListItem.d.ts +6 -11
- package/dist/types/elements/Notification.d.ts +33 -24
- package/dist/types/elements/OrderedList.d.ts +7 -8
- package/dist/types/elements/Paragraph.d.ts +5 -10
- package/dist/types/elements/Pre.d.ts +5 -10
- package/dist/types/elements/Progress.d.ts +16 -10
- package/dist/types/elements/Skeleton.d.ts +4 -13
- package/dist/types/elements/Span.d.ts +5 -9
- package/dist/types/elements/Strong.d.ts +5 -10
- package/dist/types/elements/SubTitle.d.ts +9 -11
- package/dist/types/elements/Table.d.ts +8 -9
- package/dist/types/elements/Tag.d.ts +9 -12
- package/dist/types/elements/Tags.d.ts +4 -5
- package/dist/types/elements/Tbody.d.ts +2 -3
- package/dist/types/elements/Td.d.ts +3 -4
- package/dist/types/elements/Tfoot.d.ts +2 -3
- package/dist/types/elements/Th.d.ts +5 -6
- package/dist/types/elements/Thead.d.ts +2 -3
- package/dist/types/elements/Title.d.ts +10 -12
- package/dist/types/elements/Tr.d.ts +4 -5
- package/dist/types/elements/UnorderedList.d.ts +4 -5
- package/dist/types/form/Autocomplete.d.ts +35 -38
- package/dist/types/form/Checkbox.d.ts +7 -18
- package/dist/types/form/Checkboxes.d.ts +6 -7
- package/dist/types/form/Control.d.ts +21 -20
- package/dist/types/form/DateInput.d.ts +24 -24
- package/dist/types/form/DateInputBase.d.ts +36 -34
- package/dist/types/form/DateTimeInput.d.ts +22 -22
- package/dist/types/form/DateTimeInputBase.d.ts +44 -42
- package/dist/types/form/Field.d.ts +23 -26
- package/dist/types/form/File.d.ts +20 -16
- package/dist/types/form/Input.d.ts +20 -24
- package/dist/types/form/InputBase.d.ts +10 -11
- package/dist/types/form/Numberinput.d.ts +27 -24
- package/dist/types/form/Radio.d.ts +7 -18
- package/dist/types/form/Radios.d.ts +6 -7
- package/dist/types/form/Rate.d.ts +21 -37
- package/dist/types/form/Select.d.ts +16 -20
- package/dist/types/form/SelectBase.d.ts +13 -14
- package/dist/types/form/Slider.d.ts +62 -41
- package/dist/types/form/Switch.d.ts +16 -19
- package/dist/types/form/Taginput.d.ts +45 -48
- package/dist/types/form/TextArea.d.ts +11 -15
- package/dist/types/form/TextAreaBase.d.ts +13 -14
- package/dist/types/form/TimeInput.d.ts +24 -23
- package/dist/types/form/TimeInputBase.d.ts +38 -59
- package/dist/types/form/fieldProps.d.ts +1 -1
- package/dist/types/form/useAutoLabelId.d.ts +28 -0
- package/dist/types/grid/Cell.d.ts +12 -13
- package/dist/types/grid/Grid.d.ts +16 -17
- package/dist/types/helpers/colorDeprecations.d.ts +17 -0
- package/dist/types/layout/Container.d.ts +16 -13
- package/dist/types/layout/Footer.d.ts +7 -8
- package/dist/types/layout/Hero.d.ts +34 -28
- package/dist/types/layout/Level.d.ts +30 -33
- package/dist/types/layout/Media.d.ts +25 -29
- package/dist/types/layout/Section.d.ts +7 -8
- package/package.json +18 -18
package/dist/index.cjs.js
CHANGED
|
@@ -954,7 +954,7 @@ const useBulmaClasses = (props) => {
|
|
|
954
954
|
};
|
|
955
955
|
|
|
956
956
|
/**
|
|
957
|
-
*
|
|
957
|
+
* The `Column` component provides a single responsive layout column using Bulma's flexbox-based column system.
|
|
958
958
|
*
|
|
959
959
|
* @function
|
|
960
960
|
* @param {ColumnProps} props - Props for the Column component.
|
|
@@ -1016,7 +1016,7 @@ function withSubComponents(base, subs, displayName) {
|
|
|
1016
1016
|
}
|
|
1017
1017
|
|
|
1018
1018
|
/**
|
|
1019
|
-
*
|
|
1019
|
+
* The `Columns` component provides Bulma's flexible, responsive grid container for aligning and distributing [`Column`](./column.md) components.
|
|
1020
1020
|
*
|
|
1021
1021
|
* @function
|
|
1022
1022
|
* @param {ColumnsProps} props - Props for the Columns component.
|
|
@@ -1120,11 +1120,7 @@ function DefaultAvatarIcon() {
|
|
|
1120
1120
|
return (jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", width: "60%", height: "60%", "aria-hidden": "true", children: jsxRuntime.jsx("path", { fill: "currentColor", d: "M12 12a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm0 2c-4.42 0-9 2.24-9 5v2a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-2c0-2.76-4.58-5-9-5Z" }) }));
|
|
1121
1121
|
}
|
|
1122
1122
|
/**
|
|
1123
|
-
* Avatar component
|
|
1124
|
-
*
|
|
1125
|
-
* Falls back automatically: `src` (image) -> initials (from `initials`/`name`) -> `icon` ->
|
|
1126
|
-
* a generic default icon. Initials avatars get a stable auto background color derived from
|
|
1127
|
-
* `name` unless `color` is set.
|
|
1123
|
+
* The `Avatar` component represents a person or entity as a compact image.
|
|
1128
1124
|
*
|
|
1129
1125
|
* @function
|
|
1130
1126
|
* @param {AvatarProps} props - Props for the Avatar component.
|
|
@@ -1241,10 +1237,7 @@ function flattenChildren(children, keyPrefix = '') {
|
|
|
1241
1237
|
});
|
|
1242
1238
|
}
|
|
1243
1239
|
/**
|
|
1244
|
-
* Avatars component
|
|
1245
|
-
*
|
|
1246
|
-
* Clamps to `max`, rendering the overflow as a single "+N" surplus avatar. Mirrors the
|
|
1247
|
-
* `Tags`/`Buttons` sibling-plural-container convention.
|
|
1240
|
+
* The `Avatars` component renders an overlapping/stacked group of `Avatar`s, the "members" list pattern.
|
|
1248
1241
|
*
|
|
1249
1242
|
* @function
|
|
1250
1243
|
* @param {AvatarsProps} props - Props for the Avatars component.
|
|
@@ -1307,13 +1300,7 @@ const badgeColors = [
|
|
|
1307
1300
|
'white',
|
|
1308
1301
|
];
|
|
1309
1302
|
/**
|
|
1310
|
-
* Badge component
|
|
1311
|
-
* element (or rendered standalone).
|
|
1312
|
-
*
|
|
1313
|
-
* Renders `{max}+` when a numeric `content` exceeds `max` and no-ops its `pulse` animation
|
|
1314
|
-
* under `prefers-reduced-motion: reduce`. At `0` without `showZero` the pill is visually
|
|
1315
|
-
* hidden but stays mounted, so its `role="status"` live region announces a later `0 -> 1`
|
|
1316
|
-
* change.
|
|
1303
|
+
* The `Badge` component is a small status/count indicator overlaid on the corner of another element, or rendered standalone.
|
|
1317
1304
|
*
|
|
1318
1305
|
* @function
|
|
1319
1306
|
* @param {BadgeProps} props - Props for the Badge component.
|
|
@@ -1406,9 +1393,7 @@ const validBreadcrumbSeparators = [
|
|
|
1406
1393
|
];
|
|
1407
1394
|
const validBreadcrumbSizes = ['small', 'medium', 'large'];
|
|
1408
1395
|
/**
|
|
1409
|
-
* Breadcrumb component
|
|
1410
|
-
*
|
|
1411
|
-
* Supports alignment, separator styles, and sizes.
|
|
1396
|
+
* The `Breadcrumb` component renders a Bulma-styled breadcrumb navigation.
|
|
1412
1397
|
*
|
|
1413
1398
|
* @function
|
|
1414
1399
|
* @param {BreadcrumbProps} props - Props for the Breadcrumb component.
|
|
@@ -1459,17 +1444,17 @@ const hasCompoundComponents = (children) => {
|
|
|
1459
1444
|
});
|
|
1460
1445
|
};
|
|
1461
1446
|
/**
|
|
1462
|
-
* Card component
|
|
1447
|
+
* The `Card` component renders a Bulma-styled card with optional header, image, content, and footer.
|
|
1463
1448
|
*
|
|
1464
1449
|
* @function
|
|
1465
1450
|
* @param {CardProps} props - Props for the Card component.
|
|
1466
1451
|
* @returns {JSX.Element} The rendered card element.
|
|
1467
1452
|
* @see {@link https://bulma.io/documentation/components/card/ | Bulma Card documentation}
|
|
1468
1453
|
*/
|
|
1469
|
-
const CardComponent = ({ className, children, textColor, bgColor, hasShadow = true, header, headerCentered, headerIcon, footer, image, imageAlt, ...props }) => {
|
|
1454
|
+
const CardComponent = ({ className, children, textColor, color, bgColor, hasShadow = true, header, headerCentered, headerIcon, footer, image, imageAlt, ...props }) => {
|
|
1470
1455
|
const { classPrefix } = useConfig();
|
|
1471
1456
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
1472
|
-
color: textColor,
|
|
1457
|
+
color: textColor ?? color,
|
|
1473
1458
|
backgroundColor: bgColor,
|
|
1474
1459
|
...props,
|
|
1475
1460
|
});
|
|
@@ -1590,7 +1575,7 @@ const __test_exports__ = { renderFooter };
|
|
|
1590
1575
|
*/
|
|
1591
1576
|
const isBrowser$1 = (win, doc) => typeof win !== 'undefined' && typeof doc !== 'undefined';
|
|
1592
1577
|
/**
|
|
1593
|
-
*
|
|
1578
|
+
* The `Dropdown` component provides Bulma's versatile dropdown menu for your Bulma React UI.
|
|
1594
1579
|
*
|
|
1595
1580
|
* @function
|
|
1596
1581
|
* @param {DropdownProps} props - Props for the Dropdown component.
|
|
@@ -1680,7 +1665,7 @@ const Dropdown = withSubComponents(DropdownComponent, {
|
|
|
1680
1665
|
// Context to track MenuList nesting level
|
|
1681
1666
|
const MenuListLevelContext = React.createContext(0);
|
|
1682
1667
|
/**
|
|
1683
|
-
*
|
|
1668
|
+
* The `Menu` component provides Bulma's vertical navigation menu: a simple, accessible sidebar or section menu for your Bulma React UI.
|
|
1684
1669
|
*
|
|
1685
1670
|
* @function
|
|
1686
1671
|
* @param {MenuProps} props - Props for the Menu component.
|
|
@@ -1760,9 +1745,7 @@ const Menu = withSubComponents(MenuComponent, {
|
|
|
1760
1745
|
}, 'Menu');
|
|
1761
1746
|
|
|
1762
1747
|
/**
|
|
1763
|
-
*
|
|
1764
|
-
*
|
|
1765
|
-
* Supports Bulma helper classes, color, and an optional close button.
|
|
1748
|
+
* The `Message` component provides Bulma's flexible notice/message box for your Bulma React UI.
|
|
1766
1749
|
*
|
|
1767
1750
|
* @function
|
|
1768
1751
|
* @param {MessageProps} props - Props for the Message component.
|
|
@@ -1909,8 +1892,7 @@ const ModalClose = ({ className, size = 'large', variant = 'delete', ...props })
|
|
|
1909
1892
|
return (jsxRuntime.jsx("button", { className: classes, "aria-label": "close", type: "button", ...props }));
|
|
1910
1893
|
};
|
|
1911
1894
|
/**
|
|
1912
|
-
*
|
|
1913
|
-
* Supports both legacy props-based API and compound component API.
|
|
1895
|
+
* The `Modal` component provides a flexible, accessible modal dialog for your Bulma React UI.
|
|
1914
1896
|
*
|
|
1915
1897
|
* @function
|
|
1916
1898
|
* @param {ModalProps} props - Props for the Modal component.
|
|
@@ -1980,7 +1962,7 @@ const Modal = withSubComponents(ModalRoot, {
|
|
|
1980
1962
|
}, 'Modal');
|
|
1981
1963
|
|
|
1982
1964
|
/**
|
|
1983
|
-
*
|
|
1965
|
+
* The `Navbar` component implements Bulma's powerful, responsive navigation bar for your Bulma React UI.
|
|
1984
1966
|
*
|
|
1985
1967
|
* @function
|
|
1986
1968
|
* @param {NavbarProps} props - Props for the Navbar component.
|
|
@@ -2003,7 +1985,7 @@ const NavbarComponent = ({ className, textColor, bgColor, color, transparent, fi
|
|
|
2003
1985
|
return (jsxRuntime.jsx("nav", { className: navbarClasses, role: "navigation", "aria-label": "main navigation", ...rest, children: children }));
|
|
2004
1986
|
};
|
|
2005
1987
|
/**
|
|
2006
|
-
*
|
|
1988
|
+
* For logo and branding (left side)
|
|
2007
1989
|
*
|
|
2008
1990
|
* @function
|
|
2009
1991
|
* @param {NavbarBrandProps} props - Props for the NavbarBrand component.
|
|
@@ -2017,7 +1999,7 @@ const NavbarBrand = ({ className, children, textColor, ...props }) => {
|
|
|
2017
1999
|
return (jsxRuntime.jsx("div", { className: classNames(usePrefixedClassNames('navbar-brand'), bulmaHelperClasses, className), ...rest, children: children }));
|
|
2018
2000
|
};
|
|
2019
2001
|
/**
|
|
2020
|
-
*
|
|
2002
|
+
* Navigation links, buttons, or custom content
|
|
2021
2003
|
*
|
|
2022
2004
|
* @function
|
|
2023
2005
|
* @param {NavbarItemProps} props - Props for the NavbarItem component.
|
|
@@ -2034,7 +2016,7 @@ const NavbarItem = ({ className, as: Component = 'a', active, textColor, bgColor
|
|
|
2034
2016
|
}), bulmaHelperClasses, className), ...rest, children: children }));
|
|
2035
2017
|
};
|
|
2036
2018
|
/**
|
|
2037
|
-
*
|
|
2019
|
+
* Responsive menu toggle (mobile)
|
|
2038
2020
|
*
|
|
2039
2021
|
* @function
|
|
2040
2022
|
* @param {NavbarBurgerProps} props - Props for the NavbarBurger component.
|
|
@@ -2049,7 +2031,7 @@ const NavbarBurger = ({ className, active, children, ...props }) => {
|
|
|
2049
2031
|
}), bulmaHelperClasses, className), "aria-label": props['aria-label'] || 'menu', "aria-expanded": props['aria-expanded'] ?? !!active, ...rest, children: [jsxRuntime.jsx("span", { "aria-hidden": "true" }), jsxRuntime.jsx("span", { "aria-hidden": "true" }), jsxRuntime.jsx("span", { "aria-hidden": "true" }), children] }));
|
|
2050
2032
|
};
|
|
2051
2033
|
/**
|
|
2052
|
-
*
|
|
2034
|
+
* Collapsible content (contains `Navbar.Start` and `Navbar.End`)
|
|
2053
2035
|
*
|
|
2054
2036
|
* @function
|
|
2055
2037
|
* @param {NavbarMenuProps} props - Props for the NavbarMenu component.
|
|
@@ -2064,7 +2046,7 @@ const NavbarMenu = ({ className, active, children, ...props }) => {
|
|
|
2064
2046
|
}), bulmaHelperClasses, className), ...rest, children: children }));
|
|
2065
2047
|
};
|
|
2066
2048
|
/**
|
|
2067
|
-
*
|
|
2049
|
+
* Left-aligned menu area
|
|
2068
2050
|
*
|
|
2069
2051
|
* @function
|
|
2070
2052
|
* @param {NavbarStartEndProps} props - Props for the NavbarStart component.
|
|
@@ -2077,7 +2059,7 @@ const NavbarStart = ({ className, children, ...props }) => {
|
|
|
2077
2059
|
return (jsxRuntime.jsx("div", { className: classNames(usePrefixedClassNames('navbar-start'), bulmaHelperClasses, className), ...rest, children: children }));
|
|
2078
2060
|
};
|
|
2079
2061
|
/**
|
|
2080
|
-
*
|
|
2062
|
+
* Right-aligned menu area
|
|
2081
2063
|
*
|
|
2082
2064
|
* @function
|
|
2083
2065
|
* @param {NavbarStartEndProps} props - Props for the NavbarEnd component.
|
|
@@ -2090,10 +2072,7 @@ const NavbarEnd = ({ className, children, ...props }) => {
|
|
|
2090
2072
|
return (jsxRuntime.jsx("div", { className: classNames(usePrefixedClassNames('navbar-end'), bulmaHelperClasses, className), ...rest, children: children }));
|
|
2091
2073
|
};
|
|
2092
2074
|
/**
|
|
2093
|
-
*
|
|
2094
|
-
*
|
|
2095
|
-
* Renders with the `navbar-link` class, which adds a dropdown arrow indicator
|
|
2096
|
-
* automatically. Use `arrowless` to remove the arrow.
|
|
2075
|
+
* Dropdown trigger with arrow indicator (use as first child of `Navbar.Dropdown`)
|
|
2097
2076
|
*
|
|
2098
2077
|
* @function
|
|
2099
2078
|
* @param {NavbarLinkProps} props - Props for the NavbarLink component.
|
|
@@ -2110,7 +2089,7 @@ const NavbarLink = ({ className, as: Component = 'a', arrowless, textColor, bgCo
|
|
|
2110
2089
|
}), bulmaHelperClasses, className), ...rest, children: children }));
|
|
2111
2090
|
};
|
|
2112
2091
|
/**
|
|
2113
|
-
*
|
|
2092
|
+
* Dropdown parent (with options for hover, up, right, active)
|
|
2114
2093
|
*
|
|
2115
2094
|
* @function
|
|
2116
2095
|
* @param {NavbarDropdownProps} props - Props for the NavbarDropdown component.
|
|
@@ -2123,7 +2102,7 @@ const NavbarDropdown = ({ className, right, up, hoverable, active, children, ...
|
|
|
2123
2102
|
'is-active': active,
|
|
2124
2103
|
}), className), ...props, children: children }));
|
|
2125
2104
|
/**
|
|
2126
|
-
*
|
|
2105
|
+
* Dropdown menu container
|
|
2127
2106
|
*
|
|
2128
2107
|
* @function
|
|
2129
2108
|
* @param {NavbarDropdownMenuProps} props - Props for the NavbarDropdownMenu component.
|
|
@@ -2134,7 +2113,7 @@ const NavbarDropdownMenu = ({ className, right, up, children, ...props }) => (js
|
|
|
2134
2113
|
'is-up': up,
|
|
2135
2114
|
}), className), ...props, children: children }));
|
|
2136
2115
|
/**
|
|
2137
|
-
*
|
|
2116
|
+
* Divider in dropdown menus.
|
|
2138
2117
|
*
|
|
2139
2118
|
* @function
|
|
2140
2119
|
* @param {React.HTMLAttributes<HTMLHRElement>} props - Standard hr props.
|
|
@@ -2155,8 +2134,68 @@ const Navbar = withSubComponents(NavbarComponent, {
|
|
|
2155
2134
|
Divider: NavbarDivider,
|
|
2156
2135
|
}, 'Navbar');
|
|
2157
2136
|
|
|
2137
|
+
// INTERNAL — deliberately not exported from src/index.ts.
|
|
2138
|
+
/**
|
|
2139
|
+
* Color values that emit an `is-<color>` modifier no shipped Bulma 1.0.4 rule
|
|
2140
|
+
* matches on `.progress`/`.notification`/`.hero`. The `has-text-*` and
|
|
2141
|
+
* `has-background-*` helpers DO cover these values — only the
|
|
2142
|
+
* component-modifier form is dead.
|
|
2143
|
+
*/
|
|
2144
|
+
const UNSTYLED_MODIFIER_COLORS = [
|
|
2145
|
+
'black-bis',
|
|
2146
|
+
'black-ter',
|
|
2147
|
+
'grey-darker',
|
|
2148
|
+
'grey-dark',
|
|
2149
|
+
'grey',
|
|
2150
|
+
'grey-light',
|
|
2151
|
+
'grey-lighter',
|
|
2152
|
+
];
|
|
2153
|
+
const CSS_BACKED = 'primary, link, info, success, warning, danger, black, white, light, dark';
|
|
2154
|
+
const warnedKeys = new Set();
|
|
2155
|
+
// Fail closed: with no bundler and no Node (raw CDN ESM), reading `process`
|
|
2156
|
+
// throws and warnings stay off, so production can never warn by accident.
|
|
2157
|
+
const isDev = () => {
|
|
2158
|
+
try {
|
|
2159
|
+
return process.env.NODE_ENV !== 'production';
|
|
2160
|
+
}
|
|
2161
|
+
catch {
|
|
2162
|
+
return false;
|
|
2163
|
+
}
|
|
2164
|
+
};
|
|
2165
|
+
const warnOnce = (key, message) => {
|
|
2166
|
+
if (!isDev() || warnedKeys.has(key))
|
|
2167
|
+
return;
|
|
2168
|
+
warnedKeys.add(key);
|
|
2169
|
+
console.warn(message);
|
|
2170
|
+
};
|
|
2171
|
+
/**
|
|
2172
|
+
* Dev warning for a `color` value whose `is-<color>` modifier has no shipped
|
|
2173
|
+
* CSS. `extraUnstyled` covers per-component dead values beyond the shared
|
|
2174
|
+
* list (e.g. Hero's `inherit`/`current`).
|
|
2175
|
+
*/
|
|
2176
|
+
const warnUnstyledColor = (component, value, extraUnstyled = []) => {
|
|
2177
|
+
if (!value)
|
|
2178
|
+
return;
|
|
2179
|
+
if (!UNSTYLED_MODIFIER_COLORS.includes(value) &&
|
|
2180
|
+
!extraUnstyled.includes(value)) {
|
|
2181
|
+
return;
|
|
2182
|
+
}
|
|
2183
|
+
warnOnce(`${component}:${value}`, `[bestax-bulma] <${component} color="${value}">: Bulma ships no ` +
|
|
2184
|
+
`"is-${value}" CSS for ${component}, so it renders unstyled. This ` +
|
|
2185
|
+
`value is deprecated and will be removed from the ${component} color ` +
|
|
2186
|
+
`union in the next major version. CSS-backed values: ${CSS_BACKED}.`);
|
|
2187
|
+
};
|
|
2188
|
+
/** Dev warning for a `color` prop that has no shipped CSS for any value. */
|
|
2189
|
+
const warnDeprecatedColorProp = (component, value, hint) => {
|
|
2190
|
+
if (value === undefined)
|
|
2191
|
+
return;
|
|
2192
|
+
warnOnce(`${component}:color-prop`, `[bestax-bulma] The ${component} "color" prop is deprecated: Bulma ` +
|
|
2193
|
+
`ships no ${component.toLowerCase()} color CSS, so it has never had ` +
|
|
2194
|
+
`a visual effect. It will be removed in the next major version. ${hint}`);
|
|
2195
|
+
};
|
|
2196
|
+
|
|
2158
2197
|
/**
|
|
2159
|
-
*
|
|
2198
|
+
* "Previous" navigation button.
|
|
2160
2199
|
*
|
|
2161
2200
|
* @function
|
|
2162
2201
|
* @param {PaginationPreviousNextProps} props - Props for the PaginationPrevious component.
|
|
@@ -2171,7 +2210,7 @@ const PaginationPrevious = ({ className, disabled, children, ...props }) => (jsx
|
|
|
2171
2210
|
}
|
|
2172
2211
|
: props.onClick, children: children }));
|
|
2173
2212
|
/**
|
|
2174
|
-
*
|
|
2213
|
+
* "Next" navigation button.
|
|
2175
2214
|
*
|
|
2176
2215
|
* @function
|
|
2177
2216
|
* @param {PaginationPreviousNextProps} props - Props for the PaginationNext component.
|
|
@@ -2186,7 +2225,7 @@ const PaginationNext = ({ className, disabled, children, ...props }) => (jsxRunt
|
|
|
2186
2225
|
}
|
|
2187
2226
|
: props.onClick, children: children }));
|
|
2188
2227
|
/**
|
|
2189
|
-
*
|
|
2228
|
+
* The `Pagination` component provides a flexible, composable Bulma pagination navigation for your Bulma React UI.
|
|
2190
2229
|
*
|
|
2191
2230
|
* @function
|
|
2192
2231
|
* @param {PaginationProps} props - Props for the Pagination component.
|
|
@@ -2194,6 +2233,7 @@ const PaginationNext = ({ className, disabled, children, ...props }) => (jsxRunt
|
|
|
2194
2233
|
* @see {@link https://bulma.io/documentation/components/pagination/ | Bulma Pagination documentation}
|
|
2195
2234
|
*/
|
|
2196
2235
|
const PaginationComponent = ({ color, textColor, bgColor, size, align, rounded, className, children, ...props }) => {
|
|
2236
|
+
warnDeprecatedColorProp('Pagination', color, 'Use the textColor / bgColor helper props instead.');
|
|
2197
2237
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
2198
2238
|
color: textColor,
|
|
2199
2239
|
backgroundColor: bgColor,
|
|
@@ -2210,7 +2250,7 @@ const PaginationComponent = ({ color, textColor, bgColor, size, align, rounded,
|
|
|
2210
2250
|
return (jsxRuntime.jsx("nav", { className: paginationClasses, role: "navigation", "aria-label": "pagination", ...rest, children: children }));
|
|
2211
2251
|
};
|
|
2212
2252
|
/**
|
|
2213
|
-
*
|
|
2253
|
+
* Container for page links and ellipsis.
|
|
2214
2254
|
*
|
|
2215
2255
|
* @function
|
|
2216
2256
|
* @param {PaginationListProps} props - Props for the PaginationList component.
|
|
@@ -2225,7 +2265,7 @@ const PaginationList = ({ className, textColor, bgColor, children, ...props }) =
|
|
|
2225
2265
|
return (jsxRuntime.jsx("ul", { className: classNames(usePrefixedClassNames('pagination-list'), bulmaHelperClasses, className), ...rest, children: children }));
|
|
2226
2266
|
};
|
|
2227
2267
|
/**
|
|
2228
|
-
*
|
|
2268
|
+
* Page number or navigation link.
|
|
2229
2269
|
*
|
|
2230
2270
|
* @function
|
|
2231
2271
|
* @param {PaginationLinkProps} props - Props for the PaginationLink component.
|
|
@@ -2253,7 +2293,7 @@ const PaginationLink = ({ className, textColor, bgColor, active, disabled, onCli
|
|
|
2253
2293
|
}), "aria-current": active ? 'page' : undefined, "aria-disabled": disabled, tabIndex: disabled ? -1 : 0, onClick: handleClick, ...rest, children: children }) }));
|
|
2254
2294
|
};
|
|
2255
2295
|
/**
|
|
2256
|
-
*
|
|
2296
|
+
* Ellipsis separator.
|
|
2257
2297
|
*
|
|
2258
2298
|
* @function
|
|
2259
2299
|
* @param {React.LiHTMLAttributes<HTMLLIElement>} props - Standard li props.
|
|
@@ -2360,9 +2400,7 @@ function getIconClasses(library, name, variant, features) {
|
|
|
2360
2400
|
}
|
|
2361
2401
|
}
|
|
2362
2402
|
/**
|
|
2363
|
-
* Icon component
|
|
2364
|
-
*
|
|
2365
|
-
* Supports Bulma helper classes for styling, color, and size, and renders an <i></i> element for the icon itself.
|
|
2403
|
+
* The `Icon` component is a Bulma-styled wrapper for displaying icons from various libraries (Font Awesome, Material Design Icons, Ionicons, Google Material Icons, Material Symbols, etc.).
|
|
2366
2404
|
*
|
|
2367
2405
|
* @function
|
|
2368
2406
|
* @param {IconProps} props - Props for the Icon component.
|
|
@@ -2491,7 +2529,7 @@ containerClassName, ...restProps }) => {
|
|
|
2491
2529
|
};
|
|
2492
2530
|
|
|
2493
2531
|
/**
|
|
2494
|
-
*
|
|
2532
|
+
* The `Panel` component implements Bulma's versatile panel block for React.
|
|
2495
2533
|
*
|
|
2496
2534
|
* @function
|
|
2497
2535
|
* @param {PanelProps} props - Props for the Panel component.
|
|
@@ -2511,7 +2549,7 @@ const PanelComponent = ({ color, className, children, ...props }) => {
|
|
|
2511
2549
|
return (jsxRuntime.jsx("nav", { className: panelClasses, ...rest, children: children }));
|
|
2512
2550
|
};
|
|
2513
2551
|
/**
|
|
2514
|
-
*
|
|
2552
|
+
* Main heading (renders as `<p class="panel-heading">`)
|
|
2515
2553
|
*
|
|
2516
2554
|
* @function
|
|
2517
2555
|
* @param {PanelHeadingProps} props - Props for the PanelHeading component.
|
|
@@ -2519,7 +2557,7 @@ const PanelComponent = ({ color, className, children, ...props }) => {
|
|
|
2519
2557
|
*/
|
|
2520
2558
|
const PanelHeading = ({ className, children, ...props }) => (jsxRuntime.jsx("p", { className: classNames(usePrefixedClassNames('panel-heading'), className), ...props, children: children }));
|
|
2521
2559
|
/**
|
|
2522
|
-
*
|
|
2560
|
+
* Panel tabs (renders as `<p class="panel-tabs">`)
|
|
2523
2561
|
*
|
|
2524
2562
|
* @function
|
|
2525
2563
|
* @param {PanelTabsProps} props - Props for the PanelTabs component.
|
|
@@ -2527,7 +2565,7 @@ const PanelHeading = ({ className, children, ...props }) => (jsxRuntime.jsx("p",
|
|
|
2527
2565
|
*/
|
|
2528
2566
|
const PanelTabs = ({ className, children, ...props }) => (jsxRuntime.jsx("p", { className: classNames(usePrefixedClassNames('panel-tabs'), className), ...props, children: children }));
|
|
2529
2567
|
/**
|
|
2530
|
-
*
|
|
2568
|
+
* Individual panel block (renders as `<a class="panel-block">`)
|
|
2531
2569
|
*
|
|
2532
2570
|
* @function
|
|
2533
2571
|
* @param {PanelBlockProps} props - Props for the PanelBlock component.
|
|
@@ -2535,8 +2573,8 @@ const PanelTabs = ({ className, children, ...props }) => (jsxRuntime.jsx("p", {
|
|
|
2535
2573
|
*/
|
|
2536
2574
|
const PanelBlock = ({ className, active, children, ...props }) => (jsxRuntime.jsx("a", { className: classNames(usePrefixedClassNames('panel-block', { 'is-active': active }), className), ...props, children: children }));
|
|
2537
2575
|
/**
|
|
2538
|
-
*
|
|
2539
|
-
*
|
|
2576
|
+
* Icon wrapper with panel styling (renders as `<span class="panel-icon"><i/></span>`).
|
|
2577
|
+
* Accepts all Icon props (`name`, `variant`, `features`, etc.)
|
|
2540
2578
|
*
|
|
2541
2579
|
* @function
|
|
2542
2580
|
* @param {PanelIconProps} props - Props for the PanelIcon component.
|
|
@@ -2544,7 +2582,7 @@ const PanelBlock = ({ className, active, children, ...props }) => (jsxRuntime.js
|
|
|
2544
2582
|
*/
|
|
2545
2583
|
const PanelIcon = ({ className, ...props }) => (jsxRuntime.jsx(Icon, { containerClassName: classNames(usePrefixedClassNames('panel-icon'), className), ...props }));
|
|
2546
2584
|
/**
|
|
2547
|
-
*
|
|
2585
|
+
* Search input with icon (renders as `<div class="panel-block">`)
|
|
2548
2586
|
*
|
|
2549
2587
|
* @function
|
|
2550
2588
|
* @param {PanelInputBlockProps} props - Props for the PanelInputBlock component.
|
|
@@ -2555,7 +2593,7 @@ const PanelInputBlock = ({ value, onChange, placeholder, iconClassName = 'fas fa
|
|
|
2555
2593
|
return (jsxRuntime.jsx("div", { className: usePrefixedClassNames('panel-block'), ...props, children: jsxRuntime.jsxs("p", { className: usePrefixedClassNames('control', 'has-icons-left'), children: [jsxRuntime.jsx("input", { className: inputClass, type: "text", placeholder: placeholder, value: value, onChange: onChange }), jsxRuntime.jsx("span", { className: usePrefixedClassNames('icon', 'is-left'), children: jsxRuntime.jsx("i", { className: iconClassName, "aria-hidden": "true" }) })] }) }));
|
|
2556
2594
|
};
|
|
2557
2595
|
/**
|
|
2558
|
-
*
|
|
2596
|
+
* Checkbox block (renders as `<label class="panel-block">`)
|
|
2559
2597
|
*
|
|
2560
2598
|
* @function
|
|
2561
2599
|
* @param {PanelCheckboxBlockProps} props - Props for the PanelCheckboxBlock component.
|
|
@@ -2563,7 +2601,7 @@ const PanelInputBlock = ({ value, onChange, placeholder, iconClassName = 'fas fa
|
|
|
2563
2601
|
*/
|
|
2564
2602
|
const PanelCheckboxBlock = ({ checked, onChange, children, ...props }) => (jsxRuntime.jsxs("label", { className: usePrefixedClassNames('panel-block'), ...props, children: [jsxRuntime.jsx("input", { type: "checkbox", checked: checked, onChange: onChange }), children] }));
|
|
2565
2603
|
/**
|
|
2566
|
-
*
|
|
2604
|
+
* Call-to-action button (renders as `<div class="panel-block"><button /></div>`)
|
|
2567
2605
|
*
|
|
2568
2606
|
* @function
|
|
2569
2607
|
* @param {PanelButtonBlockProps} props - Props for the PanelButtonBlock component.
|
|
@@ -2585,7 +2623,7 @@ function useTabsContext() {
|
|
|
2585
2623
|
return React.useContext(TabsContext);
|
|
2586
2624
|
}
|
|
2587
2625
|
/**
|
|
2588
|
-
*
|
|
2626
|
+
* The `Tabs` component provides flexible and fully-featured Bulma tab navigation for your Bulma React UI.
|
|
2589
2627
|
*
|
|
2590
2628
|
* @function
|
|
2591
2629
|
* @param {TabsProps} props - Props for the Tabs component.
|
|
@@ -2606,6 +2644,7 @@ function useTabsContext() {
|
|
|
2606
2644
|
* </Tabs>
|
|
2607
2645
|
*/
|
|
2608
2646
|
const TabsComponent = ({ align, size, fullwidth, boxed, toggle, rounded, color, value, onChange, defaultValue = 0, vertical, side, expanded, className, children, ...props }) => {
|
|
2647
|
+
warnDeprecatedColorProp('Tabs', color, 'Remove the prop; no replacement exists.');
|
|
2609
2648
|
const { bulmaHelperClasses, rest } = useBulmaClasses({ ...props });
|
|
2610
2649
|
// Controlled vs uncontrolled state
|
|
2611
2650
|
const isControlled = value !== undefined;
|
|
@@ -2673,7 +2712,7 @@ const TabsComponent = ({ align, size, fullwidth, boxed, toggle, rounded, color,
|
|
|
2673
2712
|
return (jsxRuntime.jsx(TabsContext.Provider, { value: contextValue, children: jsxRuntime.jsx("div", { className: combinedClasses, ...rest, children: children }) }));
|
|
2674
2713
|
};
|
|
2675
2714
|
/**
|
|
2676
|
-
*
|
|
2715
|
+
* The `<ul>` container for tab items.
|
|
2677
2716
|
*
|
|
2678
2717
|
* @function
|
|
2679
2718
|
* @param {TabListProps} props - Props for the TabList component.
|
|
@@ -2701,7 +2740,7 @@ const Tab = ({ index, disabled, icon, iconLibrary, iconVariant, iconSize = 'smal
|
|
|
2701
2740
|
return (jsxRuntime.jsx("li", { className: classNames(activeClass, className), role: "tab", "aria-selected": isActive, tabIndex: disabled ? -1 : 0, ...props, children: jsxRuntime.jsxs("a", { onClick: handleClick, "aria-disabled": disabled || undefined, children: [icon && (jsxRuntime.jsx(Icon, { name: icon, library: iconLibrary, variant: iconVariant, size: iconSize, features: iconFeatures })), children && jsxRuntime.jsx("span", { children: children })] }) }));
|
|
2702
2741
|
};
|
|
2703
2742
|
/**
|
|
2704
|
-
*
|
|
2743
|
+
* Each tab; accepts `active`, `onClick`, etc.
|
|
2705
2744
|
*
|
|
2706
2745
|
* @function
|
|
2707
2746
|
* @param {TabItemProps} props - Props for the TabItem component.
|
|
@@ -2710,7 +2749,7 @@ const Tab = ({ index, disabled, icon, iconLibrary, iconVariant, iconSize = 'smal
|
|
|
2710
2749
|
*/
|
|
2711
2750
|
const TabItem = ({ active, className, children, onClick, ...props }) => (jsxRuntime.jsx("li", { className: classNames({ [usePrefixedClassNames('is-active')]: active }, className), onClick: onClick, ...props, children: children }));
|
|
2712
2751
|
/**
|
|
2713
|
-
*
|
|
2752
|
+
* Container for tab content panels. No custom props beyond `children` and standard `<div>` HTML attributes. Applies the `.tabs-content` class.
|
|
2714
2753
|
*
|
|
2715
2754
|
* @function
|
|
2716
2755
|
* @param {TabsContentProps} props - Props for the TabsContent component.
|
|
@@ -2749,11 +2788,7 @@ const Tabs = withSubComponents(TabsComponent, {
|
|
|
2749
2788
|
}, 'Tabs');
|
|
2750
2789
|
|
|
2751
2790
|
/**
|
|
2752
|
-
* Loading component
|
|
2753
|
-
*
|
|
2754
|
-
* Can be used as a full-page overlay or a container overlay to indicate
|
|
2755
|
-
* loading states. Supports different sizes, color variants, and optional
|
|
2756
|
-
* cancel functionality.
|
|
2791
|
+
* The `Loading` component provides a loading overlay with a spinner animation.
|
|
2757
2792
|
*
|
|
2758
2793
|
* @function
|
|
2759
2794
|
* @param {LoadingProps} props - Props for the Loading component.
|
|
@@ -2837,10 +2872,7 @@ const Loading = ({ active = false, isFullPage = false, size, color, canCancel =
|
|
|
2837
2872
|
};
|
|
2838
2873
|
|
|
2839
2874
|
/**
|
|
2840
|
-
* Collapse component
|
|
2841
|
-
*
|
|
2842
|
-
* Can be used in controlled or uncontrolled mode. Supports animation
|
|
2843
|
-
* and accessibility features for screen readers.
|
|
2875
|
+
* The `Collapse` component provides an expandable/collapsible content panel.
|
|
2844
2876
|
*
|
|
2845
2877
|
* @function
|
|
2846
2878
|
* @param {CollapseProps} props - Props for the Collapse component.
|
|
@@ -2982,10 +3014,7 @@ const Collapse = ({ open: controlledOpen, defaultOpen = false, onOpen, onClose,
|
|
|
2982
3014
|
};
|
|
2983
3015
|
|
|
2984
3016
|
/**
|
|
2985
|
-
* Tooltip component
|
|
2986
|
-
*
|
|
2987
|
-
* Shows a small popup with text when the user hovers over or focuses
|
|
2988
|
-
* on the wrapped element. Supports multiple positions and color variants.
|
|
3017
|
+
* The `Tooltip` component displays helpful information when users hover over or focus on an element.
|
|
2989
3018
|
*
|
|
2990
3019
|
* @function
|
|
2991
3020
|
* @param {TooltipProps} props - Props for the Tooltip component.
|
|
@@ -3214,10 +3243,7 @@ const Step = ({ isActive = false, isCompleted = false, label, icon, clickable =
|
|
|
3214
3243
|
return (jsxRuntime.jsx("li", { className: stepClasses, onClick: handleClick, onKeyDown: handleKeyDown, tabIndex: clickable ? 0 : undefined, role: clickable ? 'button' : undefined, "aria-current": isActive ? 'step' : undefined, ...rest, children: jsxRuntime.jsxs("div", { className: stepsLinkClass, children: [jsxRuntime.jsx("span", { className: stepsMarkerClass, children: markerContent }), (label || children) && (jsxRuntime.jsx("div", { className: stepsContentClass, children: jsxRuntime.jsx("p", { className: stepsTitleClass, children: label || children }) }))] }) }));
|
|
3215
3244
|
};
|
|
3216
3245
|
/**
|
|
3217
|
-
* Steps component
|
|
3218
|
-
*
|
|
3219
|
-
* Use for wizard flows, checkout processes, or any multi-step workflow.
|
|
3220
|
-
* Supports horizontal and vertical layouts with customizable markers.
|
|
3246
|
+
* The `Steps` component provides a multi-step progress indicator for wizard flows, checkout processes, or any multi-step workflow.
|
|
3221
3247
|
*
|
|
3222
3248
|
* @function
|
|
3223
3249
|
* @param {StepsProps} props - Props for the Steps component.
|
|
@@ -3301,10 +3327,7 @@ const StepsComponent = ({ value = 0, items, size, color, hasMarker = true, anima
|
|
|
3301
3327
|
const Steps = withSubComponents(StepsComponent, { Step }, 'Steps');
|
|
3302
3328
|
|
|
3303
3329
|
/**
|
|
3304
|
-
* Sidebar component
|
|
3305
|
-
*
|
|
3306
|
-
* Provides a side panel that slides in from the left or right,
|
|
3307
|
-
* with optional overlay, keyboard support, and customizable width.
|
|
3330
|
+
* The `Sidebar` component provides a slide-out navigation panel that appears from the left or right side of the screen.
|
|
3308
3331
|
*
|
|
3309
3332
|
* @function
|
|
3310
3333
|
* @param {SidebarProps} props - Props for the Sidebar component.
|
|
@@ -3421,7 +3444,7 @@ const SidebarComponent = React.forwardRef(({ isOpen, onClose, position = 'left',
|
|
|
3421
3444
|
return null;
|
|
3422
3445
|
});
|
|
3423
3446
|
/**
|
|
3424
|
-
*
|
|
3447
|
+
* Container for the sidebar header.
|
|
3425
3448
|
*
|
|
3426
3449
|
* @function
|
|
3427
3450
|
* @param {SidebarHeaderProps} props - Props for the SidebarHeader component.
|
|
@@ -3432,7 +3455,7 @@ const SidebarHeader = ({ className, children, ...props }) => {
|
|
|
3432
3455
|
return (jsxRuntime.jsx("div", { className: classNames(headerClass, className), ...props, children: children }));
|
|
3433
3456
|
};
|
|
3434
3457
|
/**
|
|
3435
|
-
*
|
|
3458
|
+
* Title text inside the header.
|
|
3436
3459
|
*
|
|
3437
3460
|
* @function
|
|
3438
3461
|
* @param {SidebarTitleProps} props - Props for the SidebarTitle component.
|
|
@@ -3443,7 +3466,7 @@ const SidebarTitle = ({ className, children, ...props }) => {
|
|
|
3443
3466
|
return (jsxRuntime.jsx("p", { className: classNames(titleClass, className), ...props, children: children }));
|
|
3444
3467
|
};
|
|
3445
3468
|
/**
|
|
3446
|
-
*
|
|
3469
|
+
* Close button for the sidebar.
|
|
3447
3470
|
*
|
|
3448
3471
|
* @function
|
|
3449
3472
|
* @param {SidebarCloseProps} props - Props for the SidebarClose component.
|
|
@@ -3454,7 +3477,7 @@ const SidebarClose = ({ className, children, ...props }) => {
|
|
|
3454
3477
|
return (jsxRuntime.jsx("button", { type: "button", className: classNames(closeClass, className), "aria-label": "Close", ...props, children: children }));
|
|
3455
3478
|
};
|
|
3456
3479
|
/**
|
|
3457
|
-
*
|
|
3480
|
+
* Main content area of the sidebar.
|
|
3458
3481
|
*
|
|
3459
3482
|
* @function
|
|
3460
3483
|
* @param {SidebarBodyProps} props - Props for the SidebarBody component.
|
|
@@ -3465,7 +3488,7 @@ const SidebarBody = ({ className, children, ...props }) => {
|
|
|
3465
3488
|
return (jsxRuntime.jsx("div", { className: classNames(bodyClass, className), ...props, children: children }));
|
|
3466
3489
|
};
|
|
3467
3490
|
/**
|
|
3468
|
-
*
|
|
3491
|
+
* Footer area of the sidebar.
|
|
3469
3492
|
*
|
|
3470
3493
|
* @function
|
|
3471
3494
|
* @param {SidebarFooterProps} props - Props for the SidebarFooter component.
|
|
@@ -3485,10 +3508,7 @@ const Sidebar = withSubComponents(SidebarComponent, {
|
|
|
3485
3508
|
}, 'Sidebar');
|
|
3486
3509
|
|
|
3487
3510
|
/**
|
|
3488
|
-
* Toast component
|
|
3489
|
-
*
|
|
3490
|
-
* Appears at a configurable screen position with auto-close, pause-on-hover,
|
|
3491
|
-
* keyboard dismiss, action/cancel buttons, and an optional explicit close button.
|
|
3511
|
+
* The `Toast` component provides brief notification messages with optional action and cancel buttons.
|
|
3492
3512
|
*
|
|
3493
3513
|
* @function
|
|
3494
3514
|
* @param {ToastProps} props - Props for the Toast component.
|
|
@@ -3758,10 +3778,7 @@ const ToastContainer = ({ position = 'top-right', }) => {
|
|
|
3758
3778
|
let _scrollLockCount = 0;
|
|
3759
3779
|
let _originalOverflow = '';
|
|
3760
3780
|
/**
|
|
3761
|
-
* Dialog component
|
|
3762
|
-
*
|
|
3763
|
-
* Provides a modal dialog with confirm/cancel actions, customizable
|
|
3764
|
-
* appearance, and keyboard support.
|
|
3781
|
+
* The `Dialog` component provides confirmation and alert dialogs with customizable actions.
|
|
3765
3782
|
*
|
|
3766
3783
|
* @function
|
|
3767
3784
|
* @param {DialogProps} props - Props for the Dialog component.
|
|
@@ -3973,17 +3990,15 @@ const DialogContainer = () => {
|
|
|
3973
3990
|
return (jsxRuntime.jsx(Dialog, { isOpen: true, title: options.title, message: options.message, type: options.type, confirmText: options.confirmText, cancelText: options.cancelText, icon: options.icon, showCancel: type === 'confirm', focusCancel: options.focusCancel, onConfirm: () => dialog.close(type === 'confirm' ? true : undefined), onCancel: () => dialog.close(type === 'confirm' ? false : undefined) }));
|
|
3974
3991
|
};
|
|
3975
3992
|
|
|
3993
|
+
const validButtonColors = [...validColors, 'text', 'ghost'];
|
|
3976
3994
|
/**
|
|
3977
|
-
* Button component
|
|
3978
|
-
*
|
|
3979
|
-
* Supports Bulma helper classes for colors, sizes, and various button states and modifiers.
|
|
3995
|
+
* The `Button` component provides a flexible and highly customizable button for your Bulma React UI.
|
|
3980
3996
|
*
|
|
3981
3997
|
* @function
|
|
3982
3998
|
* @param {ButtonProps} props - Props for the Button component.
|
|
3983
3999
|
* @returns {JSX.Element} The rendered button or anchor element.
|
|
3984
4000
|
* @see {@link https://bulma.io/documentation/elements/button/ | Bulma Button documentation}
|
|
3985
4001
|
*/
|
|
3986
|
-
const validButtonColors = [...validColors, 'text', 'ghost'];
|
|
3987
4002
|
const Button = ({ color, size, isLight, isRounded, isLoading, isStatic, isFullWidth, isOutlined, isInverted, isFocused, isActive, isHovered, isDisabled, className, children, textColor, bgColor, as: Component = 'button', href, onClick, target, rel, ...props }) => {
|
|
3988
4003
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
3989
4004
|
color: textColor,
|
|
@@ -4049,9 +4064,7 @@ const DefaultPrevIcon = () => (jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org
|
|
|
4049
4064
|
*/
|
|
4050
4065
|
const DefaultNextIcon = () => (jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: jsxRuntime.jsx("polyline", { points: "9 18 15 12 9 6" }) }));
|
|
4051
4066
|
/**
|
|
4052
|
-
* Carousel component
|
|
4053
|
-
*
|
|
4054
|
-
* Supports auto-play, drag navigation, indicators, and customizable arrows.
|
|
4067
|
+
* The `Carousel` component provides an image/content slider with navigation arrows and indicators.
|
|
4055
4068
|
*
|
|
4056
4069
|
* @function
|
|
4057
4070
|
* @param {CarouselProps} props - Props for the Carousel component.
|
|
@@ -4363,13 +4376,7 @@ function usePrefersReducedMotion() {
|
|
|
4363
4376
|
return prefersReducedMotion;
|
|
4364
4377
|
}
|
|
4365
4378
|
/**
|
|
4366
|
-
* Reveal component
|
|
4367
|
-
* the viewport, backed by `IntersectionObserver`.
|
|
4368
|
-
*
|
|
4369
|
-
* Renders in its final, visible state during SSR and on the first client
|
|
4370
|
-
* render, so content is never hidden if JavaScript never runs (crawlers,
|
|
4371
|
-
* disabled JS). Automatically skips the animation (renders the final state
|
|
4372
|
-
* immediately) when the user prefers reduced motion.
|
|
4379
|
+
* The `Reveal` component animates its content into view as it scrolls into the viewport, backed by `IntersectionObserver`.
|
|
4373
4380
|
*
|
|
4374
4381
|
* @function
|
|
4375
4382
|
* @param {RevealProps} props - Props for the Reveal component.
|
|
@@ -4486,22 +4493,19 @@ const Reveal = ({ animation = 'fade-up', delay = 0, duration = 600, threshold =
|
|
|
4486
4493
|
};
|
|
4487
4494
|
|
|
4488
4495
|
/**
|
|
4489
|
-
* Block component
|
|
4490
|
-
*
|
|
4491
|
-
* A block is a simple utility element that adds spacing (margin-bottom) between elements.
|
|
4492
|
-
* Supports Bulma helper classes for additional styling like text color, background color, and layout.
|
|
4496
|
+
* The `Block` component renders a simple container with Bulma's `.block` class, adding vertical margin between sections of content.
|
|
4493
4497
|
*
|
|
4494
4498
|
* @function
|
|
4495
4499
|
* @param {BlockProps} props - Props for the Block component.
|
|
4496
4500
|
* @returns {JSX.Element} The rendered block element.
|
|
4497
4501
|
* @see {@link https://bulma.io/documentation/elements/block/ | Bulma Block documentation}
|
|
4498
4502
|
*/
|
|
4499
|
-
const Block = ({ className, textColor, bgColor, children, ...props }) => {
|
|
4503
|
+
const Block = ({ className, textColor, color, bgColor, children, ...props }) => {
|
|
4500
4504
|
/**
|
|
4501
4505
|
* Generates Bulma helper classes and separates out remaining props.
|
|
4502
4506
|
*/
|
|
4503
4507
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
4504
|
-
color: textColor,
|
|
4508
|
+
color: textColor ?? color,
|
|
4505
4509
|
backgroundColor: bgColor,
|
|
4506
4510
|
...props,
|
|
4507
4511
|
});
|
|
@@ -4511,21 +4515,19 @@ const Block = ({ className, textColor, bgColor, children, ...props }) => {
|
|
|
4511
4515
|
};
|
|
4512
4516
|
|
|
4513
4517
|
/**
|
|
4514
|
-
* Box component
|
|
4515
|
-
*
|
|
4516
|
-
* Supports Bulma helper classes for styling and layout, with optional shadow control.
|
|
4518
|
+
* The `Box` component renders a bordered, padded container with an optional shadow using Bulma's `.box` class.
|
|
4517
4519
|
*
|
|
4518
4520
|
* @function
|
|
4519
4521
|
* @param {BoxProps} props - Props for the Box component.
|
|
4520
4522
|
* @returns {JSX.Element} The rendered box element.
|
|
4521
4523
|
* @see {@link https://bulma.io/documentation/elements/box/ | Bulma Box documentation}
|
|
4522
4524
|
*/
|
|
4523
|
-
const Box = ({ className, textColor, bgColor, hasShadow = true, children, ...props }) => {
|
|
4525
|
+
const Box = ({ className, textColor, color, bgColor, hasShadow = true, children, ...props }) => {
|
|
4524
4526
|
/**
|
|
4525
4527
|
* Generates Bulma helper classes and separates out remaining props.
|
|
4526
4528
|
*/
|
|
4527
4529
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
4528
|
-
color: textColor,
|
|
4530
|
+
color: textColor ?? color,
|
|
4529
4531
|
backgroundColor: bgColor,
|
|
4530
4532
|
...props,
|
|
4531
4533
|
});
|
|
@@ -4537,12 +4539,7 @@ const Box = ({ className, textColor, bgColor, hasShadow = true, children, ...pro
|
|
|
4537
4539
|
};
|
|
4538
4540
|
|
|
4539
4541
|
/**
|
|
4540
|
-
*
|
|
4541
|
-
* of `<div onClick>` anti-patterns.
|
|
4542
|
-
*
|
|
4543
|
-
* Wraps the Button component with `is-text` or `is-ghost` styling, plus CSS overrides
|
|
4544
|
-
* to remove the underline (text variant) or link color (ghost variant).
|
|
4545
|
-
* The 'underline' variant uses `is-text` styling with an underline that appears on hover/focus.
|
|
4542
|
+
* The `LinkButton` component renders a `<button>` that visually looks like text or a link.
|
|
4546
4543
|
*
|
|
4547
4544
|
* @function
|
|
4548
4545
|
* @param {LinkButtonProps} props - Props for the LinkButton component.
|
|
@@ -4563,16 +4560,14 @@ const LinkButton = ({ variant = 'text', color, className, ...props }) => {
|
|
|
4563
4560
|
};
|
|
4564
4561
|
|
|
4565
4562
|
/**
|
|
4566
|
-
* Buttons component
|
|
4567
|
-
*
|
|
4568
|
-
* Supports Bulma helper classes for styling, color, and layout, including centering, right alignment, and grouping as addons.
|
|
4563
|
+
* The `Buttons` component lets you group multiple `Button` elements together with Bulma's spacing, alignment, and add-on features.
|
|
4569
4564
|
*
|
|
4570
4565
|
* @function
|
|
4571
4566
|
* @param {ButtonsProps} props - Props for the Buttons component.
|
|
4572
4567
|
* @returns {JSX.Element} The rendered group of buttons.
|
|
4573
4568
|
* @see {@link https://bulma.io/documentation/elements/button/#group | Bulma Button Group documentation}
|
|
4574
4569
|
*/
|
|
4575
|
-
const ButtonsComponent = ({ className, textColor, bgColor, isCentered, isRight, hasAddons, children, ...props }) => {
|
|
4570
|
+
const ButtonsComponent = ({ className, textColor, color, bgColor, isCentered, isRight, hasAddons, children, ...props }) => {
|
|
4576
4571
|
const buttonsClasses = usePrefixedClassNames('buttons', {
|
|
4577
4572
|
'is-centered': isCentered,
|
|
4578
4573
|
'is-right': isRight,
|
|
@@ -4582,7 +4577,7 @@ const ButtonsComponent = ({ className, textColor, bgColor, isCentered, isRight,
|
|
|
4582
4577
|
* Generates Bulma helper classes and separates out remaining props.
|
|
4583
4578
|
*/
|
|
4584
4579
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
4585
|
-
color: textColor,
|
|
4580
|
+
color: textColor ?? color,
|
|
4586
4581
|
backgroundColor: bgColor,
|
|
4587
4582
|
...props,
|
|
4588
4583
|
});
|
|
@@ -4595,11 +4590,7 @@ const Buttons = withSubComponents(ButtonsComponent, {
|
|
|
4595
4590
|
}, 'Buttons');
|
|
4596
4591
|
|
|
4597
4592
|
/**
|
|
4598
|
-
* Code component
|
|
4599
|
-
*
|
|
4600
|
-
* A Code wraps the HTML `<code>` element with Bulma helper class integration.
|
|
4601
|
-
* Use it for short inline code snippets, variable names, or technical terms.
|
|
4602
|
-
* For multi-line code blocks, use the Pre component.
|
|
4593
|
+
* The `Code` component renders a styled `<code>` element with Bulma helper class integration.
|
|
4603
4594
|
*
|
|
4604
4595
|
* @function
|
|
4605
4596
|
* @param {CodeProps} props - Props for the Code component.
|
|
@@ -4619,22 +4610,19 @@ const Code = ({ className, textColor, bgColor, children, ...props }) => {
|
|
|
4619
4610
|
// Valid size modifiers for the content class
|
|
4620
4611
|
const validSizes = ['small', 'medium', 'large'];
|
|
4621
4612
|
/**
|
|
4622
|
-
* Content component
|
|
4623
|
-
*
|
|
4624
|
-
* Applies typographic styles to HTML content (e.g., paragraphs, headings, lists) with Bulma's content class.
|
|
4625
|
-
* Supports size modifiers and Bulma helper classes for additional styling.
|
|
4613
|
+
* The `Content` component applies Bulma’s typographic styles to its children, enhancing the appearance of HTML elements like paragraphs, headings, lists, and tables.
|
|
4626
4614
|
*
|
|
4627
4615
|
* @function
|
|
4628
4616
|
* @param {ContentProps} props - Props for the Content component.
|
|
4629
4617
|
* @returns {JSX.Element} The rendered content block.
|
|
4630
4618
|
* @see {@link https://bulma.io/documentation/elements/content/ | Bulma Content documentation}
|
|
4631
4619
|
*/
|
|
4632
|
-
const Content = ({ className, textColor, bgColor, size, children, ...props }) => {
|
|
4620
|
+
const Content = ({ className, textColor, color, bgColor, size, children, ...props }) => {
|
|
4633
4621
|
/**
|
|
4634
4622
|
* Generates Bulma helper classes and separates out remaining props.
|
|
4635
4623
|
*/
|
|
4636
4624
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
4637
|
-
color: textColor,
|
|
4625
|
+
color: textColor ?? color,
|
|
4638
4626
|
backgroundColor: bgColor,
|
|
4639
4627
|
...props,
|
|
4640
4628
|
});
|
|
@@ -4646,21 +4634,19 @@ const Content = ({ className, textColor, bgColor, size, children, ...props }) =>
|
|
|
4646
4634
|
};
|
|
4647
4635
|
|
|
4648
4636
|
/**
|
|
4649
|
-
* Delete component
|
|
4650
|
-
*
|
|
4651
|
-
* Supports Bulma helper classes for styling, color, and size, and includes accessibility and disabled state.
|
|
4637
|
+
* The `Delete` component provides a Bulma-styled close/delete button for dismissing modals, notifications, tags, messages, and more.
|
|
4652
4638
|
*
|
|
4653
4639
|
* @function
|
|
4654
4640
|
* @param {DeleteProps} props - Props for the Delete component.
|
|
4655
4641
|
* @returns {JSX.Element} The rendered delete button.
|
|
4656
4642
|
* @see {@link https://bulma.io/documentation/elements/delete/ | Bulma Delete documentation}
|
|
4657
4643
|
*/
|
|
4658
|
-
const Delete = ({ className, textColor, bgColor, onClick, size, ariaLabel = 'Close', disabled = false, ...props }) => {
|
|
4644
|
+
const Delete = ({ className, textColor, color, bgColor, onClick, size, ariaLabel = 'Close', disabled = false, ...props }) => {
|
|
4659
4645
|
/**
|
|
4660
4646
|
* Generates Bulma helper classes and separates out remaining props.
|
|
4661
4647
|
*/
|
|
4662
4648
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
4663
|
-
color: textColor,
|
|
4649
|
+
color: textColor ?? color,
|
|
4664
4650
|
backgroundColor: bgColor,
|
|
4665
4651
|
...props,
|
|
4666
4652
|
});
|
|
@@ -4673,10 +4659,7 @@ const Delete = ({ className, textColor, bgColor, onClick, size, ariaLabel = 'Clo
|
|
|
4673
4659
|
};
|
|
4674
4660
|
|
|
4675
4661
|
/**
|
|
4676
|
-
* Divider component
|
|
4677
|
-
*
|
|
4678
|
-
* A Divider wraps the HTML `<hr>` element with Bulma helper class integration.
|
|
4679
|
-
* Use it to visually separate content sections with a horizontal line.
|
|
4662
|
+
* The `Divider` component renders a styled horizontal rule (`<hr>`) element with Bulma helper class integration.
|
|
4680
4663
|
*
|
|
4681
4664
|
* @function
|
|
4682
4665
|
* @param {DividerProps} props - Props for the Divider component.
|
|
@@ -4696,11 +4679,7 @@ const Divider = ({ className, bgColor, ...props }) => {
|
|
|
4696
4679
|
};
|
|
4697
4680
|
|
|
4698
4681
|
/**
|
|
4699
|
-
* Emphasis component
|
|
4700
|
-
*
|
|
4701
|
-
* An Emphasis wraps the HTML `<em>` element with Bulma helper class integration.
|
|
4702
|
-
* Use it for text that has stress emphasis, affecting the meaning of the sentence.
|
|
4703
|
-
* For visual-only italic styling without semantic meaning, use CSS font-style: italic.
|
|
4682
|
+
* The `Emphasis` component renders a styled `<em>` element with Bulma helper class integration.
|
|
4704
4683
|
*
|
|
4705
4684
|
* @function
|
|
4706
4685
|
* @param {EmphasisProps} props - Props for the Emphasis component.
|
|
@@ -4738,11 +4717,7 @@ const FigureCaption = ({ className, textColor, bgColor, children, ...props }) =>
|
|
|
4738
4717
|
return (jsxRuntime.jsx("figcaption", { className: captionClasses || undefined, ...rest, children: children }));
|
|
4739
4718
|
};
|
|
4740
4719
|
/**
|
|
4741
|
-
* Figure component
|
|
4742
|
-
*
|
|
4743
|
-
* A Figure wraps the HTML `<figure>` element with Bulma helper class integration.
|
|
4744
|
-
* Use it to group self-contained content like images, illustrations, diagrams, or code snippets
|
|
4745
|
-
* with an optional caption via Figure.Caption.
|
|
4720
|
+
* The `Figure` component renders a styled `<figure>` element with Bulma helper class integration.
|
|
4746
4721
|
*
|
|
4747
4722
|
* @function
|
|
4748
4723
|
* @param {FigureProps} props - Props for the Figure component.
|
|
@@ -4772,21 +4747,19 @@ const Figure = withSubComponents(FigureComponent, {
|
|
|
4772
4747
|
}, 'Figure');
|
|
4773
4748
|
|
|
4774
4749
|
/**
|
|
4775
|
-
* IconText component
|
|
4776
|
-
*
|
|
4777
|
-
* Supports Bulma helper classes for styling, color, and layout. Can render a single icon with text or multiple icon/text pairs.
|
|
4750
|
+
* The `IconText` component provides a Bulma-styled horizontal arrangement of one or more `Icon` components and optional text.
|
|
4778
4751
|
*
|
|
4779
4752
|
* @function
|
|
4780
4753
|
* @param {IconTextProps} props - Props for the IconText component.
|
|
4781
4754
|
* @returns {JSX.Element} The rendered icon text element.
|
|
4782
4755
|
* @see {@link https://bulma.io/documentation/elements/icon/#icon-text | Bulma IconText documentation}
|
|
4783
4756
|
*/
|
|
4784
|
-
const IconTextComponent = ({ className, textColor, bgColor, iconProps, children, items, ...props }) => {
|
|
4757
|
+
const IconTextComponent = ({ className, textColor, color, bgColor, iconProps, children, items, ...props }) => {
|
|
4785
4758
|
/**
|
|
4786
4759
|
* Generates Bulma helper classes and separates out remaining props.
|
|
4787
4760
|
*/
|
|
4788
4761
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
4789
|
-
color: textColor,
|
|
4762
|
+
color: textColor ?? color,
|
|
4790
4763
|
backgroundColor: bgColor,
|
|
4791
4764
|
...props,
|
|
4792
4765
|
});
|
|
@@ -4797,23 +4770,19 @@ const IconTextComponent = ({ className, textColor, bgColor, iconProps, children,
|
|
|
4797
4770
|
const IconText = withSubComponents(IconTextComponent, { Icon }, 'IconText');
|
|
4798
4771
|
|
|
4799
4772
|
/**
|
|
4800
|
-
* Image component
|
|
4801
|
-
*
|
|
4802
|
-
* Supports fixed-size containers, aspect ratios, rounded images, retina images, and arbitrary children (e.g., iframe).
|
|
4803
|
-
*
|
|
4804
|
-
* The "as" prop allows rendering as "figure", "p", or "div" tags etc.
|
|
4773
|
+
* The `Image` component wraps images, iframes, or custom content in a Bulma-styled container, supporting fixed sizes, aspect ratios, rounded corners, retina images, and all Bulma helper props for color and spacing.
|
|
4805
4774
|
*
|
|
4806
4775
|
* @function
|
|
4807
4776
|
* @param {ImageProps} props - Props for the Image component.
|
|
4808
4777
|
* @returns {JSX.Element} The rendered image element.
|
|
4809
4778
|
* @see {@link https://bulma.io/documentation/elements/image/ | Bulma Image documentation}
|
|
4810
4779
|
*/
|
|
4811
|
-
const Image = ({ as, className, textColor, bgColor, size, isRounded, isRetina, src, alt, children, ...props }) => {
|
|
4780
|
+
const Image = ({ as, className, textColor, color, bgColor, size, isRounded, isRetina, src, alt, children, ...props }) => {
|
|
4812
4781
|
/**
|
|
4813
4782
|
* Generates Bulma helper classes and separates out remaining props.
|
|
4814
4783
|
*/
|
|
4815
4784
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
4816
|
-
color: textColor,
|
|
4785
|
+
color: textColor ?? color,
|
|
4817
4786
|
backgroundColor: bgColor,
|
|
4818
4787
|
...props,
|
|
4819
4788
|
});
|
|
@@ -4840,10 +4809,7 @@ const Image = ({ as, className, textColor, bgColor, size, isRounded, isRetina, s
|
|
|
4840
4809
|
};
|
|
4841
4810
|
|
|
4842
4811
|
/**
|
|
4843
|
-
* Link component
|
|
4844
|
-
*
|
|
4845
|
-
* A Link wraps the HTML `<a>` element with Bulma styling support and helper class integration.
|
|
4846
|
-
* Supports Bulma helper classes for additional styling like text color, background color, and layout.
|
|
4812
|
+
* The `Link` component renders a styled anchor (`<a>`) element with Bulma helper class integration.
|
|
4847
4813
|
*
|
|
4848
4814
|
* @function
|
|
4849
4815
|
* @param {LinkProps} props - Props for the Link component.
|
|
@@ -4867,12 +4833,7 @@ const Link = ({ className, textColor, bgColor, isActive, as: Component = 'a', ch
|
|
|
4867
4833
|
};
|
|
4868
4834
|
|
|
4869
4835
|
/**
|
|
4870
|
-
* ListItem component
|
|
4871
|
-
*
|
|
4872
|
-
* A ListItem wraps the HTML `<li>` element with Bulma helper class integration.
|
|
4873
|
-
* Use it inside UnorderedList or OrderedList components.
|
|
4874
|
-
* Supports Bulma helper classes for additional styling like text color, background color,
|
|
4875
|
-
* and spacing utilities.
|
|
4836
|
+
* The `ListItem` component renders a styled list item (`<li>`) element with Bulma helper class integration.
|
|
4876
4837
|
*
|
|
4877
4838
|
* @function
|
|
4878
4839
|
* @param {ListItemProps} props - Props for the ListItem component.
|
|
@@ -4893,9 +4854,7 @@ const ListItem = ({ className, textColor, bgColor, children, ...props }) => {
|
|
|
4893
4854
|
};
|
|
4894
4855
|
|
|
4895
4856
|
/**
|
|
4896
|
-
* Notification component
|
|
4897
|
-
*
|
|
4898
|
-
* Supports colors, light variants, a delete button, and arbitrary content.
|
|
4857
|
+
* The `Notification` component is a Bulma-styled alert/message area for providing feedback, warnings, or information to users.
|
|
4899
4858
|
*
|
|
4900
4859
|
* @function
|
|
4901
4860
|
* @param {NotificationProps} props - Props for the Notification component.
|
|
@@ -4903,6 +4862,7 @@ const ListItem = ({ className, textColor, bgColor, children, ...props }) => {
|
|
|
4903
4862
|
* @see {@link https://bulma.io/documentation/elements/notification/ | Bulma Notification documentation}
|
|
4904
4863
|
*/
|
|
4905
4864
|
const Notification = ({ className, color, textColor, isLight, hasDelete, onDelete, children, ...props }) => {
|
|
4865
|
+
warnUnstyledColor('Notification', color);
|
|
4906
4866
|
/**
|
|
4907
4867
|
* Generates Bulma helper classes and separates out remaining props.
|
|
4908
4868
|
*/
|
|
@@ -5100,11 +5060,7 @@ const NotificationContainer = ({ position = 'top-right' }) => {
|
|
|
5100
5060
|
};
|
|
5101
5061
|
|
|
5102
5062
|
/**
|
|
5103
|
-
* OrderedList component
|
|
5104
|
-
*
|
|
5105
|
-
* An OrderedList wraps the HTML `<ol>` element with Bulma helper class integration.
|
|
5106
|
-
* Supports Bulma helper classes for additional styling like text color, background color,
|
|
5107
|
-
* and spacing utilities. Also supports standard `<ol>` attributes like `type`, `start`, and `reversed`.
|
|
5063
|
+
* The `OrderedList` component renders a styled ordered list (`<ol>`) element with Bulma helper class integration.
|
|
5108
5064
|
*
|
|
5109
5065
|
* @function
|
|
5110
5066
|
* @param {OrderedListProps} props - Props for the OrderedList component.
|
|
@@ -5126,11 +5082,7 @@ const OrderedListComponent = ({ className, textColor, bgColor, children, ...prop
|
|
|
5126
5082
|
const OrderedList = withSubComponents(OrderedListComponent, { Item: ListItem }, 'OrderedList');
|
|
5127
5083
|
|
|
5128
5084
|
/**
|
|
5129
|
-
* Paragraph component
|
|
5130
|
-
*
|
|
5131
|
-
* A Paragraph wraps the HTML `<p>` element with Bulma helper class integration.
|
|
5132
|
-
* Supports Bulma helper classes for additional styling like text color, background color,
|
|
5133
|
-
* typography, and spacing utilities.
|
|
5085
|
+
* The `Paragraph` component renders a styled `<p>` element with Bulma helper class integration.
|
|
5134
5086
|
*
|
|
5135
5087
|
* @function
|
|
5136
5088
|
* @param {ParagraphProps} props - Props for the Paragraph component.
|
|
@@ -5151,11 +5103,7 @@ const Paragraph = ({ className, textColor, bgColor, children, ...props }) => {
|
|
|
5151
5103
|
};
|
|
5152
5104
|
|
|
5153
5105
|
/**
|
|
5154
|
-
* Pre component
|
|
5155
|
-
*
|
|
5156
|
-
* A Pre wraps the HTML `<pre>` element with Bulma helper class integration.
|
|
5157
|
-
* Use it for multi-line code blocks, ASCII art, or any content where whitespace
|
|
5158
|
-
* formatting must be preserved. Often used together with the Code component.
|
|
5106
|
+
* The `Pre` component renders a styled `<pre>` element with Bulma helper class integration.
|
|
5159
5107
|
*
|
|
5160
5108
|
* @function
|
|
5161
5109
|
* @param {PreProps} props - Props for the Pre component.
|
|
@@ -5173,9 +5121,7 @@ const Pre = ({ className, textColor, bgColor, children, ...props }) => {
|
|
|
5173
5121
|
};
|
|
5174
5122
|
|
|
5175
5123
|
/**
|
|
5176
|
-
* Progress component
|
|
5177
|
-
*
|
|
5178
|
-
* Supports Bulma color and size modifiers, value/max attributes, and optional custom content.
|
|
5124
|
+
* The `Progress` component displays a Bulma-styled progress bar.
|
|
5179
5125
|
*
|
|
5180
5126
|
* @function
|
|
5181
5127
|
* @param {ProgressProps} props - Props for the Progress component.
|
|
@@ -5183,6 +5129,7 @@ const Pre = ({ className, textColor, bgColor, children, ...props }) => {
|
|
|
5183
5129
|
* @see {@link https://bulma.io/documentation/elements/progress/ | Bulma Progress documentation}
|
|
5184
5130
|
*/
|
|
5185
5131
|
const Progress = ({ className, color, size, value, max, children, ...props }) => {
|
|
5132
|
+
warnUnstyledColor('Progress', color);
|
|
5186
5133
|
/**
|
|
5187
5134
|
* Generates Bulma helper classes and separates out remaining props.
|
|
5188
5135
|
*/
|
|
@@ -5198,10 +5145,7 @@ const Progress = ({ className, color, size, value, max, children, ...props }) =>
|
|
|
5198
5145
|
};
|
|
5199
5146
|
|
|
5200
5147
|
/**
|
|
5201
|
-
* Skeleton component
|
|
5202
|
-
*
|
|
5203
|
-
* Renders an animated placeholder that indicates content is loading.
|
|
5204
|
-
* Supports block and multi-line variants.
|
|
5148
|
+
* The `Skeleton` component provides a Bulma-styled skeleton loader for React applications, useful for indicating that content is loading.
|
|
5205
5149
|
*
|
|
5206
5150
|
* @function
|
|
5207
5151
|
* @param {SkeletonProps} props - Props for the Skeleton component.
|
|
@@ -5225,10 +5169,7 @@ const Skeleton = ({ className, variant = 'block', lines = 3, children, ...props
|
|
|
5225
5169
|
};
|
|
5226
5170
|
|
|
5227
5171
|
/**
|
|
5228
|
-
* Span component
|
|
5229
|
-
*
|
|
5230
|
-
* A Span wraps the HTML `<span>` element with Bulma helper class integration.
|
|
5231
|
-
* Useful for styling inline text with Bulma's color, typography, and spacing utilities.
|
|
5172
|
+
* The `Span` component renders a styled inline `<span>` element with Bulma helper class integration.
|
|
5232
5173
|
*
|
|
5233
5174
|
* @function
|
|
5234
5175
|
* @param {SpanProps} props - Props for the Span component.
|
|
@@ -5249,11 +5190,7 @@ const Span = ({ className, textColor, bgColor, children, ...props }) => {
|
|
|
5249
5190
|
};
|
|
5250
5191
|
|
|
5251
5192
|
/**
|
|
5252
|
-
* Strong component
|
|
5253
|
-
*
|
|
5254
|
-
* A Strong wraps the HTML `<strong>` element with Bulma helper class integration.
|
|
5255
|
-
* Use it for text that has strong importance, seriousness, or urgency.
|
|
5256
|
-
* For visual-only bold styling without semantic meaning, use Span with textWeight="bold".
|
|
5193
|
+
* The `Strong` component renders a styled `<strong>` element with Bulma helper class integration.
|
|
5257
5194
|
*
|
|
5258
5195
|
* @function
|
|
5259
5196
|
* @param {StrongProps} props - Props for the Strong component.
|
|
@@ -5281,9 +5218,7 @@ const validSubTitleElements = [
|
|
|
5281
5218
|
'p',
|
|
5282
5219
|
];
|
|
5283
5220
|
/**
|
|
5284
|
-
* SubTitle component
|
|
5285
|
-
*
|
|
5286
|
-
* Supports Bulma subtitle sizes and rendering as different HTML elements (h1-h6, p).
|
|
5221
|
+
* The `SubTitle` component renders a Bulma-styled subtitle (secondary heading), supporting sizes `1-6` and rendering as any heading or paragraph element (`h1-h6`, `p`).
|
|
5287
5222
|
*
|
|
5288
5223
|
* @function
|
|
5289
5224
|
* @param {SubTitleProps} props - Props for the SubTitle component.
|
|
@@ -5455,9 +5390,7 @@ const Th = ({ className, isAligned, width, color, children, ...props }) => {
|
|
|
5455
5390
|
};
|
|
5456
5391
|
|
|
5457
5392
|
/**
|
|
5458
|
-
* Table component
|
|
5459
|
-
*
|
|
5460
|
-
* Supports responsive, bordered, striped, narrow, hoverable, and fullwidth variants.
|
|
5393
|
+
* The `Table` component and its subcomponents provide a highly composable, Bulma-styled table system for React.
|
|
5461
5394
|
*
|
|
5462
5395
|
* @function
|
|
5463
5396
|
* @param {TableProps} props - Props for the Table component.
|
|
@@ -5507,9 +5440,7 @@ const validTagColors = [
|
|
|
5507
5440
|
];
|
|
5508
5441
|
const validTagSizes = ['normal', 'medium', 'large'];
|
|
5509
5442
|
/**
|
|
5510
|
-
* Tag component
|
|
5511
|
-
*
|
|
5512
|
-
* Supports colors, sizes, rounded, delete, and hoverable variants.
|
|
5443
|
+
* The `Tag` component renders a Bulma-styled label or badge.
|
|
5513
5444
|
*
|
|
5514
5445
|
* @function
|
|
5515
5446
|
* @param {TagProps} props - Props for the Tag component.
|
|
@@ -5536,9 +5467,7 @@ const Tag = ({ className, color, size, isRounded, isDelete, isHoverable, onDelet
|
|
|
5536
5467
|
};
|
|
5537
5468
|
|
|
5538
5469
|
/**
|
|
5539
|
-
* Tags component
|
|
5540
|
-
*
|
|
5541
|
-
* Supports addons and multiline variants.
|
|
5470
|
+
* The `Tags` component groups multiple `Tag` components together in a horizontal (or multiline) Bulma-styled container.
|
|
5542
5471
|
*
|
|
5543
5472
|
* @function
|
|
5544
5473
|
* @param {TagsProps} props - Props for the Tags component.
|
|
@@ -5562,9 +5491,7 @@ const Tags = withSubComponents(TagsComponent, { Tag }, 'Tags');
|
|
|
5562
5491
|
const validTitleSizes = ['1', '2', '3', '4', '5', '6'];
|
|
5563
5492
|
const validTitleElements = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p'];
|
|
5564
5493
|
/**
|
|
5565
|
-
* Title component
|
|
5566
|
-
*
|
|
5567
|
-
* Supports sizes, spacing, and rendering as different HTML elements.
|
|
5494
|
+
* The `Title` component renders a Bulma-styled title (heading), supporting sizes `1`-`6`, spacing, and rendering as any heading or paragraph element (`h1`-`h6`, `p`).
|
|
5568
5495
|
*
|
|
5569
5496
|
* @function
|
|
5570
5497
|
* @param {TitleProps} props - Props for the Title component.
|
|
@@ -5596,11 +5523,7 @@ const Title = ({ className, size, isSpaced, as = 'h1', hasSkeleton, textColor, b
|
|
|
5596
5523
|
};
|
|
5597
5524
|
|
|
5598
5525
|
/**
|
|
5599
|
-
* UnorderedList component
|
|
5600
|
-
*
|
|
5601
|
-
* An UnorderedList wraps the HTML `<ul>` element with Bulma helper class integration.
|
|
5602
|
-
* Supports Bulma helper classes for additional styling like text color, background color,
|
|
5603
|
-
* and spacing utilities.
|
|
5526
|
+
* The `UnorderedList` component renders a styled unordered list (`<ul>`) element with Bulma helper class integration.
|
|
5604
5527
|
*
|
|
5605
5528
|
* @function
|
|
5606
5529
|
* @param {UnorderedListProps} props - Props for the UnorderedList component.
|
|
@@ -5670,16 +5593,7 @@ const checkboxColors = [
|
|
|
5670
5593
|
*/
|
|
5671
5594
|
const checkboxSizes = ['small', 'normal', 'medium', 'large'];
|
|
5672
5595
|
/**
|
|
5673
|
-
*
|
|
5674
|
-
*
|
|
5675
|
-
* Renders a custom-styled checkbox with a visual check indicator,
|
|
5676
|
-
* supporting colors, sizes, and various states. Inside a `<Checkboxes>`
|
|
5677
|
-
* group, Checkbox inherits `name` and (when the group is in controlled or
|
|
5678
|
-
* uncontrolled mode) derives its `checked` state from membership in the
|
|
5679
|
-
* group's `value` array. On click, dispatches the new array via the group's
|
|
5680
|
-
* `onChange`.
|
|
5681
|
-
*
|
|
5682
|
-
* Local props always win over group context.
|
|
5596
|
+
* The `Checkbox` component provides a Bulma-styled checkbox input.
|
|
5683
5597
|
*
|
|
5684
5598
|
* @function
|
|
5685
5599
|
* @param {CheckboxProps} props - Props for the Checkbox component.
|
|
@@ -5743,7 +5657,7 @@ Checkbox.displayName = 'Checkbox';
|
|
|
5743
5657
|
|
|
5744
5658
|
const allowedColors = [...validColors, 'inherit', 'current'];
|
|
5745
5659
|
/**
|
|
5746
|
-
*
|
|
5660
|
+
* The `Control` component is a Bulma-styled wrapper for form controls (`Input`, `Select`, `TextArea`, etc.), supporting icons (left/right), loading state, expansion, size, and Bulma helper props for layout and color.
|
|
5747
5661
|
*
|
|
5748
5662
|
* @function
|
|
5749
5663
|
* @param {ControlProps} props - Props for the Control component.
|
|
@@ -5845,8 +5759,7 @@ const FieldBody = ({ textColor, bgColor, className, children, ...props }) => {
|
|
|
5845
5759
|
return (jsxRuntime.jsx("div", { className: fieldBodyClass, ...props, ...rest, children: children }));
|
|
5846
5760
|
};
|
|
5847
5761
|
/**
|
|
5848
|
-
* Field component
|
|
5849
|
-
* Supports horizontal, grouped, and labelled fields.
|
|
5762
|
+
* The `Field` component is a Bulma-styled form field container.
|
|
5850
5763
|
*
|
|
5851
5764
|
* @function
|
|
5852
5765
|
* @param {FieldProps} props - Props for the Field component.
|
|
@@ -5929,20 +5842,7 @@ const Field = withSubComponents(FieldComponent, {
|
|
|
5929
5842
|
}, 'Field');
|
|
5930
5843
|
|
|
5931
5844
|
/**
|
|
5932
|
-
*
|
|
5933
|
-
* selected-values array for the entire group when given
|
|
5934
|
-
* `value`/`defaultValue`/`onChange`.
|
|
5935
|
-
*
|
|
5936
|
-
* Three usage modes:
|
|
5937
|
-
*
|
|
5938
|
-
* 1. **Name-only** — pass `name`. Each child Checkbox manages its own checked
|
|
5939
|
-
* state via `defaultChecked` or `checked`. Backwards compatible.
|
|
5940
|
-
*
|
|
5941
|
-
* 2. **Controlled** — pass `value` (array) and `onChange`. The group owns
|
|
5942
|
-
* selection; each child derives `checked` from `value.includes(my.value)`.
|
|
5943
|
-
*
|
|
5944
|
-
* 3. **Uncontrolled** — pass `defaultValue` (array) and optionally `onChange`.
|
|
5945
|
-
* The group manages internal state; `onChange` fires with the new array.
|
|
5845
|
+
* The `Checkboxes` component wraps multiple `Checkbox` components in a Bulma-styled group.
|
|
5946
5846
|
*
|
|
5947
5847
|
* @function
|
|
5948
5848
|
* @param {CheckboxesProps} props - Props for the Checkboxes component.
|
|
@@ -6004,8 +5904,26 @@ const CheckboxesComponent = ({ label, labelSize, labelProps, horizontal, message
|
|
|
6004
5904
|
const Checkboxes = withSubComponents(CheckboxesComponent, { Checkbox }, 'Checkboxes');
|
|
6005
5905
|
|
|
6006
5906
|
/**
|
|
6007
|
-
*
|
|
6008
|
-
*
|
|
5907
|
+
* Associates the convenience `label` prop with its control (#368): generates
|
|
5908
|
+
* an id for the control and returns labelProps carrying a matching `htmlFor`.
|
|
5909
|
+
* A user-supplied `id` is used as the target instead of the generated one, and
|
|
5910
|
+
* an explicit `labelProps.htmlFor` disables generation entirely — the user has
|
|
5911
|
+
* taken over the association. Internal; not part of the public API.
|
|
5912
|
+
*/
|
|
5913
|
+
function useAutoLabelId({ label, id, labelProps, rendersLabel, }) {
|
|
5914
|
+
// Called unconditionally per the rules of hooks; SSR-safe on React 18 and 19.
|
|
5915
|
+
const generatedId = React.useId();
|
|
5916
|
+
// Truthiness mirrors Field's own `if (label)` render gate.
|
|
5917
|
+
const active = !!label && rendersLabel;
|
|
5918
|
+
const controlId = id ?? (active && !labelProps?.htmlFor ? generatedId : undefined);
|
|
5919
|
+
const fieldLabelProps = active
|
|
5920
|
+
? { htmlFor: controlId, ...labelProps }
|
|
5921
|
+
: labelProps;
|
|
5922
|
+
return { controlId, fieldLabelProps };
|
|
5923
|
+
}
|
|
5924
|
+
|
|
5925
|
+
/**
|
|
5926
|
+
* The `File` component provides a Bulma-styled file input, supporting color, size, boxed/fullwidth/align styles, icons, "has name", and filename display.
|
|
6009
5927
|
*
|
|
6010
5928
|
* @function
|
|
6011
5929
|
* @param {FileProps} props - Props for the File component.
|
|
@@ -6016,6 +5934,12 @@ const File = React.forwardRef(({
|
|
|
6016
5934
|
// Field props
|
|
6017
5935
|
label, labelSize, labelProps, horizontal, message, messageColor, fieldClassName, color, size, isBoxed, isFullwidth, isRight, isCentered, hasName, buttonLabel, iconLeft, iconRight, className, inputClassName, fileName, ...props }, ref) => {
|
|
6018
5936
|
const insideField = useInsideField();
|
|
5937
|
+
const { controlId, fieldLabelProps } = useAutoLabelId({
|
|
5938
|
+
label,
|
|
5939
|
+
id: props.id,
|
|
5940
|
+
labelProps,
|
|
5941
|
+
rendersLabel: !insideField,
|
|
5942
|
+
});
|
|
6019
5943
|
const { classPrefix } = useConfig();
|
|
6020
5944
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
6021
5945
|
color,
|
|
@@ -6045,9 +5969,9 @@ label, labelSize, labelProps, horizontal, message, messageColor, fieldClassName,
|
|
|
6045
5969
|
[`is-${messageColor}`]: !!messageColor,
|
|
6046
5970
|
});
|
|
6047
5971
|
const messageEl = message ? jsxRuntime.jsx("p", { className: helpClass, children: message }) : null;
|
|
6048
|
-
const fileElement = (jsxRuntime.jsx("div", { className: fileClass, children: jsxRuntime.jsxs("label", { className: usePrefixedClassNames('file-label'), children: [jsxRuntime.jsx("input", { ref: ref, className: classNames(usePrefixedClassNames('file-input'), inputClassName), type: "file", ...rest }), jsxRuntime.jsxs("span", { className: usePrefixedClassNames('file-cta'), children: [iconLeft && (jsxRuntime.jsx("span", { className: prefixedClassNames(classPrefix, 'file-icon'), children: iconLeft })), jsxRuntime.jsx("span", { className: usePrefixedClassNames('file-label'), children: buttonLabel || 'Choose a file\u2026' }), iconRight && (jsxRuntime.jsx("span", { className: prefixedClassNames(classPrefix, 'file-icon'), children: iconRight }))] }), hasName && fileName && (jsxRuntime.jsx("span", { className: prefixedClassNames(classPrefix, 'file-name'), children: fileName }))] }) }));
|
|
5972
|
+
const fileElement = (jsxRuntime.jsx("div", { className: fileClass, children: jsxRuntime.jsxs("label", { className: usePrefixedClassNames('file-label'), children: [jsxRuntime.jsx("input", { ref: ref, className: classNames(usePrefixedClassNames('file-input'), inputClassName), type: "file", id: controlId, ...rest }), jsxRuntime.jsxs("span", { className: usePrefixedClassNames('file-cta'), children: [iconLeft && (jsxRuntime.jsx("span", { className: prefixedClassNames(classPrefix, 'file-icon'), children: iconLeft })), jsxRuntime.jsx("span", { className: usePrefixedClassNames('file-label'), children: buttonLabel || 'Choose a file\u2026' }), iconRight && (jsxRuntime.jsx("span", { className: prefixedClassNames(classPrefix, 'file-icon'), children: iconRight }))] }), hasName && fileName && (jsxRuntime.jsx("span", { className: prefixedClassNames(classPrefix, 'file-name'), children: fileName }))] }) }));
|
|
6049
5973
|
if (!insideField) {
|
|
6050
|
-
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps:
|
|
5974
|
+
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps: fieldLabelProps, horizontal: horizontal, className: fieldClassName, children: [fileElement, messageEl] }));
|
|
6051
5975
|
}
|
|
6052
5976
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [fileElement, messageEl] }));
|
|
6053
5977
|
});
|
|
@@ -6069,16 +5993,7 @@ const radioColors = [
|
|
|
6069
5993
|
*/
|
|
6070
5994
|
const radioSizes = ['small', 'normal', 'medium', 'large'];
|
|
6071
5995
|
/**
|
|
6072
|
-
*
|
|
6073
|
-
*
|
|
6074
|
-
* Renders a custom-styled radio button with a visual indicator,
|
|
6075
|
-
* supporting colors, sizes, and various states. Inside a `<Radios>` group,
|
|
6076
|
-
* Radio inherits `name` and (when the group is in controlled or uncontrolled
|
|
6077
|
-
* mode) derives its `checked` state from the group's `value` and dispatches
|
|
6078
|
-
* the group's `onChange` when clicked.
|
|
6079
|
-
*
|
|
6080
|
-
* Local props always win over group context (`name`, `checked`, `onChange`
|
|
6081
|
-
* on Radio override the group). Required for opt-out scenarios.
|
|
5996
|
+
* The `Radio` component provides a Bulma-styled radio button input with flexible labels and helper classes.
|
|
6082
5997
|
*
|
|
6083
5998
|
* @function
|
|
6084
5999
|
* @param {RadioProps} props - Props for the Radio component.
|
|
@@ -6136,21 +6051,7 @@ const Radio = React.forwardRef(({ color, size, className, children, textColor, d
|
|
|
6136
6051
|
Radio.displayName = 'Radio';
|
|
6137
6052
|
|
|
6138
6053
|
/**
|
|
6139
|
-
*
|
|
6140
|
-
* state for the entire group when given `value`/`defaultValue`/`onChange`,
|
|
6141
|
-
* matching the pattern used by MUI's RadioGroup, Radix's RadioGroup, and React
|
|
6142
|
-
* Aria's RadioGroup.
|
|
6143
|
-
*
|
|
6144
|
-
* Three usage modes:
|
|
6145
|
-
*
|
|
6146
|
-
* 1. **Name-only** — pass `name`. Each child Radio manages its own checked
|
|
6147
|
-
* state via `defaultChecked` or `checked`. Backwards compatible.
|
|
6148
|
-
*
|
|
6149
|
-
* 2. **Controlled** — pass `value` and `onChange`. The group owns selection;
|
|
6150
|
-
* each child derives `checked` from `value === my.value`.
|
|
6151
|
-
*
|
|
6152
|
-
* 3. **Uncontrolled** — pass `defaultValue` (and optionally `onChange`). The
|
|
6153
|
-
* group manages internal state; `onChange` fires on selection change.
|
|
6054
|
+
* The `Radios` component wraps multiple `Radio` components in a Bulma-styled group.
|
|
6154
6055
|
*
|
|
6155
6056
|
* @function
|
|
6156
6057
|
* @param {RadiosProps} props - Props for the Radios component.
|
|
@@ -6229,10 +6130,7 @@ const switchColors = [
|
|
|
6229
6130
|
*/
|
|
6230
6131
|
const switchSizes = ['small', 'normal', 'medium', 'large'];
|
|
6231
6132
|
/**
|
|
6232
|
-
* Switch component for
|
|
6233
|
-
*
|
|
6234
|
-
* A styled checkbox that appears as a toggle switch, commonly used for
|
|
6235
|
-
* settings and preferences. Supports various colors, sizes, and styles.
|
|
6133
|
+
* The `Switch` component provides a toggle switch for boolean on/off states.
|
|
6236
6134
|
*
|
|
6237
6135
|
* @function
|
|
6238
6136
|
* @param {SwitchProps} props - Props for the Switch component.
|
|
@@ -6309,11 +6207,7 @@ function getTickPositions(min, max, step, ticks, marks) {
|
|
|
6309
6207
|
return positions;
|
|
6310
6208
|
}
|
|
6311
6209
|
/**
|
|
6312
|
-
* Slider component
|
|
6313
|
-
*
|
|
6314
|
-
* A styled range input that supports different sizes, colors,
|
|
6315
|
-
* optional value display, ticks/marks, range mode (dual thumb),
|
|
6316
|
-
* vertical orientation, and non-linear scale.
|
|
6210
|
+
* The `Slider` component provides a range slider input for selecting values within a range.
|
|
6317
6211
|
*
|
|
6318
6212
|
* @function
|
|
6319
6213
|
* @param {SliderProps} props - Props for the Slider component.
|
|
@@ -6370,6 +6264,14 @@ const Slider = React.forwardRef((props, ref) => {
|
|
|
6370
6264
|
const insideField = useInsideField();
|
|
6371
6265
|
const insideControl = useInsideControl();
|
|
6372
6266
|
const { bulmaHelperClasses, rest } = useBulmaClasses(restProps);
|
|
6267
|
+
// In range mode the low thumb carries `rest` (and any user id), so the
|
|
6268
|
+
// label targets it; each thumb keeps its own aria-label for AT.
|
|
6269
|
+
const { controlId, fieldLabelProps } = useAutoLabelId({
|
|
6270
|
+
label,
|
|
6271
|
+
id: restProps.id,
|
|
6272
|
+
labelProps,
|
|
6273
|
+
rendersLabel: !insideField,
|
|
6274
|
+
});
|
|
6373
6275
|
// Resolve tooltip mode: explicit tooltip prop takes precedence, else showOutput maps to 'auto'
|
|
6374
6276
|
const tooltipMode = tooltip ?? (showOutput ? 'auto' : 'hidden');
|
|
6375
6277
|
// --- Range mode state ---
|
|
@@ -6634,7 +6536,7 @@ const Slider = React.forwardRef((props, ref) => {
|
|
|
6634
6536
|
// --- Single slider ---
|
|
6635
6537
|
const sliderElement = !range ? (jsxRuntime.jsxs("div", { ref: wrapperRef, className: combinedClasses, style: wrapperStyle, children: [jsxRuntime.jsx("input", { ref: combinedRef, type: "range", min: min, max: max, step: step, value: currentSingle, disabled: disabled, onChange: handleSingleChange, onKeyDown: handleKeyDown, onMouseEnter: () => setShowTooltip(true), onMouseLeave: () => setShowTooltip(false), onFocus: () => setShowTooltip(true), onBlur: () => setShowTooltip(false), className: prefixedClassNames(classPrefix, 'slider-input'), style: {
|
|
6636
6538
|
'--slider-progress': `${progressSingle}%`,
|
|
6637
|
-
}, "aria-valuenow": currentSingle, "aria-valuemin": min, "aria-valuemax": max, "aria-orientation": isVertical ? 'vertical' : undefined, "aria-label": ariaLabel, ...getAriaProps(currentSingle), ...rest }), tooltipMode !== 'hidden' && (jsxRuntime.jsx("output", { ref: outputRef, className: prefixedClassNames(classPrefix, 'slider-output', {
|
|
6539
|
+
}, "aria-valuenow": currentSingle, "aria-valuemin": min, "aria-valuemax": max, "aria-orientation": isVertical ? 'vertical' : undefined, "aria-label": ariaLabel, ...getAriaProps(currentSingle), id: controlId, ...rest }), tooltipMode !== 'hidden' && (jsxRuntime.jsx("output", { ref: outputRef, className: prefixedClassNames(classPrefix, 'slider-output', {
|
|
6638
6540
|
'is-visible': showTipLow,
|
|
6639
6541
|
'is-flipped': flipped,
|
|
6640
6542
|
'is-flipped-left': isVertical && verticalFlippedLeft,
|
|
@@ -6662,7 +6564,7 @@ const Slider = React.forwardRef((props, ref) => {
|
|
|
6662
6564
|
: {
|
|
6663
6565
|
'--slider-progress-low': `${progressLow}%`,
|
|
6664
6566
|
'--slider-progress-high': `${progressHigh}%`,
|
|
6665
|
-
} }), jsxRuntime.jsx("input", { ref: combinedRef, type: "range", min: min, max: max, step: step, value: currentRange[0], disabled: disabled, onChange: handleRangeLowChange, onKeyDown: handleKeyDown, onMouseEnter: () => setShowTooltip(true), onMouseLeave: () => setShowTooltip(false), onFocus: () => setShowTooltip(true), onBlur: () => setShowTooltip(false), className: prefixedClassNames(classPrefix, 'slider-input', 'slider-input-low'), "aria-valuenow": currentRange[0], "aria-valuemin": min, "aria-valuemax": max, "aria-orientation": isVertical ? 'vertical' : undefined, "aria-label": ariaLabel?.[0] ?? 'Minimum value', ...getAriaProps(currentRange[0]), ...rest, ...(nameLow !== undefined ? { name: nameLow } : {}) }), jsxRuntime.jsx("input", { ref: inputHighRef, type: "range", min: min, max: max, step: step, value: currentRange[1], disabled: disabled, onChange: handleRangeHighChange, onMouseEnter: () => setShowTooltipHigh(true), onMouseLeave: () => setShowTooltipHigh(false), onFocus: () => setShowTooltipHigh(true), onBlur: () => setShowTooltipHigh(false), className: prefixedClassNames(classPrefix, 'slider-input', 'slider-input-high'), "aria-valuenow": currentRange[1], "aria-valuemin": min, "aria-valuemax": max, "aria-orientation": isVertical ? 'vertical' : undefined, "aria-label": ariaLabel?.[1] ?? 'Maximum value', ...getAriaProps(currentRange[1]), name: nameHigh }), tooltipMode !== 'hidden' && (jsxRuntime.jsx("output", { ref: outputRef, className: prefixedClassNames(classPrefix, 'slider-output', 'slider-output-low', {
|
|
6567
|
+
} }), jsxRuntime.jsx("input", { ref: combinedRef, type: "range", min: min, max: max, step: step, value: currentRange[0], disabled: disabled, onChange: handleRangeLowChange, onKeyDown: handleKeyDown, onMouseEnter: () => setShowTooltip(true), onMouseLeave: () => setShowTooltip(false), onFocus: () => setShowTooltip(true), onBlur: () => setShowTooltip(false), className: prefixedClassNames(classPrefix, 'slider-input', 'slider-input-low'), "aria-valuenow": currentRange[0], "aria-valuemin": min, "aria-valuemax": max, "aria-orientation": isVertical ? 'vertical' : undefined, "aria-label": ariaLabel?.[0] ?? 'Minimum value', ...getAriaProps(currentRange[0]), id: controlId, ...rest, ...(nameLow !== undefined ? { name: nameLow } : {}) }), jsxRuntime.jsx("input", { ref: inputHighRef, type: "range", min: min, max: max, step: step, value: currentRange[1], disabled: disabled, onChange: handleRangeHighChange, onMouseEnter: () => setShowTooltipHigh(true), onMouseLeave: () => setShowTooltipHigh(false), onFocus: () => setShowTooltipHigh(true), onBlur: () => setShowTooltipHigh(false), className: prefixedClassNames(classPrefix, 'slider-input', 'slider-input-high'), "aria-valuenow": currentRange[1], "aria-valuemin": min, "aria-valuemax": max, "aria-orientation": isVertical ? 'vertical' : undefined, "aria-label": ariaLabel?.[1] ?? 'Maximum value', ...getAriaProps(currentRange[1]), name: nameHigh }), tooltipMode !== 'hidden' && (jsxRuntime.jsx("output", { ref: outputRef, className: prefixedClassNames(classPrefix, 'slider-output', 'slider-output-low', {
|
|
6666
6568
|
'is-visible': showTipLow,
|
|
6667
6569
|
'is-flipped': flipped,
|
|
6668
6570
|
'is-flipped-left': isVertical && verticalFlippedLeft,
|
|
@@ -6708,7 +6610,7 @@ const Slider = React.forwardRef((props, ref) => {
|
|
|
6708
6610
|
content = jsxRuntime.jsx(Control, { children: content });
|
|
6709
6611
|
}
|
|
6710
6612
|
if (!insideField) {
|
|
6711
|
-
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps:
|
|
6613
|
+
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps: fieldLabelProps, horizontal: horizontal, className: fieldClassName, children: [content, messageEl] }));
|
|
6712
6614
|
}
|
|
6713
6615
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [content, messageEl] }));
|
|
6714
6616
|
});
|
|
@@ -6717,10 +6619,7 @@ Slider.displayName = 'Slider';
|
|
|
6717
6619
|
const ArrowDropUp = () => (jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: jsxRuntime.jsx("path", { d: "M7 14.5l5-5 5 5" }) }));
|
|
6718
6620
|
const ArrowDropDown = () => (jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: jsxRuntime.jsx("path", { d: "M7 9.5l5 5 5-5" }) }));
|
|
6719
6621
|
/**
|
|
6720
|
-
*
|
|
6721
|
-
*
|
|
6722
|
-
* Supports plus/minus buttons or a compact stepper variant,
|
|
6723
|
-
* with configurable min/max, step, and exponential stepping.
|
|
6622
|
+
* The `Numberinput` component provides a number input with increment/decrement buttons.
|
|
6724
6623
|
*
|
|
6725
6624
|
* @function
|
|
6726
6625
|
* @param {NumberinputProps} props - Props for the Numberinput component.
|
|
@@ -6749,6 +6648,13 @@ label, labelSize, labelProps, horizontal, message, messageColor, fieldClassName,
|
|
|
6749
6648
|
const isStepper = variant === 'stepper';
|
|
6750
6649
|
const isAddons = compact || isStepper;
|
|
6751
6650
|
const effectiveControlsPosition = isStepper ? 'right' : controlsPosition;
|
|
6651
|
+
// The plusminus bare branch renders no Field and no label at all.
|
|
6652
|
+
const { controlId, fieldLabelProps } = useAutoLabelId({
|
|
6653
|
+
label,
|
|
6654
|
+
id: props.id,
|
|
6655
|
+
labelProps,
|
|
6656
|
+
rendersLabel: !insideField && (isStepper || !effectiveBare),
|
|
6657
|
+
});
|
|
6752
6658
|
// Clamp value to min/max
|
|
6753
6659
|
const clampValue = React.useCallback((val) => {
|
|
6754
6660
|
let clamped = val;
|
|
@@ -6847,12 +6753,12 @@ label, labelSize, labelProps, horizontal, message, messageColor, fieldClassName,
|
|
|
6847
6753
|
}
|
|
6848
6754
|
};
|
|
6849
6755
|
// Shared input element
|
|
6850
|
-
const inputControl = (jsxRuntime.jsx("div", { className: expandedControlClasses, children: jsxRuntime.jsx("input", { ref: combinedRef, type: "number", className: inputClasses, value: currentValue ?? '', min: min, max: max, step: step, disabled: disabled, readOnly: !editable, onChange: handleInputChange, onKeyDown: handleKeyDown, "aria-valuenow": currentValue ?? undefined, "aria-valuemin": min, "aria-valuemax": max, ...rest }) }));
|
|
6756
|
+
const inputControl = (jsxRuntime.jsx("div", { className: expandedControlClasses, children: jsxRuntime.jsx("input", { ref: combinedRef, type: "number", className: inputClasses, value: currentValue ?? '', min: min, max: max, step: step, disabled: disabled, readOnly: !editable, onChange: handleInputChange, onKeyDown: handleKeyDown, "aria-valuenow": currentValue ?? undefined, "aria-valuemin": min, "aria-valuemax": max, id: controlId, ...rest }) }));
|
|
6851
6757
|
// Stepper variant
|
|
6852
6758
|
if (isStepper) {
|
|
6853
6759
|
const stepperElement = (jsxRuntime.jsxs("div", { className: combinedClasses, children: [inputControl, jsxRuntime.jsx("div", { className: controlClasses, children: jsxRuntime.jsxs("div", { className: stepperClasses, children: [jsxRuntime.jsx("button", { type: "button", className: stepperButtonClasses, onClick: handleIncrement, disabled: disabled || isAtMax, tabIndex: -1, "aria-label": "Increase value", children: jsxRuntime.jsx(ArrowDropUp, {}) }), jsxRuntime.jsx("button", { type: "button", className: stepperButtonClasses, onClick: handleDecrement, disabled: disabled || isAtMin, tabIndex: -1, "aria-label": "Decrease value", children: jsxRuntime.jsx(ArrowDropDown, {}) })] }) })] }));
|
|
6854
6760
|
if (!insideField) {
|
|
6855
|
-
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps:
|
|
6761
|
+
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps: fieldLabelProps, horizontal: horizontal, className: fieldClassName, children: [stepperElement, messageEl] }));
|
|
6856
6762
|
}
|
|
6857
6763
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [stepperElement, messageEl] }));
|
|
6858
6764
|
}
|
|
@@ -6886,7 +6792,7 @@ label, labelSize, labelProps, horizontal, message, messageColor, fieldClassName,
|
|
|
6886
6792
|
numberinputElement = (jsxRuntime.jsxs("div", { className: combinedClasses, children: [decrementControl, inputControl, incrementControl] }));
|
|
6887
6793
|
}
|
|
6888
6794
|
if (!insideField) {
|
|
6889
|
-
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps:
|
|
6795
|
+
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps: fieldLabelProps, horizontal: horizontal, className: fieldClassName, children: [numberinputElement, messageEl] }));
|
|
6890
6796
|
}
|
|
6891
6797
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [numberinputElement, messageEl] }));
|
|
6892
6798
|
});
|
|
@@ -6909,11 +6815,7 @@ function getFillPercent(iconIndex, value) {
|
|
|
6909
6815
|
return Math.round((value - iconIndex) * 100);
|
|
6910
6816
|
}
|
|
6911
6817
|
/**
|
|
6912
|
-
* Rate component
|
|
6913
|
-
*
|
|
6914
|
-
* Provides an interactive rating system with customizable icons,
|
|
6915
|
-
* sizes, and display options. Works in controlled or uncontrolled modes.
|
|
6916
|
-
* Supports icon libraries, Bulma color variants, and fractional precision.
|
|
6818
|
+
* The `Rate` component provides a star/icon-based rating system.
|
|
6917
6819
|
*
|
|
6918
6820
|
* @function
|
|
6919
6821
|
* @param {RateProps} props - Props for the Rate component.
|
|
@@ -7144,10 +7046,7 @@ const Rate = React.forwardRef(({ label, labelSize, labelProps, horizontal, messa
|
|
|
7144
7046
|
Rate.displayName = 'Rate';
|
|
7145
7047
|
|
|
7146
7048
|
/**
|
|
7147
|
-
* Autocomplete component with dropdown suggestions.
|
|
7148
|
-
*
|
|
7149
|
-
* Provides an input field with a dropdown of suggestions that filter
|
|
7150
|
-
* based on user input.
|
|
7049
|
+
* The `Autocomplete` component provides an input field with dropdown suggestions that filter based on user input.
|
|
7151
7050
|
*
|
|
7152
7051
|
* @function
|
|
7153
7052
|
* @param {AutocompleteProps} props - Props for the Autocomplete component.
|
|
@@ -7388,10 +7287,7 @@ label, labelSize, labelProps, horizontal, message, messageColor, fieldClassName,
|
|
|
7388
7287
|
Autocomplete.displayName = 'Autocomplete';
|
|
7389
7288
|
|
|
7390
7289
|
/**
|
|
7391
|
-
* Taginput component for managing multiple tags.
|
|
7392
|
-
*
|
|
7393
|
-
* Allows users to create, edit, and remove tags with optional
|
|
7394
|
-
* autocomplete suggestions.
|
|
7290
|
+
* The `Taginput` component provides a tag/chip input field for managing multiple tags.
|
|
7395
7291
|
*
|
|
7396
7292
|
* @function
|
|
7397
7293
|
* @param {TaginputProps} props - Props for the Taginput component.
|
|
@@ -7809,10 +7705,7 @@ const TextAreaBase = React.forwardRef(({ color, size, isRounded, isStatic, isHov
|
|
|
7809
7705
|
TextAreaBase.displayName = 'TextAreaBase';
|
|
7810
7706
|
|
|
7811
7707
|
/**
|
|
7812
|
-
* Input
|
|
7813
|
-
*
|
|
7814
|
-
* Use this for typical form fields. For complex layouts (grouped fields,
|
|
7815
|
-
* addons, etc.), compose Field, Control, and Input directly.
|
|
7708
|
+
* The `Input` component provides a Bulma-styled text input, supporting colors, sizes, rounded corners, static/read-only state, hover/focus/loading states, and all Bulma helper props.
|
|
7816
7709
|
*
|
|
7817
7710
|
* @function
|
|
7818
7711
|
* @param {InputProps} props - Props for Input.
|
|
@@ -7843,26 +7736,29 @@ fieldClassName, controlClassName,
|
|
|
7843
7736
|
...inputProps }, ref) => {
|
|
7844
7737
|
const insideField = useInsideField();
|
|
7845
7738
|
const insideControl = useInsideControl();
|
|
7739
|
+
const { controlId, fieldLabelProps } = useAutoLabelId({
|
|
7740
|
+
label,
|
|
7741
|
+
id: inputProps.id,
|
|
7742
|
+
labelProps,
|
|
7743
|
+
rendersLabel: !insideField,
|
|
7744
|
+
});
|
|
7846
7745
|
const helpClass = usePrefixedClassNames('help', {
|
|
7847
7746
|
[`is-${messageColor}`]: !!messageColor,
|
|
7848
7747
|
});
|
|
7849
|
-
let content = jsxRuntime.jsx(InputBase, { ref: ref, ...inputProps });
|
|
7748
|
+
let content = jsxRuntime.jsx(InputBase, { ref: ref, id: controlId, ...inputProps });
|
|
7850
7749
|
if (!insideControl) {
|
|
7851
7750
|
content = (jsxRuntime.jsx(Control, { iconLeft: iconLeft, iconRight: iconRight, iconLeftName: iconLeftName, iconRightName: iconRightName, iconLeftSize: iconLeftSize, iconRightSize: iconRightSize, hasIconsLeft: hasIconsLeft, hasIconsRight: hasIconsRight, isLoading: isLoading, isExpanded: isExpanded, size: controlSize, className: controlClassName, children: content }));
|
|
7852
7751
|
}
|
|
7853
7752
|
const messageEl = message ? jsxRuntime.jsx("p", { className: helpClass, children: message }) : null;
|
|
7854
7753
|
if (!insideField) {
|
|
7855
|
-
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps:
|
|
7754
|
+
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps: fieldLabelProps, horizontal: horizontal, className: fieldClassName, children: [content, messageEl] }));
|
|
7856
7755
|
}
|
|
7857
7756
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [content, messageEl] }));
|
|
7858
7757
|
});
|
|
7859
7758
|
Input.displayName = 'Input';
|
|
7860
7759
|
|
|
7861
7760
|
/**
|
|
7862
|
-
* Select
|
|
7863
|
-
*
|
|
7864
|
-
* Use this for typical form fields. For complex layouts (grouped fields,
|
|
7865
|
-
* addons, etc.), compose Field, Control, and SelectBase directly.
|
|
7761
|
+
* The `Select` component provides a Bulma-styled dropdown for selecting one or more options.
|
|
7866
7762
|
*
|
|
7867
7763
|
* @function
|
|
7868
7764
|
* @param {SelectProps} props - Props for Select.
|
|
@@ -7890,26 +7786,29 @@ fieldClassName, controlClassName,
|
|
|
7890
7786
|
...selectProps }, ref) => {
|
|
7891
7787
|
const insideField = useInsideField();
|
|
7892
7788
|
const insideControl = useInsideControl();
|
|
7789
|
+
const { controlId, fieldLabelProps } = useAutoLabelId({
|
|
7790
|
+
label,
|
|
7791
|
+
id: selectProps.id,
|
|
7792
|
+
labelProps,
|
|
7793
|
+
rendersLabel: !insideField,
|
|
7794
|
+
});
|
|
7893
7795
|
const helpClass = usePrefixedClassNames('help', {
|
|
7894
7796
|
[`is-${messageColor}`]: !!messageColor,
|
|
7895
7797
|
});
|
|
7896
|
-
let content = jsxRuntime.jsx(SelectBase, { ref: ref, ...selectProps });
|
|
7798
|
+
let content = jsxRuntime.jsx(SelectBase, { ref: ref, id: controlId, ...selectProps });
|
|
7897
7799
|
if (!insideControl) {
|
|
7898
7800
|
content = (jsxRuntime.jsx(Control, { iconLeft: iconLeft, iconLeftName: iconLeftName, iconLeftSize: iconLeftSize, hasIconsLeft: hasIconsLeft, isExpanded: isExpanded, size: controlSize, className: controlClassName, children: content }));
|
|
7899
7801
|
}
|
|
7900
7802
|
const messageEl = message ? jsxRuntime.jsx("p", { className: helpClass, children: message }) : null;
|
|
7901
7803
|
if (!insideField) {
|
|
7902
|
-
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps:
|
|
7804
|
+
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps: fieldLabelProps, horizontal: horizontal, className: fieldClassName, children: [content, messageEl] }));
|
|
7903
7805
|
}
|
|
7904
7806
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [content, messageEl] }));
|
|
7905
7807
|
});
|
|
7906
7808
|
Select.displayName = 'Select';
|
|
7907
7809
|
|
|
7908
7810
|
/**
|
|
7909
|
-
* TextArea
|
|
7910
|
-
*
|
|
7911
|
-
* Use this for typical form fields. For complex layouts (grouped fields,
|
|
7912
|
-
* addons, etc.), compose Field, Control, and TextAreaBase directly.
|
|
7811
|
+
* The `TextArea` component provides a Bulma-styled multi-line text input, supporting color, size, rounded corners, static/read-only state, hover/focus/loading states, fixed size, and all Bulma helper props.
|
|
7913
7812
|
*
|
|
7914
7813
|
* @function
|
|
7915
7814
|
* @param {TextAreaProps} props - Props for TextArea.
|
|
@@ -7938,16 +7837,22 @@ fieldClassName, controlClassName,
|
|
|
7938
7837
|
...textAreaProps }, ref) => {
|
|
7939
7838
|
const insideField = useInsideField();
|
|
7940
7839
|
const insideControl = useInsideControl();
|
|
7840
|
+
const { controlId, fieldLabelProps } = useAutoLabelId({
|
|
7841
|
+
label,
|
|
7842
|
+
id: textAreaProps.id,
|
|
7843
|
+
labelProps,
|
|
7844
|
+
rendersLabel: !insideField,
|
|
7845
|
+
});
|
|
7941
7846
|
const helpClass = usePrefixedClassNames('help', {
|
|
7942
7847
|
[`is-${messageColor}`]: !!messageColor,
|
|
7943
7848
|
});
|
|
7944
|
-
let content = jsxRuntime.jsx(TextAreaBase, { ref: ref, ...textAreaProps });
|
|
7849
|
+
let content = jsxRuntime.jsx(TextAreaBase, { ref: ref, id: controlId, ...textAreaProps });
|
|
7945
7850
|
if (!insideControl) {
|
|
7946
7851
|
content = (jsxRuntime.jsx(Control, { isLoading: controlIsLoading, size: controlSize, className: controlClassName, children: content }));
|
|
7947
7852
|
}
|
|
7948
7853
|
const messageEl = message ? jsxRuntime.jsx("p", { className: helpClass, children: message }) : null;
|
|
7949
7854
|
if (!insideField) {
|
|
7950
|
-
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps:
|
|
7855
|
+
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps: fieldLabelProps, horizontal: horizontal, className: fieldClassName, children: [content, messageEl] }));
|
|
7951
7856
|
}
|
|
7952
7857
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [content, messageEl] }));
|
|
7953
7858
|
});
|
|
@@ -9605,11 +9510,7 @@ const DateInputBase = React.forwardRef((props, ref) => {
|
|
|
9605
9510
|
DateInputBase.displayName = 'DateInputBase';
|
|
9606
9511
|
|
|
9607
9512
|
/**
|
|
9608
|
-
* DateInput is a form input that opens a popover calendar for date selection.
|
|
9609
|
-
* Uses native `Date` and `Intl` only (no extra dependencies). Supports min/max
|
|
9610
|
-
* bounds, disabled-date predicates, custom formats, locale-aware day/month
|
|
9611
|
-
* names, an inline mode, and a native `<input type="date">` fallback for touch
|
|
9612
|
-
* devices.
|
|
9513
|
+
* The `DateInput` component is a form input that opens a popover calendar for date selection.
|
|
9613
9514
|
*
|
|
9614
9515
|
* @function
|
|
9615
9516
|
* @param {DateInputProps} props - Props for the DateInput.
|
|
@@ -9628,12 +9529,19 @@ DateInputBase.displayName = 'DateInputBase';
|
|
|
9628
9529
|
const DateInput = React.forwardRef(({ label, labelSize, labelProps, horizontal, iconLeft, iconRight, iconLeftName = 'calendar', iconRightName, iconLeftSize, iconRightSize, hasIconsLeft, hasIconsRight, isLoading, isExpanded, controlSize, message, messageColor, fieldClassName, controlClassName, ...baseProps }, ref) => {
|
|
9629
9530
|
const insideField = useInsideField();
|
|
9630
9531
|
const insideControl = useInsideControl();
|
|
9532
|
+
const { controlId, fieldLabelProps } = useAutoLabelId({
|
|
9533
|
+
label,
|
|
9534
|
+
id: baseProps.id,
|
|
9535
|
+
labelProps,
|
|
9536
|
+
// Inline mode renders a bare calendar with no input to label.
|
|
9537
|
+
rendersLabel: !insideField && !baseProps.inline,
|
|
9538
|
+
});
|
|
9631
9539
|
const helpClass = usePrefixedClassNames('help', {
|
|
9632
9540
|
[`is-${messageColor}`]: !!messageColor,
|
|
9633
9541
|
});
|
|
9634
9542
|
// The right-side launcher is on by default; suppress it while the Control
|
|
9635
9543
|
// shows its loading spinner (also on the right) unless explicitly set.
|
|
9636
|
-
let content = (jsxRuntime.jsx(DateInputBase, { ref: ref, ...baseProps, triggerIcon: baseProps.triggerIcon ?? !isLoading }));
|
|
9544
|
+
let content = (jsxRuntime.jsx(DateInputBase, { ref: ref, id: controlId, ...baseProps, triggerIcon: baseProps.triggerIcon ?? !isLoading }));
|
|
9637
9545
|
// Inline mode renders a bare calendar with no input, so the Control's
|
|
9638
9546
|
// icon-left container has nothing to anchor to. Skip the Control wrap.
|
|
9639
9547
|
if (!insideControl && !baseProps.inline) {
|
|
@@ -9641,7 +9549,7 @@ const DateInput = React.forwardRef(({ label, labelSize, labelProps, horizontal,
|
|
|
9641
9549
|
}
|
|
9642
9550
|
const messageEl = message ? jsxRuntime.jsx("p", { className: helpClass, children: message }) : null;
|
|
9643
9551
|
if (!insideField) {
|
|
9644
|
-
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps:
|
|
9552
|
+
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps: fieldLabelProps, horizontal: horizontal, className: fieldClassName, children: [content, messageEl] }));
|
|
9645
9553
|
}
|
|
9646
9554
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [content, messageEl] }));
|
|
9647
9555
|
});
|
|
@@ -10697,10 +10605,7 @@ const TimeInputBase = React.forwardRef((props, ref) => {
|
|
|
10697
10605
|
TimeInputBase.displayName = 'TimeInputBase';
|
|
10698
10606
|
|
|
10699
10607
|
/**
|
|
10700
|
-
* TimeInput is a form input that opens a popover spinner for time-of-day
|
|
10701
|
-
* selection. Supports 12h/24h, optional seconds, custom step increments,
|
|
10702
|
-
* min/max bounds, an unselectable-times predicate, and a native
|
|
10703
|
-
* `<input type="time">` fallback for touch devices.
|
|
10608
|
+
* The `TimeInput` component is a form input that opens a popover spinner for time-of-day selection.
|
|
10704
10609
|
*
|
|
10705
10610
|
* @function
|
|
10706
10611
|
* @param {TimeInputProps} props
|
|
@@ -10715,12 +10620,19 @@ TimeInputBase.displayName = 'TimeInputBase';
|
|
|
10715
10620
|
const TimeInput = React.forwardRef(({ label, labelSize, labelProps, horizontal, iconLeft, iconRight, iconLeftName = 'clock', iconRightName, iconLeftSize, iconRightSize, hasIconsLeft, hasIconsRight, isLoading, isExpanded, controlSize, message, messageColor, fieldClassName, controlClassName, ...baseProps }, ref) => {
|
|
10716
10621
|
const insideField = useInsideField();
|
|
10717
10622
|
const insideControl = useInsideControl();
|
|
10623
|
+
const { controlId, fieldLabelProps } = useAutoLabelId({
|
|
10624
|
+
label,
|
|
10625
|
+
id: baseProps.id,
|
|
10626
|
+
labelProps,
|
|
10627
|
+
// Inline mode renders a bare panel with no input to label.
|
|
10628
|
+
rendersLabel: !insideField && !baseProps.inline,
|
|
10629
|
+
});
|
|
10718
10630
|
const helpClass = usePrefixedClassNames('help', {
|
|
10719
10631
|
[`is-${messageColor}`]: !!messageColor,
|
|
10720
10632
|
});
|
|
10721
10633
|
// The right-side launcher is on by default; suppress it while the Control
|
|
10722
10634
|
// shows its loading spinner (also on the right) unless explicitly set.
|
|
10723
|
-
let content = (jsxRuntime.jsx(TimeInputBase, { ref: ref, ...baseProps, triggerIcon: baseProps.triggerIcon ?? !isLoading }));
|
|
10635
|
+
let content = (jsxRuntime.jsx(TimeInputBase, { ref: ref, id: controlId, ...baseProps, triggerIcon: baseProps.triggerIcon ?? !isLoading }));
|
|
10724
10636
|
// Inline mode renders a bare panel with no input, so the Control's
|
|
10725
10637
|
// icon-left container has nothing to anchor to. Skip the Control wrap.
|
|
10726
10638
|
if (!insideControl && !baseProps.inline) {
|
|
@@ -10728,7 +10640,7 @@ const TimeInput = React.forwardRef(({ label, labelSize, labelProps, horizontal,
|
|
|
10728
10640
|
}
|
|
10729
10641
|
const messageEl = message ? jsxRuntime.jsx("p", { className: helpClass, children: message }) : null;
|
|
10730
10642
|
if (!insideField) {
|
|
10731
|
-
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps:
|
|
10643
|
+
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps: fieldLabelProps, horizontal: horizontal, className: fieldClassName, children: [content, messageEl] }));
|
|
10732
10644
|
}
|
|
10733
10645
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [content, messageEl] }));
|
|
10734
10646
|
});
|
|
@@ -10985,9 +10897,7 @@ const DateTimeInputBase = React.forwardRef((props, ref) => {
|
|
|
10985
10897
|
DateTimeInputBase.displayName = 'DateTimeInputBase';
|
|
10986
10898
|
|
|
10987
10899
|
/**
|
|
10988
|
-
* DateTimeInput
|
|
10989
|
-
* (above) and a time spinner (below). Footer offers Today / Now / Clear / OK.
|
|
10990
|
-
* Includes a native `<input type="datetime-local">` fallback for touch devices.
|
|
10900
|
+
* The `DateTimeInput` combines a calendar and a time **wheel spinner** in a single popover — an iOS-style layout.
|
|
10991
10901
|
*
|
|
10992
10902
|
* @function
|
|
10993
10903
|
* @param {DateTimeInputProps} props
|
|
@@ -11006,12 +10916,19 @@ DateTimeInputBase.displayName = 'DateTimeInputBase';
|
|
|
11006
10916
|
const DateTimeInput = React.forwardRef(({ label, labelSize, labelProps, horizontal, iconLeft, iconRight, iconLeftName = 'calendar-alt', iconRightName, iconLeftSize, iconRightSize, hasIconsLeft, hasIconsRight, isLoading, isExpanded, controlSize, message, messageColor, fieldClassName, controlClassName, ...baseProps }, ref) => {
|
|
11007
10917
|
const insideField = useInsideField();
|
|
11008
10918
|
const insideControl = useInsideControl();
|
|
10919
|
+
const { controlId, fieldLabelProps } = useAutoLabelId({
|
|
10920
|
+
label,
|
|
10921
|
+
id: baseProps.id,
|
|
10922
|
+
labelProps,
|
|
10923
|
+
// Inline mode renders a bare picker with no input to label.
|
|
10924
|
+
rendersLabel: !insideField && !baseProps.inline,
|
|
10925
|
+
});
|
|
11009
10926
|
const helpClass = usePrefixedClassNames('help', {
|
|
11010
10927
|
[`is-${messageColor}`]: !!messageColor,
|
|
11011
10928
|
});
|
|
11012
10929
|
// The right-side launcher is on by default; suppress it while the Control
|
|
11013
10930
|
// shows its loading spinner (also on the right) unless explicitly set.
|
|
11014
|
-
let content = (jsxRuntime.jsx(DateTimeInputBase, { ref: ref, ...baseProps, triggerIcon: baseProps.triggerIcon ?? !isLoading }));
|
|
10931
|
+
let content = (jsxRuntime.jsx(DateTimeInputBase, { ref: ref, id: controlId, ...baseProps, triggerIcon: baseProps.triggerIcon ?? !isLoading }));
|
|
11015
10932
|
// Inline mode renders a bare picker with no input, so the Control's
|
|
11016
10933
|
// icon-left container has nothing to anchor to. Skip the Control wrap.
|
|
11017
10934
|
if (!insideControl && !baseProps.inline) {
|
|
@@ -11019,14 +10936,14 @@ const DateTimeInput = React.forwardRef(({ label, labelSize, labelProps, horizont
|
|
|
11019
10936
|
}
|
|
11020
10937
|
const messageEl = message ? jsxRuntime.jsx("p", { className: helpClass, children: message }) : null;
|
|
11021
10938
|
if (!insideField) {
|
|
11022
|
-
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps:
|
|
10939
|
+
return (jsxRuntime.jsxs(Field, { label: label, labelSize: labelSize, labelProps: fieldLabelProps, horizontal: horizontal, className: fieldClassName, children: [content, messageEl] }));
|
|
11023
10940
|
}
|
|
11024
10941
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [content, messageEl] }));
|
|
11025
10942
|
});
|
|
11026
10943
|
DateTimeInput.displayName = 'DateTimeInput';
|
|
11027
10944
|
|
|
11028
10945
|
/**
|
|
11029
|
-
*
|
|
10946
|
+
* The `Cell` component provides a single Bulma grid cell for use inside the [`Grid`](./grid.md) component.
|
|
11030
10947
|
*
|
|
11031
10948
|
* @function
|
|
11032
10949
|
* @param {CellProps} props - Props for the Cell component.
|
|
@@ -11054,7 +10971,7 @@ const Cell = ({ colStart, colFromEnd, colSpan, rowStart, rowFromEnd, rowSpan, cl
|
|
|
11054
10971
|
};
|
|
11055
10972
|
|
|
11056
10973
|
/**
|
|
11057
|
-
*
|
|
10974
|
+
* The `Grid` component provides Bulma's advanced CSS Grid layout for complex, modern layouts.
|
|
11058
10975
|
*
|
|
11059
10976
|
* @function
|
|
11060
10977
|
* @param {GridProps} props - Props for the Grid component.
|
|
@@ -11776,17 +11693,16 @@ const Theme = ({ bulmaVars = {}, children, className, isRoot = false, colorMode,
|
|
|
11776
11693
|
};
|
|
11777
11694
|
|
|
11778
11695
|
/**
|
|
11779
|
-
* Container component for Bulma.
|
|
11780
|
-
* Adds optional responsive, fluid, and color support, including is-max-* and breakpoint classes.
|
|
11696
|
+
* The `Container` component provides a responsive and flexible layout wrapper for your Bulma React UI.
|
|
11781
11697
|
*
|
|
11782
11698
|
* @function
|
|
11783
11699
|
* @param {ContainerProps} props - Props for the Container component.
|
|
11784
11700
|
* @returns {JSX.Element} The rendered container.
|
|
11785
11701
|
* @see {@link https://bulma.io/documentation/layout/container/ | Bulma Container documentation}
|
|
11786
11702
|
*/
|
|
11787
|
-
const Container = ({ className, textColor, bgColor, fluid, widescreen, fullhd, breakpoint, isMax, children, ...props }) => {
|
|
11703
|
+
const Container = ({ className, textColor, color, bgColor, fluid, widescreen, fullhd, breakpoint, isMax, children, ...props }) => {
|
|
11788
11704
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
11789
|
-
color: textColor,
|
|
11705
|
+
color: textColor ?? color,
|
|
11790
11706
|
backgroundColor: bgColor,
|
|
11791
11707
|
...props,
|
|
11792
11708
|
});
|
|
@@ -11817,7 +11733,7 @@ const Container = ({ className, textColor, bgColor, fluid, widescreen, fullhd, b
|
|
|
11817
11733
|
};
|
|
11818
11734
|
|
|
11819
11735
|
/**
|
|
11820
|
-
*
|
|
11736
|
+
* The `Footer` component provides a semantic and accessible site footer for your Bulma React UI.
|
|
11821
11737
|
*
|
|
11822
11738
|
* @function
|
|
11823
11739
|
* @param {FooterProps} props - Props for the Footer component.
|
|
@@ -11842,7 +11758,7 @@ const Footer = ({ as = 'footer', className, children, color, bgColor, textColor,
|
|
|
11842
11758
|
};
|
|
11843
11759
|
|
|
11844
11760
|
/**
|
|
11845
|
-
*
|
|
11761
|
+
* The `Hero` component provides a responsive, flexible, and visually striking section for your Bulma React UI.
|
|
11846
11762
|
*
|
|
11847
11763
|
* @function
|
|
11848
11764
|
* @param {HeroProps} props - Props for the Hero component.
|
|
@@ -11850,6 +11766,7 @@ const Footer = ({ as = 'footer', className, children, color, bgColor, textColor,
|
|
|
11850
11766
|
* @see {@link https://bulma.io/documentation/layout/hero/ | Bulma Hero documentation}
|
|
11851
11767
|
*/
|
|
11852
11768
|
const HeroComponent = ({ className, color, size, bgColor, fullheightWithNavbar, children, ...props }) => {
|
|
11769
|
+
warnUnstyledColor('Hero', color, ['inherit', 'current']);
|
|
11853
11770
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
11854
11771
|
backgroundColor: bgColor,
|
|
11855
11772
|
...props,
|
|
@@ -11863,7 +11780,7 @@ const HeroComponent = ({ className, color, size, bgColor, fullheightWithNavbar,
|
|
|
11863
11780
|
return (jsxRuntime.jsx("section", { className: heroClasses, ...rest, children: children }));
|
|
11864
11781
|
};
|
|
11865
11782
|
/**
|
|
11866
|
-
*
|
|
11783
|
+
* Top bar for navigation or branding.
|
|
11867
11784
|
*
|
|
11868
11785
|
* @function
|
|
11869
11786
|
* @param {HeroHeadProps} props - Props for the HeroHead component.
|
|
@@ -11880,7 +11797,7 @@ const HeroHead = ({ className, children, color, bgColor, textColor, ...props })
|
|
|
11880
11797
|
return (jsxRuntime.jsx("div", { className: heroHeadClasses, ...rest, children: children }));
|
|
11881
11798
|
};
|
|
11882
11799
|
/**
|
|
11883
|
-
*
|
|
11800
|
+
* Main content area, vertically centered by default.
|
|
11884
11801
|
*
|
|
11885
11802
|
* @function
|
|
11886
11803
|
* @param {HeroBodyProps} props - Props for the HeroBody component.
|
|
@@ -11897,7 +11814,7 @@ const HeroBody = ({ className, children, color, bgColor, textColor, ...props })
|
|
|
11897
11814
|
return (jsxRuntime.jsx("div", { className: heroBodyClasses, ...rest, children: children }));
|
|
11898
11815
|
};
|
|
11899
11816
|
/**
|
|
11900
|
-
*
|
|
11817
|
+
* Bottom bar for tabs or actions.
|
|
11901
11818
|
*
|
|
11902
11819
|
* @function
|
|
11903
11820
|
* @param {HeroFootProps} props - Props for the HeroFoot component.
|
|
@@ -11921,7 +11838,7 @@ const Hero = withSubComponents(HeroComponent, {
|
|
|
11921
11838
|
}, 'Hero');
|
|
11922
11839
|
|
|
11923
11840
|
/**
|
|
11924
|
-
*
|
|
11841
|
+
* 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.
|
|
11925
11842
|
*
|
|
11926
11843
|
* @function
|
|
11927
11844
|
* @param {LevelProps} props - Props for the Level component.
|
|
@@ -11941,7 +11858,7 @@ const LevelComponent = ({ isMobile, className, children, color, bgColor, textCol
|
|
|
11941
11858
|
return (jsxRuntime.jsx("nav", { className: levelClasses, ...rest, children: children }));
|
|
11942
11859
|
};
|
|
11943
11860
|
/**
|
|
11944
|
-
*
|
|
11861
|
+
* Left-aligned content.
|
|
11945
11862
|
*
|
|
11946
11863
|
* @function
|
|
11947
11864
|
* @param {LevelLeftProps} props - Props for the LevelLeft component.
|
|
@@ -11958,7 +11875,7 @@ const LevelLeft = ({ className, children, color, bgColor, textColor, ...props })
|
|
|
11958
11875
|
return (jsxRuntime.jsx("div", { className: levelLeftClasses, ...rest, children: children }));
|
|
11959
11876
|
};
|
|
11960
11877
|
/**
|
|
11961
|
-
*
|
|
11878
|
+
* Right-aligned content.
|
|
11962
11879
|
*
|
|
11963
11880
|
* @function
|
|
11964
11881
|
* @param {LevelRightProps} props - Props for the LevelRight component.
|
|
@@ -11975,7 +11892,7 @@ const LevelRight = ({ className, children, color, bgColor, textColor, ...props }
|
|
|
11975
11892
|
return (jsxRuntime.jsx("div", { className: levelRightClasses, ...rest, children: children }));
|
|
11976
11893
|
};
|
|
11977
11894
|
/**
|
|
11978
|
-
*
|
|
11895
|
+
* Individual item, can be rendered as `div`, `p`, or `a`.
|
|
11979
11896
|
*
|
|
11980
11897
|
* @function
|
|
11981
11898
|
* @param {LevelItemProps} props - Props for the LevelItem component.
|
|
@@ -12005,7 +11922,7 @@ const Level = withSubComponents(LevelComponent, {
|
|
|
12005
11922
|
}, 'Level');
|
|
12006
11923
|
|
|
12007
11924
|
/**
|
|
12008
|
-
*
|
|
11925
|
+
* The `Media` component implements Bulma’s powerful media object layout for React.
|
|
12009
11926
|
*
|
|
12010
11927
|
* @function
|
|
12011
11928
|
* @param {MediaProps} props - Props for the Media component.
|
|
@@ -12024,7 +11941,7 @@ const MediaComponent = ({ as = 'article', className, children, color, bgColor, t
|
|
|
12024
11941
|
return (jsxRuntime.jsx(Tag, { className: mediaClasses, ...rest, children: children }));
|
|
12025
11942
|
};
|
|
12026
11943
|
/**
|
|
12027
|
-
*
|
|
11944
|
+
* For avatars, thumbnails, icons (renders as `figure` or `div`)
|
|
12028
11945
|
*
|
|
12029
11946
|
* @function
|
|
12030
11947
|
* @param {MediaLeftProps} props - Props for the MediaLeft component.
|
|
@@ -12042,7 +11959,7 @@ const MediaLeft = ({ as = 'figure', className, children, color, bgColor, textCol
|
|
|
12042
11959
|
return (jsxRuntime.jsx(Tag, { className: mediaLeftClasses, ...rest, children: children }));
|
|
12043
11960
|
};
|
|
12044
11961
|
/**
|
|
12045
|
-
*
|
|
11962
|
+
* Main content (renders as `div`)
|
|
12046
11963
|
*
|
|
12047
11964
|
* @function
|
|
12048
11965
|
* @param {MediaContentProps} props - Props for the MediaContent component.
|
|
@@ -12059,7 +11976,7 @@ const MediaContent = ({ className, children, color, bgColor, textColor, ...props
|
|
|
12059
11976
|
return (jsxRuntime.jsx("div", { className: mediaContentClasses, ...rest, children: children }));
|
|
12060
11977
|
};
|
|
12061
11978
|
/**
|
|
12062
|
-
*
|
|
11979
|
+
* Actions or controls (renders as `div`)
|
|
12063
11980
|
*
|
|
12064
11981
|
* @function
|
|
12065
11982
|
* @param {MediaRightProps} props - Props for the MediaRight component.
|
|
@@ -12083,7 +12000,7 @@ const Media = withSubComponents(MediaComponent, {
|
|
|
12083
12000
|
}, 'Media');
|
|
12084
12001
|
|
|
12085
12002
|
/**
|
|
12086
|
-
*
|
|
12003
|
+
* The `Section` component provides vertical spacing and visual separation for your Bulma React UI.
|
|
12087
12004
|
*
|
|
12088
12005
|
* @function
|
|
12089
12006
|
* @param {SectionProps} props - Props for the Section component.
|