@maropost-ui/liquidsky-ui 0.1.75 → 1.0.0-alpha.1
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 +106 -39
- package/dist/assets/raw-svg.d.ts +4 -0
- package/dist/components/AppStepper/useStepper.d.ts +4 -4
- package/dist/components/MpSectionRail/types.d.ts +45 -0
- package/dist/components/TheAppShell/index.d.ts +1 -0
- package/dist/components/TheHeader/index.d.ts +3 -0
- package/dist/components/TheHeader/types.d.ts +38 -0
- package/dist/components/TheSearchBar/index.d.ts +3 -0
- package/dist/components/TheSearchBar/types.d.ts +8 -0
- package/dist/components/TheSearchBar/useTheSearchBar.d.ts +12 -0
- package/dist/components/TheUnifiedNavigation/index.d.ts +8 -4
- package/dist/components/TheUnifiedNavigation/marobase/navigation.d.ts +7 -0
- package/dist/components/TheUnifiedNavigation/marobase/types.d.ts +14 -0
- package/dist/components/TheUserDropdown/index.d.ts +3 -0
- package/dist/components/TheUserDropdown/useUserDropdownMenu.d.ts +12 -0
- package/dist/components/index.d.ts +10 -4
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/useLiquidSkyTheme.d.ts +13 -0
- package/dist/design-tokens/generated/tokens.d.ts +587 -0
- package/dist/directives/mpTestConfig.d.ts +14 -0
- package/dist/icons/index.d.ts +71 -0
- package/dist/icons/liquidSkyIconSet.d.ts +2 -0
- package/dist/icons/liquidSkyIcons.d.ts +55 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +22677 -19594
- package/dist/themes/classic.d.ts +38 -0
- package/dist/themes/index.d.ts +157 -0
- package/dist/themes/marobase.d.ts +103 -0
- package/dist/themes/theme-sync.d.ts +38 -0
- package/dist/types/AppDialogWrapperProps.d.ts +5 -0
- package/dist/types/TheUserDropdownProps.d.ts +8 -0
- package/dist/types/UnifiedNavigationProps.d.ts +9 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/vuetify.d.ts +4 -40
- package/package.json +18 -7
- package/scripts/webpack-resolve.cjs +61 -0
package/README.md
CHANGED
|
@@ -35,9 +35,11 @@ The following packages are required as peer dependencies:
|
|
|
35
35
|
npm install @maropost-ui/liquidsky-ui
|
|
36
36
|
```
|
|
37
37
|
```typescript
|
|
38
|
-
import { AppBreadcrumb } from '@maropost-ui/liquidsky-ui'
|
|
38
|
+
import { AppBreadcrumb, TheThemeSwitcher } from '@maropost-ui/liquidsky-ui'
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
+
Theme lives in `TheUserDropdown`: click **Theme** for Classic / Marobase. Light / Dark sun–moon controls appear on the right only for Marobase. Persist key is `liquidsky-theme`.
|
|
42
|
+
|
|
41
43
|
------------------------------------------------------------------------
|
|
42
44
|
|
|
43
45
|
------------------------------------------------------------------------
|
|
@@ -137,67 +139,132 @@ You may also keep using **`v-btn`**, **`v-tooltip`**, etc., after Liquidsky is i
|
|
|
137
139
|
-------------------------------------------------------------------------
|
|
138
140
|
|
|
139
141
|
|
|
140
|
-
##
|
|
141
|
-
|
|
142
|
+
## Local development in a consuming app
|
|
143
|
+
|
|
144
|
+
Use **`npm install`** for CI, teammates, and anything that should match production. Use **`npm link`** only when you are changing Liquidsky locally and want the app to pick up rebuilt `dist/` without publishing.
|
|
145
|
+
|
|
146
|
+
Liquidsky ships **Vuetify** as a dependency. Commerce apps typically do not declare `vuetify` themselves.
|
|
142
147
|
|
|
148
|
+
### Webpack `vue.config.js` (required for Vue CLI apps)
|
|
143
149
|
|
|
150
|
+
Add this whether the app uses `npm install` or `npm link`. It keeps a single Vue copy and tells webpack where Vuetify is.
|
|
144
151
|
|
|
145
|
-
|
|
146
|
-
|
|
152
|
+
```js
|
|
153
|
+
const path = require('path')
|
|
154
|
+
const { createLiquidskyWebpackResolve } = require('@maropost-ui/liquidsky-ui/webpack')
|
|
147
155
|
|
|
148
|
-
|
|
156
|
+
const liquidskyResolve = createLiquidskyWebpackResolve(__dirname)
|
|
157
|
+
|
|
158
|
+
module.exports = {
|
|
159
|
+
transpileDependencies: ['@maropost-ui/liquidsky-ui'],
|
|
160
|
+
configureWebpack: {
|
|
161
|
+
resolve: {
|
|
162
|
+
...liquidskyResolve,
|
|
163
|
+
alias: {
|
|
164
|
+
'@': path.resolve(__dirname, 'src'),
|
|
165
|
+
...liquidskyResolve.alias,
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
}
|
|
170
|
+
```
|
|
149
171
|
|
|
150
|
-
|
|
172
|
+
`@maropost-ui/liquidsky-ui/webpack` exists only in Liquidsky versions that include this helper. Install from this repo (pack / path) until that version is published.
|
|
151
173
|
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
git clone <repo-url> liquidsky-frontend
|
|
155
|
-
cd liquidsky-frontend
|
|
156
|
-
git checkout main
|
|
157
|
-
```
|
|
174
|
+
---
|
|
158
175
|
|
|
159
|
-
|
|
160
|
-
```bash
|
|
161
|
-
npm install
|
|
162
|
-
npm run dev
|
|
163
|
-
```
|
|
176
|
+
### Method 1: `npm install` (normal / published / pack)
|
|
164
177
|
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
npm link
|
|
168
|
-
```
|
|
178
|
+
No `link:webpack`. No `--app`. npm hoists Vuetify into the app’s `node_modules`.
|
|
169
179
|
|
|
170
|
-
|
|
171
|
-
```bash
|
|
172
|
-
cd /path/to/your/consuming-project
|
|
173
|
-
npm link @maropost-ui/liquidsky-ui
|
|
174
|
-
```
|
|
180
|
+
**From the registry** (after the helper is published):
|
|
175
181
|
|
|
176
|
-
|
|
182
|
+
```bash
|
|
183
|
+
cd /path/to/maropost-frontend-app # or maropost-cloud-frontend / commerce-backoffice-frontend
|
|
184
|
+
npm install @maropost-ui/liquidsky-ui
|
|
185
|
+
```
|
|
177
186
|
|
|
178
|
-
|
|
179
|
-
Generates a distributable .tgz file for one-off installs.
|
|
187
|
+
**From this repo, without publishing:**
|
|
180
188
|
|
|
181
|
-
#### Step 1: Clone and build the library
|
|
182
189
|
```bash
|
|
183
|
-
git clone <repo-url> liquidsky-frontend
|
|
184
190
|
cd liquidsky-frontend
|
|
185
|
-
git checkout main
|
|
186
191
|
npm install
|
|
187
192
|
npm run build
|
|
193
|
+
npm pack
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
cd /path/to/maropost-frontend-app # or maropost-cloud-frontend / commerce-backoffice-frontend
|
|
198
|
+
npm unlink --no-save @maropost-ui/liquidsky-ui # only if you previously npm-linked
|
|
199
|
+
npm install /path/to/liquidsky-frontend/maropost-ui-liquidsky-ui-<version>.tgz
|
|
188
200
|
```
|
|
189
|
-
|
|
201
|
+
|
|
202
|
+
Prefer the `.tgz` over `npm install /path/to/liquidsky-frontend`. A folder install can still symlink and hit the same webpack issue as a repo-root `npm link`.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### Method 2: `npm link` (local Liquidsky changes)
|
|
207
|
+
|
|
208
|
+
**Do not `npm link` from this repo root in a Webpack app.** Webpack follows that symlink into Liquidsky’s `node_modules` and loads a second Vue.
|
|
209
|
+
|
|
210
|
+
#### Vite consumers
|
|
211
|
+
|
|
190
212
|
```bash
|
|
191
|
-
|
|
192
|
-
|
|
213
|
+
cd liquidsky-frontend
|
|
214
|
+
npm install
|
|
215
|
+
npm run dev
|
|
216
|
+
npm link
|
|
193
217
|
```
|
|
194
218
|
|
|
195
|
-
#### Step 3: Install in consuming project
|
|
196
219
|
```bash
|
|
197
|
-
cd /path/to/
|
|
198
|
-
npm
|
|
220
|
+
cd /path/to/your-vite-app
|
|
221
|
+
npm link @maropost-ui/liquidsky-ui
|
|
199
222
|
```
|
|
200
223
|
|
|
224
|
+
#### Webpack consumers (maropost-frontend-app / maropost-cloud-frontend / commerce-backoffice-frontend)
|
|
225
|
+
|
|
226
|
+
`--app` is **one-time setup** for that app (creates `node_modules/vuetify` if it is missing). You do not pass the path on later rebuilds.
|
|
227
|
+
|
|
228
|
+
The `--` after `npm run link:webpack` forwards flags to the script.
|
|
229
|
+
|
|
230
|
+
**Once per webpack app:**
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
cd liquidsky-frontend
|
|
234
|
+
npm install
|
|
235
|
+
npm run build
|
|
236
|
+
npm run link:webpack -- --app /path/to/maropost-frontend-app
|
|
237
|
+
# or
|
|
238
|
+
npm run link:webpack -- --app /path/to/maropost-cloud-frontend
|
|
239
|
+
# or
|
|
240
|
+
npm run link:webpack -- --app /path/to/commerce-backoffice-frontend
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
cd /path/to/maropost-frontend-app # or maropost-cloud-frontend / commerce-backoffice-frontend
|
|
245
|
+
npm unlink --no-save @maropost-ui/liquidsky-ui # if you previously linked the repo root
|
|
246
|
+
npm link @maropost-ui/liquidsky-ui
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
If a **repo-root** link is still registered globally:
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
npm unlink -g @maropost-ui/liquidsky-ui
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Every later rebuild** (no `--app`):
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
cd liquidsky-frontend
|
|
259
|
+
npm run link:webpack
|
|
260
|
+
# or, rebuild on save:
|
|
261
|
+
npm run link:webpack:watch
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Then restart or refresh the webpack app. `link:webpack` copies `dist/` to `../.liquidsky-ui-link` (a folder with no Liquidsky Vue) and runs `npm link` from there.
|
|
265
|
+
|
|
266
|
+
Use `--app` again only if you clone a new consumer, delete `node_modules`, or Vuetify disappears from the app.
|
|
267
|
+
|
|
201
268
|
------------------------------------------------------------------------
|
|
202
269
|
|
|
203
270
|
|
|
@@ -5,12 +5,12 @@ export declare function useStepper(steps: TStepItem[]): {
|
|
|
5
5
|
name: string;
|
|
6
6
|
order: number;
|
|
7
7
|
id: number;
|
|
8
|
-
component?: {
|
|
8
|
+
component?: import("vue").FunctionalComponent<any, {}, any, {}> | {
|
|
9
9
|
new (...args: any[]): any;
|
|
10
10
|
__isFragment?: never;
|
|
11
11
|
__isTeleport?: never;
|
|
12
12
|
__isSuspense?: never;
|
|
13
|
-
} |
|
|
13
|
+
} | {
|
|
14
14
|
[x: string]: any;
|
|
15
15
|
setup?: ((this: void, props: import("@vue/shared").LooseRequired<any>, ctx: {
|
|
16
16
|
attrs: import("vue").Attrs;
|
|
@@ -135,12 +135,12 @@ export declare function useStepper(steps: TStepItem[]): {
|
|
|
135
135
|
name: string;
|
|
136
136
|
order: number;
|
|
137
137
|
id: number;
|
|
138
|
-
component?: {
|
|
138
|
+
component?: import("vue").FunctionalComponent<any, {}, any, {}> | {
|
|
139
139
|
new (...args: any[]): any;
|
|
140
140
|
__isFragment?: never;
|
|
141
141
|
__isTeleport?: never;
|
|
142
142
|
__isSuspense?: never;
|
|
143
|
-
} |
|
|
143
|
+
} | {
|
|
144
144
|
[x: string]: any;
|
|
145
145
|
setup?: ((this: void, props: import("@vue/shared").LooseRequired<any>, ctx: {
|
|
146
146
|
attrs: import("vue").Attrs;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { RouteLocationRaw } from 'vue-router';
|
|
2
|
+
export interface MpSectionRailItem {
|
|
3
|
+
slug: string;
|
|
4
|
+
label: string;
|
|
5
|
+
/** Lucide icon name (kebab-case). Omit for text-only rows (Settings flavor). */
|
|
6
|
+
icon?: string;
|
|
7
|
+
to: RouteLocationRaw;
|
|
8
|
+
/** Route names that keep this item highlighted (the section's children/editors). */
|
|
9
|
+
match?: string[];
|
|
10
|
+
/** Optional count chip shown at the end of the row. */
|
|
11
|
+
count?: number;
|
|
12
|
+
/** Renders an external-link glyph after the label. */
|
|
13
|
+
external?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface MpSectionRailGroup {
|
|
16
|
+
/** Optional uppercase group heading. */
|
|
17
|
+
title?: string;
|
|
18
|
+
items: MpSectionRailItem[];
|
|
19
|
+
}
|
|
20
|
+
export interface MpSectionRailSwitchOption {
|
|
21
|
+
id: string;
|
|
22
|
+
label: string;
|
|
23
|
+
caption?: string;
|
|
24
|
+
icon?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface MpSectionRailProps {
|
|
27
|
+
/** Accessible name for the rail's nav landmark. */
|
|
28
|
+
ariaLabel: string;
|
|
29
|
+
groups: MpSectionRailGroup[];
|
|
30
|
+
/** Plain heading (module flavor, e.g. "Settings"). */
|
|
31
|
+
title?: string;
|
|
32
|
+
backTo?: RouteLocationRaw;
|
|
33
|
+
backLabel?: string;
|
|
34
|
+
/** Entity identity card (entity flavor, e.g. a store). */
|
|
35
|
+
identity?: {
|
|
36
|
+
name: string;
|
|
37
|
+
caption?: string;
|
|
38
|
+
icon?: string;
|
|
39
|
+
};
|
|
40
|
+
/** Other entities the user can jump to; renders the switcher menu on the identity card. */
|
|
41
|
+
switcherOptions?: MpSectionRailSwitchOption[];
|
|
42
|
+
switcherLabel?: string;
|
|
43
|
+
searchable?: boolean;
|
|
44
|
+
searchPlaceholder?: string;
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './TheAppShell.vue';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { NotificationIconProps } from '../../types/NotificationIconProps';
|
|
2
|
+
import type { MpTestIdProps } from '../../types/MpTestIdProps';
|
|
3
|
+
/** Application-owned permissions and navigation for Liquidsky's header controls. */
|
|
4
|
+
export type HeaderActions = {
|
|
5
|
+
showSettings?: boolean;
|
|
6
|
+
settingsHref?: string;
|
|
7
|
+
onSettingsClick?: (event: MouseEvent) => void;
|
|
8
|
+
onDaVinciClick: () => void;
|
|
9
|
+
onWhatsNewClick: () => void;
|
|
10
|
+
helpCenterUrl?: string;
|
|
11
|
+
raiseTicketUrl?: string;
|
|
12
|
+
};
|
|
13
|
+
export type TheHeaderProps = {
|
|
14
|
+
/** Opt into the theme's utility controls in place of the default timezone. */
|
|
15
|
+
actions?: HeaderActions;
|
|
16
|
+
/** notification count e.g. 5 */
|
|
17
|
+
notificationCount?: number;
|
|
18
|
+
/** timezone e.g. UTC, EST, etc. */
|
|
19
|
+
timezone?: string;
|
|
20
|
+
/** route to preferences : on click to timezone it will open the preferences page*/
|
|
21
|
+
routeToPreferences?: string;
|
|
22
|
+
/** is page loading e.g. true or false */
|
|
23
|
+
isPageLoading: boolean;
|
|
24
|
+
/** toggle left menu e.g. true or false */
|
|
25
|
+
toggleLeftMenu: () => void;
|
|
26
|
+
/** user menu items e.g. [{ title: "Profile", icon: "mdi-account", action: () => {} }, { title: "Settings", icon: "mdi-cog", action: () => {} }] */
|
|
27
|
+
userMenuItems?: any[];
|
|
28
|
+
/** username e.g. John Doe */
|
|
29
|
+
username?: string;
|
|
30
|
+
/** logout e.g. () => {} */
|
|
31
|
+
logout?: () => void;
|
|
32
|
+
/** account id e.g. 20001 */
|
|
33
|
+
accountId?: string | number;
|
|
34
|
+
/** show app bar nav icon e.g. true or false */
|
|
35
|
+
hideAppBarNavIcon?: boolean;
|
|
36
|
+
/** notification icon props e.g. { icon: "mdi-bell", color: "primary" } */
|
|
37
|
+
notificationIconProps?: NotificationIconProps;
|
|
38
|
+
} & MpTestIdProps;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MpTestIdProps } from '../../types/MpTestIdProps';
|
|
2
|
+
export type TheSearchBarProps = {
|
|
3
|
+
/** The name of the query parameter to use for search (defaults to 'q') */
|
|
4
|
+
queryParamName?: string;
|
|
5
|
+
show?: boolean;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
containerClass?: string;
|
|
8
|
+
} & MpTestIdProps;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TheSearchBarProps } from './types';
|
|
2
|
+
export declare function useTheSearchBar(props: TheSearchBarProps): {
|
|
3
|
+
mpTestId: import("vue").ComputedRef<string>;
|
|
4
|
+
keyword: import("vue").Ref<string | undefined, string | undefined>;
|
|
5
|
+
clearSearch: () => void;
|
|
6
|
+
searchPlaceholder: import("vue").ComputedRef<string>;
|
|
7
|
+
showSearchBar: import("vue").ComputedRef<boolean>;
|
|
8
|
+
handleSearchKeyup: (event: KeyboardEvent) => void;
|
|
9
|
+
isFocused: import("vue").Ref<boolean, boolean>;
|
|
10
|
+
onSearchFocus: () => void;
|
|
11
|
+
onSearchBlur: () => void;
|
|
12
|
+
};
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export { default as TheUnifiedNavigation } from './TheUnifiedNavigation.vue';
|
|
2
|
-
export { default as
|
|
3
|
-
export { default as
|
|
4
|
-
export { default as
|
|
5
|
-
export { default as
|
|
2
|
+
export { default as ClassicUnifiedNavigation } from './classic/ClassicUnifiedNavigation.vue';
|
|
3
|
+
export { default as UnifiedNavigationBlock } from './classic/UnifiedNavigationBlock.vue';
|
|
4
|
+
export { default as NavigationToggleButton } from './classic/NavigationToggleButton.vue';
|
|
5
|
+
export { default as SubMenuDialog } from './classic/SubMenuDialog.vue';
|
|
6
|
+
export { default as UnifiedNavigationNode } from './classic/UnifiedNavigationNode.vue';
|
|
7
|
+
export { default as MarobaseSidebar } from './marobase/MarobaseSidebar.vue';
|
|
8
|
+
export type { MarobaseSidebarProps, AppSidebarProps } from './marobase/types';
|
|
9
|
+
export { default as TheAppSidebar } from './marobase/MarobaseSidebar.vue';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { UnifiedNavigationItem } from '../../../types/UnifiedNavigationProps';
|
|
2
|
+
export type SidebarSection = {
|
|
3
|
+
key: string;
|
|
4
|
+
items: UnifiedNavigationItem[];
|
|
5
|
+
};
|
|
6
|
+
export declare function sidebarSections(items: UnifiedNavigationItem[]): SidebarSection[];
|
|
7
|
+
export declare function scopedPath(item: UnifiedNavigationItem, accountId: string): string | undefined;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SidebarGetStarted, UnifiedNavigationProps } from '../../../types/UnifiedNavigationProps';
|
|
2
|
+
export interface MarobaseSidebarProps extends UnifiedNavigationProps {
|
|
3
|
+
modelValue?: boolean;
|
|
4
|
+
temporary?: boolean;
|
|
5
|
+
width?: number;
|
|
6
|
+
railWidth?: number;
|
|
7
|
+
brandLabel?: string;
|
|
8
|
+
getStarted?: SidebarGetStarted;
|
|
9
|
+
/** Optional controlled section. When omitted, enableStoreMenu supplies route state. */
|
|
10
|
+
activeSection?: 'store' | null;
|
|
11
|
+
sectionWidth?: number;
|
|
12
|
+
}
|
|
13
|
+
/** Previous public name for MarobaseSidebarProps. */
|
|
14
|
+
export type AppSidebarProps = MarobaseSidebarProps;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TheUserDropdownProps } from '../../types/TheUserDropdownProps';
|
|
2
|
+
import type { ThemeAppearance } from '../../themes';
|
|
3
|
+
export declare function userInitialsFromName(username: string | undefined): string;
|
|
4
|
+
export declare function useUserDropdownMenu(props: TheUserDropdownProps, emit: (event: 'logout') => void): {
|
|
5
|
+
mpTestId: import("vue").ComputedRef<string>;
|
|
6
|
+
isMenuOpen: import("vue").Ref<boolean, boolean>;
|
|
7
|
+
family: import("vue").ComputedRef<import("../../themes").ThemeFamily>;
|
|
8
|
+
userInitials: import("vue").ComputedRef<string>;
|
|
9
|
+
appearanceToggle: import("vue").WritableComputedRef<ThemeAppearance, ThemeAppearance | ThemeAppearance[] | null>;
|
|
10
|
+
setFamily: (next: import("../../themes").ThemeFamily) => void;
|
|
11
|
+
onClickLogoutHandler: () => void;
|
|
12
|
+
};
|
|
@@ -22,15 +22,21 @@ export { default as AppTooltip } from "./AppTooltip.vue";
|
|
|
22
22
|
export { default as AppGridTable } from "./AppGridTable.vue";
|
|
23
23
|
export { default as TheAccountDropdown } from "./TheAccountDropdown.vue";
|
|
24
24
|
export { default as TheAppsDropdown } from "./TheAppsDropdown.vue";
|
|
25
|
-
export { default as TheHeader } from "./TheHeader
|
|
25
|
+
export { default as TheHeader } from "./TheHeader";
|
|
26
|
+
export { default as TheAppShell } from "./TheAppShell";
|
|
26
27
|
export { default as TheNavigation } from "./TheNavigation.vue";
|
|
27
28
|
export { default as TheNotificationDrawer } from "./TheNotificationDrawer.vue";
|
|
28
29
|
export { default as TheNotificationIcon } from "./TheNotificationIcon.vue";
|
|
29
|
-
export { default as TheSearchBar } from "./TheSearchBar
|
|
30
|
+
export { default as TheSearchBar } from "./TheSearchBar";
|
|
30
31
|
export { default as TheSecondaryNavigation } from "./TheSecondaryNavigation.vue";
|
|
32
|
+
export { default as MpSectionRail } from './MpSectionRail/MpSectionRail.vue';
|
|
33
|
+
export { default as StoreSectionRail } from './MpSectionRail/StoreSectionRail.vue';
|
|
34
|
+
export type { MpSectionRailProps, MpSectionRailItem, MpSectionRailGroup, MpSectionRailSwitchOption } from './MpSectionRail/types';
|
|
35
|
+
export { default as TheThemeSwitcher } from "./TheThemeSwitcher.vue";
|
|
31
36
|
export { default as TheTimezone } from "./TheTimezone/TheTimezone.vue";
|
|
32
|
-
export {
|
|
33
|
-
export { TheUnifiedNavigation } from "./TheUnifiedNavigation";
|
|
37
|
+
export { TheUserDropdown, MarobaseUserDropdown } from "./TheUserDropdown";
|
|
38
|
+
export { TheUnifiedNavigation, MarobaseSidebar, TheAppSidebar } from "./TheUnifiedNavigation";
|
|
39
|
+
export type { MarobaseSidebarProps, AppSidebarProps } from "./TheUnifiedNavigation";
|
|
34
40
|
export { default as AlertModal } from "./AlertModal.vue";
|
|
35
41
|
export { default as TheOnboardingBanner } from "./TheOnboardingBanner.vue";
|
|
36
42
|
export { default as TheOnboardingScreenChecklists } from "./TheOnboardingScreenChecklists.vue";
|
|
@@ -10,3 +10,4 @@ export { default as toRefs } from "./toRefs";
|
|
|
10
10
|
export { default as useUnitConversion } from "./useUnitConversion";
|
|
11
11
|
export { default as useTimezoneTime } from "./useCalculateTime";
|
|
12
12
|
export { default as useMpTestId, resolveMpTestId } from "./useMpTestId";
|
|
13
|
+
export { default as useLiquidSkyTheme, resetLiquidSkyThemeForTests } from "./useLiquidSkyTheme";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type LiquidSkyThemeName, type ThemeAppearance, type ThemeFamily } from '../themes';
|
|
2
|
+
export declare function resetLiquidSkyThemeForTests(): void;
|
|
3
|
+
export default function useLiquidSkyTheme(options?: {
|
|
4
|
+
persist?: boolean;
|
|
5
|
+
storageKey?: string;
|
|
6
|
+
}): {
|
|
7
|
+
themeName: import("vue").Ref<LiquidSkyThemeName, LiquidSkyThemeName>;
|
|
8
|
+
family: import("vue").ComputedRef<ThemeFamily>;
|
|
9
|
+
appearance: import("vue").ComputedRef<ThemeAppearance>;
|
|
10
|
+
setTheme: (name: LiquidSkyThemeName) => void;
|
|
11
|
+
setFamily: (next: ThemeFamily) => void;
|
|
12
|
+
setAppearance: (next: ThemeAppearance) => void;
|
|
13
|
+
};
|