sprintify-ui 0.5.4 → 0.5.7
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/sprintify-ui.es.js +1425 -1399
- package/dist/types/src/components/BaseActionItem.vue.d.ts +1 -1
- package/dist/types/src/components/BaseActionItemButton.vue.d.ts +1 -1
- package/dist/types/src/components/BaseDataIterator.vue.d.ts +1 -1
- package/dist/types/src/components/BaseDataTable.vue.d.ts +1 -1
- package/dist/types/src/components/BaseHeader.vue.d.ts +1 -2
- package/dist/types/src/components/BaseLayoutSidebarConfigurable.vue.d.ts +1 -1
- package/dist/types/src/components/BaseLayoutStacked.vue.d.ts +1 -0
- package/dist/types/src/components/BaseLayoutStackedConfigurable.vue.d.ts +1 -2
- package/dist/types/src/components/BaseMenu.vue.d.ts +1 -1
- package/dist/types/src/components/BaseNavbar.vue.d.ts +1 -0
- package/dist/types/src/components/BaseNavbarItem.vue.d.ts +1 -1
- package/dist/types/src/components/BaseNavbarSideItem.vue.d.ts +1 -1
- package/dist/types/src/types/index.d.ts +13 -1
- package/package.json +1 -1
- package/src/components/BaseActionItem.vue +1 -1
- package/src/components/BaseActionItemButton.vue +1 -1
- package/src/components/BaseDataIterator.vue +1 -1
- package/src/components/BaseDataTable.vue +1 -1
- package/src/components/BaseHeader.vue +1 -2
- package/src/components/BaseLayoutSidebarConfigurable.vue +1 -1
- package/src/components/BaseLayoutStacked.vue +0 -1
- package/src/components/BaseLayoutStackedConfigurable.stories.js +4 -0
- package/src/components/BaseLayoutStackedConfigurable.vue +22 -9
- package/src/components/BaseMenu.vue +1 -1
- package/src/components/BaseNavbar.vue +30 -7
- package/src/components/BaseNavbarItem.vue +1 -1
- package/src/components/BaseNavbarItemContent.vue +12 -3
- package/src/components/BaseNavbarSideItem.vue +6 -5
- package/src/types/index.ts +15 -3
- package/dist/types/src/types/ActionItem.d.ts +0 -15
- package/src/types/ActionItem.ts +0 -16
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PropType } from 'vue';
|
|
2
2
|
import { Collection, DataIteratorSection, DataTableQuery } from '@/types';
|
|
3
|
-
import { ActionItem } from '@/types
|
|
3
|
+
import { ActionItem } from '@/types';
|
|
4
4
|
type Direction = 'asc' | 'desc';
|
|
5
5
|
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
6
6
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PropType } from 'vue';
|
|
2
2
|
import { CollectionItem, DataIteratorSection, DataTableQuery, RowAction } from '@/types';
|
|
3
3
|
import { RouteLocationRaw } from 'vue-router';
|
|
4
|
-
import { ActionItem } from '@/types
|
|
4
|
+
import { ActionItem } from '@/types';
|
|
5
5
|
declare function fetch(): void;
|
|
6
6
|
declare function fetchWithoutLoading(): void;
|
|
7
7
|
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { User } from '@/types/User';
|
|
2
|
+
import { ActionItem } from '@/types';
|
|
2
3
|
import { PropType } from 'vue';
|
|
3
4
|
import { NotificationsConfig } from '../types';
|
|
4
|
-
import { ActionItem } from '@/types/ActionItem';
|
|
5
5
|
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
6
6
|
appName: {
|
|
7
7
|
default: string;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { User } from '@/types/User';
|
|
2
|
+
import { ActionItem, NotificationsConfig } from '@/types';
|
|
2
3
|
import { PropType } from 'vue';
|
|
3
|
-
import { NotificationsConfig } from '../types';
|
|
4
|
-
import { ActionItem } from '@/types/ActionItem';
|
|
5
4
|
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
6
5
|
appName: {
|
|
7
6
|
default: string;
|
|
@@ -52,6 +52,19 @@ export interface PaginatedCollection extends PaginationMetadata {
|
|
|
52
52
|
data: Collection;
|
|
53
53
|
}
|
|
54
54
|
export type ActionColors = 'dark' | 'light' | 'danger' | 'success' | 'warning' | 'primary' | 'secondary';
|
|
55
|
+
export interface ActionItem {
|
|
56
|
+
label?: string;
|
|
57
|
+
description?: string;
|
|
58
|
+
href?: string;
|
|
59
|
+
to?: RouteLocationRaw;
|
|
60
|
+
action?: () => Promise<void> | void;
|
|
61
|
+
icon?: string;
|
|
62
|
+
count?: number;
|
|
63
|
+
color?: ActionColors;
|
|
64
|
+
disabled?: boolean;
|
|
65
|
+
meta?: Record<string, any>;
|
|
66
|
+
actions?: ActionItem[];
|
|
67
|
+
}
|
|
55
68
|
export type Row = Record<string, any>;
|
|
56
69
|
export interface BaseTableColumn {
|
|
57
70
|
id: string;
|
|
@@ -191,4 +204,3 @@ export interface BaseCropperConfig {
|
|
|
191
204
|
presetOptions?: Record<string, any>;
|
|
192
205
|
saveOptions?: ResultOptions;
|
|
193
206
|
}
|
|
194
|
-
export { ActionItem } from './ActionItem';
|
package/package.json
CHANGED
|
@@ -231,7 +231,7 @@ import {
|
|
|
231
231
|
PaginatedCollection,
|
|
232
232
|
ResourceCollection,
|
|
233
233
|
} from '@/types';
|
|
234
|
-
import { ActionItem } from '@/types
|
|
234
|
+
import { ActionItem } from '@/types';
|
|
235
235
|
|
|
236
236
|
import BaseMenu from './BaseMenu.vue';
|
|
237
237
|
import BasePagination from './BasePagination.vue';
|
|
@@ -260,7 +260,7 @@ import BaseEmptyState from '../svg/BaseEmptyState.vue';
|
|
|
260
260
|
import { RouteLocationRaw } from 'vue-router';
|
|
261
261
|
import BaseMenu from './BaseMenu.vue';
|
|
262
262
|
import BaseDataTableRowAction from './BaseDataTableRowAction.vue';
|
|
263
|
-
import { ActionItem } from '@/types
|
|
263
|
+
import { ActionItem } from '@/types';
|
|
264
264
|
|
|
265
265
|
const router = useRouter();
|
|
266
266
|
|
|
@@ -99,8 +99,7 @@
|
|
|
99
99
|
</template>
|
|
100
100
|
|
|
101
101
|
<script setup lang="ts">
|
|
102
|
-
import { Breadcrumb } from '@/types';
|
|
103
|
-
import { ActionItem } from '@/types/ActionItem';
|
|
102
|
+
import { Breadcrumb, ActionItem } from '@/types';
|
|
104
103
|
import { useResizeObserver } from '@vueuse/core';
|
|
105
104
|
import { BaseBreadcrumbs, BaseIcon } from '..';
|
|
106
105
|
import BaseActionItemButton from './BaseActionItemButton.vue';
|
|
@@ -101,9 +101,9 @@
|
|
|
101
101
|
|
|
102
102
|
<script setup lang="ts">
|
|
103
103
|
import { User } from '@/types/User';
|
|
104
|
+
import { ActionItem } from '@/types';
|
|
104
105
|
import { PropType } from 'vue';
|
|
105
106
|
import { NotificationsConfig } from '../types';
|
|
106
|
-
import { ActionItem } from '@/types/ActionItem';
|
|
107
107
|
import BaseAvatar from './BaseAvatar.vue';
|
|
108
108
|
import BaseLayoutNotificationDropdown from './BaseLayoutNotificationDropdown.vue';
|
|
109
109
|
import BaseLayoutSidebar from './BaseLayoutSidebar.vue';
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
<BaseLayoutStacked
|
|
3
3
|
:size="size"
|
|
4
4
|
:dark="dark"
|
|
5
|
+
:navbar="navbar"
|
|
5
6
|
>
|
|
6
|
-
<template #navbar>
|
|
7
|
+
<template #navbar="{ mobile }">
|
|
7
8
|
<div class="flex w-full justify-between">
|
|
8
9
|
<!-- Left -->
|
|
9
10
|
|
|
@@ -21,7 +22,15 @@
|
|
|
21
22
|
</RouterLink>
|
|
22
23
|
|
|
23
24
|
<!-- Links (desktop) -->
|
|
24
|
-
<div
|
|
25
|
+
<div
|
|
26
|
+
v-if="!mobile"
|
|
27
|
+
class="flex"
|
|
28
|
+
:class="{
|
|
29
|
+
'ml-4': size == 'xs',
|
|
30
|
+
'ml-6 space-x-0.5': size == 'sm',
|
|
31
|
+
'ml-8 space-x-1': size == 'md',
|
|
32
|
+
}"
|
|
33
|
+
>
|
|
25
34
|
<BaseNavbarItem
|
|
26
35
|
v-for="item in menu"
|
|
27
36
|
:key="item.label"
|
|
@@ -33,11 +42,14 @@
|
|
|
33
42
|
</div>
|
|
34
43
|
|
|
35
44
|
<!-- Right -->
|
|
36
|
-
<div
|
|
45
|
+
<div
|
|
46
|
+
class="flex shrink-0 items-center"
|
|
47
|
+
:class="[mobile ? '' : 'ml-6']"
|
|
48
|
+
>
|
|
37
49
|
<!-- Notification dropdown -->
|
|
38
50
|
<BaseLayoutNotificationDropdown
|
|
39
51
|
v-if="notifications"
|
|
40
|
-
class="mr-4
|
|
52
|
+
:class="[mobile ? 'mr-4' : 'mr-5']"
|
|
41
53
|
:dark="dark"
|
|
42
54
|
:size="size"
|
|
43
55
|
:notifications-config="notifications"
|
|
@@ -47,9 +59,9 @@
|
|
|
47
59
|
|
|
48
60
|
<!-- Profile dropdown -->
|
|
49
61
|
<BaseMenu
|
|
62
|
+
v-if="!mobile"
|
|
50
63
|
tw-menu="w-52"
|
|
51
|
-
:size="size
|
|
52
|
-
class="hidden md:block"
|
|
64
|
+
:size="size"
|
|
53
65
|
:items="userMenu"
|
|
54
66
|
>
|
|
55
67
|
<template #button="{ open }">
|
|
@@ -71,11 +83,12 @@
|
|
|
71
83
|
|
|
72
84
|
<template #mobile>
|
|
73
85
|
<!-- Links mobile -->
|
|
74
|
-
<div class="space-y-
|
|
86
|
+
<div class="space-y-0.5 p-2 pt-0">
|
|
75
87
|
<BaseNavbarSideItem
|
|
76
88
|
v-for="item in menu"
|
|
77
89
|
:key="item.label"
|
|
78
90
|
:item="item"
|
|
91
|
+
size="sm"
|
|
79
92
|
:dark="dark"
|
|
80
93
|
/>
|
|
81
94
|
</div>
|
|
@@ -99,6 +112,7 @@
|
|
|
99
112
|
v-for="item in userMenu"
|
|
100
113
|
:key="item.label"
|
|
101
114
|
:item="item"
|
|
115
|
+
size="sm"
|
|
102
116
|
:dark="dark"
|
|
103
117
|
/>
|
|
104
118
|
</div>
|
|
@@ -113,9 +127,8 @@
|
|
|
113
127
|
|
|
114
128
|
<script lang="ts" setup>
|
|
115
129
|
import { User } from '@/types/User';
|
|
130
|
+
import { ActionItem, NotificationsConfig } from '@/types';
|
|
116
131
|
import { PropType } from 'vue';
|
|
117
|
-
import { NotificationsConfig } from '../types';
|
|
118
|
-
import { ActionItem } from '@/types/ActionItem';
|
|
119
132
|
import BaseAvatar from './BaseAvatar.vue';
|
|
120
133
|
import BaseLayoutStacked from './BaseLayoutStacked.vue';
|
|
121
134
|
import BaseMenu from './BaseMenu.vue';
|
|
@@ -120,7 +120,7 @@ import { PropType } from 'vue';
|
|
|
120
120
|
import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/vue';
|
|
121
121
|
import BaseMenuItem from './BaseMenuItem.vue';
|
|
122
122
|
import { twMerge } from 'tailwind-merge';
|
|
123
|
-
import { ActionItem } from '@/types
|
|
123
|
+
import { ActionItem } from '@/types';
|
|
124
124
|
|
|
125
125
|
const props = defineProps({
|
|
126
126
|
items: {
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
<div class="grow flex">
|
|
12
12
|
<slot
|
|
13
13
|
name="navbar"
|
|
14
|
+
:mobile="mobile"
|
|
14
15
|
:dark="dark"
|
|
15
16
|
:height="heightInner"
|
|
16
17
|
/>
|
|
@@ -52,7 +53,7 @@
|
|
|
52
53
|
<!-- Mobile -->
|
|
53
54
|
<div
|
|
54
55
|
v-if="mobile && showMobileMenu"
|
|
55
|
-
class="
|
|
56
|
+
class="w-full"
|
|
56
57
|
:class="backgroundClass"
|
|
57
58
|
>
|
|
58
59
|
<slot
|
|
@@ -72,6 +73,7 @@ import BaseContainer from './BaseContainer.vue';
|
|
|
72
73
|
import { twMerge } from 'tailwind-merge';
|
|
73
74
|
import { PropType } from 'vue';
|
|
74
75
|
import { useWindowSize } from '@vueuse/core';
|
|
76
|
+
import { disableScroll, enableScroll } from '..';
|
|
75
77
|
|
|
76
78
|
defineOptions({
|
|
77
79
|
inheritAttrs: false,
|
|
@@ -106,6 +108,15 @@ const mobile = computed(() => {
|
|
|
106
108
|
return window.width.value < props.breakpoint;
|
|
107
109
|
});
|
|
108
110
|
|
|
111
|
+
watch(
|
|
112
|
+
() => window.width.value,
|
|
113
|
+
() => {
|
|
114
|
+
if (!mobile.value) {
|
|
115
|
+
closeMenu();
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
);
|
|
119
|
+
|
|
109
120
|
const heightInner = computed(() => {
|
|
110
121
|
if (props.height) {
|
|
111
122
|
return props.height;
|
|
@@ -123,28 +134,40 @@ const heightInner = computed(() => {
|
|
|
123
134
|
});
|
|
124
135
|
|
|
125
136
|
const backgroundClass = computed(() => {
|
|
126
|
-
return props.dark ? 'bg-slate-
|
|
137
|
+
return props.dark ? 'bg-slate-800' : 'bg-white';
|
|
127
138
|
});
|
|
128
139
|
|
|
129
140
|
const classInternal = computed(() => {
|
|
130
|
-
|
|
131
|
-
|
|
141
|
+
|
|
142
|
+
const classes = [
|
|
143
|
+
'fixed flex flex-col top-0 left-0 w-full max-h-screen',
|
|
132
144
|
backgroundClass.value,
|
|
133
|
-
|
|
134
|
-
|
|
145
|
+
];
|
|
146
|
+
|
|
147
|
+
if (mobile.value) {
|
|
148
|
+
classes.push('overflow-y-auto');
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return twMerge(classes, props.class)
|
|
135
152
|
})
|
|
136
153
|
|
|
137
154
|
const showMobileMenu = ref(false);
|
|
138
155
|
|
|
139
156
|
function toggleMenu() {
|
|
140
|
-
showMobileMenu.value
|
|
157
|
+
if (showMobileMenu.value) {
|
|
158
|
+
closeMenu();
|
|
159
|
+
} else {
|
|
160
|
+
openMenu();
|
|
161
|
+
}
|
|
141
162
|
}
|
|
142
163
|
|
|
143
164
|
function openMenu() {
|
|
165
|
+
disableScroll();
|
|
144
166
|
showMobileMenu.value = true;
|
|
145
167
|
}
|
|
146
168
|
|
|
147
169
|
function closeMenu() {
|
|
170
|
+
enableScroll();
|
|
148
171
|
showMobileMenu.value = false;
|
|
149
172
|
}
|
|
150
173
|
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
|
|
48
48
|
<script setup lang="ts">
|
|
49
49
|
import { PropType, Ref } from 'vue';
|
|
50
|
-
import { ActionItem } from '@/types
|
|
50
|
+
import { ActionItem } from '@/types';
|
|
51
51
|
import BaseActionItem from './BaseActionItem.vue';
|
|
52
52
|
import BaseNavbarItemContent from './BaseNavbarItemContent.vue';
|
|
53
53
|
import BaseMenuItem from './BaseMenuItem.vue';
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
class="relative -top-px ml-[5px]"
|
|
15
15
|
>
|
|
16
16
|
<BaseCounter
|
|
17
|
+
:size="size"
|
|
17
18
|
:count="count"
|
|
18
19
|
:max-digit="2"
|
|
19
20
|
color="danger"
|
|
@@ -64,11 +65,11 @@ const classes = computed(() => {
|
|
|
64
65
|
if (props.dark) {
|
|
65
66
|
classList.push('text-white');
|
|
66
67
|
} else {
|
|
67
|
-
classList.push('text-
|
|
68
|
+
classList.push('text-primary-600');
|
|
68
69
|
}
|
|
69
70
|
} else {
|
|
70
71
|
if (props.dark) {
|
|
71
|
-
classList.push('hover:text-white text-slate-
|
|
72
|
+
classList.push('hover:text-white text-slate-300');
|
|
72
73
|
} else {
|
|
73
74
|
classList.push(
|
|
74
75
|
'hover:text-slate-900 text-slate-800'
|
|
@@ -81,9 +82,17 @@ const classes = computed(() => {
|
|
|
81
82
|
|
|
82
83
|
const classesInner = computed(() => {
|
|
83
84
|
const classList = [
|
|
84
|
-
'
|
|
85
|
+
'py-1 grow rounded-md duration-100 flex items-center font-medium',
|
|
85
86
|
];
|
|
86
87
|
|
|
88
|
+
if (props.size == 'xs') {
|
|
89
|
+
classList.push('px-2 h-7')
|
|
90
|
+
} else if (props.size == 'sm') {
|
|
91
|
+
classList.push('px-2 h-8')
|
|
92
|
+
} else {
|
|
93
|
+
classList.push('px-3 h-10')
|
|
94
|
+
}
|
|
95
|
+
|
|
87
96
|
if (props.dark) {
|
|
88
97
|
classList.push('hover:bg-slate-700');
|
|
89
98
|
} else {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
3
|
<BaseActionItem
|
|
4
|
+
v-if="!item.meta?.line"
|
|
4
5
|
:item="item"
|
|
5
6
|
class="flex w-full"
|
|
6
7
|
@click="onClick"
|
|
@@ -19,7 +20,7 @@
|
|
|
19
20
|
|
|
20
21
|
<div
|
|
21
22
|
v-if="showSubActions && item.actions && item.actions.length"
|
|
22
|
-
class="mt-2 mb-3"
|
|
23
|
+
class="mt-1 sm:mt-2 mb-3"
|
|
23
24
|
>
|
|
24
25
|
<div
|
|
25
26
|
v-for="subItem in item.actions"
|
|
@@ -51,7 +52,7 @@
|
|
|
51
52
|
|
|
52
53
|
<script setup lang="ts">
|
|
53
54
|
import { PropType } from 'vue';
|
|
54
|
-
import { ActionItem } from '@/types
|
|
55
|
+
import { ActionItem } from '@/types';
|
|
55
56
|
import BaseActionItem from './BaseActionItem.vue';
|
|
56
57
|
import BaseNavbarSideItemContent from './BaseNavbarSideItemContent.vue';
|
|
57
58
|
import BaseCounter from './BaseCounter.vue';
|
|
@@ -107,11 +108,11 @@ const subItemClasses = computed((): string[] => {
|
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
if (props.size == 'xs') {
|
|
110
|
-
classList.push('pl-[33.5px] text-[13px] mb-1 pr-2.5');
|
|
111
|
+
classList.push('pl-3 sm:pl-[33.5px] text-[13px] mb-1 pr-2.5');
|
|
111
112
|
} else if (props.size == 'sm') {
|
|
112
|
-
classList.push('pl-[36px] text-sm mb-1.5 pr-3');
|
|
113
|
+
classList.push('pl-3 sm:pl-[36px] text-sm mb-1.5 pr-3');
|
|
113
114
|
} else {
|
|
114
|
-
classList.push('pl-[40px] text-base mb-1 pr-3');
|
|
115
|
+
classList.push('pl-3 sm:pl-[40px] text-base mb-1 pr-3');
|
|
115
116
|
}
|
|
116
117
|
|
|
117
118
|
return classList;
|
package/src/types/index.ts
CHANGED
|
@@ -75,6 +75,20 @@ export type ActionColors =
|
|
|
75
75
|
| 'primary'
|
|
76
76
|
| 'secondary';
|
|
77
77
|
|
|
78
|
+
export interface ActionItem {
|
|
79
|
+
label?: string;
|
|
80
|
+
description?: string;
|
|
81
|
+
href?: string;
|
|
82
|
+
to?: RouteLocationRaw;
|
|
83
|
+
action?: () => Promise<void> | void;
|
|
84
|
+
icon?: string;
|
|
85
|
+
count?: number;
|
|
86
|
+
color?: ActionColors;
|
|
87
|
+
disabled?: boolean;
|
|
88
|
+
meta?: Record<string, any>;
|
|
89
|
+
actions?: ActionItem[];
|
|
90
|
+
}
|
|
91
|
+
|
|
78
92
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
79
93
|
export type Row = Record<string, any>;
|
|
80
94
|
|
|
@@ -236,6 +250,4 @@ export interface BaseCropperConfig {
|
|
|
236
250
|
preset?: CropperPreset;
|
|
237
251
|
presetOptions?: Record<string, any>;
|
|
238
252
|
saveOptions?: ResultOptions;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
export { ActionItem } from './ActionItem';
|
|
253
|
+
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { RouteLocationRaw } from "vue-router";
|
|
2
|
-
import { ActionColors } from ".";
|
|
3
|
-
export interface ActionItem {
|
|
4
|
-
label?: string;
|
|
5
|
-
description?: string;
|
|
6
|
-
href?: string;
|
|
7
|
-
to?: RouteLocationRaw;
|
|
8
|
-
action?: () => Promise<void> | void;
|
|
9
|
-
icon?: string;
|
|
10
|
-
count?: number;
|
|
11
|
-
color?: ActionColors;
|
|
12
|
-
disabled?: boolean;
|
|
13
|
-
meta?: Record<string, any>;
|
|
14
|
-
actions?: ActionItem[];
|
|
15
|
-
}
|
package/src/types/ActionItem.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { RouteLocationRaw } from "vue-router";
|
|
2
|
-
import { ActionColors } from ".";
|
|
3
|
-
|
|
4
|
-
export interface ActionItem {
|
|
5
|
-
label?: string;
|
|
6
|
-
description?: string;
|
|
7
|
-
href?: string;
|
|
8
|
-
to?: RouteLocationRaw;
|
|
9
|
-
action?: () => Promise<void> | void;
|
|
10
|
-
icon?: string;
|
|
11
|
-
count?: number;
|
|
12
|
-
color?: ActionColors;
|
|
13
|
-
disabled?: boolean;
|
|
14
|
-
meta?: Record<string, any>;
|
|
15
|
-
actions?: ActionItem[];
|
|
16
|
-
}
|