@flux-ui/dashboard 3.0.0-next.4 → 3.0.0-next.40
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/README.md +11 -40
- package/dist/component/FluxDashboard.vue.d.ts +10 -11
- package/dist/component/FluxDashboardContent.vue.d.ts +2 -2
- package/dist/component/FluxDashboardHeader.vue.d.ts +2 -2
- package/dist/component/FluxDashboardMenu.vue.d.ts +3 -3
- package/dist/component/FluxDashboardNavigation.vue.d.ts +2 -2
- package/dist/component/FluxDashboardSide.vue.d.ts +2 -2
- package/dist/component/FluxDashboardTopBar.vue.d.ts +2 -2
- package/dist/component/index.d.ts +0 -1
- package/dist/composable/index.d.ts +0 -1
- package/dist/composable/useDashboardInjection.d.ts +0 -1
- package/dist/data/index.d.ts +0 -1
- package/dist/index.css +427 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +3690 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +13 -0
- package/package.json +20 -21
- package/src/component/FluxDashboard.vue +12 -8
- package/src/component/FluxDashboardMenu.vue +4 -2
- package/src/composable/useDashboardInjection.ts +1 -1
- package/src/css/component/Dashboard.module.scss +16 -14
- package/src/css/component/DashboardContent.module.scss +12 -8
- package/src/css/component/DashboardNavigation.module.scss +13 -11
- package/src/css/component/DashboardPane.module.scss +7 -7
- package/src/css/component/DashboardTopBar.module.scss +7 -7
- package/dist/component/FluxDashboard.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardContent.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardHeader.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardMenu.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardNavigation.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardSide.vue.d.ts.map +0 -1
- package/dist/component/FluxDashboardTopBar.vue.d.ts.map +0 -1
- package/dist/component/index.d.ts.map +0 -1
- package/dist/composable/index.d.ts.map +0 -1
- package/dist/composable/useDashboardInjection.d.ts.map +0 -1
- package/dist/data/index.d.ts.map +0 -1
- package/dist/flux-dashboard.css +0 -1
- package/dist/flux-dashboard.js +0 -217
- package/dist/flux-dashboard.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/tsconfig.json +0 -45
package/README.md
CHANGED
|
@@ -1,45 +1,16 @@
|
|
|
1
|
-
#
|
|
1
|
+
# `@flux-ui/dashboard`
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
targets Vue 3+. Please read the following instructions and checks in order to proceed.
|
|
3
|
+
Contains Flux UI components for creating dashboards.
|
|
5
4
|
|
|
6
|
-
##
|
|
5
|
+
## ⭐️ Prerequisites
|
|
7
6
|
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- The internal package is available under `@flux-ui/internals`.
|
|
7
|
+
- Bun >= 1.2.13
|
|
8
|
+
- Node >= 23
|
|
11
9
|
|
|
12
|
-
##
|
|
10
|
+
## 🚀 Getting started
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
- Use `pnpm build` to build a production bundle.
|
|
20
|
-
- Use `pnpm link` to link the dist folder of flux to your global node_modules.
|
|
21
|
-
|
|
22
|
-
## 🪵 Git
|
|
23
|
-
|
|
24
|
-
All commit messages and branches will be in English.
|
|
25
|
-
|
|
26
|
-
### Branches
|
|
27
|
-
|
|
28
|
-
- **Main** — Contains the latest stable release and is the exact source that is running in production.
|
|
29
|
-
- **Develop** — Contains the latest staging release that is marked for deployment and is the exact source that is running on staging.
|
|
30
|
-
- **Feature branches** — Any feature should have its own feature branch. Once complete, the branch should be merged into the _develop_ branch and the feature branch should be deleted.
|
|
31
|
-
- **Bugfix branches** — When a bug is found, it should be fixed within a bugfix branch. Once complete the branch should be merged into the _develop_ branch and the feature branch should be deleted.
|
|
32
|
-
|
|
33
|
-
### Commit messages
|
|
34
|
-
|
|
35
|
-
Commit messages are bound to the following templates:
|
|
36
|
-
|
|
37
|
-
- `<type>: <message> `
|
|
38
|
-
- `<type>(<feature>): <message>`
|
|
39
|
-
- `<type>(<feature>): <message> [<issue-number>]`
|
|
40
|
-
|
|
41
|
-
#### Examples
|
|
42
|
-
|
|
43
|
-
- `feat(expandable): adds header slot to expandable.`
|
|
44
|
-
- `feat(expandable): adds header slot to expandable. [FLUX-123]`
|
|
45
|
-
- `chore: adds vue 3 build target.`
|
|
12
|
+
1. Make sure that the monorepo of Flux is used.
|
|
13
|
+
2. Run `bun install` in the root of the project.
|
|
14
|
+
3. Run `bun --cwd packages/dashboard build` to build the project.
|
|
15
|
+
4. To link Flux Dashboard globally, using Bun, run `bun link --cwd packages/dashboard`.
|
|
16
|
+
- In another project, use `link:@flux-ui/dashboard` as the dependency version in `package.json`.
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { VNode } from 'vue';
|
|
1
|
+
import { VNode, DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
2
2
|
declare function __VLS_template(): {
|
|
3
3
|
attrs: Partial<{}>;
|
|
4
4
|
slots: Readonly<{
|
|
5
5
|
default(): VNode;
|
|
6
|
-
header(): VNode;
|
|
7
|
-
navigation(): VNode;
|
|
8
|
-
menu(): VNode;
|
|
9
|
-
side(): VNode;
|
|
6
|
+
header?(): VNode;
|
|
7
|
+
navigation?(): VNode;
|
|
8
|
+
menu?(): VNode;
|
|
9
|
+
side?(): VNode;
|
|
10
10
|
}> & {
|
|
11
11
|
default(): VNode;
|
|
12
|
-
header(): VNode;
|
|
13
|
-
navigation(): VNode;
|
|
14
|
-
menu(): VNode;
|
|
15
|
-
side(): VNode;
|
|
12
|
+
header?(): VNode;
|
|
13
|
+
navigation?(): VNode;
|
|
14
|
+
menu?(): VNode;
|
|
15
|
+
side?(): VNode;
|
|
16
16
|
};
|
|
17
17
|
refs: {};
|
|
18
18
|
rootEl: HTMLDivElement;
|
|
19
19
|
};
|
|
20
20
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
21
|
-
declare const __VLS_component:
|
|
21
|
+
declare const __VLS_component: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
22
22
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
23
23
|
export default _default;
|
|
24
24
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -26,4 +26,3 @@ type __VLS_WithTemplateSlots<T, S> = T & {
|
|
|
26
26
|
$slots: S;
|
|
27
27
|
};
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=FluxDashboard.vue.d.ts.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
1
2
|
declare function __VLS_template(): {
|
|
2
3
|
attrs: Partial<{}>;
|
|
3
4
|
slots: {
|
|
@@ -7,7 +8,7 @@ declare function __VLS_template(): {
|
|
|
7
8
|
rootEl: HTMLElement;
|
|
8
9
|
};
|
|
9
10
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
10
|
-
declare const __VLS_component:
|
|
11
|
+
declare const __VLS_component: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLElement>;
|
|
11
12
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
12
13
|
export default _default;
|
|
13
14
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -15,4 +16,3 @@ type __VLS_WithTemplateSlots<T, S> = T & {
|
|
|
15
16
|
$slots: S;
|
|
16
17
|
};
|
|
17
18
|
};
|
|
18
|
-
//# sourceMappingURL=FluxDashboardContent.vue.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FluxIconName } from '@flux-ui/types';
|
|
2
|
+
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
2
3
|
type __VLS_Props = {
|
|
3
4
|
readonly icon?: FluxIconName;
|
|
4
5
|
readonly title?: string;
|
|
@@ -13,7 +14,7 @@ declare function __VLS_template(): {
|
|
|
13
14
|
rootEl: HTMLElement;
|
|
14
15
|
};
|
|
15
16
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
16
|
-
declare const __VLS_component:
|
|
17
|
+
declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLElement>;
|
|
17
18
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
18
19
|
export default _default;
|
|
19
20
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -21,4 +22,3 @@ type __VLS_WithTemplateSlots<T, S> = T & {
|
|
|
21
22
|
$slots: S;
|
|
22
23
|
};
|
|
23
24
|
};
|
|
24
|
-
//# sourceMappingURL=FluxDashboardHeader.vue.d.ts.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { FluxIconName } from '@flux-ui/types';
|
|
2
|
+
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
2
3
|
type __VLS_Props = {
|
|
3
4
|
readonly icon?: FluxIconName;
|
|
4
|
-
readonly title
|
|
5
|
+
readonly title?: string;
|
|
5
6
|
};
|
|
6
7
|
declare function __VLS_template(): {
|
|
7
8
|
attrs: Partial<{}>;
|
|
@@ -14,7 +15,7 @@ declare function __VLS_template(): {
|
|
|
14
15
|
rootEl: HTMLElement;
|
|
15
16
|
};
|
|
16
17
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
17
|
-
declare const __VLS_component:
|
|
18
|
+
declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLElement>;
|
|
18
19
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
19
20
|
export default _default;
|
|
20
21
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -22,4 +23,3 @@ type __VLS_WithTemplateSlots<T, S> = T & {
|
|
|
22
23
|
$slots: S;
|
|
23
24
|
};
|
|
24
25
|
};
|
|
25
|
-
//# sourceMappingURL=FluxDashboardMenu.vue.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FluxTo } from '@flux-ui/types';
|
|
2
|
+
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
2
3
|
type __VLS_Props = {
|
|
3
4
|
logoLocation?: FluxTo;
|
|
4
5
|
};
|
|
@@ -15,7 +16,7 @@ declare function __VLS_template(): {
|
|
|
15
16
|
rootEl: any;
|
|
16
17
|
};
|
|
17
18
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
18
|
-
declare const __VLS_component:
|
|
19
|
+
declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
|
|
19
20
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
20
21
|
export default _default;
|
|
21
22
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -23,4 +24,3 @@ type __VLS_WithTemplateSlots<T, S> = T & {
|
|
|
23
24
|
$slots: S;
|
|
24
25
|
};
|
|
25
26
|
};
|
|
26
|
-
//# sourceMappingURL=FluxDashboardNavigation.vue.d.ts.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
1
2
|
type __VLS_Props = {
|
|
2
3
|
readonly title: string;
|
|
3
4
|
};
|
|
@@ -12,7 +13,7 @@ declare function __VLS_template(): {
|
|
|
12
13
|
rootEl: HTMLElement;
|
|
13
14
|
};
|
|
14
15
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
15
|
-
declare const __VLS_component:
|
|
16
|
+
declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>;
|
|
16
17
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
17
18
|
export default _default;
|
|
18
19
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -20,4 +21,3 @@ type __VLS_WithTemplateSlots<T, S> = T & {
|
|
|
20
21
|
$slots: S;
|
|
21
22
|
};
|
|
22
23
|
};
|
|
23
|
-
//# sourceMappingURL=FluxDashboardSide.vue.d.ts.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
1
2
|
declare function __VLS_template(): {
|
|
2
3
|
attrs: Partial<{}>;
|
|
3
4
|
slots: {
|
|
@@ -7,7 +8,7 @@ declare function __VLS_template(): {
|
|
|
7
8
|
rootEl: HTMLElement;
|
|
8
9
|
};
|
|
9
10
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
10
|
-
declare const __VLS_component:
|
|
11
|
+
declare const __VLS_component: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLElement>;
|
|
11
12
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
12
13
|
export default _default;
|
|
13
14
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -15,4 +16,3 @@ type __VLS_WithTemplateSlots<T, S> = T & {
|
|
|
15
16
|
$slots: S;
|
|
16
17
|
};
|
|
17
18
|
};
|
|
18
|
-
//# sourceMappingURL=FluxDashboardTopBar.vue.d.ts.map
|
|
@@ -4,4 +4,3 @@ export { default as FluxDashboardHeader } from './FluxDashboardHeader.vue';
|
|
|
4
4
|
export { default as FluxDashboardMenu } from './FluxDashboardMenu.vue';
|
|
5
5
|
export { default as FluxDashboardNavigation } from './FluxDashboardNavigation.vue';
|
|
6
6
|
export { default as FluxDashboardSide } from './FluxDashboardSide.vue';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/data/index.d.ts
CHANGED
package/dist/index.css
ADDED
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--dashboard-background: var(--gray-25);
|
|
3
|
+
--dashboard-duration: 360ms;
|
|
4
|
+
--dashboard-navigation-background: var(--primary-950);
|
|
5
|
+
--dashboard-navigation-foreground: var(--primary-25);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
[dark] {
|
|
9
|
+
--dashboard-navigation-background: color-mix(in srgb, var(--gray-25), black 25%);
|
|
10
|
+
--dashboard-navigation-foreground: var(--gray-800);
|
|
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: 21px;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.dashboard-content {
|
|
66
|
+
display: flex;
|
|
67
|
+
padding: 0 21px;
|
|
68
|
+
flex-flow: column;
|
|
69
|
+
flex-grow: 1;
|
|
70
|
+
}
|
|
71
|
+
.dashboard-content > :is(.calendar, .table) {
|
|
72
|
+
margin-left: -21px;
|
|
73
|
+
margin-right: -21px;
|
|
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: 21px;
|
|
84
|
+
padding-right: 21px;
|
|
85
|
+
}
|
|
86
|
+
.dashboard-content > .table {
|
|
87
|
+
border-top: 1px solid var(--surface-stroke);
|
|
88
|
+
}
|
|
89
|
+
.dashboard-content > .table .table-cell:first-child .table-cell-content {
|
|
90
|
+
padding-left: 21px;
|
|
91
|
+
}
|
|
92
|
+
.dashboard-content > .table .table-cell:last-child .table-cell-content {
|
|
93
|
+
padding-right: 21px;
|
|
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: 72px;
|
|
105
|
+
padding-left: 21px;
|
|
106
|
+
padding-right: 21px;
|
|
107
|
+
align-items: center;
|
|
108
|
+
flex-flow: row;
|
|
109
|
+
gap: 15px;
|
|
110
|
+
background: rgb(from var(--gray-25) r g b/0.9);
|
|
111
|
+
backdrop-filter: blur(10px) saturate(180%);
|
|
112
|
+
z-index: 100;
|
|
113
|
+
}
|
|
114
|
+
.dashboard-top-bar > h1 {
|
|
115
|
+
font-size: 16px;
|
|
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-50), 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-50);
|
|
148
|
+
overflow: auto;
|
|
149
|
+
z-index: 200;
|
|
150
|
+
}
|
|
151
|
+
.dashboard-pane .menu-sub-header {
|
|
152
|
+
background: linear-gradient(to bottom, var(--gray-50) 75%, transparent);
|
|
153
|
+
}
|
|
154
|
+
.dashboard-pane .dashboard-top-bar {
|
|
155
|
+
background: rgb(from var(--gray-50) r g b/0.9);
|
|
156
|
+
}
|
|
157
|
+
.dashboard-pane .filter {
|
|
158
|
+
--background: var(--gray-50);
|
|
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(--surface-stroke);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.dashboard-menu-body {
|
|
189
|
+
padding: 0 18px 21px;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.dashboard-side {
|
|
193
|
+
border-left: 1px solid var(--surface-stroke);
|
|
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-900);
|
|
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-900);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
.dashboard-navigation .menu-item:active {
|
|
244
|
+
background: var(--primary-800);
|
|
245
|
+
}
|
|
246
|
+
.dashboard-navigation .menu-item-highlighted {
|
|
247
|
+
background: var(--primary-900);
|
|
248
|
+
}
|
|
249
|
+
.dashboard-navigation .menu-item-icon {
|
|
250
|
+
margin-left: 0;
|
|
251
|
+
margin-right: 0;
|
|
252
|
+
color: var(--dashboard-navigation-foreground);
|
|
253
|
+
font-size: 24px;
|
|
254
|
+
}
|
|
255
|
+
.dashboard-navigation .menu-item-label {
|
|
256
|
+
transition: var(--dashboard-duration) var(--swift-out);
|
|
257
|
+
transition-property: filter, opacity, translate;
|
|
258
|
+
white-space: nowrap;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.dashboard-navigation-collapsed {
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
[dark] .dashboard-navigation .divider-line {
|
|
265
|
+
background: var(--gray-100);
|
|
266
|
+
}
|
|
267
|
+
@media (hover: hover) {
|
|
268
|
+
[dark] .dashboard-navigation .menu-item:hover {
|
|
269
|
+
background: var(--gray-100);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
[dark] .dashboard-navigation .menu-item:active {
|
|
273
|
+
background: var(--gray-200);
|
|
274
|
+
}
|
|
275
|
+
[dark] .dashboard-navigation .menu-item-highlighted {
|
|
276
|
+
background: var(--gray-50);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.dashboard-navigation-logo {
|
|
280
|
+
display: flex;
|
|
281
|
+
height: 54px;
|
|
282
|
+
width: 54px;
|
|
283
|
+
align-items: center;
|
|
284
|
+
justify-content: center;
|
|
285
|
+
}
|
|
286
|
+
.dashboard-navigation-logo :is(svg) {
|
|
287
|
+
max-height: 48px;
|
|
288
|
+
max-width: 48px;
|
|
289
|
+
width: 100%;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.dashboard-navigation-rounding-fix {
|
|
293
|
+
position: absolute;
|
|
294
|
+
display: block;
|
|
295
|
+
height: var(--radius);
|
|
296
|
+
width: var(--radius);
|
|
297
|
+
content: "";
|
|
298
|
+
background: var(--dashboard-navigation-background);
|
|
299
|
+
transition: left var(--dashboard-duration) var(--swift-out);
|
|
300
|
+
}
|
|
301
|
+
.dashboard-navigation-rounding-fix::before {
|
|
302
|
+
position: absolute;
|
|
303
|
+
display: block;
|
|
304
|
+
inset: 0;
|
|
305
|
+
content: "";
|
|
306
|
+
background: var(--gray-50);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.dashboard:not(:has(.dashboard-menu)) .dashboard-navigation-rounding-fix::before {
|
|
310
|
+
background: var(--gray-25);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
@media (min-width: 1024px) {
|
|
314
|
+
.dashboard-navigation {
|
|
315
|
+
height: 100dvh;
|
|
316
|
+
width: 300px;
|
|
317
|
+
padding: 15px;
|
|
318
|
+
flex-flow: column;
|
|
319
|
+
gap: 15px;
|
|
320
|
+
transition: width var(--dashboard-duration) var(--swift-out);
|
|
321
|
+
}
|
|
322
|
+
.dashboard-navigation-collapsed {
|
|
323
|
+
width: 84px;
|
|
324
|
+
}
|
|
325
|
+
.dashboard-navigation-collapsed .menu-item-label {
|
|
326
|
+
filter: blur(6px);
|
|
327
|
+
opacity: 0;
|
|
328
|
+
translate: -12px 0;
|
|
329
|
+
}
|
|
330
|
+
.dashboard-navigation-header {
|
|
331
|
+
display: flex;
|
|
332
|
+
}
|
|
333
|
+
.dashboard-navigation-header .menu-item {
|
|
334
|
+
display: none;
|
|
335
|
+
}
|
|
336
|
+
.dashboard-navigation-nav {
|
|
337
|
+
display: flex;
|
|
338
|
+
flex-flow: column;
|
|
339
|
+
flex-grow: 1;
|
|
340
|
+
}
|
|
341
|
+
.dashboard-navigation-rounding-fix {
|
|
342
|
+
left: 100%;
|
|
343
|
+
}
|
|
344
|
+
.dashboard-navigation-rounding-fix:first-of-type {
|
|
345
|
+
top: 0;
|
|
346
|
+
}
|
|
347
|
+
.dashboard-navigation-rounding-fix:first-of-type::before {
|
|
348
|
+
border-top-left-radius: var(--radius);
|
|
349
|
+
}
|
|
350
|
+
.dashboard-navigation-rounding-fix:not(:first-of-type) {
|
|
351
|
+
bottom: 0;
|
|
352
|
+
}
|
|
353
|
+
.dashboard-navigation-rounding-fix:not(:first-of-type)::before {
|
|
354
|
+
border-bottom-left-radius: var(--radius);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
@media (max-width: 1023.98px) {
|
|
358
|
+
.dashboard-navigation {
|
|
359
|
+
width: 100dvw;
|
|
360
|
+
height: 84px;
|
|
361
|
+
}
|
|
362
|
+
.dashboard-navigation::after {
|
|
363
|
+
position: fixed;
|
|
364
|
+
display: block;
|
|
365
|
+
inset: 0;
|
|
366
|
+
width: 100dvw;
|
|
367
|
+
height: 100dvh;
|
|
368
|
+
content: "";
|
|
369
|
+
background: rgb(from var(--gray-200) r g b/0.5);
|
|
370
|
+
backdrop-filter: blur(3px) saturate(180%);
|
|
371
|
+
transition: var(--dashboard-duration) var(--swift-out);
|
|
372
|
+
transition-property: background, backdrop-filter;
|
|
373
|
+
z-index: 1900;
|
|
374
|
+
}
|
|
375
|
+
.dashboard-navigation-header {
|
|
376
|
+
display: flex;
|
|
377
|
+
width: inherit;
|
|
378
|
+
height: inherit;
|
|
379
|
+
padding: 0 15px;
|
|
380
|
+
align-items: center;
|
|
381
|
+
flex-flow: row;
|
|
382
|
+
justify-content: space-between;
|
|
383
|
+
}
|
|
384
|
+
.dashboard-navigation-header .menu-item {
|
|
385
|
+
align-self: center;
|
|
386
|
+
justify-content: center;
|
|
387
|
+
}
|
|
388
|
+
.dashboard-navigation-nav {
|
|
389
|
+
position: fixed;
|
|
390
|
+
display: flex;
|
|
391
|
+
top: 0;
|
|
392
|
+
left: 0;
|
|
393
|
+
width: min(300px, 100dvw - 42px);
|
|
394
|
+
height: 100dvh;
|
|
395
|
+
padding: 15px;
|
|
396
|
+
flex-flow: column;
|
|
397
|
+
background: var(--dashboard-navigation-background);
|
|
398
|
+
transition: translate var(--dashboard-duration) var(--swift-out);
|
|
399
|
+
z-index: 2000;
|
|
400
|
+
}
|
|
401
|
+
.dashboard-navigation-rounding-fix {
|
|
402
|
+
position: fixed;
|
|
403
|
+
top: 84px;
|
|
404
|
+
z-index: 750;
|
|
405
|
+
}
|
|
406
|
+
.dashboard-navigation-rounding-fix:first-of-type {
|
|
407
|
+
left: 0;
|
|
408
|
+
}
|
|
409
|
+
.dashboard-navigation-rounding-fix:first-of-type::before {
|
|
410
|
+
border-top-left-radius: var(--radius);
|
|
411
|
+
}
|
|
412
|
+
.dashboard-navigation-rounding-fix:not(:first-of-type) {
|
|
413
|
+
right: 0;
|
|
414
|
+
}
|
|
415
|
+
.dashboard-navigation-rounding-fix:not(:first-of-type)::before {
|
|
416
|
+
border-top-right-radius: var(--radius);
|
|
417
|
+
}
|
|
418
|
+
.dashboard-navigation-collapsed::after {
|
|
419
|
+
background: transparent;
|
|
420
|
+
backdrop-filter: none;
|
|
421
|
+
pointer-events: none;
|
|
422
|
+
}
|
|
423
|
+
.dashboard-navigation-collapsed .dashboard-navigation-nav {
|
|
424
|
+
pointer-events: none;
|
|
425
|
+
translate: -100% 0;
|
|
426
|
+
}
|
|
427
|
+
}/*$vite$:1*/
|
package/dist/index.d.ts
CHANGED