@allxsmith/bestax-bulma 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +267 -69
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +266 -68
- package/dist/index.esm.js.map +1 -1
- package/dist/types/components/Card.d.ts +50 -1
- package/dist/types/components/Message.d.ts +18 -2
- package/dist/types/elements/Icon.d.ts +22 -1
- package/dist/types/elements/Tag.d.ts +1 -1
- package/dist/types/helpers/useBulmaClasses.d.ts +20 -2
- package/package.json +9 -2
package/dist/index.cjs.js
CHANGED
|
@@ -566,6 +566,11 @@ const validColorShades = [
|
|
|
566
566
|
'90',
|
|
567
567
|
'95',
|
|
568
568
|
'invert',
|
|
569
|
+
'light',
|
|
570
|
+
'dark',
|
|
571
|
+
'soft',
|
|
572
|
+
'bold',
|
|
573
|
+
'on-scheme',
|
|
569
574
|
];
|
|
570
575
|
const validSizes$1 = ['0', '1', '2', '3', '4', '5', '6', 'auto'];
|
|
571
576
|
const validTextSizes = ['1', '2', '3', '4', '5', '6', '7'];
|
|
@@ -602,7 +607,7 @@ const validDisplays = [
|
|
|
602
607
|
'inline-block',
|
|
603
608
|
'inline-flex',
|
|
604
609
|
];
|
|
605
|
-
const validVisibilities = ['hidden', 'sr-only'];
|
|
610
|
+
const validVisibilities = ['hidden', 'sr-only', 'invisible'];
|
|
606
611
|
const validFlexDirections = [
|
|
607
612
|
'row',
|
|
608
613
|
'row-reverse',
|
|
@@ -658,54 +663,93 @@ const validViewports = [
|
|
|
658
663
|
];
|
|
659
664
|
const useBulmaClasses = (props) => {
|
|
660
665
|
const { classPrefix } = useConfig();
|
|
661
|
-
const { color, backgroundColor, colorShade, m, mt, mr, mb, ml, mx, my, p, pt, pr, pb, pl, px, py, textSize, textAlign, textTransform, textWeight, fontFamily, display, visibility, flexDirection, flexWrap, justifyContent, alignContent, alignItems, alignSelf, flexGrow, flexShrink, float, overflow, overlay, interaction, radius, shadow, responsive, viewport, displayMobile, displayTablet, displayDesktop, displayWidescreen, displayFullhd, skeleton, ...rest } = props;
|
|
666
|
+
const { color, backgroundColor, colorShade, backgroundColorShade, m, mt, mr, mb, ml, mx, my, p, pt, pr, pb, pl, px, py, textSize, textAlign, textTransform, textWeight, fontFamily, display, visibility, flexDirection, flexWrap, justifyContent, alignContent, alignItems, alignSelf, flexGrow, flexShrink, float, overflow, overlay, interaction, radius, shadow, responsive, viewport, displayMobile, displayTablet, displayDesktop, displayWidescreen, displayFullhd, textSizeMobile, textSizeTablet, textSizeDesktop, textSizeWidescreen, textSizeFullhd, textAlignMobile, textAlignTablet, textAlignDesktop, textAlignWidescreen, textAlignFullhd, visibilityMobile, visibilityTablet, visibilityDesktop, visibilityWidescreen, visibilityFullhd, skeleton, clearfix, relative, ...rest } = props;
|
|
662
667
|
const bulmaHelperClasses = React.useMemo(() => {
|
|
663
668
|
const classes = [];
|
|
664
669
|
const addPrefixedClass = (className) => {
|
|
665
670
|
classes.push(classPrefix ? `${classPrefix}${className}` : className);
|
|
666
671
|
};
|
|
667
|
-
const addClass = (prefix, value, validValues) => {
|
|
668
|
-
if (value &&
|
|
669
|
-
const className = viewport && validViewports.includes(viewport)
|
|
672
|
+
const addClass = (prefix, value, validValues, supportsViewport = false) => {
|
|
673
|
+
if (value && validValues.includes(value)) {
|
|
674
|
+
const className = supportsViewport && viewport && validViewports.includes(viewport)
|
|
670
675
|
? `${prefix}-${value}-${viewport}`
|
|
671
676
|
: `${prefix}-${value}`;
|
|
672
677
|
addPrefixedClass(className);
|
|
673
678
|
}
|
|
674
679
|
};
|
|
680
|
+
const addClassNoViewport = (prefix, value, validValues) => {
|
|
681
|
+
if (value && (!validValues.length || validValues.includes(value))) {
|
|
682
|
+
addPrefixedClass(`${prefix}-${value}`);
|
|
683
|
+
}
|
|
684
|
+
};
|
|
675
685
|
const addColorClass = (prefix, value, shade) => {
|
|
676
686
|
if (!value || ![...validColors, 'inherit', 'current'].includes(value))
|
|
677
687
|
return;
|
|
678
688
|
if (shade && validColorShades.includes(shade)) {
|
|
679
|
-
const className = prefix
|
|
680
|
-
? `${prefix}-${value}-${shade}-${viewport}`
|
|
681
|
-
: `${prefix}-${value}-${shade}`;
|
|
689
|
+
const className = `${prefix}-${value}-${shade}`;
|
|
682
690
|
addPrefixedClass(className);
|
|
683
691
|
}
|
|
684
692
|
else {
|
|
685
|
-
addClass(prefix, value, [...validColors, 'inherit', 'current']);
|
|
693
|
+
addClass(prefix, value, [...validColors, 'inherit', 'current'], false);
|
|
686
694
|
}
|
|
687
695
|
};
|
|
688
696
|
addColorClass('has-text', color, colorShade);
|
|
689
|
-
addColorClass('has-background', backgroundColor,
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
addClass('is-size', textSize, validTextSizes);
|
|
705
|
-
addClass('has-text', textAlign, validAlignments$1);
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
697
|
+
addColorClass('has-background', backgroundColor, backgroundColorShade);
|
|
698
|
+
addClassNoViewport('m', m, validSizes$1);
|
|
699
|
+
addClassNoViewport('mt', mt, validSizes$1);
|
|
700
|
+
addClassNoViewport('mr', mr, validSizes$1);
|
|
701
|
+
addClassNoViewport('mb', mb, validSizes$1);
|
|
702
|
+
addClassNoViewport('ml', ml, validSizes$1);
|
|
703
|
+
addClassNoViewport('mx', mx, validSizes$1);
|
|
704
|
+
addClassNoViewport('my', my, validSizes$1);
|
|
705
|
+
addClassNoViewport('p', p, validSizes$1);
|
|
706
|
+
addClassNoViewport('pt', pt, validSizes$1);
|
|
707
|
+
addClassNoViewport('pr', pr, validSizes$1);
|
|
708
|
+
addClassNoViewport('pb', pb, validSizes$1);
|
|
709
|
+
addClassNoViewport('pl', pl, validSizes$1);
|
|
710
|
+
addClassNoViewport('px', px, validSizes$1);
|
|
711
|
+
addClassNoViewport('py', py, validSizes$1);
|
|
712
|
+
addClass('is-size', textSize, validTextSizes, true);
|
|
713
|
+
addClass('has-text', textAlign, validAlignments$1, true);
|
|
714
|
+
addClassNoViewport('is', textTransform, validTextTransforms);
|
|
715
|
+
addClassNoViewport('has-text-weight', textWeight, validTextWeights);
|
|
716
|
+
addClassNoViewport('is-family', fontFamily, validFontFamilies);
|
|
717
|
+
const addViewportSpecificTextSizeClass = (value, viewportSuffix) => {
|
|
718
|
+
if (value && validTextSizes.includes(value)) {
|
|
719
|
+
addPrefixedClass(`is-size-${value}${viewportSuffix}`);
|
|
720
|
+
}
|
|
721
|
+
};
|
|
722
|
+
addViewportSpecificTextSizeClass(textSizeMobile, '-mobile');
|
|
723
|
+
addViewportSpecificTextSizeClass(textSizeTablet, '-tablet');
|
|
724
|
+
addViewportSpecificTextSizeClass(textSizeDesktop, '-desktop');
|
|
725
|
+
addViewportSpecificTextSizeClass(textSizeWidescreen, '-widescreen');
|
|
726
|
+
addViewportSpecificTextSizeClass(textSizeFullhd, '-fullhd');
|
|
727
|
+
const addViewportSpecificTextAlignClass = (value, viewportSuffix) => {
|
|
728
|
+
if (value && validAlignments$1.includes(value)) {
|
|
729
|
+
addPrefixedClass(`has-text-${value}${viewportSuffix}`);
|
|
730
|
+
}
|
|
731
|
+
};
|
|
732
|
+
addViewportSpecificTextAlignClass(textAlignMobile, '-mobile');
|
|
733
|
+
addViewportSpecificTextAlignClass(textAlignTablet, '-tablet');
|
|
734
|
+
addViewportSpecificTextAlignClass(textAlignDesktop, '-desktop');
|
|
735
|
+
addViewportSpecificTextAlignClass(textAlignWidescreen, '-widescreen');
|
|
736
|
+
addViewportSpecificTextAlignClass(textAlignFullhd, '-fullhd');
|
|
737
|
+
const addViewportSpecificVisibilityClass = (value, viewportSuffix) => {
|
|
738
|
+
if (value === 'hidden') {
|
|
739
|
+
addPrefixedClass(`is-hidden${viewportSuffix}`);
|
|
740
|
+
}
|
|
741
|
+
else if (value === 'sr-only') {
|
|
742
|
+
addPrefixedClass(`is-sr-only${viewportSuffix}`);
|
|
743
|
+
}
|
|
744
|
+
else if (value === 'invisible') {
|
|
745
|
+
addPrefixedClass(`is-invisible${viewportSuffix}`);
|
|
746
|
+
}
|
|
747
|
+
};
|
|
748
|
+
addViewportSpecificVisibilityClass(visibilityMobile, '-mobile');
|
|
749
|
+
addViewportSpecificVisibilityClass(visibilityTablet, '-tablet');
|
|
750
|
+
addViewportSpecificVisibilityClass(visibilityDesktop, '-desktop');
|
|
751
|
+
addViewportSpecificVisibilityClass(visibilityWidescreen, '-widescreen');
|
|
752
|
+
addViewportSpecificVisibilityClass(visibilityFullhd, '-fullhd');
|
|
709
753
|
const addDisplayClass = (displayValue, viewportSuffix) => {
|
|
710
754
|
if (displayValue) {
|
|
711
755
|
if (displayValue === 'none') {
|
|
@@ -736,14 +780,14 @@ const useBulmaClasses = (props) => {
|
|
|
736
780
|
}
|
|
737
781
|
}
|
|
738
782
|
else {
|
|
739
|
-
addClass('is', display, [...validDisplays]);
|
|
783
|
+
addClass('is', display, [...validDisplays], true);
|
|
740
784
|
}
|
|
741
785
|
}
|
|
742
786
|
if (visibility) {
|
|
743
|
-
if (visibility === 'hidden' &&
|
|
787
|
+
if ((visibility === 'hidden' || visibility === 'invisible') &&
|
|
744
788
|
viewport &&
|
|
745
789
|
validViewports.includes(viewport)) {
|
|
746
|
-
addPrefixedClass(`is
|
|
790
|
+
addPrefixedClass(`is-${visibility}-${viewport}`);
|
|
747
791
|
}
|
|
748
792
|
else if (validVisibilities.includes(visibility)) {
|
|
749
793
|
addPrefixedClass(`is-${visibility}`);
|
|
@@ -762,45 +806,52 @@ const useBulmaClasses = (props) => {
|
|
|
762
806
|
displayFullhd === 'flex' ||
|
|
763
807
|
displayFullhd === 'inline-flex';
|
|
764
808
|
if (hasFlexDisplay) {
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
addClass('is-align-self', alignSelf, validAlignSelfs);
|
|
771
|
-
addClass('is-flex-grow', flexGrow, validFlexGrowShrink);
|
|
772
|
-
addClass('is-flex-shrink', flexShrink, validFlexGrowShrink);
|
|
809
|
+
addClassNoViewport('is-flex-direction', flexDirection, validFlexDirections);
|
|
810
|
+
addClassNoViewport('is-flex-wrap', flexWrap, validFlexWraps);
|
|
811
|
+
addClassNoViewport('is-justify-content', justifyContent, validJustifyContents);
|
|
812
|
+
addClassNoViewport('is-align-content', alignContent, validAlignContents);
|
|
813
|
+
addClassNoViewport('is-align-items', alignItems, validAlignItems);
|
|
773
814
|
}
|
|
815
|
+
addClassNoViewport('is-align-self', alignSelf, validAlignSelfs);
|
|
816
|
+
addClassNoViewport('is-flex-grow', flexGrow, validFlexGrowShrink);
|
|
817
|
+
addClassNoViewport('is-flex-shrink', flexShrink, validFlexGrowShrink);
|
|
774
818
|
if (float) {
|
|
775
|
-
|
|
819
|
+
addClassNoViewport('is-pulled', float, ['left', 'right']);
|
|
776
820
|
}
|
|
777
821
|
if (overflow) {
|
|
778
|
-
|
|
822
|
+
addClassNoViewport('is', overflow, ['clipped']);
|
|
779
823
|
}
|
|
780
824
|
if (overlay) {
|
|
781
825
|
addPrefixedClass('is-overlay');
|
|
782
826
|
}
|
|
783
827
|
if (interaction) {
|
|
784
|
-
|
|
828
|
+
addClassNoViewport('is', interaction, ['unselectable', 'clickable']);
|
|
785
829
|
}
|
|
786
830
|
if (radius) {
|
|
787
|
-
|
|
831
|
+
addClassNoViewport('is', radius, ['radiusless']);
|
|
788
832
|
}
|
|
789
833
|
if (shadow) {
|
|
790
|
-
|
|
834
|
+
addClassNoViewport('is', shadow, ['shadowless']);
|
|
791
835
|
}
|
|
792
836
|
if (responsive) {
|
|
793
|
-
|
|
837
|
+
addClassNoViewport('is', responsive, ['mobile', 'narrow']);
|
|
794
838
|
}
|
|
795
839
|
if (skeleton) {
|
|
796
840
|
addPrefixedClass('is-skeleton');
|
|
797
841
|
}
|
|
842
|
+
if (clearfix) {
|
|
843
|
+
addPrefixedClass('is-clearfix');
|
|
844
|
+
}
|
|
845
|
+
if (relative) {
|
|
846
|
+
addPrefixedClass('is-relative');
|
|
847
|
+
}
|
|
798
848
|
return classNames(classes);
|
|
799
849
|
}, [
|
|
800
850
|
classPrefix,
|
|
801
851
|
color,
|
|
802
852
|
backgroundColor,
|
|
803
853
|
colorShade,
|
|
854
|
+
backgroundColorShade,
|
|
804
855
|
m,
|
|
805
856
|
mt,
|
|
806
857
|
mr,
|
|
@@ -844,6 +895,23 @@ const useBulmaClasses = (props) => {
|
|
|
844
895
|
displayWidescreen,
|
|
845
896
|
displayFullhd,
|
|
846
897
|
skeleton,
|
|
898
|
+
clearfix,
|
|
899
|
+
relative,
|
|
900
|
+
textSizeMobile,
|
|
901
|
+
textSizeTablet,
|
|
902
|
+
textSizeDesktop,
|
|
903
|
+
textSizeWidescreen,
|
|
904
|
+
textSizeFullhd,
|
|
905
|
+
textAlignMobile,
|
|
906
|
+
textAlignTablet,
|
|
907
|
+
textAlignDesktop,
|
|
908
|
+
textAlignWidescreen,
|
|
909
|
+
textAlignFullhd,
|
|
910
|
+
visibilityMobile,
|
|
911
|
+
visibilityTablet,
|
|
912
|
+
visibilityDesktop,
|
|
913
|
+
visibilityWidescreen,
|
|
914
|
+
visibilityFullhd,
|
|
847
915
|
]);
|
|
848
916
|
return { bulmaHelperClasses, rest };
|
|
849
917
|
};
|
|
@@ -930,7 +998,19 @@ const renderFooter = (footer) => {
|
|
|
930
998
|
const items = Array.isArray(footer) ? footer : [footer];
|
|
931
999
|
return items.map((item, idx) => (jsxRuntimeExports.jsx("span", { className: "card-footer-item", children: item }, idx)));
|
|
932
1000
|
};
|
|
933
|
-
const
|
|
1001
|
+
const hasCompoundComponents = (children) => {
|
|
1002
|
+
return React.Children.toArray(children).some(child => {
|
|
1003
|
+
if (!React.isValidElement(child))
|
|
1004
|
+
return false;
|
|
1005
|
+
return (child.type === CardHeader ||
|
|
1006
|
+
child.type === CardContent ||
|
|
1007
|
+
child.type === CardImage ||
|
|
1008
|
+
child.type === CardFooter ||
|
|
1009
|
+
child.type === CardFooterItem ||
|
|
1010
|
+
child.type === CardHeaderIcon);
|
|
1011
|
+
});
|
|
1012
|
+
};
|
|
1013
|
+
const CardComponent = ({ className, children, textColor, bgColor, hasShadow = true, header, headerCentered, headerIcon, footer, image, imageAlt, ...props }) => {
|
|
934
1014
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
935
1015
|
color: textColor,
|
|
936
1016
|
backgroundColor: bgColor,
|
|
@@ -949,8 +1029,36 @@ const Card = ({ className, children, textColor, bgColor, hasShadow = true, heade
|
|
|
949
1029
|
};
|
|
950
1030
|
return (jsxRuntimeExports.jsxs("div", { className: cardClasses, ...rest, children: [renderHeader(header, headerIcon, headerCentered), image && (jsxRuntimeExports.jsx("div", { className: "card-image", children: typeof image === 'string' ? (jsxRuntimeExports.jsx("figure", { className: "image", children: jsxRuntimeExports.jsx("img", { src: image, alt: imageAlt !== null && imageAlt !== void 0 ? imageAlt : 'Card image' }) })) : (image) })), typeof children !== 'undefined' &&
|
|
951
1031
|
children !== null &&
|
|
952
|
-
children !== '' &&
|
|
953
|
-
}
|
|
1032
|
+
children !== '' &&
|
|
1033
|
+
!hasCompoundComponents(children) && (jsxRuntimeExports.jsx("div", { className: "card-content", children: children })), typeof children !== 'undefined' &&
|
|
1034
|
+
children !== null &&
|
|
1035
|
+
children !== '' &&
|
|
1036
|
+
hasCompoundComponents(children) &&
|
|
1037
|
+
children, footer && (jsxRuntimeExports.jsx("footer", { className: "card-footer", children: renderFooter(footer) }))] }));
|
|
1038
|
+
};
|
|
1039
|
+
const CardHeader = ({ className, children, centered, ...props }) => {
|
|
1040
|
+
const hasHeaderTitle = React.Children.toArray(children).some(child => React.isValidElement(child) &&
|
|
1041
|
+
typeof child.type === 'function' &&
|
|
1042
|
+
child.type === CardHeaderTitle);
|
|
1043
|
+
return (jsxRuntimeExports.jsx("header", { className: classNames('card-header', className), ...props, children: hasHeaderTitle ? (children) : (jsxRuntimeExports.jsx("div", { className: classNames('card-header-title', {
|
|
1044
|
+
'is-centered': centered,
|
|
1045
|
+
}), children: children })) }));
|
|
1046
|
+
};
|
|
1047
|
+
const CardHeaderTitle = ({ className, children, centered, ...props }) => (jsxRuntimeExports.jsx("div", { className: classNames('card-header-title', { 'is-centered': centered }, className), ...props, children: children }));
|
|
1048
|
+
const CardHeaderIcon = ({ className, children, ...props }) => (jsxRuntimeExports.jsx("button", { className: classNames('card-header-icon', className), "aria-label": props['aria-label'] || 'more options', ...props, children: children }));
|
|
1049
|
+
const CardImage = ({ className, children, ...props }) => (jsxRuntimeExports.jsx("div", { className: classNames('card-image', className), ...props, children: children }));
|
|
1050
|
+
const CardContent = ({ className, children, ...props }) => (jsxRuntimeExports.jsx("div", { className: classNames('card-content', className), ...props, children: children }));
|
|
1051
|
+
const CardFooter = ({ className, children, ...props }) => (jsxRuntimeExports.jsx("footer", { className: classNames('card-footer', className), ...props, children: children }));
|
|
1052
|
+
const CardFooterItem = ({ className, children, ...props }) => (jsxRuntimeExports.jsx("span", { className: classNames('card-footer-item', className), ...props, children: children }));
|
|
1053
|
+
const CardWithSubComponents = CardComponent;
|
|
1054
|
+
const CardHeaderWithTitle = CardHeader;
|
|
1055
|
+
CardHeaderWithTitle.Title = CardHeaderTitle;
|
|
1056
|
+
CardHeaderWithTitle.Icon = CardHeaderIcon;
|
|
1057
|
+
CardWithSubComponents.Header = CardHeaderWithTitle;
|
|
1058
|
+
CardWithSubComponents.Image = CardImage;
|
|
1059
|
+
CardWithSubComponents.Content = CardContent;
|
|
1060
|
+
CardWithSubComponents.Footer = CardFooter;
|
|
1061
|
+
CardWithSubComponents.FooterItem = CardFooterItem;
|
|
954
1062
|
const __test_exports__ = { renderFooter };
|
|
955
1063
|
|
|
956
1064
|
const isBrowser = (win, doc) => typeof win !== 'undefined' && typeof doc !== 'undefined';
|
|
@@ -1057,7 +1165,7 @@ const Menu = Object.assign(MenuComponent, {
|
|
|
1057
1165
|
Item: MenuItem,
|
|
1058
1166
|
});
|
|
1059
1167
|
|
|
1060
|
-
const
|
|
1168
|
+
const MessageComponent = ({ className, title, textColor, color, bgColor, onClose, children, ...props }) => {
|
|
1061
1169
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
1062
1170
|
color: textColor,
|
|
1063
1171
|
backgroundColor: bgColor,
|
|
@@ -1070,6 +1178,11 @@ const Message = ({ className, title, textColor, color, bgColor, onClose, childre
|
|
|
1070
1178
|
const messageClasses = classNames(bulmaClasses, bulmaHelperClasses, className);
|
|
1071
1179
|
return (jsxRuntimeExports.jsxs("article", { className: messageClasses, ...rest, "data-testid": "message", children: [(title || onClose) && (jsxRuntimeExports.jsxs("div", { className: "message-header", children: [title && jsxRuntimeExports.jsx("span", { children: title }), onClose && (jsxRuntimeExports.jsx("button", { className: deleteClass, "aria-label": "delete", onClick: onClose, type: "button", "data-testid": "message-close" }))] })), children && (jsxRuntimeExports.jsx("div", { className: "message-body", "data-testid": "message-body", children: children }))] }));
|
|
1072
1180
|
};
|
|
1181
|
+
const MessageHeader = ({ className, children, ...props }) => (jsxRuntimeExports.jsx("div", { className: classNames('message-header', className), ...props, children: children }));
|
|
1182
|
+
const MessageBody = ({ className, children, ...props }) => (jsxRuntimeExports.jsx("div", { className: classNames('message-body', className), ...props, children: children }));
|
|
1183
|
+
const MessageWithSubComponents = MessageComponent;
|
|
1184
|
+
MessageWithSubComponents.Header = MessageHeader;
|
|
1185
|
+
MessageWithSubComponents.Body = MessageBody;
|
|
1073
1186
|
|
|
1074
1187
|
const Modal = ({ active = false, onClose, className, textColor, bgColor, modalCardTitle, modalCardFoot, type, children, ...props }) => {
|
|
1075
1188
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
@@ -1388,45 +1501,130 @@ const Delete = ({ className, textColor, bgColor, onClick, size, ariaLabel = 'Clo
|
|
|
1388
1501
|
return (jsxRuntimeExports.jsx("button", { className: classes, onClick: onClick, "aria-label": ariaLabel, disabled: disabled, type: "button", ...rest }));
|
|
1389
1502
|
};
|
|
1390
1503
|
|
|
1391
|
-
function getIconClasses(library, name,
|
|
1504
|
+
function getIconClasses(library, name, variant, features) {
|
|
1392
1505
|
let baseClass = '';
|
|
1393
1506
|
let iconClass = '';
|
|
1394
|
-
let
|
|
1395
|
-
?
|
|
1396
|
-
:
|
|
1397
|
-
? [
|
|
1507
|
+
let featureList = Array.isArray(features)
|
|
1508
|
+
? features
|
|
1509
|
+
: features
|
|
1510
|
+
? [features]
|
|
1398
1511
|
: [];
|
|
1399
1512
|
switch (library) {
|
|
1400
1513
|
case 'fa': {
|
|
1401
|
-
const
|
|
1514
|
+
const styleMap = {
|
|
1515
|
+
solid: 'fas',
|
|
1516
|
+
regular: 'far',
|
|
1517
|
+
brands: 'fab',
|
|
1518
|
+
light: 'fal',
|
|
1519
|
+
duotone: 'fad',
|
|
1520
|
+
thin: 'fat',
|
|
1521
|
+
};
|
|
1522
|
+
const faStyle = variant ? styleMap[variant] || variant : 'fas';
|
|
1402
1523
|
baseClass = faStyle;
|
|
1403
1524
|
iconClass = `fa-${name}`;
|
|
1404
|
-
|
|
1405
|
-
return [baseClass, iconClass, ...features].join(' ');
|
|
1525
|
+
return [baseClass, iconClass, ...featureList].join(' ');
|
|
1406
1526
|
}
|
|
1407
1527
|
case 'mdi':
|
|
1408
1528
|
baseClass = 'mdi';
|
|
1409
1529
|
iconClass = `mdi-${name}`;
|
|
1410
|
-
return [baseClass, iconClass, ...
|
|
1411
|
-
case '
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1530
|
+
return [baseClass, iconClass, ...featureList].join(' ');
|
|
1531
|
+
case 'material-icons': {
|
|
1532
|
+
const styleVariants = {
|
|
1533
|
+
filled: 'material-icons',
|
|
1534
|
+
outlined: 'material-icons-outlined',
|
|
1535
|
+
round: 'material-icons-round',
|
|
1536
|
+
sharp: 'material-icons-sharp',
|
|
1537
|
+
};
|
|
1538
|
+
baseClass = variant
|
|
1539
|
+
? styleVariants[variant] || `material-icons-${variant}`
|
|
1540
|
+
: 'material-icons';
|
|
1541
|
+
return [baseClass, ...featureList].join(' ');
|
|
1542
|
+
}
|
|
1543
|
+
case 'material-symbols': {
|
|
1544
|
+
const styleVariants = {
|
|
1545
|
+
outlined: 'material-symbols-outlined',
|
|
1546
|
+
rounded: 'material-symbols-rounded',
|
|
1547
|
+
sharp: 'material-symbols-sharp',
|
|
1548
|
+
};
|
|
1549
|
+
baseClass = variant
|
|
1550
|
+
? styleVariants[variant] || `material-symbols-${variant}`
|
|
1551
|
+
: 'material-symbols-outlined';
|
|
1552
|
+
return [baseClass, ...featureList].join(' ');
|
|
1553
|
+
}
|
|
1415
1554
|
default:
|
|
1416
|
-
return [name, ...
|
|
1555
|
+
return [name, ...featureList].join(' ');
|
|
1417
1556
|
}
|
|
1418
1557
|
}
|
|
1419
|
-
const Icon = ({ className, textColor, bgColor, name, library = 'fa', libraryFeatures, size, ariaLabel = 'icon', style, ...
|
|
1558
|
+
const Icon = ({ className, textColor, bgColor, name, library = 'fa', variant, features, libraryFeatures, size, ariaLabel = 'icon', style, ...restProps }) => {
|
|
1420
1559
|
const { bulmaHelperClasses, rest } = useBulmaClasses({
|
|
1421
1560
|
color: textColor,
|
|
1422
1561
|
backgroundColor: bgColor,
|
|
1423
|
-
...
|
|
1562
|
+
...restProps,
|
|
1424
1563
|
});
|
|
1425
1564
|
const bulmaClasses = usePrefixedClassNames('icon', {
|
|
1426
1565
|
[`is-${size}`]: size,
|
|
1427
1566
|
});
|
|
1428
1567
|
const iconContainerClasses = classNames(bulmaClasses, bulmaHelperClasses, className);
|
|
1429
|
-
|
|
1568
|
+
let finalVariant = variant;
|
|
1569
|
+
let finalFeatures = features;
|
|
1570
|
+
if (libraryFeatures && !variant && !features) {
|
|
1571
|
+
const legacyFeatures = Array.isArray(libraryFeatures)
|
|
1572
|
+
? libraryFeatures
|
|
1573
|
+
: [libraryFeatures];
|
|
1574
|
+
if (library === 'fa') {
|
|
1575
|
+
const faStyle = legacyFeatures.find(f => [
|
|
1576
|
+
'fas',
|
|
1577
|
+
'far',
|
|
1578
|
+
'fab',
|
|
1579
|
+
'fal',
|
|
1580
|
+
'fad',
|
|
1581
|
+
'fat',
|
|
1582
|
+
'solid',
|
|
1583
|
+
'regular',
|
|
1584
|
+
'brands',
|
|
1585
|
+
'light',
|
|
1586
|
+
'duotone',
|
|
1587
|
+
'thin',
|
|
1588
|
+
].includes(f));
|
|
1589
|
+
if (faStyle) {
|
|
1590
|
+
finalVariant = faStyle;
|
|
1591
|
+
finalFeatures = legacyFeatures.filter(f => f !== faStyle);
|
|
1592
|
+
}
|
|
1593
|
+
else {
|
|
1594
|
+
finalFeatures = legacyFeatures;
|
|
1595
|
+
}
|
|
1596
|
+
}
|
|
1597
|
+
else if (library === 'material-icons' || library === 'material-symbols') {
|
|
1598
|
+
const styleVariants = library === 'material-icons'
|
|
1599
|
+
? ['filled', 'outlined', 'round', 'sharp']
|
|
1600
|
+
: ['outlined', 'rounded', 'sharp'];
|
|
1601
|
+
const styleVariant = legacyFeatures.find(f => styleVariants.includes(f));
|
|
1602
|
+
if (styleVariant) {
|
|
1603
|
+
finalVariant = styleVariant;
|
|
1604
|
+
finalFeatures = legacyFeatures.filter(f => f !== styleVariant);
|
|
1605
|
+
}
|
|
1606
|
+
else {
|
|
1607
|
+
finalFeatures = legacyFeatures;
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1610
|
+
else {
|
|
1611
|
+
finalFeatures = legacyFeatures;
|
|
1612
|
+
}
|
|
1613
|
+
}
|
|
1614
|
+
if (library === 'ion') {
|
|
1615
|
+
let ionName = name;
|
|
1616
|
+
if (finalVariant === 'outline') {
|
|
1617
|
+
ionName = `${name}-outline`;
|
|
1618
|
+
}
|
|
1619
|
+
else if (finalVariant === 'sharp') {
|
|
1620
|
+
ionName = `${name}-sharp`;
|
|
1621
|
+
}
|
|
1622
|
+
return (jsxRuntimeExports.jsx("span", { className: iconContainerClasses, "aria-label": ariaLabel, style: style, ...rest, children: jsxRuntimeExports.jsx("ion-icon", { name: ionName }) }));
|
|
1623
|
+
}
|
|
1624
|
+
const iClasses = getIconClasses(library, name, finalVariant, finalFeatures);
|
|
1625
|
+
if (library === 'material-icons' || library === 'material-symbols') {
|
|
1626
|
+
return (jsxRuntimeExports.jsx("span", { className: iconContainerClasses, "aria-label": ariaLabel, style: style, ...rest, children: jsxRuntimeExports.jsx("i", { className: iClasses, children: name }) }));
|
|
1627
|
+
}
|
|
1430
1628
|
return (jsxRuntimeExports.jsx("span", { className: iconContainerClasses, "aria-label": ariaLabel, style: style, ...rest, children: jsxRuntimeExports.jsx("i", { className: iClasses }) }));
|
|
1431
1629
|
};
|
|
1432
1630
|
|
|
@@ -2744,7 +2942,7 @@ exports.Box = Box;
|
|
|
2744
2942
|
exports.Breadcrumb = Breadcrumb;
|
|
2745
2943
|
exports.Button = Button;
|
|
2746
2944
|
exports.Buttons = Buttons;
|
|
2747
|
-
exports.Card =
|
|
2945
|
+
exports.Card = CardWithSubComponents;
|
|
2748
2946
|
exports.Cell = Cell;
|
|
2749
2947
|
exports.Checkbox = Checkbox;
|
|
2750
2948
|
exports.Checkboxes = Checkboxes;
|
|
@@ -2784,7 +2982,7 @@ exports.Menu = Menu;
|
|
|
2784
2982
|
exports.MenuItem = MenuItem;
|
|
2785
2983
|
exports.MenuLabel = MenuLabel;
|
|
2786
2984
|
exports.MenuList = MenuList;
|
|
2787
|
-
exports.Message =
|
|
2985
|
+
exports.Message = MessageWithSubComponents;
|
|
2788
2986
|
exports.Modal = Modal;
|
|
2789
2987
|
exports.Navbar = Navbar;
|
|
2790
2988
|
exports.NavbarBrand = NavbarBrand;
|