@umituz/web-dashboard 1.0.7 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/BrandLogo.d.ts +18 -0
- package/dist/components/BrandLogo.js +88 -0
- package/dist/components/BrandLogo.js.map +1 -0
- package/dist/components/DashboardHeader.d.ts +36 -0
- package/dist/components/DashboardHeader.js +225 -0
- package/dist/components/DashboardHeader.js.map +1 -0
- package/dist/components/DashboardLayout.d.ts +45 -0
- package/dist/{index.js → components/DashboardLayout.js} +3 -254
- package/dist/components/DashboardLayout.js.map +1 -0
- package/dist/components/DashboardSidebar.d.ts +29 -0
- package/dist/components/DashboardSidebar.js +189 -0
- package/dist/components/DashboardSidebar.js.map +1 -0
- package/dist/hooks/dashboard.d.ts +35 -0
- package/dist/hooks/dashboard.js +57 -0
- package/dist/hooks/dashboard.js.map +1 -0
- package/dist/theme/default.d.ts +18 -0
- package/dist/theme/default.js +52 -0
- package/dist/theme/default.js.map +1 -0
- package/dist/theme/presets.d.ts +14 -0
- package/dist/theme/presets.js +137 -0
- package/dist/theme/presets.js.map +1 -0
- package/dist/theme/utils.d.ts +22 -0
- package/dist/theme/utils.js +181 -0
- package/dist/theme/utils.js.map +1 -0
- package/dist/types/layout.d.ts +45 -0
- package/dist/types/layout.js +2 -0
- package/dist/types/layout.js.map +1 -0
- package/dist/types/notification.d.ts +20 -0
- package/dist/types/notification.js +2 -0
- package/dist/types/notification.js.map +1 -0
- package/dist/types/sidebar.d.ts +36 -0
- package/dist/types/sidebar.js +2 -0
- package/dist/types/sidebar.js.map +1 -0
- package/dist/types/theme.d.ts +64 -0
- package/dist/types/theme.js +2 -0
- package/dist/types/theme.js.map +1 -0
- package/dist/types/user.d.ts +37 -0
- package/dist/types/user.js +2 -0
- package/dist/types/user.js.map +1 -0
- package/dist/utils/dashboard.d.ts +57 -0
- package/dist/utils/dashboard.js +44 -0
- package/dist/utils/dashboard.js.map +1 -0
- package/package.json +51 -23
- package/dist/index.d.ts +0 -403
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { DashboardNotification } from '../types/notification.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Use Notifications Hook
|
|
6
|
+
*
|
|
7
|
+
* Manages notification state and actions
|
|
8
|
+
*
|
|
9
|
+
* @param initialNotifications - Initial notification list
|
|
10
|
+
* @returns Notification state and actions
|
|
11
|
+
*/
|
|
12
|
+
declare function useNotifications(initialNotifications?: DashboardNotification[]): {
|
|
13
|
+
notifications: DashboardNotification[];
|
|
14
|
+
markAllRead: () => void;
|
|
15
|
+
dismiss: (id: string) => void;
|
|
16
|
+
add: (notification: Omit<DashboardNotification, "id">) => void;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Use Sidebar Hook
|
|
20
|
+
*
|
|
21
|
+
* Manages sidebar state
|
|
22
|
+
*
|
|
23
|
+
* @returns Sidebar state and actions
|
|
24
|
+
*/
|
|
25
|
+
declare function useSidebar(initialCollapsed?: boolean): {
|
|
26
|
+
collapsed: boolean;
|
|
27
|
+
setCollapsed: react.Dispatch<react.SetStateAction<boolean>>;
|
|
28
|
+
toggle: () => void;
|
|
29
|
+
mobileOpen: boolean;
|
|
30
|
+
setMobileOpen: react.Dispatch<react.SetStateAction<boolean>>;
|
|
31
|
+
openMobile: () => void;
|
|
32
|
+
closeMobile: () => void;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export { useNotifications, useSidebar };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/domains/layouts/hooks/dashboard.ts
|
|
4
|
+
import { useState, useCallback } from "react";
|
|
5
|
+
function useNotifications(initialNotifications = []) {
|
|
6
|
+
const [notifications, setNotifications] = useState(initialNotifications);
|
|
7
|
+
const markAllRead = useCallback(() => {
|
|
8
|
+
setNotifications(
|
|
9
|
+
(prev) => prev.map((n) => ({ ...n, read: true }))
|
|
10
|
+
);
|
|
11
|
+
}, []);
|
|
12
|
+
const dismiss = useCallback((id) => {
|
|
13
|
+
setNotifications((prev) => prev.filter((n) => n.id !== id));
|
|
14
|
+
}, []);
|
|
15
|
+
const add = useCallback((notification) => {
|
|
16
|
+
const newNotification = {
|
|
17
|
+
...notification,
|
|
18
|
+
id: crypto.randomUUID(),
|
|
19
|
+
read: false,
|
|
20
|
+
createdAt: /* @__PURE__ */ new Date()
|
|
21
|
+
};
|
|
22
|
+
setNotifications((prev) => [newNotification, ...prev]);
|
|
23
|
+
}, []);
|
|
24
|
+
return {
|
|
25
|
+
notifications,
|
|
26
|
+
markAllRead,
|
|
27
|
+
dismiss,
|
|
28
|
+
add
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function useSidebar(initialCollapsed = false) {
|
|
32
|
+
const [collapsed, setCollapsed] = useState(initialCollapsed);
|
|
33
|
+
const [mobileOpen, setMobileOpen] = useState(false);
|
|
34
|
+
const toggle = useCallback(() => {
|
|
35
|
+
setCollapsed((prev) => !prev);
|
|
36
|
+
}, []);
|
|
37
|
+
const openMobile = useCallback(() => {
|
|
38
|
+
setMobileOpen(true);
|
|
39
|
+
}, []);
|
|
40
|
+
const closeMobile = useCallback(() => {
|
|
41
|
+
setMobileOpen(false);
|
|
42
|
+
}, []);
|
|
43
|
+
return {
|
|
44
|
+
collapsed,
|
|
45
|
+
setCollapsed,
|
|
46
|
+
toggle,
|
|
47
|
+
mobileOpen,
|
|
48
|
+
setMobileOpen,
|
|
49
|
+
openMobile,
|
|
50
|
+
closeMobile
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
useNotifications,
|
|
55
|
+
useSidebar
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/domains/layouts/hooks/dashboard.ts"],"sourcesContent":["/**\n * Dashboard Hooks\n *\n * Custom React hooks for dashboard functionality\n */\n\nimport { useState, useCallback } from \"react\";\nimport type { DashboardNotification } from \"../types/notification\";\n\n/**\n * Use Notifications Hook\n *\n * Manages notification state and actions\n *\n * @param initialNotifications - Initial notification list\n * @returns Notification state and actions\n */\nexport function useNotifications(initialNotifications: DashboardNotification[] = []) {\n const [notifications, setNotifications] = useState<DashboardNotification[]>(initialNotifications);\n\n const markAllRead = useCallback(() => {\n setNotifications((prev) =>\n prev.map((n) => ({ ...n, read: true }))\n );\n }, []);\n\n const dismiss = useCallback((id: string) => {\n setNotifications((prev) => prev.filter((n) => n.id !== id));\n }, []);\n\n const add = useCallback((notification: Omit<DashboardNotification, \"id\">) => {\n const newNotification: DashboardNotification = {\n ...notification,\n id: crypto.randomUUID(),\n read: false,\n createdAt: new Date(),\n };\n setNotifications((prev) => [newNotification, ...prev]);\n }, []);\n\n return {\n notifications,\n markAllRead,\n dismiss,\n add,\n };\n}\n\n/**\n * Use Sidebar Hook\n *\n * Manages sidebar state\n *\n * @returns Sidebar state and actions\n */\nexport function useSidebar(initialCollapsed = false) {\n const [collapsed, setCollapsed] = useState(initialCollapsed);\n const [mobileOpen, setMobileOpen] = useState(false);\n\n const toggle = useCallback(() => {\n setCollapsed((prev) => !prev);\n }, []);\n\n const openMobile = useCallback(() => {\n setMobileOpen(true);\n }, []);\n\n const closeMobile = useCallback(() => {\n setMobileOpen(false);\n }, []);\n\n return {\n collapsed,\n setCollapsed,\n toggle,\n mobileOpen,\n setMobileOpen: setMobileOpen,\n openMobile,\n closeMobile,\n };\n}\n"],"mappings":";;;AAMA,SAAS,UAAU,mBAAmB;AAW/B,SAAS,iBAAiB,uBAAgD,CAAC,GAAG;AACnF,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAkC,oBAAoB;AAEhG,QAAM,cAAc,YAAY,MAAM;AACpC;AAAA,MAAiB,CAAC,SAChB,KAAK,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,KAAK,EAAE;AAAA,IACxC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,UAAU,YAAY,CAAC,OAAe;AAC1C,qBAAiB,CAAC,SAAS,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AAAA,EAC5D,GAAG,CAAC,CAAC;AAEL,QAAM,MAAM,YAAY,CAAC,iBAAoD;AAC3E,UAAM,kBAAyC;AAAA,MAC7C,GAAG;AAAA,MACH,IAAI,OAAO,WAAW;AAAA,MACtB,MAAM;AAAA,MACN,WAAW,oBAAI,KAAK;AAAA,IACtB;AACA,qBAAiB,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAAA,EACvD,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AASO,SAAS,WAAW,mBAAmB,OAAO;AACnD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,gBAAgB;AAC3D,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,SAAS,YAAY,MAAM;AAC/B,iBAAa,CAAC,SAAS,CAAC,IAAI;AAAA,EAC9B,GAAG,CAAC,CAAC;AAEL,QAAM,aAAa,YAAY,MAAM;AACnC,kBAAc,IAAI;AAAA,EACpB,GAAG,CAAC,CAAC;AAEL,QAAM,cAAc,YAAY,MAAM;AACpC,kBAAc,KAAK;AAAA,EACrB,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DashboardTheme } from '../types/theme.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Dashboard Theme - Default Themes
|
|
5
|
+
*
|
|
6
|
+
* Default light and dark theme configurations
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Default dashboard theme (light mode)
|
|
11
|
+
*/
|
|
12
|
+
declare const DEFAULT_DASHBOARD_THEME: DashboardTheme;
|
|
13
|
+
/**
|
|
14
|
+
* Default dashboard theme (dark mode)
|
|
15
|
+
*/
|
|
16
|
+
declare const DEFAULT_DASHBOARD_THEME_DARK: DashboardTheme;
|
|
17
|
+
|
|
18
|
+
export { DEFAULT_DASHBOARD_THEME, DEFAULT_DASHBOARD_THEME_DARK };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/domains/layouts/theme/default.ts
|
|
4
|
+
var DEFAULT_DASHBOARD_THEME = {
|
|
5
|
+
primary: "hsl(222.2 47.4% 11.2%)",
|
|
6
|
+
secondary: "hsl(217.2 32.6% 17.5%)",
|
|
7
|
+
sidebarBackground: "hsl(222.2 47.4% 11.2%)",
|
|
8
|
+
sidebarForeground: "hsl(210 40% 98%)",
|
|
9
|
+
sidebarBorder: "hsl(217.2 32.6% 17.5%)",
|
|
10
|
+
headerBackground: "hsla(0, 0%, 100%, 0.8)",
|
|
11
|
+
background: "hsl(0 0% 100%)",
|
|
12
|
+
foreground: "hsl(222.2 84% 4.9%)",
|
|
13
|
+
border: "hsl(214.3 31.8% 91.4%)",
|
|
14
|
+
accent: "hsl(217.2 91.2% 59.8%)",
|
|
15
|
+
accentForeground: "hsl(0 0% 100%)",
|
|
16
|
+
destructive: "hsl(0 84.2% 60.2%)",
|
|
17
|
+
destructiveForeground: "hsl(0 0% 98%)",
|
|
18
|
+
muted: "hsl(210 40% 96.1%)",
|
|
19
|
+
mutedForeground: "hsl(215.4 16.3% 46.9%)",
|
|
20
|
+
card: "hsl(0 0% 100%)",
|
|
21
|
+
cardForeground: "hsl(222.2 84% 4.9%)",
|
|
22
|
+
popover: "hsl(0 0% 100%)",
|
|
23
|
+
popoverForeground: "hsl(222.2 84% 4.9%)",
|
|
24
|
+
radius: "0.5rem"
|
|
25
|
+
};
|
|
26
|
+
var DEFAULT_DASHBOARD_THEME_DARK = {
|
|
27
|
+
primary: "hsl(217.2 91.2% 59.8%)",
|
|
28
|
+
secondary: "hsl(217.2 32.6% 17.5%)",
|
|
29
|
+
sidebarBackground: "hsl(222.2 47.4% 11.2%)",
|
|
30
|
+
sidebarForeground: "hsl(210 40% 98%)",
|
|
31
|
+
sidebarBorder: "hsl(217.2 32.6% 17.5%)",
|
|
32
|
+
headerBackground: "hsla(222.2 47.4% 11.2%, 0.8)",
|
|
33
|
+
background: "hsl(222.2 84% 4.9%)",
|
|
34
|
+
foreground: "hsl(210 40% 98%)",
|
|
35
|
+
border: "hsl(217.2 32.6% 17.5%)",
|
|
36
|
+
accent: "hsl(217.2 91.2% 59.8%)",
|
|
37
|
+
accentForeground: "hsl(0 0% 100%)",
|
|
38
|
+
destructive: "hsl(0 62.8% 30.6%)",
|
|
39
|
+
destructiveForeground: "hsl(0 0% 98%)",
|
|
40
|
+
muted: "hsl(217.2 32.6% 17.5%)",
|
|
41
|
+
mutedForeground: "hsl(215 20.2% 65.1%)",
|
|
42
|
+
card: "hsl(222.2 84% 4.9%)",
|
|
43
|
+
cardForeground: "hsl(210 40% 98%)",
|
|
44
|
+
popover: "hsl(222.2 84% 4.9%)",
|
|
45
|
+
popoverForeground: "hsl(210 40% 98%)",
|
|
46
|
+
radius: "0.5rem"
|
|
47
|
+
};
|
|
48
|
+
export {
|
|
49
|
+
DEFAULT_DASHBOARD_THEME,
|
|
50
|
+
DEFAULT_DASHBOARD_THEME_DARK
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=default.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/domains/layouts/theme/default.ts"],"sourcesContent":["/**\n * Dashboard Theme - Default Themes\n *\n * Default light and dark theme configurations\n */\n\nimport type { DashboardTheme } from '../types/theme';\n\n/**\n * Default dashboard theme (light mode)\n */\nexport const DEFAULT_DASHBOARD_THEME: DashboardTheme = {\n primary: \"hsl(222.2 47.4% 11.2%)\",\n secondary: \"hsl(217.2 32.6% 17.5%)\",\n sidebarBackground: \"hsl(222.2 47.4% 11.2%)\",\n sidebarForeground: \"hsl(210 40% 98%)\",\n sidebarBorder: \"hsl(217.2 32.6% 17.5%)\",\n headerBackground: \"hsla(0, 0%, 100%, 0.8)\",\n background: \"hsl(0 0% 100%)\",\n foreground: \"hsl(222.2 84% 4.9%)\",\n border: \"hsl(214.3 31.8% 91.4%)\",\n accent: \"hsl(217.2 91.2% 59.8%)\",\n accentForeground: \"hsl(0 0% 100%)\",\n destructive: \"hsl(0 84.2% 60.2%)\",\n destructiveForeground: \"hsl(0 0% 98%)\",\n muted: \"hsl(210 40% 96.1%)\",\n mutedForeground: \"hsl(215.4 16.3% 46.9%)\",\n card: \"hsl(0 0% 100%)\",\n cardForeground: \"hsl(222.2 84% 4.9%)\",\n popover: \"hsl(0 0% 100%)\",\n popoverForeground: \"hsl(222.2 84% 4.9%)\",\n radius: \"0.5rem\",\n};\n\n/**\n * Default dashboard theme (dark mode)\n */\nexport const DEFAULT_DASHBOARD_THEME_DARK: DashboardTheme = {\n primary: \"hsl(217.2 91.2% 59.8%)\",\n secondary: \"hsl(217.2 32.6% 17.5%)\",\n sidebarBackground: \"hsl(222.2 47.4% 11.2%)\",\n sidebarForeground: \"hsl(210 40% 98%)\",\n sidebarBorder: \"hsl(217.2 32.6% 17.5%)\",\n headerBackground: \"hsla(222.2 47.4% 11.2%, 0.8)\",\n background: \"hsl(222.2 84% 4.9%)\",\n foreground: \"hsl(210 40% 98%)\",\n border: \"hsl(217.2 32.6% 17.5%)\",\n accent: \"hsl(217.2 91.2% 59.8%)\",\n accentForeground: \"hsl(0 0% 100%)\",\n destructive: \"hsl(0 62.8% 30.6%)\",\n destructiveForeground: \"hsl(0 0% 98%)\",\n muted: \"hsl(217.2 32.6% 17.5%)\",\n mutedForeground: \"hsl(215 20.2% 65.1%)\",\n card: \"hsl(222.2 84% 4.9%)\",\n cardForeground: \"hsl(210 40% 98%)\",\n popover: \"hsl(222.2 84% 4.9%)\",\n popoverForeground: \"hsl(210 40% 98%)\",\n radius: \"0.5rem\",\n};\n"],"mappings":";;;AAWO,IAAM,0BAA0C;AAAA,EACrD,SAAS;AAAA,EACT,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,QAAQ;AACV;AAKO,IAAM,+BAA+C;AAAA,EAC1D,SAAS;AAAA,EACT,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,QAAQ;AACV;","names":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DashboardThemePreset } from '../types/theme.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Dashboard Theme - Presets
|
|
5
|
+
*
|
|
6
|
+
* Pre-configured theme presets
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Available theme presets
|
|
11
|
+
*/
|
|
12
|
+
declare const DASHBOARD_THEME_PRESETS: DashboardThemePreset[];
|
|
13
|
+
|
|
14
|
+
export { DASHBOARD_THEME_PRESETS };
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/domains/layouts/theme/default.ts
|
|
4
|
+
var DEFAULT_DASHBOARD_THEME = {
|
|
5
|
+
primary: "hsl(222.2 47.4% 11.2%)",
|
|
6
|
+
secondary: "hsl(217.2 32.6% 17.5%)",
|
|
7
|
+
sidebarBackground: "hsl(222.2 47.4% 11.2%)",
|
|
8
|
+
sidebarForeground: "hsl(210 40% 98%)",
|
|
9
|
+
sidebarBorder: "hsl(217.2 32.6% 17.5%)",
|
|
10
|
+
headerBackground: "hsla(0, 0%, 100%, 0.8)",
|
|
11
|
+
background: "hsl(0 0% 100%)",
|
|
12
|
+
foreground: "hsl(222.2 84% 4.9%)",
|
|
13
|
+
border: "hsl(214.3 31.8% 91.4%)",
|
|
14
|
+
accent: "hsl(217.2 91.2% 59.8%)",
|
|
15
|
+
accentForeground: "hsl(0 0% 100%)",
|
|
16
|
+
destructive: "hsl(0 84.2% 60.2%)",
|
|
17
|
+
destructiveForeground: "hsl(0 0% 98%)",
|
|
18
|
+
muted: "hsl(210 40% 96.1%)",
|
|
19
|
+
mutedForeground: "hsl(215.4 16.3% 46.9%)",
|
|
20
|
+
card: "hsl(0 0% 100%)",
|
|
21
|
+
cardForeground: "hsl(222.2 84% 4.9%)",
|
|
22
|
+
popover: "hsl(0 0% 100%)",
|
|
23
|
+
popoverForeground: "hsl(222.2 84% 4.9%)",
|
|
24
|
+
radius: "0.5rem"
|
|
25
|
+
};
|
|
26
|
+
var DEFAULT_DASHBOARD_THEME_DARK = {
|
|
27
|
+
primary: "hsl(217.2 91.2% 59.8%)",
|
|
28
|
+
secondary: "hsl(217.2 32.6% 17.5%)",
|
|
29
|
+
sidebarBackground: "hsl(222.2 47.4% 11.2%)",
|
|
30
|
+
sidebarForeground: "hsl(210 40% 98%)",
|
|
31
|
+
sidebarBorder: "hsl(217.2 32.6% 17.5%)",
|
|
32
|
+
headerBackground: "hsla(222.2 47.4% 11.2%, 0.8)",
|
|
33
|
+
background: "hsl(222.2 84% 4.9%)",
|
|
34
|
+
foreground: "hsl(210 40% 98%)",
|
|
35
|
+
border: "hsl(217.2 32.6% 17.5%)",
|
|
36
|
+
accent: "hsl(217.2 91.2% 59.8%)",
|
|
37
|
+
accentForeground: "hsl(0 0% 100%)",
|
|
38
|
+
destructive: "hsl(0 62.8% 30.6%)",
|
|
39
|
+
destructiveForeground: "hsl(0 0% 98%)",
|
|
40
|
+
muted: "hsl(217.2 32.6% 17.5%)",
|
|
41
|
+
mutedForeground: "hsl(215 20.2% 65.1%)",
|
|
42
|
+
card: "hsl(222.2 84% 4.9%)",
|
|
43
|
+
cardForeground: "hsl(210 40% 98%)",
|
|
44
|
+
popover: "hsl(222.2 84% 4.9%)",
|
|
45
|
+
popoverForeground: "hsl(210 40% 98%)",
|
|
46
|
+
radius: "0.5rem"
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// src/domains/layouts/theme/presets.ts
|
|
50
|
+
var DASHBOARD_THEME_PRESETS = [
|
|
51
|
+
{
|
|
52
|
+
name: "default",
|
|
53
|
+
theme: DEFAULT_DASHBOARD_THEME,
|
|
54
|
+
dark: false
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "default-dark",
|
|
58
|
+
theme: DEFAULT_DASHBOARD_THEME_DARK,
|
|
59
|
+
dark: true
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: "blue",
|
|
63
|
+
theme: {
|
|
64
|
+
...DEFAULT_DASHBOARD_THEME,
|
|
65
|
+
primary: "hsl(221.2 83.2% 53.3%)",
|
|
66
|
+
accent: "hsl(221.2 83.2% 53.3%)"
|
|
67
|
+
},
|
|
68
|
+
dark: false
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "blue-dark",
|
|
72
|
+
theme: {
|
|
73
|
+
...DEFAULT_DASHBOARD_THEME_DARK,
|
|
74
|
+
primary: "hsl(221.2 83.2% 53.3%)",
|
|
75
|
+
accent: "hsl(221.2 83.2% 53.3%)"
|
|
76
|
+
},
|
|
77
|
+
dark: true
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: "purple",
|
|
81
|
+
theme: {
|
|
82
|
+
...DEFAULT_DASHBOARD_THEME,
|
|
83
|
+
primary: "hsl(271.5 81.3% 55.9%)",
|
|
84
|
+
accent: "hsl(271.5 81.3% 55.9%)"
|
|
85
|
+
},
|
|
86
|
+
dark: false
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "purple-dark",
|
|
90
|
+
theme: {
|
|
91
|
+
...DEFAULT_DASHBOARD_THEME_DARK,
|
|
92
|
+
primary: "hsl(271.5 81.3% 55.9%)",
|
|
93
|
+
accent: "hsl(271.5 81.3% 55.9%)"
|
|
94
|
+
},
|
|
95
|
+
dark: true
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: "green",
|
|
99
|
+
theme: {
|
|
100
|
+
...DEFAULT_DASHBOARD_THEME,
|
|
101
|
+
primary: "hsl(142.1 76.2% 36.3%)",
|
|
102
|
+
accent: "hsl(142.1 76.2% 36.3%)"
|
|
103
|
+
},
|
|
104
|
+
dark: false
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: "green-dark",
|
|
108
|
+
theme: {
|
|
109
|
+
...DEFAULT_DASHBOARD_THEME_DARK,
|
|
110
|
+
primary: "hsl(142.1 76.2% 36.3%)",
|
|
111
|
+
accent: "hsl(142.1 76.2% 36.3%)"
|
|
112
|
+
},
|
|
113
|
+
dark: true
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: "orange",
|
|
117
|
+
theme: {
|
|
118
|
+
...DEFAULT_DASHBOARD_THEME,
|
|
119
|
+
primary: "hsl(24.6 95% 53.1%)",
|
|
120
|
+
accent: "hsl(24.6 95% 53.1%)"
|
|
121
|
+
},
|
|
122
|
+
dark: false
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "orange-dark",
|
|
126
|
+
theme: {
|
|
127
|
+
...DEFAULT_DASHBOARD_THEME_DARK,
|
|
128
|
+
primary: "hsl(24.6 95% 53.1%)",
|
|
129
|
+
accent: "hsl(24.6 95% 53.1%)"
|
|
130
|
+
},
|
|
131
|
+
dark: true
|
|
132
|
+
}
|
|
133
|
+
];
|
|
134
|
+
export {
|
|
135
|
+
DASHBOARD_THEME_PRESETS
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/domains/layouts/theme/default.ts","../../src/domains/layouts/theme/presets.ts"],"sourcesContent":["/**\n * Dashboard Theme - Default Themes\n *\n * Default light and dark theme configurations\n */\n\nimport type { DashboardTheme } from '../types/theme';\n\n/**\n * Default dashboard theme (light mode)\n */\nexport const DEFAULT_DASHBOARD_THEME: DashboardTheme = {\n primary: \"hsl(222.2 47.4% 11.2%)\",\n secondary: \"hsl(217.2 32.6% 17.5%)\",\n sidebarBackground: \"hsl(222.2 47.4% 11.2%)\",\n sidebarForeground: \"hsl(210 40% 98%)\",\n sidebarBorder: \"hsl(217.2 32.6% 17.5%)\",\n headerBackground: \"hsla(0, 0%, 100%, 0.8)\",\n background: \"hsl(0 0% 100%)\",\n foreground: \"hsl(222.2 84% 4.9%)\",\n border: \"hsl(214.3 31.8% 91.4%)\",\n accent: \"hsl(217.2 91.2% 59.8%)\",\n accentForeground: \"hsl(0 0% 100%)\",\n destructive: \"hsl(0 84.2% 60.2%)\",\n destructiveForeground: \"hsl(0 0% 98%)\",\n muted: \"hsl(210 40% 96.1%)\",\n mutedForeground: \"hsl(215.4 16.3% 46.9%)\",\n card: \"hsl(0 0% 100%)\",\n cardForeground: \"hsl(222.2 84% 4.9%)\",\n popover: \"hsl(0 0% 100%)\",\n popoverForeground: \"hsl(222.2 84% 4.9%)\",\n radius: \"0.5rem\",\n};\n\n/**\n * Default dashboard theme (dark mode)\n */\nexport const DEFAULT_DASHBOARD_THEME_DARK: DashboardTheme = {\n primary: \"hsl(217.2 91.2% 59.8%)\",\n secondary: \"hsl(217.2 32.6% 17.5%)\",\n sidebarBackground: \"hsl(222.2 47.4% 11.2%)\",\n sidebarForeground: \"hsl(210 40% 98%)\",\n sidebarBorder: \"hsl(217.2 32.6% 17.5%)\",\n headerBackground: \"hsla(222.2 47.4% 11.2%, 0.8)\",\n background: \"hsl(222.2 84% 4.9%)\",\n foreground: \"hsl(210 40% 98%)\",\n border: \"hsl(217.2 32.6% 17.5%)\",\n accent: \"hsl(217.2 91.2% 59.8%)\",\n accentForeground: \"hsl(0 0% 100%)\",\n destructive: \"hsl(0 62.8% 30.6%)\",\n destructiveForeground: \"hsl(0 0% 98%)\",\n muted: \"hsl(217.2 32.6% 17.5%)\",\n mutedForeground: \"hsl(215 20.2% 65.1%)\",\n card: \"hsl(222.2 84% 4.9%)\",\n cardForeground: \"hsl(210 40% 98%)\",\n popover: \"hsl(222.2 84% 4.9%)\",\n popoverForeground: \"hsl(210 40% 98%)\",\n radius: \"0.5rem\",\n};\n","/**\n * Dashboard Theme - Presets\n *\n * Pre-configured theme presets\n */\n\nimport type { DashboardThemePreset } from '../types/theme';\nimport { DEFAULT_DASHBOARD_THEME, DEFAULT_DASHBOARD_THEME_DARK } from './default';\n\n/**\n * Available theme presets\n */\nexport const DASHBOARD_THEME_PRESETS: DashboardThemePreset[] = [\n {\n name: \"default\",\n theme: DEFAULT_DASHBOARD_THEME,\n dark: false,\n },\n {\n name: \"default-dark\",\n theme: DEFAULT_DASHBOARD_THEME_DARK,\n dark: true,\n },\n {\n name: \"blue\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME,\n primary: \"hsl(221.2 83.2% 53.3%)\",\n accent: \"hsl(221.2 83.2% 53.3%)\",\n },\n dark: false,\n },\n {\n name: \"blue-dark\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME_DARK,\n primary: \"hsl(221.2 83.2% 53.3%)\",\n accent: \"hsl(221.2 83.2% 53.3%)\",\n },\n dark: true,\n },\n {\n name: \"purple\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME,\n primary: \"hsl(271.5 81.3% 55.9%)\",\n accent: \"hsl(271.5 81.3% 55.9%)\",\n },\n dark: false,\n },\n {\n name: \"purple-dark\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME_DARK,\n primary: \"hsl(271.5 81.3% 55.9%)\",\n accent: \"hsl(271.5 81.3% 55.9%)\",\n },\n dark: true,\n },\n {\n name: \"green\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME,\n primary: \"hsl(142.1 76.2% 36.3%)\",\n accent: \"hsl(142.1 76.2% 36.3%)\",\n },\n dark: false,\n },\n {\n name: \"green-dark\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME_DARK,\n primary: \"hsl(142.1 76.2% 36.3%)\",\n accent: \"hsl(142.1 76.2% 36.3%)\",\n },\n dark: true,\n },\n {\n name: \"orange\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME,\n primary: \"hsl(24.6 95% 53.1%)\",\n accent: \"hsl(24.6 95% 53.1%)\",\n },\n dark: false,\n },\n {\n name: \"orange-dark\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME_DARK,\n primary: \"hsl(24.6 95% 53.1%)\",\n accent: \"hsl(24.6 95% 53.1%)\",\n },\n dark: true,\n },\n];\n"],"mappings":";;;AAWO,IAAM,0BAA0C;AAAA,EACrD,SAAS;AAAA,EACT,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,QAAQ;AACV;AAKO,IAAM,+BAA+C;AAAA,EAC1D,SAAS;AAAA,EACT,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,QAAQ;AACV;;;AC9CO,IAAM,0BAAkD;AAAA,EAC7D;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,EACR;AACF;","names":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DashboardTheme, DashboardThemePreset } from '../types/theme.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Dashboard Theme - Utilities
|
|
5
|
+
*
|
|
6
|
+
* Theme utility functions
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Apply theme to document root via CSS variables
|
|
11
|
+
*/
|
|
12
|
+
declare function applyDashboardTheme(theme: DashboardTheme): void;
|
|
13
|
+
/**
|
|
14
|
+
* Get theme preset by name
|
|
15
|
+
*/
|
|
16
|
+
declare function getDashboardThemePreset(name: string): DashboardThemePreset | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Merge custom theme with default theme
|
|
19
|
+
*/
|
|
20
|
+
declare function mergeDashboardTheme(customTheme: Partial<DashboardTheme>, dark?: boolean): DashboardTheme;
|
|
21
|
+
|
|
22
|
+
export { applyDashboardTheme, getDashboardThemePreset, mergeDashboardTheme };
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/domains/layouts/theme/default.ts
|
|
4
|
+
var DEFAULT_DASHBOARD_THEME = {
|
|
5
|
+
primary: "hsl(222.2 47.4% 11.2%)",
|
|
6
|
+
secondary: "hsl(217.2 32.6% 17.5%)",
|
|
7
|
+
sidebarBackground: "hsl(222.2 47.4% 11.2%)",
|
|
8
|
+
sidebarForeground: "hsl(210 40% 98%)",
|
|
9
|
+
sidebarBorder: "hsl(217.2 32.6% 17.5%)",
|
|
10
|
+
headerBackground: "hsla(0, 0%, 100%, 0.8)",
|
|
11
|
+
background: "hsl(0 0% 100%)",
|
|
12
|
+
foreground: "hsl(222.2 84% 4.9%)",
|
|
13
|
+
border: "hsl(214.3 31.8% 91.4%)",
|
|
14
|
+
accent: "hsl(217.2 91.2% 59.8%)",
|
|
15
|
+
accentForeground: "hsl(0 0% 100%)",
|
|
16
|
+
destructive: "hsl(0 84.2% 60.2%)",
|
|
17
|
+
destructiveForeground: "hsl(0 0% 98%)",
|
|
18
|
+
muted: "hsl(210 40% 96.1%)",
|
|
19
|
+
mutedForeground: "hsl(215.4 16.3% 46.9%)",
|
|
20
|
+
card: "hsl(0 0% 100%)",
|
|
21
|
+
cardForeground: "hsl(222.2 84% 4.9%)",
|
|
22
|
+
popover: "hsl(0 0% 100%)",
|
|
23
|
+
popoverForeground: "hsl(222.2 84% 4.9%)",
|
|
24
|
+
radius: "0.5rem"
|
|
25
|
+
};
|
|
26
|
+
var DEFAULT_DASHBOARD_THEME_DARK = {
|
|
27
|
+
primary: "hsl(217.2 91.2% 59.8%)",
|
|
28
|
+
secondary: "hsl(217.2 32.6% 17.5%)",
|
|
29
|
+
sidebarBackground: "hsl(222.2 47.4% 11.2%)",
|
|
30
|
+
sidebarForeground: "hsl(210 40% 98%)",
|
|
31
|
+
sidebarBorder: "hsl(217.2 32.6% 17.5%)",
|
|
32
|
+
headerBackground: "hsla(222.2 47.4% 11.2%, 0.8)",
|
|
33
|
+
background: "hsl(222.2 84% 4.9%)",
|
|
34
|
+
foreground: "hsl(210 40% 98%)",
|
|
35
|
+
border: "hsl(217.2 32.6% 17.5%)",
|
|
36
|
+
accent: "hsl(217.2 91.2% 59.8%)",
|
|
37
|
+
accentForeground: "hsl(0 0% 100%)",
|
|
38
|
+
destructive: "hsl(0 62.8% 30.6%)",
|
|
39
|
+
destructiveForeground: "hsl(0 0% 98%)",
|
|
40
|
+
muted: "hsl(217.2 32.6% 17.5%)",
|
|
41
|
+
mutedForeground: "hsl(215 20.2% 65.1%)",
|
|
42
|
+
card: "hsl(222.2 84% 4.9%)",
|
|
43
|
+
cardForeground: "hsl(210 40% 98%)",
|
|
44
|
+
popover: "hsl(222.2 84% 4.9%)",
|
|
45
|
+
popoverForeground: "hsl(210 40% 98%)",
|
|
46
|
+
radius: "0.5rem"
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// src/domains/layouts/theme/presets.ts
|
|
50
|
+
var DASHBOARD_THEME_PRESETS = [
|
|
51
|
+
{
|
|
52
|
+
name: "default",
|
|
53
|
+
theme: DEFAULT_DASHBOARD_THEME,
|
|
54
|
+
dark: false
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "default-dark",
|
|
58
|
+
theme: DEFAULT_DASHBOARD_THEME_DARK,
|
|
59
|
+
dark: true
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: "blue",
|
|
63
|
+
theme: {
|
|
64
|
+
...DEFAULT_DASHBOARD_THEME,
|
|
65
|
+
primary: "hsl(221.2 83.2% 53.3%)",
|
|
66
|
+
accent: "hsl(221.2 83.2% 53.3%)"
|
|
67
|
+
},
|
|
68
|
+
dark: false
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "blue-dark",
|
|
72
|
+
theme: {
|
|
73
|
+
...DEFAULT_DASHBOARD_THEME_DARK,
|
|
74
|
+
primary: "hsl(221.2 83.2% 53.3%)",
|
|
75
|
+
accent: "hsl(221.2 83.2% 53.3%)"
|
|
76
|
+
},
|
|
77
|
+
dark: true
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: "purple",
|
|
81
|
+
theme: {
|
|
82
|
+
...DEFAULT_DASHBOARD_THEME,
|
|
83
|
+
primary: "hsl(271.5 81.3% 55.9%)",
|
|
84
|
+
accent: "hsl(271.5 81.3% 55.9%)"
|
|
85
|
+
},
|
|
86
|
+
dark: false
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "purple-dark",
|
|
90
|
+
theme: {
|
|
91
|
+
...DEFAULT_DASHBOARD_THEME_DARK,
|
|
92
|
+
primary: "hsl(271.5 81.3% 55.9%)",
|
|
93
|
+
accent: "hsl(271.5 81.3% 55.9%)"
|
|
94
|
+
},
|
|
95
|
+
dark: true
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: "green",
|
|
99
|
+
theme: {
|
|
100
|
+
...DEFAULT_DASHBOARD_THEME,
|
|
101
|
+
primary: "hsl(142.1 76.2% 36.3%)",
|
|
102
|
+
accent: "hsl(142.1 76.2% 36.3%)"
|
|
103
|
+
},
|
|
104
|
+
dark: false
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: "green-dark",
|
|
108
|
+
theme: {
|
|
109
|
+
...DEFAULT_DASHBOARD_THEME_DARK,
|
|
110
|
+
primary: "hsl(142.1 76.2% 36.3%)",
|
|
111
|
+
accent: "hsl(142.1 76.2% 36.3%)"
|
|
112
|
+
},
|
|
113
|
+
dark: true
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: "orange",
|
|
117
|
+
theme: {
|
|
118
|
+
...DEFAULT_DASHBOARD_THEME,
|
|
119
|
+
primary: "hsl(24.6 95% 53.1%)",
|
|
120
|
+
accent: "hsl(24.6 95% 53.1%)"
|
|
121
|
+
},
|
|
122
|
+
dark: false
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "orange-dark",
|
|
126
|
+
theme: {
|
|
127
|
+
...DEFAULT_DASHBOARD_THEME_DARK,
|
|
128
|
+
primary: "hsl(24.6 95% 53.1%)",
|
|
129
|
+
accent: "hsl(24.6 95% 53.1%)"
|
|
130
|
+
},
|
|
131
|
+
dark: true
|
|
132
|
+
}
|
|
133
|
+
];
|
|
134
|
+
|
|
135
|
+
// src/domains/layouts/theme/utils.ts
|
|
136
|
+
function applyDashboardTheme(theme) {
|
|
137
|
+
if (typeof document === "undefined") return;
|
|
138
|
+
const root = document.documentElement;
|
|
139
|
+
const cssVars = {
|
|
140
|
+
"--primary": theme.primary,
|
|
141
|
+
"--secondary": theme.secondary,
|
|
142
|
+
"--sidebar": theme.sidebarBackground,
|
|
143
|
+
"--sidebar-foreground": theme.sidebarForeground,
|
|
144
|
+
"--sidebar-border": theme.sidebarBorder,
|
|
145
|
+
"--background": theme.background,
|
|
146
|
+
"--foreground": theme.foreground,
|
|
147
|
+
"--border": theme.border,
|
|
148
|
+
"--accent": theme.accent,
|
|
149
|
+
"--accent-foreground": theme.accentForeground,
|
|
150
|
+
"--destructive": theme.destructive,
|
|
151
|
+
"--destructive-foreground": theme.destructiveForeground,
|
|
152
|
+
"--muted": theme.muted,
|
|
153
|
+
"--muted-foreground": theme.mutedForeground,
|
|
154
|
+
"--card": theme.card,
|
|
155
|
+
"--card-foreground": theme.cardForeground,
|
|
156
|
+
"--popover": theme.popover,
|
|
157
|
+
"--popover-foreground": theme.popoverForeground,
|
|
158
|
+
"--radius": theme.radius
|
|
159
|
+
};
|
|
160
|
+
Object.entries(cssVars).forEach(([key, value]) => {
|
|
161
|
+
if (value) {
|
|
162
|
+
root.style.setProperty(key, value);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function getDashboardThemePreset(name) {
|
|
167
|
+
return DASHBOARD_THEME_PRESETS.find((preset) => preset.name === name);
|
|
168
|
+
}
|
|
169
|
+
function mergeDashboardTheme(customTheme, dark = false) {
|
|
170
|
+
const baseTheme = dark ? DEFAULT_DASHBOARD_THEME_DARK : DEFAULT_DASHBOARD_THEME;
|
|
171
|
+
return {
|
|
172
|
+
...baseTheme,
|
|
173
|
+
...customTheme
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
export {
|
|
177
|
+
applyDashboardTheme,
|
|
178
|
+
getDashboardThemePreset,
|
|
179
|
+
mergeDashboardTheme
|
|
180
|
+
};
|
|
181
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/domains/layouts/theme/default.ts","../../src/domains/layouts/theme/presets.ts","../../src/domains/layouts/theme/utils.ts"],"sourcesContent":["/**\n * Dashboard Theme - Default Themes\n *\n * Default light and dark theme configurations\n */\n\nimport type { DashboardTheme } from '../types/theme';\n\n/**\n * Default dashboard theme (light mode)\n */\nexport const DEFAULT_DASHBOARD_THEME: DashboardTheme = {\n primary: \"hsl(222.2 47.4% 11.2%)\",\n secondary: \"hsl(217.2 32.6% 17.5%)\",\n sidebarBackground: \"hsl(222.2 47.4% 11.2%)\",\n sidebarForeground: \"hsl(210 40% 98%)\",\n sidebarBorder: \"hsl(217.2 32.6% 17.5%)\",\n headerBackground: \"hsla(0, 0%, 100%, 0.8)\",\n background: \"hsl(0 0% 100%)\",\n foreground: \"hsl(222.2 84% 4.9%)\",\n border: \"hsl(214.3 31.8% 91.4%)\",\n accent: \"hsl(217.2 91.2% 59.8%)\",\n accentForeground: \"hsl(0 0% 100%)\",\n destructive: \"hsl(0 84.2% 60.2%)\",\n destructiveForeground: \"hsl(0 0% 98%)\",\n muted: \"hsl(210 40% 96.1%)\",\n mutedForeground: \"hsl(215.4 16.3% 46.9%)\",\n card: \"hsl(0 0% 100%)\",\n cardForeground: \"hsl(222.2 84% 4.9%)\",\n popover: \"hsl(0 0% 100%)\",\n popoverForeground: \"hsl(222.2 84% 4.9%)\",\n radius: \"0.5rem\",\n};\n\n/**\n * Default dashboard theme (dark mode)\n */\nexport const DEFAULT_DASHBOARD_THEME_DARK: DashboardTheme = {\n primary: \"hsl(217.2 91.2% 59.8%)\",\n secondary: \"hsl(217.2 32.6% 17.5%)\",\n sidebarBackground: \"hsl(222.2 47.4% 11.2%)\",\n sidebarForeground: \"hsl(210 40% 98%)\",\n sidebarBorder: \"hsl(217.2 32.6% 17.5%)\",\n headerBackground: \"hsla(222.2 47.4% 11.2%, 0.8)\",\n background: \"hsl(222.2 84% 4.9%)\",\n foreground: \"hsl(210 40% 98%)\",\n border: \"hsl(217.2 32.6% 17.5%)\",\n accent: \"hsl(217.2 91.2% 59.8%)\",\n accentForeground: \"hsl(0 0% 100%)\",\n destructive: \"hsl(0 62.8% 30.6%)\",\n destructiveForeground: \"hsl(0 0% 98%)\",\n muted: \"hsl(217.2 32.6% 17.5%)\",\n mutedForeground: \"hsl(215 20.2% 65.1%)\",\n card: \"hsl(222.2 84% 4.9%)\",\n cardForeground: \"hsl(210 40% 98%)\",\n popover: \"hsl(222.2 84% 4.9%)\",\n popoverForeground: \"hsl(210 40% 98%)\",\n radius: \"0.5rem\",\n};\n","/**\n * Dashboard Theme - Presets\n *\n * Pre-configured theme presets\n */\n\nimport type { DashboardThemePreset } from '../types/theme';\nimport { DEFAULT_DASHBOARD_THEME, DEFAULT_DASHBOARD_THEME_DARK } from './default';\n\n/**\n * Available theme presets\n */\nexport const DASHBOARD_THEME_PRESETS: DashboardThemePreset[] = [\n {\n name: \"default\",\n theme: DEFAULT_DASHBOARD_THEME,\n dark: false,\n },\n {\n name: \"default-dark\",\n theme: DEFAULT_DASHBOARD_THEME_DARK,\n dark: true,\n },\n {\n name: \"blue\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME,\n primary: \"hsl(221.2 83.2% 53.3%)\",\n accent: \"hsl(221.2 83.2% 53.3%)\",\n },\n dark: false,\n },\n {\n name: \"blue-dark\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME_DARK,\n primary: \"hsl(221.2 83.2% 53.3%)\",\n accent: \"hsl(221.2 83.2% 53.3%)\",\n },\n dark: true,\n },\n {\n name: \"purple\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME,\n primary: \"hsl(271.5 81.3% 55.9%)\",\n accent: \"hsl(271.5 81.3% 55.9%)\",\n },\n dark: false,\n },\n {\n name: \"purple-dark\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME_DARK,\n primary: \"hsl(271.5 81.3% 55.9%)\",\n accent: \"hsl(271.5 81.3% 55.9%)\",\n },\n dark: true,\n },\n {\n name: \"green\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME,\n primary: \"hsl(142.1 76.2% 36.3%)\",\n accent: \"hsl(142.1 76.2% 36.3%)\",\n },\n dark: false,\n },\n {\n name: \"green-dark\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME_DARK,\n primary: \"hsl(142.1 76.2% 36.3%)\",\n accent: \"hsl(142.1 76.2% 36.3%)\",\n },\n dark: true,\n },\n {\n name: \"orange\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME,\n primary: \"hsl(24.6 95% 53.1%)\",\n accent: \"hsl(24.6 95% 53.1%)\",\n },\n dark: false,\n },\n {\n name: \"orange-dark\",\n theme: {\n ...DEFAULT_DASHBOARD_THEME_DARK,\n primary: \"hsl(24.6 95% 53.1%)\",\n accent: \"hsl(24.6 95% 53.1%)\",\n },\n dark: true,\n },\n];\n","/**\n * Dashboard Theme - Utilities\n *\n * Theme utility functions\n */\n\nimport type { DashboardTheme, DashboardThemePreset } from '../types/theme';\nimport { DEFAULT_DASHBOARD_THEME, DEFAULT_DASHBOARD_THEME_DARK } from './default';\nimport { DASHBOARD_THEME_PRESETS } from './presets';\n\n/**\n * Apply theme to document root via CSS variables\n */\nexport function applyDashboardTheme(theme: DashboardTheme): void {\n if (typeof document === \"undefined\") return;\n\n const root = document.documentElement;\n\n const cssVars: Record<string, string | undefined> = {\n \"--primary\": theme.primary,\n \"--secondary\": theme.secondary,\n \"--sidebar\": theme.sidebarBackground,\n \"--sidebar-foreground\": theme.sidebarForeground,\n \"--sidebar-border\": theme.sidebarBorder,\n \"--background\": theme.background,\n \"--foreground\": theme.foreground,\n \"--border\": theme.border,\n \"--accent\": theme.accent,\n \"--accent-foreground\": theme.accentForeground,\n \"--destructive\": theme.destructive,\n \"--destructive-foreground\": theme.destructiveForeground,\n \"--muted\": theme.muted,\n \"--muted-foreground\": theme.mutedForeground,\n \"--card\": theme.card,\n \"--card-foreground\": theme.cardForeground,\n \"--popover\": theme.popover,\n \"--popover-foreground\": theme.popoverForeground,\n \"--radius\": theme.radius,\n };\n\n Object.entries(cssVars).forEach(([key, value]) => {\n if (value) {\n root.style.setProperty(key, value);\n }\n });\n}\n\n/**\n * Get theme preset by name\n */\nexport function getDashboardThemePreset(name: string): DashboardThemePreset | undefined {\n return DASHBOARD_THEME_PRESETS.find((preset) => preset.name === name);\n}\n\n/**\n * Merge custom theme with default theme\n */\nexport function mergeDashboardTheme(\n customTheme: Partial<DashboardTheme>,\n dark = false\n): DashboardTheme {\n const baseTheme = dark ? DEFAULT_DASHBOARD_THEME_DARK : DEFAULT_DASHBOARD_THEME;\n return {\n ...baseTheme,\n ...customTheme,\n } as DashboardTheme;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { SidebarGroup } from './sidebar.js';
|
|
2
|
+
import 'lucide-react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Dashboard Types - Layout
|
|
6
|
+
*
|
|
7
|
+
* Type definitions for layout components
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Dashboard header props
|
|
11
|
+
*/
|
|
12
|
+
interface DashboardHeaderProps {
|
|
13
|
+
/** Whether sidebar is collapsed */
|
|
14
|
+
collapsed: boolean;
|
|
15
|
+
/** Toggle sidebar collapsed state */
|
|
16
|
+
setCollapsed: (collapsed: boolean) => void;
|
|
17
|
+
/** Toggle mobile menu open state */
|
|
18
|
+
setMobileOpen: (open: boolean) => void;
|
|
19
|
+
/** Current page title */
|
|
20
|
+
title: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Dashboard sidebar props
|
|
24
|
+
*/
|
|
25
|
+
interface DashboardSidebarProps {
|
|
26
|
+
/** Whether sidebar is collapsed */
|
|
27
|
+
collapsed: boolean;
|
|
28
|
+
/** Toggle sidebar collapsed state */
|
|
29
|
+
setCollapsed: (collapsed: boolean) => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Dashboard layout configuration
|
|
33
|
+
*/
|
|
34
|
+
interface DashboardLayoutConfig {
|
|
35
|
+
/** Sidebar groups */
|
|
36
|
+
sidebarGroups: SidebarGroup[];
|
|
37
|
+
/** Extra title mappings for routes */
|
|
38
|
+
extraTitleMap?: Record<string, string>;
|
|
39
|
+
/** Brand name */
|
|
40
|
+
brandName?: string;
|
|
41
|
+
/** Brand tagline */
|
|
42
|
+
brandTagline?: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export type { DashboardHeaderProps, DashboardLayoutConfig, DashboardSidebarProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard Types - Notification
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for notification system
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Notification item
|
|
8
|
+
*/
|
|
9
|
+
interface DashboardNotification {
|
|
10
|
+
/** Unique ID */
|
|
11
|
+
id: string;
|
|
12
|
+
/** Notification text */
|
|
13
|
+
text: string;
|
|
14
|
+
/** Whether notification is read */
|
|
15
|
+
read: boolean;
|
|
16
|
+
/** Creation timestamp */
|
|
17
|
+
createdAt: Date | string | number;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type { DashboardNotification };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|