@codebit-programando-solucoes/codebit-web-antd 1.1.41 → 1.1.43

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.
@@ -17,6 +17,26 @@ interface CodebitThemeContextProps {
17
17
  setIsDarkMode: (isDark: boolean) => void;
18
18
  }
19
19
 
20
+ /** A pair of color overrides for light and dark mode. Any shade left unset falls back to Codebit's default palette. */
21
+ type CodebitThemeColorShade = {
22
+ light?: string;
23
+ dark?: string;
24
+ };
25
+
26
+ /** Optional color overrides for the theme provider. Any color/shade not provided falls back to the current default palette. */
27
+ type CodebitThemeColors = {
28
+ /** Brand primary color (buttons, links, menu selection, header, sider trigger). Default: `{ light: '#29D266', dark: '#3F6F53' }` */
29
+ primary?: CodebitThemeColorShade;
30
+ /** Primary button hover color. Default: `{ light: '#3FE67F', dark: '#6DB589' }` */
31
+ primaryHover?: CodebitThemeColorShade;
32
+ /** Primary button active/pressed color. Default: `{ light: '#1FBF4D', dark: '#4A8361' }` */
33
+ primaryActive?: CodebitThemeColorShade;
34
+ /** Text color for selected menu items and the layout sider trigger. Default: `{ light: '#FAFAFA', dark: '#FAFAFA' }` */
35
+ selectedText?: CodebitThemeColorShade;
36
+ /** Layout sider background color. Default: `{ light: '#001529', dark: '#1a1a1a' }` */
37
+ siderBg?: CodebitThemeColorShade;
38
+ };
39
+
20
40
  /** Properties for the theme provider component */
21
41
  type CodebitThemeProviderProps = {
22
42
  /** Child components that will have access to theme context */
@@ -27,4 +47,6 @@ type CodebitThemeProviderProps = {
27
47
  containerId?: string;
28
48
  /** Optional explicit theme override. When set, the provider uses this value instead of internal detection. */
29
49
  forcedTheme?: 'dark' | 'light' | null;
50
+ /** Optional color overrides. Any color/shade not provided falls back to Codebit's current default palette. */
51
+ colors?: CodebitThemeColors;
30
52
  } & ConfigProviderProps;
package/dist/index.cjs CHANGED
@@ -698,7 +698,29 @@ var __webpack_exports__ = {};
698
698
  onMenuClick: external_prop_types_default().func
699
699
  };
700
700
  const CodebitThemeContext = /*#__PURE__*/ (0, external_react_.createContext)(null);
701
- const CodebitThemeProvider = ({ children, storeThemeInLocalStorage = true, containerId = 'root', forcedTheme = null, ...props })=>{
701
+ const DEFAULT_THEME_COLORS = {
702
+ primary: {
703
+ light: '#29D266',
704
+ dark: '#3F6F53'
705
+ },
706
+ primaryHover: {
707
+ light: '#3FE67F',
708
+ dark: '#6DB589'
709
+ },
710
+ primaryActive: {
711
+ light: '#1FBF4D',
712
+ dark: '#4A8361'
713
+ },
714
+ selectedText: {
715
+ light: '#FAFAFA',
716
+ dark: '#FAFAFA'
717
+ },
718
+ siderBg: {
719
+ light: '#001529',
720
+ dark: '#1a1a1a'
721
+ }
722
+ };
723
+ const CodebitThemeProvider = ({ children, storeThemeInLocalStorage = true, containerId = 'root', forcedTheme = null, colors = {}, ...props })=>{
702
724
  const hasLoaded = (0, external_react_.useRef)(false);
703
725
  const [isDarkMode, setIsDarkMode] = (0, external_react_.useState)(()=>{
704
726
  if (forcedTheme) return 'dark' === forcedTheme;
@@ -723,6 +745,30 @@ var __webpack_exports__ = {};
723
745
  const toggleTheme = ()=>{
724
746
  setIsDarkMode((prev)=>!prev);
725
747
  };
748
+ const resolvedColors = (0, external_react_.useMemo)(()=>({
749
+ primary: {
750
+ ...DEFAULT_THEME_COLORS.primary,
751
+ ...colors.primary
752
+ },
753
+ primaryHover: {
754
+ ...DEFAULT_THEME_COLORS.primaryHover,
755
+ ...colors.primaryHover
756
+ },
757
+ primaryActive: {
758
+ ...DEFAULT_THEME_COLORS.primaryActive,
759
+ ...colors.primaryActive
760
+ },
761
+ selectedText: {
762
+ ...DEFAULT_THEME_COLORS.selectedText,
763
+ ...colors.selectedText
764
+ },
765
+ siderBg: {
766
+ ...DEFAULT_THEME_COLORS.siderBg,
767
+ ...colors.siderBg
768
+ }
769
+ }), [
770
+ colors
771
+ ]);
726
772
  (0, external_react_.useEffect)(()=>{
727
773
  const target = document.getElementById(containerId);
728
774
  if (!target) return;
@@ -733,10 +779,11 @@ var __webpack_exports__ = {};
733
779
  document.documentElement.classList.remove('dark-theme');
734
780
  target.classList.remove('dark-theme');
735
781
  }
736
- document.documentElement.style.setProperty('--color-primary', isDarkMode ? '#589C75' : '#29D266');
782
+ document.documentElement.style.setProperty('--color-primary', resolvedColors.primary[isDarkMode ? 'dark' : 'light']);
737
783
  }, [
738
784
  isDarkMode,
739
- containerId
785
+ containerId,
786
+ resolvedColors
740
787
  ]);
741
788
  (0, external_react_.useEffect)(()=>{
742
789
  if (hasLoaded.current && storeThemeInLocalStorage) localStorage.setItem('theme', isDarkMode ? 'dark' : 'light');
@@ -759,29 +806,29 @@ var __webpack_exports__ = {};
759
806
  theme: {
760
807
  algorithm: isDarkMode ? external_antd_namespaceObject.theme.darkAlgorithm : external_antd_namespaceObject.theme.defaultAlgorithm,
761
808
  token: {
762
- colorPrimary: isDarkMode ? '#589C75' : '#29D266',
763
- colorInfo: isDarkMode ? '#589C75' : '#29D266',
764
- colorLink: isDarkMode ? '#589C75' : '#29D266'
809
+ colorPrimary: resolvedColors.primary[isDarkMode ? 'dark' : 'light'],
810
+ colorInfo: resolvedColors.primary[isDarkMode ? 'dark' : 'light'],
811
+ colorLink: resolvedColors.primary[isDarkMode ? 'dark' : 'light']
765
812
  },
766
813
  components: {
767
814
  Menu: {
768
- itemSelectedBg: isDarkMode ? '#589C75' : '#29D266',
769
- itemSelectedColor: '#FAFAFA',
770
- darkItemSelectedBg: isDarkMode ? '#589C75' : '#29D266',
771
- darkItemSelectedColor: '#FAFAFA'
815
+ itemSelectedBg: resolvedColors.primary[isDarkMode ? 'dark' : 'light'],
816
+ itemSelectedColor: resolvedColors.selectedText.light,
817
+ darkItemSelectedBg: resolvedColors.primary[isDarkMode ? 'dark' : 'light'],
818
+ darkItemSelectedColor: resolvedColors.selectedText.dark
772
819
  },
773
820
  Button: {
774
- colorPrimary: isDarkMode ? '#589C75' : '#29D266',
775
- colorPrimaryHover: isDarkMode ? '#6DB589' : '#3FE67F',
776
- colorPrimaryActive: isDarkMode ? '#4A8361' : '#1FBF4D'
821
+ colorPrimary: resolvedColors.primary[isDarkMode ? 'dark' : 'light'],
822
+ colorPrimaryHover: resolvedColors.primaryHover[isDarkMode ? 'dark' : 'light'],
823
+ colorPrimaryActive: resolvedColors.primaryActive[isDarkMode ? 'dark' : 'light']
777
824
  },
778
825
  Layout: {
779
- siderBg: isDarkMode ? '#1a1a1a' : '#001529',
780
- triggerBg: isDarkMode ? '#589C75' : '#29D266',
781
- triggerColor: '#FAFAFA'
826
+ siderBg: resolvedColors.siderBg[isDarkMode ? 'dark' : 'light'],
827
+ triggerBg: resolvedColors.primary[isDarkMode ? 'dark' : 'light'],
828
+ triggerColor: resolvedColors.selectedText[isDarkMode ? 'dark' : 'light']
782
829
  },
783
830
  Header: {
784
- colorPrimary: isDarkMode ? '#589C75' : '#29D266'
831
+ colorPrimary: resolvedColors.primary[isDarkMode ? 'dark' : 'light']
785
832
  }
786
833
  }
787
834
  },
@@ -803,7 +850,29 @@ var __webpack_exports__ = {};
803
850
  'dark',
804
851
  'light',
805
852
  null
806
- ])
853
+ ]),
854
+ colors: external_prop_types_default().shape({
855
+ primary: external_prop_types_default().shape({
856
+ light: external_prop_types_default().string,
857
+ dark: external_prop_types_default().string
858
+ }),
859
+ primaryHover: external_prop_types_default().shape({
860
+ light: external_prop_types_default().string,
861
+ dark: external_prop_types_default().string
862
+ }),
863
+ primaryActive: external_prop_types_default().shape({
864
+ light: external_prop_types_default().string,
865
+ dark: external_prop_types_default().string
866
+ }),
867
+ selectedText: external_prop_types_default().shape({
868
+ light: external_prop_types_default().string,
869
+ dark: external_prop_types_default().string
870
+ }),
871
+ siderBg: external_prop_types_default().shape({
872
+ light: external_prop_types_default().string,
873
+ dark: external_prop_types_default().string
874
+ })
875
+ })
807
876
  };
808
877
  const ThemeToggle = ()=>{
809
878
  const config = (0, external_react_.useContext)(CodebitThemeContext);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codebit-programando-solucoes/codebit-web-antd",
3
- "version": "1.1.41",
3
+ "version": "1.1.43",
4
4
  "main": "./dist/index.cjs",
5
5
  "type": "module",
6
6
  "types": "./src/index.d.ts",