bestax-mcp 1.1.1 → 1.1.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/data/catalog.json CHANGED
@@ -1286,6 +1286,28 @@
1286
1286
  "--bulma-control-radius": "Control",
1287
1287
  "--bulma-control-radius-small": "Control",
1288
1288
  "--bulma-control-size": "Control",
1289
+ "--bulma-dateinput-cell-color": "DateTimeInput",
1290
+ "--bulma-dateinput-cell-disabled-color": "DateTimeInput",
1291
+ "--bulma-dateinput-cell-hover-bg": "DateTimeInput",
1292
+ "--bulma-dateinput-cell-other-month-color": "DateTimeInput",
1293
+ "--bulma-dateinput-cell-radius": "DateTimeInput",
1294
+ "--bulma-dateinput-cell-selected-bg": "DateTimeInput",
1295
+ "--bulma-dateinput-cell-selected-color": "DateTimeInput",
1296
+ "--bulma-dateinput-cell-size": "DateTimeInput",
1297
+ "--bulma-dateinput-cell-today-color": "DateTimeInput",
1298
+ "--bulma-dateinput-day-name-color": "DateTimeInput",
1299
+ "--bulma-dateinput-day-name-size": "DateTimeInput",
1300
+ "--bulma-dateinput-header-padding": "DateTimeInput",
1301
+ "--bulma-dateinput-min-width": "DateTimeInput",
1302
+ "--bulma-dateinput-nav-button-size": "DateTimeInput",
1303
+ "--bulma-datetimeinput-gap": "DateTimeInput",
1304
+ "--bulma-datetimeinput-time-card-background": "DateTimeInput",
1305
+ "--bulma-datetimeinput-time-card-border-color": "DateTimeInput",
1306
+ "--bulma-datetimeinput-time-card-padding": "DateTimeInput",
1307
+ "--bulma-datetimeinput-time-card-radius": "DateTimeInput",
1308
+ "--bulma-datetimeinput-time-card-shadow": "DateTimeInput",
1309
+ "--bulma-datetimeinput-time-overlay-background": "DateTimeInput",
1310
+ "--bulma-datetimeinput-time-overlay-blur": "DateTimeInput",
1289
1311
  "--bulma-delete-background-alpha": "Delete",
1290
1312
  "--bulma-delete-background-l": "Delete",
1291
1313
  "--bulma-delete-color": "Delete",
@@ -1814,6 +1836,7 @@
1814
1836
  "--bulma-tabs-boxed-link-hover-background-color": "Tabs",
1815
1837
  "--bulma-tabs-boxed-link-hover-border-bottom-color": "Tabs",
1816
1838
  "--bulma-tabs-boxed-link-radius": "Tabs",
1839
+ "--bulma-tabs-content-padding": "Tabs",
1817
1840
  "--bulma-tabs-link-active-border-bottom-color": "Tabs",
1818
1841
  "--bulma-tabs-link-active-color": "Tabs",
1819
1842
  "--bulma-tabs-link-color": "Tabs",
@@ -1829,6 +1852,9 @@
1829
1852
  "--bulma-tabs-toggle-link-hover-background-color": "Tabs",
1830
1853
  "--bulma-tabs-toggle-link-hover-border-color": "Tabs",
1831
1854
  "--bulma-tabs-toggle-link-radius": "Tabs",
1855
+ "--bulma-tabs-vertical-border-color": "Tabs",
1856
+ "--bulma-tabs-vertical-border-width": "Tabs",
1857
+ "--bulma-tabs-vertical-min-width": "Tabs",
1832
1858
  "--bulma-tag-active-background-l-delta": "Tag",
1833
1859
  "--bulma-tag-background-l": "Tag",
1834
1860
  "--bulma-tag-background-l-delta": "Tag",
@@ -1850,6 +1876,20 @@
1850
1876
  "--bulma-textarea-max-height": "TextArea",
1851
1877
  "--bulma-textarea-min-height": "TextArea",
1852
1878
  "--bulma-textarea-padding": "TextArea",
1879
+ "--bulma-timeinput-footer-padding": "TimeInput",
1880
+ "--bulma-timeinput-separator-color": "TimeInput",
1881
+ "--bulma-timeinput-separator-size": "TimeInput",
1882
+ "--bulma-timeinput-wheel-bg": "TimeInput",
1883
+ "--bulma-timeinput-wheel-color": "TimeInput",
1884
+ "--bulma-timeinput-wheel-dim-color": "TimeInput",
1885
+ "--bulma-timeinput-wheel-gap": "TimeInput",
1886
+ "--bulma-timeinput-wheel-hover-bg": "TimeInput",
1887
+ "--bulma-timeinput-wheel-item-height": "TimeInput",
1888
+ "--bulma-timeinput-wheel-mask": "TimeInput",
1889
+ "--bulma-timeinput-wheel-radius": "TimeInput",
1890
+ "--bulma-timeinput-wheel-selected-bg": "TimeInput",
1891
+ "--bulma-timeinput-wheel-selected-color": "TimeInput",
1892
+ "--bulma-timeinput-wheel-width": "TimeInput",
1853
1893
  "--bulma-title-color": "Title",
1854
1894
  "--bulma-title-family": "Title",
1855
1895
  "--bulma-title-line-height": "Title",
@@ -688,6 +688,90 @@
688
688
  }
689
689
  ],
690
690
  "cssVars": [
691
+ {
692
+ "css": "--bulma-dateinput-min-width",
693
+ "sass": "$dateinput-min-width",
694
+ "default": "16rem",
695
+ "scope": "element"
696
+ },
697
+ {
698
+ "css": "--bulma-dateinput-cell-size",
699
+ "sass": "$dateinput-cell-size",
700
+ "default": "2.25rem",
701
+ "scope": "element"
702
+ },
703
+ {
704
+ "css": "--bulma-dateinput-cell-radius",
705
+ "sass": "$dateinput-cell-radius",
706
+ "default": "var(--bulma-radius-small)",
707
+ "scope": "element"
708
+ },
709
+ {
710
+ "css": "--bulma-dateinput-cell-color",
711
+ "sass": "$dateinput-cell-color",
712
+ "default": "var(--bulma-text)",
713
+ "scope": "element"
714
+ },
715
+ {
716
+ "css": "--bulma-dateinput-cell-hover-bg",
717
+ "sass": "$dateinput-cell-hover-bg",
718
+ "default": "hsla(0, 0%, 50%, 0.13)",
719
+ "scope": "element"
720
+ },
721
+ {
722
+ "css": "--bulma-dateinput-cell-selected-bg",
723
+ "sass": "$dateinput-cell-selected-bg",
724
+ "default": "var(--bulma-primary)",
725
+ "scope": "element"
726
+ },
727
+ {
728
+ "css": "--bulma-dateinput-cell-selected-color",
729
+ "sass": "$dateinput-cell-selected-color",
730
+ "default": "var(--bulma-primary-invert)",
731
+ "scope": "element"
732
+ },
733
+ {
734
+ "css": "--bulma-dateinput-cell-today-color",
735
+ "sass": "$dateinput-cell-today-color",
736
+ "default": "var(--bulma-primary)",
737
+ "scope": "element"
738
+ },
739
+ {
740
+ "css": "--bulma-dateinput-cell-disabled-color",
741
+ "sass": "$dateinput-cell-disabled-color",
742
+ "default": "var(--bulma-text-weak)",
743
+ "scope": "element"
744
+ },
745
+ {
746
+ "css": "--bulma-dateinput-cell-other-month-color",
747
+ "sass": "$dateinput-cell-other-month-color",
748
+ "default": "var(--bulma-text-weak)",
749
+ "scope": "element"
750
+ },
751
+ {
752
+ "css": "--bulma-dateinput-header-padding",
753
+ "sass": "$dateinput-header-padding",
754
+ "default": "0.5rem 0",
755
+ "scope": "element"
756
+ },
757
+ {
758
+ "css": "--bulma-dateinput-day-name-color",
759
+ "sass": "$dateinput-day-name-color",
760
+ "default": "var(--bulma-text-weak)",
761
+ "scope": "element"
762
+ },
763
+ {
764
+ "css": "--bulma-dateinput-day-name-size",
765
+ "sass": "$dateinput-day-name-size",
766
+ "default": "var(--bulma-size-7)",
767
+ "scope": "element"
768
+ },
769
+ {
770
+ "css": "--bulma-dateinput-nav-button-size",
771
+ "sass": "$dateinput-nav-button-size",
772
+ "default": "1.75rem",
773
+ "scope": "element"
774
+ },
691
775
  {
692
776
  "css": "--bulma-input-h",
693
777
  "sass": "$input-h",
@@ -768,6 +768,222 @@
768
768
  }
769
769
  ],
770
770
  "cssVars": [
771
+ {
772
+ "css": "--bulma-dateinput-min-width",
773
+ "sass": "$dateinput-min-width",
774
+ "default": "16rem",
775
+ "scope": "element"
776
+ },
777
+ {
778
+ "css": "--bulma-dateinput-cell-size",
779
+ "sass": "$dateinput-cell-size",
780
+ "default": "2.25rem",
781
+ "scope": "element"
782
+ },
783
+ {
784
+ "css": "--bulma-dateinput-cell-radius",
785
+ "sass": "$dateinput-cell-radius",
786
+ "default": "var(--bulma-radius-small)",
787
+ "scope": "element"
788
+ },
789
+ {
790
+ "css": "--bulma-dateinput-cell-color",
791
+ "sass": "$dateinput-cell-color",
792
+ "default": "var(--bulma-text)",
793
+ "scope": "element"
794
+ },
795
+ {
796
+ "css": "--bulma-dateinput-cell-hover-bg",
797
+ "sass": "$dateinput-cell-hover-bg",
798
+ "default": "hsla(0, 0%, 50%, 0.13)",
799
+ "scope": "element"
800
+ },
801
+ {
802
+ "css": "--bulma-dateinput-cell-selected-bg",
803
+ "sass": "$dateinput-cell-selected-bg",
804
+ "default": "var(--bulma-primary)",
805
+ "scope": "element"
806
+ },
807
+ {
808
+ "css": "--bulma-dateinput-cell-selected-color",
809
+ "sass": "$dateinput-cell-selected-color",
810
+ "default": "var(--bulma-primary-invert)",
811
+ "scope": "element"
812
+ },
813
+ {
814
+ "css": "--bulma-dateinput-cell-today-color",
815
+ "sass": "$dateinput-cell-today-color",
816
+ "default": "var(--bulma-primary)",
817
+ "scope": "element"
818
+ },
819
+ {
820
+ "css": "--bulma-dateinput-cell-disabled-color",
821
+ "sass": "$dateinput-cell-disabled-color",
822
+ "default": "var(--bulma-text-weak)",
823
+ "scope": "element"
824
+ },
825
+ {
826
+ "css": "--bulma-dateinput-cell-other-month-color",
827
+ "sass": "$dateinput-cell-other-month-color",
828
+ "default": "var(--bulma-text-weak)",
829
+ "scope": "element"
830
+ },
831
+ {
832
+ "css": "--bulma-dateinput-header-padding",
833
+ "sass": "$dateinput-header-padding",
834
+ "default": "0.5rem 0",
835
+ "scope": "element"
836
+ },
837
+ {
838
+ "css": "--bulma-dateinput-day-name-color",
839
+ "sass": "$dateinput-day-name-color",
840
+ "default": "var(--bulma-text-weak)",
841
+ "scope": "element"
842
+ },
843
+ {
844
+ "css": "--bulma-dateinput-day-name-size",
845
+ "sass": "$dateinput-day-name-size",
846
+ "default": "var(--bulma-size-7)",
847
+ "scope": "element"
848
+ },
849
+ {
850
+ "css": "--bulma-dateinput-nav-button-size",
851
+ "sass": "$dateinput-nav-button-size",
852
+ "default": "1.75rem",
853
+ "scope": "element"
854
+ },
855
+ {
856
+ "css": "--bulma-datetimeinput-gap",
857
+ "sass": "$datetimeinput-gap",
858
+ "default": "0.75rem",
859
+ "scope": "element"
860
+ },
861
+ {
862
+ "css": "--bulma-datetimeinput-time-card-background",
863
+ "sass": "$datetimeinput-time-card-background",
864
+ "default": "var(--bulma-scheme-main)",
865
+ "scope": "element"
866
+ },
867
+ {
868
+ "css": "--bulma-datetimeinput-time-card-border-color",
869
+ "sass": "$datetimeinput-time-card-border-color",
870
+ "default": "var(--bulma-border)",
871
+ "scope": "element"
872
+ },
873
+ {
874
+ "css": "--bulma-datetimeinput-time-card-radius",
875
+ "sass": "$datetimeinput-time-card-radius",
876
+ "default": "var(--bulma-radius-large)",
877
+ "scope": "element"
878
+ },
879
+ {
880
+ "css": "--bulma-datetimeinput-time-card-shadow",
881
+ "sass": "$datetimeinput-time-card-shadow",
882
+ "default": "0 8px 24px hsla(0, 0%, 0%, 0.18)",
883
+ "scope": "element"
884
+ },
885
+ {
886
+ "css": "--bulma-datetimeinput-time-card-padding",
887
+ "sass": "$datetimeinput-time-card-padding",
888
+ "default": "0.5rem 0.75rem",
889
+ "scope": "element"
890
+ },
891
+ {
892
+ "css": "--bulma-datetimeinput-time-overlay-background",
893
+ "sass": "$datetimeinput-time-overlay-background",
894
+ "default": "hsla(var(--bulma-scheme-h), var(--bulma-scheme-s), var(--bulma-scheme-main-l), 0.55)",
895
+ "scope": "element"
896
+ },
897
+ {
898
+ "css": "--bulma-datetimeinput-time-overlay-blur",
899
+ "sass": "$datetimeinput-time-overlay-blur",
900
+ "default": "3px",
901
+ "scope": "element"
902
+ },
903
+ {
904
+ "css": "--bulma-timeinput-wheel-width",
905
+ "sass": "$timeinput-wheel-width",
906
+ "default": "3rem",
907
+ "scope": "element"
908
+ },
909
+ {
910
+ "css": "--bulma-timeinput-wheel-item-height",
911
+ "sass": "$timeinput-wheel-item-height",
912
+ "default": "2rem",
913
+ "scope": "element"
914
+ },
915
+ {
916
+ "css": "--bulma-timeinput-wheel-gap",
917
+ "sass": "$timeinput-wheel-gap",
918
+ "default": "0.4rem",
919
+ "scope": "element"
920
+ },
921
+ {
922
+ "css": "--bulma-timeinput-wheel-bg",
923
+ "sass": "$timeinput-wheel-bg",
924
+ "default": "var(--bulma-scheme-main)",
925
+ "scope": "element"
926
+ },
927
+ {
928
+ "css": "--bulma-timeinput-wheel-color",
929
+ "sass": "$timeinput-wheel-color",
930
+ "default": "var(--bulma-text)",
931
+ "scope": "element"
932
+ },
933
+ {
934
+ "css": "--bulma-timeinput-wheel-dim-color",
935
+ "sass": "$timeinput-wheel-dim-color",
936
+ "default": "var(--bulma-text-weak)",
937
+ "scope": "element"
938
+ },
939
+ {
940
+ "css": "--bulma-timeinput-wheel-hover-bg",
941
+ "sass": "$timeinput-wheel-hover-bg",
942
+ "default": "hsla(0, 0%, 50%, 0.13)",
943
+ "scope": "element"
944
+ },
945
+ {
946
+ "css": "--bulma-timeinput-wheel-selected-bg",
947
+ "sass": "$timeinput-wheel-selected-bg",
948
+ "default": "var(--bulma-primary)",
949
+ "scope": "element"
950
+ },
951
+ {
952
+ "css": "--bulma-timeinput-wheel-selected-color",
953
+ "sass": "$timeinput-wheel-selected-color",
954
+ "default": "var(--bulma-primary-invert)",
955
+ "scope": "element"
956
+ },
957
+ {
958
+ "css": "--bulma-timeinput-wheel-radius",
959
+ "sass": "$timeinput-wheel-radius",
960
+ "default": "var(--bulma-radius)",
961
+ "scope": "element"
962
+ },
963
+ {
964
+ "css": "--bulma-timeinput-wheel-mask",
965
+ "sass": "$timeinput-wheel-mask",
966
+ "default": "linear-gradient(180deg, transparent 0, black 18%, black 82%, transparent 100%)",
967
+ "scope": "element"
968
+ },
969
+ {
970
+ "css": "--bulma-timeinput-separator-color",
971
+ "sass": "$timeinput-separator-color",
972
+ "default": "var(--bulma-text-weak)",
973
+ "scope": "element"
974
+ },
975
+ {
976
+ "css": "--bulma-timeinput-separator-size",
977
+ "sass": "$timeinput-separator-size",
978
+ "default": "var(--bulma-size-5)",
979
+ "scope": "element"
980
+ },
981
+ {
982
+ "css": "--bulma-timeinput-footer-padding",
983
+ "sass": "$timeinput-footer-padding",
984
+ "default": "0.5rem 0 0",
985
+ "scope": "element"
986
+ },
771
987
  {
772
988
  "css": "--bulma-input-h",
773
989
  "sass": "$input-h",
@@ -464,6 +464,30 @@
464
464
  }
465
465
  ],
466
466
  "cssVars": [
467
+ {
468
+ "css": "--bulma-tabs-vertical-min-width",
469
+ "sass": "$tabs-vertical-min-width",
470
+ "default": "200px",
471
+ "scope": "element"
472
+ },
473
+ {
474
+ "css": "--bulma-tabs-vertical-border-color",
475
+ "sass": "$tabs-vertical-border-color",
476
+ "default": "var(--bulma-border)",
477
+ "scope": "element"
478
+ },
479
+ {
480
+ "css": "--bulma-tabs-vertical-border-width",
481
+ "sass": "$tabs-vertical-border-width",
482
+ "default": "1px",
483
+ "scope": "element"
484
+ },
485
+ {
486
+ "css": "--bulma-tabs-content-padding",
487
+ "sass": "$tabs-content-padding",
488
+ "default": "1rem",
489
+ "scope": "element"
490
+ },
467
491
  {
468
492
  "css": "--bulma-tabs-border-bottom-color",
469
493
  "sass": "$tabs-border-bottom-color",
@@ -59,7 +59,7 @@
59
59
  "storybook": null,
60
60
  "summary": "The `Theme` component provides a powerful way to customize Bulma's appearance using CSS custom properties (CSS variables).",
61
61
  "import": "import { Theme } from '@allxsmith/bestax-bulma';",
62
- "doc": "# Theme\n\n## Overview\n\nThe `Theme` component provides a powerful way to customize Bulma's appearance using CSS custom properties (CSS variables). It allows you to override Bulma's design tokens like colors, spacing, typography, and other visual properties either globally or locally within specific component trees. The Theme component supports both CSS variable injection via props and direct CSS variable objects.\n\n---\n\n## Import\n\n```tsx\nimport { Theme } from '@allxsmith/bestax-bulma';\n```\n\n---\n\n## Usage\n\n### Basic Theme Customization\n\n```tsx\nfunction BasicThemeCustomization() {\n return (\n <Theme primaryH=\"270\" primaryS=\"100%\" primaryL=\"50%\">\n <Box p=\"4\">\n <Button color=\"primary\">Purple Primary Button</Button>\n </Box>\n </Theme>\n );\n}\n```\n\n### Global Theme (Root Level)\n\n```tsx\nfunction GlobalTheme() {\n return (\n <Theme isRoot={true} primaryH=\"270\" primaryS=\"100%\" primaryL=\"50%\">\n <div>\n <Button color=\"primary\">Global Purple Theme</Button>\n <Button color=\"info\">Info Button</Button>\n </div>\n </Theme>\n );\n}\n```\n\n### Dark Mode\n\nThe `colorMode` prop sets Bulma's `data-theme` on `<html>`, flipping the light/dark scheme globally.\nUse `'system'` to follow the OS preference.\n\n:::warning Single-mode designs should pin `colorMode`\n\nOmitting `colorMode` preserves whatever `data-theme` is already set — and when nothing has set\none (the usual case), the scheme follows the visitor's OS: Bulma's text colors flip on a\ndark-mode machine even if your design is light-only, breaking contrast against any fixed custom\nbackgrounds. If you support only one mode, pin it (`<Theme isRoot colorMode=\"light\">`); if you\nsupport both, don't hardcode surface/text colors — see\n[Dark Mode & Contrast](../../guides/features/css-variables.md#dark-mode--contrast).\n\n:::\n\n```tsx\nimport { useState } from 'react';\n\nfunction App() {\n const [mode, setMode] = useState<'light' | 'dark' | 'system'>('system');\n return (\n <Theme isRoot colorMode={mode}>\n <Button color=\"primary\" onClick={() => setMode('dark')}>\n Dark\n </Button>\n <Button color=\"primary\" onClick={() => setMode('light')}>\n Light\n </Button>\n <Button onClick={() => setMode('system')}>System</Button>\n </Theme>\n );\n}\n```\n\n### Local Theme (Component Level)\n\n```tsx\nfunction LocalTheme() {\n return (\n <div>\n <Button color=\"primary\">Standard Primary</Button>\n\n <Theme primaryH=\"120\" primaryS=\"100%\" primaryL=\"40%\">\n <Button color=\"primary\">Green Primary</Button>\n </Theme>\n\n <Button color=\"primary\">Standard Primary Again</Button>\n </div>\n );\n}\n```\n\n### Using CSS Variables Object\n\n```tsx\nfunction SunsetTheme() {\n const sunsetTheme = {\n '--bulma-scheme-h': '18',\n '--bulma-scheme-s': '90%',\n '--bulma-light-l': '85%',\n '--bulma-dark-l': '20%',\n '--bulma-primary-h': '25',\n '--bulma-primary-s': '85%',\n '--bulma-primary-l': '55%',\n };\n\n return (\n <Theme bulmaVars={sunsetTheme} isRoot>\n <Box p=\"4\">\n <Title>Sunset Theme</Title>\n <Button color=\"primary\">Sunset Button</Button>\n <Button color=\"info\">Info Button</Button>\n </Box>\n </Theme>\n );\n}\n```\n\n### Advanced CSS Variables Usage\n\n```tsx\nfunction TypographyTheme() {\n const typographyTheme = {\n '--bulma-family-primary': '\"Helvetica Neue\", sans-serif',\n '--bulma-family-code': '\"Fira Code\", monospace',\n '--bulma-size-normal': '16px',\n '--bulma-weight-bold': '700',\n '--bestax-title-color': 'hsl(0, 0%, 21%)',\n '--bulma-subtitle-color': 'hsl(0, 0%, 48%)',\n };\n\n return (\n <Theme bulmaVars={typographyTheme}>\n <Title>Custom Typography</Title>\n <Subtitle>With custom fonts and weights</Subtitle>\n </Theme>\n );\n}\n```\n\n```tsx\nfunction CustomButtonTheme() {\n const customButton = {\n '--bestax-button-border-radius': '12px',\n '--bestax-button-padding-vertical': '0.75rem',\n '--bestax-button-padding-horizontal': '1.5rem',\n '--bestax-button-focus-box-shadow-size': '0 0 0 0.2rem',\n '--bestax-button-focus-box-shadow-color': 'rgba(72, 95, 199, 0.25)',\n };\n\n return (\n <Theme bulmaVars={customButton}>\n <Button color=\"primary\">Custom Styled Button</Button>\n </Theme>\n );\n}\n```\n\n```tsx\nfunction SpacingTheme() {\n const spacingTheme = {\n '--bulma-block-spacing': '2rem',\n '--bulma-column-gap': '1rem',\n '--bulma-section-padding': '4rem 1.5rem',\n '--bestax-box-padding': '2rem',\n '--bestax-card-content-padding': '2rem',\n };\n\n return (\n <Theme bulmaVars={spacingTheme}>\n <Section>\n <Columns>\n <Column>\n <Box>Content with custom spacing</Box>\n </Column>\n <Column>\n <Card>\n <CardContent>Custom card padding</CardContent>\n </Card>\n </Column>\n </Columns>\n </Section>\n </Theme>\n );\n}\n```\n\n### Complete Color Scheme\n\n```tsx\nfunction ForestTheme() {\n const forestScheme = {\n schemeH: '150', // forest green hue\n schemeS: '50%',\n lightL: '80%',\n lightInvertL: '20%',\n darkL: '18%',\n darkInvertL: '85%',\n softL: '55%',\n boldL: '35%',\n primaryH: '160',\n primaryS: '60%',\n primaryL: '45%',\n linkH: '155',\n linkS: '65%',\n linkL: '40%',\n successH: '120',\n successS: '70%',\n successL: '45%',\n warningH: '45',\n warningS: '85%',\n warningL: '55%',\n dangerH: '355',\n dangerS: '75%',\n dangerL: '50%',\n hoverBackgroundLDelta: '4%',\n activeBackgroundLDelta: '8%',\n };\n\n return (\n <Theme {...forestScheme} isRoot>\n <Box p=\"4\">\n <Title>Forest Theme</Title>\n <Button color=\"primary\">Forest Primary</Button>\n <Button color=\"success\">Success</Button>\n <Button color=\"info\">Info</Button>\n <Button color=\"warning\">Warning</Button>\n <Button color=\"danger\">Danger</Button>\n </Box>\n </Theme>\n );\n}\n```\n\n### Theme with Styling\n\n```tsx\nfunction StyledTheme() {\n return (\n <Theme\n className=\"custom-theme-wrapper\"\n primaryH=\"45\"\n primaryS=\"100%\"\n primaryL=\"50%\"\n p=\"5\"\n m=\"3\"\n textAlign=\"centered\"\n backgroundColor=\"light\"\n >\n <Title>Styled Theme Container</Title>\n <Button color=\"primary\">Styled Button</Button>\n </Theme>\n );\n}\n```\n\n### Nested Themes\n\n```tsx\nfunction NestedThemes() {\n return (\n <Theme primaryH=\"210\" primaryS=\"60%\" primaryL=\"45%\" p=\"4\">\n <Title>Outer Theme (Blue)</Title>\n <Button color=\"primary\">Blue Primary</Button>\n\n <Theme\n primaryH=\"120\"\n primaryS=\"70%\"\n primaryL=\"40%\"\n p=\"3\"\n mt=\"4\"\n backgroundColor=\"light\"\n >\n <Title size=\"4\">Inner Theme (Green)</Title>\n <Button color=\"primary\">Green Primary</Button>\n </Theme>\n\n <Button color=\"primary\" mt=\"3\">\n Blue Primary Again\n </Button>\n </Theme>\n );\n}\n```\n\n### Theme with ConfigProvider\n\n```tsx\nfunction PrefixedTheme() {\n return (\n <ConfigProvider classPrefix=\"bestax-\">\n <Theme primaryH=\"300\" primaryS=\"80%\" primaryL=\"50%\" isRoot>\n <Button color=\"primary\">Prefixed & Themed Button</Button>\n </Theme>\n </ConfigProvider>\n );\n}\n```\n\n---\n\n## Best Practices\n\n### Global vs Local Themes\n\n- Use `isRoot={true}` for application-wide themes that should affect all components\n- Use local themes (default `isRoot={false}`) for component-specific styling or theme variations\n- Local themes inherit from parent themes and can override specific variables\n\n### CSS Variable Naming\n\n- All Bulma CSS variables follow the `--bulma-*` naming convention\n- Use the `bulmaVars` prop when you need to set variables not covered by individual props\n- Individual props (like `primaryH`) are converted to their corresponding CSS variable names\n- `bulmaVars` also accepts the scheme surface variables — `--bulma-scheme-main`, `--bulma-scheme-main-bis`, `--bulma-scheme-main-ter`, `--bulma-scheme-invert`, `--bulma-scheme-invert-bis`, `--bulma-scheme-invert-ter` — so overriding `--bulma-scheme-main-bis`/`-ter` re-tints every scheme-background band (e.g., `<Section bgColor=\"scheme-main-bis\">`) at once\n\n### Performance Considerations\n\n- Prefer setting themes at higher levels in your component tree rather than deeply nested\n- Use `isRoot={true}` sparingly to avoid CSS specificity issues\n- CSS variables are inherited, so child themes only need to override specific variables\n\n### Color System\n\n- Bulma uses HSL (Hue, Saturation, Lightness) for its color system\n- Hue values range from 0-360 (color wheel degrees)\n- Saturation and Lightness are typically percentages (e.g., '50%')\n- The scheme variables control the base color relationships\n\n---\n\n## API Reference\n\n### Prop to CSS Variable Conversion\n\nThe Theme component automatically converts camelCase prop names to their corresponding CSS custom property names using the following pattern:\n\n```\npropName → --bulma-prop-name\n```\n\n**Examples:**\n\n- `primaryH` → `--bulma-primary-h`\n- `schemeS` → `--bulma-scheme-s`\n- `lightL` → `--bulma-light-l`\n- `hoverBackgroundLDelta` → `--bulma-hover-background-l-delta`\n- `cardContentPadding` → `--bestax-card-content-padding`\n\n### Prop vs bulmaVars\n\nYou can use CSS variables in two ways:\n\n1. **Individual Props** (recommended for commonly used variables):\n\n ```tsx\n <Theme primaryH=\"270\" primaryS=\"100%\" primaryL=\"50%\" />\n ```\n\n2. **bulmaVars Object** (for less common variables or when you have many variables):\n\n ```tsx\n <Theme\n bulmaVars={{\n '--bulma-primary-h': '270',\n '--bulma-primary-s': '100%',\n '--bulma-primary-l': '50%',\n '--bestax-card-content-padding': '2rem',\n }}\n />\n ```\n\n3. **Combined** (props take precedence over bulmaVars):\n ```tsx\n <Theme\n primaryH=\"270\" // This takes precedence\n bulmaVars={{\n '--bulma-primary-h': '180', // This is overridden\n '--bestax-card-content-padding': '2rem',\n }}\n />\n ```\n\n### All Supported Props\n\nThe Theme component supports props for all 500+ Bulma CSS variables. Here's the complete list organized by category:\n\n**Scheme & Base Color Props:**\n\n- `schemeH`, `schemeS`, `lightL`, `lightInvertL`, `darkL`, `darkInvertL`\n- `softL`, `boldL`, `softInvertL`, `boldInvertL`\n- `hoverBackgroundLDelta`, `activeBackgroundLDelta`, `hoverBorderLDelta`, `activeBorderLDelta`\n- `hoverColorLDelta`, `activeColorLDelta`, `hoverShadowADelta`, `activeShadowADelta`\n\n**Color Props:**\n\n- `primaryH`, `primaryS`, `primaryL`, `linkH`, `linkS`, `linkL`\n- `infoH`, `infoS`, `infoL`, `successH`, `successS`, `successL`\n- `warningH`, `warningS`, `warningL`, `dangerH`, `dangerS`, `dangerL`\n\n**Typography Props:**\n\n- `familyPrimary`, `familySecondary`, `familyCode`\n- `sizeSmall`, `sizeNormal`, `sizeMedium`, `sizeLarge`\n- `weightLight`, `weightNormal`, `weightMedium`, `weightSemibold`, `weightBold`, `weightExtrabold`\n- `bodyBackgroundColor`, `bodySize`, `bodyMinWidth`, `bodyRendering`, `bodyFamily`\n- `bodyOverflowX`, `bodyOverflowY`, `bodyColor`, `bodyFontSize`, `bodyWeight`, `bodyLineHeight`\n- `codeFamily`, `codePadding`, `codeWeight`, `codeSize`, `smallFontSize`\n- `hrBackgroundColor`, `hrHeight`, `hrMargin`, `strongColor`, `strongWeight`\n- `preFontSize`, `prePadding`, `preCodeFontSize`\n\n**Layout & Spacing Props:**\n\n- `blockSpacing`, `duration`, `easing`, `speed`, `arrowColor`, `loadingColor`\n- `radiusSmall`, `radius`, `radiusMedium`, `radiusLarge`, `radiusRounded`\n- `columnGap`, `gridGap`, `gridColumnCount`, `gridColumnMin`\n- `gridCellColumnSpan`, `gridCellColumnStart`\n\n**Box Props:**\n\n- `boxBackgroundColor`, `boxColor`, `boxRadius`, `boxShadow`, `boxPadding`\n- `boxLinkHoverShadow`, `boxLinkActiveShadow`\n\n**Breadcrumb Props:**\n\n- `breadcrumbItemColor`, `breadcrumbItemHoverColor`, `breadcrumbItemActiveColor`\n- `breadcrumbItemPaddingVertical`, `breadcrumbItemPaddingHorizontal`, `breadcrumbItemSeparatorColor`\n\n**Burger Props:**\n\n- `burgerH`, `burgerS`, `burgerL`, `burgerBorderRadius`, `burgerGap`\n- `burgerItemHeight`, `burgerItemWidth`\n\n**Card Props:**\n\n- `cardColor`, `cardBackgroundColor`, `cardShadow`, `cardRadius`\n- `cardHeaderBackgroundColor`, `cardHeaderColor`, `cardHeaderPadding`\n- `cardHeaderShadow`, `cardHeaderWeight`, `cardContentBackgroundColor`\n- `cardContentPadding`, `cardFooterBackgroundColor`, `cardFooterBorderTop`\n- `cardFooterPadding`, `cardMediaMargin`\n\n**Content Props:**\n\n- `contentHeadingColor`, `contentHeadingWeight`, `contentHeadingLineHeight`\n- `contentBlockMarginBottom`, `contentBlockquoteBackgroundColor`, `contentBlockquoteBorderLeft`\n- `contentBlockquotePadding`, `contentPrePadding`, `contentTableCellBorder`\n- `contentTableCellBorderWidth`, `contentTableCellPadding`, `contentTableCellHeadingColor`\n- `contentTableHeadCellBorderWidth`, `contentTableHeadCellColor`\n- `contentTableBodyLastRowCellBorderBottomWidth`, `contentTableFootCellBorderWidth`\n- `contentTableFootCellColor`\n\n**Control Props:**\n\n- `controlRadius`, `controlRadiusSmall`, `controlBorderWidth`, `controlHeight`\n- `controlLineHeight`, `controlPaddingVertical`, `controlPaddingHorizontal`\n- `controlSize`, `controlFocusShadowL`\n\n**Delete Props:**\n\n- `deleteDimensions`, `deleteBackgroundL`, `deleteBackgroundAlpha`, `deleteColor`\n\n**Dropdown Props:**\n\n- `dropdownMenuMinWidth`, `dropdownContentBackgroundColor`, `dropdownContentOffset`\n- `dropdownContentPaddingBottom`, `dropdownContentPaddingTop`, `dropdownContentRadius`\n- `dropdownContentShadow`, `dropdownContentZ`, `dropdownItemH`, `dropdownItemS`\n- `dropdownItemL`, `dropdownItemBackgroundL`, `dropdownItemBackgroundLDelta`\n- `dropdownItemHoverBackgroundLDelta`, `dropdownItemActiveBackgroundLDelta`\n- `dropdownItemColorL`, `dropdownItemSelectedH`, `dropdownItemSelectedS`\n- `dropdownItemSelectedL`, `dropdownItemSelectedBackgroundL`, `dropdownItemSelectedColorL`\n- `dropdownDividerBackgroundColor`\n\n**File Props:**\n\n- `fileRadius`, `fileNameBorderColor`, `fileNameBorderStyle`, `fileNameBorderWidth`\n- `fileNameMaxWidth`, `fileH`, `fileS`, `fileBackgroundL`, `fileBackgroundLDelta`\n- `fileHoverBackgroundLDelta`, `fileActiveBackgroundLDelta`, `fileBorderL`\n- `fileBorderLDelta`, `fileHoverBorderLDelta`, `fileActiveBorderLDelta`\n- `fileCtaColorL`, `fileNameColorL`, `fileColorLDelta`, `fileHoverColorLDelta`\n- `fileActiveColorLDelta`\n\n**Footer Props:**\n\n- `footerBackgroundColor`, `footerColor`, `footerPadding`\n\n**Hero Props:**\n\n- `heroBodyPadding`, `heroBodyPaddingTablet`, `heroBodyPaddingSmall`\n- `heroBodyPaddingMedium`, `heroBodyPaddingLarge`\n\n**Icon Props:**\n\n- `iconDimensions`, `iconDimensionsSmall`, `iconDimensionsMedium`\n- `iconDimensionsLarge`, `iconTextSpacing`\n\n**Input Props:**\n\n- `inputH`, `inputS`, `inputL`, `inputBorderStyle`, `inputBorderL`\n- `inputBorderLDelta`, `inputHoverBorderLDelta`, `inputActiveBorderLDelta`\n- `inputFocusH`, `inputFocusS`, `inputFocusL`, `inputFocusShadowSize`\n- `inputFocusShadowAlpha`, `inputColorL`, `inputBackgroundL`, `inputBackgroundLDelta`\n- `inputHeight`, `inputShadow`, `inputPlaceholderColor`, `inputDisabledColor`\n- `inputDisabledBackgroundColor`, `inputDisabledBorderColor`, `inputDisabledPlaceholderColor`\n- `inputArrow`, `inputIconColor`, `inputIconHoverColor`, `inputIconFocusColor`, `inputRadius`\n\n**Media Props:**\n\n- `mediaBorderColor`, `mediaBorderSize`, `mediaSpacing`, `mediaSpacingLarge`\n- `mediaContentSpacing`, `mediaLevel1Spacing`, `mediaLevel1ContentSpacing`, `mediaLevel2Spacing`\n\n**Menu Props:**\n\n- `menuItemH`, `menuItemS`, `menuItemL`, `menuItemBackgroundL`, `menuItemBackgroundLDelta`\n- `menuItemHoverBackgroundLDelta`, `menuItemActiveBackgroundLDelta`, `menuItemColorL`\n- `menuItemRadius`, `menuItemSelectedH`, `menuItemSelectedS`, `menuItemSelectedL`\n- `menuItemSelectedBackgroundL`, `menuItemSelectedColorL`, `menuListBorderLeft`\n- `menuListLineHeight`, `menuListLinkPadding`, `menuNestedListMargin`\n- `menuNestedListPaddingLeft`, `menuLabelColor`, `menuLabelFontSize`\n- `menuLabelLetterSpacing`, `menuLabelSpacing`\n\n**Message Props:**\n\n- `messageH`, `messageS`, `messageBackgroundL`, `messageBorderL`, `messageBorderLDelta`\n- `messageBorderStyle`, `messageBorderWidth`, `messageColorL`, `messageRadius`\n- `messageHeaderWeight`, `messageHeaderPadding`, `messageHeaderRadius`\n- `messageHeaderBodyBorderWidth`, `messageHeaderBackgroundL`, `messageHeaderColorL`\n- `messageBodyBorderWidth`, `messageBodyColor`, `messageBodyPadding`\n- `messageBodyRadius`, `messageBodyPreCodeBackgroundColor`\n\n**Modal Props:**\n\n- `modalZ`, `modalBackgroundBackgroundColor`, `modalContentWidth`, `modalContentMarginMobile`\n- `modalContentSpacingMobile`, `modalContentSpacingTablet`, `modalCloseDimensions`\n- `modalCloseRight`, `modalCloseTop`, `modalCardSpacing`, `modalCardHeadBackgroundColor`\n- `modalCardHeadPadding`, `modalCardHeadRadius`, `modalCardTitleColor`\n- `modalCardTitleLineHeight`, `modalCardTitleSize`, `modalCardFootBackgroundColor`\n- `modalCardFootRadius`, `modalCardBodyBackgroundColor`, `modalCardBodyPadding`\n\n**Navbar Props:**\n\n- `navbarH`, `navbarS`, `navbarL`, `navbarBackgroundColor`, `navbarBoxShadowSize`\n- `navbarBoxShadowColor`, `navbarPaddingVertical`, `navbarPaddingHorizontal`\n- `navbarZ`, `navbarFixedZ`, `navbarItemBackgroundA`, `navbarItemBackgroundL`\n- `navbarItemBackgroundLDelta`, `navbarItemHoverBackgroundLDelta`, `navbarItemActiveBackgroundLDelta`\n- `navbarItemColorL`, `navbarItemSelectedH`, `navbarItemSelectedS`, `navbarItemSelectedL`\n- `navbarItemSelectedBackgroundL`, `navbarItemSelectedColorL`, `navbarItemImgMaxHeight`\n- `navbarBurgerColor`, `navbarTabHoverBackgroundColor`, `navbarTabHoverBorderBottomColor`\n- `navbarTabActiveColor`, `navbarTabActiveBackgroundColor`, `navbarTabActiveBorderBottomColor`\n- `navbarTabActiveBorderBottomStyle`, `navbarTabActiveBorderBottomWidth`\n- `navbarDropdownBackgroundColor`, `navbarDropdownBorderL`, `navbarDropdownBorderColor`\n- `navbarDropdownBorderStyle`, `navbarDropdownBorderWidth`, `navbarDropdownOffset`\n- `navbarDropdownArrow`, `navbarDropdownRadius`, `navbarDropdownZ`\n- `navbarDropdownBoxedRadius`, `navbarDropdownBoxedShadow`, `navbarDropdownItemH`\n- `navbarDropdownItemS`, `navbarDropdownItemL`, `navbarDropdownItemBackgroundL`\n- `navbarDropdownItemColorL`, `navbarDividerBackgroundL`, `navbarDividerHeight`\n- `navbarBottomBoxShadowSize`\n\n**Notification Props:**\n\n- `notificationH`, `notificationS`, `notificationBackgroundL`, `notificationColorL`\n- `notificationCodeBackgroundColor`, `notificationRadius`, `notificationPadding`\n\n**Pagination Props:**\n\n- `paginationMargin`, `paginationMinWidth`, `paginationItemH`, `paginationItemS`\n- `paginationItemL`, `paginationItemBackgroundLDelta`, `paginationItemHoverBackgroundLDelta`\n- `paginationItemActiveBackgroundLDelta`, `paginationItemBorderStyle`, `paginationItemBorderWidth`\n- `paginationItemBorderL`, `paginationItemBorderLDelta`, `paginationItemHoverBorderLDelta`\n- `paginationItemActiveBorderLDelta`, `paginationItemFocusBorderLDelta`, `paginationItemColorL`\n- `paginationItemFontSize`, `paginationItemMargin`, `paginationItemPaddingLeft`\n- `paginationItemPaddingRight`, `paginationItemOuterShadowH`, `paginationItemOuterShadowS`\n- `paginationItemOuterShadowL`, `paginationItemOuterShadowA`, `paginationNavPaddingLeft`\n- `paginationNavPaddingRight`, `paginationDisabledColor`, `paginationDisabledBackgroundColor`\n- `paginationDisabledBorderColor`, `paginationCurrentColor`, `paginationCurrentBackgroundColor`\n- `paginationCurrentBorderColor`, `paginationEllipsisColor`, `paginationShadowInset`\n- `paginationSelectedItemH`, `paginationSelectedItemS`, `paginationSelectedItemL`\n- `paginationSelectedItemBackgroundL`, `paginationSelectedItemBorderL`, `paginationSelectedItemColorL`\n\n**Panel Props:**\n\n- `panelMargin`, `panelItemBorder`, `panelRadius`, `panelShadow`, `panelHeadingLineHeight`\n- `panelHeadingPadding`, `panelHeadingRadius`, `panelHeadingSize`, `panelHeadingWeight`\n- `panelTabsFontSize`, `panelTabBorderBottomColor`, `panelTabBorderBottomStyle`\n- `panelTabBorderBottomWidth`, `panelTabActiveColor`, `panelListItemColor`\n- `panelListItemHoverColor`, `panelBlockColor`, `panelBlockHoverBackgroundColor`\n- `panelBlockActiveBorderLeftColor`, `panelBlockActiveColor`, `panelBlockActiveIconColor`\n- `panelIconColor`\n\n**Progress Props:**\n\n- `progressBorderRadius`, `progressBarBackgroundColor`, `progressValueBackgroundColor`\n- `progressIndeterminateDuration`\n\n**Section Props:**\n\n- `sectionPadding`, `sectionPaddingDesktop`, `sectionPaddingMedium`, `sectionPaddingLarge`\n\n**Skeleton Props:**\n\n- `skeletonBackground`, `skeletonRadius`, `skeletonBlockMinHeight`, `skeletonLinesGap`\n- `skeletonLineHeight`\n\n**Table Props:**\n\n- `tableColor`, `tableBackgroundColor`, `tableCellBorderColor`, `tableCellBorderStyle`\n- `tableCellBorderWidth`, `tableCellPadding`, `tableCellHeadingColor`, `tableCellTextAlign`\n- `tableHeadCellBorderWidth`, `tableHeadCellColor`, `tableFootCellBorderWidth`\n- `tableFootCellColor`, `tableHeadBackgroundColor`, `tableBodyBackgroundColor`\n- `tableFootBackgroundColor`, `tableRowHoverBackgroundColor`, `tableRowActiveBackgroundColor`\n- `tableRowActiveColor`, `tableStripedRowEvenBackgroundColor`, `tableStripedRowEvenHoverBackgroundColor`\n\n**Tabs Props:**\n\n- `tabsBorderBottomColor`, `tabsBorderBottomStyle`, `tabsBorderBottomWidth`\n- `tabsLinkColor`, `tabsLinkHoverBorderBottomColor`, `tabsLinkHoverColor`\n- `tabsLinkActiveBorderBottomColor`, `tabsLinkActiveColor`, `tabsLinkPadding`\n- `tabsBoxedLinkRadius`, `tabsBoxedLinkHoverBackgroundColor`, `tabsBoxedLinkHoverBorderBottomColor`\n- `tabsBoxedLinkActiveBackgroundColor`, `tabsBoxedLinkActiveBorderColor`\n- `tabsBoxedLinkActiveBorderBottomColor`, `tabsToggleLinkBorderColor`, `tabsToggleLinkBorderStyle`\n- `tabsToggleLinkBorderWidth`, `tabsToggleLinkHoverBackgroundColor`, `tabsToggleLinkHoverBorderColor`\n- `tabsToggleLinkRadius`, `tabsToggleLinkActiveBackgroundColor`, `tabsToggleLinkActiveBorderColor`\n- `tabsToggleLinkActiveColor`\n\n**Tag Props:**\n\n- `tagH`, `tagS`, `tagBackgroundL`, `tagBackgroundLDelta`, `tagHoverBackgroundLDelta`\n- `tagActiveBackgroundLDelta`, `tagColorL`, `tagRadius`, `tagDeleteMargin`\n\n**Title & Subtitle Props:**\n\n- `titleColor`, `titleFamily`, `titleSize`, `titleWeight`, `titleLineHeight`\n- `titleStrongColor`, `titleStrongWeight`, `titleSubSize`, `titleSupSize`\n- `subtitleColor`, `subtitleFamily`, `subtitleSize`, `subtitleWeight`\n- `subtitleLineHeight`, `subtitleStrongColor`, `subtitleStrongWeight`\n\n### TypeScript Support\n\nAll props are fully typed in TypeScript. Use IDE autocomplete to discover available props:\n\n```tsx\n// TypeScript will provide autocomplete for all available props\n<Theme\n primaryH=\"270\"\n cardContent={/* TypeScript autocomplete will show all card-related props */}\n/>\n```\n\n---\n\n## See Also\n\n- [ConfigProvider](./config.md) - For class prefixing and configuration\n- [useBulmaClasses](./usebulmaclasses.md) - For applying Bulma helper classes\n- [Bulma CSS Variables Documentation](https://bulma.io/documentation/features/css-variables/) - Official Bulma CSS variables reference\n\n---\n\n## Props\n\n| Prop | Type | Description |\n| ----------- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `children` | `ReactNode` | The child components to apply the theme to. |\n| `className` | `string` | Additional CSS classes for the theme wrapper. |\n| `isRoot` | `boolean` | When `true`, applies CSS variables globally at `:root` level. When `false` (default), applies variables only to the wrapper div. |\n| `colorMode` | `'light' \\| 'dark' \\| 'system'` | Sets Bulma's light/dark scheme by writing the `data-theme` attribute on `<html>`. Always global (even on a scoped `Theme`). `'system'` removes the attribute so Bulma follows the OS `prefers-color-scheme`. Omit to leave the current setting untouched. |\n| `bulmaVars` | `Record<string, string>` | Object containing CSS custom properties as key-value pairs (e.g., `{'--bulma-primary-h': '210'}`). |\n\n### CSS Variable Props\n\nThe Theme component accepts individual CSS variable props that correspond to Bulma's design tokens. These props are automatically converted to their corresponding CSS custom properties (e.g., `primaryH` → `--bulma-primary-h`).\n\n#### Scheme Variables\n\n| Prop | Type | Description | CSS Variable |\n| ------------------------ | -------- | ------------------------------------------------- | ----------------------------------- |\n| `schemeH` | `string` | Base hue for the color scheme (0-360) | `--bulma-scheme-h` |\n| `schemeS` | `string` | Base saturation for the color scheme (percentage) | `--bulma-scheme-s` |\n| `lightL` | `string` | Lightness value for light backgrounds | `--bulma-light-l` |\n| `lightInvertL` | `string` | Inverted lightness for light backgrounds | `--bulma-light-invert-l` |\n| `darkL` | `string` | Lightness value for dark backgrounds | `--bulma-dark-l` |\n| `darkInvertL` | `string` | Inverted lightness for dark backgrounds | `--bulma-dark-invert-l` |\n| `softL` | `string` | Lightness value for soft colors | `--bulma-soft-l` |\n| `boldL` | `string` | Lightness value for bold colors | `--bulma-bold-l` |\n| `softInvertL` | `string` | Inverted lightness for soft colors | `--bulma-soft-invert-l` |\n| `boldInvertL` | `string` | Inverted lightness for bold colors | `--bulma-bold-invert-l` |\n| `hoverBackgroundLDelta` | `string` | Lightness delta for hover background states | `--bulma-hover-background-l-delta` |\n| `activeBackgroundLDelta` | `string` | Lightness delta for active background states | `--bulma-active-background-l-delta` |\n| `hoverBorderLDelta` | `string` | Lightness delta for hover border states | `--bulma-hover-border-l-delta` |\n| `activeBorderLDelta` | `string` | Lightness delta for active border states | `--bulma-active-border-l-delta` |\n| `hoverColorLDelta` | `string` | Lightness delta for hover text color states | `--bulma-hover-color-l-delta` |\n| `activeColorLDelta` | `string` | Lightness delta for active text color states | `--bulma-active-color-l-delta` |\n| `hoverShadowADelta` | `string` | Alpha delta for hover shadow states | `--bulma-hover-shadow-a-delta` |\n| `activeShadowADelta` | `string` | Alpha delta for active shadow states | `--bulma-active-shadow-a-delta` |\n\n#### Color Variables\n\n| Prop | Type | Description | CSS Variable |\n| ---------- | -------- | ------------------------------------- | ------------------- |\n| `primaryH` | `string` | Primary color hue (0-360) | `--bulma-primary-h` |\n| `primaryS` | `string` | Primary color saturation (percentage) | `--bulma-primary-s` |\n| `primaryL` | `string` | Primary color lightness (percentage) | `--bulma-primary-l` |\n| `linkH` | `string` | Link color hue (0-360) | `--bulma-link-h` |\n| `linkS` | `string` | Link color saturation (percentage) | `--bulma-link-s` |\n| `linkL` | `string` | Link color lightness (percentage) | `--bulma-link-l` |\n| `infoH` | `string` | Info color hue (0-360) | `--bulma-info-h` |\n| `infoS` | `string` | Info color saturation (percentage) | `--bulma-info-s` |\n| `infoL` | `string` | Info color lightness (percentage) | `--bulma-info-l` |\n| `successH` | `string` | Success color hue (0-360) | `--bulma-success-h` |\n| `successS` | `string` | Success color saturation (percentage) | `--bulma-success-s` |\n| `successL` | `string` | Success color lightness (percentage) | `--bulma-success-l` |\n| `warningH` | `string` | Warning color hue (0-360) | `--bulma-warning-h` |\n| `warningS` | `string` | Warning color saturation (percentage) | `--bulma-warning-s` |\n| `warningL` | `string` | Warning color lightness (percentage) | `--bulma-warning-l` |\n| `dangerH` | `string` | Danger color hue (0-360) | `--bulma-danger-h` |\n| `dangerS` | `string` | Danger color saturation (percentage) | `--bulma-danger-s` |\n| `dangerL` | `string` | Danger color lightness (percentage) | `--bulma-danger-l` |\n\n#### Complete CSS Variables List\n\nThe Theme component supports all 500+ Bulma CSS variables through the `bulmaVars` prop and individual props:\n\n**Typography Variables:**\n\n- `--bulma-family-primary`, `--bulma-family-secondary`, `--bulma-family-code`\n- `--bulma-size-small`, `--bulma-size-normal`, `--bulma-size-medium`, `--bulma-size-large`\n- `--bulma-weight-light`, `--bulma-weight-normal`, `--bulma-weight-medium`, `--bulma-weight-semibold`, `--bulma-weight-bold`, `--bulma-weight-extrabold`\n- `--bulma-body-background-color`, `--bulma-body-size`, `--bulma-body-min-width`, `--bulma-body-rendering`\n- `--bulma-body-family`, `--bulma-body-overflow-x`, `--bulma-body-overflow-y`, `--bulma-body-color`\n- `--bulma-body-font-size`, `--bulma-body-weight`, `--bulma-body-line-height`\n- `--bulma-code-family`, `--bulma-code-padding`, `--bulma-code-weight`, `--bulma-code-size`\n- `--bulma-small-font-size`, `--bulma-hr-background-color`, `--bulma-hr-height`, `--bulma-hr-margin`\n- `--bulma-strong-color`, `--bulma-strong-weight`, `--bulma-pre-font-size`, `--bulma-pre-padding`, `--bulma-pre-code-font-size`\n\n**Layout & Spacing Variables:**\n\n- `--bulma-block-spacing`, `--bulma-duration`, `--bulma-easing`, `--bulma-speed`\n- `--bulma-radius-small`, `--bulma-radius`, `--bulma-radius-medium`, `--bulma-radius-large`, `--bulma-radius-rounded`\n- `--bulma-arrow-color`, `--bulma-loading-color`\n- `--bulma-column-gap`, `--bulma-grid-gap`, `--bulma-grid-column-count`, `--bulma-grid-column-min`\n- `--bulma-grid-cell-column-span`, `--bulma-grid-cell-column-start`\n\n**Box Variables:**\n\n- `--bestax-box-background-color`, `--bestax-box-color`, `--bestax-box-radius`, `--bestax-box-shadow`\n- `--bestax-box-padding`, `--bestax-box-link-hover-shadow`, `--bestax-box-link-active-shadow`\n\n**Breadcrumb Variables:**\n\n- `--bulma-breadcrumb-item-color`, `--bulma-breadcrumb-item-hover-color`, `--bulma-breadcrumb-item-active-color`\n- `--bulma-breadcrumb-item-padding-vertical`, `--bulma-breadcrumb-item-padding-horizontal`\n- `--bulma-breadcrumb-item-separator-color`\n\n**Card Variables:**\n\n- `--bestax-card-color`, `--bestax-card-background-color`, `--bestax-card-shadow`, `--bestax-card-radius`\n- `--bestax-card-header-background-color`, `--bestax-card-header-color`, `--bestax-card-header-padding`\n- `--bestax-card-header-shadow`, `--bestax-card-header-weight`\n- `--bestax-card-content-background-color`, `--bestax-card-content-padding`\n- `--bestax-card-footer-background-color`, `--bestax-card-footer-border-top`, `--bestax-card-footer-padding`\n- `--bestax-card-media-margin`\n\n**Dropdown Variables:**\n\n- `--bulma-dropdown-menu-min-width`, `--bulma-dropdown-content-background-color`\n- `--bulma-dropdown-content-offset`, `--bulma-dropdown-content-padding-bottom`\n- `--bulma-dropdown-content-padding-top`, `--bulma-dropdown-content-radius`\n- `--bulma-dropdown-content-shadow`, `--bulma-dropdown-content-z`\n- `--bulma-dropdown-item-h`, `--bulma-dropdown-item-s`, `--bulma-dropdown-item-l`\n- `--bulma-dropdown-item-background-l`, `--bulma-dropdown-item-background-l-delta`\n- `--bulma-dropdown-item-hover-background-l-delta`, `--bulma-dropdown-item-active-background-l-delta`\n- `--bulma-dropdown-item-color-l`, `--bulma-dropdown-item-selected-h`\n- `--bulma-dropdown-item-selected-s`, `--bulma-dropdown-item-selected-l`\n- `--bulma-dropdown-item-selected-background-l`, `--bulma-dropdown-item-selected-color-l`\n- `--bulma-dropdown-divider-background-color`\n\n**Input Variables:**\n\n- `--bulma-input-h`, `--bulma-input-s`, `--bulma-input-l`, `--bulma-input-border-style`\n- `--bulma-input-border-l`, `--bulma-input-border-l-delta`, `--bulma-input-hover-border-l-delta`\n- `--bulma-input-active-border-l-delta`, `--bulma-input-focus-h`, `--bulma-input-focus-s`\n- `--bulma-input-focus-l`, `--bulma-input-focus-shadow-size`, `--bulma-input-focus-shadow-alpha`\n- `--bulma-input-color-l`, `--bulma-input-background-l`, `--bulma-input-background-l-delta`\n- `--bulma-input-height`, `--bulma-input-shadow`, `--bulma-input-placeholder-color`\n- `--bulma-input-disabled-color`, `--bulma-input-disabled-background-color`\n- `--bulma-input-disabled-border-color`, `--bulma-input-disabled-placeholder-color`\n- `--bulma-input-arrow`, `--bulma-input-icon-color`, `--bulma-input-icon-hover-color`\n- `--bulma-input-icon-focus-color`, `--bulma-input-radius`\n\n**Menu Variables:**\n\n- `--bulma-menu-item-h`, `--bulma-menu-item-s`, `--bulma-menu-item-l`\n- `--bulma-menu-item-background-l`, `--bulma-menu-item-background-l-delta`\n- `--bulma-menu-item-hover-background-l-delta`, `--bulma-menu-item-active-background-l-delta`\n- `--bulma-menu-item-color-l`, `--bulma-menu-item-radius`\n- `--bulma-menu-item-selected-h`, `--bulma-menu-item-selected-s`, `--bulma-menu-item-selected-l`\n- `--bulma-menu-item-selected-background-l`, `--bulma-menu-item-selected-color-l`\n- `--bulma-menu-list-border-left`, `--bulma-menu-list-line-height`, `--bulma-menu-list-link-padding`\n- `--bulma-menu-nested-list-margin`, `--bulma-menu-nested-list-padding-left`\n- `--bulma-menu-label-color`, `--bulma-menu-label-font-size`, `--bulma-menu-label-letter-spacing`\n- `--bulma-menu-label-spacing`\n\n**Message Variables:**\n\n- `--bulma-message-h`, `--bulma-message-s`, `--bulma-message-background-l`\n- `--bulma-message-border-l`, `--bulma-message-border-l-delta`, `--bulma-message-border-style`\n- `--bulma-message-border-width`, `--bulma-message-color-l`, `--bulma-message-radius`\n- `--bulma-message-header-weight`, `--bulma-message-header-padding`, `--bulma-message-header-radius`\n- `--bulma-message-header-body-border-width`, `--bulma-message-header-background-l`\n- `--bulma-message-header-color-l`, `--bulma-message-body-border-width`\n- `--bulma-message-body-color`, `--bulma-message-body-padding`, `--bulma-message-body-radius`\n- `--bulma-message-body-pre-code-background-color`\n\n**Modal Variables:**\n\n- `--bulma-modal-z`, `--bulma-modal-background-background-color`, `--bulma-modal-content-width`\n- `--bulma-modal-content-margin-mobile`, `--bulma-modal-content-spacing-mobile`\n- `--bulma-modal-content-spacing-tablet`, `--bulma-modal-close-dimensions`\n- `--bulma-modal-close-right`, `--bulma-modal-close-top`, `--bulma-modal-card-spacing`\n- `--bulma-modal-card-head-background-color`, `--bulma-modal-card-head-padding`\n- `--bulma-modal-card-head-radius`, `--bulma-modal-card-title-color`\n- `--bulma-modal-card-title-line-height`, `--bulma-modal-card-title-size`\n- `--bulma-modal-card-foot-background-color`, `--bulma-modal-card-foot-radius`\n- `--bulma-modal-card-body-background-color`, `--bulma-modal-card-body-padding`\n\n**Navbar Variables:**\n\n- `--bulma-navbar-h`, `--bulma-navbar-s`, `--bulma-navbar-l`, `--bulma-navbar-background-color`\n- `--bulma-navbar-box-shadow-size`, `--bulma-navbar-box-shadow-color`\n- `--bulma-navbar-padding-vertical`, `--bulma-navbar-padding-horizontal`\n- `--bulma-navbar-z`, `--bulma-navbar-fixed-z`, `--bulma-navbar-item-background-a`\n- `--bulma-navbar-item-background-l`, `--bulma-navbar-item-background-l-delta`\n- `--bulma-navbar-item-hover-background-l-delta`, `--bulma-navbar-item-active-background-l-delta`\n- `--bulma-navbar-item-color-l`, `--bulma-navbar-item-selected-h`\n- `--bulma-navbar-item-selected-s`, `--bulma-navbar-item-selected-l`\n- `--bulma-navbar-item-selected-background-l`, `--bulma-navbar-item-selected-color-l`\n- `--bulma-navbar-item-img-max-height`, `--bulma-navbar-burger-color`\n- `--bulma-navbar-tab-hover-background-color`, `--bulma-navbar-tab-hover-border-bottom-color`\n- `--bulma-navbar-tab-active-color`, `--bulma-navbar-tab-active-background-color`\n- `--bulma-navbar-tab-active-border-bottom-color`, `--bulma-navbar-tab-active-border-bottom-style`\n- `--bulma-navbar-tab-active-border-bottom-width`, `--bulma-navbar-dropdown-background-color`\n- `--bulma-navbar-dropdown-border-l`, `--bulma-navbar-dropdown-border-color`\n- `--bulma-navbar-dropdown-border-style`, `--bulma-navbar-dropdown-border-width`\n- `--bulma-navbar-dropdown-offset`, `--bulma-navbar-dropdown-arrow`\n- `--bulma-navbar-dropdown-radius`, `--bulma-navbar-dropdown-z`\n- `--bulma-navbar-dropdown-boxed-radius`, `--bulma-navbar-dropdown-boxed-shadow`\n- `--bulma-navbar-dropdown-item-h`, `--bulma-navbar-dropdown-item-s`\n- `--bulma-navbar-dropdown-item-l`, `--bulma-navbar-dropdown-item-background-l`\n- `--bulma-navbar-dropdown-item-color-l`, `--bulma-navbar-divider-background-l`\n- `--bulma-navbar-divider-height`, `--bulma-navbar-bottom-box-shadow-size`\n\n**Notification Variables:**\n\n- `--bestax-notification-h`, `--bestax-notification-s`, `--bestax-notification-background-l`\n- `--bestax-notification-color-l`, `--bestax-notification-code-background-color`\n- `--bestax-notification-radius`, `--bestax-notification-padding`\n\n**Pagination Variables:**\n\n- `--bulma-pagination-margin`, `--bulma-pagination-min-width`\n- `--bulma-pagination-item-h`, `--bulma-pagination-item-s`, `--bulma-pagination-item-l`\n- `--bulma-pagination-item-background-l-delta`, `--bulma-pagination-item-hover-background-l-delta`\n- `--bulma-pagination-item-active-background-l-delta`, `--bulma-pagination-item-border-style`\n- `--bulma-pagination-item-border-width`, `--bulma-pagination-item-border-l`\n- `--bulma-pagination-item-border-l-delta`, `--bulma-pagination-item-hover-border-l-delta`\n- `--bulma-pagination-item-active-border-l-delta`, `--bulma-pagination-item-focus-border-l-delta`\n- `--bulma-pagination-item-color-l`, `--bulma-pagination-item-font-size`\n- `--bulma-pagination-item-margin`, `--bulma-pagination-item-padding-left`\n- `--bulma-pagination-item-padding-right`, `--bulma-pagination-item-outer-shadow-h`\n- `--bulma-pagination-item-outer-shadow-s`, `--bulma-pagination-item-outer-shadow-l`\n- `--bulma-pagination-item-outer-shadow-a`, `--bulma-pagination-nav-padding-left`\n- `--bulma-pagination-nav-padding-right`, `--bulma-pagination-disabled-color`\n- `--bulma-pagination-disabled-background-color`, `--bulma-pagination-disabled-border-color`\n- `--bulma-pagination-current-color`, `--bulma-pagination-current-background-color`\n- `--bulma-pagination-current-border-color`, `--bulma-pagination-ellipsis-color`\n- `--bulma-pagination-shadow-inset`, `--bulma-pagination-selected-item-h`\n- `--bulma-pagination-selected-item-s`, `--bulma-pagination-selected-item-l`\n- `--bulma-pagination-selected-item-background-l`, `--bulma-pagination-selected-item-border-l`\n- `--bulma-pagination-selected-item-color-l`\n\n**Panel Variables:**\n\n- `--bulma-panel-margin`, `--bulma-panel-item-border`, `--bulma-panel-radius`, `--bulma-panel-shadow`\n- `--bulma-panel-heading-line-height`, `--bulma-panel-heading-padding`, `--bulma-panel-heading-radius`\n- `--bulma-panel-heading-size`, `--bulma-panel-heading-weight`, `--bulma-panel-tabs-font-size`\n- `--bulma-panel-tab-border-bottom-color`, `--bulma-panel-tab-border-bottom-style`\n- `--bulma-panel-tab-border-bottom-width`, `--bulma-panel-tab-active-color`\n- `--bulma-panel-list-item-color`, `--bulma-panel-list-item-hover-color`\n- `--bulma-panel-block-color`, `--bulma-panel-block-hover-background-color`\n- `--bulma-panel-block-active-border-left-color`, `--bulma-panel-block-active-color`\n- `--bulma-panel-block-active-icon-color`, `--bulma-panel-icon-color`\n\n**Progress Variables:**\n\n- `--bulma-progress-border-radius`, `--bulma-progress-bar-background-color`\n- `--bulma-progress-value-background-color`, `--bulma-progress-indeterminate-duration`\n\n**Skeleton Variables:**\n\n- `--bulma-skeleton-background`, `--bulma-skeleton-radius`, `--bulma-skeleton-block-min-height`\n- `--bulma-skeleton-lines-gap`, `--bulma-skeleton-line-height`\n\n**Table Variables:**\n\n- `--bulma-table-color`, `--bulma-table-background-color`, `--bulma-table-cell-border-color`\n- `--bulma-table-cell-border-style`, `--bulma-table-cell-border-width`, `--bulma-table-cell-padding`\n- `--bulma-table-cell-heading-color`, `--bulma-table-cell-text-align`\n- `--bulma-table-head-cell-border-width`, `--bulma-table-head-cell-color`\n- `--bulma-table-foot-cell-border-width`, `--bulma-table-foot-cell-color`\n- `--bulma-table-head-background-color`, `--bulma-table-body-background-color`\n- `--bulma-table-foot-background-color`, `--bulma-table-row-hover-background-color`\n- `--bulma-table-row-active-background-color`, `--bulma-table-row-active-color`\n- `--bulma-table-striped-row-even-background-color`, `--bulma-table-striped-row-even-hover-background-color`\n\n**Tabs Variables:**\n\n- `--bulma-tabs-border-bottom-color`, `--bulma-tabs-border-bottom-style`, `--bulma-tabs-border-bottom-width`\n- `--bulma-tabs-link-color`, `--bulma-tabs-link-hover-border-bottom-color`, `--bulma-tabs-link-hover-color`\n- `--bulma-tabs-link-active-border-bottom-color`, `--bulma-tabs-link-active-color`, `--bulma-tabs-link-padding`\n- `--bulma-tabs-boxed-link-radius`, `--bulma-tabs-boxed-link-hover-background-color`\n- `--bulma-tabs-boxed-link-hover-border-bottom-color`, `--bulma-tabs-boxed-link-active-background-color`\n- `--bulma-tabs-boxed-link-active-border-color`, `--bulma-tabs-boxed-link-active-border-bottom-color`\n- `--bulma-tabs-toggle-link-border-color`, `--bulma-tabs-toggle-link-border-style`\n- `--bulma-tabs-toggle-link-border-width`, `--bulma-tabs-toggle-link-hover-background-color`\n- `--bulma-tabs-toggle-link-hover-border-color`, `--bulma-tabs-toggle-link-radius`\n- `--bulma-tabs-toggle-link-active-background-color`, `--bulma-tabs-toggle-link-active-border-color`\n- `--bulma-tabs-toggle-link-active-color`\n\n**Tag Variables:**\n\n- `--bulma-tag-h`, `--bulma-tag-s`, `--bulma-tag-background-l`, `--bulma-tag-background-l-delta`\n- `--bulma-tag-hover-background-l-delta`, `--bulma-tag-active-background-l-delta`\n- `--bulma-tag-color-l`, `--bulma-tag-radius`, `--bulma-tag-delete-margin`\n\n**Title & Subtitle Variables:**\n\n- `--bestax-title-color`, `--bestax-title-family`, `--bestax-title-size`, `--bestax-title-weight`\n- `--bestax-title-line-height`, `--bestax-title-strong-color`, `--bestax-title-strong-weight`\n- `--bestax-title-sub-size`, `--bestax-title-sup-size`\n- `--bulma-subtitle-color`, `--bulma-subtitle-family`, `--bulma-subtitle-size`, `--bulma-subtitle-weight`\n- `--bulma-subtitle-line-height`, `--bulma-subtitle-strong-color`, `--bulma-subtitle-strong-weight`\n\n**Content Variables:**\n\n- `--bulma-content-heading-color`, `--bulma-content-heading-weight`, `--bulma-content-heading-line-height`\n- `--bulma-content-block-margin-bottom`, `--bulma-content-blockquote-background-color`\n- `--bulma-content-blockquote-border-left`, `--bulma-content-blockquote-padding`, `--bulma-content-pre-padding`\n- `--bulma-content-table-cell-border`, `--bulma-content-table-cell-border-width`\n- `--bulma-content-table-cell-padding`, `--bulma-content-table-cell-heading-color`\n- `--bulma-content-table-head-cell-border-width`, `--bulma-content-table-head-cell-color`\n- `--bulma-content-table-body-last-row-cell-border-bottom-width`\n- `--bulma-content-table-foot-cell-border-width`, `--bulma-content-table-foot-cell-color`\n\n**Control Variables:**\n\n- `--bulma-control-radius`, `--bulma-control-radius-small`, `--bulma-control-border-width`\n- `--bulma-control-height`, `--bulma-control-line-height`, `--bulma-control-padding-vertical`\n- `--bulma-control-padding-horizontal`, `--bulma-control-size`, `--bulma-control-focus-shadow-l`\n\n**Delete Variables:**\n\n- `--bulma-delete-dimensions`, `--bulma-delete-background-l`, `--bulma-delete-background-alpha`\n- `--bulma-delete-color`\n\n**File Variables:**\n\n- `--bulma-file-radius`, `--bulma-file-name-border-color`, `--bulma-file-name-border-style`\n- `--bulma-file-name-border-width`, `--bulma-file-name-max-width`\n- `--bulma-file-h`, `--bulma-file-s`, `--bulma-file-background-l`, `--bulma-file-background-l-delta`\n- `--bulma-file-hover-background-l-delta`, `--bulma-file-active-background-l-delta`\n- `--bulma-file-border-l`, `--bulma-file-border-l-delta`, `--bulma-file-hover-border-l-delta`\n- `--bulma-file-active-border-l-delta`, `--bulma-file-cta-color-l`, `--bulma-file-name-color-l`\n- `--bulma-file-color-l-delta`, `--bulma-file-hover-color-l-delta`, `--bulma-file-active-color-l-delta`\n\n**Footer Variables:**\n\n- `--bulma-footer-background-color`, `--bulma-footer-color`, `--bulma-footer-padding`\n\n**Hero Variables:**\n\n- `--bulma-hero-body-padding`, `--bulma-hero-body-padding-tablet`, `--bulma-hero-body-padding-small`\n- `--bulma-hero-body-padding-medium`, `--bulma-hero-body-padding-large`\n\n**Icon Variables:**\n\n- `--bulma-icon-dimensions`, `--bulma-icon-dimensions-small`, `--bulma-icon-dimensions-medium`\n- `--bulma-icon-dimensions-large`, `--bulma-icon-text-spacing`\n\n**Media Variables:**\n\n- `--bulma-media-border-color`, `--bulma-media-border-size`, `--bulma-media-spacing`\n- `--bulma-media-spacing-large`, `--bulma-media-content-spacing`, `--bulma-media-level-1-spacing`\n- `--bulma-media-level-1-content-spacing`, `--bulma-media-level-2-spacing`\n\n**Section Variables:**\n\n- `--bulma-section-padding`, `--bulma-section-padding-desktop`, `--bulma-section-padding-medium`\n- `--bulma-section-padding-large`\n\n**Burger Variables:**\n\n- `--bulma-burger-h`, `--bulma-burger-s`, `--bulma-burger-l`, `--bulma-burger-border-radius`\n- `--bulma-burger-gap`, `--bulma-burger-item-height`, `--bulma-burger-item-width`\n\nThe Theme component also supports all [Bulma helper class props](./usebulmaclasses.md) for styling the wrapper element.",
62
+ "doc": "# Theme\n\n## Overview\n\nThe `Theme` component provides a powerful way to customize Bulma's appearance using CSS custom properties (CSS variables). It allows you to override Bulma's design tokens like colors, spacing, typography, and other visual properties either globally or locally within specific component trees. The Theme component supports both CSS variable injection via props and direct CSS variable objects.\n\n---\n\n## Import\n\n```tsx\nimport { Theme } from '@allxsmith/bestax-bulma';\n```\n\n---\n\n## Usage\n\n### Basic Theme Customization\n\n```tsx\nfunction BasicThemeCustomization() {\n return (\n <Theme primaryH=\"270\" primaryS=\"100%\" primaryL=\"50%\">\n <Box p=\"4\">\n <Button color=\"primary\">Purple Primary Button</Button>\n </Box>\n </Theme>\n );\n}\n```\n\n### Global Theme (Root Level)\n\n```tsx\nfunction GlobalTheme() {\n return (\n <Theme isRoot={true} primaryH=\"270\" primaryS=\"100%\" primaryL=\"50%\">\n <div>\n <Button color=\"primary\">Global Purple Theme</Button>\n <Button color=\"info\">Info Button</Button>\n </div>\n </Theme>\n );\n}\n```\n\n### Dark Mode\n\nThe `colorMode` prop sets Bulma's `data-theme` on `<html>`, flipping the light/dark scheme globally.\nUse `'system'` to follow the OS preference.\n\n:::warning Single-mode designs should pin `colorMode`\n\nOmitting `colorMode` preserves whatever `data-theme` is already set — and when nothing has set\none (the usual case), the scheme follows the visitor's OS: Bulma's text colors flip on a\ndark-mode machine even if your design is light-only, breaking contrast against any fixed custom\nbackgrounds. If you support only one mode, pin it (`<Theme isRoot colorMode=\"light\">`); if you\nsupport both, don't hardcode surface/text colors — see\n[Dark Mode & Contrast](../../guides/features/css-variables.md#dark-mode--contrast).\n\n:::\n\n```tsx\nimport { useState } from 'react';\n\nfunction App() {\n const [mode, setMode] = useState<'light' | 'dark' | 'system'>('system');\n return (\n <Theme isRoot colorMode={mode}>\n <Button color=\"primary\" onClick={() => setMode('dark')}>\n Dark\n </Button>\n <Button color=\"primary\" onClick={() => setMode('light')}>\n Light\n </Button>\n <Button onClick={() => setMode('system')}>System</Button>\n </Theme>\n );\n}\n```\n\n### Local Theme (Component Level)\n\n```tsx\nfunction LocalTheme() {\n return (\n <div>\n <Button color=\"primary\">Standard Primary</Button>\n\n <Theme primaryH=\"120\" primaryS=\"100%\" primaryL=\"40%\">\n <Button color=\"primary\">Green Primary</Button>\n </Theme>\n\n <Button color=\"primary\">Standard Primary Again</Button>\n </div>\n );\n}\n```\n\n### Using CSS Variables Object\n\n```tsx\nfunction SunsetTheme() {\n const sunsetTheme = {\n '--bulma-scheme-h': '18',\n '--bulma-scheme-s': '90%',\n '--bulma-light-l': '85%',\n '--bulma-dark-l': '20%',\n '--bulma-primary-h': '25',\n '--bulma-primary-s': '85%',\n '--bulma-primary-l': '55%',\n };\n\n return (\n <Theme bulmaVars={sunsetTheme} isRoot>\n <Box p=\"4\">\n <Title>Sunset Theme</Title>\n <Button color=\"primary\">Sunset Button</Button>\n <Button color=\"info\">Info Button</Button>\n </Box>\n </Theme>\n );\n}\n```\n\n### Advanced CSS Variables Usage\n\n```tsx\nfunction TypographyTheme() {\n const typographyTheme = {\n '--bulma-family-primary': '\"Helvetica Neue\", sans-serif',\n '--bulma-family-code': '\"Fira Code\", monospace',\n '--bulma-size-normal': '16px',\n '--bulma-weight-bold': '700',\n '--bestax-title-color': 'hsl(0, 0%, 21%)',\n '--bulma-subtitle-color': 'hsl(0, 0%, 48%)',\n };\n\n return (\n <Theme bulmaVars={typographyTheme}>\n <Title>Custom Typography</Title>\n <Subtitle>With custom fonts and weights</Subtitle>\n </Theme>\n );\n}\n```\n\n```tsx\nfunction CustomButtonTheme() {\n const customButton = {\n '--bestax-button-border-radius': '12px',\n '--bestax-button-padding-vertical': '0.75rem',\n '--bestax-button-padding-horizontal': '1.5rem',\n '--bestax-button-focus-box-shadow-size': '0 0 0 0.2rem',\n '--bestax-button-focus-box-shadow-color': 'rgba(72, 95, 199, 0.25)',\n };\n\n return (\n <Theme bulmaVars={customButton}>\n <Button color=\"primary\">Custom Styled Button</Button>\n </Theme>\n );\n}\n```\n\n```tsx\nfunction SpacingTheme() {\n const spacingTheme = {\n '--bulma-block-spacing': '2rem',\n '--bulma-column-gap': '1rem',\n '--bulma-section-padding': '4rem 1.5rem',\n '--bestax-box-padding': '2rem',\n '--bestax-card-content-padding': '2rem',\n };\n\n return (\n <Theme bulmaVars={spacingTheme}>\n <Section>\n <Columns>\n <Column>\n <Box>Content with custom spacing</Box>\n </Column>\n <Column>\n <Card>\n <CardContent>Custom card padding</CardContent>\n </Card>\n </Column>\n </Columns>\n </Section>\n </Theme>\n );\n}\n```\n\n### Complete Color Scheme\n\n```tsx\nfunction ForestTheme() {\n const forestScheme = {\n schemeH: '150', // forest green hue\n schemeS: '50%',\n lightL: '80%',\n lightInvertL: '20%',\n darkL: '18%',\n darkInvertL: '85%',\n softL: '55%',\n boldL: '35%',\n primaryH: '160',\n primaryS: '60%',\n primaryL: '45%',\n linkH: '155',\n linkS: '65%',\n linkL: '40%',\n successH: '120',\n successS: '70%',\n successL: '45%',\n warningH: '45',\n warningS: '85%',\n warningL: '55%',\n dangerH: '355',\n dangerS: '75%',\n dangerL: '50%',\n hoverBackgroundLDelta: '4%',\n activeBackgroundLDelta: '8%',\n };\n\n return (\n <Theme {...forestScheme} isRoot>\n <Box p=\"4\">\n <Title>Forest Theme</Title>\n <Button color=\"primary\">Forest Primary</Button>\n <Button color=\"success\">Success</Button>\n <Button color=\"info\">Info</Button>\n <Button color=\"warning\">Warning</Button>\n <Button color=\"danger\">Danger</Button>\n </Box>\n </Theme>\n );\n}\n```\n\n### Theme with Styling\n\n```tsx\nfunction StyledTheme() {\n return (\n <Theme\n className=\"custom-theme-wrapper\"\n primaryH=\"45\"\n primaryS=\"100%\"\n primaryL=\"50%\"\n p=\"5\"\n m=\"3\"\n textAlign=\"centered\"\n backgroundColor=\"light\"\n >\n <Title>Styled Theme Container</Title>\n <Button color=\"primary\">Styled Button</Button>\n </Theme>\n );\n}\n```\n\n### Nested Themes\n\n```tsx\nfunction NestedThemes() {\n return (\n <Theme primaryH=\"210\" primaryS=\"60%\" primaryL=\"45%\" p=\"4\">\n <Title>Outer Theme (Blue)</Title>\n <Button color=\"primary\">Blue Primary</Button>\n\n <Theme\n primaryH=\"120\"\n primaryS=\"70%\"\n primaryL=\"40%\"\n p=\"3\"\n mt=\"4\"\n backgroundColor=\"light\"\n >\n <Title size=\"4\">Inner Theme (Green)</Title>\n <Button color=\"primary\">Green Primary</Button>\n </Theme>\n\n <Button color=\"primary\" mt=\"3\">\n Blue Primary Again\n </Button>\n </Theme>\n );\n}\n```\n\n### Theme with ConfigProvider\n\n```tsx\nfunction PrefixedTheme() {\n return (\n <ConfigProvider classPrefix=\"bestax-\">\n <Theme primaryH=\"300\" primaryS=\"80%\" primaryL=\"50%\" isRoot>\n <Button color=\"primary\">Prefixed & Themed Button</Button>\n </Theme>\n </ConfigProvider>\n );\n}\n```\n\n---\n\n## Best Practices\n\n### Global vs Local Themes\n\n- Use `isRoot={true}` for application-wide themes that should affect all components\n- Use local themes (default `isRoot={false}`) for component-specific styling or theme variations\n- Local themes inherit from parent themes and can override specific variables\n\n### CSS Variable Naming\n\n- All Bulma CSS variables follow the `--bulma-*` naming convention\n- Use the `bulmaVars` prop when you need to set variables not covered by individual props\n- Individual props (like `primaryH`) are converted to their corresponding CSS variable names\n- `bulmaVars` also accepts the scheme surface variables — `--bulma-scheme-main`, `--bulma-scheme-main-bis`, `--bulma-scheme-main-ter`, `--bulma-scheme-invert`, `--bulma-scheme-invert-bis`, `--bulma-scheme-invert-ter` — so overriding `--bulma-scheme-main-bis`/`-ter` re-tints every scheme-background band (e.g., `<Section bgColor=\"scheme-main-bis\">`) at once\n- `bulmaVars` also accepts `--bulma-shadow` (plus `--bulma-shadow-h`/`-s`/`-l`) — the upstream token that `.box`, `.card`, `.dropdown`, and `.panel` derive their own shadow variables from. Those selectors re-declare their derived variable (e.g. `--bulma-box-shadow`) on themselves, so setting it from an ancestor `Theme` is only inherited and never wins; overriding `--bulma-shadow` itself is the one override that cascades. There is no individual `shadow` prop for this — `shadow` already names the unrelated `shadowless` helper class — so reach it through `bulmaVars`\n\n### Performance Considerations\n\n- Prefer setting themes at higher levels in your component tree rather than deeply nested\n- Use `isRoot={true}` sparingly to avoid CSS specificity issues\n- CSS variables are inherited, so child themes only need to override specific variables\n\n### Color System\n\n- Bulma uses HSL (Hue, Saturation, Lightness) for its color system\n- Hue values range from 0-360 (color wheel degrees)\n- Saturation and Lightness are typically percentages (e.g., '50%')\n- The scheme variables control the base color relationships\n\n---\n\n## API Reference\n\n### Prop to CSS Variable Conversion\n\nThe Theme component automatically converts camelCase prop names to their corresponding CSS custom property names using the following pattern:\n\n```\npropName → --bulma-prop-name\n```\n\n**Examples:**\n\n- `primaryH` → `--bulma-primary-h`\n- `schemeS` → `--bulma-scheme-s`\n- `lightL` → `--bulma-light-l`\n- `hoverBackgroundLDelta` → `--bulma-hover-background-l-delta`\n- `cardContentPadding` → `--bestax-card-content-padding`\n\n### Prop vs bulmaVars\n\nYou can use CSS variables in two ways:\n\n1. **Individual Props** (recommended for commonly used variables):\n\n ```tsx\n <Theme primaryH=\"270\" primaryS=\"100%\" primaryL=\"50%\" />\n ```\n\n2. **bulmaVars Object** (for less common variables or when you have many variables):\n\n ```tsx\n <Theme\n bulmaVars={{\n '--bulma-primary-h': '270',\n '--bulma-primary-s': '100%',\n '--bulma-primary-l': '50%',\n '--bestax-card-content-padding': '2rem',\n }}\n />\n ```\n\n3. **Combined** (props take precedence over bulmaVars):\n ```tsx\n <Theme\n primaryH=\"270\" // This takes precedence\n bulmaVars={{\n '--bulma-primary-h': '180', // This is overridden\n '--bestax-card-content-padding': '2rem',\n }}\n />\n ```\n\n### All Supported Props\n\nThe Theme component supports props for all 500+ Bulma CSS variables. Here's the complete list organized by category:\n\n**Scheme & Base Color Props:**\n\n- `schemeH`, `schemeS`, `lightL`, `lightInvertL`, `darkL`, `darkInvertL`\n- `softL`, `boldL`, `softInvertL`, `boldInvertL`\n- `hoverBackgroundLDelta`, `activeBackgroundLDelta`, `hoverBorderLDelta`, `activeBorderLDelta`\n- `hoverColorLDelta`, `activeColorLDelta`, `hoverShadowADelta`, `activeShadowADelta`\n\n**Color Props:**\n\n- `primaryH`, `primaryS`, `primaryL`, `linkH`, `linkS`, `linkL`\n- `infoH`, `infoS`, `infoL`, `successH`, `successS`, `successL`\n- `warningH`, `warningS`, `warningL`, `dangerH`, `dangerS`, `dangerL`\n\n**Typography Props:**\n\n- `familyPrimary`, `familySecondary`, `familyCode`\n- `sizeSmall`, `sizeNormal`, `sizeMedium`, `sizeLarge`\n- `weightLight`, `weightNormal`, `weightMedium`, `weightSemibold`, `weightBold`, `weightExtrabold`\n- `bodyBackgroundColor`, `bodySize`, `bodyMinWidth`, `bodyRendering`, `bodyFamily`\n- `bodyOverflowX`, `bodyOverflowY`, `bodyColor`, `bodyFontSize`, `bodyWeight`, `bodyLineHeight`\n- `codeFamily`, `codePadding`, `codeWeight`, `codeSize`, `smallFontSize`\n- `hrBackgroundColor`, `hrHeight`, `hrMargin`, `strongColor`, `strongWeight`\n- `preFontSize`, `prePadding`, `preCodeFontSize`\n\n**Layout & Spacing Props:**\n\n- `blockSpacing`, `duration`, `easing`, `speed`, `arrowColor`, `loadingColor`\n- `radiusSmall`, `radius`, `radiusMedium`, `radiusLarge`, `radiusRounded`\n- `columnGap`, `gridGap`, `gridColumnCount`, `gridColumnMin`\n- `gridCellColumnSpan`, `gridCellColumnStart`\n\n**Box Props:**\n\n- `boxBackgroundColor`, `boxColor`, `boxRadius`, `boxShadow`, `boxPadding`\n- `boxLinkHoverShadow`, `boxLinkActiveShadow`\n\n**Breadcrumb Props:**\n\n- `breadcrumbItemColor`, `breadcrumbItemHoverColor`, `breadcrumbItemActiveColor`\n- `breadcrumbItemPaddingVertical`, `breadcrumbItemPaddingHorizontal`, `breadcrumbItemSeparatorColor`\n\n**Burger Props:**\n\n- `burgerH`, `burgerS`, `burgerL`, `burgerBorderRadius`, `burgerGap`\n- `burgerItemHeight`, `burgerItemWidth`\n\n**Card Props:**\n\n- `cardColor`, `cardBackgroundColor`, `cardShadow`, `cardRadius`\n- `cardHeaderBackgroundColor`, `cardHeaderColor`, `cardHeaderPadding`\n- `cardHeaderShadow`, `cardHeaderWeight`, `cardContentBackgroundColor`\n- `cardContentPadding`, `cardFooterBackgroundColor`, `cardFooterBorderTop`\n- `cardFooterPadding`, `cardMediaMargin`\n\n**Content Props:**\n\n- `contentHeadingColor`, `contentHeadingWeight`, `contentHeadingLineHeight`\n- `contentBlockMarginBottom`, `contentBlockquoteBackgroundColor`, `contentBlockquoteBorderLeft`\n- `contentBlockquotePadding`, `contentPrePadding`, `contentTableCellBorder`\n- `contentTableCellBorderWidth`, `contentTableCellPadding`, `contentTableCellHeadingColor`\n- `contentTableHeadCellBorderWidth`, `contentTableHeadCellColor`\n- `contentTableBodyLastRowCellBorderBottomWidth`, `contentTableFootCellBorderWidth`\n- `contentTableFootCellColor`\n\n**Control Props:**\n\n- `controlRadius`, `controlRadiusSmall`, `controlBorderWidth`, `controlHeight`\n- `controlLineHeight`, `controlPaddingVertical`, `controlPaddingHorizontal`\n- `controlSize`, `controlFocusShadowL`\n\n**Delete Props:**\n\n- `deleteDimensions`, `deleteBackgroundL`, `deleteBackgroundAlpha`, `deleteColor`\n\n**Dropdown Props:**\n\n- `dropdownMenuMinWidth`, `dropdownContentBackgroundColor`, `dropdownContentOffset`\n- `dropdownContentPaddingBottom`, `dropdownContentPaddingTop`, `dropdownContentRadius`\n- `dropdownContentShadow`, `dropdownContentZ`, `dropdownItemH`, `dropdownItemS`\n- `dropdownItemL`, `dropdownItemBackgroundL`, `dropdownItemBackgroundLDelta`\n- `dropdownItemHoverBackgroundLDelta`, `dropdownItemActiveBackgroundLDelta`\n- `dropdownItemColorL`, `dropdownItemSelectedH`, `dropdownItemSelectedS`\n- `dropdownItemSelectedL`, `dropdownItemSelectedBackgroundL`, `dropdownItemSelectedColorL`\n- `dropdownDividerBackgroundColor`\n\n**File Props:**\n\n- `fileRadius`, `fileNameBorderColor`, `fileNameBorderStyle`, `fileNameBorderWidth`\n- `fileNameMaxWidth`, `fileH`, `fileS`, `fileBackgroundL`, `fileBackgroundLDelta`\n- `fileHoverBackgroundLDelta`, `fileActiveBackgroundLDelta`, `fileBorderL`\n- `fileBorderLDelta`, `fileHoverBorderLDelta`, `fileActiveBorderLDelta`\n- `fileCtaColorL`, `fileNameColorL`, `fileColorLDelta`, `fileHoverColorLDelta`\n- `fileActiveColorLDelta`\n\n**Footer Props:**\n\n- `footerBackgroundColor`, `footerColor`, `footerPadding`\n\n**Hero Props:**\n\n- `heroBodyPadding`, `heroBodyPaddingTablet`, `heroBodyPaddingSmall`\n- `heroBodyPaddingMedium`, `heroBodyPaddingLarge`\n\n**Icon Props:**\n\n- `iconDimensions`, `iconDimensionsSmall`, `iconDimensionsMedium`\n- `iconDimensionsLarge`, `iconTextSpacing`\n\n**Input Props:**\n\n- `inputH`, `inputS`, `inputL`, `inputBorderStyle`, `inputBorderL`\n- `inputBorderLDelta`, `inputHoverBorderLDelta`, `inputActiveBorderLDelta`\n- `inputFocusH`, `inputFocusS`, `inputFocusL`, `inputFocusShadowSize`\n- `inputFocusShadowAlpha`, `inputColorL`, `inputBackgroundL`, `inputBackgroundLDelta`\n- `inputHeight`, `inputShadow`, `inputPlaceholderColor`, `inputDisabledColor`\n- `inputDisabledBackgroundColor`, `inputDisabledBorderColor`, `inputDisabledPlaceholderColor`\n- `inputArrow`, `inputIconColor`, `inputIconHoverColor`, `inputIconFocusColor`, `inputRadius`\n\n**Media Props:**\n\n- `mediaBorderColor`, `mediaBorderSize`, `mediaSpacing`, `mediaSpacingLarge`\n- `mediaContentSpacing`, `mediaLevel1Spacing`, `mediaLevel1ContentSpacing`, `mediaLevel2Spacing`\n\n**Menu Props:**\n\n- `menuItemH`, `menuItemS`, `menuItemL`, `menuItemBackgroundL`, `menuItemBackgroundLDelta`\n- `menuItemHoverBackgroundLDelta`, `menuItemActiveBackgroundLDelta`, `menuItemColorL`\n- `menuItemRadius`, `menuItemSelectedH`, `menuItemSelectedS`, `menuItemSelectedL`\n- `menuItemSelectedBackgroundL`, `menuItemSelectedColorL`, `menuListBorderLeft`\n- `menuListLineHeight`, `menuListLinkPadding`, `menuNestedListMargin`\n- `menuNestedListPaddingLeft`, `menuLabelColor`, `menuLabelFontSize`\n- `menuLabelLetterSpacing`, `menuLabelSpacing`\n\n**Message Props:**\n\n- `messageH`, `messageS`, `messageBackgroundL`, `messageBorderL`, `messageBorderLDelta`\n- `messageBorderStyle`, `messageBorderWidth`, `messageColorL`, `messageRadius`\n- `messageHeaderWeight`, `messageHeaderPadding`, `messageHeaderRadius`\n- `messageHeaderBodyBorderWidth`, `messageHeaderBackgroundL`, `messageHeaderColorL`\n- `messageBodyBorderWidth`, `messageBodyColor`, `messageBodyPadding`\n- `messageBodyRadius`, `messageBodyPreCodeBackgroundColor`\n\n**Modal Props:**\n\n- `modalZ`, `modalBackgroundBackgroundColor`, `modalContentWidth`, `modalContentMarginMobile`\n- `modalContentSpacingMobile`, `modalContentSpacingTablet`, `modalCloseDimensions`\n- `modalCloseRight`, `modalCloseTop`, `modalCardSpacing`, `modalCardHeadBackgroundColor`\n- `modalCardHeadPadding`, `modalCardHeadRadius`, `modalCardTitleColor`\n- `modalCardTitleLineHeight`, `modalCardTitleSize`, `modalCardFootBackgroundColor`\n- `modalCardFootRadius`, `modalCardBodyBackgroundColor`, `modalCardBodyPadding`\n\n**Navbar Props:**\n\n- `navbarH`, `navbarS`, `navbarL`, `navbarBackgroundColor`, `navbarBoxShadowSize`\n- `navbarBoxShadowColor`, `navbarPaddingVertical`, `navbarPaddingHorizontal`\n- `navbarZ`, `navbarFixedZ`, `navbarItemBackgroundA`, `navbarItemBackgroundL`\n- `navbarItemBackgroundLDelta`, `navbarItemHoverBackgroundLDelta`, `navbarItemActiveBackgroundLDelta`\n- `navbarItemColorL`, `navbarItemSelectedH`, `navbarItemSelectedS`, `navbarItemSelectedL`\n- `navbarItemSelectedBackgroundL`, `navbarItemSelectedColorL`, `navbarItemImgMaxHeight`\n- `navbarBurgerColor`, `navbarTabHoverBackgroundColor`, `navbarTabHoverBorderBottomColor`\n- `navbarTabActiveColor`, `navbarTabActiveBackgroundColor`, `navbarTabActiveBorderBottomColor`\n- `navbarTabActiveBorderBottomStyle`, `navbarTabActiveBorderBottomWidth`\n- `navbarDropdownBackgroundColor`, `navbarDropdownBorderL`, `navbarDropdownBorderColor`\n- `navbarDropdownBorderStyle`, `navbarDropdownBorderWidth`, `navbarDropdownOffset`\n- `navbarDropdownArrow`, `navbarDropdownRadius`, `navbarDropdownZ`\n- `navbarDropdownBoxedRadius`, `navbarDropdownBoxedShadow`, `navbarDropdownItemH`\n- `navbarDropdownItemS`, `navbarDropdownItemL`, `navbarDropdownItemBackgroundL`\n- `navbarDropdownItemColorL`, `navbarDividerBackgroundL`, `navbarDividerHeight`\n- `navbarBottomBoxShadowSize`\n\n**Notification Props:**\n\n- `notificationH`, `notificationS`, `notificationBackgroundL`, `notificationColorL`\n- `notificationCodeBackgroundColor`, `notificationRadius`, `notificationPadding`\n\n**Pagination Props:**\n\n- `paginationMargin`, `paginationMinWidth`, `paginationItemH`, `paginationItemS`\n- `paginationItemL`, `paginationItemBackgroundLDelta`, `paginationItemHoverBackgroundLDelta`\n- `paginationItemActiveBackgroundLDelta`, `paginationItemBorderStyle`, `paginationItemBorderWidth`\n- `paginationItemBorderL`, `paginationItemBorderLDelta`, `paginationItemHoverBorderLDelta`\n- `paginationItemActiveBorderLDelta`, `paginationItemFocusBorderLDelta`, `paginationItemColorL`\n- `paginationItemFontSize`, `paginationItemMargin`, `paginationItemPaddingLeft`\n- `paginationItemPaddingRight`, `paginationItemOuterShadowH`, `paginationItemOuterShadowS`\n- `paginationItemOuterShadowL`, `paginationItemOuterShadowA`, `paginationNavPaddingLeft`\n- `paginationNavPaddingRight`, `paginationDisabledColor`, `paginationDisabledBackgroundColor`\n- `paginationDisabledBorderColor`, `paginationCurrentColor`, `paginationCurrentBackgroundColor`\n- `paginationCurrentBorderColor`, `paginationEllipsisColor`, `paginationShadowInset`\n- `paginationSelectedItemH`, `paginationSelectedItemS`, `paginationSelectedItemL`\n- `paginationSelectedItemBackgroundL`, `paginationSelectedItemBorderL`, `paginationSelectedItemColorL`\n\n**Panel Props:**\n\n- `panelMargin`, `panelItemBorder`, `panelRadius`, `panelShadow`, `panelHeadingLineHeight`\n- `panelHeadingPadding`, `panelHeadingRadius`, `panelHeadingSize`, `panelHeadingWeight`\n- `panelTabsFontSize`, `panelTabBorderBottomColor`, `panelTabBorderBottomStyle`\n- `panelTabBorderBottomWidth`, `panelTabActiveColor`, `panelListItemColor`\n- `panelListItemHoverColor`, `panelBlockColor`, `panelBlockHoverBackgroundColor`\n- `panelBlockActiveBorderLeftColor`, `panelBlockActiveColor`, `panelBlockActiveIconColor`\n- `panelIconColor`\n\n**Progress Props:**\n\n- `progressBorderRadius`, `progressBarBackgroundColor`, `progressValueBackgroundColor`\n- `progressIndeterminateDuration`\n\n**Section Props:**\n\n- `sectionPadding`, `sectionPaddingDesktop`, `sectionPaddingMedium`, `sectionPaddingLarge`\n\n**Skeleton Props:**\n\n- `skeletonBackground`, `skeletonRadius`, `skeletonBlockMinHeight`, `skeletonLinesGap`\n- `skeletonLineHeight`\n\n**Table Props:**\n\n- `tableColor`, `tableBackgroundColor`, `tableCellBorderColor`, `tableCellBorderStyle`\n- `tableCellBorderWidth`, `tableCellPadding`, `tableCellHeadingColor`, `tableCellTextAlign`\n- `tableHeadCellBorderWidth`, `tableHeadCellColor`, `tableFootCellBorderWidth`\n- `tableFootCellColor`, `tableHeadBackgroundColor`, `tableBodyBackgroundColor`\n- `tableFootBackgroundColor`, `tableRowHoverBackgroundColor`, `tableRowActiveBackgroundColor`\n- `tableRowActiveColor`, `tableStripedRowEvenBackgroundColor`, `tableStripedRowEvenHoverBackgroundColor`\n\n**Tabs Props:**\n\n- `tabsBorderBottomColor`, `tabsBorderBottomStyle`, `tabsBorderBottomWidth`\n- `tabsLinkColor`, `tabsLinkHoverBorderBottomColor`, `tabsLinkHoverColor`\n- `tabsLinkActiveBorderBottomColor`, `tabsLinkActiveColor`, `tabsLinkPadding`\n- `tabsBoxedLinkRadius`, `tabsBoxedLinkHoverBackgroundColor`, `tabsBoxedLinkHoverBorderBottomColor`\n- `tabsBoxedLinkActiveBackgroundColor`, `tabsBoxedLinkActiveBorderColor`\n- `tabsBoxedLinkActiveBorderBottomColor`, `tabsToggleLinkBorderColor`, `tabsToggleLinkBorderStyle`\n- `tabsToggleLinkBorderWidth`, `tabsToggleLinkHoverBackgroundColor`, `tabsToggleLinkHoverBorderColor`\n- `tabsToggleLinkRadius`, `tabsToggleLinkActiveBackgroundColor`, `tabsToggleLinkActiveBorderColor`\n- `tabsToggleLinkActiveColor`\n\n**Tag Props:**\n\n- `tagH`, `tagS`, `tagBackgroundL`, `tagBackgroundLDelta`, `tagHoverBackgroundLDelta`\n- `tagActiveBackgroundLDelta`, `tagColorL`, `tagRadius`, `tagDeleteMargin`\n\n**Title & Subtitle Props:**\n\n- `titleColor`, `titleFamily`, `titleSize`, `titleWeight`, `titleLineHeight`\n- `titleStrongColor`, `titleStrongWeight`, `titleSubSize`, `titleSupSize`\n- `subtitleColor`, `subtitleFamily`, `subtitleSize`, `subtitleWeight`\n- `subtitleLineHeight`, `subtitleStrongColor`, `subtitleStrongWeight`\n\n### TypeScript Support\n\nAll props are fully typed in TypeScript. Use IDE autocomplete to discover available props:\n\n```tsx\n// TypeScript will provide autocomplete for all available props\n<Theme\n primaryH=\"270\"\n cardContent={/* TypeScript autocomplete will show all card-related props */}\n/>\n```\n\n---\n\n## See Also\n\n- [ConfigProvider](./config.md) - For class prefixing and configuration\n- [useBulmaClasses](./usebulmaclasses.md) - For applying Bulma helper classes\n- [Bulma CSS Variables Documentation](https://bulma.io/documentation/features/css-variables/) - Official Bulma CSS variables reference\n\n---\n\n## Props\n\n| Prop | Type | Description |\n| ----------- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `children` | `ReactNode` | The child components to apply the theme to. |\n| `className` | `string` | Additional CSS classes for the theme wrapper. |\n| `isRoot` | `boolean` | When `true`, applies CSS variables globally at `:root` level. When `false` (default), applies variables only to the wrapper div. |\n| `colorMode` | `'light' \\| 'dark' \\| 'system'` | Sets Bulma's light/dark scheme by writing the `data-theme` attribute on `<html>`. Always global (even on a scoped `Theme`). `'system'` removes the attribute so Bulma follows the OS `prefers-color-scheme`. Omit to leave the current setting untouched. |\n| `bulmaVars` | `Record<string, string>` | Object containing CSS custom properties as key-value pairs (e.g., `{'--bulma-primary-h': '210'}`). |\n\n### CSS Variable Props\n\nThe Theme component accepts individual CSS variable props that correspond to Bulma's design tokens. These props are automatically converted to their corresponding CSS custom properties (e.g., `primaryH` → `--bulma-primary-h`).\n\n#### Scheme Variables\n\n| Prop | Type | Description | CSS Variable |\n| ------------------------ | -------- | ------------------------------------------------- | ----------------------------------- |\n| `schemeH` | `string` | Base hue for the color scheme (0-360) | `--bulma-scheme-h` |\n| `schemeS` | `string` | Base saturation for the color scheme (percentage) | `--bulma-scheme-s` |\n| `lightL` | `string` | Lightness value for light backgrounds | `--bulma-light-l` |\n| `lightInvertL` | `string` | Inverted lightness for light backgrounds | `--bulma-light-invert-l` |\n| `darkL` | `string` | Lightness value for dark backgrounds | `--bulma-dark-l` |\n| `darkInvertL` | `string` | Inverted lightness for dark backgrounds | `--bulma-dark-invert-l` |\n| `softL` | `string` | Lightness value for soft colors | `--bulma-soft-l` |\n| `boldL` | `string` | Lightness value for bold colors | `--bulma-bold-l` |\n| `softInvertL` | `string` | Inverted lightness for soft colors | `--bulma-soft-invert-l` |\n| `boldInvertL` | `string` | Inverted lightness for bold colors | `--bulma-bold-invert-l` |\n| `hoverBackgroundLDelta` | `string` | Lightness delta for hover background states | `--bulma-hover-background-l-delta` |\n| `activeBackgroundLDelta` | `string` | Lightness delta for active background states | `--bulma-active-background-l-delta` |\n| `hoverBorderLDelta` | `string` | Lightness delta for hover border states | `--bulma-hover-border-l-delta` |\n| `activeBorderLDelta` | `string` | Lightness delta for active border states | `--bulma-active-border-l-delta` |\n| `hoverColorLDelta` | `string` | Lightness delta for hover text color states | `--bulma-hover-color-l-delta` |\n| `activeColorLDelta` | `string` | Lightness delta for active text color states | `--bulma-active-color-l-delta` |\n| `hoverShadowADelta` | `string` | Alpha delta for hover shadow states | `--bulma-hover-shadow-a-delta` |\n| `activeShadowADelta` | `string` | Alpha delta for active shadow states | `--bulma-active-shadow-a-delta` |\n\n#### Color Variables\n\n| Prop | Type | Description | CSS Variable |\n| ---------- | -------- | ------------------------------------- | ------------------- |\n| `primaryH` | `string` | Primary color hue (0-360) | `--bulma-primary-h` |\n| `primaryS` | `string` | Primary color saturation (percentage) | `--bulma-primary-s` |\n| `primaryL` | `string` | Primary color lightness (percentage) | `--bulma-primary-l` |\n| `linkH` | `string` | Link color hue (0-360) | `--bulma-link-h` |\n| `linkS` | `string` | Link color saturation (percentage) | `--bulma-link-s` |\n| `linkL` | `string` | Link color lightness (percentage) | `--bulma-link-l` |\n| `infoH` | `string` | Info color hue (0-360) | `--bulma-info-h` |\n| `infoS` | `string` | Info color saturation (percentage) | `--bulma-info-s` |\n| `infoL` | `string` | Info color lightness (percentage) | `--bulma-info-l` |\n| `successH` | `string` | Success color hue (0-360) | `--bulma-success-h` |\n| `successS` | `string` | Success color saturation (percentage) | `--bulma-success-s` |\n| `successL` | `string` | Success color lightness (percentage) | `--bulma-success-l` |\n| `warningH` | `string` | Warning color hue (0-360) | `--bulma-warning-h` |\n| `warningS` | `string` | Warning color saturation (percentage) | `--bulma-warning-s` |\n| `warningL` | `string` | Warning color lightness (percentage) | `--bulma-warning-l` |\n| `dangerH` | `string` | Danger color hue (0-360) | `--bulma-danger-h` |\n| `dangerS` | `string` | Danger color saturation (percentage) | `--bulma-danger-s` |\n| `dangerL` | `string` | Danger color lightness (percentage) | `--bulma-danger-l` |\n\n#### Shadow Variables\n\nReachable only through `bulmaVars` — there is no individual prop, since `shadow` already names\nthe `BulmaOtherProps` `shadowless` helper class. As noted above, `--bulma-shadow` is the one\noverride that cascades into `.box`/`.card`/`.dropdown`/`.panel` shadows.\n\n| CSS Variable | Description |\n| ------------------ | ----------------------------------------------------------------------------------------------------- |\n| `--bulma-shadow-h` | Shadow color hue (0-360) |\n| `--bulma-shadow-s` | Shadow color saturation (percentage) |\n| `--bulma-shadow-l` | Shadow color lightness (percentage) |\n| `--bulma-shadow` | The full shadow value that `.box`/`.card`/`.dropdown`/`.panel` derive their own shadow variables from |\n\n#### Complete CSS Variables List\n\nThe Theme component supports all 500+ Bulma CSS variables through the `bulmaVars` prop and individual props:\n\n**Typography Variables:**\n\n- `--bulma-family-primary`, `--bulma-family-secondary`, `--bulma-family-code`\n- `--bulma-size-small`, `--bulma-size-normal`, `--bulma-size-medium`, `--bulma-size-large`\n- `--bulma-weight-light`, `--bulma-weight-normal`, `--bulma-weight-medium`, `--bulma-weight-semibold`, `--bulma-weight-bold`, `--bulma-weight-extrabold`\n- `--bulma-body-background-color`, `--bulma-body-size`, `--bulma-body-min-width`, `--bulma-body-rendering`\n- `--bulma-body-family`, `--bulma-body-overflow-x`, `--bulma-body-overflow-y`, `--bulma-body-color`\n- `--bulma-body-font-size`, `--bulma-body-weight`, `--bulma-body-line-height`\n- `--bulma-code-family`, `--bulma-code-padding`, `--bulma-code-weight`, `--bulma-code-size`\n- `--bulma-small-font-size`, `--bulma-hr-background-color`, `--bulma-hr-height`, `--bulma-hr-margin`\n- `--bulma-strong-color`, `--bulma-strong-weight`, `--bulma-pre-font-size`, `--bulma-pre-padding`, `--bulma-pre-code-font-size`\n\n**Layout & Spacing Variables:**\n\n- `--bulma-block-spacing`, `--bulma-duration`, `--bulma-easing`, `--bulma-speed`\n- `--bulma-radius-small`, `--bulma-radius`, `--bulma-radius-medium`, `--bulma-radius-large`, `--bulma-radius-rounded`\n- `--bulma-arrow-color`, `--bulma-loading-color`\n- `--bulma-column-gap`, `--bulma-grid-gap`, `--bulma-grid-column-count`, `--bulma-grid-column-min`\n- `--bulma-grid-cell-column-span`, `--bulma-grid-cell-column-start`\n\n**Box Variables:**\n\n- `--bestax-box-background-color`, `--bestax-box-color`, `--bestax-box-radius`, `--bestax-box-shadow`\n- `--bestax-box-padding`, `--bestax-box-link-hover-shadow`, `--bestax-box-link-active-shadow`\n\n**Breadcrumb Variables:**\n\n- `--bulma-breadcrumb-item-color`, `--bulma-breadcrumb-item-hover-color`, `--bulma-breadcrumb-item-active-color`\n- `--bulma-breadcrumb-item-padding-vertical`, `--bulma-breadcrumb-item-padding-horizontal`\n- `--bulma-breadcrumb-item-separator-color`\n\n**Card Variables:**\n\n- `--bestax-card-color`, `--bestax-card-background-color`, `--bestax-card-shadow`, `--bestax-card-radius`\n- `--bestax-card-header-background-color`, `--bestax-card-header-color`, `--bestax-card-header-padding`\n- `--bestax-card-header-shadow`, `--bestax-card-header-weight`\n- `--bestax-card-content-background-color`, `--bestax-card-content-padding`\n- `--bestax-card-footer-background-color`, `--bestax-card-footer-border-top`, `--bestax-card-footer-padding`\n- `--bestax-card-media-margin`\n\n**Dropdown Variables:**\n\n- `--bulma-dropdown-menu-min-width`, `--bulma-dropdown-content-background-color`\n- `--bulma-dropdown-content-offset`, `--bulma-dropdown-content-padding-bottom`\n- `--bulma-dropdown-content-padding-top`, `--bulma-dropdown-content-radius`\n- `--bulma-dropdown-content-shadow`, `--bulma-dropdown-content-z`\n- `--bulma-dropdown-item-h`, `--bulma-dropdown-item-s`, `--bulma-dropdown-item-l`\n- `--bulma-dropdown-item-background-l`, `--bulma-dropdown-item-background-l-delta`\n- `--bulma-dropdown-item-hover-background-l-delta`, `--bulma-dropdown-item-active-background-l-delta`\n- `--bulma-dropdown-item-color-l`, `--bulma-dropdown-item-selected-h`\n- `--bulma-dropdown-item-selected-s`, `--bulma-dropdown-item-selected-l`\n- `--bulma-dropdown-item-selected-background-l`, `--bulma-dropdown-item-selected-color-l`\n- `--bulma-dropdown-divider-background-color`\n\n**Input Variables:**\n\n- `--bulma-input-h`, `--bulma-input-s`, `--bulma-input-l`, `--bulma-input-border-style`\n- `--bulma-input-border-l`, `--bulma-input-border-l-delta`, `--bulma-input-hover-border-l-delta`\n- `--bulma-input-active-border-l-delta`, `--bulma-input-focus-h`, `--bulma-input-focus-s`\n- `--bulma-input-focus-l`, `--bulma-input-focus-shadow-size`, `--bulma-input-focus-shadow-alpha`\n- `--bulma-input-color-l`, `--bulma-input-background-l`, `--bulma-input-background-l-delta`\n- `--bulma-input-height`, `--bulma-input-shadow`, `--bulma-input-placeholder-color`\n- `--bulma-input-disabled-color`, `--bulma-input-disabled-background-color`\n- `--bulma-input-disabled-border-color`, `--bulma-input-disabled-placeholder-color`\n- `--bulma-input-arrow`, `--bulma-input-icon-color`, `--bulma-input-icon-hover-color`\n- `--bulma-input-icon-focus-color`, `--bulma-input-radius`\n\n**Menu Variables:**\n\n- `--bulma-menu-item-h`, `--bulma-menu-item-s`, `--bulma-menu-item-l`\n- `--bulma-menu-item-background-l`, `--bulma-menu-item-background-l-delta`\n- `--bulma-menu-item-hover-background-l-delta`, `--bulma-menu-item-active-background-l-delta`\n- `--bulma-menu-item-color-l`, `--bulma-menu-item-radius`\n- `--bulma-menu-item-selected-h`, `--bulma-menu-item-selected-s`, `--bulma-menu-item-selected-l`\n- `--bulma-menu-item-selected-background-l`, `--bulma-menu-item-selected-color-l`\n- `--bulma-menu-list-border-left`, `--bulma-menu-list-line-height`, `--bulma-menu-list-link-padding`\n- `--bulma-menu-nested-list-margin`, `--bulma-menu-nested-list-padding-left`\n- `--bulma-menu-label-color`, `--bulma-menu-label-font-size`, `--bulma-menu-label-letter-spacing`\n- `--bulma-menu-label-spacing`\n\n**Message Variables:**\n\n- `--bulma-message-h`, `--bulma-message-s`, `--bulma-message-background-l`\n- `--bulma-message-border-l`, `--bulma-message-border-l-delta`, `--bulma-message-border-style`\n- `--bulma-message-border-width`, `--bulma-message-color-l`, `--bulma-message-radius`\n- `--bulma-message-header-weight`, `--bulma-message-header-padding`, `--bulma-message-header-radius`\n- `--bulma-message-header-body-border-width`, `--bulma-message-header-background-l`\n- `--bulma-message-header-color-l`, `--bulma-message-body-border-width`\n- `--bulma-message-body-color`, `--bulma-message-body-padding`, `--bulma-message-body-radius`\n- `--bulma-message-body-pre-code-background-color`\n\n**Modal Variables:**\n\n- `--bulma-modal-z`, `--bulma-modal-background-background-color`, `--bulma-modal-content-width`\n- `--bulma-modal-content-margin-mobile`, `--bulma-modal-content-spacing-mobile`\n- `--bulma-modal-content-spacing-tablet`, `--bulma-modal-close-dimensions`\n- `--bulma-modal-close-right`, `--bulma-modal-close-top`, `--bulma-modal-card-spacing`\n- `--bulma-modal-card-head-background-color`, `--bulma-modal-card-head-padding`\n- `--bulma-modal-card-head-radius`, `--bulma-modal-card-title-color`\n- `--bulma-modal-card-title-line-height`, `--bulma-modal-card-title-size`\n- `--bulma-modal-card-foot-background-color`, `--bulma-modal-card-foot-radius`\n- `--bulma-modal-card-body-background-color`, `--bulma-modal-card-body-padding`\n\n**Navbar Variables:**\n\n- `--bulma-navbar-h`, `--bulma-navbar-s`, `--bulma-navbar-l`, `--bulma-navbar-background-color`\n- `--bulma-navbar-box-shadow-size`, `--bulma-navbar-box-shadow-color`\n- `--bulma-navbar-padding-vertical`, `--bulma-navbar-padding-horizontal`\n- `--bulma-navbar-z`, `--bulma-navbar-fixed-z`, `--bulma-navbar-item-background-a`\n- `--bulma-navbar-item-background-l`, `--bulma-navbar-item-background-l-delta`\n- `--bulma-navbar-item-hover-background-l-delta`, `--bulma-navbar-item-active-background-l-delta`\n- `--bulma-navbar-item-color-l`, `--bulma-navbar-item-selected-h`\n- `--bulma-navbar-item-selected-s`, `--bulma-navbar-item-selected-l`\n- `--bulma-navbar-item-selected-background-l`, `--bulma-navbar-item-selected-color-l`\n- `--bulma-navbar-item-img-max-height`, `--bulma-navbar-burger-color`\n- `--bulma-navbar-tab-hover-background-color`, `--bulma-navbar-tab-hover-border-bottom-color`\n- `--bulma-navbar-tab-active-color`, `--bulma-navbar-tab-active-background-color`\n- `--bulma-navbar-tab-active-border-bottom-color`, `--bulma-navbar-tab-active-border-bottom-style`\n- `--bulma-navbar-tab-active-border-bottom-width`, `--bulma-navbar-dropdown-background-color`\n- `--bulma-navbar-dropdown-border-l`, `--bulma-navbar-dropdown-border-color`\n- `--bulma-navbar-dropdown-border-style`, `--bulma-navbar-dropdown-border-width`\n- `--bulma-navbar-dropdown-offset`, `--bulma-navbar-dropdown-arrow`\n- `--bulma-navbar-dropdown-radius`, `--bulma-navbar-dropdown-z`\n- `--bulma-navbar-dropdown-boxed-radius`, `--bulma-navbar-dropdown-boxed-shadow`\n- `--bulma-navbar-dropdown-item-h`, `--bulma-navbar-dropdown-item-s`\n- `--bulma-navbar-dropdown-item-l`, `--bulma-navbar-dropdown-item-background-l`\n- `--bulma-navbar-dropdown-item-color-l`, `--bulma-navbar-divider-background-l`\n- `--bulma-navbar-divider-height`, `--bulma-navbar-bottom-box-shadow-size`\n\n**Notification Variables:**\n\n- `--bestax-notification-h`, `--bestax-notification-s`, `--bestax-notification-background-l`\n- `--bestax-notification-color-l`, `--bestax-notification-code-background-color`\n- `--bestax-notification-radius`, `--bestax-notification-padding`\n\n**Pagination Variables:**\n\n- `--bulma-pagination-margin`, `--bulma-pagination-min-width`\n- `--bulma-pagination-item-h`, `--bulma-pagination-item-s`, `--bulma-pagination-item-l`\n- `--bulma-pagination-item-background-l-delta`, `--bulma-pagination-item-hover-background-l-delta`\n- `--bulma-pagination-item-active-background-l-delta`, `--bulma-pagination-item-border-style`\n- `--bulma-pagination-item-border-width`, `--bulma-pagination-item-border-l`\n- `--bulma-pagination-item-border-l-delta`, `--bulma-pagination-item-hover-border-l-delta`\n- `--bulma-pagination-item-active-border-l-delta`, `--bulma-pagination-item-focus-border-l-delta`\n- `--bulma-pagination-item-color-l`, `--bulma-pagination-item-font-size`\n- `--bulma-pagination-item-margin`, `--bulma-pagination-item-padding-left`\n- `--bulma-pagination-item-padding-right`, `--bulma-pagination-item-outer-shadow-h`\n- `--bulma-pagination-item-outer-shadow-s`, `--bulma-pagination-item-outer-shadow-l`\n- `--bulma-pagination-item-outer-shadow-a`, `--bulma-pagination-nav-padding-left`\n- `--bulma-pagination-nav-padding-right`, `--bulma-pagination-disabled-color`\n- `--bulma-pagination-disabled-background-color`, `--bulma-pagination-disabled-border-color`\n- `--bulma-pagination-current-color`, `--bulma-pagination-current-background-color`\n- `--bulma-pagination-current-border-color`, `--bulma-pagination-ellipsis-color`\n- `--bulma-pagination-shadow-inset`, `--bulma-pagination-selected-item-h`\n- `--bulma-pagination-selected-item-s`, `--bulma-pagination-selected-item-l`\n- `--bulma-pagination-selected-item-background-l`, `--bulma-pagination-selected-item-border-l`\n- `--bulma-pagination-selected-item-color-l`\n\n**Panel Variables:**\n\n- `--bulma-panel-margin`, `--bulma-panel-item-border`, `--bulma-panel-radius`, `--bulma-panel-shadow`\n- `--bulma-panel-heading-line-height`, `--bulma-panel-heading-padding`, `--bulma-panel-heading-radius`\n- `--bulma-panel-heading-size`, `--bulma-panel-heading-weight`, `--bulma-panel-tabs-font-size`\n- `--bulma-panel-tab-border-bottom-color`, `--bulma-panel-tab-border-bottom-style`\n- `--bulma-panel-tab-border-bottom-width`, `--bulma-panel-tab-active-color`\n- `--bulma-panel-list-item-color`, `--bulma-panel-list-item-hover-color`\n- `--bulma-panel-block-color`, `--bulma-panel-block-hover-background-color`\n- `--bulma-panel-block-active-border-left-color`, `--bulma-panel-block-active-color`\n- `--bulma-panel-block-active-icon-color`, `--bulma-panel-icon-color`\n\n**Progress Variables:**\n\n- `--bulma-progress-border-radius`, `--bulma-progress-bar-background-color`\n- `--bulma-progress-value-background-color`, `--bulma-progress-indeterminate-duration`\n\n**Skeleton Variables:**\n\n- `--bulma-skeleton-background`, `--bulma-skeleton-radius`, `--bulma-skeleton-block-min-height`\n- `--bulma-skeleton-lines-gap`, `--bulma-skeleton-line-height`\n\n**Table Variables:**\n\n- `--bulma-table-color`, `--bulma-table-background-color`, `--bulma-table-cell-border-color`\n- `--bulma-table-cell-border-style`, `--bulma-table-cell-border-width`, `--bulma-table-cell-padding`\n- `--bulma-table-cell-heading-color`, `--bulma-table-cell-text-align`\n- `--bulma-table-head-cell-border-width`, `--bulma-table-head-cell-color`\n- `--bulma-table-foot-cell-border-width`, `--bulma-table-foot-cell-color`\n- `--bulma-table-head-background-color`, `--bulma-table-body-background-color`\n- `--bulma-table-foot-background-color`, `--bulma-table-row-hover-background-color`\n- `--bulma-table-row-active-background-color`, `--bulma-table-row-active-color`\n- `--bulma-table-striped-row-even-background-color`, `--bulma-table-striped-row-even-hover-background-color`\n\n**Tabs Variables:**\n\n- `--bulma-tabs-border-bottom-color`, `--bulma-tabs-border-bottom-style`, `--bulma-tabs-border-bottom-width`\n- `--bulma-tabs-link-color`, `--bulma-tabs-link-hover-border-bottom-color`, `--bulma-tabs-link-hover-color`\n- `--bulma-tabs-link-active-border-bottom-color`, `--bulma-tabs-link-active-color`, `--bulma-tabs-link-padding`\n- `--bulma-tabs-boxed-link-radius`, `--bulma-tabs-boxed-link-hover-background-color`\n- `--bulma-tabs-boxed-link-hover-border-bottom-color`, `--bulma-tabs-boxed-link-active-background-color`\n- `--bulma-tabs-boxed-link-active-border-color`, `--bulma-tabs-boxed-link-active-border-bottom-color`\n- `--bulma-tabs-toggle-link-border-color`, `--bulma-tabs-toggle-link-border-style`\n- `--bulma-tabs-toggle-link-border-width`, `--bulma-tabs-toggle-link-hover-background-color`\n- `--bulma-tabs-toggle-link-hover-border-color`, `--bulma-tabs-toggle-link-radius`\n- `--bulma-tabs-toggle-link-active-background-color`, `--bulma-tabs-toggle-link-active-border-color`\n- `--bulma-tabs-toggle-link-active-color`\n\n**Tag Variables:**\n\n- `--bulma-tag-h`, `--bulma-tag-s`, `--bulma-tag-background-l`, `--bulma-tag-background-l-delta`\n- `--bulma-tag-hover-background-l-delta`, `--bulma-tag-active-background-l-delta`\n- `--bulma-tag-color-l`, `--bulma-tag-radius`, `--bulma-tag-delete-margin`\n\n**Title & Subtitle Variables:**\n\n- `--bestax-title-color`, `--bestax-title-family`, `--bestax-title-size`, `--bestax-title-weight`\n- `--bestax-title-line-height`, `--bestax-title-strong-color`, `--bestax-title-strong-weight`\n- `--bestax-title-sub-size`, `--bestax-title-sup-size`\n- `--bulma-subtitle-color`, `--bulma-subtitle-family`, `--bulma-subtitle-size`, `--bulma-subtitle-weight`\n- `--bulma-subtitle-line-height`, `--bulma-subtitle-strong-color`, `--bulma-subtitle-strong-weight`\n\n**Content Variables:**\n\n- `--bulma-content-heading-color`, `--bulma-content-heading-weight`, `--bulma-content-heading-line-height`\n- `--bulma-content-block-margin-bottom`, `--bulma-content-blockquote-background-color`\n- `--bulma-content-blockquote-border-left`, `--bulma-content-blockquote-padding`, `--bulma-content-pre-padding`\n- `--bulma-content-table-cell-border`, `--bulma-content-table-cell-border-width`\n- `--bulma-content-table-cell-padding`, `--bulma-content-table-cell-heading-color`\n- `--bulma-content-table-head-cell-border-width`, `--bulma-content-table-head-cell-color`\n- `--bulma-content-table-body-last-row-cell-border-bottom-width`\n- `--bulma-content-table-foot-cell-border-width`, `--bulma-content-table-foot-cell-color`\n\n**Control Variables:**\n\n- `--bulma-control-radius`, `--bulma-control-radius-small`, `--bulma-control-border-width`\n- `--bulma-control-height`, `--bulma-control-line-height`, `--bulma-control-padding-vertical`\n- `--bulma-control-padding-horizontal`, `--bulma-control-size`, `--bulma-control-focus-shadow-l`\n\n**Delete Variables:**\n\n- `--bulma-delete-dimensions`, `--bulma-delete-background-l`, `--bulma-delete-background-alpha`\n- `--bulma-delete-color`\n\n**File Variables:**\n\n- `--bulma-file-radius`, `--bulma-file-name-border-color`, `--bulma-file-name-border-style`\n- `--bulma-file-name-border-width`, `--bulma-file-name-max-width`\n- `--bulma-file-h`, `--bulma-file-s`, `--bulma-file-background-l`, `--bulma-file-background-l-delta`\n- `--bulma-file-hover-background-l-delta`, `--bulma-file-active-background-l-delta`\n- `--bulma-file-border-l`, `--bulma-file-border-l-delta`, `--bulma-file-hover-border-l-delta`\n- `--bulma-file-active-border-l-delta`, `--bulma-file-cta-color-l`, `--bulma-file-name-color-l`\n- `--bulma-file-color-l-delta`, `--bulma-file-hover-color-l-delta`, `--bulma-file-active-color-l-delta`\n\n**Footer Variables:**\n\n- `--bulma-footer-background-color`, `--bulma-footer-color`, `--bulma-footer-padding`\n\n**Hero Variables:**\n\n- `--bulma-hero-body-padding`, `--bulma-hero-body-padding-tablet`, `--bulma-hero-body-padding-small`\n- `--bulma-hero-body-padding-medium`, `--bulma-hero-body-padding-large`\n\n**Icon Variables:**\n\n- `--bulma-icon-dimensions`, `--bulma-icon-dimensions-small`, `--bulma-icon-dimensions-medium`\n- `--bulma-icon-dimensions-large`, `--bulma-icon-text-spacing`\n\n**Media Variables:**\n\n- `--bulma-media-border-color`, `--bulma-media-border-size`, `--bulma-media-spacing`\n- `--bulma-media-spacing-large`, `--bulma-media-content-spacing`, `--bulma-media-level-1-spacing`\n- `--bulma-media-level-1-content-spacing`, `--bulma-media-level-2-spacing`\n\n**Section Variables:**\n\n- `--bulma-section-padding`, `--bulma-section-padding-desktop`, `--bulma-section-padding-medium`\n- `--bulma-section-padding-large`\n\n**Burger Variables:**\n\n- `--bulma-burger-h`, `--bulma-burger-s`, `--bulma-burger-l`, `--bulma-burger-border-radius`\n- `--bulma-burger-gap`, `--bulma-burger-item-height`, `--bulma-burger-item-width`\n\nThe Theme component also supports all [Bulma helper class props](./usebulmaclasses.md) for styling the wrapper element.",
63
63
  "parts": [],
64
64
  "cssVars": []
65
65
  }
@@ -722,6 +722,90 @@
722
722
  }
723
723
  ],
724
724
  "cssVars": [
725
+ {
726
+ "css": "--bulma-timeinput-wheel-width",
727
+ "sass": "$timeinput-wheel-width",
728
+ "default": "3rem",
729
+ "scope": "element"
730
+ },
731
+ {
732
+ "css": "--bulma-timeinput-wheel-item-height",
733
+ "sass": "$timeinput-wheel-item-height",
734
+ "default": "2rem",
735
+ "scope": "element"
736
+ },
737
+ {
738
+ "css": "--bulma-timeinput-wheel-gap",
739
+ "sass": "$timeinput-wheel-gap",
740
+ "default": "0.4rem",
741
+ "scope": "element"
742
+ },
743
+ {
744
+ "css": "--bulma-timeinput-wheel-bg",
745
+ "sass": "$timeinput-wheel-bg",
746
+ "default": "var(--bulma-scheme-main)",
747
+ "scope": "element"
748
+ },
749
+ {
750
+ "css": "--bulma-timeinput-wheel-color",
751
+ "sass": "$timeinput-wheel-color",
752
+ "default": "var(--bulma-text)",
753
+ "scope": "element"
754
+ },
755
+ {
756
+ "css": "--bulma-timeinput-wheel-dim-color",
757
+ "sass": "$timeinput-wheel-dim-color",
758
+ "default": "var(--bulma-text-weak)",
759
+ "scope": "element"
760
+ },
761
+ {
762
+ "css": "--bulma-timeinput-wheel-hover-bg",
763
+ "sass": "$timeinput-wheel-hover-bg",
764
+ "default": "hsla(0, 0%, 50%, 0.13)",
765
+ "scope": "element"
766
+ },
767
+ {
768
+ "css": "--bulma-timeinput-wheel-selected-bg",
769
+ "sass": "$timeinput-wheel-selected-bg",
770
+ "default": "var(--bulma-primary)",
771
+ "scope": "element"
772
+ },
773
+ {
774
+ "css": "--bulma-timeinput-wheel-selected-color",
775
+ "sass": "$timeinput-wheel-selected-color",
776
+ "default": "var(--bulma-primary-invert)",
777
+ "scope": "element"
778
+ },
779
+ {
780
+ "css": "--bulma-timeinput-wheel-radius",
781
+ "sass": "$timeinput-wheel-radius",
782
+ "default": "var(--bulma-radius)",
783
+ "scope": "element"
784
+ },
785
+ {
786
+ "css": "--bulma-timeinput-wheel-mask",
787
+ "sass": "$timeinput-wheel-mask",
788
+ "default": "linear-gradient(180deg, transparent 0, black 18%, black 82%, transparent 100%)",
789
+ "scope": "element"
790
+ },
791
+ {
792
+ "css": "--bulma-timeinput-separator-color",
793
+ "sass": "$timeinput-separator-color",
794
+ "default": "var(--bulma-text-weak)",
795
+ "scope": "element"
796
+ },
797
+ {
798
+ "css": "--bulma-timeinput-separator-size",
799
+ "sass": "$timeinput-separator-size",
800
+ "default": "var(--bulma-size-5)",
801
+ "scope": "element"
802
+ },
803
+ {
804
+ "css": "--bulma-timeinput-footer-padding",
805
+ "sass": "$timeinput-footer-padding",
806
+ "default": "0.5rem 0 0",
807
+ "scope": "element"
808
+ },
725
809
  {
726
810
  "css": "--bulma-input-h",
727
811
  "sass": "$input-h",
@@ -52,12 +52,11 @@ Set it once on `ConfigProvider` and omit `library` everywhere else.
52
52
  type="module"
53
53
  src="https://unpkg.com/ionicons@8.0.13/dist/ionicons/ionicons.esm.js"
54
54
  ></script>
55
- <script
56
- nomodule
57
- src="https://unpkg.com/ionicons@8.0.13/dist/ionicons/ionicons.js"
58
- ></script>
59
55
  ```
60
56
 
57
+ Ionicons v8 is ESM-only — there is no legacy `nomodule` bundle, so a single
58
+ `type="module"` tag is all that is needed.
59
+
61
60
  - **Scaffold flag:** `--icon ionicons` — which maps to `iconLibrary="ion"`. Passing
62
61
  `'ionicons'` as the `library`/`iconLibrary` value renders nothing.
63
62
  - **Names:** kebab-case: `rocket`, `heart`, `settings`.
@@ -99,10 +99,10 @@ Centered; a collection of items → Card grid. For mixed requests, pick the domi
99
99
  and `.box` re-declare `--bulma-card-shadow`/`--bulma-box-shadow` from `--bulma-shadow` on
100
100
  their own selector, so setting _those_ from an ancestor never wins (same for
101
101
  `--bulma-box-radius`; `--bulma-card-radius` is a literal with no ancestor route at all).
102
- It has to be a CSS rule rather than `<Theme bulmaVars={{ '--bulma-shadow': … }}>`, because
103
- `bulmaVars` is a closed typed record and `--bulma-shadow` is not one of its keys — that
104
- exact call **does not compile**, and it was the single most repeated invention across this
105
- library's cold-start evals. Either way the subtree stays theme- and dark-mode-aware.
102
+ A class-scoped CSS rule keeps the ring on just the one featured card without wrapping it in
103
+ its own `Theme`; `<Theme bulmaVars={{ '--bulma-shadow': … }}>` also compiles and is the
104
+ better fit when the override already applies to a whole scoped subtree. Either way the
105
+ subtree stays theme- and dark-mode-aware.
106
106
 
107
107
  - **CTAs on a colored hero must stay legible in both schemes.** On a fixed-color surface
108
108
  (`Hero color="primary"`, a dark banner), use **filled** buttons — `color="light"` or
@@ -194,7 +194,7 @@ inline `style`.
194
194
  every other `Section` — never band CSS, never `bgColor="light"`/`"white"`.
195
195
  - [ ] Decorative CSS ≤10 lines total incl. comments — no file-header comment (hero wash +
196
196
  featured-card ring), `--bulma-*`-derived; no resets — Bulma ships one.
197
- The ring sets `--bulma-shadow` in a CSS rule; `Theme bulmaVars` has no such key.
197
+ The ring sets `--bulma-shadow` (via a scoped CSS rule or `Theme bulmaVars`).
198
198
  - [ ] Set the icon library once via `<ConfigProvider iconLibrary="…">` at the root.
199
199
  - [ ] Site built? ~800 KB raw / ~82 KB gzip CSS is the expected default-flavor size — to shrink
200
200
  it, run the `bestax-optimize` skill (measure first).
@@ -6,40 +6,40 @@ codemod converts it; **Flagged** = it leaves a `TODO(bestax-migrate)` comment (s
6
6
 
7
7
  ## Top-level components
8
8
 
9
- | RBC | bestax | Notes |
10
- | -------------- | -------------------------------------------- | ------------------------------------------------------------------------------------- |
11
- | `Block` | `Block` | Auto |
12
- | `Box` | `Box` | Auto |
13
- | `Breadcrumb` | `Breadcrumb` | Auto; `align` → `alignment` (`center`→`centered`) |
14
- | `Button` | `Button` | Auto; `<Button remove/>` → `<Delete/>`; see prop map |
15
- | `Card` | `Card` | Auto |
16
- | `Columns` | `Columns` | Auto; `breakpoint="mobile"`→`isMobile`, `multiline`→`isMultiline`, … |
17
- | `Container` | `Container` | Auto; `breakpoint="fluid"`→`fluid`, `max`→`isMax` |
18
- | `Content` | `Content` | Auto |
19
- | `Dropdown` | `Dropdown` | Structure auto; controlled `value`/`onChange` flagged |
20
- | `Element` | — | Flagged: no generic element; use a semantic component + helper props |
21
- | `Footer` | `Footer` | Auto |
22
- | `Form.*` | flat imports | See Form table below |
23
- | `Heading` | `Title` / `SubTitle` / `<p class="heading">` | Auto; `subtitle` picks `SubTitle`, `heading` picks the plain element |
24
- | `Hero` | `Hero` | Auto; `hasNavbar`→`fullheightWithNavbar`; `halfheight`/`gradient` flagged |
25
- | `Icon` | `Icon` | `<i class="fas fa-x">` children → `name`/`library`/`variant` props; else flagged |
26
- | `Image` | `Image` | Auto; numeric `size={128}` → `size="128x128"`, `rounded`→`isRounded` |
27
- | `Level` | `Level` | Auto; `breakpoint="mobile"`→`isMobile` |
28
- | `Loader` | plain `<div className="loader">` | Auto (Bulma v1 still ships the class) |
29
- | `Media` | `Media` | Auto |
30
- | `Menu` | `Menu` | Auto |
31
- | `Message` | `Message` | Auto; `size` flagged |
32
- | `Modal` | `Modal` | `show`→`active`; `closeOnEsc`/`closeOnBlur`/`showClose` flagged (defaults cover them) |
33
- | `Navbar` | `Navbar` | Auto; see dropdown note below |
34
- | `Notification` | `Notification` | Auto; `light`→`isLight` |
35
- | `Pagination` | `Pagination` | `onChange`→`onPageChange`; `delta`/labels/`showFirstLast`/`autoHide` flagged |
36
- | `Panel` | `Panel` | Auto |
37
- | `Progress` | `Progress` | Auto |
38
- | `Section` | `Section` | Auto |
39
- | `Table` | `Table` | Auto; `size="fullwidth"`→`isFullwidth`, `striped`→`isStriped`, … |
40
- | `Tabs` | `Tabs` | Auto; children wrapped in `Tabs.List`; `type="toggle-rounded"`→`toggle rounded` |
41
- | `Tag` | `Tag` | Auto; `remove`→`isDelete`, `rounded`→`isRounded` |
42
- | `Tile` | — | Flagged: Bulma v1 replaced tiles with `Grid`/`Cell` |
9
+ | RBC | bestax | Notes |
10
+ | -------------- | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
11
+ | `Block` | `Block` | Auto |
12
+ | `Box` | `Box` | Auto |
13
+ | `Breadcrumb` | `Breadcrumb` | Auto; `align` → `alignment` (`center`→`centered`) |
14
+ | `Button` | `Button` | Auto for literal `remove` (by value, not presence — truthy → `<Delete/>`, `remove={false}` stays `Button`); dynamic flagged |
15
+ | `Card` | `Card` | Auto |
16
+ | `Columns` | `Columns` | Auto; `breakpoint="mobile"`→`isMobile`, `multiline`→`isMultiline`, … |
17
+ | `Container` | `Container` | Auto; `breakpoint="fluid"`→`fluid`, `max`→`isMax` |
18
+ | `Content` | `Content` | Auto |
19
+ | `Dropdown` | `Dropdown` | Structure auto; controlled `value`/`onChange` flagged |
20
+ | `Element` | — | Flagged: no generic element; use a semantic component + helper props |
21
+ | `Footer` | `Footer` | Auto |
22
+ | `Form.*` | flat imports | See Form table below |
23
+ | `Heading` | `Title` / `SubTitle` / `<p class="heading">` | Auto for literal `subtitle`/`heading` (by value, not presence — `subtitle={false}` is `Title`); dynamic value flagged |
24
+ | `Hero` | `Hero` | Auto; `hasNavbar`→`fullheightWithNavbar`; `halfheight`/`gradient` flagged |
25
+ | `Icon` | `Icon` | `<i class="fas fa-x">` children → `name`/`library`/`variant` props; else flagged |
26
+ | `Image` | `Image` | Auto; numeric `size={128}` → `size="128x128"`, `rounded`→`isRounded` |
27
+ | `Level` | `Level` | Auto; `breakpoint="mobile"`→`isMobile` |
28
+ | `Loader` | plain `<div className="loader">` | Auto (Bulma v1 still ships the class) |
29
+ | `Media` | `Media` | Auto |
30
+ | `Menu` | `Menu` | Auto |
31
+ | `Message` | `Message` | Auto; `size` flagged |
32
+ | `Modal` | `Modal` | `show`→`active`; `closeOnEsc`/`closeOnBlur`/`showClose` flagged (defaults cover them) |
33
+ | `Navbar` | `Navbar` | Auto; see dropdown note below |
34
+ | `Notification` | `Notification` | Auto; `light`→`isLight` |
35
+ | `Pagination` | `Pagination` | `onChange`→`onPageChange`; `delta`/labels/`showFirstLast`/`autoHide` flagged |
36
+ | `Panel` | `Panel` | Auto |
37
+ | `Progress` | `Progress` | Auto |
38
+ | `Section` | `Section` | Auto |
39
+ | `Table` | `Table` | Auto; `size="fullwidth"`→`isFullwidth`, `striped`→`isStriped`, … |
40
+ | `Tabs` | `Tabs` | Auto; children wrapped in `Tabs.List`; `type="toggle-rounded"`→`toggle rounded` |
41
+ | `Tag` | `Tag` | Auto; `remove`→`isDelete`, `rounded`→`isRounded` |
42
+ | `Tile` | — | Flagged: Bulma v1 replaced tiles with `Grid`/`Cell` |
43
43
 
44
44
  ## Compound sub-components
45
45
 
@@ -22,13 +22,18 @@ finish what it flagged.
22
22
 
23
23
  ```scss
24
24
  @use 'bulma/sass' with (
25
- $primary: #ff6b35,
26
- $family-primary: 'Nunito',
27
- sans-serif
28
- );
25
+ $primary: #ff6b35,
26
+ $family-primary: (
27
+ 'Nunito',
28
+ sans-serif,
29
+ )
30
+ );
29
31
  @use '@allxsmith/bestax-bulma/scss/extras';
30
32
  ```
31
33
 
34
+ A comma-valued override (a font-family stack) is wrapped in parens so Dart Sass
35
+ reads it as one list value, not extra arguments to `with (…)`.
36
+
32
37
  0.9 `_all` aggregator imports (`bulma/sass/elements/_all`) became directory modules
33
38
  (`@use 'bulma/sass/elements';`). Relative node_modules paths
34
39
  (`@import '../../node_modules/bulma/bulma'`, common under Parcel) keep their prefix,
@@ -38,6 +43,31 @@ finish what it flagged.
38
43
  **dart-sass ≥ 1.79** — the codemod's node-sass replacement installs that, but check
39
44
  bundler-pinned older versions (Parcel's sass transformer pins 1.66).
40
45
 
46
+ react-bulma-components' own stylesheet — any `react-bulma-components/…` specifier,
47
+ bare, `~`-prefixed, or a relative `node_modules/` path, covering the documented v3
48
+ entry points (`src/index.sass`, `dist/react-bulma-components(.min).css`) as well as
49
+ deep partials and extensionless forms — is not a third-party extension; it's the
50
+ library being migrated away from. It targets Bulma 0.9, not the v1 your components now
51
+ use, and (unless `--no-deps` is passed) `package.json` no longer lists it, so the
52
+ import can never resolve once installed. Every `--css` mode rewrites it into a real
53
+ Bulma root rather than leaving a known-broken import — the **same shape the
54
+ `@import 'bulma/…'` root path emits**, so a file that starts from RBC and one that
55
+ starts from a Bulma import converge: `bestax` (default) emits
56
+ `@use 'bulma/sass';` (folding any leading `$var` overrides above the import into
57
+ `with (…)`) plus `@use '@allxsmith/bestax-bulma/scss/extras';`; `bulma` emits plain
58
+ `@use 'bulma/sass';`; `keep` does the same with a TODO explaining the replacement
59
+ (worded to match whether `--no-deps` kept the package). It deliberately does **not**
60
+ emit the hard-configured `scss/bestax` bundle here — that bundle can't carry the
61
+ user's own theme vars, and reconfiguring `bulma/sass` when another file already
62
+ configures it is a hard Sass error. If the file already has its own `bulma/…` root
63
+ (a `@use 'bulma/sass'` of its own, or a Bulma `@import` the codemod converts), the RBC
64
+ **root/index** line (`src/index`, the bundled `dist/*.css`, or the bare specifier) is
65
+ dropped instead of emitting a second root; in `bestax` mode the extras are added once
66
+ alongside that existing root. A dropped RBC **deep partial** (e.g.
67
+ `src/components/navbar.sass`) is different — `bulma/sass` doesn't necessarily carry a
68
+ given partial's styles, so it gets a `// TODO(bestax-migrate)` and a report entry
69
+ ("port any styles it carried beyond Bulma's own by hand") rather than vanishing silently.
70
+
41
71
  - **package.json**: `react-bulma-components` removed, `@allxsmith/bestax-bulma` added,
42
72
  `bulma` bumped to `^1.0.4` (or added when sources still import `bulma/…` directly),
43
73
  and dead `node-sass` replaced with dart `sass`. Run the package manager's install
@@ -63,6 +93,8 @@ elements,form,components,grid,layout,helpers,themes}` with leaf partials like
63
93
  compatibility. Class-based usage (`className="is-checkradio"`) keeps needing the
64
94
  extension; usage that migrated to bestax components (Radio, Checkbox, the advanced
65
95
  form controls) is already styled by the bestax extras, so the import can go.
96
+ react-bulma-components' own stylesheet is never flagged this way (see above) — only
97
+ packages actually named `bulma-*` are.
66
98
 
67
99
  ## Choosing a CSS flavor (optional)
68
100
 
@@ -101,26 +101,27 @@ and numeric shades `--bulma-<c>-00` … `--bulma-<c>-95`.
101
101
  | `--bulma-size-small` / `-normal` / `-medium` / `-large` | 0.75 / 1 / 1.25 / 1.5rem | via `bulmaVars` |
102
102
  | `--bulma-weight-light/normal/medium/semibold/bold/extrabold` | 300 / 400 / 500 / 600 / 700 / 800 | via `bulmaVars` |
103
103
 
104
- ## Shadow — the one token `bulmaVars` cannot set
104
+ ## Shadow — override the upstream token, not the derived one
105
105
 
106
- `--bulma-shadow` is a real Bulma variable (`.box` and `.card` both derive
107
- `--bulma-box-shadow`/`--bulma-card-shadow` from it), but it is **not a key of `bulmaVars`** —
108
- that record is a closed union built from an explicit list, and shadow was left out. Writing
109
- `<Theme bulmaVars={{ '--bulma-shadow': … }}>` is a compile error, and it is the single most
110
- repeated invention in this library's cold-start evals: every run on every guidance channel
111
- tried it.
106
+ `--bulma-shadow` (plus its `--bulma-shadow-h`/`-s`/`-l` channels) is a real Bulma variable that
107
+ `.box`, `.card`, `.dropdown`, and `.panel` each derive their own shadow variable from
108
+ (`--bulma-box-shadow`, `--bulma-card-shadow`, …). It **is** a key of `bulmaVars`, so `Theme` can
109
+ set it directly:
112
110
 
113
- Set it in CSS instead, then apply the class to the one element that needs it:
114
-
115
- ```css
116
- .featured-ring {
117
- --bulma-shadow: 0 0 0 2px var(--bulma-primary);
118
- }
111
+ ```tsx
112
+ <Theme bulmaVars={{ '--bulma-shadow': '0 0 0 2px var(--bulma-primary)' }}>
113
+ <Box>featured</Box>
114
+ </Theme>
119
115
  ```
120
116
 
117
+ There is no individual `shadow` prop for it — `shadow` already names the unrelated
118
+ `shadowless` helper class (`shadow="shadowless"` → `is-shadowless`) — so reach it through
119
+ `bulmaVars` as shown above.
120
+
121
121
  Do **not** reach for `--bulma-box-shadow`/`--bulma-card-shadow` from an ancestor instead —
122
- those are re-declared on `.box`/`.card` themselves, so an inherited value always loses (the
123
- same rule as the extras section below).
122
+ those are re-declared on `.box`/`.card` themselves, so an inherited value always loses. Setting
123
+ `--bulma-shadow` from an ancestor `Theme` is the one override that cascades into all of them
124
+ (the same rule as the extras section below).
124
125
 
125
126
  ## Extras component variables
126
127
 
package/data/skills.json CHANGED
@@ -43,7 +43,7 @@
43
43
  {
44
44
  "id": "icon-libraries",
45
45
  "file": "references/icon-libraries.md",
46
- "bytes": 6179
46
+ "bytes": 6199
47
47
  }
48
48
  ],
49
49
  "examples": [
@@ -88,12 +88,12 @@
88
88
  {
89
89
  "id": "component-map",
90
90
  "file": "references/component-map.md",
91
- "bytes": 11894
91
+ "bytes": 13190
92
92
  },
93
93
  {
94
94
  "id": "css-migration",
95
95
  "file": "references/css-migration.md",
96
- "bytes": 5679
96
+ "bytes": 7999
97
97
  },
98
98
  { "id": "prop-map", "file": "references/prop-map.md", "bytes": 6363 },
99
99
  {
@@ -127,7 +127,7 @@
127
127
  {
128
128
  "id": "css-variables",
129
129
  "file": "references/css-variables.md",
130
- "bytes": 26650
130
+ "bytes": 26771
131
131
  },
132
132
  {
133
133
  "id": "themeable-components",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bestax-mcp",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "MCP server for @allxsmith/bestax-bulma — component props, examples, CSS variables and agent skills, served offline from a version-pinned index",
5
5
  "type": "module",
6
6
  "bin": {