@flux-ui/dashboard 3.0.0-next.19 → 3.0.0-next.20

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/index.css CHANGED
@@ -1 +1,425 @@
1
- :root{--dashboard-background:var(--gray-0);--dashboard-duration:.36s;--dashboard-navigation-background:var(--primary-11);--dashboard-navigation-foreground:var(--primary-0)}[dark]{--dashboard-navigation-background:color-mix(in oklch,var(--gray-0),black 25%);--dashboard-navigation-foreground:var(--gray-9)}body:has(.root>.dashboard){background:var(--dashboard-background)}.dashboard{min-height:100dvh}.dashboard-mount{flex-flow:column;align-items:stretch;display:flex}.is-resizing,.is-resizing *{transition:none!important;animation:none!important}@media (min-width:1024px){.dashboard{transition:padding-left var(--dashboard-duration)var(--swift-out);grid-template-rows:minmax(0,1fr);grid-template-columns:auto minmax(0,1fr) auto;display:grid}.dashboard:has(>.dashboard-navigation){padding-left:300px}.dashboard:has(>.dashboard-navigation-collapsed){padding-left:84px}.dashboard .dashboard-mount{grid-column:2}.dashboard .dashboard-menu{grid-column:1}.dashboard .dashboard-side{grid-column:3}}@media (max-width:1023.98px){.dashboard{flex-flow:column;padding-top:84px;display:flex}}.notice+.dashboard-content{padding-top:30px}.dashboard-content{flex-flow:column;flex-grow:1;padding:0 30px;display:flex}.dashboard-content>:is(.calendar,.table){flex-grow:1;height:calc(100dvh - 84px);margin-left:-30px;margin-right:-30px}.dashboard-content>.calendar{border-left:0;border-right:0;border-radius:0}.dashboard-content>.calendar .calendar-actions{padding-left:30px;padding-right:30px}.dashboard-content>.table{border-top:1px solid var(--gray-2)}.dashboard-content>.table .table-cell:first-child .table-cell-content{padding-left:30px}.dashboard-content>.table .table-cell:last-child .table-cell-content{padding-right:30px}@media (max-width:1023.98px){.dashboard-content-collapsed{display:none}}.dashboard-top-bar{background:oklch(from var(--gray-0)l c h/.9);-webkit-backdrop-filter:blur(10px)saturate(180%);backdrop-filter:blur(10px)saturate(180%);z-index:100;flex-flow:row;align-items:center;gap:15px;height:84px;padding-left:30px;padding-right:30px;display:flex;position:sticky;top:0}.dashboard-top-bar>h1{text-overflow:ellipsis;white-space:nowrap;font-size:18px;overflow:hidden}.dashboard-top-bar>.icon{color:var(--foreground-prominent)}.dashboard-top-bar>.separator{height:24px}.dashboard-header:not(.route-transition-enter-active):not(.route-transition-leave-active){transition:box-shadow var(--dashboard-duration)var(--swift-out)}.dashboard-header-scrolled{box-shadow:var(--shadow-md)}[dark] .dashboard-header-scrolled{box-shadow:0 1px 0 var(--gray-1),var(--shadow-md)}@media (max-width:1023.98px){.dashboard>.dashboard-top-bar{top:84px}.dashboard>.dashboard-top-bar-collapsed{display:none}}.dashboard-pane{background:var(--gray-1);z-index:200;overflow:auto}.dashboard-pane .menu-sub-header{background:linear-gradient(to bottom,var(--gray-1)75%,transparent)}.dashboard-pane .dashboard-top-bar{background:oklch(from var(--gray-1)l c h/.9)}.dashboard-pane .filter{--background:var(--gray-1);width:100%;max-height:calc(100dvh - 84px);margin-top:-9px;padding:9px 18px 18px}.dashboard-pane .filter .filter-header{margin-left:-18px;margin-right:-18px;padding-left:18px;padding-right:18px}.dashboard-pane .filter .menu{font-size:14px}.dashboard-pane .filter .menu-item-command{font-size:12px}.dashboard-pane .filter .menu-item-icon{font-size:16px}.dashboard-pane .filter .menu>:where(.divider,.separator){margin-left:-18px;margin-right:-18px}.dashboard-menu{border-right:1px solid var(--gray-2)}.dashboard-menu-body{padding:0 18px 30px}.dashboard-side{border-left:1px solid var(--gray-2)}@media (min-width:1024px){.dashboard-pane{grid-row:1/span 2;width:300px;height:100dvh;position:sticky;top:0}}@media (max-width:1023.98px){.dashboard-menu{height:calc(100dvh - 84px)}.dashboard-menu-collapsed{display:none}}.dashboard-navigation{background:var(--dashboard-navigation-background);color:var(--dashboard-navigation-foreground);z-index:750;display:flex;position:fixed;top:0;left:0}.dashboard-navigation .divider{margin:3px 15px}.dashboard-navigation .divider-line{background:var(--primary-10)}.dashboard-navigation .menu{flex-grow:1}.dashboard-navigation .menu-item{min-width:54px;height:54px;color:var(--dashboard-navigation-foreground);gap:21px;padding:15px;overflow:hidden}@media (hover:hover){.dashboard-navigation .menu-item:hover{background:var(--primary-10)}}.dashboard-navigation .menu-item:active{background:var(--primary-9)}.dashboard-navigation .menu-item-highlighted{background:oklch(from var(--primary-10)l c h/.5)}.dashboard-navigation .menu-item-icon{color:var(--dashboard-navigation-foreground);font-size:24px}.dashboard-navigation .menu-item-label{transition:var(--dashboard-duration)var(--swift-out);white-space:nowrap;transition-property:filter,opacity,translate}[dark] .dashboard-navigation .divider-line{background:var(--gray-2)}@media (hover:hover){[dark] .dashboard-navigation .menu-item:hover{background:var(--gray-2)}}[dark] .dashboard-navigation .menu-item:active{background:var(--gray-3)}[dark] .dashboard-navigation .menu-item-highlighted{background:var(--gray-1)}.dashboard-navigation-logo{justify-content:center;align-items:center;width:54px;height:54px;display:flex}.dashboard-navigation-logo :is(svg){width:100%;max-width:48px;max-height:48px}.dashboard-navigation-rounding-fix{height:var(--radius);width:var(--radius);content:"";background:var(--dashboard-navigation-background);transition:left var(--dashboard-duration)var(--swift-out);display:block;position:absolute}.dashboard-navigation-rounding-fix:before{content:"";background:var(--gray-1);display:block;position:absolute;inset:0}.dashboard:not(:has(.dashboard-menu)) .dashboard-navigation-rounding-fix:before{background:var(--gray-0)}@media (min-width:1024px){.dashboard-navigation{width:300px;height:100dvh;transition:width var(--dashboard-duration)var(--swift-out);flex-flow:column;gap:15px;padding:15px}.dashboard-navigation-collapsed{width:84px}.dashboard-navigation-collapsed .menu-item-label{filter:blur(6px);opacity:0;translate:-12px}.dashboard-navigation-header{display:flex}.dashboard-navigation-header .menu-item{display:none}.dashboard-navigation-nav{flex-flow:column;flex-grow:1;display:flex}.dashboard-navigation-rounding-fix{left:100%}.dashboard-navigation-rounding-fix:first-of-type{top:0}.dashboard-navigation-rounding-fix:first-of-type:before{border-top-left-radius:var(--radius)}.dashboard-navigation-rounding-fix:not(:first-of-type){bottom:0}.dashboard-navigation-rounding-fix:not(:first-of-type):before{border-bottom-left-radius:var(--radius)}}@media (max-width:1023.98px){.dashboard-navigation{width:100dvw;height:84px}.dashboard-navigation:after{content:"";background:oklch(from var(--gray-3)l c h/.5);-webkit-backdrop-filter:blur(3px)saturate(180%);backdrop-filter:blur(3px)saturate(180%);width:100dvw;height:100dvh;transition:var(--dashboard-duration)var(--swift-out);z-index:1900;transition-property:background,-webkit-backdrop-filter,backdrop-filter;display:block;position:fixed;inset:0}.dashboard-navigation-header{width:inherit;height:inherit;flex-flow:row;justify-content:space-between;align-items:center;padding:0 15px;display:flex}.dashboard-navigation-header .menu-item{justify-content:center;align-self:center}.dashboard-navigation-nav{background:var(--dashboard-navigation-background);width:min(300px,100dvw - 42px);height:100dvh;transition:translate var(--dashboard-duration)var(--swift-out);z-index:2000;flex-flow:column;padding:15px;display:flex;position:fixed;top:0;left:0}.dashboard-navigation-rounding-fix{z-index:750;position:fixed;top:84px}.dashboard-navigation-rounding-fix:first-of-type{left:0}.dashboard-navigation-rounding-fix:first-of-type:before{border-top-left-radius:var(--radius)}.dashboard-navigation-rounding-fix:not(:first-of-type){right:0}.dashboard-navigation-rounding-fix:not(:first-of-type):before{border-top-right-radius:var(--radius)}.dashboard-navigation-collapsed:after{-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:none;background:0 0}.dashboard-navigation-collapsed .dashboard-navigation-nav{pointer-events:none;translate:-100%}}
1
+ :root {
2
+ --dashboard-background: var(--gray-0);
3
+ --dashboard-duration: 360ms;
4
+ --dashboard-navigation-background: var(--primary-11);
5
+ --dashboard-navigation-foreground: var(--primary-0);
6
+ }
7
+
8
+ [dark] {
9
+ --dashboard-navigation-background: color-mix(in oklch, var(--gray-0), black 25%);
10
+ --dashboard-navigation-foreground: var(--gray-9);
11
+ }
12
+
13
+ body:has(.root > .dashboard) {
14
+ background: var(--dashboard-background);
15
+ }
16
+
17
+ .dashboard {
18
+ min-height: 100dvh;
19
+ }
20
+
21
+ .dashboard-mount {
22
+ display: flex;
23
+ align-items: stretch;
24
+ flex-flow: column;
25
+ }
26
+
27
+ .is-resizing, .is-resizing * {
28
+ animation: none !important;
29
+ transition: none !important;
30
+ }
31
+
32
+ @media (min-width: 1024px) {
33
+ .dashboard {
34
+ display: grid;
35
+ grid-template-columns: auto minmax(0, 1fr) auto;
36
+ grid-template-rows: minmax(0, 1fr);
37
+ transition: padding-left var(--dashboard-duration) var(--swift-out);
38
+ }
39
+ .dashboard:has(> .dashboard-navigation) {
40
+ padding-left: 300px;
41
+ }
42
+ .dashboard:has(> .dashboard-navigation-collapsed) {
43
+ padding-left: 84px;
44
+ }
45
+ .dashboard .dashboard-mount {
46
+ grid-column: 2;
47
+ }
48
+ .dashboard .dashboard-menu {
49
+ grid-column: 1;
50
+ }
51
+ .dashboard .dashboard-side {
52
+ grid-column: 3;
53
+ }
54
+ }
55
+ @media (max-width: 1023.98px) {
56
+ .dashboard {
57
+ display: flex;
58
+ padding-top: 84px;
59
+ flex-flow: column;
60
+ }
61
+ }.notice + .dashboard-content {
62
+ padding-top: 30px;
63
+ }
64
+
65
+ .dashboard-content {
66
+ display: flex;
67
+ padding: 0 30px;
68
+ flex-flow: column;
69
+ flex-grow: 1;
70
+ }
71
+ .dashboard-content > :is(.calendar, .table) {
72
+ margin-left: -30px;
73
+ margin-right: -30px;
74
+ height: calc(100dvh - 84px);
75
+ flex-grow: 1;
76
+ }
77
+ .dashboard-content > .calendar {
78
+ border-left: 0;
79
+ border-right: 0;
80
+ border-radius: 0;
81
+ }
82
+ .dashboard-content > .calendar .calendar-actions {
83
+ padding-left: 30px;
84
+ padding-right: 30px;
85
+ }
86
+ .dashboard-content > .table {
87
+ border-top: 1px solid var(--gray-2);
88
+ }
89
+ .dashboard-content > .table .table-cell:first-child .table-cell-content {
90
+ padding-left: 30px;
91
+ }
92
+ .dashboard-content > .table .table-cell:last-child .table-cell-content {
93
+ padding-right: 30px;
94
+ }
95
+
96
+ @media (max-width: 1023.98px) {
97
+ .dashboard-content-collapsed {
98
+ display: none;
99
+ }
100
+ }.dashboard-top-bar {
101
+ position: sticky;
102
+ display: flex;
103
+ top: 0;
104
+ height: 84px;
105
+ padding-left: 30px;
106
+ padding-right: 30px;
107
+ align-items: center;
108
+ flex-flow: row;
109
+ gap: 15px;
110
+ background: oklch(from var(--gray-0) l c h/0.9);
111
+ backdrop-filter: blur(10px) saturate(180%);
112
+ z-index: 100;
113
+ }
114
+ .dashboard-top-bar > h1 {
115
+ font-size: 18px;
116
+ overflow: hidden;
117
+ text-overflow: ellipsis;
118
+ white-space: nowrap;
119
+ }
120
+ .dashboard-top-bar > .icon {
121
+ color: var(--foreground-prominent);
122
+ }
123
+ .dashboard-top-bar > .separator {
124
+ height: 24px;
125
+ }
126
+
127
+ .dashboard-header:not(.route-transition-enter-active):not(.route-transition-leave-active) {
128
+ transition: box-shadow var(--dashboard-duration) var(--swift-out);
129
+ }
130
+
131
+ .dashboard-header-scrolled {
132
+ box-shadow: var(--shadow-md);
133
+ }
134
+
135
+ [dark] .dashboard-header-scrolled {
136
+ box-shadow: 0 1px 0 var(--gray-1), var(--shadow-md);
137
+ }
138
+
139
+ @media (max-width: 1023.98px) {
140
+ .dashboard > .dashboard-top-bar {
141
+ top: 84px;
142
+ }
143
+ .dashboard > .dashboard-top-bar-collapsed {
144
+ display: none;
145
+ }
146
+ }.dashboard-pane {
147
+ background: var(--gray-1);
148
+ overflow: auto;
149
+ z-index: 200;
150
+ }
151
+ .dashboard-pane .menu-sub-header {
152
+ background: linear-gradient(to bottom, var(--gray-1) 75%, transparent);
153
+ }
154
+ .dashboard-pane .dashboard-top-bar {
155
+ background: oklch(from var(--gray-1) l c h/0.9);
156
+ }
157
+ .dashboard-pane .filter {
158
+ --background: var(--gray-1);
159
+ max-height: calc(100dvh - 84px);
160
+ margin-top: -9px;
161
+ padding: 9px 18px 18px;
162
+ width: 100%;
163
+ }
164
+ .dashboard-pane .filter .filter-header {
165
+ margin-left: -18px;
166
+ margin-right: -18px;
167
+ padding-left: 18px;
168
+ padding-right: 18px;
169
+ }
170
+ .dashboard-pane .filter .menu {
171
+ font-size: 14px;
172
+ }
173
+ .dashboard-pane .filter .menu-item-command {
174
+ font-size: 12px;
175
+ }
176
+ .dashboard-pane .filter .menu-item-icon {
177
+ font-size: 16px;
178
+ }
179
+ .dashboard-pane .filter .menu > :where(.divider, .separator) {
180
+ margin-left: -18px;
181
+ margin-right: -18px;
182
+ }
183
+
184
+ .dashboard-menu {
185
+ border-right: 1px solid var(--gray-2);
186
+ }
187
+
188
+ .dashboard-menu-body {
189
+ padding: 0 18px 30px;
190
+ }
191
+
192
+ .dashboard-side {
193
+ border-left: 1px solid var(--gray-2);
194
+ }
195
+
196
+ @media (min-width: 1024px) {
197
+ .dashboard-pane {
198
+ position: sticky;
199
+ top: 0;
200
+ height: 100dvh;
201
+ width: 300px;
202
+ grid-row: 1/span 2;
203
+ }
204
+ }
205
+ @media (max-width: 1023.98px) {
206
+ .dashboard-menu {
207
+ height: calc(100dvh - 84px);
208
+ }
209
+ .dashboard-menu-collapsed {
210
+ display: none;
211
+ }
212
+ }.dashboard-navigation {
213
+ position: fixed;
214
+ display: flex;
215
+ top: 0;
216
+ left: 0;
217
+ background: var(--dashboard-navigation-background);
218
+ color: var(--dashboard-navigation-foreground);
219
+ z-index: 750;
220
+ }
221
+ .dashboard-navigation .divider {
222
+ margin: 3px 15px;
223
+ }
224
+ .dashboard-navigation .divider-line {
225
+ background: var(--primary-10);
226
+ }
227
+ .dashboard-navigation .menu {
228
+ flex-grow: 1;
229
+ }
230
+ .dashboard-navigation .menu-item {
231
+ height: 54px;
232
+ min-width: 54px;
233
+ padding: 15px;
234
+ gap: 21px;
235
+ color: var(--dashboard-navigation-foreground);
236
+ overflow: hidden;
237
+ }
238
+ @media (hover: hover) {
239
+ .dashboard-navigation .menu-item:hover {
240
+ background: var(--primary-10);
241
+ }
242
+ }
243
+ .dashboard-navigation .menu-item:active {
244
+ background: var(--primary-9);
245
+ }
246
+ .dashboard-navigation .menu-item-highlighted {
247
+ background: oklch(from var(--primary-10) l c h/0.5);
248
+ }
249
+ .dashboard-navigation .menu-item-icon {
250
+ color: var(--dashboard-navigation-foreground);
251
+ font-size: 24px;
252
+ }
253
+ .dashboard-navigation .menu-item-label {
254
+ transition: var(--dashboard-duration) var(--swift-out);
255
+ transition-property: filter, opacity, translate;
256
+ white-space: nowrap;
257
+ }
258
+
259
+ .dashboard-navigation-collapsed {
260
+ }
261
+
262
+ [dark] .dashboard-navigation .divider-line {
263
+ background: var(--gray-2);
264
+ }
265
+ @media (hover: hover) {
266
+ [dark] .dashboard-navigation .menu-item:hover {
267
+ background: var(--gray-2);
268
+ }
269
+ }
270
+ [dark] .dashboard-navigation .menu-item:active {
271
+ background: var(--gray-3);
272
+ }
273
+ [dark] .dashboard-navigation .menu-item-highlighted {
274
+ background: var(--gray-1);
275
+ }
276
+
277
+ .dashboard-navigation-logo {
278
+ display: flex;
279
+ height: 54px;
280
+ width: 54px;
281
+ align-items: center;
282
+ justify-content: center;
283
+ }
284
+ .dashboard-navigation-logo :is(svg) {
285
+ max-height: 48px;
286
+ max-width: 48px;
287
+ width: 100%;
288
+ }
289
+
290
+ .dashboard-navigation-rounding-fix {
291
+ position: absolute;
292
+ display: block;
293
+ height: var(--radius);
294
+ width: var(--radius);
295
+ content: "";
296
+ background: var(--dashboard-navigation-background);
297
+ transition: left var(--dashboard-duration) var(--swift-out);
298
+ }
299
+ .dashboard-navigation-rounding-fix::before {
300
+ position: absolute;
301
+ display: block;
302
+ inset: 0;
303
+ content: "";
304
+ background: var(--gray-1);
305
+ }
306
+
307
+ .dashboard:not(:has(.dashboard-menu)) .dashboard-navigation-rounding-fix::before {
308
+ background: var(--gray-0);
309
+ }
310
+
311
+ @media (min-width: 1024px) {
312
+ .dashboard-navigation {
313
+ height: 100dvh;
314
+ width: 300px;
315
+ padding: 15px;
316
+ flex-flow: column;
317
+ gap: 15px;
318
+ transition: width var(--dashboard-duration) var(--swift-out);
319
+ }
320
+ .dashboard-navigation-collapsed {
321
+ width: 84px;
322
+ }
323
+ .dashboard-navigation-collapsed .menu-item-label {
324
+ filter: blur(6px);
325
+ opacity: 0;
326
+ translate: -12px 0;
327
+ }
328
+ .dashboard-navigation-header {
329
+ display: flex;
330
+ }
331
+ .dashboard-navigation-header .menu-item {
332
+ display: none;
333
+ }
334
+ .dashboard-navigation-nav {
335
+ display: flex;
336
+ flex-flow: column;
337
+ flex-grow: 1;
338
+ }
339
+ .dashboard-navigation-rounding-fix {
340
+ left: 100%;
341
+ }
342
+ .dashboard-navigation-rounding-fix:first-of-type {
343
+ top: 0;
344
+ }
345
+ .dashboard-navigation-rounding-fix:first-of-type::before {
346
+ border-top-left-radius: var(--radius);
347
+ }
348
+ .dashboard-navigation-rounding-fix:not(:first-of-type) {
349
+ bottom: 0;
350
+ }
351
+ .dashboard-navigation-rounding-fix:not(:first-of-type)::before {
352
+ border-bottom-left-radius: var(--radius);
353
+ }
354
+ }
355
+ @media (max-width: 1023.98px) {
356
+ .dashboard-navigation {
357
+ width: 100dvw;
358
+ height: 84px;
359
+ }
360
+ .dashboard-navigation::after {
361
+ position: fixed;
362
+ display: block;
363
+ inset: 0;
364
+ width: 100dvw;
365
+ height: 100dvh;
366
+ content: "";
367
+ background: oklch(from var(--gray-3) l c h/0.5);
368
+ backdrop-filter: blur(3px) saturate(180%);
369
+ transition: var(--dashboard-duration) var(--swift-out);
370
+ transition-property: background, backdrop-filter;
371
+ z-index: 1900;
372
+ }
373
+ .dashboard-navigation-header {
374
+ display: flex;
375
+ width: inherit;
376
+ height: inherit;
377
+ padding: 0 15px;
378
+ align-items: center;
379
+ flex-flow: row;
380
+ justify-content: space-between;
381
+ }
382
+ .dashboard-navigation-header .menu-item {
383
+ align-self: center;
384
+ justify-content: center;
385
+ }
386
+ .dashboard-navigation-nav {
387
+ position: fixed;
388
+ display: flex;
389
+ top: 0;
390
+ left: 0;
391
+ width: min(300px, 100dvw - 42px);
392
+ height: 100dvh;
393
+ padding: 15px;
394
+ flex-flow: column;
395
+ background: var(--dashboard-navigation-background);
396
+ transition: translate var(--dashboard-duration) var(--swift-out);
397
+ z-index: 2000;
398
+ }
399
+ .dashboard-navigation-rounding-fix {
400
+ position: fixed;
401
+ top: 84px;
402
+ z-index: 750;
403
+ }
404
+ .dashboard-navigation-rounding-fix:first-of-type {
405
+ left: 0;
406
+ }
407
+ .dashboard-navigation-rounding-fix:first-of-type::before {
408
+ border-top-left-radius: var(--radius);
409
+ }
410
+ .dashboard-navigation-rounding-fix:not(:first-of-type) {
411
+ right: 0;
412
+ }
413
+ .dashboard-navigation-rounding-fix:not(:first-of-type)::before {
414
+ border-top-right-radius: var(--radius);
415
+ }
416
+ .dashboard-navigation-collapsed::after {
417
+ background: transparent;
418
+ backdrop-filter: none;
419
+ pointer-events: none;
420
+ }
421
+ .dashboard-navigation-collapsed .dashboard-navigation-nav {
422
+ pointer-events: none;
423
+ translate: -100% 0;
424
+ }
425
+ }
package/dist/index.js CHANGED
@@ -1,221 +1,318 @@
1
- import { ref as g, watch as F, unref as o, defineComponent as b, provide as E, createElementBlock as c, openBlock as i, normalizeClass as l, renderSlot as r, createElementVNode as v, inject as R, createBlock as _, withCtx as N, createCommentVNode as f, createVNode as h, toDisplayString as S, useSlots as x, resolveComponent as A, mergeProps as j, normalizeProps as O, guardReactiveProps as P, Fragment as V, renderList as J } from "vue";
2
- import { DateTime as k } from "luxon";
3
- import { FluxIcon as w, FluxSpacer as M, FluxMenuItem as L } from "@flux-ui/components";
4
- function K(n, e, a, s = { passive: !0 }) {
5
- F(n, (t, d, u) => {
6
- t && (t.addEventListener(e, a, s), u(() => t.removeEventListener(e, a)));
7
- }, { immediate: !0 });
1
+ import { ref, watch, unref, defineComponent, provide, createElementBlock, openBlock, normalizeClass, renderSlot, createElementVNode, inject, createBlock, withCtx, createCommentVNode, createVNode, toDisplayString, useSlots, resolveComponent, mergeProps, normalizeProps, guardReactiveProps, Fragment, renderList } from "vue";
2
+ import { DateTime } from "luxon";
3
+ import { FluxIcon, FluxSpacer, FluxMenuItem } from "@flux-ui/components";
4
+ function k(e, t, o, n = { passive: true }) {
5
+ watch(e, (s, r, a) => {
6
+ if (!s) return;
7
+ s.addEventListener(t, o, n), a(() => s.removeEventListener(t, o));
8
+ }, { immediate: true });
8
9
  }
9
- function B(n, e) {
10
- let a = `flux/${n}`, s = g(t() ?? e);
11
- function t() {
12
- if (a in localStorage) {
13
- let d = JSON.parse(localStorage.getItem(a));
14
- return Array.isArray(d) && d[0] === "DateTime" && (d = k.fromISO(d[1])), d;
10
+ function ne(e, t) {
11
+ let o = `flux/${e}`, n = ref(s() ?? t);
12
+ function s() {
13
+ if (o in localStorage) {
14
+ let r = JSON.parse(localStorage.getItem(o));
15
+ if (Array.isArray(r) && r[0] === "DateTime") r = DateTime.fromISO(r[1]);
16
+ return r;
15
17
  }
16
18
  return null;
17
19
  }
18
- return F(s, (d) => {
19
- let u = d;
20
- k.isDateTime(d) && (u = ["DateTime", d.toISO({ includeOffset: !0, extendedZone: !0 })]), localStorage.setItem(a, JSON.stringify(u));
21
- }), s;
20
+ return watch(n, (r) => {
21
+ let a = r;
22
+ if (DateTime.isDateTime(r)) a = ["DateTime", r.toISO({ includeOffset: true, extendedZone: true })];
23
+ localStorage.setItem(o, JSON.stringify(a));
24
+ }), n;
22
25
  }
23
- function Z(n) {
24
- let e = g(0), a = g(0);
25
- return n || (n = g(document)), K(n, "scroll", () => {
26
- let s = o(n);
27
- s instanceof Document && (s = s.scrollingElement), e.value = s?.scrollLeft ?? 0, a.value = s?.scrollTop ?? 0;
28
- }), { x: e, y: a };
26
+ function re(e) {
27
+ let t = ref(0), o = ref(0);
28
+ if (!e) e = ref(document);
29
+ return k(e, "scroll", () => {
30
+ let n = unref(e);
31
+ if (n instanceof Document) n = n.scrollingElement;
32
+ t.value = n?.scrollLeft ?? 0, o.value = n?.scrollTop ?? 0;
33
+ }), { x: t, y: o };
29
34
  }
30
- const z = Symbol(), q = "root", G = "dashboard", Q = "dashboard-mount", U = "is-resizing", W = "dashboard-navigation", X = "dashboard-navigation-collapsed", Y = "dashboard-menu", aa = "dashboard-side", y = { root: q, dashboard: G, dashboardMount: Q, isResizing: U, dashboardNavigation: W, dashboardNavigationCollapsed: X, dashboardMenu: Y, dashboardSide: aa }, Xa = /* @__PURE__ */ b({
35
+ const FluxDashboardInjectionKey = Symbol();
36
+ const root = `root`;
37
+ const dashboard$2 = `dashboard`;
38
+ const dashboardMount = `dashboard-mount`;
39
+ const isResizing = `is-resizing`;
40
+ const dashboardNavigation$1 = `dashboard-navigation`;
41
+ const dashboardNavigationCollapsed$1 = `dashboard-navigation-collapsed`;
42
+ const dashboardMenu$2 = `dashboard-menu`;
43
+ const dashboardSide$1 = `dashboard-side`;
44
+ const $style$4 = { root, dashboard: dashboard$2, dashboardMount, isResizing, dashboardNavigation: dashboardNavigation$1, dashboardNavigationCollapsed: dashboardNavigationCollapsed$1, dashboardMenu: dashboardMenu$2, dashboardSide: dashboardSide$1 };
45
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
31
46
  __name: "FluxDashboard",
32
- setup(n) {
33
- const e = B("dashboard-menu-collapsed", !0), a = B("dashboard-navigation-collapsed", !0), s = g(!1);
34
- return E(z, {
35
- isMenuCollapsed: e,
36
- isNavigationCollapsed: a
37
- }), F(a, (t, d, u) => {
38
- let m;
39
- function T() {
40
- clearTimeout(m), s.value = !0, m = setTimeout(() => s.value = !1, 10);
47
+ setup(__props) {
48
+ const isMenuCollapsed = ne("dashboard-menu-collapsed", true);
49
+ const isNavigationCollapsed = ne("dashboard-navigation-collapsed", true);
50
+ const isResizing2 = ref(false);
51
+ provide(FluxDashboardInjectionKey, {
52
+ isMenuCollapsed,
53
+ isNavigationCollapsed
54
+ });
55
+ watch(isNavigationCollapsed, (_, __, onCleanup) => {
56
+ let timeout;
57
+ function onResize() {
58
+ clearTimeout(timeout);
59
+ isResizing2.value = true;
60
+ timeout = setTimeout(() => isResizing2.value = false, 10);
41
61
  }
42
- window.addEventListener("resize", T, { passive: !0 }), u(() => window.removeEventListener("resize", T));
43
- }, { immediate: !0 }), (t, d) => (i(), c("div", {
44
- class: l([o(y).dashboard, s.value && o(y).isResizing])
45
- }, [
46
- r(t.$slots, "navigation"),
47
- r(t.$slots, "menu"),
48
- v("div", {
49
- class: l(o(y).dashboardMount)
62
+ window.addEventListener("resize", onResize, { passive: true });
63
+ onCleanup(() => window.removeEventListener("resize", onResize));
64
+ }, { immediate: true });
65
+ return (_ctx, _cache) => {
66
+ return openBlock(), createElementBlock("div", {
67
+ class: normalizeClass([unref($style$4).dashboard, isResizing2.value && unref($style$4).isResizing])
50
68
  }, [
51
- r(t.$slots, "header"),
52
- r(t.$slots, "default")
53
- ], 2),
54
- r(t.$slots, "side")
55
- ], 2));
69
+ renderSlot(_ctx.$slots, "navigation"),
70
+ renderSlot(_ctx.$slots, "menu"),
71
+ createElementVNode("div", {
72
+ class: normalizeClass(unref($style$4).dashboardMount)
73
+ }, [
74
+ renderSlot(_ctx.$slots, "header"),
75
+ renderSlot(_ctx.$slots, "default")
76
+ ], 2),
77
+ renderSlot(_ctx.$slots, "side")
78
+ ], 2);
79
+ };
56
80
  }
57
81
  });
58
- function D() {
59
- const n = R(z);
60
- if (!n)
82
+ function useDashboardInjection() {
83
+ const injection = inject(FluxDashboardInjectionKey);
84
+ if (!injection) {
61
85
  throw new Error("[Flux] useDashboardInjection() was used outside a FluxDashboard component.");
62
- return n;
86
+ }
87
+ return injection;
63
88
  }
64
- const oa = "notice", ea = "dashboard-content", sa = "calendar", na = "table", ta = "calendar-actions", da = "table-cell", ra = "table-cell-content", ia = "dashboard-content-collapsed", H = { notice: oa, dashboardContent: ea, calendar: sa, table: na, calendarActions: ta, tableCell: da, tableCellContent: ra, dashboardContentCollapsed: ia }, Ya = /* @__PURE__ */ b({
89
+ const notice = `notice`;
90
+ const dashboardContent = `dashboard-content`;
91
+ const calendar = `calendar`;
92
+ const table = `table`;
93
+ const calendarActions = `calendar-actions`;
94
+ const tableCell = `table-cell`;
95
+ const tableCellContent = `table-cell-content`;
96
+ const dashboardContentCollapsed = `dashboard-content-collapsed`;
97
+ const $style$3 = { notice, dashboardContent, calendar, table, calendarActions, tableCell, tableCellContent, dashboardContentCollapsed };
98
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
65
99
  __name: "FluxDashboardContent",
66
- setup(n) {
67
- const { isMenuCollapsed: e } = D();
68
- return (a, s) => (i(), c("main", {
69
- class: l([o(H).dashboardContent, !o(e) && o(H).dashboardContentCollapsed])
70
- }, [
71
- r(a.$slots, "default")
72
- ], 2));
100
+ setup(__props) {
101
+ const { isMenuCollapsed } = useDashboardInjection();
102
+ return (_ctx, _cache) => {
103
+ return openBlock(), createElementBlock("main", {
104
+ class: normalizeClass([unref($style$3).dashboardContent, !unref(isMenuCollapsed) && unref($style$3).dashboardContentCollapsed])
105
+ }, [
106
+ renderSlot(_ctx.$slots, "default")
107
+ ], 2);
108
+ };
73
109
  }
74
- }), la = "dashboard-top-bar", ca = "icon", ua = "separator", ha = "dashboard-header", ba = "route-transition-enter-active", ma = "route-transition-leave-active", pa = "dashboard-header-scrolled dashboard-header", va = "dashboard", ga = "dashboard-top-bar-collapsed", C = { dashboardTopBar: la, icon: ca, separator: ua, dashboardHeader: ha, routeTransitionEnterActive: ba, routeTransitionLeaveActive: ma, dashboardHeaderScrolled: pa, dashboard: va, dashboardTopBarCollapsed: ga }, I = /* @__PURE__ */ b({
110
+ });
111
+ const dashboardTopBar$1 = `dashboard-top-bar`;
112
+ const icon = `icon`;
113
+ const separator$1 = `separator`;
114
+ const dashboardHeader = `dashboard-header`;
115
+ const routeTransitionEnterActive = `route-transition-enter-active`;
116
+ const routeTransitionLeaveActive = `route-transition-leave-active`;
117
+ const dashboardHeaderScrolled = `dashboard-header-scrolled dashboard-header`;
118
+ const dashboard$1 = `dashboard`;
119
+ const dashboardTopBarCollapsed = `dashboard-top-bar-collapsed`;
120
+ const $style$2 = { dashboardTopBar: dashboardTopBar$1, icon, separator: separator$1, dashboardHeader, routeTransitionEnterActive, routeTransitionLeaveActive, dashboardHeaderScrolled, dashboard: dashboard$1, dashboardTopBarCollapsed };
121
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
75
122
  __name: "FluxDashboardTopBar",
76
- setup(n) {
77
- const { isMenuCollapsed: e } = D();
78
- return (a, s) => (i(), c("header", {
79
- class: l([o(C).dashboardTopBar, !o(e) && o(C).dashboardTopBarCollapsed])
80
- }, [
81
- r(a.$slots, "default")
82
- ], 2));
123
+ setup(__props) {
124
+ const { isMenuCollapsed } = useDashboardInjection();
125
+ return (_ctx, _cache) => {
126
+ return openBlock(), createElementBlock("header", {
127
+ class: normalizeClass([unref($style$2).dashboardTopBar, !unref(isMenuCollapsed) && unref($style$2).dashboardTopBarCollapsed])
128
+ }, [
129
+ renderSlot(_ctx.$slots, "default")
130
+ ], 2);
131
+ };
83
132
  }
84
- }), fa = { key: 1 }, ao = /* @__PURE__ */ b({
133
+ });
134
+ const _hoisted_1$1 = { key: 1 };
135
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
85
136
  __name: "FluxDashboardHeader",
86
137
  props: {
87
138
  icon: {},
88
139
  title: {}
89
140
  },
90
- setup(n) {
91
- const { y: e } = Z();
92
- return (a, s) => (i(), _(I, {
93
- class: l(o(e) > 0 ? o(C).dashboardHeaderScrolled : o(C).dashboardHeader)
94
- }, {
95
- default: N(() => [
96
- r(a.$slots, "start"),
97
- a.icon ? (i(), _(o(w), {
98
- key: 0,
99
- name: a.icon
100
- }, null, 8, ["name"])) : f("", !0),
101
- a.title ? (i(), c("h1", fa, S(a.title), 1)) : f("", !0),
102
- h(o(M)),
103
- r(a.$slots, "end")
104
- ]),
105
- _: 3
106
- }, 8, ["class"]));
141
+ setup(__props) {
142
+ const { y } = re();
143
+ return (_ctx, _cache) => {
144
+ return openBlock(), createBlock(_sfc_main$4, {
145
+ class: normalizeClass(unref(y) > 0 ? unref($style$2).dashboardHeaderScrolled : unref($style$2).dashboardHeader)
146
+ }, {
147
+ default: withCtx(() => [
148
+ renderSlot(_ctx.$slots, "start"),
149
+ __props.icon ? (openBlock(), createBlock(unref(FluxIcon), {
150
+ key: 0,
151
+ name: __props.icon
152
+ }, null, 8, ["name"])) : createCommentVNode("", true),
153
+ __props.title ? (openBlock(), createElementBlock("h1", _hoisted_1$1, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
154
+ createVNode(unref(FluxSpacer)),
155
+ renderSlot(_ctx.$slots, "end")
156
+ ]),
157
+ _: 3
158
+ }, 8, ["class"]);
159
+ };
107
160
  }
108
- }), $a = "dashboard-pane", _a = "menu-sub-header", Ca = "dashboard-top-bar", Na = "filter", Da = "filter-header", ya = "menu", Fa = "menu-item-command", Sa = "menu-item-icon", Ma = "divider", Ia = "separator", Ta = "dashboard-menu dashboard-pane", ka = "dashboard-menu-body", La = "dashboard-side dashboard-pane", Ba = "dashboard-menu-collapsed", $ = { dashboardPane: $a, menuSubHeader: _a, dashboardTopBar: Ca, filter: Na, filterHeader: Da, menu: ya, menuItemCommand: Fa, menuItemIcon: Sa, divider: Ma, separator: Ia, dashboardMenu: Ta, dashboardMenuBody: ka, dashboardSide: La, dashboardMenuCollapsed: Ba }, Ha = { key: 1 }, oo = /* @__PURE__ */ b({
161
+ });
162
+ const dashboardPane = `dashboard-pane`;
163
+ const menuSubHeader = `menu-sub-header`;
164
+ const dashboardTopBar = `dashboard-top-bar`;
165
+ const filter = `filter`;
166
+ const filterHeader = `filter-header`;
167
+ const menu$1 = `menu`;
168
+ const menuItemCommand = `menu-item-command`;
169
+ const menuItemIcon$1 = `menu-item-icon`;
170
+ const divider$1 = `divider`;
171
+ const separator = `separator`;
172
+ const dashboardMenu$1 = `dashboard-menu dashboard-pane`;
173
+ const dashboardMenuBody = `dashboard-menu-body`;
174
+ const dashboardSide = `dashboard-side dashboard-pane`;
175
+ const dashboardMenuCollapsed = `dashboard-menu-collapsed`;
176
+ const $style$1 = { dashboardPane, menuSubHeader, dashboardTopBar, filter, filterHeader, menu: menu$1, menuItemCommand, menuItemIcon: menuItemIcon$1, divider: divider$1, separator, dashboardMenu: dashboardMenu$1, dashboardMenuBody, dashboardSide, dashboardMenuCollapsed };
177
+ const _hoisted_1 = { key: 1 };
178
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
109
179
  __name: "FluxDashboardMenu",
110
180
  props: {
111
181
  icon: {},
112
182
  title: {}
113
183
  },
114
- setup(n) {
115
- const { isMenuCollapsed: e } = D();
116
- return (a, s) => (i(), c("aside", {
117
- class: l([o($).dashboardMenu, o(e) && o($).dashboardMenuCollapsed])
118
- }, [
119
- h(I, null, {
120
- default: N(() => [
121
- r(a.$slots, "top-bar-start"),
122
- a.icon ? (i(), _(o(w), {
123
- key: 0,
124
- name: a.icon
125
- }, null, 8, ["name"])) : f("", !0),
126
- a.title ? (i(), c("h1", Ha, S(a.title), 1)) : f("", !0),
127
- h(o(M)),
128
- r(a.$slots, "top-bar-end")
129
- ]),
130
- _: 3
131
- }),
132
- v("div", {
133
- class: l(o($).dashboardMenuBody)
184
+ setup(__props) {
185
+ const { isMenuCollapsed } = useDashboardInjection();
186
+ return (_ctx, _cache) => {
187
+ return openBlock(), createElementBlock("aside", {
188
+ class: normalizeClass([unref($style$1).dashboardMenu, unref(isMenuCollapsed) && unref($style$1).dashboardMenuCollapsed])
134
189
  }, [
135
- r(a.$slots, "default")
136
- ], 2)
137
- ], 2));
190
+ createVNode(_sfc_main$4, null, {
191
+ default: withCtx(() => [
192
+ renderSlot(_ctx.$slots, "top-bar-start"),
193
+ __props.icon ? (openBlock(), createBlock(unref(FluxIcon), {
194
+ key: 0,
195
+ name: __props.icon
196
+ }, null, 8, ["name"])) : createCommentVNode("", true),
197
+ __props.title ? (openBlock(), createElementBlock("h1", _hoisted_1, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
198
+ createVNode(unref(FluxSpacer)),
199
+ renderSlot(_ctx.$slots, "top-bar-end")
200
+ ]),
201
+ _: 3
202
+ }),
203
+ createElementVNode("div", {
204
+ class: normalizeClass(unref($style$1).dashboardMenuBody)
205
+ }, [
206
+ renderSlot(_ctx.$slots, "default")
207
+ ], 2)
208
+ ], 2);
209
+ };
138
210
  }
139
- }), wa = "dashboard-navigation", za = "divider", Ea = "divider-line", Ra = "menu", xa = "menu-item", Aa = "menu-item-highlighted", ja = "menu-item-icon", Oa = "menu-item-label", Pa = "dashboard-navigation-collapsed dashboard-navigation", Va = "dashboard-navigation-logo", Ja = "dashboard-navigation-rounding-fix", Ka = "dashboard", Za = "dashboard-menu", qa = "dashboard-navigation-header", Ga = "dashboard-navigation-nav", p = { dashboardNavigation: wa, divider: za, dividerLine: Ea, menu: Ra, menuItem: xa, menuItemHighlighted: Aa, menuItemIcon: ja, menuItemLabel: Oa, dashboardNavigationCollapsed: Pa, dashboardNavigationLogo: Va, dashboardNavigationRoundingFix: Ja, dashboard: Ka, dashboardMenu: Za, dashboardNavigationHeader: qa, dashboardNavigationNav: Ga }, eo = /* @__PURE__ */ b({
140
- inheritAttrs: !1,
211
+ });
212
+ const dashboardNavigation = `dashboard-navigation`;
213
+ const divider = `divider`;
214
+ const dividerLine = `divider-line`;
215
+ const menu = `menu`;
216
+ const menuItem = `menu-item`;
217
+ const menuItemHighlighted = `menu-item-highlighted`;
218
+ const menuItemIcon = `menu-item-icon`;
219
+ const menuItemLabel = `menu-item-label`;
220
+ const dashboardNavigationCollapsed = `dashboard-navigation-collapsed dashboard-navigation`;
221
+ const dashboardNavigationLogo = `dashboard-navigation-logo`;
222
+ const dashboardNavigationRoundingFix = `dashboard-navigation-rounding-fix`;
223
+ const dashboard = `dashboard`;
224
+ const dashboardMenu = `dashboard-menu`;
225
+ const dashboardNavigationHeader = `dashboard-navigation-header`;
226
+ const dashboardNavigationNav = `dashboard-navigation-nav`;
227
+ const $style = { dashboardNavigation, divider, dividerLine, menu, menuItem, menuItemHighlighted, menuItemIcon, menuItemLabel, dashboardNavigationCollapsed, dashboardNavigationLogo, dashboardNavigationRoundingFix, dashboard, dashboardMenu, dashboardNavigationHeader, dashboardNavigationNav };
228
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
229
+ ...{
230
+ inheritAttrs: false
231
+ },
141
232
  __name: "FluxDashboardNavigation",
142
233
  props: {
143
234
  logoLocation: {}
144
235
  },
145
- setup(n) {
146
- const e = x(), {
147
- isMenuCollapsed: a,
148
- isNavigationCollapsed: s
149
- } = D();
150
- return (t, d) => {
151
- const u = A("router-link");
152
- return i(), c("nav", j(t.$attrs, {
153
- class: o(s) ? o(p).dashboardNavigationCollapsed : o(p).dashboardNavigation
236
+ setup(__props) {
237
+ const slots = useSlots();
238
+ const {
239
+ isMenuCollapsed,
240
+ isNavigationCollapsed
241
+ } = useDashboardInjection();
242
+ return (_ctx, _cache) => {
243
+ const _component_router_link = resolveComponent("router-link");
244
+ return openBlock(), createElementBlock("nav", mergeProps(_ctx.$attrs, {
245
+ class: unref(isNavigationCollapsed) ? unref($style).dashboardNavigationCollapsed : unref($style).dashboardNavigation
154
246
  }), [
155
- v("header", {
156
- class: l(o(p).dashboardNavigationHeader)
247
+ createElementVNode("header", {
248
+ class: normalizeClass(unref($style).dashboardNavigationHeader)
157
249
  }, [
158
- h(o(L), {
250
+ createVNode(unref(FluxMenuItem), {
159
251
  "icon-leading": "bars",
160
- onClick: d[0] || (d[0] = (m) => s.value = !o(s))
252
+ onClick: _cache[0] || (_cache[0] = ($event) => isNavigationCollapsed.value = !unref(isNavigationCollapsed))
161
253
  }),
162
- e.logo ? (i(), _(u, {
254
+ slots.logo ? (openBlock(), createBlock(_component_router_link, {
163
255
  key: 0,
164
- class: l(o(p).dashboardNavigationLogo),
165
- to: t.logoLocation || "/"
256
+ class: normalizeClass(unref($style).dashboardNavigationLogo),
257
+ to: __props.logoLocation || "/"
166
258
  }, {
167
- default: N(() => [
168
- r(t.$slots, "logo", O(P({ isNavigationCollapsed: o(s) })))
259
+ default: withCtx(() => [
260
+ renderSlot(_ctx.$slots, "logo", normalizeProps(guardReactiveProps({ isNavigationCollapsed: unref(isNavigationCollapsed) })))
169
261
  ]),
170
262
  _: 3
171
- }, 8, ["class", "to"])) : f("", !0),
172
- h(o(L), {
263
+ }, 8, ["class", "to"])) : createCommentVNode("", true),
264
+ createVNode(unref(FluxMenuItem), {
173
265
  "icon-leading": "ellipsis-h",
174
- onClick: d[1] || (d[1] = (m) => a.value = !o(a))
266
+ onClick: _cache[1] || (_cache[1] = ($event) => isMenuCollapsed.value = !unref(isMenuCollapsed))
175
267
  })
176
268
  ], 2),
177
- (i(), c(V, null, J(2, (m) => v("div", {
178
- key: m,
179
- class: l(o(p).dashboardNavigationRoundingFix)
180
- }, null, 2)), 64)),
181
- v("main", {
182
- class: l(o(p).dashboardNavigationNav)
269
+ (openBlock(), createElementBlock(Fragment, null, renderList(2, (index) => {
270
+ return createElementVNode("div", {
271
+ key: index,
272
+ class: normalizeClass(unref($style).dashboardNavigationRoundingFix)
273
+ }, null, 2);
274
+ }), 64)),
275
+ createElementVNode("main", {
276
+ class: normalizeClass(unref($style).dashboardNavigationNav)
183
277
  }, [
184
- r(t.$slots, "default")
278
+ renderSlot(_ctx.$slots, "default")
185
279
  ], 2)
186
280
  ], 16);
187
281
  };
188
282
  }
189
- }), so = /* @__PURE__ */ b({
283
+ });
284
+ const _sfc_main = /* @__PURE__ */ defineComponent({
190
285
  __name: "FluxDashboardSide",
191
286
  props: {
192
287
  title: {}
193
288
  },
194
- setup(n) {
195
- return (e, a) => (i(), c("aside", {
196
- class: l(o($).dashboardSide)
197
- }, [
198
- h(I, null, {
199
- default: N(() => [
200
- r(e.$slots, "top-bar-start"),
201
- v("h1", null, S(e.title), 1),
202
- h(o(M)),
203
- r(e.$slots, "top-bar-end")
204
- ]),
205
- _: 3
206
- }),
207
- r(e.$slots, "default")
208
- ], 2));
289
+ setup(__props) {
290
+ return (_ctx, _cache) => {
291
+ return openBlock(), createElementBlock("aside", {
292
+ class: normalizeClass(unref($style$1).dashboardSide)
293
+ }, [
294
+ createVNode(_sfc_main$4, null, {
295
+ default: withCtx(() => [
296
+ renderSlot(_ctx.$slots, "top-bar-start"),
297
+ createElementVNode("h1", null, toDisplayString(__props.title), 1),
298
+ createVNode(unref(FluxSpacer)),
299
+ renderSlot(_ctx.$slots, "top-bar-end")
300
+ ]),
301
+ _: 3
302
+ }),
303
+ renderSlot(_ctx.$slots, "default")
304
+ ], 2);
305
+ };
209
306
  }
210
307
  });
211
308
  export {
212
- Xa as FluxDashboard,
213
- Ya as FluxDashboardContent,
214
- ao as FluxDashboardHeader,
215
- z as FluxDashboardInjectionKey,
216
- oo as FluxDashboardMenu,
217
- eo as FluxDashboardNavigation,
218
- so as FluxDashboardSide,
219
- D as useDashboardInjection
309
+ _sfc_main$6 as FluxDashboard,
310
+ _sfc_main$5 as FluxDashboardContent,
311
+ _sfc_main$3 as FluxDashboardHeader,
312
+ FluxDashboardInjectionKey,
313
+ _sfc_main$2 as FluxDashboardMenu,
314
+ _sfc_main$1 as FluxDashboardNavigation,
315
+ _sfc_main as FluxDashboardSide,
316
+ useDashboardInjection
220
317
  };
221
318
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../internals/dist/index.js","../src/data/index.ts","../src/component/FluxDashboard.vue","../src/composable/useDashboardInjection.ts","../src/component/FluxDashboardContent.vue","../src/component/FluxDashboardTopBar.vue","../src/component/FluxDashboardHeader.vue","../src/component/FluxDashboardMenu.vue","../src/component/FluxDashboardNavigation.vue","../src/component/FluxDashboardSide.vue"],"sourcesContent":["import{computed as v,ref as _,unref as b}from\"vue\";function N(e,t){let o=_(!1),n=_(e),s=v(()=>{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 S=1;S<=7;++S)c.push(x.plus({day:S}))}return c}),r=v(()=>b(s).slice(0,7).map((c)=>c.toLocaleString({weekday:t?.weekDayLength??\"short\"}))),a=v(()=>b(n).plus({month:1})),i=v(()=>b(n).minus({month:1})),f=v(()=>b(n).toLocaleString({month:t?.monthLength??\"long\"})),l=v(()=>b(n).year.toString());function u(c){o.value=n.value>c,n.value=c}function E(){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:E,previousMonth:L}}import{computed as de,unref as me}from\"vue\";function U(e,t){return{months:de(()=>{let n=[],s=me(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 xe,ref as be,unref as P,watch as he}from\"vue\";function K(e,t=10){let o=be(0),n=xe(()=>{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 he(e,()=>o.value=0),{years:n,next:s,previous:r}}import{onMounted as He,onUnmounted as De,ref as Ae,unref as Y,watchEffect as Se}from\"vue\";import{Fragment as ye}from\"vue\";function z(e){let t=[];for(let o of e){if(o.type===ye&&Array.isArray(o.children)){t.push(...o.children);continue}t.push(o)}return t}import{isHtmlElement as Te}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(Te).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=we(n);ve(r,s,o);let a=ge(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 ve(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 ge(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 we(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 B(e){let t=\"UnknownComponent\";if(e.type&&e.type.__name)t=e.type.__name;return t}import{camelCase as Le}from\"lodash-es\";function V(e){return Object.fromEntries(Object.entries(e.props??{}).map(([t,o])=>[Le(t),o]))}function q(e,t){if(!e.exposed||!(t in e.exposed))throw new Error(`'${t}' was not exposed by the component.`);return e.exposed[t]}import{isHtmlElement as Me}from\"@basmilius/utils\";function R(e,t,o=void 0){let n=d(e),s=o||document.activeElement;if(!s||!Me(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 Re}from\"@basmilius/utils\";import{unref as Fe}from\"vue\";function p(e){let t=Fe(e);if(Re(t))return t;return t?.$el}function W(...e){console.warn(\"[Flux]\",...e)}function g(e,t,o=!1){let n=ke(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 ke(e){return document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:(t)=>t.tabIndex>=0&&!t.disabled?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})}class G{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 G;var X=!globalThis.document;function j(e,t,o){let n=Ae([]);He(()=>{document.addEventListener(\"pointerdown\",s)}),De(()=>{document.removeEventListener(\"pointerdown\",s)});function s(r){if(!Y(t))return;!Y(n).some((i)=>i.contains(r.target))&&o(r)}Se(()=>{let r=[];(Array.isArray(e)?e:[e]).forEach((a)=>{let i=p(a);i&&r.push(i)}),n.value=r})}import{computed as Ie,getCurrentInstance as Oe}from\"vue\";function Z(){let e=Oe();return Ie(()=>e?.uid??(e?.proxy)._uid??0)}import{customRef as Ce,isRef as $,ref as _e,watch as Ne}from\"vue\";function J(e,t,o=!1){let n=_e($(e)?e.value:e),s=Ce((r,a)=>({get(){return r(),n.value},set:Ue((i)=>{n.value=i,a()},t,o)}));if($(e))Ne(e,(r)=>s.value=r);return s}function Ue(e,t,o=!1){let n;return(...s)=>{if(o&&!n)e(...s);clearTimeout(n),n=setTimeout(()=>requestAnimationFrame(()=>e(...s)),t)}}import{watch as Pe}from\"vue\";function k(e,t,o,n={passive:!0}){Pe(e,(s,r,a)=>{if(!s)return;s.addEventListener(t,o,n),a(()=>s.removeEventListener(t,o))},{immediate:!0})}import{onMounted as Ke,onUnmounted as ze,ref as Be,unref as Ve}from\"vue\";function Q(e,t){let o=Be();Ke(()=>{s()}),ze(()=>{clearTimeout(o.value)});function n(){o.value=setTimeout(()=>requestAnimationFrame(s),Ve(e))}function s(){n(),t()}}import{ref as qe,watch as We}from\"vue\";function ee(e,t={}){let o=qe(t.initial??!1);return We(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 Ge,watch as Xe}from\"vue\";function H(e,t,o){o??={attributes:!0};let n,s=Xe(()=>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()}Ge(a)}import{DateTime as te}from\"luxon\";import{ref as Ye,watch as je}from\"vue\";function oe(e,t){let o=`flux/${e}`,n=Ye(s()??t);function s(){if(o in localStorage){let r=JSON.parse(localStorage.getItem(o));if(Array.isArray(r)&&r[0]===\"DateTime\")r=te.fromISO(r[1]);return r}return null}return je(n,(r)=>{let a=r;if(te.isDateTime(r))a=[\"DateTime\",r.toISO({includeOffset:!0,extendedZone:!0})];localStorage.setItem(o,JSON.stringify(a))}),n}import{ref as I,unref as Ze}from\"vue\";function ne(e){let t=I(0),o=I(0);if(!e)e=I(document);return k(e,\"scroll\",()=>{let n=Ze(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 ae,watch as ie}from\"vue\";import{onMounted as $e,onUnmounted as Je,ref as re,unref as se}from\"vue\";var Qe=0;function D(e=!1){let t=re(`focus-trap-${++Qe}`),o=re(!1);return $e(()=>w.add(se(t),(n)=>o.value=n,e)),Je(()=>w.remove(se(t))),o}import{unref as et,watch as tt}from\"vue\";function A(e,t){tt(e,(o,n,s)=>{if(!p(e)||et(t))return;let a=document.activeElement;s(()=>{requestAnimationFrame(()=>a?.focus())})})}function ce(e,t={}){if(X)return;let{disable:o=ae(!1),disableReturn:n=ae(!1),attachTo:s=null}=t,r=D(!o);A(e,n),ie(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 E(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\",E,{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\",E),u.removeEventListener(\"focusout\",L)})},{immediate:!0}),ie(()=>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 ot,onUnmounted as nt,ref as rt}from\"vue\";function le(e){let t=rt(null);ot(()=>t.value=w.subscribe(e)),nt(()=>t.value?.())}import{watch as st}from\"vue\";function fe(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,E)=>u.tabIndex=E===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\":at(a,i,f,s);break;case\"horizontal\":case\"vertical\":it(a,i,t,o,f,s);break}}st(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 at(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 it(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 nn=\"#f8fafc\",rn=\"#f1f5f9\",sn=\"#e2e8f0\",an=\"#cbd5e1\",cn=\"#94a3b8\",ln=\"#64748b\",fn=\"#475569\",pn=\"#334155\",un=\"#1e293b\",dn=\"#0f172a\",mn=\"#020617\",xn=\"#f9fafb\",bn=\"#f3f4f6\",hn=\"#e5e7eb\",yn=\"#d1d5db\",Tn=\"#9ca3af\",En=\"#6b7280\",vn=\"#4b5563\",gn=\"#374151\",wn=\"#1f2937\",Ln=\"#111827\",Mn=\"#030712\",Rn=\"#fafafa\",Fn=\"#f4f4f5\",kn=\"#e4e4e7\",Hn=\"#d4d4d8\",Dn=\"#a1a1aa\",An=\"#71717a\",Sn=\"#52525b\",In=\"#3f3f46\",On=\"#27272a\",Cn=\"#18181b\",_n=\"#09090b\",Nn=\"#fafafa\",Un=\"#f5f5f5\",Pn=\"#e5e5e5\",Kn=\"#d4d4d4\",zn=\"#a3a3a3\",Bn=\"#737373\",Vn=\"#525252\",qn=\"#404040\",Wn=\"#262626\",Gn=\"#171717\",Xn=\"#0a0a0a\",Yn=\"#fafaf9\",jn=\"#f5f5f4\",Zn=\"#e7e5e4\",$n=\"#d6d3d1\",Jn=\"#a8a29e\",Qn=\"#78716c\",er=\"#57534e\",tr=\"#44403c\",or=\"#292524\",nr=\"#1c1917\",rr=\"#0c0a09\",sr=\"#fef2f2\",ar=\"#fee2e2\",ir=\"#fecaca\",cr=\"#fca5a5\",lr=\"#f87171\",fr=\"#ef4444\",pr=\"#dc2626\",ur=\"#b91c1c\",dr=\"#991b1b\",mr=\"#7f1d1d\",xr=\"#450a0a\",br=\"#fff7ed\",hr=\"#ffedd5\",yr=\"#fed7aa\",Tr=\"#fdba74\",Er=\"#fb923c\",vr=\"#f97316\",gr=\"#ea580c\",wr=\"#c2410c\",Lr=\"#9a3412\",Mr=\"#7c2d12\",Rr=\"#431407\",Fr=\"#fffbeb\",kr=\"#fef3c7\",Hr=\"#fde68a\",Dr=\"#fcd34d\",Ar=\"#fbbf24\",Sr=\"#f59e0b\",Ir=\"#d97706\",Or=\"#b45309\",Cr=\"#92400e\",_r=\"#78350f\",Nr=\"#451a03\",Ur=\"#fefce8\",Pr=\"#fef9c3\",Kr=\"#fef08a\",zr=\"#fde047\",Br=\"#facc15\",Vr=\"#eab308\",qr=\"#ca8a04\",Wr=\"#a16207\",Gr=\"#854d0e\",Xr=\"#713f12\",Yr=\"#422006\",jr=\"#f7fee7\",Zr=\"#ecfccb\",$r=\"#d9f99d\",Jr=\"#bef264\",Qr=\"#a3e635\",es=\"#84cc16\",ts=\"#65a30d\",os=\"#4d7c0f\",ns=\"#3f6212\",rs=\"#365314\",ss=\"#1a2e05\",as=\"#f0fdf4\",is=\"#dcfce7\",cs=\"#bbf7d0\",ls=\"#86efac\",fs=\"#4ade80\",ps=\"#22c55e\",us=\"#16a34a\",ds=\"#15803d\",ms=\"#166534\",xs=\"#14532d\",bs=\"#052e16\",hs=\"#ecfdf5\",ys=\"#d1fae5\",Ts=\"#a7f3d0\",Es=\"#6ee7b7\",vs=\"#34d399\",gs=\"#10b981\",ws=\"#059669\",Ls=\"#047857\",Ms=\"#065f46\",Rs=\"#064e3b\",Fs=\"#022c22\",ks=\"#f0fdfa\",Hs=\"#ccfbf1\",Ds=\"#99f6e4\",As=\"#5eead4\",Ss=\"#2dd4bf\",Is=\"#14b8a6\",Os=\"#0d9488\",Cs=\"#0f766e\",_s=\"#115e59\",Ns=\"#134e4a\",Us=\"#042f2e\",Ps=\"#ecfeff\",Ks=\"#cffafe\",zs=\"#a5f3fc\",Bs=\"#67e8f9\",Vs=\"#22d3ee\",qs=\"#06b6d4\",Ws=\"#0891b2\",Gs=\"#0e7490\",Xs=\"#155e75\",Ys=\"#164e63\",js=\"#083344\",Zs=\"#f0f9ff\",$s=\"#e0f2fe\",Js=\"#bae6fd\",Qs=\"#7dd3fc\",ea=\"#38bdf8\",ta=\"#0ea5e9\",oa=\"#0284c7\",na=\"#0369a1\",ra=\"#075985\",sa=\"#0c4a6e\",aa=\"#082f49\",ia=\"#eff6ff\",ca=\"#dbeafe\",la=\"#bfdbfe\",fa=\"#93c5fd\",pa=\"#60a5fa\",ua=\"#3b82f6\",da=\"#2563eb\",ma=\"#1d4ed8\",xa=\"#1e40af\",ba=\"#1e3a8a\",ha=\"#172554\",ya=\"#eef2ff\",Ta=\"#e0e7ff\",Ea=\"#c7d2fe\",va=\"#a5b4fc\",ga=\"#818cf8\",wa=\"#6366f1\",La=\"#4f46e5\",Ma=\"#4338ca\",Ra=\"#3730a3\",Fa=\"#312e81\",ka=\"#1e1b4b\",Ha=\"#f5f3ff\",Da=\"#ede9fe\",Aa=\"#ddd6fe\",Sa=\"#c4b5fd\",Ia=\"#a78bfa\",Oa=\"#8b5cf6\",Ca=\"#7c3aed\",_a=\"#6d28d9\",Na=\"#5b21b6\",Ua=\"#4c1d95\",Pa=\"#2e1065\",Ka=\"#faf5ff\",za=\"#f3e8ff\",Ba=\"#e9d5ff\",Va=\"#d8b4fe\",qa=\"#c084fc\",Wa=\"#a855f7\",Ga=\"#9333ea\",Xa=\"#7e22ce\",Ya=\"#6b21a8\",ja=\"#581c87\",Za=\"#3b0764\",$a=\"#fdf4ff\",Ja=\"#fae8ff\",Qa=\"#f5d0fe\",ei=\"#f0abfc\",ti=\"#e879f9\",oi=\"#d946ef\",ni=\"#c026d3\",ri=\"#a21caf\",si=\"#86198f\",ai=\"#701a75\",ii=\"#4a044e\",ci=\"#fdf2f8\",li=\"#fce7f3\",fi=\"#fbcfe8\",pi=\"#f9a8d4\",ui=\"#f472b6\",di=\"#ec4899\",mi=\"#db2777\",xi=\"#be185d\",bi=\"#9d174d\",hi=\"#831843\",yi=\"#500724\",Ti=\"#fff1f2\",Ei=\"#ffe4e6\",vi=\"#fecdd3\",gi=\"#fda4af\",wi=\"#fb7185\",Li=\"#f43f5e\",Mi=\"#e11d48\",Ri=\"#be123c\",Fi=\"#9f1239\",ki=\"#881337\",Hi=\"#4c0519\";class pe{#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 ct={beforeUnmount(e){O.get(e)?.unregister(),O.delete(e)},mounted(e){let t=new pe(e);t.register(),O.set(e,t)}},O=new WeakMap;class ue{#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 lt={beforeUnmount(e){C.get(e)?.unregister(),C.delete(e)},mounted(e){let t=new ue(e);t.register(),C.set(e,t)}},C=new WeakMap;export{_n as zinc950,Cn as zinc900,On as zinc800,In as zinc700,Sn as zinc600,An as zinc500,Rn as zinc50,Dn as zinc400,Hn as zinc300,kn as zinc200,Fn as zinc100,Yr as yellow950,Xr as yellow900,Gr as yellow800,Wr as yellow700,qr as yellow600,Vr as yellow500,Ur as yellow50,Br as yellow400,zr as yellow300,Kr as yellow200,Pr as yellow100,g as wrapFocus,W as warn,Pa as violet950,Ua as violet900,Na as violet800,_a as violet700,Ca as violet600,Oa as violet500,Ha as violet50,Ia as violet400,Sa as violet300,Aa as violet200,Da as violet100,lt as vHeightTransition,ct as vFocusTrap,ne as useScrollPosition,oe as useRemembered,H as useMutationObserver,Q as useInterval,ee as useInView,fe as useFocusZone,le as useFocusTrapSubscription,A as useFocusTrapReturn,D as useFocusTrapLock,ce as useFocusTrap,k as useEventListener,J as useDebouncedRef,Z as useComponentId,j as useClickOutside,K as useCalendarYearSwitcher,U as useCalendarMonthSwitcher,N as useCalendar,p as unrefTemplateElement,Us as teal950,Ns as teal900,_s as teal800,Cs as teal700,Os as teal600,Is as teal500,ks as teal50,Ss as teal400,As as teal300,Ds as teal200,Hs as teal100,rr as stone950,nr as stone900,or as stone800,tr as stone700,er as stone600,Qn as stone500,Yn as stone50,Jn as stone400,$n as stone300,Zn as stone200,jn as stone100,mn as slate950,dn as slate900,un as slate800,pn as slate700,fn as slate600,ln as slate500,nn as slate50,cn as slate400,an as slate300,sn as slate200,rn as slate100,aa as sky950,sa as sky900,ra as sky800,na as sky700,oa as sky600,ta as sky500,Zs as sky50,ea as sky400,Qs as sky300,Js as sky200,$s as sky100,Hi as rose950,ki as rose900,Fi as rose800,Ri as rose700,Mi as rose600,Li as rose500,Ti as rose50,wi as rose400,gi as rose300,vi as rose200,Ei as rose100,xr as red950,mr as red900,dr as red800,ur as red700,pr as red600,fr as red500,sr as red50,lr as red400,cr as red300,ir as red200,ar as red100,Za as purple950,ja as purple900,Ya as purple800,Xa as purple700,Ga as purple600,Wa as purple500,Ka as purple50,qa as purple400,Va as purple300,Ba as purple200,za as purple100,yi as pink950,hi as pink900,bi as pink800,xi as pink700,mi as pink600,di as pink500,ci as pink50,ui as pink400,pi as pink300,fi as pink200,li as pink100,Rr as orange950,Mr as orange900,Lr as orange800,wr as orange700,gr as orange600,vr as orange500,br as orange50,Er as orange400,Tr as orange300,yr as orange200,hr as orange100,Xn as neutral950,Gn as neutral900,Wn as neutral800,qn as neutral700,Vn as neutral600,Bn as neutral500,Nn as neutral50,zn as neutral400,Kn as neutral300,Pn as neutral200,Un as neutral100,ss as lime950,rs as lime900,ns as lime800,os as lime700,ts as lime600,es as lime500,jr as lime50,Qr as lime400,Jr as lime300,$r as lime200,Zr as lime100,X as isSSR,ka as indigo950,Fa as indigo900,Ra as indigo800,Ma as indigo700,La as indigo600,wa as indigo500,ya as indigo50,ga as indigo400,va as indigo300,Ea as indigo200,Ta as indigo100,bs as green950,xs as green900,ms as green800,ds as green700,us as green600,ps as green500,as as green50,fs as green400,ls as green300,cs as green200,is as green100,Mn as gray950,Ln as gray900,wn as gray800,gn as gray700,vn as gray600,En as gray500,xn as gray50,Tn as gray400,yn as gray300,hn as gray200,bn as gray100,F as getKeyboardFocusableElements,d as getFocusableElements,R as getFocusableElement,q as getExposedRef,V as getComponentProps,B as getComponentName,M as getBidirectionalFocusElement,ii as fuchsia950,ai as fuchsia900,si as fuchsia800,ri as fuchsia700,ni as fuchsia600,oi as fuchsia500,$a as fuchsia50,ti as fuchsia400,ei as fuchsia300,Qa as fuchsia200,Ja as fuchsia100,z as flattenVNodeTree,Fs as emerald950,Rs as emerald900,Ms as emerald800,Ls as emerald700,ws as emerald600,gs as emerald500,hs as emerald50,vs as emerald400,Es as emerald300,Ts as emerald200,ys as emerald100,js as cyan950,Ys as cyan900,Xs as cyan800,Gs as cyan700,Ws as cyan600,qs as cyan500,Ps as cyan50,Vs as cyan400,Bs as cyan300,zs as cyan200,Ks as cyan100,ha as blue950,ba as blue900,xa as blue800,ma as blue700,da as blue600,ua as blue500,ia as blue50,pa as blue400,fa as blue300,la as blue200,ca as blue100,Nr as amber950,_r as amber900,Cr as amber800,Or as amber700,Ir as amber600,Sr as amber500,Fr as amber50,Ar as amber400,Dr as amber300,Hr as amber200,kr as amber100,w as FOCUS_TRAP_LOCKS};\n\n//# debugId=8E50B4279ACA2D7D64756E2164756E21\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","<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","<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 <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 <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 <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"],"names":["k","e","t","o","n","Pe","s","r","a","oe","Ye","te","je","ne","I","Ze","FluxDashboardInjectionKey","isMenuCollapsed","useRemembered","isNavigationCollapsed","isResizing","ref","provide","watch","_","__","onCleanup","timeout","onResize","_createElementBlock","_normalizeClass","_unref","$style","_renderSlot","_ctx","_createElementVNode","useDashboardInjection","injection","inject","y","useScrollPosition","_createBlock","FluxDashboardTopBar","icon","FluxIcon","title","_openBlock","_createVNode","FluxSpacer","slots","_useSlots","_mergeProps","FluxMenuItem","_cache","$event","_component_router_link","logoLocation","_Fragment","_renderList","index"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../internals/dist/index.js","../src/data/index.ts","../src/component/FluxDashboard.vue","../src/composable/useDashboardInjection.ts","../src/component/FluxDashboardContent.vue","../src/component/FluxDashboardTopBar.vue","../src/component/FluxDashboardHeader.vue","../src/component/FluxDashboardMenu.vue","../src/component/FluxDashboardNavigation.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","<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","<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 <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 <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 <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"],"names":["Ke","je","oe","Ze","I","$e","useRemembered","isResizing","_createElementBlock","_normalizeClass","_unref","$style","_renderSlot","_createElementVNode","useScrollPosition","_createBlock","FluxDashboardTopBar","_openBlock","_createVNode","_useSlots","_mergeProps","_Fragment","_renderList"],"mappings":";;;AAAurM,SAAS,EAAE,GAAE,GAAE,GAAE,IAAE,EAAC,SAAQ,KAAE,GAAE;AAACA,QAAG,GAAE,CAAC,GAAE,GAAE,MAAI;AAAC,QAAG,CAAC,EAAE;AAAO,MAAE,iBAAiB,GAAE,GAAE,CAAC,GAAE,EAAE,MAAI,EAAE,oBAAoB,GAAE,CAAC,CAAC;AAAA,EAAC,GAAE,EAAC,WAAU,KAAE,CAAC;AAAC;AAAg0B,SAAS,GAAG,GAAE,GAAE;AAAC,MAAI,IAAE,QAAQ,CAAC,IAAG,IAAEC,IAAG,EAAC,KAAI,CAAC;AAAE,WAAS,IAAG;AAAC,QAAG,KAAK,cAAa;AAAC,UAAI,IAAE,KAAK,MAAM,aAAa,QAAQ,CAAC,CAAC;AAAE,UAAG,MAAM,QAAQ,CAAC,KAAG,EAAE,CAAC,MAAI,WAAW,KAAEC,SAAG,QAAQ,EAAE,CAAC,CAAC;AAAE,aAAO;AAAA,IAAC;AAAC,WAAO;AAAA,EAAI;AAAC,SAAOC,MAAG,GAAE,CAAC,MAAI;AAAC,QAAI,IAAE;AAAE,QAAGD,SAAG,WAAW,CAAC,EAAE,KAAE,CAAC,YAAW,EAAE,MAAM,EAAC,eAAc,MAAG,cAAa,KAAE,CAAC,CAAC;AAAE,iBAAa,QAAQ,GAAE,KAAK,UAAU,CAAC,CAAC;AAAA,EAAC,CAAC,GAAE;AAAC;AAAuC,SAAS,GAAG,GAAE;AAAC,MAAI,IAAEE,IAAE,CAAC,GAAE,IAAEA,IAAE,CAAC;AAAE,MAAG,CAAC,EAAE,KAAEA,IAAE,QAAQ;AAAE,SAAO,EAAE,GAAE,UAAS,MAAI;AAAC,QAAI,IAAEC,MAAG,CAAC;AAAE,QAAG,aAAa,SAAS,KAAE,EAAE;AAAiB,MAAE,QAAM,GAAG,cAAY,GAAE,EAAE,QAAM,GAAG,aAAW;AAAA,EAAC,CAAC,GAAE,EAAC,GAAE,GAAE,GAAE,EAAC;AAAC;ACEtsP,MAAM,4BAAkE,OAAA;;;;;;;;;;;;;AC4B3E,UAAM,kBAAkBC,GAAc,4BAA4B,IAAI;AACtE,UAAM,wBAAwBA,GAAc,kCAAkC,IAAI;AAClF,UAAMC,cAAa,IAAI,KAAK;AAE5B,YAAQ,2BAA2B;AAAA,MAC/B;AAAA,MACA;AAAA,IAAA,CACH;AAED,UAAM,uBAAuB,CAAC,GAAG,IAAI,cAAc;AAC/C,UAAI;AAEJ,eAAS,WAAiB;AACtB,qBAAa,OAAO;AACpB,QAAAA,YAAW,QAAQ;AACnB,kBAAU,WAAW,MAAMA,YAAW,QAAQ,OAAO,EAAE;AAAA,MAAA;AAG3D,aAAO,iBAAiB,UAAU,UAAU,EAAC,SAAS,MAAK;AAE3D,gBAAU,MAAM,OAAO,oBAAoB,UAAU,QAAQ,CAAC;AAAA,IAAA,GAC/D,EAAC,WAAW,MAAK;;0BAlDpBC,mBAUM,OAAA;AAAA,QAVA,OAAKC,eAAA,CAAGC,gBAAO,WAAWH,YAAA,SAAcG,MAAAC,QAAA,EAAO,UAAU,CAAA;AAAA,MAAA;QAC3DC,WAAyB,KAAA,QAAA,YAAA;AAAA,QACzBA,WAAmB,KAAA,QAAA,MAAA;AAAA,QAEnBC,mBAGM,OAAA;AAAA,UAHA,OAAKJ,eAAEC,MAAAC,QAAA,EAAO,cAAc;AAAA,QAAA;UAC9BC,WAAqB,KAAA,QAAA,QAAA;AAAA,UACrBA,WAAO,KAAA,QAAA,SAAA;AAAA,QAAA;QAGXA,WAAmB,KAAA,QAAA,MAAA;AAAA,MAAA;;;;ACP3B,SAAA,wBAAmD;AAC/C,QAAM,YAAY,OAAO,yBAAyB;AAElD,MAAI,CAAC,WAAW;AACZ,UAAM,IAAI,MAAM,4EAA4E;AAAA,EAAA;AAGhG,SAAO;AACX;;;;;;;;;;;;;ACCI,UAAM,EAAC,gBAAA,IAAmB,sBAAA;;0BAX1BJ,mBAEO,QAAA;AAAA,QAFA,OAAKC,eAAA,CAAGC,gBAAO,mBAAmBA,MAAA,eAAA,KAAmBA,MAAAC,QAAA,EAAO,yBAAyB,CAAA;AAAA,MAAA;QACxFC,WAAO,KAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;ACUX,UAAM,EAAC,gBAAA,IAAmB,sBAAA;;0BAX1BJ,mBAES,UAAA;AAAA,QAFA,OAAKC,eAAA,CAAGC,gBAAO,kBAAkBA,MAAA,eAAA,KAAmBA,MAAAC,QAAA,EAAO,wBAAwB,CAAA;AAAA,MAAA;QACxFC,WAAO,KAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;;AC8BX,UAAM,EAAC,EAAA,IAAKE,GAAA;;0BA/BZC,YAcsBC,aAAA;AAAA,QAdA,OAAKP,eAAEC,WAAC,IAAOA,MAAAC,QAAA,EAAO,0BAA0BD,MAAAC,QAAA,EAAO,eAAe;AAAA,MAAA;yBACxF,MAAoB;AAAA,UAApBC,WAAoB,KAAA,QAAA,OAAA;AAAA,UAGV,QAAA,qBADVG,YAEkBL,MAAA,QAAA,GAAA;AAAA;YAAb,MAAM,QAAA;AAAA,UAAA;UAED,QAAA,SAAVO,UAAA,GAAAT,mBAEK,oCADE,QAAA,KAAK,GAAA,CAAA;UAGZU,YAAaR,MAAA,UAAA,CAAA;AAAA,UAEbE,WAAkB,KAAA,QAAA,KAAA;AAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACwBtB,UAAM,EAAC,gBAAA,IAAmB,sBAAA;;0BArC1BJ,mBAoBQ,SAAA;AAAA,QApBA,OAAKC,eAAA,CAAGC,gBAAO,eAAeA,MAAA,eAAA,KAAmBA,MAAAC,QAAA,EAAO,sBAAsB,CAAA;AAAA,MAAA;QAClFO,YAcsBF,aAAA,MAAA;AAAA,2BAblB,MAA4B;AAAA,YAA5BJ,WAA4B,KAAA,QAAA,eAAA;AAAA,YAGlB,QAAA,qBADVG,YAEkBL,MAAA,QAAA,GAAA;AAAA;cAAb,MAAM,QAAA;AAAA,YAAA;YAED,QAAA,SAAVO,UAAA,GAAAT,mBAEK,kCADE,QAAA,KAAK,GAAA,CAAA;YAGZU,YAAaR,MAAA,UAAA,CAAA;AAAA,YAEbE,WAA0B,KAAA,QAAA,aAAA;AAAA,UAAA;;;QAG9BC,mBAEM,OAAA;AAAA,UAFA,OAAKJ,eAAEC,MAAAC,QAAA,EAAO,iBAAiB;AAAA,QAAA;UACjCC,WAAO,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC+Bf,UAAM,QAAQO,SAAA;AAKd,UAAM;AAAA,MACF;AAAA,MACA;AAAA,IAAA,IACA,sBAAA;;;0BAzDJX,mBA8BM,OA9BNY,WA8BM,KAAA,QA7BY;AAAA,QACb,OAAOV,+BAAwBA,MAAA,MAAA,EAAO,+BAA+BA,MAAA,MAAA,EAAO;AAAA,MAAA;QAC7EG,mBAiBS,UAAA;AAAA,UAjBA,OAAKJ,eAAEC,MAAA,MAAA,EAAO,yBAAyB;AAAA,QAAA;UAC5CQ,YAE6DR,MAAA,YAAA,GAAA;AAAA,YADzD,gBAAa;AAAA,YACZ,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,sBAAA,QAAqB,CAAIA,MAAA,qBAAA;AAAA,UAAA;UAG3B,MAAM,qBADhBK,YAOc,wBAAA;AAAA;YALT,OAAKN,eAAEC,MAAA,MAAA,EAAO,uBAAuB;AAAA,YACrC,IAAI,QAAA,gBAAY;AAAA,UAAA;6BACjB,MAEsC;AAAA,cAFtCE,WAEsC,gFAAzBF,MAAA,qBAAA,EAAA,CAAqB,CAAA,CAAA;AAAA,YAAA;;;UAGtCQ,YAEiDR,MAAA,YAAA,GAAA;AAAA,YAD7C,gBAAa;AAAA,YACZ,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,gBAAA,QAAe,CAAIA,MAAA,eAAA;AAAA,UAAA;;sBAGnCF,mBAGoDa,UAAA,MAAAC,WAFhC,GAAC,CAAV,UAAK;iBADhBT,mBAGoD,OAAA;AAAA,YAD/C,KAAK;AAAA,YACL,OAAKJ,eAAEC,MAAA,MAAA,EAAO,8BAA8B;AAAA,UAAA;;QAEjDG,mBAEO,QAAA;AAAA,UAFA,OAAKJ,eAAEC,MAAA,MAAA,EAAO,sBAAsB;AAAA,QAAA;UACvCE,WAAO,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;;;;;;;;0BC5BfJ,mBAYQ,SAAA;AAAA,QAZA,OAAKC,eAAEC,MAAAC,QAAA,EAAO,aAAa;AAAA,MAAA;QAC/BO,YAQsBF,aAAA,MAAA;AAAA,2BAPlB,MAA4B;AAAA,YAA5BJ,WAA4B,KAAA,QAAA,eAAA;AAAA,YAE5BC,mBAAoB,4BAAb,QAAA,KAAK,GAAA,CAAA;AAAA,YAEZK,YAAaR,MAAA,UAAA,CAAA;AAAA,YAEbE,WAA0B,KAAA,QAAA,aAAA;AAAA,UAAA;;;QAG9BA,WAAO,KAAA,QAAA,SAAA;AAAA,MAAA;;;;"}
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.19",
4
+ "version": "3.0.0-next.20",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "funding": "https://github.com/sponsors/basmilius",
@@ -51,18 +51,18 @@
51
51
  "typings": "./dist/index.d.ts",
52
52
  "sideEffects": false,
53
53
  "dependencies": {
54
- "@flux-ui/components": "3.0.0-next.19",
55
- "@flux-ui/internals": "3.0.0-next.19",
56
- "vue": "^3.5.18"
54
+ "@flux-ui/components": "3.0.0-next.20",
55
+ "@flux-ui/internals": "3.0.0-next.20",
56
+ "vue": "^3.5.23"
57
57
  },
58
58
  "devDependencies": {
59
- "@basmilius/vite-preset": "^2.9.0",
60
- "@flux-ui/types": "3.0.0-next.19",
61
- "@types/node": "^24.2.1",
59
+ "@basmilius/vite-preset": "^2.13.0",
60
+ "@flux-ui/types": "3.0.0-next.20",
61
+ "@types/node": "^24.10.0",
62
62
  "@vitejs/plugin-vue": "^6.0.1",
63
- "sass-embedded": "^1.90.0",
64
- "typescript": "^5.9.2",
65
- "vite": "^7.1.1",
66
- "vue-tsc": "^3.0.5"
63
+ "sass-embedded": "^1.93.3",
64
+ "typescript": "^5.9.3",
65
+ "vite": "^7.2.1",
66
+ "vue-tsc": "^3.1.3"
67
67
  }
68
68
  }