@flux-ui/dashboard 3.0.0-next.6 → 3.0.0-next.60

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.
Files changed (47) hide show
  1. package/README.md +26 -35
  2. package/dist/component/FluxDashboard.vue.d.ts +2 -3
  3. package/dist/component/FluxDashboardContent.vue.d.ts +2 -2
  4. package/dist/component/FluxDashboardHeader.vue.d.ts +2 -2
  5. package/dist/component/FluxDashboardMenu.vue.d.ts +3 -3
  6. package/dist/component/FluxDashboardNavigation.vue.d.ts +2 -2
  7. package/dist/component/FluxDashboardSide.vue.d.ts +2 -2
  8. package/dist/component/FluxDashboardTopBar.vue.d.ts +2 -2
  9. package/dist/component/index.d.ts +0 -1
  10. package/dist/composable/index.d.ts +0 -1
  11. package/dist/composable/useDashboardInjection.d.ts +0 -1
  12. package/dist/data/index.d.ts +0 -1
  13. package/dist/index.css +427 -0
  14. package/dist/index.d.ts +0 -1
  15. package/dist/index.js +3690 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/types.d.ts +13 -0
  18. package/package.json +23 -21
  19. package/src/component/FluxDashboard.vue +4 -4
  20. package/src/component/FluxDashboardContent.vue +2 -2
  21. package/src/component/FluxDashboardHeader.vue +1 -1
  22. package/src/component/FluxDashboardMenu.vue +6 -4
  23. package/src/component/FluxDashboardNavigation.vue +2 -2
  24. package/src/component/FluxDashboardSide.vue +1 -1
  25. package/src/component/FluxDashboardTopBar.vue +2 -2
  26. package/src/composable/useDashboardInjection.ts +1 -1
  27. package/src/css/component/Dashboard.module.scss +5 -4
  28. package/src/css/component/DashboardContent.module.scss +9 -9
  29. package/src/css/component/DashboardNavigation.module.scss +13 -11
  30. package/src/css/component/DashboardPane.module.scss +7 -7
  31. package/src/css/component/DashboardTopBar.module.scss +7 -7
  32. package/dist/component/FluxDashboard.vue.d.ts.map +0 -1
  33. package/dist/component/FluxDashboardContent.vue.d.ts.map +0 -1
  34. package/dist/component/FluxDashboardHeader.vue.d.ts.map +0 -1
  35. package/dist/component/FluxDashboardMenu.vue.d.ts.map +0 -1
  36. package/dist/component/FluxDashboardNavigation.vue.d.ts.map +0 -1
  37. package/dist/component/FluxDashboardSide.vue.d.ts.map +0 -1
  38. package/dist/component/FluxDashboardTopBar.vue.d.ts.map +0 -1
  39. package/dist/component/index.d.ts.map +0 -1
  40. package/dist/composable/index.d.ts.map +0 -1
  41. package/dist/composable/useDashboardInjection.d.ts.map +0 -1
  42. package/dist/data/index.d.ts.map +0 -1
  43. package/dist/flux-dashboard.css +0 -1
  44. package/dist/flux-dashboard.js +0 -221
  45. package/dist/flux-dashboard.js.map +0 -1
  46. package/dist/index.d.ts.map +0 -1
  47. package/tsconfig.json +0 -45
package/README.md CHANGED
@@ -1,45 +1,36 @@
1
- # Flux
1
+ # `@flux-ui/dashboard`
2
2
 
3
- This repository contains the source code for the basic components that are used throughout our front-end projects. It
4
- targets Vue 3+. Please read the following instructions and checks in order to proceed.
3
+ Layout components for building dashboards with [Flux UI](https://flux-ui.dev).
5
4
 
6
- ## 📦 Registry
5
+ ## Highlights
7
6
 
8
- - The UI library package is available under `@flux-ui/components`.
9
- - The Dashboard library package is available under `@flux-ui/dashboard`.
10
- - The internal package is available under `@flux-ui/internals`.
7
+ Composable shell components:
11
8
 
12
- ## ⚠️ Requirements
9
+ - `FluxDashboard` — root container.
10
+ - `FluxDashboardContent` — main content region.
11
+ - `FluxDashboardSide` — sidebar slot.
12
+ - `FluxDashboardNavigation` — navigation rail.
13
+ - `FluxDashboardTopBar` — top bar.
14
+ - `FluxDashboardHeader` — page-level header.
15
+ - `FluxDashboardMenu` — menu primitive.
13
16
 
14
- - Install Node.js ^22
15
- - Install pnpm using `npm i -g pnpm`.
16
- - Configure a new environment variable `FONTAWESOME_NPM_AUTH_TOKEN`. This should be a valid Font Awesome private npm auth token.
17
- - Use `pnpm install` to install the required packages.
18
- - Use `pnpm dev` to start a build watcher for both targets.
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.
17
+ ## ⭐️ Prerequisites
21
18
 
22
- ## 🪵 Git
19
+ - Bun >= 1.2.13
20
+ - Node >= 23
23
21
 
24
- All commit messages and branches will be in English.
22
+ ## 🚀 Getting started
25
23
 
26
- ### Branches
24
+ 1. Make sure the Flux monorepo is checked out.
25
+ 2. Run `bun install` in the project root.
26
+ 3. Run `bun run --cwd packages/dashboard build` to build the package (runs `vue-tsc` then `vite build`).
27
+ 4. To link Flux Dashboard globally with Bun, run `bun link --cwd packages/dashboard`.
28
+ - In another project, use `link:@flux-ui/dashboard` as the dependency version in `package.json`.
27
29
 
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.
30
+ ## 📦 Sibling packages
32
31
 
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.`
32
+ - [`@flux-ui/components`](../components)
33
+ - [`@flux-ui/types`](../types)
34
+ - [`@flux-ui/internals`](../internals)
35
+ - [`@flux-ui/statistics`](../statistics)
36
+ - [`@flux-ui/application`](../application)
@@ -1,4 +1,4 @@
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<{
@@ -18,7 +18,7 @@ declare function __VLS_template(): {
18
18
  rootEl: HTMLDivElement;
19
19
  };
20
20
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
21
- declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
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: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLElement>;
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: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
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: string;
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: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
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: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
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: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
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: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLElement>;
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
@@ -1,2 +1 @@
1
1
  export { default as useDashboardInjection } from './useDashboardInjection';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,2 @@
1
1
  import { FluxDashboardInjection } from '../data';
2
2
  export default function (): FluxDashboardInjection;
3
- //# sourceMappingURL=useDashboardInjection.d.ts.map
@@ -4,4 +4,3 @@ export type FluxDashboardInjection = {
4
4
  readonly isMenuCollapsed: Ref<boolean>;
5
5
  readonly isNavigationCollapsed: Ref<boolean>;
6
6
  };
7
- //# sourceMappingURL=index.d.ts.map
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
@@ -1,4 +1,3 @@
1
1
  export * from './component';
2
2
  export * from './composable';
3
3
  export * from './data';
4
- //# sourceMappingURL=index.d.ts.map