@sabrenski/spire-ui-vue 0.1.0 → 0.2.0
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 +14 -14
- package/dist/components/DialMenu/DialAction.vue.d.ts +25 -0
- package/dist/components/DialMenu/DialMenu.vue.d.ts +45 -0
- package/dist/components/DialMenu/DialTrigger.vue.d.ts +25 -0
- package/dist/components/DialMenu/index.d.ts +4 -0
- package/dist/components/DialMenu/types.d.ts +63 -0
- package/dist/components/Dropdown/Dropdown.vue.d.ts +1 -1
- package/dist/components/LineChart/LineChart.vue.d.ts +1 -1
- package/dist/components/LineChart/LineChartPath.vue.d.ts +1 -1
- package/dist/components/Modal/Modal.vue.d.ts +2 -0
- package/dist/components/Modal/types.d.ts +4 -0
- package/dist/components/Navbar/Navbar.vue.d.ts +1 -1
- package/dist/components/Navbar/NavbarMenu.vue.d.ts +3 -2
- package/dist/components/SearchInput/SearchInput.vue.d.ts +40 -0
- package/dist/components/SearchInput/index.d.ts +2 -0
- package/dist/components/SearchInput/types.d.ts +48 -0
- package/dist/components/Sparkline/Sparkline.vue.d.ts +2 -2
- package/dist/components/Sparkline/SparklineLine.vue.d.ts +1 -1
- package/dist/components/Table/Table.vue.d.ts +3 -2
- package/dist/components/Table/types.d.ts +4 -0
- package/dist/components/Timer/Timer.vue.d.ts +60 -0
- package/dist/components/Timer/index.d.ts +2 -0
- package/dist/components/Timer/types.d.ts +19 -0
- package/dist/components/Tree/Tree.vue.d.ts +22 -0
- package/dist/components/Tree/TreeNode.vue.d.ts +5 -0
- package/dist/components/Tree/index.d.ts +3 -0
- package/dist/components/Tree/types.d.ts +55 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/spire-ui.cjs +45 -45
- package/dist/spire-ui.css +1 -1
- package/dist/spire-ui.js +19574 -18417
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,11 +5,11 @@ A modern, themeable Vue 3 component library with 57+ components, built with Type
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install spire-ui
|
|
8
|
+
npm install @sabrenski/spire-ui-vue
|
|
9
9
|
# or
|
|
10
|
-
pnpm add spire-ui
|
|
10
|
+
pnpm add @sabrenski/spire-ui-vue
|
|
11
11
|
# or
|
|
12
|
-
yarn add spire-ui
|
|
12
|
+
yarn add @sabrenski/spire-ui-vue
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
### Peer Dependencies
|
|
@@ -23,9 +23,9 @@ npm install vue@^3.0.0
|
|
|
23
23
|
```ts
|
|
24
24
|
// main.ts
|
|
25
25
|
import { createApp } from 'vue'
|
|
26
|
-
import { SpireUI } from 'spire-ui'
|
|
26
|
+
import { SpireUI } from '@sabrenski/spire-ui-vue'
|
|
27
27
|
import App from './App.vue'
|
|
28
|
-
import 'spire-ui/style.css'
|
|
28
|
+
import '@sabrenski/spire-ui-vue/style.css'
|
|
29
29
|
|
|
30
30
|
const app = createApp(App)
|
|
31
31
|
|
|
@@ -42,8 +42,8 @@ app.mount('#app')
|
|
|
42
42
|
|
|
43
43
|
```vue
|
|
44
44
|
<script setup lang="ts">
|
|
45
|
-
import { Button, Badge, Input, Card } from 'spire-ui'
|
|
46
|
-
import type { ButtonProps } from 'spire-ui'
|
|
45
|
+
import { Button, Badge, Input, Card } from '@sabrenski/spire-ui-vue'
|
|
46
|
+
import type { ButtonProps } from '@sabrenski/spire-ui-vue'
|
|
47
47
|
</script>
|
|
48
48
|
|
|
49
49
|
<template>
|
|
@@ -62,8 +62,8 @@ Spire UI supports global default configuration for components using the Vue plug
|
|
|
62
62
|
|
|
63
63
|
```ts
|
|
64
64
|
import { createApp } from 'vue'
|
|
65
|
-
import { SpireUI } from 'spire-ui'
|
|
66
|
-
import type { SpireUIOptions } from 'spire-ui'
|
|
65
|
+
import { SpireUI } from '@sabrenski/spire-ui-vue'
|
|
66
|
+
import type { SpireUIOptions } from '@sabrenski/spire-ui-vue'
|
|
67
67
|
|
|
68
68
|
const app = createApp(App)
|
|
69
69
|
|
|
@@ -155,7 +155,7 @@ Props are resolved in the following order:
|
|
|
155
155
|
You can also configure defaults programmatically:
|
|
156
156
|
|
|
157
157
|
```ts
|
|
158
|
-
import { configureDefaults, getDefaults, resetDefaults } from 'spire-ui'
|
|
158
|
+
import { configureDefaults, getDefaults, resetDefaults } from '@sabrenski/spire-ui-vue'
|
|
159
159
|
|
|
160
160
|
// Set defaults at runtime
|
|
161
161
|
configureDefaults({
|
|
@@ -247,7 +247,7 @@ resetDefaults()
|
|
|
247
247
|
## Composables
|
|
248
248
|
|
|
249
249
|
```ts
|
|
250
|
-
import { useToast, useRovingFocus, useVirtualScroll, useComponentDefault } from 'spire-ui'
|
|
250
|
+
import { useToast, useRovingFocus, useVirtualScroll, useComponentDefault } from '@sabrenski/spire-ui-vue'
|
|
251
251
|
```
|
|
252
252
|
|
|
253
253
|
- **useToast** - Toast notification management
|
|
@@ -300,7 +300,7 @@ import { useToast, useRovingFocus, useVirtualScroll, useComponentDefault } from
|
|
|
300
300
|
|
|
301
301
|
```vue
|
|
302
302
|
<script setup>
|
|
303
|
-
import { Icon } from 'spire-ui'
|
|
303
|
+
import { Icon } from '@sabrenski/spire-ui-vue'
|
|
304
304
|
</script>
|
|
305
305
|
|
|
306
306
|
<template>
|
|
@@ -318,7 +318,7 @@ import { Icon } from 'spire-ui'
|
|
|
318
318
|
|
|
319
319
|
```vue
|
|
320
320
|
<script setup>
|
|
321
|
-
import { useToast, ToastContainer } from 'spire-ui'
|
|
321
|
+
import { useToast, ToastContainer } from '@sabrenski/spire-ui-vue'
|
|
322
322
|
|
|
323
323
|
const toast = useToast()
|
|
324
324
|
|
|
@@ -378,7 +378,7 @@ import type {
|
|
|
378
378
|
// Global configuration types
|
|
379
379
|
SpireUIOptions,
|
|
380
380
|
SpireUIDefaults,
|
|
381
|
-
} from 'spire-ui'
|
|
381
|
+
} from '@sabrenski/spire-ui-vue'
|
|
382
382
|
```
|
|
383
383
|
|
|
384
384
|
## Browser Support
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DialActionProps, DialColor } from './types';
|
|
2
|
+
declare function __VLS_template(): {
|
|
3
|
+
attrs: Partial<{}>;
|
|
4
|
+
slots: {
|
|
5
|
+
default?(_: {}): any;
|
|
6
|
+
};
|
|
7
|
+
refs: {};
|
|
8
|
+
rootEl: HTMLButtonElement;
|
|
9
|
+
};
|
|
10
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
11
|
+
declare const __VLS_component: import('vue').DefineComponent<DialActionProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
12
|
+
click: (event: MouseEvent) => any;
|
|
13
|
+
}, string, import('vue').PublicProps, Readonly<DialActionProps> & Readonly<{
|
|
14
|
+
onClick?: ((event: MouseEvent) => any) | undefined;
|
|
15
|
+
}>, {
|
|
16
|
+
disabled: boolean;
|
|
17
|
+
color: DialColor;
|
|
18
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLButtonElement>;
|
|
19
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
20
|
+
export default _default;
|
|
21
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
22
|
+
new (): {
|
|
23
|
+
$slots: S;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { DialMenuProps, DialPlacement } from './types';
|
|
2
|
+
declare function toggle(): void;
|
|
3
|
+
declare function open(): void;
|
|
4
|
+
declare function close(): void;
|
|
5
|
+
declare function __VLS_template(): {
|
|
6
|
+
attrs: Partial<{}>;
|
|
7
|
+
slots: {
|
|
8
|
+
default?(_: {}): any;
|
|
9
|
+
trigger?(_: {
|
|
10
|
+
toggle: typeof toggle;
|
|
11
|
+
isOpen: boolean;
|
|
12
|
+
open: typeof open;
|
|
13
|
+
close: typeof close;
|
|
14
|
+
}): any;
|
|
15
|
+
};
|
|
16
|
+
refs: {};
|
|
17
|
+
rootEl: HTMLDivElement;
|
|
18
|
+
};
|
|
19
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
20
|
+
declare const __VLS_component: import('vue').DefineComponent<DialMenuProps, {
|
|
21
|
+
open: typeof open;
|
|
22
|
+
close: typeof close;
|
|
23
|
+
toggle: typeof toggle;
|
|
24
|
+
isOpen: import('vue').Ref<boolean, boolean>;
|
|
25
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
26
|
+
"update:modelValue": (value: boolean) => any;
|
|
27
|
+
}, string, import('vue').PublicProps, Readonly<DialMenuProps> & Readonly<{
|
|
28
|
+
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
|
29
|
+
}>, {
|
|
30
|
+
modelValue: boolean;
|
|
31
|
+
disabled: boolean;
|
|
32
|
+
pattern: import('./types').DialPattern;
|
|
33
|
+
placement: DialPlacement;
|
|
34
|
+
trigger: import('./types').DialTriggerMode;
|
|
35
|
+
gap: number;
|
|
36
|
+
direction: import('./types').DialDirection;
|
|
37
|
+
arcSpread: number;
|
|
38
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
39
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
40
|
+
export default _default;
|
|
41
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
42
|
+
new (): {
|
|
43
|
+
$slots: S;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DialTriggerProps } from './types';
|
|
2
|
+
declare function __VLS_template(): {
|
|
3
|
+
attrs: Partial<{}>;
|
|
4
|
+
slots: {
|
|
5
|
+
default?(_: {}): any;
|
|
6
|
+
};
|
|
7
|
+
refs: {};
|
|
8
|
+
rootEl: HTMLButtonElement;
|
|
9
|
+
};
|
|
10
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
11
|
+
declare const __VLS_component: import('vue').DefineComponent<DialTriggerProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
12
|
+
click: (event: MouseEvent) => any;
|
|
13
|
+
}, string, import('vue').PublicProps, Readonly<DialTriggerProps> & Readonly<{
|
|
14
|
+
onClick?: ((event: MouseEvent) => any) | undefined;
|
|
15
|
+
}>, {
|
|
16
|
+
disabled: boolean;
|
|
17
|
+
open: boolean;
|
|
18
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLButtonElement>;
|
|
19
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
20
|
+
export default _default;
|
|
21
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
22
|
+
new (): {
|
|
23
|
+
$slots: S;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { InjectionKey, Ref } from 'vue';
|
|
2
|
+
export type DialPattern = 'linear' | 'arc';
|
|
3
|
+
export type DialDirection = 'up' | 'down' | 'left' | 'right' | 'up-left' | 'up-right' | 'down-left' | 'down-right';
|
|
4
|
+
export type DialPlacement = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
|
|
5
|
+
export type DialTriggerMode = 'click' | 'hover';
|
|
6
|
+
export type DialColor = 'neutral' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
|
|
7
|
+
export interface DialMenuProps {
|
|
8
|
+
/** Open state (v-model) */
|
|
9
|
+
modelValue?: boolean;
|
|
10
|
+
/** Animation pattern for action buttons */
|
|
11
|
+
pattern?: DialPattern;
|
|
12
|
+
/** Direction actions fan out (for linear) or arc center direction */
|
|
13
|
+
direction?: DialDirection;
|
|
14
|
+
/** Arc spread angle in degrees (for arc pattern) */
|
|
15
|
+
arcSpread?: number;
|
|
16
|
+
/** Fixed position on screen */
|
|
17
|
+
placement?: DialPlacement;
|
|
18
|
+
/** Gap/radius between action buttons (in rem) */
|
|
19
|
+
gap?: number;
|
|
20
|
+
/** Trigger interaction mode */
|
|
21
|
+
trigger?: DialTriggerMode;
|
|
22
|
+
/** Disable the entire menu */
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface DialTriggerProps {
|
|
26
|
+
/** Whether the menu is open */
|
|
27
|
+
open?: boolean;
|
|
28
|
+
/** Disable the trigger */
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface DialActionProps {
|
|
32
|
+
/** Icon name for the action */
|
|
33
|
+
icon?: string;
|
|
34
|
+
/** Accessible label (required for accessibility) */
|
|
35
|
+
label: string;
|
|
36
|
+
/** Color variant */
|
|
37
|
+
color?: DialColor;
|
|
38
|
+
/** Disabled state */
|
|
39
|
+
disabled?: boolean;
|
|
40
|
+
/** Tooltip text shown on hover */
|
|
41
|
+
tooltip?: string;
|
|
42
|
+
}
|
|
43
|
+
export declare const DIAL_MENU_INJECTION_KEY: InjectionKey<DialMenuContext>;
|
|
44
|
+
export interface DialMenuContext {
|
|
45
|
+
/** Register an action and get its index */
|
|
46
|
+
registerAction: () => number;
|
|
47
|
+
/** Unregister an action */
|
|
48
|
+
unregisterAction: (index: number) => void;
|
|
49
|
+
/** Total number of registered actions */
|
|
50
|
+
actionCount: Ref<number>;
|
|
51
|
+
/** Current pattern */
|
|
52
|
+
pattern: Ref<DialPattern>;
|
|
53
|
+
/** Current direction */
|
|
54
|
+
direction: Ref<DialDirection>;
|
|
55
|
+
/** Gap between actions */
|
|
56
|
+
gap: Ref<number>;
|
|
57
|
+
/** Arc spread angle */
|
|
58
|
+
arcSpread: Ref<number>;
|
|
59
|
+
/** Whether menu is open */
|
|
60
|
+
isOpen: Ref<boolean>;
|
|
61
|
+
/** Close the menu */
|
|
62
|
+
close: () => void;
|
|
63
|
+
}
|
|
@@ -34,8 +34,8 @@ declare const __VLS_component: import('vue').DefineComponent<DropdownProps, {
|
|
|
34
34
|
isDisabled: boolean;
|
|
35
35
|
trigger: import('./types').DropdownTriggerMode;
|
|
36
36
|
strategy: import('./types').DropdownStrategy;
|
|
37
|
-
closeOnSelect: boolean;
|
|
38
37
|
offset: number;
|
|
38
|
+
closeOnSelect: boolean;
|
|
39
39
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLSpanElement>;
|
|
40
40
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
41
41
|
export default _default;
|
|
@@ -49,11 +49,11 @@ declare const __VLS_component: import('vue').DefineComponent<LineChartProps, {},
|
|
|
49
49
|
showTooltip: boolean;
|
|
50
50
|
animated: boolean;
|
|
51
51
|
animationDuration: number;
|
|
52
|
+
strokeWidth: number;
|
|
52
53
|
curve: import('./types').LineChartCurve;
|
|
53
54
|
areaOpacity: number;
|
|
54
55
|
showPoints: boolean;
|
|
55
56
|
pointRadius: number;
|
|
56
|
-
strokeWidth: number;
|
|
57
57
|
showToolbar: boolean;
|
|
58
58
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
59
59
|
containerRef: HTMLDivElement;
|
|
@@ -23,12 +23,12 @@ declare const _default: import('vue').DefineComponent<LineChartPathProps, {}, {}
|
|
|
23
23
|
animated: boolean;
|
|
24
24
|
animationDuration: number;
|
|
25
25
|
hoveredIndex: number | null;
|
|
26
|
+
strokeWidth: number;
|
|
26
27
|
dashed: boolean;
|
|
27
28
|
curve: LineChartCurve;
|
|
28
29
|
areaOpacity: number;
|
|
29
30
|
showPoints: boolean;
|
|
30
31
|
pointRadius: number;
|
|
31
|
-
strokeWidth: number;
|
|
32
32
|
baseline: number;
|
|
33
33
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
34
34
|
pathRef: SVGPathElement;
|
|
@@ -34,6 +34,8 @@ declare const __VLS_component: import('vue').DefineComponent<ModalProps, {
|
|
|
34
34
|
closeOnEscape: boolean;
|
|
35
35
|
closeOnBackdrop: boolean;
|
|
36
36
|
preventScroll: boolean;
|
|
37
|
+
backdrop: boolean;
|
|
38
|
+
floating: boolean;
|
|
37
39
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
38
40
|
dialogRef: HTMLDialogElement;
|
|
39
41
|
}, HTMLDialogElement>;
|
|
@@ -17,4 +17,8 @@ export interface ModalProps {
|
|
|
17
17
|
closeOnEscape?: boolean;
|
|
18
18
|
/** Prevent body scroll when modal is open */
|
|
19
19
|
preventScroll?: boolean;
|
|
20
|
+
/** Show backdrop overlay (disabling also enables body scrolling) */
|
|
21
|
+
backdrop?: boolean;
|
|
22
|
+
/** Float the drawer with rounded corners and margin on all sides (drawer placements only) */
|
|
23
|
+
floating?: boolean;
|
|
20
24
|
}
|
|
@@ -14,9 +14,9 @@ declare const __VLS_component: import('vue').DefineComponent<NavbarProps, {}, {}
|
|
|
14
14
|
height: NavbarHeight;
|
|
15
15
|
blur: boolean;
|
|
16
16
|
transparent: boolean;
|
|
17
|
+
maxWidth: import('./types').NavbarMaxWidth;
|
|
17
18
|
hideOnScroll: boolean;
|
|
18
19
|
scrollThreshold: number;
|
|
19
|
-
maxWidth: import('./types').NavbarMaxWidth;
|
|
20
20
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
21
21
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
22
22
|
export default _default;
|
|
@@ -4,6 +4,7 @@ declare function __VLS_template(): {
|
|
|
4
4
|
slots: {
|
|
5
5
|
trigger?(_: {}): any;
|
|
6
6
|
default?(_: {}): any;
|
|
7
|
+
default?(_: {}): any;
|
|
7
8
|
};
|
|
8
9
|
refs: {
|
|
9
10
|
triggerRef: HTMLButtonElement;
|
|
@@ -14,11 +15,11 @@ declare function __VLS_template(): {
|
|
|
14
15
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
15
16
|
declare const __VLS_component: import('vue').DefineComponent<NavbarMenuProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<NavbarMenuProps> & Readonly<{}>, {
|
|
16
17
|
trigger: import('./types').NavbarMenuTrigger;
|
|
17
|
-
|
|
18
|
+
columns: NavbarMenuColumns;
|
|
18
19
|
offset: number;
|
|
20
|
+
fullWidth: boolean;
|
|
19
21
|
openDelay: number;
|
|
20
22
|
closeDelay: number;
|
|
21
|
-
columns: NavbarMenuColumns;
|
|
22
23
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
23
24
|
triggerRef: HTMLButtonElement;
|
|
24
25
|
panelRef: HTMLDivElement;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { SearchInputProps, SearchInputSize, SearchResult } from './types';
|
|
2
|
+
declare function expand(): void;
|
|
3
|
+
declare function collapse(): void;
|
|
4
|
+
declare const _default: import('vue').DefineComponent<SearchInputProps, {
|
|
5
|
+
expand: typeof expand;
|
|
6
|
+
collapse: typeof collapse;
|
|
7
|
+
focus: () => void | undefined;
|
|
8
|
+
inputRef: import('vue').Ref<HTMLInputElement | null, HTMLInputElement | null>;
|
|
9
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
10
|
+
search: (query: string) => any;
|
|
11
|
+
clear: () => any;
|
|
12
|
+
"update:modelValue": (value: string) => any;
|
|
13
|
+
select: (result: SearchResult) => any;
|
|
14
|
+
expand: () => any;
|
|
15
|
+
collapse: () => any;
|
|
16
|
+
}, string, import('vue').PublicProps, Readonly<SearchInputProps> & Readonly<{
|
|
17
|
+
onSearch?: ((query: string) => any) | undefined;
|
|
18
|
+
onClear?: (() => any) | undefined;
|
|
19
|
+
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
20
|
+
onSelect?: ((result: SearchResult) => any) | undefined;
|
|
21
|
+
onExpand?: (() => any) | undefined;
|
|
22
|
+
onCollapse?: (() => any) | undefined;
|
|
23
|
+
}>, {
|
|
24
|
+
size: SearchInputSize;
|
|
25
|
+
disabled: boolean;
|
|
26
|
+
loading: boolean;
|
|
27
|
+
placeholder: string;
|
|
28
|
+
clearable: boolean;
|
|
29
|
+
minQueryLength: number;
|
|
30
|
+
debounceMs: number;
|
|
31
|
+
expanded: boolean;
|
|
32
|
+
collapsible: boolean;
|
|
33
|
+
collapseOnBlur: boolean;
|
|
34
|
+
noResultsText: string;
|
|
35
|
+
maxResults: number;
|
|
36
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
37
|
+
wrapperRef: HTMLDivElement;
|
|
38
|
+
inputRef: HTMLInputElement;
|
|
39
|
+
}, any>;
|
|
40
|
+
export default _default;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Component } from 'vue';
|
|
2
|
+
export type SearchInputSize = 'sm' | 'md' | 'lg';
|
|
3
|
+
export interface SearchResult {
|
|
4
|
+
/** Unique identifier for the result */
|
|
5
|
+
id: string | number;
|
|
6
|
+
/** Display label for the result */
|
|
7
|
+
label: string;
|
|
8
|
+
/** Optional description shown below the label */
|
|
9
|
+
description?: string;
|
|
10
|
+
/** Optional icon (name string or Component) */
|
|
11
|
+
icon?: string | Component;
|
|
12
|
+
/** Whether this result is disabled */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/** Additional data to pass through on selection */
|
|
15
|
+
data?: unknown;
|
|
16
|
+
}
|
|
17
|
+
export interface SearchInputProps {
|
|
18
|
+
/** v-model value for the search query */
|
|
19
|
+
modelValue?: string;
|
|
20
|
+
/** Placeholder text when input is empty */
|
|
21
|
+
placeholder?: string;
|
|
22
|
+
/** Size variant */
|
|
23
|
+
size?: SearchInputSize;
|
|
24
|
+
/** Disable the input */
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
/** Show clear button when input has value */
|
|
27
|
+
clearable?: boolean;
|
|
28
|
+
/** Start in expanded state (only applies when collapsible is true) */
|
|
29
|
+
expanded?: boolean;
|
|
30
|
+
/** Enable collapsible pill behavior (default: true). When false, input is always expanded */
|
|
31
|
+
collapsible?: boolean;
|
|
32
|
+
/** Collapse back to icon when clicking outside (only applies when collapsible is true) */
|
|
33
|
+
collapseOnBlur?: boolean;
|
|
34
|
+
/** Array of search results to display */
|
|
35
|
+
results?: SearchResult[];
|
|
36
|
+
/** Show loading spinner in dropdown */
|
|
37
|
+
loading?: boolean;
|
|
38
|
+
/** Debounce delay for search event in milliseconds */
|
|
39
|
+
debounceMs?: number;
|
|
40
|
+
/** Minimum characters before showing results */
|
|
41
|
+
minQueryLength?: number;
|
|
42
|
+
/** Text to show when no results found */
|
|
43
|
+
noResultsText?: string;
|
|
44
|
+
/** Maximum number of results to display */
|
|
45
|
+
maxResults?: number;
|
|
46
|
+
/** Width of expanded input (CSS value) */
|
|
47
|
+
expandedWidth?: string;
|
|
48
|
+
}
|
|
@@ -14,10 +14,10 @@ declare const _default: import('vue').DefineComponent<SparklineProps, {}, {}, {}
|
|
|
14
14
|
showTooltip: boolean;
|
|
15
15
|
animated: boolean;
|
|
16
16
|
animationDuration: number;
|
|
17
|
+
fillOpacity: number;
|
|
18
|
+
strokeWidth: number;
|
|
17
19
|
responsive: boolean;
|
|
18
20
|
curve: import('./types').SparklineCurve;
|
|
19
|
-
strokeWidth: number;
|
|
20
|
-
fillOpacity: number;
|
|
21
21
|
highlightOnHover: boolean;
|
|
22
22
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
23
23
|
containerRef: HTMLDivElement;
|
|
@@ -14,9 +14,9 @@ declare const _default: import('vue').DefineComponent<SparklineLineProps, {}, {}
|
|
|
14
14
|
area: boolean;
|
|
15
15
|
animated: boolean;
|
|
16
16
|
animationDuration: number;
|
|
17
|
+
strokeWidth: number;
|
|
17
18
|
curve: SparklineCurve;
|
|
18
19
|
areaOpacity: number;
|
|
19
|
-
strokeWidth: number;
|
|
20
20
|
baseline: number;
|
|
21
21
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
22
22
|
pathRef: SVGPathElement;
|
|
@@ -35,11 +35,12 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {
|
|
|
35
35
|
rowHeight: number;
|
|
36
36
|
overscan: number;
|
|
37
37
|
emptyMessage: string;
|
|
38
|
+
animated: boolean;
|
|
39
|
+
maxHeight: string;
|
|
40
|
+
columns: ColumnDefinition<Record<string, unknown>>[];
|
|
38
41
|
hoverable: boolean;
|
|
39
42
|
selectionMode: import('./types').SelectionMode;
|
|
40
43
|
selectedKeys: Set<string | number> | Array<string | number>;
|
|
41
|
-
maxHeight: string;
|
|
42
|
-
columns: ColumnDefinition<Record<string, unknown>>[];
|
|
43
44
|
rowKey: string | ((row: Record<string, unknown>, index: number) => string | number);
|
|
44
45
|
sortState: SortState;
|
|
45
46
|
stickyHeader: boolean;
|
|
@@ -74,6 +74,8 @@ export interface TableProps<T = Record<string, unknown>> {
|
|
|
74
74
|
overscan?: number;
|
|
75
75
|
/** Enable client-side sorting using column sortFn or default string comparison */
|
|
76
76
|
clientSideSorting?: boolean;
|
|
77
|
+
/** Enable row animations for sorting, filtering, add/remove (default: true) */
|
|
78
|
+
animated?: boolean;
|
|
77
79
|
}
|
|
78
80
|
export interface TableHeaderProps {
|
|
79
81
|
/** Enable sticky positioning */
|
|
@@ -213,5 +215,7 @@ export interface TableContext<T = Record<string, unknown>> {
|
|
|
213
215
|
getRowKey: (row: T, index: number) => string | number;
|
|
214
216
|
/** Unique table ID for ARIA */
|
|
215
217
|
tableId: string;
|
|
218
|
+
/** Row animations enabled */
|
|
219
|
+
animated: Ref<boolean>;
|
|
216
220
|
}
|
|
217
221
|
export declare const TABLE_INJECTION_KEY: InjectionKey<TableContext>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { TimerProps, TimerFormat, TimerSize } from './types';
|
|
2
|
+
declare function start(): void;
|
|
3
|
+
declare function pause(): void;
|
|
4
|
+
declare function reset(): void;
|
|
5
|
+
declare function toggle(): void;
|
|
6
|
+
declare function __VLS_template(): {
|
|
7
|
+
attrs: Partial<{}>;
|
|
8
|
+
slots: {
|
|
9
|
+
display?(_: {
|
|
10
|
+
time: number;
|
|
11
|
+
formatted: string;
|
|
12
|
+
}): any;
|
|
13
|
+
controls?(_: {
|
|
14
|
+
start: typeof start;
|
|
15
|
+
pause: typeof pause;
|
|
16
|
+
reset: typeof reset;
|
|
17
|
+
toggle: typeof toggle;
|
|
18
|
+
isRunning: boolean;
|
|
19
|
+
currentTime: number;
|
|
20
|
+
}): any;
|
|
21
|
+
};
|
|
22
|
+
refs: {};
|
|
23
|
+
rootEl: HTMLDivElement;
|
|
24
|
+
};
|
|
25
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
26
|
+
declare const __VLS_component: import('vue').DefineComponent<TimerProps, {
|
|
27
|
+
start: typeof start;
|
|
28
|
+
pause: typeof pause;
|
|
29
|
+
reset: typeof reset;
|
|
30
|
+
toggle: typeof toggle;
|
|
31
|
+
isRunning: import('vue').Ref<boolean, boolean>;
|
|
32
|
+
currentTime: import('vue').Ref<number, number>;
|
|
33
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
34
|
+
reset: () => any;
|
|
35
|
+
start: () => any;
|
|
36
|
+
pause: () => any;
|
|
37
|
+
tick: (time: number) => any;
|
|
38
|
+
complete: () => any;
|
|
39
|
+
}, string, import('vue').PublicProps, Readonly<TimerProps> & Readonly<{
|
|
40
|
+
onReset?: (() => any) | undefined;
|
|
41
|
+
onStart?: (() => any) | undefined;
|
|
42
|
+
onPause?: (() => any) | undefined;
|
|
43
|
+
onTick?: ((time: number) => any) | undefined;
|
|
44
|
+
onComplete?: (() => any) | undefined;
|
|
45
|
+
}>, {
|
|
46
|
+
size: TimerSize;
|
|
47
|
+
animated: boolean;
|
|
48
|
+
mode: import('./types').TimerMode;
|
|
49
|
+
format: TimerFormat;
|
|
50
|
+
duration: number;
|
|
51
|
+
autoStart: boolean;
|
|
52
|
+
showControls: boolean;
|
|
53
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
54
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
55
|
+
export default _default;
|
|
56
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
57
|
+
new (): {
|
|
58
|
+
$slots: S;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type TimerMode = 'stopwatch' | 'countdown';
|
|
2
|
+
export type TimerFormat = 'auto' | 'ss' | 'mm:ss' | 'hh:mm:ss';
|
|
3
|
+
export type TimerSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
4
|
+
export interface TimerProps {
|
|
5
|
+
/** Timer mode */
|
|
6
|
+
mode?: TimerMode;
|
|
7
|
+
/** Duration in seconds for countdown mode */
|
|
8
|
+
duration?: number;
|
|
9
|
+
/** Start automatically on mount */
|
|
10
|
+
autoStart?: boolean;
|
|
11
|
+
/** Time display format */
|
|
12
|
+
format?: TimerFormat;
|
|
13
|
+
/** Show built-in controls */
|
|
14
|
+
showControls?: boolean;
|
|
15
|
+
/** Size variant */
|
|
16
|
+
size?: TimerSize;
|
|
17
|
+
/** Enable slide animation on digit changes */
|
|
18
|
+
animated?: boolean;
|
|
19
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TreeProps, TreeNodeId } from './types';
|
|
2
|
+
declare function expandAll(): void;
|
|
3
|
+
declare function collapseAll(): void;
|
|
4
|
+
declare const _default: import('vue').DefineComponent<TreeProps, {
|
|
5
|
+
expandAll: typeof expandAll;
|
|
6
|
+
collapseAll: typeof collapseAll;
|
|
7
|
+
expandedKeys: import('vue').ComputedRef<Set<TreeNodeId> & Omit<Set<TreeNodeId>, keyof Set<any>>>;
|
|
8
|
+
selectedKeys: import('vue').ComputedRef<Set<TreeNodeId> & Omit<Set<TreeNodeId>, keyof Set<any>>>;
|
|
9
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
10
|
+
"update:selected": (value: TreeNodeId[]) => any;
|
|
11
|
+
"update:expanded": (value: TreeNodeId[]) => any;
|
|
12
|
+
}, string, import('vue').PublicProps, Readonly<TreeProps> & Readonly<{
|
|
13
|
+
"onUpdate:selected"?: ((value: TreeNodeId[]) => any) | undefined;
|
|
14
|
+
"onUpdate:expanded"?: ((value: TreeNodeId[]) => any) | undefined;
|
|
15
|
+
}>, {
|
|
16
|
+
selected: TreeNodeId[];
|
|
17
|
+
expanded: TreeNodeId[];
|
|
18
|
+
selectable: boolean;
|
|
19
|
+
multiSelect: boolean;
|
|
20
|
+
showLines: boolean;
|
|
21
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
22
|
+
export default _default;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TreeNodeProps } from './types';
|
|
2
|
+
declare const _default: import('vue').DefineComponent<TreeNodeProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<TreeNodeProps> & Readonly<{}>, {
|
|
3
|
+
level: number;
|
|
4
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
5
|
+
export default _default;
|