@flux-ui/dashboard 3.0.0-next.23 → 3.0.0-next.24
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/component/FluxDashboard.vue.d.ts +0 -1
- package/dist/component/FluxDashboardContent.vue.d.ts +0 -1
- package/dist/component/FluxDashboardHeader.vue.d.ts +1 -2
- package/dist/component/FluxDashboardMenu.vue.d.ts +1 -2
- package/dist/component/FluxDashboardNavigation.vue.d.ts +1 -2
- package/dist/component/FluxDashboardSide.vue.d.ts +0 -1
- package/dist/component/FluxDashboardTopBar.vue.d.ts +0 -1
- package/dist/component/index.d.ts +0 -1
- package/dist/composable/index.d.ts +0 -1
- package/dist/composable/useDashboardInjection.d.ts +0 -1
- package/dist/data/index.d.ts +0 -1
- package/dist/index.css +25 -25
- package/dist/index.d.ts +0 -1
- package/dist/index.js +26 -26
- package/dist/index.js.map +1 -1
- package/package.json +12 -11
- package/src/component/FluxDashboard.vue +2 -2
- package/src/composable/useDashboardInjection.ts +1 -1
- package/src/css/component/Dashboard.module.scss +5 -5
- package/src/css/component/DashboardContent.module.scss +1 -1
- package/src/css/component/DashboardNavigation.module.scss +11 -11
- package/src/css/component/DashboardPane.module.scss +6 -6
- package/src/css/component/DashboardTopBar.module.scss +2 -2
- package/tsconfig.json +4 -42
- package/dist/component/FluxDashboard.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardContent.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardHeader.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardMenu.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardNavigation.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardSide.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardTopBar.vue.d.ts.map +0 -1
- package/dist/component/index.d.ts.map +0 -1
- package/dist/composable/index.d.ts.map +0 -1
- package/dist/composable/useDashboardInjection.d.ts.map +0 -1
- package/dist/data/index.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
|
@@ -13,7 +13,7 @@ declare function __VLS_template(): {
|
|
|
13
13
|
rootEl: HTMLElement;
|
|
14
14
|
};
|
|
15
15
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
16
|
-
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions,
|
|
16
|
+
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLElement>;
|
|
17
17
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
18
18
|
export default _default;
|
|
19
19
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -21,4 +21,3 @@ type __VLS_WithTemplateSlots<T, S> = T & {
|
|
|
21
21
|
$slots: S;
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=FluxDashboardHeader.vue.d.ts.map
|
|
@@ -14,7 +14,7 @@ declare function __VLS_template(): {
|
|
|
14
14
|
rootEl: HTMLElement;
|
|
15
15
|
};
|
|
16
16
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
17
|
-
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions,
|
|
17
|
+
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLElement>;
|
|
18
18
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
19
19
|
export default _default;
|
|
20
20
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -22,4 +22,3 @@ type __VLS_WithTemplateSlots<T, S> = T & {
|
|
|
22
22
|
$slots: S;
|
|
23
23
|
};
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=FluxDashboardMenu.vue.d.ts.map
|
|
@@ -15,7 +15,7 @@ declare function __VLS_template(): {
|
|
|
15
15
|
rootEl: any;
|
|
16
16
|
};
|
|
17
17
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
18
|
-
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions,
|
|
18
|
+
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
19
19
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
20
20
|
export default _default;
|
|
21
21
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -23,4 +23,3 @@ type __VLS_WithTemplateSlots<T, S> = T & {
|
|
|
23
23
|
$slots: S;
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=FluxDashboardNavigation.vue.d.ts.map
|
|
@@ -4,4 +4,3 @@ export { default as FluxDashboardHeader } from './FluxDashboardHeader.vue';
|
|
|
4
4
|
export { default as FluxDashboardMenu } from './FluxDashboardMenu.vue';
|
|
5
5
|
export { default as FluxDashboardNavigation } from './FluxDashboardNavigation.vue';
|
|
6
6
|
export { default as FluxDashboardSide } from './FluxDashboardSide.vue';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/data/index.d.ts
CHANGED
package/dist/index.css
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
:root {
|
|
2
|
-
--dashboard-background: var(--gray-
|
|
2
|
+
--dashboard-background: var(--gray-25);
|
|
3
3
|
--dashboard-duration: 360ms;
|
|
4
|
-
--dashboard-navigation-background: var(--primary-
|
|
5
|
-
--dashboard-navigation-foreground: var(--primary-
|
|
4
|
+
--dashboard-navigation-background: var(--primary-950);
|
|
5
|
+
--dashboard-navigation-foreground: var(--primary-25);
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
[dark] {
|
|
9
|
-
--dashboard-navigation-background: color-mix(in
|
|
10
|
-
--dashboard-navigation-foreground: var(--gray-
|
|
9
|
+
--dashboard-navigation-background: color-mix(in srgb, var(--gray-25), black 25%);
|
|
10
|
+
--dashboard-navigation-foreground: var(--gray-800);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
body:has(.root > .dashboard) {
|
|
@@ -84,7 +84,7 @@ body:has(.root > .dashboard) {
|
|
|
84
84
|
padding-right: 30px;
|
|
85
85
|
}
|
|
86
86
|
.dashboard-content > .table {
|
|
87
|
-
border-top: 1px solid var(--
|
|
87
|
+
border-top: 1px solid var(--surface-stroke);
|
|
88
88
|
}
|
|
89
89
|
.dashboard-content > .table .table-cell:first-child .table-cell-content {
|
|
90
90
|
padding-left: 30px;
|
|
@@ -107,7 +107,7 @@ body:has(.root > .dashboard) {
|
|
|
107
107
|
align-items: center;
|
|
108
108
|
flex-flow: row;
|
|
109
109
|
gap: 15px;
|
|
110
|
-
background:
|
|
110
|
+
background: rgb(from var(--gray-25) r g b/0.9);
|
|
111
111
|
backdrop-filter: blur(10px) saturate(180%);
|
|
112
112
|
z-index: 100;
|
|
113
113
|
}
|
|
@@ -133,7 +133,7 @@ body:has(.root > .dashboard) {
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
[dark] .dashboard-header-scrolled {
|
|
136
|
-
box-shadow: 0 1px 0 var(--gray-
|
|
136
|
+
box-shadow: 0 1px 0 var(--gray-50), var(--shadow-md);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
@media (max-width: 1023.98px) {
|
|
@@ -144,18 +144,18 @@ body:has(.root > .dashboard) {
|
|
|
144
144
|
display: none;
|
|
145
145
|
}
|
|
146
146
|
}.dashboard-pane {
|
|
147
|
-
background: var(--gray-
|
|
147
|
+
background: var(--gray-50);
|
|
148
148
|
overflow: auto;
|
|
149
149
|
z-index: 200;
|
|
150
150
|
}
|
|
151
151
|
.dashboard-pane .menu-sub-header {
|
|
152
|
-
background: linear-gradient(to bottom, var(--gray-
|
|
152
|
+
background: linear-gradient(to bottom, var(--gray-50) 75%, transparent);
|
|
153
153
|
}
|
|
154
154
|
.dashboard-pane .dashboard-top-bar {
|
|
155
|
-
background:
|
|
155
|
+
background: rgb(from var(--gray-50) r g b/0.9);
|
|
156
156
|
}
|
|
157
157
|
.dashboard-pane .filter {
|
|
158
|
-
--background: var(--gray-
|
|
158
|
+
--background: var(--gray-50);
|
|
159
159
|
max-height: calc(100dvh - 84px);
|
|
160
160
|
margin-top: -9px;
|
|
161
161
|
padding: 9px 18px 18px;
|
|
@@ -182,7 +182,7 @@ body:has(.root > .dashboard) {
|
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
.dashboard-menu {
|
|
185
|
-
border-right: 1px solid var(--
|
|
185
|
+
border-right: 1px solid var(--surface-stroke);
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
.dashboard-menu-body {
|
|
@@ -190,7 +190,7 @@ body:has(.root > .dashboard) {
|
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
.dashboard-side {
|
|
193
|
-
border-left: 1px solid var(--
|
|
193
|
+
border-left: 1px solid var(--surface-stroke);
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
@media (min-width: 1024px) {
|
|
@@ -222,7 +222,7 @@ body:has(.root > .dashboard) {
|
|
|
222
222
|
margin: 3px 15px;
|
|
223
223
|
}
|
|
224
224
|
.dashboard-navigation .divider-line {
|
|
225
|
-
background: var(--primary-
|
|
225
|
+
background: var(--primary-900);
|
|
226
226
|
}
|
|
227
227
|
.dashboard-navigation .menu {
|
|
228
228
|
flex-grow: 1;
|
|
@@ -237,14 +237,14 @@ body:has(.root > .dashboard) {
|
|
|
237
237
|
}
|
|
238
238
|
@media (hover: hover) {
|
|
239
239
|
.dashboard-navigation .menu-item:hover {
|
|
240
|
-
background: var(--primary-
|
|
240
|
+
background: var(--primary-900);
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
243
|
.dashboard-navigation .menu-item:active {
|
|
244
|
-
background: var(--primary-
|
|
244
|
+
background: var(--primary-800);
|
|
245
245
|
}
|
|
246
246
|
.dashboard-navigation .menu-item-highlighted {
|
|
247
|
-
background:
|
|
247
|
+
background: var(--primary-900);
|
|
248
248
|
}
|
|
249
249
|
.dashboard-navigation .menu-item-icon {
|
|
250
250
|
color: var(--dashboard-navigation-foreground);
|
|
@@ -260,18 +260,18 @@ body:has(.root > .dashboard) {
|
|
|
260
260
|
}
|
|
261
261
|
|
|
262
262
|
[dark] .dashboard-navigation .divider-line {
|
|
263
|
-
background: var(--gray-
|
|
263
|
+
background: var(--gray-100);
|
|
264
264
|
}
|
|
265
265
|
@media (hover: hover) {
|
|
266
266
|
[dark] .dashboard-navigation .menu-item:hover {
|
|
267
|
-
background: var(--gray-
|
|
267
|
+
background: var(--gray-100);
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
270
|
[dark] .dashboard-navigation .menu-item:active {
|
|
271
|
-
background: var(--gray-
|
|
271
|
+
background: var(--gray-200);
|
|
272
272
|
}
|
|
273
273
|
[dark] .dashboard-navigation .menu-item-highlighted {
|
|
274
|
-
background: var(--gray-
|
|
274
|
+
background: var(--gray-50);
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
.dashboard-navigation-logo {
|
|
@@ -301,11 +301,11 @@ body:has(.root > .dashboard) {
|
|
|
301
301
|
display: block;
|
|
302
302
|
inset: 0;
|
|
303
303
|
content: "";
|
|
304
|
-
background: var(--gray-
|
|
304
|
+
background: var(--gray-50);
|
|
305
305
|
}
|
|
306
306
|
|
|
307
307
|
.dashboard:not(:has(.dashboard-menu)) .dashboard-navigation-rounding-fix::before {
|
|
308
|
-
background: var(--gray-
|
|
308
|
+
background: var(--gray-25);
|
|
309
309
|
}
|
|
310
310
|
|
|
311
311
|
@media (min-width: 1024px) {
|
|
@@ -364,7 +364,7 @@ body:has(.root > .dashboard) {
|
|
|
364
364
|
width: 100dvw;
|
|
365
365
|
height: 100dvh;
|
|
366
366
|
content: "";
|
|
367
|
-
background:
|
|
367
|
+
background: rgb(from var(--gray-200) r g b/0.5);
|
|
368
368
|
backdrop-filter: blur(3px) saturate(180%);
|
|
369
369
|
transition: var(--dashboard-duration) var(--swift-out);
|
|
370
370
|
transition-property: background, backdrop-filter;
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -18,19 +18,19 @@ var X = class {
|
|
|
18
18
|
}
|
|
19
19
|
#t = [];
|
|
20
20
|
#e = [];
|
|
21
|
-
add(e, t,
|
|
22
|
-
let
|
|
21
|
+
add(e, t, n = !0) {
|
|
22
|
+
let o = {
|
|
23
23
|
id: e,
|
|
24
24
|
setEnabled: t,
|
|
25
25
|
isEnabled: !0
|
|
26
26
|
};
|
|
27
|
-
if (this.current && this.toggle(this.current, !1), this.#e.push(
|
|
27
|
+
if (this.current && this.toggle(this.current, !1), this.#e.push(o), n) this.toggle(o, !0), this.emit();
|
|
28
28
|
}
|
|
29
29
|
remove(e) {
|
|
30
30
|
let t = this.#e.find((s) => s.id === e);
|
|
31
31
|
t && this.toggle(t, !1);
|
|
32
|
-
let
|
|
33
|
-
this.#e = this.#e.filter((s) => s.id !== e),
|
|
32
|
+
let o = this.current?.id === e;
|
|
33
|
+
this.#e = this.#e.filter((s) => s.id !== e), o && this.current && this.toggle(this.current, !0), this.emit();
|
|
34
34
|
}
|
|
35
35
|
emit() {
|
|
36
36
|
this.#t.forEach((e) => e(this.active, this.#e));
|
|
@@ -44,41 +44,41 @@ var X = class {
|
|
|
44
44
|
};
|
|
45
45
|
new X();
|
|
46
46
|
globalThis.document;
|
|
47
|
-
function k(e, t,
|
|
47
|
+
function k(e, t, n, o = { passive: !0 }) {
|
|
48
48
|
watch(e, (s, r, a) => {
|
|
49
49
|
if (!s) return;
|
|
50
|
-
s.addEventListener(t,
|
|
50
|
+
s.addEventListener(t, n, o), a(() => s.removeEventListener(t, n));
|
|
51
51
|
}, { immediate: !0 });
|
|
52
52
|
}
|
|
53
53
|
function ne(e, t) {
|
|
54
|
-
let
|
|
54
|
+
let n = `flux/${e}`, o = ref(s() ?? t);
|
|
55
55
|
function s() {
|
|
56
|
-
if (
|
|
57
|
-
let r = JSON.parse(localStorage.getItem(
|
|
56
|
+
if (n in localStorage) {
|
|
57
|
+
let r = JSON.parse(localStorage.getItem(n));
|
|
58
58
|
if (Array.isArray(r) && r[0] === "DateTime") r = DateTime.fromISO(r[1]);
|
|
59
59
|
return r;
|
|
60
60
|
}
|
|
61
61
|
return null;
|
|
62
62
|
}
|
|
63
|
-
return watch(
|
|
63
|
+
return watch(o, (r) => {
|
|
64
64
|
let a = r;
|
|
65
65
|
if (DateTime.isDateTime(r)) a = ["DateTime", r.toISO({
|
|
66
66
|
includeOffset: !0,
|
|
67
67
|
extendedZone: !0
|
|
68
68
|
})];
|
|
69
|
-
localStorage.setItem(
|
|
70
|
-
}),
|
|
69
|
+
localStorage.setItem(n, JSON.stringify(a));
|
|
70
|
+
}), o;
|
|
71
71
|
}
|
|
72
|
-
function
|
|
73
|
-
let t = ref(0),
|
|
72
|
+
function se(e) {
|
|
73
|
+
let t = ref(0), n = ref(0);
|
|
74
74
|
if (!e) e = ref(document);
|
|
75
75
|
return k(e, "scroll", () => {
|
|
76
|
-
let
|
|
77
|
-
if (
|
|
78
|
-
t.value =
|
|
76
|
+
let o = unref(e);
|
|
77
|
+
if (o instanceof Document) o = o.scrollingElement;
|
|
78
|
+
t.value = o?.scrollLeft ?? 0, n.value = o?.scrollTop ?? 0;
|
|
79
79
|
}), {
|
|
80
80
|
x: t,
|
|
81
|
-
y:
|
|
81
|
+
y: n
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
84
|
const FluxDashboardInjectionKey = Symbol();
|
|
@@ -97,7 +97,7 @@ var FluxDashboard_default = /* @__PURE__ */ defineComponent({
|
|
|
97
97
|
setup(__props) {
|
|
98
98
|
const isMenuCollapsed = ne("dashboard-menu-collapsed", true);
|
|
99
99
|
const isNavigationCollapsed = ne("dashboard-navigation-collapsed", true);
|
|
100
|
-
const isResizing
|
|
100
|
+
const isResizing = ref(false);
|
|
101
101
|
provide(FluxDashboardInjectionKey, {
|
|
102
102
|
isMenuCollapsed,
|
|
103
103
|
isNavigationCollapsed
|
|
@@ -106,14 +106,14 @@ var FluxDashboard_default = /* @__PURE__ */ defineComponent({
|
|
|
106
106
|
let timeout;
|
|
107
107
|
function onResize() {
|
|
108
108
|
clearTimeout(timeout);
|
|
109
|
-
isResizing
|
|
110
|
-
timeout = setTimeout(() => isResizing
|
|
109
|
+
isResizing.value = true;
|
|
110
|
+
timeout = setTimeout(() => isResizing.value = false, 10);
|
|
111
111
|
}
|
|
112
112
|
window.addEventListener("resize", onResize, { passive: true });
|
|
113
113
|
onCleanup(() => window.removeEventListener("resize", onResize));
|
|
114
114
|
}, { immediate: true });
|
|
115
115
|
return (_ctx, _cache) => {
|
|
116
|
-
return openBlock(), createElementBlock("div", { class: normalizeClass([unref(Dashboard_module_default).dashboard, isResizing
|
|
116
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass([unref(Dashboard_module_default).dashboard, isResizing.value && unref(Dashboard_module_default).isResizing]) }, [
|
|
117
117
|
renderSlot(_ctx.$slots, "navigation"),
|
|
118
118
|
renderSlot(_ctx.$slots, "menu"),
|
|
119
119
|
createElementVNode("div", { class: normalizeClass(unref(Dashboard_module_default).dashboardMount) }, [renderSlot(_ctx.$slots, "header"), renderSlot(_ctx.$slots, "default")], 2),
|
|
@@ -174,7 +174,7 @@ var FluxDashboardHeader_default = /* @__PURE__ */ defineComponent({
|
|
|
174
174
|
title: {}
|
|
175
175
|
},
|
|
176
176
|
setup(__props) {
|
|
177
|
-
const { y } =
|
|
177
|
+
const { y } = se();
|
|
178
178
|
return (_ctx, _cache) => {
|
|
179
179
|
return openBlock(), createBlock(FluxDashboardTopBar_default, { class: normalizeClass(unref(y) > 0 ? unref(DashboardTopBar_module_default).dashboardHeaderScrolled : unref(DashboardTopBar_module_default).dashboardHeader) }, {
|
|
180
180
|
default: withCtx(() => [
|
|
@@ -255,12 +255,12 @@ var FluxDashboardNavigation_default = /* @__PURE__ */ defineComponent({
|
|
|
255
255
|
inheritAttrs: false,
|
|
256
256
|
__name: "FluxDashboardNavigation",
|
|
257
257
|
props: { logoLocation: {} },
|
|
258
|
-
setup(__props) {
|
|
258
|
+
setup(__props, { attrs: $attrs }) {
|
|
259
259
|
const slots = useSlots();
|
|
260
260
|
const { isMenuCollapsed, isNavigationCollapsed } = useDashboardInjection_default();
|
|
261
261
|
return (_ctx, _cache) => {
|
|
262
262
|
const _component_router_link = resolveComponent("router-link");
|
|
263
|
-
return openBlock(), createElementBlock("nav", mergeProps(
|
|
263
|
+
return openBlock(), createElementBlock("nav", mergeProps($attrs, { class: unref(isNavigationCollapsed) ? unref(DashboardNavigation_module_default).dashboardNavigationCollapsed : unref(DashboardNavigation_module_default).dashboardNavigation }), [
|
|
264
264
|
createElementVNode("header", { class: normalizeClass(unref(DashboardNavigation_module_default).dashboardNavigationHeader) }, [
|
|
265
265
|
createVNode(unref(FluxMenuItem), {
|
|
266
266
|
"icon-leading": "bars",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["#e","#t","je","oe","Ze","I","$e","FluxDashboardInjectionKey: InjectionKey<FluxDashboardInjection>","$attrs"],"sources":["../../internals/dist/index.js","../src/data/index.ts","../src/css/component/Dashboard.module.scss","../src/component/FluxDashboard.vue","../src/component/FluxDashboard.vue","../src/composable/useDashboardInjection.ts","../src/css/component/DashboardContent.module.scss","../src/component/FluxDashboardContent.vue","../src/component/FluxDashboardContent.vue","../src/css/component/DashboardTopBar.module.scss","../src/component/FluxDashboardTopBar.vue","../src/component/FluxDashboardTopBar.vue","../src/component/FluxDashboardHeader.vue","../src/component/FluxDashboardHeader.vue","../src/css/component/DashboardPane.module.scss","../src/component/FluxDashboardMenu.vue","../src/component/FluxDashboardMenu.vue","../src/css/component/DashboardNavigation.module.scss","../src/component/FluxDashboardNavigation.vue","../src/component/FluxDashboardNavigation.vue","../src/component/FluxDashboardSide.vue","../src/component/FluxDashboardSide.vue"],"sourcesContent":["import{computed as E,ref as _,unref as b}from\"vue\";function N(e,t){let o=_(!1),n=_(e),s=E(()=>{let c=[],m=b(n).month,h=b(n).startOf(\"month\");do c.push(h),h=h.plus({day:1});while(h.month===m);let y=c[0],T=c[c.length-1];for(let x=1;x<y.weekday;++x)c.unshift(y.minus({day:x}));for(let x=T.weekday+1;x<=7;++x)c.push(T.plus({day:x-T.weekday}));while(c.length/7<6){let x=c[c.length-1];for(let A=1;A<=7;++A)c.push(x.plus({day:A}))}return c}),r=E(()=>b(s).slice(0,7).map((c)=>c.toLocaleString({weekday:t?.weekDayLength??\"short\"}))),a=E(()=>b(n).plus({month:1})),i=E(()=>b(n).minus({month:1})),f=E(()=>b(n).toLocaleString({month:t?.monthLength??\"long\"})),l=E(()=>b(n).year.toString());function u(c){o.value=n.value>c,n.value=c}function v(){u(b(n).plus({month:1}))}function L(){u(b(n).minus({month:1}))}return{isTransitioningToPast:o,viewDate:n,viewDateNext:a,viewDatePrevious:i,viewMonth:f,viewYear:l,dates:s,days:r,setViewDate:u,nextMonth:v,previousMonth:L}}import{computed as me,unref as xe}from\"vue\";function U(e,t){return{months:me(()=>{let n=[],s=xe(e),r=s.startOf(\"year\");while(r.month<=12&&r.year===s.year)n.push({date:r,label:r.toLocaleString({month:t})}),r=r.plus({months:1});return n})}}import{computed as be,ref as he,unref as P,watch as ye}from\"vue\";function K(e,t=10){let o=he(0),n=be(()=>{let a=P(e).year,i=[],f=a-a%t+P(o)*t;for(let l=0;l<t;++l)i.push(f+l);return i});function s(){++o.value}function r(){--o.value}return ye(e,()=>o.value=0),{years:n,next:s,previous:r}}import{onMounted as De,onUnmounted as Se,ref as Ae,unref as j,watchEffect as Ie}from\"vue\";function z(e){let t=0;return()=>{cancelAnimationFrame(t),t=requestAnimationFrame(e)}}import{Fragment as Te}from\"vue\";function B(e){let t=[];for(let o of e){if(o.type===Te&&Array.isArray(o.children)){t.push(...o.children);continue}t.push(o)}return t}import{isHtmlElement as ve}from\"@basmilius/utils\";var Ee=[\"a:not([disabled])\",\"button:not([disabled])\",\"input[type=checkbox]:not([disabled])\",\"input[type=radio]:not([disabled])\",\"input[type=text]:not([disabled])\",'[tabindex]:not([disabled]):not([tabindex=\"-1\"])'].join(\",\");function d(e){return Array.from(e.querySelectorAll(Ee)).filter(ve).filter((t)=>t.offsetWidth>0||t.offsetHeight>0||t===document.activeElement)}function M(e,t,o){let n=d(e),s=n.indexOf(t);if(s===-1)return null;let r=Le(n);ge(r,s,o);let a=we(s,o,r,n);if(!a){if(o===\"up\"||o===\"left\")a=n[s-1];if(o===\"down\"||o===\"right\")a=n[s+1]}return a}function ge(e,t,o){let n=e[t];e.forEach((s)=>{let r=s.center;switch(o){case\"up\":r={x:r.x,y:s.top+s.height};break;case\"down\":r={x:r.x,y:s.top};break;case\"left\":r={x:s.left+s.width,y:r.y};break;case\"right\":r={x:s.left,y:r.y};break}s.distance=Math.sqrt(Math.pow(n.center.x-r.x,2)+Math.pow(n.center.y-r.y,2))})}function we(e,t,o,n){let s=o[e],r=[];switch(t){case\"up\":r=o.map((i,f)=>f===e||i.top+i.height>s.top?Number.MAX_SAFE_INTEGER:i.distance);break;case\"down\":r=o.map((i,f)=>f===e||i.top<s.top+s.height?Number.MAX_SAFE_INTEGER:i.distance);break;case\"left\":r=o.map((i,f)=>f===e||i.left+i.width>s.left?Number.MAX_SAFE_INTEGER:i.distance);break;case\"right\":r=o.map((i,f)=>f===e||i.left<s.left+s.width?Number.MAX_SAFE_INTEGER:i.distance);break}let a=r.indexOf(Math.min(...r));if(r[a]!==Number.MAX_SAFE_INTEGER)return n[a];return null}function Le(e){return e.map((t)=>t.getBoundingClientRect()).map((t)=>({height:t.height,width:t.width,top:t.top,left:t.left,right:t.right,bottom:t.bottom,center:{x:t.left+t.width/2,y:t.top+t.height/2},distance:0}))}function V(e){let t=\"UnknownComponent\";if(e.type&&e.type.__name)t=e.type.__name;return t}import{camelCase as Me}from\"lodash-es\";function q(e){return Object.fromEntries(Object.entries(e.props??{}).map(([t,o])=>[Me(t),o]))}function W(e,t){if(!e.exposed||!(t in e.exposed))throw Error(`'${t}' was not exposed by the component.`);return e.exposed[t]}import{isHtmlElement as Re}from\"@basmilius/utils\";function R(e,t,o=void 0){let n=d(e),s=o||document.activeElement;if(!s||!Re(s))return n[0]||void 0;let r=n.indexOf(s);return n[r+t]||void 0}function F(e){return Array.from(e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])')).filter((t)=>!t.hasAttribute(\"disabled\")||t.getAttribute(\"disabled\")!==\"true\").filter((t)=>!t.hasAttribute(\"aria-disabled\")||t.getAttribute(\"aria-disabled\")!==\"true\")}import{isHtmlElement as Fe}from\"@basmilius/utils\";import{unref as ke}from\"vue\";function p(e){let t=ke(e);if(Fe(t))return t;return t?.$el}function G(...e){console.warn(\"[Flux]\",...e)}function g(e,t,o=!1){let n=He(e),s=t.compareDocumentPosition(e),r;if(s&&Node.DOCUMENT_POSITION_PRECEDING||o)r=n.firstChild();else r=n.lastChild();(r!==null?r:e).focus()}function He(e){return document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:(t)=>t.tabIndex>=0&&!t.disabled?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})}class X{get active(){return this.current?.isEnabled??!1}get current(){return this.#e[this.#e.length-1]??null}#t=[];#e=[];add(e,t,o=!0){let n={id:e,setEnabled:t,isEnabled:!0};if(this.current&&this.toggle(this.current,!1),this.#e.push(n),o)this.toggle(n,!0),this.emit()}remove(e){let t=this.#e.find((s)=>s.id===e);t&&this.toggle(t,!1);let n=this.current?.id===e;this.#e=this.#e.filter((s)=>s.id!==e),n&&this.current&&this.toggle(this.current,!0),this.emit()}emit(){this.#t.forEach((e)=>e(this.active,this.#e))}subscribe(e){return this.#t.push(e),e(this.active,this.#e),()=>this.#t=this.#t.filter((t)=>t!==e)}toggle(e,t){e.setEnabled(t),e.isEnabled=t}}var w=new X;var Y=!globalThis.document;function Z(e,t,o){let n=Ae([]);De(()=>{document.addEventListener(\"pointerdown\",s)}),Se(()=>{document.removeEventListener(\"pointerdown\",s)});function s(r){if(!j(t))return;!j(n).some((i)=>i.contains(r.target))&&o(r)}Ie(()=>{let r=[];(Array.isArray(e)?e:[e]).forEach((a)=>{let i=p(a);i&&r.push(i)}),n.value=r})}import{computed as Oe,getCurrentInstance as Ce}from\"vue\";function $(){let e=Ce();return Oe(()=>e?.uid??(e?.proxy)._uid??0)}import{customRef as _e,isRef as J,ref as Ne,watch as Ue}from\"vue\";function Q(e,t,o=!1){let n=Ne(J(e)?e.value:e),s=_e((r,a)=>({get(){return r(),n.value},set:Pe((i)=>{n.value=i,a()},t,o)}));if(J(e))Ue(e,(r)=>s.value=r);return s}function Pe(e,t,o=!1){let n;return(...s)=>{if(o&&!n)e(...s);clearTimeout(n),n=setTimeout(()=>requestAnimationFrame(()=>e(...s)),t)}}import{watch as Ke}from\"vue\";function k(e,t,o,n={passive:!0}){Ke(e,(s,r,a)=>{if(!s)return;s.addEventListener(t,o,n),a(()=>s.removeEventListener(t,o))},{immediate:!0})}import{onMounted as ze,onUnmounted as Be,ref as Ve,unref as qe}from\"vue\";function ee(e,t){let o=Ve();ze(()=>{s()}),Be(()=>{clearTimeout(o.value)});function n(){o.value=setTimeout(()=>requestAnimationFrame(s),qe(e))}function s(){n(),t()}}import{ref as We,watch as Ge}from\"vue\";function te(e,t={}){let o=We(t.initial??!1);return Ge(e,(n,s,r)=>{let a=p(e);if(!a)return;let i=new IntersectionObserver((f)=>o.value=f[0]?.isIntersecting??!1,t);i.observe(a),r(()=>i.disconnect())},{immediate:!0}),o}import{onScopeDispose as Xe,watch as Ye}from\"vue\";function H(e,t,o){o??={attributes:!0};let n,s=Ye(()=>p(e),(i)=>{if(r(),!i)return;n=new MutationObserver(t),n.observe(i,o)},{immediate:!0});function r(){if(!n)return;n.disconnect(),n=void 0}function a(){r(),s()}Xe(a)}import{DateTime as oe}from\"luxon\";import{ref as je,watch as Ze}from\"vue\";function ne(e,t){let o=`flux/${e}`,n=je(s()??t);function s(){if(o in localStorage){let r=JSON.parse(localStorage.getItem(o));if(Array.isArray(r)&&r[0]===\"DateTime\")r=oe.fromISO(r[1]);return r}return null}return Ze(n,(r)=>{let a=r;if(oe.isDateTime(r))a=[\"DateTime\",r.toISO({includeOffset:!0,extendedZone:!0})];localStorage.setItem(o,JSON.stringify(a))}),n}import{ref as I,unref as $e}from\"vue\";function re(e){let t=I(0),o=I(0);if(!e)e=I(document);return k(e,\"scroll\",()=>{let n=$e(e);if(n instanceof Document)n=n.scrollingElement;t.value=n?.scrollLeft??0,o.value=n?.scrollTop??0}),{x:t,y:o}}import{ref as ie,watch as ce}from\"vue\";import{onMounted as Je,onUnmounted as Qe,ref as se,unref as ae}from\"vue\";var et=0;function D(e=!1){let t=se(`focus-trap-${++et}`),o=se(!1);return Je(()=>w.add(ae(t),(n)=>o.value=n,e)),Qe(()=>w.remove(ae(t))),o}import{unref as tt,watch as ot}from\"vue\";function S(e,t){ot(e,(o,n,s)=>{if(!p(e)||tt(t))return;let a=document.activeElement;s(()=>{requestAnimationFrame(()=>a?.focus())})})}function le(e,t={}){if(Y)return;let{disable:o=ie(!1),disableReturn:n=ie(!1),attachTo:s=null}=t,r=D(!o);S(e,n),ce(e,(a,i,f)=>{let l=p(e),u=s||document;if(r.value&&l&&document.activeElement&&!l.contains(document.activeElement)&&!l.querySelector(\"[autofocus]\"))g(l,document.activeElement,!0);function v(c){if(!r.value||!l)return;let m=c.target||document.body;if(l.contains(m))return;c.preventDefault(),c.stopImmediatePropagation(),g(l,m)}function L(c){if(!r.value||!l)return;if(!c.relatedTarget||c.relatedTarget===document.body)c.preventDefault(),l.focus();let m=c.target||document.body;if(l.contains(m))return;g(l,m)}if(u.addEventListener(\"focusin\",v,{capture:!0}),u.addEventListener(\"focusout\",L,{capture:!0}),l){let c=d(l),m=c.findIndex((T)=>T.classList.contains(\"is-active\")),h=c.findIndex((T)=>!T.hasAttribute(\"aria-disabled\")),y=c[0];if(m>-1)y=c[m];if(h>-1)y=c[h];if(y)y.focus()}f(()=>{u.removeEventListener(\"focusin\",v),u.removeEventListener(\"focusout\",L)})},{immediate:!0}),ce(()=>o,()=>{let a=p(e);if(r.value=!o,o||!a)return;let i=d(a);if(i.includes(document.activeElement))return;i[0]?.focus()},{immediate:!0})}import{onMounted as nt,onUnmounted as rt,ref as st}from\"vue\";function fe(e){let t=st(null);nt(()=>t.value=w.subscribe(e)),rt(()=>t.value?.())}import{watch as at}from\"vue\";function pe(e,{cycle:t=!0,direction:o=\"bidirectional\"}={}){H(e,()=>s(n(),!1));function n(){let a=p(e),i=d(a),f=i.findIndex((u)=>u.classList.contains(\"is-active\")),l=i.findIndex((u)=>!u.hasAttribute(\"aria-disabled\"));if(f>-1)return f;if(l>-1)return l;return 0}function s(a,i=!0){let f=p(e),l=d(f);l.forEach((u,v)=>u.tabIndex=v===a?0:-1),i&&l[a]?.focus()}function r(a){let i=p(e),f=d(i);if([\"Enter\",\" \"].includes(a.key))return;switch(o){case\"bidirectional\":it(a,i,f,s);break;case\"horizontal\":case\"vertical\":ct(a,i,t,o,f,s);break}}at(e,(a,i,f)=>{let l=p(e);if(!l)return;l.addEventListener(\"keydown\",r),s(n(),!1),f(()=>l.removeEventListener(\"keydown\",r))},{immediate:!0})}function it(e,t,o,n){let s;switch(e.key){case\"ArrowUp\":s=\"up\";break;case\"ArrowDown\":s=\"down\";break;case\"ArrowLeft\":s=\"left\";break;case\"ArrowRight\":s=\"right\";break;default:return}let r=M(t,document.activeElement,s);if(r)n(o.indexOf(r));e.preventDefault()}function ct(e,t,o,n,s,r){let a;if(e.key===(n===\"horizontal\"?\"ArrowLeft\":\"ArrowUp\"))a=-1;else if(e.key===(n===\"horizontal\"?\"ArrowRight\":\"ArrowDown\"))a=1;else return;let i=R(t,a);if(i)r(s.indexOf(i));else if(o)r(a===1?0:s.length-1);e.preventDefault()}var an=\"#f8fafc\",cn=\"#f1f5f9\",ln=\"#e2e8f0\",fn=\"#cbd5e1\",pn=\"#94a3b8\",un=\"#64748b\",dn=\"#475569\",mn=\"#334155\",xn=\"#1e293b\",bn=\"#0f172a\",hn=\"#020617\",yn=\"#f9fafb\",Tn=\"#f3f4f6\",vn=\"#e5e7eb\",En=\"#d1d5db\",gn=\"#9ca3af\",wn=\"#6b7280\",Ln=\"#4b5563\",Mn=\"#374151\",Rn=\"#1f2937\",Fn=\"#111827\",kn=\"#030712\",Hn=\"#fafafa\",Dn=\"#f4f4f5\",Sn=\"#e4e4e7\",An=\"#d4d4d8\",In=\"#a1a1aa\",On=\"#71717a\",Cn=\"#52525b\",_n=\"#3f3f46\",Nn=\"#27272a\",Un=\"#18181b\",Pn=\"#09090b\",Kn=\"#fafafa\",zn=\"#f5f5f5\",Bn=\"#e5e5e5\",Vn=\"#d4d4d4\",qn=\"#a3a3a3\",Wn=\"#737373\",Gn=\"#525252\",Xn=\"#404040\",Yn=\"#262626\",jn=\"#171717\",Zn=\"#0a0a0a\",$n=\"#fafaf9\",Jn=\"#f5f5f4\",Qn=\"#e7e5e4\",er=\"#d6d3d1\",tr=\"#a8a29e\",or=\"#78716c\",nr=\"#57534e\",rr=\"#44403c\",sr=\"#292524\",ar=\"#1c1917\",ir=\"#0c0a09\",cr=\"#fef2f2\",lr=\"#fee2e2\",fr=\"#fecaca\",pr=\"#fca5a5\",ur=\"#f87171\",dr=\"#ef4444\",mr=\"#dc2626\",xr=\"#b91c1c\",br=\"#991b1b\",hr=\"#7f1d1d\",yr=\"#450a0a\",Tr=\"#fff7ed\",vr=\"#ffedd5\",Er=\"#fed7aa\",gr=\"#fdba74\",wr=\"#fb923c\",Lr=\"#f97316\",Mr=\"#ea580c\",Rr=\"#c2410c\",Fr=\"#9a3412\",kr=\"#7c2d12\",Hr=\"#431407\",Dr=\"#fffbeb\",Sr=\"#fef3c7\",Ar=\"#fde68a\",Ir=\"#fcd34d\",Or=\"#fbbf24\",Cr=\"#f59e0b\",_r=\"#d97706\",Nr=\"#b45309\",Ur=\"#92400e\",Pr=\"#78350f\",Kr=\"#451a03\",zr=\"#fefce8\",Br=\"#fef9c3\",Vr=\"#fef08a\",qr=\"#fde047\",Wr=\"#facc15\",Gr=\"#eab308\",Xr=\"#ca8a04\",Yr=\"#a16207\",jr=\"#854d0e\",Zr=\"#713f12\",$r=\"#422006\",Jr=\"#f7fee7\",Qr=\"#ecfccb\",es=\"#d9f99d\",ts=\"#bef264\",os=\"#a3e635\",ns=\"#84cc16\",rs=\"#65a30d\",ss=\"#4d7c0f\",as=\"#3f6212\",is=\"#365314\",cs=\"#1a2e05\",ls=\"#f0fdf4\",fs=\"#dcfce7\",ps=\"#bbf7d0\",us=\"#86efac\",ds=\"#4ade80\",ms=\"#22c55e\",xs=\"#16a34a\",bs=\"#15803d\",hs=\"#166534\",ys=\"#14532d\",Ts=\"#052e16\",vs=\"#ecfdf5\",Es=\"#d1fae5\",gs=\"#a7f3d0\",ws=\"#6ee7b7\",Ls=\"#34d399\",Ms=\"#10b981\",Rs=\"#059669\",Fs=\"#047857\",ks=\"#065f46\",Hs=\"#064e3b\",Ds=\"#022c22\",Ss=\"#f0fdfa\",As=\"#ccfbf1\",Is=\"#99f6e4\",Os=\"#5eead4\",Cs=\"#2dd4bf\",_s=\"#14b8a6\",Ns=\"#0d9488\",Us=\"#0f766e\",Ps=\"#115e59\",Ks=\"#134e4a\",zs=\"#042f2e\",Bs=\"#ecfeff\",Vs=\"#cffafe\",qs=\"#a5f3fc\",Ws=\"#67e8f9\",Gs=\"#22d3ee\",Xs=\"#06b6d4\",Ys=\"#0891b2\",js=\"#0e7490\",Zs=\"#155e75\",$s=\"#164e63\",Js=\"#083344\",Qs=\"#f0f9ff\",ea=\"#e0f2fe\",ta=\"#bae6fd\",oa=\"#7dd3fc\",na=\"#38bdf8\",ra=\"#0ea5e9\",sa=\"#0284c7\",aa=\"#0369a1\",ia=\"#075985\",ca=\"#0c4a6e\",la=\"#082f49\",fa=\"#eff6ff\",pa=\"#dbeafe\",ua=\"#bfdbfe\",da=\"#93c5fd\",ma=\"#60a5fa\",xa=\"#3b82f6\",ba=\"#2563eb\",ha=\"#1d4ed8\",ya=\"#1e40af\",Ta=\"#1e3a8a\",va=\"#172554\",Ea=\"#eef2ff\",ga=\"#e0e7ff\",wa=\"#c7d2fe\",La=\"#a5b4fc\",Ma=\"#818cf8\",Ra=\"#6366f1\",Fa=\"#4f46e5\",ka=\"#4338ca\",Ha=\"#3730a3\",Da=\"#312e81\",Sa=\"#1e1b4b\",Aa=\"#f5f3ff\",Ia=\"#ede9fe\",Oa=\"#ddd6fe\",Ca=\"#c4b5fd\",_a=\"#a78bfa\",Na=\"#8b5cf6\",Ua=\"#7c3aed\",Pa=\"#6d28d9\",Ka=\"#5b21b6\",za=\"#4c1d95\",Ba=\"#2e1065\",Va=\"#faf5ff\",qa=\"#f3e8ff\",Wa=\"#e9d5ff\",Ga=\"#d8b4fe\",Xa=\"#c084fc\",Ya=\"#a855f7\",ja=\"#9333ea\",Za=\"#7e22ce\",$a=\"#6b21a8\",Ja=\"#581c87\",Qa=\"#3b0764\",ei=\"#fdf4ff\",ti=\"#fae8ff\",oi=\"#f5d0fe\",ni=\"#f0abfc\",ri=\"#e879f9\",si=\"#d946ef\",ai=\"#c026d3\",ii=\"#a21caf\",ci=\"#86198f\",li=\"#701a75\",fi=\"#4a044e\",pi=\"#fdf2f8\",ui=\"#fce7f3\",di=\"#fbcfe8\",mi=\"#f9a8d4\",xi=\"#f472b6\",bi=\"#ec4899\",hi=\"#db2777\",yi=\"#be185d\",Ti=\"#9d174d\",vi=\"#831843\",Ei=\"#500724\",gi=\"#fff1f2\",wi=\"#ffe4e6\",Li=\"#fecdd3\",Mi=\"#fda4af\",Ri=\"#fb7185\",Fi=\"#f43f5e\",ki=\"#e11d48\",Hi=\"#be123c\",Di=\"#9f1239\",Si=\"#881337\",Ai=\"#4c0519\";class ue{#t;#e;constructor(e){this.#e=[],this.#t=e,this.onKeyDown=this.onKeyDown.bind(this)}focusElement(e,t=!0){if(!this.#e[e])return;for(let o=0;o<this.#e.length;++o)this.#e[o].tabIndex=o===e?0:-1;if(t)this.#e[e]?.focus()}register(){this.#e=F(this.#t),this.#t.addEventListener(\"keydown\",this.onKeyDown),this.focusElement(0,!1)}unregister(){this.#t.removeEventListener(\"keydown\",this.onKeyDown)}onKeyDown(e){let t=this.#t.querySelector('[tabindex=\"0\"]'),o=this.#e.findIndex((n)=>n===t)??0;switch(e.key){case\"ArrowUp\":case\"ArrowLeft\":this.focusElement(o-1);break;case\"ArrowDown\":case\"ArrowRight\":this.focusElement(o+1);break;default:return}e.preventDefault(),e.stopPropagation()}}var lt={beforeUnmount(e){O.get(e)?.unregister(),O.delete(e)},mounted(e){let t=new ue(e);t.register(),O.set(e,t)},getSSRProps(){return{}}},O=new WeakMap;class de{#t;#e;constructor(e){this.#t=e,this.#e=new MutationObserver(this.onMutation.bind(this))}register(){this.#e.observe(this.#t,{childList:!0,subtree:!0}),requestAnimationFrame(this.onMutation.bind(this))}unregister(){this.#e.disconnect()}onMutation(){let{height:e}=getComputedStyle(this.#t);this.#t.style.height=\"auto\";let{height:t}=getComputedStyle(this.#t);if(this.#t.style.height=e,t===e)return;getComputedStyle(this.#t),requestAnimationFrame(()=>requestAnimationFrame(()=>this.#t.style.height=t))}}var ft={beforeUnmount(e){C.get(e)?.unregister(),C.delete(e)},mounted(e){let t=new de(e);t.register(),C.set(e,t)},getSSRProps(){return{}}},C=new WeakMap;export{Pn as zinc950,Un as zinc900,Nn as zinc800,_n as zinc700,Cn as zinc600,On as zinc500,Hn as zinc50,In as zinc400,An as zinc300,Sn as zinc200,Dn as zinc100,$r as yellow950,Zr as yellow900,jr as yellow800,Yr as yellow700,Xr as yellow600,Gr as yellow500,zr as yellow50,Wr as yellow400,qr as yellow300,Vr as yellow200,Br as yellow100,g as wrapFocus,G as warn,Ba as violet950,za as violet900,Ka as violet800,Pa as violet700,Ua as violet600,Na as violet500,Aa as violet50,_a as violet400,Ca as violet300,Oa as violet200,Ia as violet100,ft as vHeightTransition,lt as vFocusTrap,re as useScrollPosition,ne as useRemembered,H as useMutationObserver,ee as useInterval,te as useInView,pe as useFocusZone,fe as useFocusTrapSubscription,S as useFocusTrapReturn,D as useFocusTrapLock,le as useFocusTrap,k as useEventListener,Q as useDebouncedRef,$ as useComponentId,Z as useClickOutside,K as useCalendarYearSwitcher,U as useCalendarMonthSwitcher,N as useCalendar,p as unrefTemplateElement,zs as teal950,Ks as teal900,Ps as teal800,Us as teal700,Ns as teal600,_s as teal500,Ss as teal50,Cs as teal400,Os as teal300,Is as teal200,As as teal100,ir as stone950,ar as stone900,sr as stone800,rr as stone700,nr as stone600,or as stone500,$n as stone50,tr as stone400,er as stone300,Qn as stone200,Jn as stone100,hn as slate950,bn as slate900,xn as slate800,mn as slate700,dn as slate600,un as slate500,an as slate50,pn as slate400,fn as slate300,ln as slate200,cn as slate100,la as sky950,ca as sky900,ia as sky800,aa as sky700,sa as sky600,ra as sky500,Qs as sky50,na as sky400,oa as sky300,ta as sky200,ea as sky100,Ai as rose950,Si as rose900,Di as rose800,Hi as rose700,ki as rose600,Fi as rose500,gi as rose50,Ri as rose400,Mi as rose300,Li as rose200,wi as rose100,yr as red950,hr as red900,br as red800,xr as red700,mr as red600,dr as red500,cr as red50,ur as red400,pr as red300,fr as red200,lr as red100,Qa as purple950,Ja as purple900,$a as purple800,Za as purple700,ja as purple600,Ya as purple500,Va as purple50,Xa as purple400,Ga as purple300,Wa as purple200,qa as purple100,Ei as pink950,vi as pink900,Ti as pink800,yi as pink700,hi as pink600,bi as pink500,pi as pink50,xi as pink400,mi as pink300,di as pink200,ui as pink100,Hr as orange950,kr as orange900,Fr as orange800,Rr as orange700,Mr as orange600,Lr as orange500,Tr as orange50,wr as orange400,gr as orange300,Er as orange200,vr as orange100,Zn as neutral950,jn as neutral900,Yn as neutral800,Xn as neutral700,Gn as neutral600,Wn as neutral500,Kn as neutral50,qn as neutral400,Vn as neutral300,Bn as neutral200,zn as neutral100,cs as lime950,is as lime900,as as lime800,ss as lime700,rs as lime600,ns as lime500,Jr as lime50,os as lime400,ts as lime300,es as lime200,Qr as lime100,Y as isSSR,Sa as indigo950,Da as indigo900,Ha as indigo800,ka as indigo700,Fa as indigo600,Ra as indigo500,Ea as indigo50,Ma as indigo400,La as indigo300,wa as indigo200,ga as indigo100,Ts as green950,ys as green900,hs as green800,bs as green700,xs as green600,ms as green500,ls as green50,ds as green400,us as green300,ps as green200,fs as green100,kn as gray950,Fn as gray900,Rn as gray800,Mn as gray700,Ln as gray600,wn as gray500,yn as gray50,gn as gray400,En as gray300,vn as gray200,Tn as gray100,F as getKeyboardFocusableElements,d as getFocusableElements,R as getFocusableElement,W as getExposedRef,q as getComponentProps,V as getComponentName,M as getBidirectionalFocusElement,fi as fuchsia950,li as fuchsia900,ci as fuchsia800,ii as fuchsia700,ai as fuchsia600,si as fuchsia500,ei as fuchsia50,ri as fuchsia400,ni as fuchsia300,oi as fuchsia200,ti as fuchsia100,B as flattenVNodeTree,Ds as emerald950,Hs as emerald900,ks as emerald800,Fs as emerald700,Rs as emerald600,Ms as emerald500,vs as emerald50,Ls as emerald400,ws as emerald300,gs as emerald200,Es as emerald100,Js as cyan950,$s as cyan900,Zs as cyan800,js as cyan700,Ys as cyan600,Xs as cyan500,Bs as cyan50,Gs as cyan400,Ws as cyan300,qs as cyan200,Vs as cyan100,va as blue950,Ta as blue900,ya as blue800,ha as blue700,ba as blue600,xa as blue500,fa as blue50,ma as blue400,da as blue300,ua as blue200,pa as blue100,z as animationFrameDebounce,Kr as amber950,Pr as amber900,Ur as amber800,Nr as amber700,_r as amber600,Cr as amber500,Dr as amber50,Or as amber400,Ir as amber300,Ar as amber200,Sr as amber100,w as FOCUS_TRAP_LOCKS};\n\n//# debugId=101630D55D17E66A64756E2164756E21\n//# sourceMappingURL=index.js.map\n","import type { InjectionKey, Ref } from 'vue';\n\nexport const FluxDashboardInjectionKey: InjectionKey<FluxDashboardInjection> = Symbol();\n\nexport type FluxDashboardInjection = {\n readonly isMenuCollapsed: Ref<boolean>;\n readonly isNavigationCollapsed: Ref<boolean>;\n};\n","@use '../../../../components/src/css/mixin';\n\n:root {\n --dashboard-background: var(--gray-0);\n --dashboard-duration: 360ms;\n --dashboard-navigation-background: var(--primary-11);\n --dashboard-navigation-foreground: var(--primary-0);\n}\n\n[dark] {\n --dashboard-navigation-background: color-mix(in oklch, var(--gray-0), black 25%);\n --dashboard-navigation-foreground: var(--gray-9);\n}\n\nbody:has(.root > .dashboard) {\n background: var(--dashboard-background);\n}\n\n.dashboard {\n min-height: 100dvh;\n}\n\n.dashboardMount {\n display: flex;\n align-items: stretch;\n flex-flow: column;\n}\n\n.isResizing, .isResizing * {\n animation: none !important;\n transition: none !important;\n}\n\n@include mixin.breakpoint-up(lg) {\n .dashboard {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n grid-template-rows: minmax(0, 1fr);\n transition: padding-left var(--dashboard-duration) var(--swift-out);\n\n &:has(> .dashboardNavigation) {\n padding-left: 300px;\n }\n\n &:has(> .dashboardNavigationCollapsed) {\n padding-left: 84px;\n }\n\n .dashboardMount {\n grid-column: 2;\n }\n\n .dashboardMenu {\n grid-column: 1;\n }\n\n .dashboardSide {\n grid-column: 3;\n }\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboard {\n display: flex;\n padding-top: 84px;\n flex-flow: column;\n }\n}\n","<template>\n <div :class=\"[$style.dashboard, isResizing && $style.isResizing]\">\n <slot name=\"navigation\"/>\n <slot name=\"menu\"/>\n\n <div :class=\"$style.dashboardMount\">\n <slot name=\"header\"/>\n <slot/>\n </div>\n\n <slot name=\"side\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useRemembered } from '@flux-ui/internals';\n import { provide, ref, VNode, watch } from 'vue';\n import { FluxDashboardInjectionKey } from '$fluxDashboard/data';\n import $style from '$fluxDashboard/css/component/Dashboard.module.scss';\n\n defineSlots<{\n default(): VNode;\n header?(): VNode;\n navigation?(): VNode;\n menu?(): VNode;\n side?(): VNode;\n }>();\n\n const isMenuCollapsed = useRemembered('dashboard-menu-collapsed', true);\n const isNavigationCollapsed = useRemembered('dashboard-navigation-collapsed', true);\n const isResizing = ref(false);\n\n provide(FluxDashboardInjectionKey, {\n isMenuCollapsed,\n isNavigationCollapsed\n });\n\n watch(isNavigationCollapsed, (_, __, onCleanup) => {\n let timeout: NodeJS.Timeout;\n\n function onResize(): void {\n clearTimeout(timeout);\n isResizing.value = true;\n timeout = setTimeout(() => isResizing.value = false, 10);\n }\n\n window.addEventListener('resize', onResize, {passive: true});\n\n onCleanup(() => window.removeEventListener('resize', onResize));\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"[$style.dashboard, isResizing && $style.isResizing]\">\n <slot name=\"navigation\"/>\n <slot name=\"menu\"/>\n\n <div :class=\"$style.dashboardMount\">\n <slot name=\"header\"/>\n <slot/>\n </div>\n\n <slot name=\"side\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useRemembered } from '@flux-ui/internals';\n import { provide, ref, VNode, watch } from 'vue';\n import { FluxDashboardInjectionKey } from '$fluxDashboard/data';\n import $style from '$fluxDashboard/css/component/Dashboard.module.scss';\n\n defineSlots<{\n default(): VNode;\n header?(): VNode;\n navigation?(): VNode;\n menu?(): VNode;\n side?(): VNode;\n }>();\n\n const isMenuCollapsed = useRemembered('dashboard-menu-collapsed', true);\n const isNavigationCollapsed = useRemembered('dashboard-navigation-collapsed', true);\n const isResizing = ref(false);\n\n provide(FluxDashboardInjectionKey, {\n isMenuCollapsed,\n isNavigationCollapsed\n });\n\n watch(isNavigationCollapsed, (_, __, onCleanup) => {\n let timeout: NodeJS.Timeout;\n\n function onResize(): void {\n clearTimeout(timeout);\n isResizing.value = true;\n timeout = setTimeout(() => isResizing.value = false, 10);\n }\n\n window.addEventListener('resize', onResize, {passive: true});\n\n onCleanup(() => window.removeEventListener('resize', onResize));\n }, {immediate: true});\n</script>\n","import { inject } from 'vue';\nimport { FluxDashboardInjection, FluxDashboardInjectionKey } from '$fluxDashboard/data';\n\nexport default function (): FluxDashboardInjection {\n const injection = inject(FluxDashboardInjectionKey);\n\n if (!injection) {\n throw new Error('[Flux] useDashboardInjection() was used outside a FluxDashboard component.');\n }\n\n return injection;\n}\n","@use '../../../../components/src/css/mixin';\n\n.notice + .dashboardContent {\n padding-top: 30px;\n}\n\n.dashboardContent {\n display: flex;\n padding: 0 30px;\n flex-flow: column;\n flex-grow: 1;\n\n > :is(.calendar, .table) {\n margin-left: -30px;\n margin-right: -30px;\n height: calc(100dvh - 84px);\n flex-grow: 1;\n }\n\n > .calendar {\n border-left: 0;\n border-right: 0;\n border-radius: 0;\n\n .calendarActions {\n padding-left: 30px;\n padding-right: 30px;\n }\n }\n\n > .table {\n border-top: 1px solid var(--gray-2);\n\n .tableCell:first-child .tableCellContent {\n padding-left: 30px;\n }\n\n .tableCell:last-child .tableCellContent {\n padding-right: 30px;\n }\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboardContentCollapsed {\n display: none;\n }\n}\n","<template>\n <main :class=\"[$style.dashboardContent, !isMenuCollapsed && $style.dashboardContentCollapsed]\">\n <slot/>\n </main>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardContent.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <main :class=\"[$style.dashboardContent, !isMenuCollapsed && $style.dashboardContentCollapsed]\">\n <slot/>\n </main>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardContent.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","@use '../../../../components/src/css/mixin';\n\n.dashboardTopBar {\n position: sticky;\n display: flex;\n top: 0;\n height: 84px;\n padding-left: 30px;\n padding-right: 30px;\n align-items: center;\n flex-flow: row;\n gap: 15px;\n background: oklch(from var(--gray-0) l c h / .9);\n backdrop-filter: blur(10px) saturate(180%);\n z-index: 100;\n\n > h1 {\n font-size: 18px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n > .icon {\n color: var(--foreground-prominent);\n }\n\n > .separator {\n height: 24px;\n }\n}\n\n.dashboardHeader:not(.routeTransitionEnterActive):not(.routeTransitionLeaveActive) {\n transition: box-shadow var(--dashboard-duration) var(--swift-out);\n}\n\n.dashboardHeaderScrolled {\n composes: dashboardHeader;\n\n box-shadow: var(--shadow-md);\n}\n\n[dark] .dashboardHeaderScrolled {\n box-shadow: 0 1px 0 var(--gray-1), var(--shadow-md);\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboard > .dashboardTopBar {\n top: 84px;\n }\n\n .dashboard > .dashboardTopBarCollapsed {\n display: none;\n }\n}\n","<template>\n <header :class=\"[$style.dashboardTopBar, !isMenuCollapsed && $style.dashboardTopBarCollapsed]\">\n <slot/>\n </header>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardTopBar.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <header :class=\"[$style.dashboardTopBar, !isMenuCollapsed && $style.dashboardTopBarCollapsed]\">\n <slot/>\n </header>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardTopBar.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <FluxDashboardTopBar :class=\"y > 0 ? $style.dashboardHeaderScrolled : $style.dashboardHeader\">\n <slot name=\"start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"end\"/>\n </FluxDashboardTopBar>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import { useScrollPosition } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardTopBar.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {y} = useScrollPosition();\n</script>\n","<template>\n <FluxDashboardTopBar :class=\"y > 0 ? $style.dashboardHeaderScrolled : $style.dashboardHeader\">\n <slot name=\"start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"end\"/>\n </FluxDashboardTopBar>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import { useScrollPosition } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardTopBar.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {y} = useScrollPosition();\n</script>\n","@use '../../../../components/src/css/mixin';\n\n.dashboardPane {\n background: var(--gray-1);\n overflow: auto;\n z-index: 200;\n\n .menuSubHeader {\n background: linear-gradient(to bottom, var(--gray-1) 75%, transparent);\n }\n\n .dashboardTopBar {\n background: oklch(from var(--gray-1) l c h / .9);\n }\n\n .filter {\n --background: var(--gray-1);\n\n max-height: calc(100dvh - 84px);\n margin-top: -9px;\n padding: 9px 18px 18px;\n width: 100%;\n\n .filterHeader {\n margin-left: -18px;\n margin-right: -18px;\n padding-left: 18px;\n padding-right: 18px;\n }\n\n .menu {\n font-size: 14px;\n }\n\n .menuItemCommand {\n font-size: 12px;\n }\n\n .menuItemIcon {\n font-size: 16px;\n }\n\n .menu > :where(.divider, .separator) {\n margin-left: -18px;\n margin-right: -18px;\n }\n }\n}\n\n.dashboardMenu {\n composes: dashboardPane;\n\n border-right: 1px solid var(--gray-2);\n}\n\n.dashboardMenuBody {\n padding: 0 18px 30px;\n}\n\n.dashboardSide {\n composes: dashboardPane;\n\n border-left: 1px solid var(--gray-2);\n}\n\n@include mixin.breakpoint-up(lg) {\n .dashboardPane {\n position: sticky;\n top: 0;\n height: 100dvh;\n width: 300px;\n grid-row: 1 / span 2;\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboardMenu {\n height: calc(100dvh - 84px);\n }\n\n .dashboardMenuCollapsed {\n display: none;\n }\n}\n","<template>\n <aside :class=\"[$style.dashboardMenu, isMenuCollapsed && $style.dashboardMenuCollapsed]\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <div :class=\"$style.dashboardMenuBody\">\n <slot/>\n </div>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import type { FluxIconName } from '@flux-ui/types';\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <aside :class=\"[$style.dashboardMenu, isMenuCollapsed && $style.dashboardMenuCollapsed]\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <div :class=\"$style.dashboardMenuBody\">\n <slot/>\n </div>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import type { FluxIconName } from '@flux-ui/types';\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","@use '../../../../components/src/css/mixin';\n\n.dashboardNavigation {\n position: fixed;\n display: flex;\n top: 0;\n left: 0;\n background: var(--dashboard-navigation-background);\n color: var(--dashboard-navigation-foreground);\n z-index: 750;\n\n .divider {\n margin: 3px 15px;\n }\n\n .dividerLine {\n background: var(--primary-10);\n }\n\n .menu {\n flex-grow: 1;\n }\n\n .menuItem {\n height: 54px;\n min-width: 54px;\n padding: 15px;\n gap: 21px;\n color: var(--dashboard-navigation-foreground);\n overflow: hidden;\n\n @media (hover: hover) {\n &:hover {\n background: var(--primary-10);\n }\n }\n\n &:active {\n background: var(--primary-9);\n }\n }\n\n .menuItemHighlighted {\n background: oklch(from var(--primary-10) l c h / .5);\n }\n\n .menuItemIcon {\n color: var(--dashboard-navigation-foreground);\n font-size: 24px;\n }\n\n .menuItemLabel {\n transition: var(--dashboard-duration) var(--swift-out);\n transition-property: filter, opacity, translate;\n white-space: nowrap;\n }\n}\n\n.dashboardNavigationCollapsed {\n composes: dashboardNavigation;\n}\n\n[dark] .dashboardNavigation {\n .dividerLine {\n background: var(--gray-2);\n }\n\n .menuItem {\n @media (hover: hover) {\n &:hover {\n background: var(--gray-2);\n }\n }\n\n &:active {\n background: var(--gray-3);\n }\n }\n\n .menuItemHighlighted {\n background: var(--gray-1);\n }\n}\n\n.dashboardNavigationLogo {\n display: flex;\n height: 54px;\n width: 54px;\n align-items: center;\n justify-content: center;\n\n :is(svg) {\n max-height: 48px;\n max-width: 48px;\n width: 100%;\n }\n}\n\n.dashboardNavigationRoundingFix {\n position: absolute;\n display: block;\n height: var(--radius);\n width: var(--radius);\n content: '';\n background: var(--dashboard-navigation-background);\n transition: left var(--dashboard-duration) var(--swift-out);\n\n &::before {\n position: absolute;\n display: block;\n inset: 0;\n content: '';\n background: var(--gray-1);\n }\n}\n\n.dashboard:not(:has(.dashboardMenu)) .dashboardNavigationRoundingFix::before {\n background: var(--gray-0);\n}\n\n@include mixin.breakpoint-up(lg) {\n .dashboardNavigation {\n height: 100dvh;\n width: 300px;\n padding: 15px;\n flex-flow: column;\n gap: 15px;\n transition: width var(--dashboard-duration) var(--swift-out);\n }\n\n .dashboardNavigationCollapsed {\n width: 84px;\n\n .menuItemLabel {\n filter: blur(6px);\n opacity: 0;\n translate: -12px 0;\n }\n }\n\n .dashboardNavigationHeader {\n display: flex;\n\n .menuItem {\n display: none;\n }\n }\n\n .dashboardNavigationNav {\n display: flex;\n flex-flow: column;\n flex-grow: 1;\n }\n\n .dashboardNavigationRoundingFix {\n left: 100%;\n\n &:first-of-type {\n top: 0;\n\n &::before {\n border-top-left-radius: var(--radius);\n }\n }\n\n &:not(:first-of-type) {\n bottom: 0;\n\n &::before {\n border-bottom-left-radius: var(--radius);\n }\n }\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboardNavigation {\n width: 100dvw;\n height: 84px;\n\n &::after {\n position: fixed;\n display: block;\n inset: 0;\n width: 100dvw;\n height: 100dvh;\n content: '';\n background: oklch(from var(--gray-3) l c h / .5);\n backdrop-filter: blur(3px) saturate(180%);\n transition: var(--dashboard-duration) var(--swift-out);\n transition-property: background, backdrop-filter;\n z-index: 1900;\n }\n }\n\n .dashboardNavigationHeader {\n display: flex;\n width: inherit;\n height: inherit;\n padding: 0 15px;\n align-items: center;\n flex-flow: row;\n justify-content: space-between;\n\n .menuItem {\n align-self: center;\n justify-content: center;\n }\n }\n\n .dashboardNavigationNav {\n position: fixed;\n display: flex;\n top: 0;\n left: 0;\n width: min(300px, calc(100dvw - 42px));\n height: 100dvh;\n padding: 15px;\n flex-flow: column;\n background: var(--dashboard-navigation-background);\n transition: translate var(--dashboard-duration) var(--swift-out);\n z-index: 2000;\n }\n\n .dashboardNavigationRoundingFix {\n position: fixed;\n top: 84px;\n z-index: 750;\n\n &:first-of-type {\n left: 0;\n\n &::before {\n border-top-left-radius: var(--radius);\n }\n }\n\n &:not(:first-of-type) {\n right: 0;\n\n &::before {\n border-top-right-radius: var(--radius);\n }\n }\n }\n\n .dashboardNavigationCollapsed {\n &::after {\n background: transparent;\n backdrop-filter: none;\n pointer-events: none;\n }\n\n .dashboardNavigationNav {\n pointer-events: none;\n translate: -100% 0;\n }\n }\n}\n","<template>\n <nav\n v-bind=\"$attrs\"\n :class=\"isNavigationCollapsed ? $style.dashboardNavigationCollapsed : $style.dashboardNavigation\">\n <header :class=\"$style.dashboardNavigationHeader\">\n <FluxMenuItem\n icon-leading=\"bars\"\n @click=\"isNavigationCollapsed = !isNavigationCollapsed\"/>\n\n <router-link\n v-if=\"slots.logo\"\n :class=\"$style.dashboardNavigationLogo\"\n :to=\"logoLocation || '/'\">\n <slot\n name=\"logo\"\n v-bind=\"{isNavigationCollapsed}\"/>\n </router-link>\n\n <FluxMenuItem\n icon-leading=\"ellipsis-h\"\n @click=\"isMenuCollapsed = !isMenuCollapsed\"/>\n </header>\n\n <div\n v-for=\"index of 2\"\n :key=\"index\"\n :class=\"$style.dashboardNavigationRoundingFix\"/>\n\n <main :class=\"$style.dashboardNavigationNav\">\n <slot/>\n </main>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxMenuItem } from '@flux-ui/components';\n import type { FluxTo } from '@flux-ui/types';\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardNavigation.module.scss';\n\n defineOptions({\n inheritAttrs: false\n });\n\n defineProps<{\n logoLocation?: FluxTo\n }>();\n\n const slots = defineSlots<{\n default(): any;\n logo?(): any;\n }>();\n\n const {\n isMenuCollapsed,\n isNavigationCollapsed\n } = useDashboardInjection();\n</script>\n","<template>\n <nav\n v-bind=\"$attrs\"\n :class=\"isNavigationCollapsed ? $style.dashboardNavigationCollapsed : $style.dashboardNavigation\">\n <header :class=\"$style.dashboardNavigationHeader\">\n <FluxMenuItem\n icon-leading=\"bars\"\n @click=\"isNavigationCollapsed = !isNavigationCollapsed\"/>\n\n <router-link\n v-if=\"slots.logo\"\n :class=\"$style.dashboardNavigationLogo\"\n :to=\"logoLocation || '/'\">\n <slot\n name=\"logo\"\n v-bind=\"{isNavigationCollapsed}\"/>\n </router-link>\n\n <FluxMenuItem\n icon-leading=\"ellipsis-h\"\n @click=\"isMenuCollapsed = !isMenuCollapsed\"/>\n </header>\n\n <div\n v-for=\"index of 2\"\n :key=\"index\"\n :class=\"$style.dashboardNavigationRoundingFix\"/>\n\n <main :class=\"$style.dashboardNavigationNav\">\n <slot/>\n </main>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxMenuItem } from '@flux-ui/components';\n import type { FluxTo } from '@flux-ui/types';\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardNavigation.module.scss';\n\n defineOptions({\n inheritAttrs: false\n });\n\n defineProps<{\n logoLocation?: FluxTo\n }>();\n\n const slots = defineSlots<{\n default(): any;\n logo?(): any;\n }>();\n\n const {\n isMenuCollapsed,\n isNavigationCollapsed\n } = useDashboardInjection();\n</script>\n","<template>\n <aside :class=\"$style.dashboardSide\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <h1>{{ title }}</h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <slot/>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxSpacer } from '@flux-ui/components';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n</script>\n","<template>\n <aside :class=\"$style.dashboardSide\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <h1>{{ title }}</h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <slot/>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxSpacer } from '@flux-ui/components';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["#e","#t","Ze","oe","$e","O","et"],"sources":["../../internals/dist/index.js","../src/data/index.ts","../src/css/component/Dashboard.module.scss","../src/component/FluxDashboard.vue","../src/component/FluxDashboard.vue","../src/composable/useDashboardInjection.ts","../src/css/component/DashboardContent.module.scss","../src/component/FluxDashboardContent.vue","../src/component/FluxDashboardContent.vue","../src/css/component/DashboardTopBar.module.scss","../src/component/FluxDashboardTopBar.vue","../src/component/FluxDashboardTopBar.vue","../src/component/FluxDashboardHeader.vue","../src/component/FluxDashboardHeader.vue","../src/css/component/DashboardPane.module.scss","../src/component/FluxDashboardMenu.vue","../src/component/FluxDashboardMenu.vue","../src/css/component/DashboardNavigation.module.scss","../src/component/FluxDashboardNavigation.vue","../src/component/FluxDashboardNavigation.vue","../src/component/FluxDashboardSide.vue","../src/component/FluxDashboardSide.vue"],"sourcesContent":["import{computed as E,ref as _,unref as b}from\"vue\";function N(e,t){let n=_(!1),o=_(e),s=E(()=>{let c=[],m=b(o).month,h=b(o).startOf(\"month\");do c.push(h),h=h.plus({day:1});while(h.month===m);let y=c[0],T=c[c.length-1];for(let x=1;x<y.weekday;++x)c.unshift(y.minus({day:x}));for(let x=T.weekday+1;x<=7;++x)c.push(T.plus({day:x-T.weekday}));while(c.length/7<6){let x=c[c.length-1];for(let A=1;A<=7;++A)c.push(x.plus({day:A}))}return c}),r=E(()=>b(s).slice(0,7).map((c)=>c.toLocaleString({weekday:t?.weekDayLength??\"short\"}))),a=E(()=>b(o).plus({month:1})),i=E(()=>b(o).minus({month:1})),f=E(()=>b(o).toLocaleString({month:t?.monthLength??\"long\"})),l=E(()=>b(o).year.toString());function u(c){n.value=o.value>c,o.value=c}function v(){u(b(o).plus({month:1}))}function L(){u(b(o).minus({month:1}))}return{isTransitioningToPast:n,viewDate:o,viewDateNext:a,viewDatePrevious:i,viewMonth:f,viewYear:l,dates:s,days:r,setViewDate:u,nextMonth:v,previousMonth:L}}import{computed as xe,unref as be}from\"vue\";function U(e,t){return{months:xe(()=>{let o=[],s=be(e),r=s.startOf(\"year\");while(r.month<=12&&r.year===s.year)o.push({date:r,label:r.toLocaleString({month:t})}),r=r.plus({months:1});return o})}}import{computed as he,ref as ye,unref as P,watch as Te}from\"vue\";function z(e,t=10){let n=ye(0),o=he(()=>{let a=P(e).year,i=[],f=a-a%t+P(n)*t;for(let l=0;l<t;++l)i.push(f+l);return i});function s(){++n.value}function r(){--n.value}return Te(e,()=>n.value=0),{years:o,next:s,previous:r}}import{onMounted as Se,onUnmounted as Ae,ref as Oe,unref as j,watchEffect as Ie}from\"vue\";function K(e){let t=0;return()=>{cancelAnimationFrame(t),t=requestAnimationFrame(e)}}import{Fragment as ve}from\"vue\";function B(e){let t=[];for(let n of e){if(n.type===ve&&Array.isArray(n.children)){t.push(...n.children);continue}t.push(n)}return t}import{isHtmlElement as Ee}from\"@basmilius/utils\";var ge=[\"a:not([disabled])\",\"button:not([disabled])\",\"input[type=checkbox]:not([disabled])\",\"input[type=radio]:not([disabled])\",\"input[type=text]:not([disabled])\",'[tabindex]:not([disabled]):not([tabindex=\"-1\"])'].join(\",\");function d(e){return Array.from(e.querySelectorAll(ge)).filter(Ee).filter((t)=>t.offsetWidth>0||t.offsetHeight>0||t===document.activeElement)}function M(e,t,n){let o=d(e),s=o.indexOf(t);if(s===-1)return null;let r=Me(o);we(r,s,n);let a=Le(s,n,r,o);if(!a){if(n===\"up\"||n===\"left\")a=o[s-1];if(n===\"down\"||n===\"right\")a=o[s+1]}return a}function we(e,t,n){let o=e[t];e.forEach((s)=>{let r=s.center;switch(n){case\"up\":r={x:r.x,y:s.top+s.height};break;case\"down\":r={x:r.x,y:s.top};break;case\"left\":r={x:s.left+s.width,y:r.y};break;case\"right\":r={x:s.left,y:r.y};break}s.distance=Math.sqrt(Math.pow(o.center.x-r.x,2)+Math.pow(o.center.y-r.y,2))})}function Le(e,t,n,o){let s=n[e],r=[];switch(t){case\"up\":r=n.map((i,f)=>f===e||i.top+i.height>s.top?Number.MAX_SAFE_INTEGER:i.distance);break;case\"down\":r=n.map((i,f)=>f===e||i.top<s.top+s.height?Number.MAX_SAFE_INTEGER:i.distance);break;case\"left\":r=n.map((i,f)=>f===e||i.left+i.width>s.left?Number.MAX_SAFE_INTEGER:i.distance);break;case\"right\":r=n.map((i,f)=>f===e||i.left<s.left+s.width?Number.MAX_SAFE_INTEGER:i.distance);break}let a=r.indexOf(Math.min(...r));if(r[a]!==Number.MAX_SAFE_INTEGER)return o[a];return null}function Me(e){return e.map((t)=>t.getBoundingClientRect()).map((t)=>({height:t.height,width:t.width,top:t.top,left:t.left,right:t.right,bottom:t.bottom,center:{x:t.left+t.width/2,y:t.top+t.height/2},distance:0}))}function V(e){let t=\"UnknownComponent\";if(e.type&&e.type.__name)t=e.type.__name;return t}import{camelCase as Re}from\"lodash-es\";function q(e){return Object.fromEntries(Object.entries(e.props??{}).map(([t,n])=>[Re(t),n]))}function W(e,t){if(!e.exposed||!(t in e.exposed))throw Error(`'${t}' was not exposed by the component.`);return e.exposed[t]}import{isHtmlElement as Fe}from\"@basmilius/utils\";function R(e,t,n=void 0){let o=d(e),s=n||document.activeElement;if(!s||!Fe(s))return o[0]||void 0;let r=o.indexOf(s);return o[r+t]||void 0}function F(e){return Array.from(e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])')).filter((t)=>!t.hasAttribute(\"disabled\")||t.getAttribute(\"disabled\")!==\"true\").filter((t)=>!t.hasAttribute(\"aria-disabled\")||t.getAttribute(\"aria-disabled\")!==\"true\")}import{isHtmlElement as ke}from\"@basmilius/utils\";import{unref as He}from\"vue\";function p(e){let t=He(e);if(ke(t))return t;return t?.$el}function G(...e){console.warn(\"[Flux]\",...e)}function g(e,t,n=!1){let o=De(e),s=t.compareDocumentPosition(e),r;if(s&&Node.DOCUMENT_POSITION_PRECEDING||n)r=o.firstChild();else r=o.lastChild();(r!==null?r:e).focus()}function De(e){return document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:(t)=>t.tabIndex>=0&&!t.disabled?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})}class X{get active(){return this.current?.isEnabled??!1}get current(){return this.#e[this.#e.length-1]??null}#t=[];#e=[];add(e,t,n=!0){let o={id:e,setEnabled:t,isEnabled:!0};if(this.current&&this.toggle(this.current,!1),this.#e.push(o),n)this.toggle(o,!0),this.emit()}remove(e){let t=this.#e.find((s)=>s.id===e);t&&this.toggle(t,!1);let o=this.current?.id===e;this.#e=this.#e.filter((s)=>s.id!==e),o&&this.current&&this.toggle(this.current,!0),this.emit()}emit(){this.#t.forEach((e)=>e(this.active,this.#e))}subscribe(e){return this.#t.push(e),e(this.active,this.#e),()=>this.#t=this.#t.filter((t)=>t!==e)}toggle(e,t){e.setEnabled(t),e.isEnabled=t}}var w=new X;var Y=!globalThis.document;function Z(e,t,n){let o=Oe([]);Se(()=>{document.addEventListener(\"pointerdown\",s)}),Ae(()=>{document.removeEventListener(\"pointerdown\",s)});function s(r){if(!j(t))return;!j(o).some((i)=>i.contains(r.target))&&n(r)}Ie(()=>{let r=[];(Array.isArray(e)?e:[e]).forEach((a)=>{let i=p(a);i&&r.push(i)}),o.value=r})}import{computed as Ce,getCurrentInstance as _e}from\"vue\";function $(){let e=_e();return Ce(()=>e?.uid??(e?.proxy)._uid??0)}import{customRef as Ne,isRef as J,ref as Ue,watch as Pe}from\"vue\";function Q(e,t,n=!1){let o=Ue(J(e)?e.value:e),s=Ne((r,a)=>({get(){return r(),o.value},set:ze((i)=>{o.value=i,a()},t,n)}));if(J(e))Pe(e,(r)=>s.value=r);return s}function ze(e,t,n=!1){let o;return(...s)=>{if(n&&!o)e(...s);clearTimeout(o),o=setTimeout(()=>requestAnimationFrame(()=>e(...s)),t)}}import{watch as Ke}from\"vue\";function k(e,t,n,o={passive:!0}){Ke(e,(s,r,a)=>{if(!s)return;s.addEventListener(t,n,o),a(()=>s.removeEventListener(t,n))},{immediate:!0})}import{onMounted as Be,onUnmounted as Ve,ref as qe,unref as We}from\"vue\";function ee(e,t){let n=qe();Be(()=>{s()}),Ve(()=>{clearTimeout(n.value)});function o(){n.value=setTimeout(()=>requestAnimationFrame(s),We(e))}function s(){o(),t()}}import{ref as Ge,watch as Xe}from\"vue\";function te(e,t={}){let n=Ge(t.initial??!1);return Xe(e,(o,s,r)=>{let a=p(e);if(!a)return;let i=new IntersectionObserver((f)=>n.value=f[0]?.isIntersecting??!1,t);i.observe(a),r(()=>i.disconnect())},{immediate:!0}),n}import{onScopeDispose as Ye,watch as je}from\"vue\";function H(e,t,n){n??={attributes:!0};let o,s=je(()=>p(e),(i)=>{if(r(),!i)return;o=new MutationObserver(t),o.observe(i,n)},{immediate:!0});function r(){if(!o)return;o.disconnect(),o=void 0}function a(){r(),s()}Ye(a)}import{DateTime as oe}from\"luxon\";import{ref as Ze,watch as $e}from\"vue\";function ne(e,t){let n=`flux/${e}`,o=Ze(s()??t);function s(){if(n in localStorage){let r=JSON.parse(localStorage.getItem(n));if(Array.isArray(r)&&r[0]===\"DateTime\")r=oe.fromISO(r[1]);return r}return null}return $e(o,(r)=>{let a=r;if(oe.isDateTime(r))a=[\"DateTime\",r.toISO({includeOffset:!0,extendedZone:!0})];localStorage.setItem(n,JSON.stringify(a))}),o}import{onScopeDispose as Je,watch as Qe}from\"vue\";function re(e,t,n){n??={};let o,s=Qe(()=>p(e),(i)=>{if(r(),!i)return;o=new ResizeObserver(t),o.observe(i,n)},{immediate:!0});function r(){if(!o)return;o.disconnect(),o=void 0}function a(){r(),s()}Je(a)}import{ref as O,unref as et}from\"vue\";function se(e){let t=O(0),n=O(0);if(!e)e=O(document);return k(e,\"scroll\",()=>{let o=et(e);if(o instanceof Document)o=o.scrollingElement;t.value=o?.scrollLeft??0,n.value=o?.scrollTop??0}),{x:t,y:n}}import{ref as ce,watch as le}from\"vue\";import{onMounted as tt,onUnmounted as ot,ref as ae,unref as ie}from\"vue\";var nt=0;function D(e=!1){let t=ae(`focus-trap-${++nt}`),n=ae(!1);return tt(()=>w.add(ie(t),(o)=>n.value=o,e)),ot(()=>w.remove(ie(t))),n}import{unref as rt,watch as st}from\"vue\";function S(e,t){st(e,(n,o,s)=>{if(!p(e)||rt(t))return;let a=document.activeElement;s(()=>{requestAnimationFrame(()=>a?.focus())})})}function fe(e,t={}){if(Y)return;let{disable:n=ce(!1),disableReturn:o=ce(!1),attachTo:s=null}=t,r=D(!n);S(e,o),le(e,(a,i,f)=>{let l=p(e),u=s||document;if(r.value&&l&&document.activeElement&&!l.contains(document.activeElement)&&!l.querySelector(\"[autofocus]\"))g(l,document.activeElement,!0);function v(c){if(!r.value||!l)return;let m=c.target||document.body;if(l.contains(m))return;c.preventDefault(),c.stopImmediatePropagation(),g(l,m)}function L(c){if(!r.value||!l)return;if(!c.relatedTarget||c.relatedTarget===document.body)c.preventDefault(),l.focus();let m=c.target||document.body;if(l.contains(m))return;g(l,m)}if(u.addEventListener(\"focusin\",v,{capture:!0}),u.addEventListener(\"focusout\",L,{capture:!0}),l){let c=d(l),m=c.findIndex((T)=>T.classList.contains(\"is-active\")),h=c.findIndex((T)=>!T.hasAttribute(\"aria-disabled\")),y=c[0];if(m>-1)y=c[m];if(h>-1)y=c[h];if(y)y.focus()}f(()=>{u.removeEventListener(\"focusin\",v),u.removeEventListener(\"focusout\",L)})},{immediate:!0}),le(()=>n,()=>{let a=p(e);if(r.value=!n,n||!a)return;let i=d(a);if(i.includes(document.activeElement))return;i[0]?.focus()},{immediate:!0})}import{onMounted as at,onUnmounted as it,ref as ct}from\"vue\";function pe(e){let t=ct(null);at(()=>t.value=w.subscribe(e)),it(()=>t.value?.())}import{watch as lt}from\"vue\";function ue(e,{cycle:t=!0,direction:n=\"bidirectional\"}={}){H(e,()=>s(o(),!1));function o(){let a=p(e),i=d(a),f=i.findIndex((u)=>u.classList.contains(\"is-active\")),l=i.findIndex((u)=>!u.hasAttribute(\"aria-disabled\"));if(f>-1)return f;if(l>-1)return l;return 0}function s(a,i=!0){let f=p(e),l=d(f);l.forEach((u,v)=>u.tabIndex=v===a?0:-1),i&&l[a]?.focus()}function r(a){let i=p(e),f=d(i);if([\"Enter\",\" \"].includes(a.key))return;switch(n){case\"bidirectional\":ft(a,i,f,s);break;case\"horizontal\":case\"vertical\":pt(a,i,t,n,f,s);break}}lt(e,(a,i,f)=>{let l=p(e);if(!l)return;l.addEventListener(\"keydown\",r),s(o(),!1),f(()=>l.removeEventListener(\"keydown\",r))},{immediate:!0})}function ft(e,t,n,o){let s;switch(e.key){case\"ArrowUp\":s=\"up\";break;case\"ArrowDown\":s=\"down\";break;case\"ArrowLeft\":s=\"left\";break;case\"ArrowRight\":s=\"right\";break;default:return}let r=M(t,document.activeElement,s);if(r)o(n.indexOf(r));e.preventDefault()}function pt(e,t,n,o,s,r){let a;if(e.key===(o===\"horizontal\"?\"ArrowLeft\":\"ArrowUp\"))a=-1;else if(e.key===(o===\"horizontal\"?\"ArrowRight\":\"ArrowDown\"))a=1;else return;let i=R(t,a);if(i)r(s.indexOf(i));else if(n)r(a===1?0:s.length-1);e.preventDefault()}var mn=\"#f8fafc\",xn=\"#f1f5f9\",bn=\"#e2e8f0\",hn=\"#cbd5e1\",yn=\"#94a3b8\",Tn=\"#64748b\",vn=\"#475569\",En=\"#334155\",gn=\"#1e293b\",wn=\"#0f172a\",Ln=\"#020617\",Mn=\"#f9fafb\",Rn=\"#f3f4f6\",Fn=\"#e5e7eb\",kn=\"#d1d5db\",Hn=\"#9ca3af\",Dn=\"#6b7280\",Sn=\"#4b5563\",An=\"#374151\",On=\"#1f2937\",In=\"#111827\",Cn=\"#030712\",_n=\"#fafafa\",Nn=\"#f4f4f5\",Un=\"#e4e4e7\",Pn=\"#d4d4d8\",zn=\"#a1a1aa\",Kn=\"#71717a\",Bn=\"#52525b\",Vn=\"#3f3f46\",qn=\"#27272a\",Wn=\"#18181b\",Gn=\"#09090b\",Xn=\"#fafafa\",Yn=\"#f5f5f5\",jn=\"#e5e5e5\",Zn=\"#d4d4d4\",$n=\"#a3a3a3\",Jn=\"#737373\",Qn=\"#525252\",er=\"#404040\",tr=\"#262626\",or=\"#171717\",nr=\"#0a0a0a\",rr=\"#fafaf9\",sr=\"#f5f5f4\",ar=\"#e7e5e4\",ir=\"#d6d3d1\",cr=\"#a8a29e\",lr=\"#78716c\",fr=\"#57534e\",pr=\"#44403c\",ur=\"#292524\",dr=\"#1c1917\",mr=\"#0c0a09\",xr=\"#fef2f2\",br=\"#fee2e2\",hr=\"#fecaca\",yr=\"#fca5a5\",Tr=\"#f87171\",vr=\"#ef4444\",Er=\"#dc2626\",gr=\"#b91c1c\",wr=\"#991b1b\",Lr=\"#7f1d1d\",Mr=\"#450a0a\",Rr=\"#fff7ed\",Fr=\"#ffedd5\",kr=\"#fed7aa\",Hr=\"#fdba74\",Dr=\"#fb923c\",Sr=\"#f97316\",Ar=\"#ea580c\",Or=\"#c2410c\",Ir=\"#9a3412\",Cr=\"#7c2d12\",_r=\"#431407\",Nr=\"#fffbeb\",Ur=\"#fef3c7\",Pr=\"#fde68a\",zr=\"#fcd34d\",Kr=\"#fbbf24\",Br=\"#f59e0b\",Vr=\"#d97706\",qr=\"#b45309\",Wr=\"#92400e\",Gr=\"#78350f\",Xr=\"#451a03\",Yr=\"#fefce8\",jr=\"#fef9c3\",Zr=\"#fef08a\",$r=\"#fde047\",Jr=\"#facc15\",Qr=\"#eab308\",es=\"#ca8a04\",ts=\"#a16207\",os=\"#854d0e\",ns=\"#713f12\",rs=\"#422006\",ss=\"#f7fee7\",as=\"#ecfccb\",is=\"#d9f99d\",cs=\"#bef264\",ls=\"#a3e635\",fs=\"#84cc16\",ps=\"#65a30d\",us=\"#4d7c0f\",ds=\"#3f6212\",ms=\"#365314\",xs=\"#1a2e05\",bs=\"#f0fdf4\",hs=\"#dcfce7\",ys=\"#bbf7d0\",Ts=\"#86efac\",vs=\"#4ade80\",Es=\"#22c55e\",gs=\"#16a34a\",ws=\"#15803d\",Ls=\"#166534\",Ms=\"#14532d\",Rs=\"#052e16\",Fs=\"#ecfdf5\",ks=\"#d1fae5\",Hs=\"#a7f3d0\",Ds=\"#6ee7b7\",Ss=\"#34d399\",As=\"#10b981\",Os=\"#059669\",Is=\"#047857\",Cs=\"#065f46\",_s=\"#064e3b\",Ns=\"#022c22\",Us=\"#f0fdfa\",Ps=\"#ccfbf1\",zs=\"#99f6e4\",Ks=\"#5eead4\",Bs=\"#2dd4bf\",Vs=\"#14b8a6\",qs=\"#0d9488\",Ws=\"#0f766e\",Gs=\"#115e59\",Xs=\"#134e4a\",Ys=\"#042f2e\",js=\"#ecfeff\",Zs=\"#cffafe\",$s=\"#a5f3fc\",Js=\"#67e8f9\",Qs=\"#22d3ee\",ea=\"#06b6d4\",ta=\"#0891b2\",oa=\"#0e7490\",na=\"#155e75\",ra=\"#164e63\",sa=\"#083344\",aa=\"#f0f9ff\",ia=\"#e0f2fe\",ca=\"#bae6fd\",la=\"#7dd3fc\",fa=\"#38bdf8\",pa=\"#0ea5e9\",ua=\"#0284c7\",da=\"#0369a1\",ma=\"#075985\",xa=\"#0c4a6e\",ba=\"#082f49\",ha=\"#eff6ff\",ya=\"#dbeafe\",Ta=\"#bfdbfe\",va=\"#93c5fd\",Ea=\"#60a5fa\",ga=\"#3b82f6\",wa=\"#2563eb\",La=\"#1d4ed8\",Ma=\"#1e40af\",Ra=\"#1e3a8a\",Fa=\"#172554\",ka=\"#eef2ff\",Ha=\"#e0e7ff\",Da=\"#c7d2fe\",Sa=\"#a5b4fc\",Aa=\"#818cf8\",Oa=\"#6366f1\",Ia=\"#4f46e5\",Ca=\"#4338ca\",_a=\"#3730a3\",Na=\"#312e81\",Ua=\"#1e1b4b\",Pa=\"#f5f3ff\",za=\"#ede9fe\",Ka=\"#ddd6fe\",Ba=\"#c4b5fd\",Va=\"#a78bfa\",qa=\"#8b5cf6\",Wa=\"#7c3aed\",Ga=\"#6d28d9\",Xa=\"#5b21b6\",Ya=\"#4c1d95\",ja=\"#2e1065\",Za=\"#faf5ff\",$a=\"#f3e8ff\",Ja=\"#e9d5ff\",Qa=\"#d8b4fe\",ei=\"#c084fc\",ti=\"#a855f7\",oi=\"#9333ea\",ni=\"#7e22ce\",ri=\"#6b21a8\",si=\"#581c87\",ai=\"#3b0764\",ii=\"#fdf4ff\",ci=\"#fae8ff\",li=\"#f5d0fe\",fi=\"#f0abfc\",pi=\"#e879f9\",ui=\"#d946ef\",di=\"#c026d3\",mi=\"#a21caf\",xi=\"#86198f\",bi=\"#701a75\",hi=\"#4a044e\",yi=\"#fdf2f8\",Ti=\"#fce7f3\",vi=\"#fbcfe8\",Ei=\"#f9a8d4\",gi=\"#f472b6\",wi=\"#ec4899\",Li=\"#db2777\",Mi=\"#be185d\",Ri=\"#9d174d\",Fi=\"#831843\",ki=\"#500724\",Hi=\"#fff1f2\",Di=\"#ffe4e6\",Si=\"#fecdd3\",Ai=\"#fda4af\",Oi=\"#fb7185\",Ii=\"#f43f5e\",Ci=\"#e11d48\",_i=\"#be123c\",Ni=\"#9f1239\",Ui=\"#881337\",Pi=\"#4c0519\";class de{#t;#e;constructor(e){this.#e=[],this.#t=e,this.onKeyDown=this.onKeyDown.bind(this)}focusElement(e,t=!0){if(!this.#e[e])return;for(let n=0;n<this.#e.length;++n)this.#e[n].tabIndex=n===e?0:-1;if(t)this.#e[e]?.focus()}register(){this.#e=F(this.#t),this.#t.addEventListener(\"keydown\",this.onKeyDown),this.focusElement(0,!1)}unregister(){this.#t.removeEventListener(\"keydown\",this.onKeyDown)}onKeyDown(e){let t=this.#t.querySelector('[tabindex=\"0\"]'),n=this.#e.findIndex((o)=>o===t)??0;switch(e.key){case\"ArrowUp\":case\"ArrowLeft\":this.focusElement(n-1);break;case\"ArrowDown\":case\"ArrowRight\":this.focusElement(n+1);break;default:return}e.preventDefault(),e.stopPropagation()}}var ut={beforeUnmount(e){I.get(e)?.unregister(),I.delete(e)},mounted(e){let t=new de(e);t.register(),I.set(e,t)},getSSRProps(){return{}}},I=new WeakMap;class me{#t;#e;constructor(e){this.#t=e,this.#e=new MutationObserver(this.onMutation.bind(this))}register(){this.#e.observe(this.#t,{childList:!0,subtree:!0}),requestAnimationFrame(this.onMutation.bind(this))}unregister(){this.#e.disconnect()}onMutation(){let{height:e}=getComputedStyle(this.#t);this.#t.style.height=\"auto\";let{height:t}=getComputedStyle(this.#t);if(this.#t.style.height=e,t===e)return;getComputedStyle(this.#t),requestAnimationFrame(()=>requestAnimationFrame(()=>this.#t.style.height=t))}}var dt={beforeUnmount(e){C.get(e)?.unregister(),C.delete(e)},mounted(e){let t=new me(e);t.register(),C.set(e,t)},getSSRProps(){return{}}},C=new WeakMap;export{Gn as zinc950,Wn as zinc900,qn as zinc800,Vn as zinc700,Bn as zinc600,Kn as zinc500,_n as zinc50,zn as zinc400,Pn as zinc300,Un as zinc200,Nn as zinc100,rs as yellow950,ns as yellow900,os as yellow800,ts as yellow700,es as yellow600,Qr as yellow500,Yr as yellow50,Jr as yellow400,$r as yellow300,Zr as yellow200,jr as yellow100,g as wrapFocus,G as warn,ja as violet950,Ya as violet900,Xa as violet800,Ga as violet700,Wa as violet600,qa as violet500,Pa as violet50,Va as violet400,Ba as violet300,Ka as violet200,za as violet100,dt as vHeightTransition,ut as vFocusTrap,se as useScrollPosition,re as useResizeObserver,ne as useRemembered,H as useMutationObserver,ee as useInterval,te as useInView,ue as useFocusZone,pe as useFocusTrapSubscription,S as useFocusTrapReturn,D as useFocusTrapLock,fe as useFocusTrap,k as useEventListener,Q as useDebouncedRef,$ as useComponentId,Z as useClickOutside,z as useCalendarYearSwitcher,U as useCalendarMonthSwitcher,N as useCalendar,p as unrefTemplateElement,Ys as teal950,Xs as teal900,Gs as teal800,Ws as teal700,qs as teal600,Vs as teal500,Us as teal50,Bs as teal400,Ks as teal300,zs as teal200,Ps as teal100,mr as stone950,dr as stone900,ur as stone800,pr as stone700,fr as stone600,lr as stone500,rr as stone50,cr as stone400,ir as stone300,ar as stone200,sr as stone100,Ln as slate950,wn as slate900,gn as slate800,En as slate700,vn as slate600,Tn as slate500,mn as slate50,yn as slate400,hn as slate300,bn as slate200,xn as slate100,ba as sky950,xa as sky900,ma as sky800,da as sky700,ua as sky600,pa as sky500,aa as sky50,fa as sky400,la as sky300,ca as sky200,ia as sky100,Pi as rose950,Ui as rose900,Ni as rose800,_i as rose700,Ci as rose600,Ii as rose500,Hi as rose50,Oi as rose400,Ai as rose300,Si as rose200,Di as rose100,Mr as red950,Lr as red900,wr as red800,gr as red700,Er as red600,vr as red500,xr as red50,Tr as red400,yr as red300,hr as red200,br as red100,ai as purple950,si as purple900,ri as purple800,ni as purple700,oi as purple600,ti as purple500,Za as purple50,ei as purple400,Qa as purple300,Ja as purple200,$a as purple100,ki as pink950,Fi as pink900,Ri as pink800,Mi as pink700,Li as pink600,wi as pink500,yi as pink50,gi as pink400,Ei as pink300,vi as pink200,Ti as pink100,_r as orange950,Cr as orange900,Ir as orange800,Or as orange700,Ar as orange600,Sr as orange500,Rr as orange50,Dr as orange400,Hr as orange300,kr as orange200,Fr as orange100,nr as neutral950,or as neutral900,tr as neutral800,er as neutral700,Qn as neutral600,Jn as neutral500,Xn as neutral50,$n as neutral400,Zn as neutral300,jn as neutral200,Yn as neutral100,xs as lime950,ms as lime900,ds as lime800,us as lime700,ps as lime600,fs as lime500,ss as lime50,ls as lime400,cs as lime300,is as lime200,as as lime100,Y as isSSR,Ua as indigo950,Na as indigo900,_a as indigo800,Ca as indigo700,Ia as indigo600,Oa as indigo500,ka as indigo50,Aa as indigo400,Sa as indigo300,Da as indigo200,Ha as indigo100,Rs as green950,Ms as green900,Ls as green800,ws as green700,gs as green600,Es as green500,bs as green50,vs as green400,Ts as green300,ys as green200,hs as green100,Cn as gray950,In as gray900,On as gray800,An as gray700,Sn as gray600,Dn as gray500,Mn as gray50,Hn as gray400,kn as gray300,Fn as gray200,Rn as gray100,F as getKeyboardFocusableElements,d as getFocusableElements,R as getFocusableElement,W as getExposedRef,q as getComponentProps,V as getComponentName,M as getBidirectionalFocusElement,hi as fuchsia950,bi as fuchsia900,xi as fuchsia800,mi as fuchsia700,di as fuchsia600,ui as fuchsia500,ii as fuchsia50,pi as fuchsia400,fi as fuchsia300,li as fuchsia200,ci as fuchsia100,B as flattenVNodeTree,Ns as emerald950,_s as emerald900,Cs as emerald800,Is as emerald700,Os as emerald600,As as emerald500,Fs as emerald50,Ss as emerald400,Ds as emerald300,Hs as emerald200,ks as emerald100,sa as cyan950,ra as cyan900,na as cyan800,oa as cyan700,ta as cyan600,ea as cyan500,js as cyan50,Qs as cyan400,Js as cyan300,$s as cyan200,Zs as cyan100,Fa as blue950,Ra as blue900,Ma as blue800,La as blue700,wa as blue600,ga as blue500,ha as blue50,Ea as blue400,va as blue300,Ta as blue200,ya as blue100,K as animationFrameDebounce,Xr as amber950,Gr as amber900,Wr as amber800,qr as amber700,Vr as amber600,Br as amber500,Nr as amber50,Kr as amber400,zr as amber300,Pr as amber200,Ur as amber100,w as FOCUS_TRAP_LOCKS};\n\n//# debugId=268DAB00C325BD2764756E2164756E21\n//# sourceMappingURL=index.js.map\n","import type { InjectionKey, Ref } from 'vue';\n\nexport const FluxDashboardInjectionKey: InjectionKey<FluxDashboardInjection> = Symbol();\n\nexport type FluxDashboardInjection = {\n readonly isMenuCollapsed: Ref<boolean>;\n readonly isNavigationCollapsed: Ref<boolean>;\n};\n","@use '../../../../components/src/css/mixin';\n\n:root {\n --dashboard-background: var(--gray-25);\n --dashboard-duration: 360ms;\n --dashboard-navigation-background: var(--primary-950);\n --dashboard-navigation-foreground: var(--primary-25);\n}\n\n[dark] {\n --dashboard-navigation-background: color-mix(in srgb, var(--gray-25), black 25%);\n --dashboard-navigation-foreground: var(--gray-800);\n}\n\nbody:has(.root > .dashboard) {\n background: var(--dashboard-background);\n}\n\n.dashboard {\n min-height: 100dvh;\n}\n\n.dashboardMount {\n display: flex;\n align-items: stretch;\n flex-flow: column;\n}\n\n.isResizing, .isResizing * {\n animation: none !important;\n transition: none !important;\n}\n\n@include mixin.breakpoint-up(lg) {\n .dashboard {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n grid-template-rows: minmax(0, 1fr);\n transition: padding-left var(--dashboard-duration) var(--swift-out);\n\n &:has(> .dashboardNavigation) {\n padding-left: 300px;\n }\n\n &:has(> .dashboardNavigationCollapsed) {\n padding-left: 84px;\n }\n\n .dashboardMount {\n grid-column: 2;\n }\n\n .dashboardMenu {\n grid-column: 1;\n }\n\n .dashboardSide {\n grid-column: 3;\n }\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboard {\n display: flex;\n padding-top: 84px;\n flex-flow: column;\n }\n}\n","<template>\n <div :class=\"[$style.dashboard, isResizing && $style.isResizing]\">\n <slot name=\"navigation\"/>\n <slot name=\"menu\"/>\n\n <div :class=\"$style.dashboardMount\">\n <slot name=\"header\"/>\n <slot/>\n </div>\n\n <slot name=\"side\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useRemembered } from '@flux-ui/internals';\n import { provide, ref, type VNode, watch } from 'vue';\n import { FluxDashboardInjectionKey } from '$fluxDashboard/data';\n import $style from '$fluxDashboard/css/component/Dashboard.module.scss';\n\n defineSlots<{\n default(): VNode;\n header?(): VNode;\n navigation?(): VNode;\n menu?(): VNode;\n side?(): VNode;\n }>();\n\n const isMenuCollapsed = useRemembered('dashboard-menu-collapsed', true);\n const isNavigationCollapsed = useRemembered('dashboard-navigation-collapsed', true);\n const isResizing = ref(false);\n\n provide(FluxDashboardInjectionKey, {\n isMenuCollapsed,\n isNavigationCollapsed\n });\n\n watch(isNavigationCollapsed, (_, __, onCleanup) => {\n let timeout: any;\n\n function onResize(): void {\n clearTimeout(timeout);\n isResizing.value = true;\n timeout = setTimeout(() => isResizing.value = false, 10);\n }\n\n window.addEventListener('resize', onResize, {passive: true});\n\n onCleanup(() => window.removeEventListener('resize', onResize));\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"[$style.dashboard, isResizing && $style.isResizing]\">\n <slot name=\"navigation\"/>\n <slot name=\"menu\"/>\n\n <div :class=\"$style.dashboardMount\">\n <slot name=\"header\"/>\n <slot/>\n </div>\n\n <slot name=\"side\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useRemembered } from '@flux-ui/internals';\n import { provide, ref, type VNode, watch } from 'vue';\n import { FluxDashboardInjectionKey } from '$fluxDashboard/data';\n import $style from '$fluxDashboard/css/component/Dashboard.module.scss';\n\n defineSlots<{\n default(): VNode;\n header?(): VNode;\n navigation?(): VNode;\n menu?(): VNode;\n side?(): VNode;\n }>();\n\n const isMenuCollapsed = useRemembered('dashboard-menu-collapsed', true);\n const isNavigationCollapsed = useRemembered('dashboard-navigation-collapsed', true);\n const isResizing = ref(false);\n\n provide(FluxDashboardInjectionKey, {\n isMenuCollapsed,\n isNavigationCollapsed\n });\n\n watch(isNavigationCollapsed, (_, __, onCleanup) => {\n let timeout: any;\n\n function onResize(): void {\n clearTimeout(timeout);\n isResizing.value = true;\n timeout = setTimeout(() => isResizing.value = false, 10);\n }\n\n window.addEventListener('resize', onResize, {passive: true});\n\n onCleanup(() => window.removeEventListener('resize', onResize));\n }, {immediate: true});\n</script>\n","import { inject } from 'vue';\nimport { type FluxDashboardInjection, FluxDashboardInjectionKey } from '$fluxDashboard/data';\n\nexport default function (): FluxDashboardInjection {\n const injection = inject(FluxDashboardInjectionKey);\n\n if (!injection) {\n throw new Error('[Flux] useDashboardInjection() was used outside a FluxDashboard component.');\n }\n\n return injection;\n}\n","@use '../../../../components/src/css/mixin';\n\n.notice + .dashboardContent {\n padding-top: 30px;\n}\n\n.dashboardContent {\n display: flex;\n padding: 0 30px;\n flex-flow: column;\n flex-grow: 1;\n\n > :is(.calendar, .table) {\n margin-left: -30px;\n margin-right: -30px;\n height: calc(100dvh - 84px);\n flex-grow: 1;\n }\n\n > .calendar {\n border-left: 0;\n border-right: 0;\n border-radius: 0;\n\n .calendarActions {\n padding-left: 30px;\n padding-right: 30px;\n }\n }\n\n > .table {\n border-top: 1px solid var(--surface-stroke);\n\n .tableCell:first-child .tableCellContent {\n padding-left: 30px;\n }\n\n .tableCell:last-child .tableCellContent {\n padding-right: 30px;\n }\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboardContentCollapsed {\n display: none;\n }\n}\n","<template>\n <main :class=\"[$style.dashboardContent, !isMenuCollapsed && $style.dashboardContentCollapsed]\">\n <slot/>\n </main>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardContent.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <main :class=\"[$style.dashboardContent, !isMenuCollapsed && $style.dashboardContentCollapsed]\">\n <slot/>\n </main>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardContent.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","@use '../../../../components/src/css/mixin';\n\n.dashboardTopBar {\n position: sticky;\n display: flex;\n top: 0;\n height: 84px;\n padding-left: 30px;\n padding-right: 30px;\n align-items: center;\n flex-flow: row;\n gap: 15px;\n background: rgb(from var(--gray-25) r g b / .9);\n backdrop-filter: blur(10px) saturate(180%);\n z-index: 100;\n\n > h1 {\n font-size: 18px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n > .icon {\n color: var(--foreground-prominent);\n }\n\n > .separator {\n height: 24px;\n }\n}\n\n.dashboardHeader:not(.routeTransitionEnterActive):not(.routeTransitionLeaveActive) {\n transition: box-shadow var(--dashboard-duration) var(--swift-out);\n}\n\n.dashboardHeaderScrolled {\n composes: dashboardHeader;\n\n box-shadow: var(--shadow-md);\n}\n\n[dark] .dashboardHeaderScrolled {\n box-shadow: 0 1px 0 var(--gray-50), var(--shadow-md);\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboard > .dashboardTopBar {\n top: 84px;\n }\n\n .dashboard > .dashboardTopBarCollapsed {\n display: none;\n }\n}\n","<template>\n <header :class=\"[$style.dashboardTopBar, !isMenuCollapsed && $style.dashboardTopBarCollapsed]\">\n <slot/>\n </header>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardTopBar.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <header :class=\"[$style.dashboardTopBar, !isMenuCollapsed && $style.dashboardTopBarCollapsed]\">\n <slot/>\n </header>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardTopBar.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <FluxDashboardTopBar :class=\"y > 0 ? $style.dashboardHeaderScrolled : $style.dashboardHeader\">\n <slot name=\"start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"end\"/>\n </FluxDashboardTopBar>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import { useScrollPosition } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardTopBar.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {y} = useScrollPosition();\n</script>\n","<template>\n <FluxDashboardTopBar :class=\"y > 0 ? $style.dashboardHeaderScrolled : $style.dashboardHeader\">\n <slot name=\"start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"end\"/>\n </FluxDashboardTopBar>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import { useScrollPosition } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardTopBar.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {y} = useScrollPosition();\n</script>\n","@use '../../../../components/src/css/mixin';\n\n.dashboardPane {\n background: var(--gray-50);\n overflow: auto;\n z-index: 200;\n\n .menuSubHeader {\n background: linear-gradient(to bottom, var(--gray-50) 75%, transparent);\n }\n\n .dashboardTopBar {\n background: rgb(from var(--gray-50) r g b / .9);\n }\n\n .filter {\n --background: var(--gray-50);\n\n max-height: calc(100dvh - 84px);\n margin-top: -9px;\n padding: 9px 18px 18px;\n width: 100%;\n\n .filterHeader {\n margin-left: -18px;\n margin-right: -18px;\n padding-left: 18px;\n padding-right: 18px;\n }\n\n .menu {\n font-size: 14px;\n }\n\n .menuItemCommand {\n font-size: 12px;\n }\n\n .menuItemIcon {\n font-size: 16px;\n }\n\n .menu > :where(.divider, .separator) {\n margin-left: -18px;\n margin-right: -18px;\n }\n }\n}\n\n.dashboardMenu {\n composes: dashboardPane;\n\n border-right: 1px solid var(--surface-stroke);\n}\n\n.dashboardMenuBody {\n padding: 0 18px 30px;\n}\n\n.dashboardSide {\n composes: dashboardPane;\n\n border-left: 1px solid var(--surface-stroke);\n}\n\n@include mixin.breakpoint-up(lg) {\n .dashboardPane {\n position: sticky;\n top: 0;\n height: 100dvh;\n width: 300px;\n grid-row: 1 / span 2;\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboardMenu {\n height: calc(100dvh - 84px);\n }\n\n .dashboardMenuCollapsed {\n display: none;\n }\n}\n","<template>\n <aside :class=\"[$style.dashboardMenu, isMenuCollapsed && $style.dashboardMenuCollapsed]\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <div :class=\"$style.dashboardMenuBody\">\n <slot/>\n </div>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import type { FluxIconName } from '@flux-ui/types';\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <aside :class=\"[$style.dashboardMenu, isMenuCollapsed && $style.dashboardMenuCollapsed]\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <div :class=\"$style.dashboardMenuBody\">\n <slot/>\n </div>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import type { FluxIconName } from '@flux-ui/types';\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","@use '../../../../components/src/css/mixin';\n\n.dashboardNavigation {\n position: fixed;\n display: flex;\n top: 0;\n left: 0;\n background: var(--dashboard-navigation-background);\n color: var(--dashboard-navigation-foreground);\n z-index: 750;\n\n .divider {\n margin: 3px 15px;\n }\n\n .dividerLine {\n background: var(--primary-900);\n }\n\n .menu {\n flex-grow: 1;\n }\n\n .menuItem {\n height: 54px;\n min-width: 54px;\n padding: 15px;\n gap: 21px;\n color: var(--dashboard-navigation-foreground);\n overflow: hidden;\n\n @media (hover: hover) {\n &:hover {\n background: var(--primary-900);\n }\n }\n\n &:active {\n background: var(--primary-800);\n }\n }\n\n .menuItemHighlighted {\n background: var(--primary-900);\n }\n\n .menuItemIcon {\n color: var(--dashboard-navigation-foreground);\n font-size: 24px;\n }\n\n .menuItemLabel {\n transition: var(--dashboard-duration) var(--swift-out);\n transition-property: filter, opacity, translate;\n white-space: nowrap;\n }\n}\n\n.dashboardNavigationCollapsed {\n composes: dashboardNavigation;\n}\n\n[dark] .dashboardNavigation {\n .dividerLine {\n background: var(--gray-100);\n }\n\n .menuItem {\n @media (hover: hover) {\n &:hover {\n background: var(--gray-100);\n }\n }\n\n &:active {\n background: var(--gray-200);\n }\n }\n\n .menuItemHighlighted {\n background: var(--gray-50);\n }\n}\n\n.dashboardNavigationLogo {\n display: flex;\n height: 54px;\n width: 54px;\n align-items: center;\n justify-content: center;\n\n :is(svg) {\n max-height: 48px;\n max-width: 48px;\n width: 100%;\n }\n}\n\n.dashboardNavigationRoundingFix {\n position: absolute;\n display: block;\n height: var(--radius);\n width: var(--radius);\n content: '';\n background: var(--dashboard-navigation-background);\n transition: left var(--dashboard-duration) var(--swift-out);\n\n &::before {\n position: absolute;\n display: block;\n inset: 0;\n content: '';\n background: var(--gray-50);\n }\n}\n\n.dashboard:not(:has(.dashboardMenu)) .dashboardNavigationRoundingFix::before {\n background: var(--gray-25);\n}\n\n@include mixin.breakpoint-up(lg) {\n .dashboardNavigation {\n height: 100dvh;\n width: 300px;\n padding: 15px;\n flex-flow: column;\n gap: 15px;\n transition: width var(--dashboard-duration) var(--swift-out);\n }\n\n .dashboardNavigationCollapsed {\n width: 84px;\n\n .menuItemLabel {\n filter: blur(6px);\n opacity: 0;\n translate: -12px 0;\n }\n }\n\n .dashboardNavigationHeader {\n display: flex;\n\n .menuItem {\n display: none;\n }\n }\n\n .dashboardNavigationNav {\n display: flex;\n flex-flow: column;\n flex-grow: 1;\n }\n\n .dashboardNavigationRoundingFix {\n left: 100%;\n\n &:first-of-type {\n top: 0;\n\n &::before {\n border-top-left-radius: var(--radius);\n }\n }\n\n &:not(:first-of-type) {\n bottom: 0;\n\n &::before {\n border-bottom-left-radius: var(--radius);\n }\n }\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboardNavigation {\n width: 100dvw;\n height: 84px;\n\n &::after {\n position: fixed;\n display: block;\n inset: 0;\n width: 100dvw;\n height: 100dvh;\n content: '';\n background: rgb(from var(--gray-200) r g b / .5);\n backdrop-filter: blur(3px) saturate(180%);\n transition: var(--dashboard-duration) var(--swift-out);\n transition-property: background, backdrop-filter;\n z-index: 1900;\n }\n }\n\n .dashboardNavigationHeader {\n display: flex;\n width: inherit;\n height: inherit;\n padding: 0 15px;\n align-items: center;\n flex-flow: row;\n justify-content: space-between;\n\n .menuItem {\n align-self: center;\n justify-content: center;\n }\n }\n\n .dashboardNavigationNav {\n position: fixed;\n display: flex;\n top: 0;\n left: 0;\n width: min(300px, calc(100dvw - 42px));\n height: 100dvh;\n padding: 15px;\n flex-flow: column;\n background: var(--dashboard-navigation-background);\n transition: translate var(--dashboard-duration) var(--swift-out);\n z-index: 2000;\n }\n\n .dashboardNavigationRoundingFix {\n position: fixed;\n top: 84px;\n z-index: 750;\n\n &:first-of-type {\n left: 0;\n\n &::before {\n border-top-left-radius: var(--radius);\n }\n }\n\n &:not(:first-of-type) {\n right: 0;\n\n &::before {\n border-top-right-radius: var(--radius);\n }\n }\n }\n\n .dashboardNavigationCollapsed {\n &::after {\n background: transparent;\n backdrop-filter: none;\n pointer-events: none;\n }\n\n .dashboardNavigationNav {\n pointer-events: none;\n translate: -100% 0;\n }\n }\n}\n","<template>\n <nav\n v-bind=\"$attrs\"\n :class=\"isNavigationCollapsed ? $style.dashboardNavigationCollapsed : $style.dashboardNavigation\">\n <header :class=\"$style.dashboardNavigationHeader\">\n <FluxMenuItem\n icon-leading=\"bars\"\n @click=\"isNavigationCollapsed = !isNavigationCollapsed\"/>\n\n <router-link\n v-if=\"slots.logo\"\n :class=\"$style.dashboardNavigationLogo\"\n :to=\"logoLocation || '/'\">\n <slot\n name=\"logo\"\n v-bind=\"{isNavigationCollapsed}\"/>\n </router-link>\n\n <FluxMenuItem\n icon-leading=\"ellipsis-h\"\n @click=\"isMenuCollapsed = !isMenuCollapsed\"/>\n </header>\n\n <div\n v-for=\"index of 2\"\n :key=\"index\"\n :class=\"$style.dashboardNavigationRoundingFix\"/>\n\n <main :class=\"$style.dashboardNavigationNav\">\n <slot/>\n </main>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxMenuItem } from '@flux-ui/components';\n import type { FluxTo } from '@flux-ui/types';\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardNavigation.module.scss';\n\n defineOptions({\n inheritAttrs: false\n });\n\n defineProps<{\n logoLocation?: FluxTo\n }>();\n\n const slots = defineSlots<{\n default(): any;\n logo?(): any;\n }>();\n\n const {\n isMenuCollapsed,\n isNavigationCollapsed\n } = useDashboardInjection();\n</script>\n","<template>\n <nav\n v-bind=\"$attrs\"\n :class=\"isNavigationCollapsed ? $style.dashboardNavigationCollapsed : $style.dashboardNavigation\">\n <header :class=\"$style.dashboardNavigationHeader\">\n <FluxMenuItem\n icon-leading=\"bars\"\n @click=\"isNavigationCollapsed = !isNavigationCollapsed\"/>\n\n <router-link\n v-if=\"slots.logo\"\n :class=\"$style.dashboardNavigationLogo\"\n :to=\"logoLocation || '/'\">\n <slot\n name=\"logo\"\n v-bind=\"{isNavigationCollapsed}\"/>\n </router-link>\n\n <FluxMenuItem\n icon-leading=\"ellipsis-h\"\n @click=\"isMenuCollapsed = !isMenuCollapsed\"/>\n </header>\n\n <div\n v-for=\"index of 2\"\n :key=\"index\"\n :class=\"$style.dashboardNavigationRoundingFix\"/>\n\n <main :class=\"$style.dashboardNavigationNav\">\n <slot/>\n </main>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxMenuItem } from '@flux-ui/components';\n import type { FluxTo } from '@flux-ui/types';\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardNavigation.module.scss';\n\n defineOptions({\n inheritAttrs: false\n });\n\n defineProps<{\n logoLocation?: FluxTo\n }>();\n\n const slots = defineSlots<{\n default(): any;\n logo?(): any;\n }>();\n\n const {\n isMenuCollapsed,\n isNavigationCollapsed\n } = useDashboardInjection();\n</script>\n","<template>\n <aside :class=\"$style.dashboardSide\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <h1>{{ title }}</h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <slot/>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxSpacer } from '@flux-ui/components';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n</script>\n","<template>\n <aside :class=\"$style.dashboardSide\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <h1>{{ title }}</h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <slot/>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxSpacer } from '@flux-ui/components';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n</script>\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flux-ui/dashboard",
|
|
3
3
|
"description": "Contains components to create dashboards with Flux UI.",
|
|
4
|
-
"version": "3.0.0-next.
|
|
4
|
+
"version": "3.0.0-next.24",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"funding": "https://github.com/sponsors/basmilius",
|
|
@@ -51,18 +51,19 @@
|
|
|
51
51
|
"typings": "./dist/index.d.ts",
|
|
52
52
|
"sideEffects": false,
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@flux-ui/components": "3.0.0-next.
|
|
55
|
-
"@flux-ui/internals": "3.0.0-next.
|
|
56
|
-
"vue": "^3.
|
|
54
|
+
"@flux-ui/components": "3.0.0-next.24",
|
|
55
|
+
"@flux-ui/internals": "3.0.0-next.24",
|
|
56
|
+
"vue": "^3.6.0-beta.6"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@basmilius/vite-preset": "^2.
|
|
60
|
-
"@flux-ui/types": "3.0.0-next.
|
|
61
|
-
"@types/node": "^
|
|
62
|
-
"@vitejs/plugin-vue": "^6.0.
|
|
63
|
-
"
|
|
59
|
+
"@basmilius/vite-preset": "^2.24.2",
|
|
60
|
+
"@flux-ui/types": "3.0.0-next.24",
|
|
61
|
+
"@types/node": "^25.3.0",
|
|
62
|
+
"@vitejs/plugin-vue": "^6.0.4",
|
|
63
|
+
"@vue/tsconfig": "^0.8.1",
|
|
64
|
+
"sass-embedded": "^1.97.3",
|
|
64
65
|
"typescript": "^5.9.3",
|
|
65
|
-
"vite": "^8.0.0-beta.
|
|
66
|
-
"vue-tsc": "^3.
|
|
66
|
+
"vite": "^8.0.0-beta.15",
|
|
67
|
+
"vue-tsc": "^3.2.4"
|
|
67
68
|
}
|
|
68
69
|
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
lang="ts"
|
|
17
17
|
setup>
|
|
18
18
|
import { useRemembered } from '@flux-ui/internals';
|
|
19
|
-
import { provide, ref, VNode, watch } from 'vue';
|
|
19
|
+
import { provide, ref, type VNode, watch } from 'vue';
|
|
20
20
|
import { FluxDashboardInjectionKey } from '$fluxDashboard/data';
|
|
21
21
|
import $style from '$fluxDashboard/css/component/Dashboard.module.scss';
|
|
22
22
|
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
watch(isNavigationCollapsed, (_, __, onCleanup) => {
|
|
41
|
-
let timeout:
|
|
41
|
+
let timeout: any;
|
|
42
42
|
|
|
43
43
|
function onResize(): void {
|
|
44
44
|
clearTimeout(timeout);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { inject } from 'vue';
|
|
2
|
-
import { FluxDashboardInjection, FluxDashboardInjectionKey } from '$fluxDashboard/data';
|
|
2
|
+
import { type FluxDashboardInjection, FluxDashboardInjectionKey } from '$fluxDashboard/data';
|
|
3
3
|
|
|
4
4
|
export default function (): FluxDashboardInjection {
|
|
5
5
|
const injection = inject(FluxDashboardInjectionKey);
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
@use '../../../../components/src/css/mixin';
|
|
2
2
|
|
|
3
3
|
:root {
|
|
4
|
-
--dashboard-background: var(--gray-
|
|
4
|
+
--dashboard-background: var(--gray-25);
|
|
5
5
|
--dashboard-duration: 360ms;
|
|
6
|
-
--dashboard-navigation-background: var(--primary-
|
|
7
|
-
--dashboard-navigation-foreground: var(--primary-
|
|
6
|
+
--dashboard-navigation-background: var(--primary-950);
|
|
7
|
+
--dashboard-navigation-foreground: var(--primary-25);
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
[dark] {
|
|
11
|
-
--dashboard-navigation-background: color-mix(in
|
|
12
|
-
--dashboard-navigation-foreground: var(--gray-
|
|
11
|
+
--dashboard-navigation-background: color-mix(in srgb, var(--gray-25), black 25%);
|
|
12
|
+
--dashboard-navigation-foreground: var(--gray-800);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
body:has(.root > .dashboard) {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
.dividerLine {
|
|
17
|
-
background: var(--primary-
|
|
17
|
+
background: var(--primary-900);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
.menu {
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
|
|
32
32
|
@media (hover: hover) {
|
|
33
33
|
&:hover {
|
|
34
|
-
background: var(--primary-
|
|
34
|
+
background: var(--primary-900);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
&:active {
|
|
39
|
-
background: var(--primary-
|
|
39
|
+
background: var(--primary-800);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.menuItemHighlighted {
|
|
44
|
-
background:
|
|
44
|
+
background: var(--primary-900);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
.menuItemIcon {
|
|
@@ -62,23 +62,23 @@
|
|
|
62
62
|
|
|
63
63
|
[dark] .dashboardNavigation {
|
|
64
64
|
.dividerLine {
|
|
65
|
-
background: var(--gray-
|
|
65
|
+
background: var(--gray-100);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
.menuItem {
|
|
69
69
|
@media (hover: hover) {
|
|
70
70
|
&:hover {
|
|
71
|
-
background: var(--gray-
|
|
71
|
+
background: var(--gray-100);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
&:active {
|
|
76
|
-
background: var(--gray-
|
|
76
|
+
background: var(--gray-200);
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
.menuItemHighlighted {
|
|
81
|
-
background: var(--gray-
|
|
81
|
+
background: var(--gray-50);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
|
|
@@ -110,12 +110,12 @@
|
|
|
110
110
|
display: block;
|
|
111
111
|
inset: 0;
|
|
112
112
|
content: '';
|
|
113
|
-
background: var(--gray-
|
|
113
|
+
background: var(--gray-50);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
.dashboard:not(:has(.dashboardMenu)) .dashboardNavigationRoundingFix::before {
|
|
118
|
-
background: var(--gray-
|
|
118
|
+
background: var(--gray-25);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
@include mixin.breakpoint-up(lg) {
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
width: 100dvw;
|
|
186
186
|
height: 100dvh;
|
|
187
187
|
content: '';
|
|
188
|
-
background:
|
|
188
|
+
background: rgb(from var(--gray-200) r g b / .5);
|
|
189
189
|
backdrop-filter: blur(3px) saturate(180%);
|
|
190
190
|
transition: var(--dashboard-duration) var(--swift-out);
|
|
191
191
|
transition-property: background, backdrop-filter;
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
@use '../../../../components/src/css/mixin';
|
|
2
2
|
|
|
3
3
|
.dashboardPane {
|
|
4
|
-
background: var(--gray-
|
|
4
|
+
background: var(--gray-50);
|
|
5
5
|
overflow: auto;
|
|
6
6
|
z-index: 200;
|
|
7
7
|
|
|
8
8
|
.menuSubHeader {
|
|
9
|
-
background: linear-gradient(to bottom, var(--gray-
|
|
9
|
+
background: linear-gradient(to bottom, var(--gray-50) 75%, transparent);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
.dashboardTopBar {
|
|
13
|
-
background:
|
|
13
|
+
background: rgb(from var(--gray-50) r g b / .9);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
.filter {
|
|
17
|
-
--background: var(--gray-
|
|
17
|
+
--background: var(--gray-50);
|
|
18
18
|
|
|
19
19
|
max-height: calc(100dvh - 84px);
|
|
20
20
|
margin-top: -9px;
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
.dashboardMenu {
|
|
51
51
|
composes: dashboardPane;
|
|
52
52
|
|
|
53
|
-
border-right: 1px solid var(--
|
|
53
|
+
border-right: 1px solid var(--surface-stroke);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
.dashboardMenuBody {
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
.dashboardSide {
|
|
61
61
|
composes: dashboardPane;
|
|
62
62
|
|
|
63
|
-
border-left: 1px solid var(--
|
|
63
|
+
border-left: 1px solid var(--surface-stroke);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
@include mixin.breakpoint-up(lg) {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
align-items: center;
|
|
11
11
|
flex-flow: row;
|
|
12
12
|
gap: 15px;
|
|
13
|
-
background:
|
|
13
|
+
background: rgb(from var(--gray-25) r g b / .9);
|
|
14
14
|
backdrop-filter: blur(10px) saturate(180%);
|
|
15
15
|
z-index: 100;
|
|
16
16
|
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
[dark] .dashboardHeaderScrolled {
|
|
44
|
-
box-shadow: 0 1px 0 var(--gray-
|
|
44
|
+
box-shadow: 0 1px 0 var(--gray-50), var(--shadow-md);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
@include mixin.breakpoint-down(md) {
|
package/tsconfig.json
CHANGED
|
@@ -1,45 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"target": "esnext",
|
|
4
|
-
"useDefineForClassFields": true,
|
|
5
|
-
"module": "esnext",
|
|
6
|
-
"moduleResolution": "bundler",
|
|
7
|
-
"strict": true,
|
|
8
|
-
"jsx": "preserve",
|
|
9
|
-
"resolveJsonModule": true,
|
|
10
|
-
"isolatedModules": true,
|
|
11
|
-
"esModuleInterop": true,
|
|
12
|
-
"lib": [
|
|
13
|
-
"esnext",
|
|
14
|
-
"dom"
|
|
15
|
-
],
|
|
16
|
-
"skipLibCheck": true,
|
|
17
|
-
"allowSyntheticDefaultImports": true,
|
|
18
|
-
"declaration": true,
|
|
19
|
-
"declarationMap": true,
|
|
20
|
-
"emitDeclarationOnly": true,
|
|
21
|
-
"outDir": "dist",
|
|
22
|
-
"baseUrl": ".",
|
|
23
|
-
"rootDir": "./src",
|
|
24
|
-
"paths": {
|
|
25
|
-
"$fluxDashboard/*": ["src/*"]
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
"include": [
|
|
29
|
-
"./src/**/*.ts",
|
|
30
|
-
"./src/**/*.vue"
|
|
31
|
-
],
|
|
32
|
-
"exclude": [
|
|
33
|
-
"dist",
|
|
34
|
-
"node_modules"
|
|
35
|
-
],
|
|
2
|
+
"files": [],
|
|
36
3
|
"references": [
|
|
37
|
-
{
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
],
|
|
41
|
-
"vueCompilerOptions": {
|
|
42
|
-
"target": 3.5,
|
|
43
|
-
"strictTemplates": false
|
|
44
|
-
}
|
|
4
|
+
{ "path": "./tsconfig.app.json" },
|
|
5
|
+
{ "path": "./tsconfig.node.json" }
|
|
6
|
+
]
|
|
45
7
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FluxDashboard.vue.d.ts","sourceRoot":"","sources":["../../src/component/FluxDashboard.vue"],"names":[],"mappings":"AAwDI,OAAO,EAAgB,KAAK,EAAS,MAAM,KAAK,CAAC;AAqCrD,iBAAS,cAAc;WA+BT,OAAO,IAA6B;;mBA/D/B,KAAK;mBACL,KAAK;uBACD,KAAK;iBACX,KAAK;iBACL,KAAK;;mBAJH,KAAK;mBACL,KAAK;uBACD,KAAK;iBACX,KAAK;iBACL,KAAK;;;;EAgErB;AASD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe,0RAMnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAEpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FluxDashboardContent.vue.d.ts","sourceRoot":"","sources":["../../src/component/FluxDashboardContent.vue"],"names":[],"mappings":"AAuBA,iBAAS,cAAc;WAuBT,OAAO,IAA6B;;yBAVrB,GAAG;;;;EAe/B;AASD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe,uRAMnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAEpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FluxDashboardHeader.vue.d.ts","sourceRoot":"","sources":["../../src/component/FluxDashboardHeader.vue"],"names":[],"mappings":"AAsCI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD,KAAK,WAAW,GAAG;IACf,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAON,iBAAS,cAAc;WA0DT,OAAO,IAA6B;;uBAXvB,GAAG;qBACJ,GAAG;;;;EAe5B;AAaD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe,0SAOnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FluxDashboardMenu.vue.d.ts","sourceRoot":"","sources":["../../src/component/FluxDashboardMenu.vue"],"names":[],"mappings":"AA2CI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,KAAK,WAAW,GAAG;IACf,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAON,iBAAS,cAAc;WAgET,OAAO,IAA6B;;iCAZb,GAAG;+BACJ,GAAG;yBACT,GAAG;;;;EAehC;AAaD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe,0SAOnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FluxDashboardNavigation.vue.d.ts","sourceRoot":"","sources":["../../src/component/FluxDashboardNavigation.vue"],"names":[],"mappings":"AA+DI,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAQ7C,KAAK,WAAW,GAAG;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB,CAAC;AAeN,iBAAS,cAAc;WAyFT,OAAO,IAA6B;;mBApG/B,GAAG;iBACL,GAAG;;mBADD,GAAG;iBACL,GAAG;;;;EAwGnB;AAYD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe,kSAMnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FluxDashboardSide.vue.d.ts","sourceRoot":"","sources":["../../src/component/FluxDashboardSide.vue"],"names":[],"mappings":"AAiCI,KAAK,WAAW,GAAG;IACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B,CAAC;AAKN,iBAAS,cAAc;WAgDT,OAAO,IAA6B;;iCAZb,GAAG;+BACJ,GAAG;yBACT,GAAG;;;;EAehC;AAWD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe,0SAOnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FluxDashboardTopBar.vue.d.ts","sourceRoot":"","sources":["../../src/component/FluxDashboardTopBar.vue"],"names":[],"mappings":"AAuBA,iBAAS,cAAc;WAuBT,OAAO,IAA6B;;yBAVrB,GAAG;;;;EAe/B;AASD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe,uRAMnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAEpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/component/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDashboardInjection.d.ts","sourceRoot":"","sources":["../../src/composable/useDashboardInjection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAA6B,MAAM,qBAAqB,CAAC;AAExF,MAAM,CAAC,OAAO,cAAc,sBAAsB,CAQjD"}
|
package/dist/data/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE7C,eAAO,MAAM,yBAAyB,EAAE,YAAY,CAAC,sBAAsB,CAAY,CAAC;AAExF,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;CAChD,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
|