@codebit-programando-solucoes/codebit-web-antd 1.1.41 → 1.1.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/contexts/CodebitThemeContext.d.ts +22 -0
- package/dist/index.cjs +87 -18
- package/package.json +1 -1
|
@@ -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: '#589C75' }` */
|
|
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
|
|
701
|
+
const DEFAULT_THEME_COLORS = {
|
|
702
|
+
primary: {
|
|
703
|
+
light: '#29D266',
|
|
704
|
+
dark: '#589C75'
|
|
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 ? '
|
|
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 ? '
|
|
763
|
-
colorInfo: isDarkMode ? '
|
|
764
|
-
colorLink: isDarkMode ? '
|
|
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 ? '
|
|
769
|
-
itemSelectedColor:
|
|
770
|
-
darkItemSelectedBg: isDarkMode ? '
|
|
771
|
-
darkItemSelectedColor:
|
|
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 ? '
|
|
775
|
-
colorPrimaryHover: isDarkMode ? '
|
|
776
|
-
colorPrimaryActive: isDarkMode ? '
|
|
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 ? '
|
|
780
|
-
triggerBg: isDarkMode ? '
|
|
781
|
-
triggerColor: '
|
|
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 ? '
|
|
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);
|