@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 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 && (!validValues.length || validValues.includes(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 === 'has-text' && viewport && validViewports.includes(viewport)
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, colorShade);
690
- addClass('m', m, validSizes$1);
691
- addClass('mt', mt, validSizes$1);
692
- addClass('mr', mr, validSizes$1);
693
- addClass('mb', mb, validSizes$1);
694
- addClass('ml', ml, validSizes$1);
695
- addClass('mx', mx, validSizes$1);
696
- addClass('my', my, validSizes$1);
697
- addClass('p', p, validSizes$1);
698
- addClass('pt', pt, validSizes$1);
699
- addClass('pr', pr, validSizes$1);
700
- addClass('pb', pb, validSizes$1);
701
- addClass('pl', pl, validSizes$1);
702
- addClass('px', px, validSizes$1);
703
- addClass('py', py, validSizes$1);
704
- addClass('is-size', textSize, validTextSizes);
705
- addClass('has-text', textAlign, validAlignments$1);
706
- addClass('is', textTransform, validTextTransforms);
707
- addClass('has-text-weight', textWeight, validTextWeights);
708
- addClass('is-family', fontFamily, validFontFamilies);
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-hidden-${viewport}`);
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
- addClass('is-flex-direction', flexDirection, validFlexDirections);
766
- addClass('is-flex-wrap', flexWrap, validFlexWraps);
767
- addClass('is-justify-content', justifyContent, validJustifyContents);
768
- addClass('is-align-content', alignContent, validAlignContents);
769
- addClass('is-align-items', alignItems, validAlignItems);
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
- addClass('is-pulled', float, ['left', 'right']);
819
+ addClassNoViewport('is-pulled', float, ['left', 'right']);
776
820
  }
777
821
  if (overflow) {
778
- addClass('is', overflow, ['clipped']);
822
+ addClassNoViewport('is', overflow, ['clipped']);
779
823
  }
780
824
  if (overlay) {
781
825
  addPrefixedClass('is-overlay');
782
826
  }
783
827
  if (interaction) {
784
- addClass('is', interaction, ['unselectable', 'clickable']);
828
+ addClassNoViewport('is', interaction, ['unselectable', 'clickable']);
785
829
  }
786
830
  if (radius) {
787
- addClass('is', radius, ['radiusless']);
831
+ addClassNoViewport('is', radius, ['radiusless']);
788
832
  }
789
833
  if (shadow) {
790
- addClass('is', shadow, ['shadowless']);
834
+ addClassNoViewport('is', shadow, ['shadowless']);
791
835
  }
792
836
  if (responsive) {
793
- addClass('is', responsive, ['mobile', 'narrow']);
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 Card = ({ className, children, textColor, bgColor, hasShadow = true, header, headerCentered, headerIcon, footer, image, imageAlt, ...props }) => {
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 !== '' && jsxRuntimeExports.jsx("div", { className: "card-content", children: children }), footer && (jsxRuntimeExports.jsx("footer", { className: "card-footer", children: renderFooter(footer) }))] }));
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 Message = ({ className, title, textColor, color, bgColor, onClose, children, ...props }) => {
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, libraryFeatures) {
1504
+ function getIconClasses(library, name, variant, features) {
1392
1505
  let baseClass = '';
1393
1506
  let iconClass = '';
1394
- let features = Array.isArray(libraryFeatures)
1395
- ? libraryFeatures
1396
- : libraryFeatures
1397
- ? [libraryFeatures]
1507
+ let featureList = Array.isArray(features)
1508
+ ? features
1509
+ : features
1510
+ ? [features]
1398
1511
  : [];
1399
1512
  switch (library) {
1400
1513
  case 'fa': {
1401
- const faStyle = features.find(f => ['fas', 'far', 'fab', 'fal', 'fad', 'fat'].includes(f)) || 'fas';
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
- features = features.filter(f => f !== faStyle);
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, ...features].join(' ');
1411
- case 'ion':
1412
- baseClass = 'ion';
1413
- iconClass = `ion-${name}`;
1414
- return [baseClass, iconClass, ...features].join(' ');
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, ...features].join(' ');
1555
+ return [name, ...featureList].join(' ');
1417
1556
  }
1418
1557
  }
1419
- const Icon = ({ className, textColor, bgColor, name, library = 'fa', libraryFeatures, size, ariaLabel = 'icon', style, ...props }) => {
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
- ...props,
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
- const iClasses = getIconClasses(library, name, libraryFeatures);
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 = 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 = Message;
2985
+ exports.Message = MessageWithSubComponents;
2788
2986
  exports.Modal = Modal;
2789
2987
  exports.Navbar = Navbar;
2790
2988
  exports.NavbarBrand = NavbarBrand;