@admin-layout/tailwind-design-pro 10.0.9-alpha.2 → 10.0.9-alpha.21
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/lib/components/Layout/BasicLayout/index.d.ts.map +1 -1
- package/lib/components/Layout/BasicLayout/index.js +11 -28
- package/lib/components/Layout/BasicLayout/index.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/Header.d.ts.map +1 -1
- package/lib/components/Layout/GlobalHeader/Header.js +8 -4
- package/lib/components/Layout/GlobalHeader/Header.js.map +1 -1
- package/lib/components/Layout/ProTailwindLayout.d.ts +2 -0
- package/lib/components/Layout/ProTailwindLayout.d.ts.map +1 -1
- package/lib/components/Layout/ProTailwindLayout.js +6 -1
- package/lib/components/Layout/ProTailwindLayout.js.map +1 -1
- package/lib/components/Layout/Sidebar/DynamicIcon.d.ts +12 -0
- package/lib/components/Layout/Sidebar/DynamicIcon.d.ts.map +1 -0
- package/lib/components/Layout/Sidebar/DynamicIcon.js +51 -0
- package/lib/components/Layout/Sidebar/DynamicIcon.js.map +1 -0
- package/lib/components/Layout/Sidebar/Sidebar.d.ts +1 -0
- package/lib/components/Layout/Sidebar/Sidebar.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/Sidebar.js +35 -10
- package/lib/components/Layout/Sidebar/Sidebar.js.map +1 -1
- package/lib/components/Layout/Sidebar/SidebarMenu.d.ts +3 -5
- package/lib/components/Layout/Sidebar/SidebarMenu.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/SidebarMenu.js +118 -38
- package/lib/components/Layout/Sidebar/SidebarMenu.js.map +1 -1
- package/lib/components/Layout/slot-fill/AdditionalSettings.d.ts +4 -0
- package/lib/components/Layout/slot-fill/AdditionalSettings.d.ts.map +1 -0
- package/lib/components/Layout/slot-fill/AdditionalSettings.js +7 -0
- package/lib/components/Layout/slot-fill/AdditionalSettings.js.map +1 -0
- package/lib/components/Layout/slot-fill/index.d.ts +1 -0
- package/lib/components/Layout/slot-fill/index.d.ts.map +1 -1
- package/lib/components/SettingDrawer/SettingDrawer.d.ts.map +1 -1
- package/lib/components/SettingDrawer/SettingDrawer.js +35 -12
- package/lib/components/SettingDrawer/SettingDrawer.js.map +1 -1
- package/lib/components/SettingDrawer/ThemeColor.d.ts.map +1 -1
- package/lib/components/SettingDrawer/ThemeColor.js +3 -0
- package/lib/components/SettingDrawer/ThemeColor.js.map +1 -1
- package/lib/components/SettingDrawer/types.d.ts +11 -1
- package/lib/components/SettingDrawer/types.d.ts.map +1 -1
- package/lib/components/ThemeProvider/ThemeProvider.d.ts +18 -0
- package/lib/components/ThemeProvider/ThemeProvider.d.ts.map +1 -0
- package/lib/components/ThemeProvider/ThemeProvider.js +63 -0
- package/lib/components/ThemeProvider/ThemeProvider.js.map +1 -0
- package/lib/components/ThemeProvider/ThemeToggle.d.ts +7 -0
- package/lib/components/ThemeProvider/ThemeToggle.d.ts.map +1 -0
- package/lib/components/ThemeProvider/ThemeToggle.js +50 -0
- package/lib/components/ThemeProvider/ThemeToggle.js.map +1 -0
- package/lib/components/ThemeProvider/index.d.ts +7 -0
- package/lib/components/ThemeProvider/index.d.ts.map +1 -0
- package/lib/components/ThemeProvider/themeRegistry.d.ts +3 -0
- package/lib/components/ThemeProvider/themeRegistry.d.ts.map +1 -0
- package/lib/components/ThemeProvider/themeRegistry.js +388 -0
- package/lib/components/ThemeProvider/themeRegistry.js.map +1 -0
- package/lib/components/ThemeProvider/themeUtils.d.ts +26 -0
- package/lib/components/ThemeProvider/themeUtils.d.ts.map +1 -0
- package/lib/components/ThemeProvider/themeUtils.js +192 -0
- package/lib/components/ThemeProvider/themeUtils.js.map +1 -0
- package/lib/components/ThemeProvider/types.d.ts +112 -0
- package/lib/components/ThemeProvider/types.d.ts.map +1 -0
- package/lib/components/UI/CategoriesTypeList.d.ts +28 -0
- package/lib/components/UI/CategoriesTypeList.d.ts.map +1 -0
- package/lib/components/UI/CategoriesTypeList.js +85 -0
- package/lib/components/UI/CategoriesTypeList.js.map +1 -0
- package/lib/components/UI/index.d.ts +2 -0
- package/lib/components/UI/index.d.ts.map +1 -0
- package/lib/components/index.d.ts +3 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/index.js +1 -0
- package/lib/components/index.js.map +1 -0
- package/lib/components/typings.d.ts +8 -0
- package/lib/components/typings.d.ts.map +1 -1
- package/lib/compute.d.ts.map +1 -1
- package/lib/compute.js +6 -4
- package/lib/compute.js.map +1 -1
- package/lib/helpers/DynamicIcon.js +55 -0
- package/lib/helpers/DynamicIcon.js.map +1 -0
- package/lib/hooks/index.d.ts +3 -0
- package/lib/hooks/index.d.ts.map +1 -0
- package/lib/hooks/useWindowSize.d.ts +6 -0
- package/lib/hooks/useWindowSize.d.ts.map +1 -0
- package/lib/hooks/useWindowSize.js +20 -0
- package/lib/hooks/useWindowSize.js.map +1 -0
- package/lib/icons.d.ts +14 -0
- package/lib/icons.d.ts.map +1 -0
- package/lib/icons.js +13 -0
- package/lib/icons.js.map +1 -0
- package/lib/index.d.ts +0 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/machines/settingsMachine.d.ts.map +1 -1
- package/lib/machines/settingsMachine.js +7 -1
- package/lib/machines/settingsMachine.js.map +1 -1
- package/lib/module.d.ts.map +1 -1
- package/lib/module.js +2 -1
- package/lib/module.js.map +1 -1
- package/lib/routes.json +1 -0
- package/lib/styles/index.css +438 -46
- package/package.json +5 -5
- package/lib/utils/index.d.ts +0 -2
- package/lib/utils/index.d.ts.map +0 -1
- package/lib/utils/index.js +0 -13
- package/lib/utils/index.js.map +0 -1
|
@@ -1,88 +1,168 @@
|
|
|
1
|
-
import {jsx,jsxs}from'react/jsx-runtime';import {useState}from'react';import {
|
|
1
|
+
import {jsx,jsxs}from'react/jsx-runtime';import {useState}from'react';import {Link}from'@remix-run/react';import {generateMenuPath}from'@admin-layout/client';import {generateLightShade}from'../BasicLayout/utils.js';import {icons}from'../../../icons.js';const SidebarMenu = ({
|
|
2
2
|
menuData,
|
|
3
3
|
routeParams,
|
|
4
|
-
settings
|
|
4
|
+
settings,
|
|
5
|
+
collapsed
|
|
5
6
|
}) => {
|
|
6
|
-
// Track open menus by their depth level
|
|
7
7
|
const [openMenusByLevel, setOpenMenusByLevel] = useState({});
|
|
8
|
-
// Track the currently active menu item
|
|
9
8
|
const [activePath, setActivePath] = useState('/dashboard');
|
|
9
|
+
const [hoveredMenu, setHoveredMenu] = useState(null);
|
|
10
|
+
const [popupPosition, setPopupPosition] = useState({
|
|
11
|
+
top: 0,
|
|
12
|
+
height: 0
|
|
13
|
+
});
|
|
14
|
+
const {
|
|
15
|
+
ChevronDownIcon,
|
|
16
|
+
ChevronRightIcon
|
|
17
|
+
} = icons;
|
|
10
18
|
const toggleMenu = (path, depth, e) => {
|
|
11
|
-
// Prevent link navigation when clicking on a parent menu with children
|
|
12
19
|
e.preventDefault();
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (newState[depth] === path) {
|
|
19
|
-
newState[depth] = null;
|
|
20
|
-
}
|
|
21
|
-
// Otherwise, close any other menu at this depth level and open this one
|
|
22
|
-
else {
|
|
23
|
-
newState[depth] = path;
|
|
24
|
-
}
|
|
25
|
-
return newState;
|
|
26
|
-
});
|
|
20
|
+
if (collapsed) return;
|
|
21
|
+
setOpenMenusByLevel(prev => ({
|
|
22
|
+
...prev,
|
|
23
|
+
[depth]: prev[depth] === path ? null : path
|
|
24
|
+
}));
|
|
27
25
|
};
|
|
28
26
|
const handleMenuClick = (path, hasChildren, depth, e) => {
|
|
29
|
-
if (hasChildren) {
|
|
27
|
+
if (hasChildren && !collapsed) {
|
|
30
28
|
toggleMenu(path, depth, e);
|
|
31
29
|
} else {
|
|
32
|
-
// For leaf items, set as active and allow navigation
|
|
33
30
|
setActivePath(path);
|
|
34
31
|
}
|
|
35
32
|
};
|
|
36
|
-
const
|
|
33
|
+
const getFirstLetter = name => {
|
|
34
|
+
return name.charAt(0).toUpperCase();
|
|
35
|
+
};
|
|
36
|
+
const handleMenuHover = (e, item, isHoverMenu) => {
|
|
37
|
+
// Only set hover state if the menu has children
|
|
38
|
+
if (collapsed && !isHoverMenu && item.children && item.children.length > 0) {
|
|
39
|
+
const element = e.currentTarget;
|
|
40
|
+
const rect = element.getBoundingClientRect();
|
|
41
|
+
let top = rect.top;
|
|
42
|
+
// Store the height to use for positioning
|
|
43
|
+
setPopupPosition({
|
|
44
|
+
top: top,
|
|
45
|
+
height: rect.height
|
|
46
|
+
});
|
|
47
|
+
setHoveredMenu(item.path);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const handleMenuLeave = (item, isHoverMenu) => {
|
|
51
|
+
if (collapsed && !isHoverMenu) {
|
|
52
|
+
setHoveredMenu(null);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
const renderPopupMenu = (item, depth = 0) => {
|
|
56
|
+
if (!item.children || item.children.length === 0) return null;
|
|
57
|
+
const bgColor = generateLightShade(settings?.primaryColor, 0.98);
|
|
58
|
+
const sidebarWidth = collapsed ? 64 : 256; // 80px for collapsed (w-20), 256px for expanded (w-64)
|
|
59
|
+
return jsxs("div", {
|
|
60
|
+
className: "fixed shadow-xl rounded-md border border-gray-100 z-[999] overflow-hidden",
|
|
61
|
+
style: {
|
|
62
|
+
backgroundColor: bgColor,
|
|
63
|
+
left: `${sidebarWidth}px`,
|
|
64
|
+
// Position right after sidebar
|
|
65
|
+
top: `${popupPosition.top}px`,
|
|
66
|
+
boxShadow: '0 5px 15px rgba(0, 0, 0, 0.2)',
|
|
67
|
+
animation: 'fadeIn 0.2s ease-out forwards',
|
|
68
|
+
maxWidth: 'calc(100vw - 100px)',
|
|
69
|
+
// Prevent overflow on small screens
|
|
70
|
+
width: 'max-content',
|
|
71
|
+
minWidth: '220px'
|
|
72
|
+
},
|
|
73
|
+
children: [jsx("style", {
|
|
74
|
+
dangerouslySetInnerHTML: {
|
|
75
|
+
__html: `
|
|
76
|
+
@keyframes fadeIn {
|
|
77
|
+
from { opacity: 0; transform: translateX(-10px); }
|
|
78
|
+
to { opacity: 1; transform: translateX(0); }
|
|
79
|
+
}
|
|
80
|
+
`
|
|
81
|
+
}
|
|
82
|
+
}), jsx("div", {
|
|
83
|
+
className: "font-medium text-sm px-4 py-3 border-b border-gray-100 whitespace-nowrap",
|
|
84
|
+
style: {
|
|
85
|
+
backgroundColor: generateLightShade(settings?.primaryColor, 0.95)
|
|
86
|
+
},
|
|
87
|
+
children: jsx("span", {
|
|
88
|
+
style: {
|
|
89
|
+
color: settings?.primaryColor
|
|
90
|
+
},
|
|
91
|
+
children: item.name
|
|
92
|
+
})
|
|
93
|
+
}), jsx("div", {
|
|
94
|
+
className: "max-h-[400px] overflow-y-auto overflow-x-hidden py-1",
|
|
95
|
+
children: item.children.map(child => jsx("div", {
|
|
96
|
+
className: "w-full min-w-max",
|
|
97
|
+
children: renderMenuItem(child, depth + 1, true)
|
|
98
|
+
}, child.path))
|
|
99
|
+
})]
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
const renderMenuItem = (item, depth = 0, isHoverMenu = false) => {
|
|
37
103
|
const hasChildren = item.children && item.children.length > 0;
|
|
38
104
|
const isOpen = openMenusByLevel[depth] === item.path;
|
|
39
105
|
const isActive = activePath === item.path;
|
|
106
|
+
const isHovered = hoveredMenu === item.path;
|
|
40
107
|
const paddingLeft = `${depth * 1}rem`;
|
|
41
|
-
|
|
42
|
-
let bgColor = generateLightShade(settings?.primaryColor, 0.89);
|
|
108
|
+
const bgColor = generateLightShade(settings?.primaryColor, 0.89);
|
|
43
109
|
return jsxs("div", {
|
|
44
|
-
className:
|
|
110
|
+
className: `w-full relative group ${isHovered && collapsed && !isHoverMenu ? `rounded-md` : ''}`,
|
|
111
|
+
style: {
|
|
112
|
+
backgroundColor: isHovered && !isHoverMenu ? bgColor : ''
|
|
113
|
+
},
|
|
114
|
+
onMouseEnter: e => handleMenuHover(e, item, isHoverMenu),
|
|
115
|
+
onMouseLeave: () => handleMenuLeave(item, isHoverMenu),
|
|
45
116
|
children: [jsxs(Link, {
|
|
46
|
-
to: generateMenuPath(item?.path, routeParams),
|
|
47
|
-
className: `flex items-center justify-between w-full px-
|
|
117
|
+
to: hasChildren && collapsed && !isHoverMenu ? '#' : generateMenuPath(item?.path, routeParams),
|
|
118
|
+
className: `flex items-center justify-between w-full px-1 py-2 hover:bg-gray-100 text-sm cursor-pointer transition-colors rounded-md mx-1 my-0.5 whitespace-nowrap overflow-hidden text-ellipsis`,
|
|
48
119
|
style: {
|
|
49
120
|
paddingLeft: `calc(1rem + ${paddingLeft})`,
|
|
50
|
-
backgroundColor: isActive ? bgColor : ''
|
|
121
|
+
backgroundColor: isActive || isHovered ? bgColor : ''
|
|
51
122
|
},
|
|
52
123
|
onClick: e => handleMenuClick(item.path, hasChildren, depth, e),
|
|
53
124
|
children: [jsxs("div", {
|
|
54
|
-
className:
|
|
55
|
-
children: [item.icon
|
|
125
|
+
className: `flex items-center ${collapsed && !isHoverMenu ? 'justify-center w-full' : 'gap-3'}`,
|
|
126
|
+
children: [item.icon ? jsx("span", {
|
|
127
|
+
className: `${isActive || isHovered ? 'text-primary' : ''} flex-shrink-0`,
|
|
56
128
|
style: {
|
|
57
|
-
color: isActive ? settings?.primaryColor : ''
|
|
129
|
+
color: isActive || isHovered ? settings?.primaryColor : ''
|
|
58
130
|
},
|
|
59
131
|
children: item.icon
|
|
60
|
-
})
|
|
61
|
-
className:
|
|
132
|
+
}) : collapsed && !isHoverMenu ? jsx("span", {
|
|
133
|
+
className: "flex items-center justify-center flex-shrink-0",
|
|
134
|
+
style: {
|
|
135
|
+
color: isActive ? settings?.primaryColor : ''
|
|
136
|
+
},
|
|
137
|
+
children: getFirstLetter(item.name)
|
|
138
|
+
}) : null, (!collapsed || isHoverMenu) && jsx("span", {
|
|
139
|
+
className: "font-medium whitespace-nowrap overflow-hidden text-ellipsis",
|
|
62
140
|
style: {
|
|
63
141
|
color: isActive ? settings?.primaryColor : ''
|
|
64
142
|
},
|
|
65
143
|
children: item.name
|
|
66
144
|
})]
|
|
67
|
-
}), hasChildren && jsx("span", {
|
|
145
|
+
}), hasChildren && (!collapsed || isHoverMenu) && jsx("span", {
|
|
68
146
|
style: {
|
|
69
147
|
color: isActive ? settings?.primaryColor : ''
|
|
70
148
|
},
|
|
71
|
-
|
|
149
|
+
className: "flex-shrink-0 ml-1",
|
|
150
|
+
children: isOpen ? jsx(ChevronDownIcon, {
|
|
72
151
|
className: "h-4 w-4"
|
|
73
|
-
}) : jsx(
|
|
152
|
+
}) : jsx(ChevronRightIcon, {
|
|
74
153
|
className: "h-4 w-4"
|
|
75
154
|
})
|
|
76
155
|
})]
|
|
77
|
-
}), hasChildren && isOpen && jsx("div", {
|
|
156
|
+
}), collapsed && hasChildren && isHovered && !isHoverMenu && item.children.length > 0 && renderPopupMenu(item, depth), hasChildren && isOpen && !collapsed && jsx("div", {
|
|
78
157
|
className: "transition-all duration-200 ease-in-out",
|
|
79
158
|
children: item.children.map(child => renderMenuItem(child, depth + 1))
|
|
80
159
|
})]
|
|
81
160
|
}, item.path);
|
|
82
161
|
};
|
|
83
162
|
return jsx("div", {
|
|
163
|
+
className: "overflow-hidden",
|
|
84
164
|
children: jsx("nav", {
|
|
85
|
-
className:
|
|
165
|
+
className: `mt-2 ${collapsed ? 'px-1' : 'px-2'} overflow-x-hidden`,
|
|
86
166
|
children: menuData.map(item => renderMenuItem(item))
|
|
87
167
|
})
|
|
88
168
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarMenu.js","sources":["../../../../src/components/Layout/Sidebar/SidebarMenu.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SidebarMenu.js","sources":["../../../../src/components/Layout/Sidebar/SidebarMenu.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const ADDITIONAL_SETTINGS_SLOT_FILL_NAME = "additional_settings_slot_fill";
|
|
2
|
+
export declare const AdditionalSettingsSlot: (props: any) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare const AdditionalSettingsFillCard: (props: any) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
//# sourceMappingURL=AdditionalSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdditionalSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/slot-fill/AdditionalSettings.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,kCAAkC,kCAAkC,CAAC;AAElF,eAAO,MAAM,sBAAsB,yDAElC,CAAC;AAEF,eAAO,MAAM,0BAA0B,yDAEtC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import {jsx}from'react/jsx-runtime';import {Slot}from'@common-stack/components-pro';const ADDITIONAL_SETTINGS_SLOT_FILL_NAME = 'additional_settings_slot_fill';
|
|
2
|
+
const AdditionalSettingsSlot = props => {
|
|
3
|
+
return jsx(Slot, {
|
|
4
|
+
name: ADDITIONAL_SETTINGS_SLOT_FILL_NAME,
|
|
5
|
+
fillProps: props
|
|
6
|
+
});
|
|
7
|
+
};export{ADDITIONAL_SETTINGS_SLOT_FILL_NAME,AdditionalSettingsSlot};//# sourceMappingURL=AdditionalSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdditionalSettings.js","sources":["../../../../src/components/Layout/slot-fill/AdditionalSettings.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"oFAIO,MAAM,kCAAkC,GAAG;AAErC,MAAA,sBAAsB,GAAG,KAAC,IAAS;SACrCA,GAAA,CAAA,IAAK,EAAA;AAChB,IAAE,IAAA,EAAA,kCAAA;AAEF,IAAA,SAAa,EAAA;IACT;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/slot-fill/index.tsx"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/slot-fill/index.tsx"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingDrawer.d.ts","sourceRoot":"","sources":["../../../src/components/SettingDrawer/SettingDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SettingDrawer.d.ts","sourceRoot":"","sources":["../../../src/components/SettingDrawer/SettingDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B,OAAO,EAAsB,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAsRjE,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAiNtD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsx,Fragment,jsxs}from'react/jsx-runtime';import {useState,useRef,useEffect}from'react';import {useSelector}from'@xstate/react';import {useTranslation}from'react-i18next';import isBrowser from'../../utils/isBrowser/index.js';import {
|
|
1
|
+
import {jsx,Fragment,jsxs}from'react/jsx-runtime';import {useState,useRef,useEffect}from'react';import {useSelector}from'@xstate/react';import {useTranslation}from'react-i18next';import isBrowser from'../../utils/isBrowser/index.js';import {parse}from'qs';import clsx from'clsx';import {defaultSettings}from'../defaultSettings.js';import ThemeColor from'./ThemeColor.js';import CheckBoxTheme from'./CheckBoxTheme.js';import LayoutChange from'./LayoutChange.js';import RegionalSettings from'./RegionalSettings.js';import {ThemeSelector}from'./ThemeSelector.js';import NavigationModes from'./NavigationsModes.js';import {icons}from'../../icons.js';import'@common-stack/components-pro';import {AdditionalSettingsSlot}from'../Layout/slot-fill/AdditionalSettings.js';let oldSetting = {};
|
|
2
2
|
const updateTheme = (dark, color, publicPath = '/theme') => {
|
|
3
3
|
// ssr
|
|
4
4
|
if (typeof window === 'undefined' || !window.umi_plugin_ant_themeVar) {
|
|
@@ -201,12 +201,25 @@ const themeOptions = [{
|
|
|
201
201
|
title: 'Spotify Theme'
|
|
202
202
|
}];
|
|
203
203
|
const SettingDrawer = props => {
|
|
204
|
-
|
|
205
|
-
navTheme,
|
|
204
|
+
const {
|
|
206
205
|
settings,
|
|
207
206
|
onSettingChange,
|
|
208
|
-
|
|
207
|
+
hideLoading,
|
|
208
|
+
hideColors,
|
|
209
|
+
publicPath,
|
|
210
|
+
hideHintAlert,
|
|
211
|
+
hideCopyButton,
|
|
212
|
+
actor,
|
|
213
|
+
colorList,
|
|
214
|
+
navTheme,
|
|
215
|
+
pathname = ''
|
|
209
216
|
} = props;
|
|
217
|
+
const {
|
|
218
|
+
CloseIcon,
|
|
219
|
+
Settings5FillIcon,
|
|
220
|
+
CopyIcon,
|
|
221
|
+
CheckIcon
|
|
222
|
+
} = icons;
|
|
210
223
|
const [show, setShow] = useState(false);
|
|
211
224
|
const [copied, setCopied] = useState(false);
|
|
212
225
|
const {
|
|
@@ -229,6 +242,9 @@ const SettingDrawer = props => {
|
|
|
229
242
|
[key]: value
|
|
230
243
|
}
|
|
231
244
|
});
|
|
245
|
+
onSettingChange({
|
|
246
|
+
[key]: value
|
|
247
|
+
});
|
|
232
248
|
};
|
|
233
249
|
const handleCopySettings = async () => {
|
|
234
250
|
try {
|
|
@@ -272,10 +288,10 @@ const SettingDrawer = props => {
|
|
|
272
288
|
justifyContent: 'center'
|
|
273
289
|
},
|
|
274
290
|
className: `fixed top-24 right-0 z-50 border-none cursor-pointer transition duration-500 w-12 h-12 rounded-l-lg hover:bg-opacity-80 ${show ? 'mr-72' : 'mr-0'}`,
|
|
275
|
-
children: !show ? jsx(
|
|
291
|
+
children: !show ? jsx(Settings5FillIcon, {
|
|
276
292
|
fontSize: '32px',
|
|
277
293
|
className: "text-white"
|
|
278
|
-
}) : jsx(
|
|
294
|
+
}) : jsx(CloseIcon, {
|
|
279
295
|
className: "text-white",
|
|
280
296
|
fontSize: '36px'
|
|
281
297
|
})
|
|
@@ -291,7 +307,7 @@ const SettingDrawer = props => {
|
|
|
291
307
|
}), jsx("button", {
|
|
292
308
|
onClick: () => setShow(false),
|
|
293
309
|
className: "bg-transparent border-none rounded-lg w-10 h-10 cursor-pointer mb-2 hover:bg-gray-200 dark:hover:bg-[#2a2a2a]",
|
|
294
|
-
children: jsx(
|
|
310
|
+
children: jsx(CloseIcon, {
|
|
295
311
|
fontSize: '36px'
|
|
296
312
|
})
|
|
297
313
|
})]
|
|
@@ -317,12 +333,12 @@ const SettingDrawer = props => {
|
|
|
317
333
|
options: themeOptions
|
|
318
334
|
})]
|
|
319
335
|
}), jsxs("div", {
|
|
320
|
-
className: "mt-8",
|
|
336
|
+
className: "mt-8 dark:border-[#2a2b2a]",
|
|
321
337
|
children: [jsx("p", {
|
|
322
|
-
className: "text-black dark:text-white",
|
|
338
|
+
className: "mb-2 text-black dark:text-white",
|
|
323
339
|
children: t('theme_color')
|
|
324
340
|
}), jsx(ThemeColor, {
|
|
325
|
-
color: themeList.colorList[navTheme === 'realDark' ? 'dark' : 'light'],
|
|
341
|
+
color: colorList || themeList.colorList[navTheme === 'realDark' ? 'dark' : 'light'],
|
|
326
342
|
changeSetting: handleSettingChange,
|
|
327
343
|
settings: settingState
|
|
328
344
|
})]
|
|
@@ -348,6 +364,13 @@ const SettingDrawer = props => {
|
|
|
348
364
|
settings: settingState,
|
|
349
365
|
changeSetting: handleSettingChange
|
|
350
366
|
})]
|
|
367
|
+
}), jsx("div", {
|
|
368
|
+
className: "mt-8 pb-8 border-b border-black dark:border-[#2a2b2a]",
|
|
369
|
+
children: jsx(AdditionalSettingsSlot, {
|
|
370
|
+
settings: settingState,
|
|
371
|
+
onSettingsChange: handleSettingChange,
|
|
372
|
+
pathname: pathname
|
|
373
|
+
})
|
|
351
374
|
}), jsxs("div", {
|
|
352
375
|
className: "bg-yellow-50 dark:bg-yellow-900 border border-yellow-200 dark:border-yellow-700 rounded-lg p-4 mt-4",
|
|
353
376
|
children: [jsx("p", {
|
|
@@ -357,13 +380,13 @@ const SettingDrawer = props => {
|
|
|
357
380
|
className: clsx('mt-2 inline-flex items-center gap-2 px-3 py-1.5 border rounded-md text-sm transition-colors', copied ? 'border-green-300 text-green-700 bg-green-50 dark:border-green-600 dark:text-green-200 dark:bg-green-900' : 'border-yellow-300 text-yellow-700 bg-yellow-50 hover:bg-yellow-100 dark:border-yellow-600 dark:text-yellow-200 dark:bg-yellow-900/50 dark:hover:bg-yellow-900'),
|
|
358
381
|
onClick: handleCopySettings,
|
|
359
382
|
children: copied ? jsxs(Fragment, {
|
|
360
|
-
children: [jsx(
|
|
383
|
+
children: [jsx(CheckIcon, {
|
|
361
384
|
className: "w-4 h-4"
|
|
362
385
|
}), jsx("span", {
|
|
363
386
|
children: "Copied!"
|
|
364
387
|
})]
|
|
365
388
|
}) : jsxs(Fragment, {
|
|
366
|
-
children: [jsx(
|
|
389
|
+
children: [jsx(CopyIcon, {
|
|
367
390
|
className: "w-4 h-4"
|
|
368
391
|
}), jsx("span", {
|
|
369
392
|
children: "Copy Settings"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingDrawer.js","sources":["../../../src/components/SettingDrawer/SettingDrawer.tsx"],"sourcesContent":[null],"names":[
|
|
1
|
+
{"version":3,"file":"SettingDrawer.js","sources":["../../../src/components/SettingDrawer/SettingDrawer.tsx"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeColor.d.ts","sourceRoot":"","sources":["../../../src/components/SettingDrawer/ThemeColor.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ThemeColor.d.ts","sourceRoot":"","sources":["../../../src/components/SettingDrawer/ThemeColor.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,gBAAgB,2CAwCzD"}
|
|
@@ -4,6 +4,9 @@ import {jsx}from'react/jsx-runtime';function ThemeColor(props) {
|
|
|
4
4
|
changeSetting,
|
|
5
5
|
settings
|
|
6
6
|
} = props;
|
|
7
|
+
if (!color || color.length < 1) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
7
10
|
return jsx("div", {
|
|
8
11
|
className: "flex flex-row space-x-2",
|
|
9
12
|
children: color.map((item, index) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeColor.js","sources":["../../../src/components/SettingDrawer/ThemeColor.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"oCAGwB,SAAA,UAAU,CAAC,KAAuB,EAAA;QAChD;
|
|
1
|
+
{"version":3,"file":"ThemeColor.js","sources":["../../../src/components/SettingDrawer/ThemeColor.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"oCAGwB,SAAA,UAAU,CAAC,KAAuB,EAAA;QAChD;IAEN,KAAK;AACD,IAAA;IACJ;AAEA,GAAA,GAAA,KAAO;AAGK,EAAA,IAAA,CAAA,KAAA,IAAA,KAGQ,CAAA,MAAA,GAAA,CAAA,EAAA;AAGI,IAAA,OAAA,IAAA;;SAqBfA,GACC,CACT,KAAC,EAAA;AACN,IAAC,SAAA,EAAA,yBAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -40,12 +40,22 @@ export interface SettingDrawerProps {
|
|
|
40
40
|
hideCopyButton?: boolean;
|
|
41
41
|
navTheme?: string;
|
|
42
42
|
primaryColor?: string;
|
|
43
|
+
pathname?: string;
|
|
43
44
|
onCollapseChange?: (collapse: boolean) => void;
|
|
44
45
|
onSettingChange?: (settings: MergerSettingsType<ProSettings>) => void;
|
|
45
46
|
actor: any;
|
|
47
|
+
colorList?: {
|
|
48
|
+
key: string;
|
|
49
|
+
color: string;
|
|
50
|
+
title?: string;
|
|
51
|
+
}[];
|
|
46
52
|
}
|
|
47
53
|
export type IThemeColorProps = {
|
|
48
|
-
color?:
|
|
54
|
+
color?: Array<{
|
|
55
|
+
key: string;
|
|
56
|
+
color: string;
|
|
57
|
+
title?: string;
|
|
58
|
+
}>;
|
|
49
59
|
changeSetting?: (key: string, value: string | boolean | any) => void;
|
|
50
60
|
settings?: any;
|
|
51
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/SettingDrawer/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,WAAW,WAAW;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC;IACtC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC;CACxE,CAAC;AACF,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AACF,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IAClD,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACtE,KAAK,EAAE,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/SettingDrawer/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
export interface ThemeProviderProps {
|
|
3
|
+
settings: any;
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
interface ThemeContextType {
|
|
7
|
+
theme: string;
|
|
8
|
+
themeType: string;
|
|
9
|
+
primaryColor: string;
|
|
10
|
+
fontFamily: string;
|
|
11
|
+
isDarkMode: boolean;
|
|
12
|
+
toggleTheme?: () => void;
|
|
13
|
+
}
|
|
14
|
+
export declare const ThemeContext: React.Context<ThemeContextType>;
|
|
15
|
+
export declare const useTheme: () => ThemeContextType;
|
|
16
|
+
export declare const ThemeProvider: React.FC<ThemeProviderProps>;
|
|
17
|
+
export default ThemeProvider;
|
|
18
|
+
//# sourceMappingURL=ThemeProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/components/ThemeProvider/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAwC,SAAS,EAAY,MAAM,OAAO,CAAC;AAIzF,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,UAAU,gBAAgB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAGD,eAAO,MAAM,YAAY,iCAOvB,CAAC;AAEH,eAAO,MAAM,QAAQ,wBAAiC,CAAC;AAEvD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAwEtD,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import {jsx}from'react/jsx-runtime';import {createContext,useContext,useState,useEffect}from'react';import {themeRegistry}from'./themeRegistry.js';import {applyTheme}from'./themeUtils.js';// Create the context with default values
|
|
2
|
+
const ThemeContext = createContext({
|
|
3
|
+
theme: 'default',
|
|
4
|
+
themeType: 'light',
|
|
5
|
+
primaryColor: '#1890ff',
|
|
6
|
+
fontFamily: 'Inter, sans-serif',
|
|
7
|
+
isDarkMode: false,
|
|
8
|
+
toggleTheme: () => {}
|
|
9
|
+
});
|
|
10
|
+
const useTheme = () => useContext(ThemeContext);
|
|
11
|
+
const ThemeProvider = ({
|
|
12
|
+
settings,
|
|
13
|
+
children
|
|
14
|
+
}) => {
|
|
15
|
+
const {
|
|
16
|
+
theme = 'default',
|
|
17
|
+
themeType = 'light',
|
|
18
|
+
primaryColor = '#1890ff',
|
|
19
|
+
fontFamily = 'Inter, sans-serif'
|
|
20
|
+
} = settings;
|
|
21
|
+
const [isDarkMode, setIsDarkMode] = useState(false);
|
|
22
|
+
// Toggle dark mode class on document
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (settings?.navTheme === 'light') {
|
|
25
|
+
setIsDarkMode(false);
|
|
26
|
+
document.documentElement.classList.remove('dark');
|
|
27
|
+
} else if (settings?.navTheme === 'dark') {
|
|
28
|
+
document.documentElement.classList.add('dark');
|
|
29
|
+
setIsDarkMode(true);
|
|
30
|
+
} else {
|
|
31
|
+
setIsDarkMode(false);
|
|
32
|
+
document.documentElement.classList.remove('dark');
|
|
33
|
+
}
|
|
34
|
+
}, [settings]);
|
|
35
|
+
// Apply theme effects when component mounts and when theme settings change
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
const selectedTheme = themeRegistry[theme] || themeRegistry.default;
|
|
38
|
+
// Apply CSS variables for the selected theme
|
|
39
|
+
applyTheme(selectedTheme, {
|
|
40
|
+
isDarkMode,
|
|
41
|
+
primaryColor,
|
|
42
|
+
fontFamily
|
|
43
|
+
});
|
|
44
|
+
// Apply font family to document
|
|
45
|
+
document.documentElement.style.setProperty('--font-family', fontFamily);
|
|
46
|
+
document.body.className = `font-sans ${isDarkMode ? 'dark' : ''}`;
|
|
47
|
+
// Apply theme-specific classes
|
|
48
|
+
document.body.dataset.theme = theme;
|
|
49
|
+
// Apply radius to all appropriate elements via CSS
|
|
50
|
+
const radius = selectedTheme.borderRadius.DEFAULT;
|
|
51
|
+
document.documentElement.style.setProperty('--radius', radius);
|
|
52
|
+
}, [theme, themeType, primaryColor, fontFamily, isDarkMode]);
|
|
53
|
+
return jsx(ThemeContext.Provider, {
|
|
54
|
+
value: {
|
|
55
|
+
theme,
|
|
56
|
+
themeType,
|
|
57
|
+
primaryColor,
|
|
58
|
+
fontFamily,
|
|
59
|
+
isDarkMode
|
|
60
|
+
},
|
|
61
|
+
children: children
|
|
62
|
+
});
|
|
63
|
+
};export{ThemeContext,ThemeProvider,ThemeProvider as default,useTheme};//# sourceMappingURL=ThemeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sources":["../../../src/components/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"4LAkBA;AACO,MAAM,YAAY,GAAG,aAAa,CAAmB;AACxD,EAAA,KAAA,EAAK,SAAW;AAChB,EAAA,SAAA,EAAS,OAAS;AAClB,EAAA,YAAA,EAAY,SAAW;AACvB,EAAA,UAAA,EAAU,mBAAqB;AAC/B,EAAA,UAAA,EAAU,KAAO;AACjB,EAAA,WAAA,EAAW,MAAO;AACrB,CAAA;AAEY,MAAA,QAAQ,GAAG,MAAM,UAAU,CAAC,YAAY;AAExC,MAAA,aAAa,GAAiC,CAAC;AACxD,EAAA,QAAM;;MAS+B;QAC5B;AACL,IAAA,KAAA,GAAI,SAAU;aACG,GAAA,OAAA;gBACL,GAAA;cACX,GAAA;AAAM,GAAA,GAAA,QAAA;mBACK,EAAC,iBAAgB,QAAS,CAAC,KAAU,CAAA;;WAEhD,CAAA,MAAA;gBAAO,EAAA,QAAA,KAAA,OAAA,EAAA;mBACS,CAAA,KAAA,CAAC;cACN,CAAA,yBAAiB,CAAA,MAAU,CAAM,MAAC,CAAM;WACnD,IAAA,QAAA,EAAA,QAAA,KAAA,MAAA,EAAA;AACL,MAAG,QAAS,CAAA,eAAG,CAAA,SAAA,CAAA,GAAA,CAAA,MAAA,CAAA;MAC4D,aAAA,CAAA,IAAA,CAAA;KAClE,MAAA;mBACC,CAAA,KAAA,CAAA;cAEuC,CAAA,eAAA,CAAA,SAAA,CAAA,MAAA,CAAA,MAAA,CAAA;;cAE/B,CAAA,CAAA;;YAEV,MAAU;AACb,IAAA,MAAC,aAAC,GAAA,aAAA,CAAA,KAAA,CAAA,IAAA,aAAA,CAAA,OAAA;;cAGK,CAAA,aAAgB,EAAA;AACxB,MAAA,UAAQ;kBAEuB;;;AAI/B;YACQ,CAAA,eAAgB,CAAA,KAAM,CAAA,WAAY,CAAA,eAAW,EAAQ,UAAE,CAAA;AACnE,IAAA,QAAS,CAAA,IAAW,CAAA,SAAc,GAAA,CAAA,UAAY,EAAA,UAAY,GAAA,MAAA,GAAG,EAAA,CAAA,CAAA;;IAG7D,QAAM,CAAA,IAAA,CAAA,OAAc,CAAA,KAAK,GAAA,KAAA;;UAG8C,MAAA,GAAA,aAAA,CAAA,YAAA,CAAA,OAAA;AACnE,IAAA,QAAI,CAAQ,eAAgB,CAAA,KAAA,CAAA,WAAG,CAAA,UAAA,EAAA,MAAA,CAAA;aACnB,uBAAgB,EAAC,UAAA,EAAA,UAAA,CAAA,CAAA;SAexBA,GAEA,CAAA,YAAA,CAAA,QAEP,EAAA;AACN,IAAE,KAAA,EAAA;AAEF,MAAA,KAAA;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../../../src/components/ThemeProvider/ThemeToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAYlD,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {jsx}from'react/jsx-runtime';import {useTheme}from'./ThemeProvider.js';const ThemeToggle = ({
|
|
2
|
+
className = ''
|
|
3
|
+
}) => {
|
|
4
|
+
const {
|
|
5
|
+
isDarkMode,
|
|
6
|
+
toggleTheme
|
|
7
|
+
} = useTheme();
|
|
8
|
+
return jsx("button", {
|
|
9
|
+
onClick: toggleTheme,
|
|
10
|
+
className: `rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary transition-colors ${className}`,
|
|
11
|
+
"aria-label": "Toggle dark mode",
|
|
12
|
+
children: isDarkMode ? jsx(SunIcon, {
|
|
13
|
+
className: "w-5 h-5"
|
|
14
|
+
}) : jsx(MoonIcon, {
|
|
15
|
+
className: "w-5 h-5"
|
|
16
|
+
})
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
// Simple Sun icon component
|
|
20
|
+
const SunIcon = ({
|
|
21
|
+
className
|
|
22
|
+
}) => jsx("svg", {
|
|
23
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
24
|
+
className: className,
|
|
25
|
+
fill: "none",
|
|
26
|
+
viewBox: "0 0 24 24",
|
|
27
|
+
stroke: "currentColor",
|
|
28
|
+
children: jsx("path", {
|
|
29
|
+
strokeLinecap: "round",
|
|
30
|
+
strokeLinejoin: "round",
|
|
31
|
+
strokeWidth: 2,
|
|
32
|
+
d: "M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
// Simple Moon icon component
|
|
36
|
+
const MoonIcon = ({
|
|
37
|
+
className
|
|
38
|
+
}) => jsx("svg", {
|
|
39
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
40
|
+
className: className,
|
|
41
|
+
fill: "none",
|
|
42
|
+
viewBox: "0 0 24 24",
|
|
43
|
+
stroke: "currentColor",
|
|
44
|
+
children: jsx("path", {
|
|
45
|
+
strokeLinecap: "round",
|
|
46
|
+
strokeLinejoin: "round",
|
|
47
|
+
strokeWidth: 2,
|
|
48
|
+
d: "M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"
|
|
49
|
+
})
|
|
50
|
+
});export{ThemeToggle};//# sourceMappingURL=ThemeToggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeToggle.js","sources":["../../../src/components/ThemeProvider/ThemeToggle.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"8EAOa,MAAA,WAAW,GAA+B,CAAC;WAC9C;AAEN,CAAA,KAAA;AASJ,EAAE,MAAA;AAEF,IAA4B,UAAA;AAC5B,IAAM;AAWN,GAA6B,GAAA,QAAA,EAAA;AAC7B,EAAM,OAAAA,GAAA,CAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|