vlite3 1.2.2 → 1.2.5

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 (57) hide show
  1. package/README.md +18 -7
  2. package/components/AppShell/AppShellLayoutDashboard.vue.js +1 -1
  3. package/components/AppShell/AppShellLayoutHeaderShell.vue.js +1 -1
  4. package/components/AsyncSelect/createAsyncSelect.d.ts +88 -0
  5. package/components/AsyncSelect/createAsyncSelect.js +156 -0
  6. package/components/AsyncSelect/index.d.ts +1 -0
  7. package/components/AvatarGroup/AvatarGroup.vue.js +10 -9
  8. package/components/Beacon.vue.d.ts +13 -0
  9. package/components/CategoryManager/CategoryManager.vue.js +1 -1
  10. package/components/ChoiceBox/ChoiceBox.vue.js +4 -2
  11. package/components/{CopyButton.vue.d.ts → Clipboard.vue.d.ts} +4 -3
  12. package/components/{CopyButton.vue.js → Clipboard.vue.js} +19 -19
  13. package/components/Clipboard.vue2.js +4 -0
  14. package/components/ColorPicker/ColorIro.vue3.js +2 -2
  15. package/components/ColorPicker/ColorPicker.vue.js +2 -2
  16. package/components/CommandPalette/CommandPaletteContent.vue2.js +1 -1
  17. package/components/CommandPalette/{CommandPaletteItem.vue.js → CommandPaletteItem.vue2.js} +1 -1
  18. package/components/DataTable/types.d.ts +1 -1
  19. package/components/Form/Form.vue.js +1 -1
  20. package/components/Form/Form.vue2.js +1 -1
  21. package/components/List/ListFieldRow.vue.js +221 -144
  22. package/components/Modal.vue.js +1 -1
  23. package/components/Modal.vue2.js +92 -86
  24. package/components/NavbarCommandPalette.vue.js +1 -1
  25. package/components/Persona.vue.d.ts +25 -0
  26. package/components/Price/Price.vue.d.ts +1 -1
  27. package/components/Price/Price.vue.js +35 -13
  28. package/components/Rating/Rating.vue.d.ts +43 -0
  29. package/components/Rating/Rating.vue.js +7 -0
  30. package/components/Rating/Rating.vue2.js +92 -0
  31. package/components/Rating/ReviewSummary.vue.d.ts +5 -0
  32. package/components/Rating/ReviewSummary.vue.js +67 -0
  33. package/components/Rating/ReviewSummary.vue2.js +4 -0
  34. package/components/Rating/index.d.ts +3 -0
  35. package/components/Rating/types.d.ts +28 -0
  36. package/components/Screen/Screen.vue.d.ts +2 -2
  37. package/components/Screen/Screen.vue.js +3 -1
  38. package/components/Screen/ScreenFilter.vue.js +1 -1
  39. package/components/SidePanel.vue.js +3 -3
  40. package/components/SidePanel.vue2.js +44 -56
  41. package/components/SidebarMenu/SidebarMenu.vue.js +1 -1
  42. package/components/SidebarMenu/SidebarMenuItem.vue.d.ts +3 -1
  43. package/components/SidebarMenu/SidebarMenuItem.vue.js +197 -178
  44. package/components/Stats/StatItem.vue.js +222 -164
  45. package/components/Stats/components/StatIconBox.vue.js +42 -42
  46. package/components/Stats/components/StatTrend.vue.js +20 -20
  47. package/components/ThemeToggle.vue.js +10 -10
  48. package/components/Timeline/Timeline.vue.js +21 -11
  49. package/components/Timeline/TimelineItem.vue.js +1 -1
  50. package/components/index.d.ts +2 -0
  51. package/index.d.ts +3 -1
  52. package/index.js +113 -107
  53. package/package.json +2 -1
  54. package/style.css +47 -32
  55. package/utils/status.js +16 -16
  56. package/components/CopyButton.vue2.js +0 -4
  57. /package/components/ColorPicker/{ColorIro.vue.js → ColorIro.vue2.js} +0 -0
package/README.md CHANGED
@@ -1,6 +1,12 @@
1
- # vlite3
1
+ # Vlite3: The Foundation for Enterprise SaaS
2
2
 
3
- A lightweight Vue 3 UI component library built with Tailwind CSS, created for personal projects and available for anyone to use.
3
+ A clean, modular, and highly customizable component library for Vue 3. Build large, complex applications with confidence. Vlite3 gives you the solid, Vlite3 delivers 80+ production-ready components designed for real-world enterprise applications. Each component has been thoroughly tested in demanding enterprise production environments, ensuring stability, scalability, and performance.
4
+
5
+ Created for personal projects and available for anyone to use.
6
+
7
+ ## Demo
8
+
9
+ [Live Demo](https://vlite3.vercel.app/)
4
10
 
5
11
  ## Installation
6
12
 
@@ -14,10 +20,6 @@ yarn add vlite3
14
20
 
15
21
  ```
16
22
 
17
- ## Demo
18
-
19
- [Live Demo](https://vlite3.vercel.app/)
20
-
21
23
  ## 2. Tailwind CSS Setup (Tailwind v4)
22
24
 
23
25
  `vite.config.ts`
@@ -407,6 +409,8 @@ Follow these rules strictly to ensure visual consistency and predictable styling
407
409
  - [x] **Screen**
408
410
  - [x] **ChatInterface**
409
411
  - [x] **CommentThread**
412
+ - [x] **Clipboard**
413
+ - [x] **AppShell**
410
414
 
411
415
  ### Inputs & Forms
412
416
 
@@ -431,11 +435,13 @@ Follow these rules strictly to ensure visual consistency and predictable styling
431
435
  - [x] **CustomFields**
432
436
  - [x] **GoogleLogin**
433
437
  - [x] **PermissionEditor**
438
+ - [x] **Rating**
434
439
  - [x] **RichTextEditor**
435
440
 
436
441
  ### Data Display
437
442
 
438
443
  - [x] **Avatar**
444
+ - [x] **Persona**
439
445
  - [x] **Accordion**
440
446
  - [x] **Carousel**
441
447
  - [x] **DataTable**
@@ -459,6 +465,7 @@ Follow these rules strictly to ensure visual consistency and predictable styling
459
465
  ### Feedback & Overlays
460
466
 
461
467
  - [x] **Alert**
468
+ - [x] **Beacon**
462
469
  - [x] **Modal**
463
470
  - [x] **Empty**
464
471
  - [x] **ConfirmationModal**
@@ -484,7 +491,11 @@ Follow these rules strictly to ensure visual consistency and predictable styling
484
491
  - [0-setup.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/0-vlite3-setup.md)
485
492
  - [1-theming.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/1-theming.md)
486
493
  - [2-components.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/2-all-components.md)
487
- - [3-forms.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/components/Forms.md)
494
+ - [3-forms.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/1-Components/Forms.md)
488
495
  - [3-utility.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/3-utility.md)
489
496
  - [4-i18n.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/4-i18n.md)
490
497
  - [5-search-util.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/5-search-util.md)
498
+
499
+ ## Author
500
+
501
+ [safdar-azeem](https://github.com/safdar-azeem)
@@ -119,7 +119,7 @@ const D = { class: "vlite-app-layout flex flex-row w-full h-full bg-muted/20 p-0
119
119
  ref_key: "mainScrollRef",
120
120
  ref: S,
121
121
  style: { "will-change": "transform", contain: "layout style" },
122
- class: "flex-1 overflow-y-auto pt-2 w-full relative h-full scrollbar-thin scrollbar-stable"
122
+ class: "flex-1 overflow-y-auto w-full relative h-full scrollbar-thin scrollbar-stable"
123
123
  }, [
124
124
  l(s.$slots, "main")
125
125
  ], 512)
@@ -121,7 +121,7 @@ const H = { class: "vlite-app-layout flex flex-row w-full h-full bg-background o
121
121
  ref_key: "mainScrollRef",
122
122
  ref: S,
123
123
  style: { "will-change": "transform", contain: "layout style" },
124
- class: "flex-1 overflow-y-auto w-full relative h-full scrollbar-thin scrollbar-stable px-6 pb-4 mt-4"
124
+ class: "flex-1 overflow-y-auto w-full relative h-full scrollbar-thin scrollbar-stable"
125
125
  }, [
126
126
  l(s.$slots, "main")
127
127
  ], 512)
@@ -0,0 +1,88 @@
1
+ import { PropType } from 'vue';
2
+ export interface SelectOption<T = unknown> {
3
+ label: string;
4
+ value: string | number;
5
+ subtitle?: string;
6
+ description?: string;
7
+ icon?: string;
8
+ data?: T;
9
+ }
10
+ export type OptionsMapper<T> = (item: T) => SelectOption<T> | null | undefined;
11
+ export interface CreateSelectConfig<T = any> {
12
+ name: string;
13
+ useQuery: any;
14
+ queryName: string;
15
+ labelKey?: keyof T | ((item: T) => string);
16
+ subtitleKey?: keyof T | ((item: T) => string);
17
+ descriptionKey?: keyof T | ((item: T) => string);
18
+ valueKey?: keyof T;
19
+ iconKey?: keyof T | ((item: T) => string);
20
+ searchable?: boolean;
21
+ remote?: boolean;
22
+ multiple?: boolean;
23
+ optionsMapper?: OptionsMapper<T>;
24
+ }
25
+ export declare const createAsyncSelect: <T extends {
26
+ id?: string | number;
27
+ }>(config: CreateSelectConfig<T>) => import('vue').DefineComponent<import('vue').ExtractPropTypes<{
28
+ value: {
29
+ type: (ObjectConstructor | ArrayConstructor | BooleanConstructor | NumberConstructor | StringConstructor)[];
30
+ };
31
+ modelValue: {
32
+ type: (ObjectConstructor | ArrayConstructor | BooleanConstructor | NumberConstructor | StringConstructor)[];
33
+ };
34
+ multiple: {
35
+ type: BooleanConstructor;
36
+ default: boolean;
37
+ };
38
+ placeholder: {
39
+ type: StringConstructor;
40
+ default: string;
41
+ };
42
+ filter: {
43
+ type: ObjectConstructor;
44
+ default: () => {};
45
+ };
46
+ disabled: {
47
+ type: BooleanConstructor;
48
+ default: boolean;
49
+ };
50
+ optionsMapper: {
51
+ type: PropType<OptionsMapper<T>>;
52
+ };
53
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("onChange" | "change" | "update:modelValue")[], "onChange" | "change" | "update:modelValue", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
54
+ value: {
55
+ type: (ObjectConstructor | ArrayConstructor | BooleanConstructor | NumberConstructor | StringConstructor)[];
56
+ };
57
+ modelValue: {
58
+ type: (ObjectConstructor | ArrayConstructor | BooleanConstructor | NumberConstructor | StringConstructor)[];
59
+ };
60
+ multiple: {
61
+ type: BooleanConstructor;
62
+ default: boolean;
63
+ };
64
+ placeholder: {
65
+ type: StringConstructor;
66
+ default: string;
67
+ };
68
+ filter: {
69
+ type: ObjectConstructor;
70
+ default: () => {};
71
+ };
72
+ disabled: {
73
+ type: BooleanConstructor;
74
+ default: boolean;
75
+ };
76
+ optionsMapper: {
77
+ type: PropType<OptionsMapper<T>>;
78
+ };
79
+ }>> & Readonly<{
80
+ onChange?: (...args: any[]) => any;
81
+ "onUpdate:modelValue"?: (...args: any[]) => any;
82
+ onOnChange?: (...args: any[]) => any;
83
+ }>, {
84
+ filter: Record<string, any>;
85
+ placeholder: string;
86
+ disabled: boolean;
87
+ multiple: boolean;
88
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,156 @@
1
+ import { defineComponent as q, ref as m, computed as s, watch as _, createVNode as w, mergeProps as I, nextTick as j } from "vue";
2
+ import k from "../Dropdown/Dropdown.vue.js";
3
+ import "@iconify/vue";
4
+ import "../../core/config.js";
5
+ /* empty css */
6
+ /* empty css */
7
+ import x from "../MultiSelect/MultiSelect.vue.js";
8
+ const z = (t) => /* @__PURE__ */ q({
9
+ name: t.name,
10
+ inheritAttrs: !1,
11
+ props: {
12
+ value: {
13
+ type: [String, Array, Number, Object, Boolean]
14
+ },
15
+ modelValue: {
16
+ type: [String, Array, Number, Object, Boolean]
17
+ },
18
+ multiple: {
19
+ type: Boolean,
20
+ default: t.multiple || !1
21
+ },
22
+ placeholder: {
23
+ type: String,
24
+ default: "Select..."
25
+ },
26
+ filter: {
27
+ type: Object,
28
+ default: () => ({})
29
+ },
30
+ disabled: {
31
+ type: Boolean,
32
+ default: !1
33
+ },
34
+ optionsMapper: {
35
+ type: Function
36
+ }
37
+ },
38
+ emits: ["onChange", "update:modelValue", "change"],
39
+ setup(l, {
40
+ attrs: M,
41
+ emit: c
42
+ }) {
43
+ const i = m([]), d = m(1), f = m(""), N = 20, h = s(() => l.value !== void 0 ? l.value : l.modelValue), v = s(() => l.optionsMapper || t.optionsMapper), B = s(() => ({
44
+ pagination: {
45
+ page: d.value,
46
+ limit: N
47
+ },
48
+ search: f.value || void 0,
49
+ filter: {
50
+ ...l.filter
51
+ }
52
+ })), {
53
+ result: b,
54
+ loading: K,
55
+ refetch: g
56
+ } = t.useQuery(B, {
57
+ notifyOnNetworkStatusChange: !0,
58
+ fetchPolicy: "cache-and-network"
59
+ }), A = s(() => {
60
+ const e = b.value?.[t.queryName]?.pageInfo;
61
+ return e ? e.currentPage < e.totalPages : !1;
62
+ });
63
+ _(() => b.value?.[t.queryName], (e) => {
64
+ if (!e) return;
65
+ const n = Array.isArray(e) ? e : e.items;
66
+ if (n)
67
+ if (d.value === 1)
68
+ i.value = [...n];
69
+ else {
70
+ const u = new Set(i.value.map((a) => a.id)), r = n.filter((a) => !u.has(a.id));
71
+ i.value.push(...r);
72
+ }
73
+ }, {
74
+ immediate: !0
75
+ });
76
+ const S = (e) => {
77
+ if (v.value)
78
+ return v.value(e);
79
+ const n = typeof t.labelKey == "function" ? t.labelKey(e) : e[t.labelKey || "name"], u = typeof t.subtitleKey == "function" ? t.subtitleKey(e) : e[t.subtitleKey || ""], r = typeof t.descriptionKey == "function" ? t.descriptionKey(e) : e[t.descriptionKey || ""], a = t.iconKey ? typeof t.iconKey == "function" ? t.iconKey(e) : e[t.iconKey] : void 0;
80
+ return {
81
+ label: n,
82
+ subtitle: u || void 0,
83
+ description: r || void 0,
84
+ value: e[t.valueKey || "id"],
85
+ icon: a || void 0,
86
+ data: e
87
+ };
88
+ }, p = s(() => i.value.map(S).filter(Boolean)), y = (e, n) => {
89
+ let u = n;
90
+ l.multiple && Array.isArray(e) && (u = e.map((a) => {
91
+ const o = p.value.find((V) => V.value === a);
92
+ return o ? o.data : null;
93
+ }).filter(Boolean));
94
+ const r = {
95
+ value: e,
96
+ data: u
97
+ };
98
+ c("update:modelValue", e), c("change", r), c("onChange", r);
99
+ }, C = (e) => {
100
+ f.value = e, d.value = 1;
101
+ }, O = () => {
102
+ !A.value || K.value || d.value++;
103
+ }, P = async (e) => {
104
+ const n = (Array.isArray(e) ? e : [e]).filter((a) => (typeof a == "string" || typeof a == "number") && a !== "");
105
+ if (n.length === 0) return [];
106
+ await j();
107
+ const u = new Set(p.value.map((a) => a.value)), r = n.filter((a) => !u.has(a));
108
+ if (r.length === 0) return [];
109
+ try {
110
+ const {
111
+ data: a
112
+ } = await g({
113
+ pagination: {
114
+ page: 1,
115
+ limit: r.length
116
+ },
117
+ filter: {
118
+ ...l.filter,
119
+ ids: r
120
+ }
121
+ }), o = a?.[t.queryName];
122
+ return (Array.isArray(o) ? o : o?.items || []).map(S).filter(Boolean);
123
+ } catch (a) {
124
+ return console.error(`[${t.name}] Hydration failed`, a), [];
125
+ }
126
+ };
127
+ return () => {
128
+ const e = {
129
+ options: p.value,
130
+ loading: K.value,
131
+ searchable: t.searchable ?? !0,
132
+ remote: t.remote ?? !0,
133
+ hasMore: A.value,
134
+ placeholder: l.placeholder,
135
+ disabled: l.disabled,
136
+ fetchSelected: P,
137
+ onSearch: C,
138
+ onLoadMore: O,
139
+ ...M
140
+ };
141
+ return l.multiple ? w(x, I(e, {
142
+ modelValue: h.value,
143
+ "onUpdate:modelValue": (n) => y(n),
144
+ onChange: (n) => y(n)
145
+ }), null) : w(k, I(e, {
146
+ showSelectedIcon: !0,
147
+ emptyMessage: "Data not found",
148
+ modelValue: h.value,
149
+ onOnSelect: (n) => y(n.value, n.data)
150
+ }), null);
151
+ };
152
+ }
153
+ });
154
+ export {
155
+ z as createAsyncSelect
156
+ };
@@ -0,0 +1 @@
1
+ export * from './createAsyncSelect';
@@ -1,7 +1,7 @@
1
- import { defineComponent as k, computed as u, openBlock as l, createElementBlock as s, normalizeClass as a, Fragment as z, renderList as b, createVNode as f, withCtx as x, createElementVNode as y, toDisplayString as r, createCommentVNode as o, normalizeStyle as C } from "vue";
2
- import p from "../Avatar.vue.js";
3
- import S from "../Tooltip.vue.js";
4
- const w = { class: "flex flex-col gap-0.5 text-left" }, N = {
1
+ import { defineComponent as k, computed as u, openBlock as l, createElementBlock as s, normalizeClass as a, Fragment as z, renderList as b, createVNode as f, withCtx as x, createElementVNode as p, toDisplayString as r, createCommentVNode as o, normalizeStyle as y } from "vue";
2
+ import C from "../Avatar.vue.js";
3
+ import w from "../Tooltip.vue.js";
4
+ const S = { class: "flex flex-col gap-0.5 text-left" }, N = {
5
5
  key: 0,
6
6
  class: "font-semibold text-sm text-tooltip-foreground"
7
7
  }, V = {
@@ -44,18 +44,19 @@ const w = { class: "flex flex-col gap-0.5 text-left" }, N = {
44
44
  key: c,
45
45
  class: a([c !== 0 ? m[e.overlap] : "", "relative shrink-0"])
46
46
  }, [
47
- f(S, {
47
+ f(w, {
48
48
  disabled: !t.heading && !t.text,
49
- placement: "top"
49
+ placement: "top",
50
+ contentClass: "min-w-[100px] px-10!"
50
51
  }, {
51
52
  content: x(() => [
52
- y("div", w, [
53
+ p("div", S, [
53
54
  t.heading ? (l(), s("span", N, r(t.heading), 1)) : o("", !0),
54
55
  t.text ? (l(), s("span", V, r(t.text), 1)) : o("", !0)
55
56
  ])
56
57
  ]),
57
58
  default: x(() => [
58
- f(p, {
59
+ f(C, {
59
60
  src: t.src,
60
61
  alt: t.alt,
61
62
  fallback: t.fallback,
@@ -76,7 +77,7 @@ const w = { class: "flex flex-col gap-0.5 text-left" }, N = {
76
77
  g,
77
78
  e.rounded === "full" ? "rounded-full" : e.rounded === "none" ? "rounded-none" : `rounded-${e.rounded}`
78
79
  ]),
79
- style: C({
80
+ style: y({
80
81
  // Match the same size as Avatar sizeClasses
81
82
  width: i[e.size],
82
83
  height: i[e.size],
@@ -0,0 +1,13 @@
1
+ export type BeaconVariant = 'primary' | 'danger' | 'warning' | 'success' | 'info';
2
+ export type BeaconSize = 'sm' | 'md' | 'lg';
3
+ interface Props {
4
+ variant?: BeaconVariant | string;
5
+ size?: BeaconSize | string;
6
+ class?: any;
7
+ }
8
+ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
9
+ class: any;
10
+ variant: BeaconVariant | string;
11
+ size: BeaconSize | string;
12
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLSpanElement>;
13
+ export default _default;
@@ -16,7 +16,7 @@ import "v-datepicker-lite";
16
16
  import "v-datepicker-lite/style.css";
17
17
  import "@jaames/iro";
18
18
  import "@vueuse/core";
19
- /* empty css */
19
+ /* empty css */
20
20
  import me from "../IconPicker.vue.js";
21
21
  /* empty css */
22
22
  /* empty css */
@@ -15,7 +15,7 @@ const E = { class: "w-full" }, S = {
15
15
  class: "shrink-0 pt-0.5"
16
16
  }, L = { class: "flex flex-col" }, M = { class: "flex items-center gap-2" }, G = {
17
17
  key: 0,
18
- class: "mt-1 -text-fs-3 text-muted leading-relaxed"
18
+ class: "mt-0.5 -text-fs-3 text-muted leading-relaxed"
19
19
  }, H = {
20
20
  key: 0,
21
21
  class: "absolute top-4 right-4 text-primary"
@@ -35,7 +35,9 @@ const E = { class: "w-full" }, S = {
35
35
  },
36
36
  emits: ["update:modelValue", "change"],
37
37
  setup(g, { emit: _ }) {
38
- const s = g, x = _, f = m(() => s.titleI18n ? u(s.titleI18n) : s.title), p = m(() => s.descriptionI18n ? u(s.descriptionI18n) : s.description), k = (t) => t.titleI18n ? u(t.titleI18n) : t.title, I = (t) => t.descriptionI18n ? u(t.descriptionI18n) : t.description, w = (t) => t.badgeI18n ? u(t.badgeI18n) : t.badge, d = (t) => Array.isArray(s.modelValue) ? s.modelValue.includes(t) : s.modelValue === t, b = (t) => {
38
+ const s = g, x = _, f = m(() => s.titleI18n ? u(s.titleI18n) : s.title), p = m(
39
+ () => s.descriptionI18n ? u(s.descriptionI18n) : s.description
40
+ ), k = (t) => t.titleI18n ? u(t.titleI18n) : t.title, I = (t) => t.descriptionI18n ? u(t.descriptionI18n) : t.description, w = (t) => t.badgeI18n ? u(t.badgeI18n) : t.badge, d = (t) => Array.isArray(s.modelValue) ? s.modelValue.includes(t) : s.modelValue === t, b = (t) => {
39
41
  if (s.disabled || s.options.find((l) => l.id === t)?.disabled) return;
40
42
  let e;
41
43
  if (s.multiple) {
@@ -1,5 +1,5 @@
1
1
  import { ButtonVariant, ButtonSize, ButtonRounded } from '../types';
2
- export interface CopyButtonProps {
2
+ export interface ClipboardProps {
3
3
  /** The content to be copied to the clipboard */
4
4
  textToCopy: string;
5
5
  variant?: ButtonVariant;
@@ -26,15 +26,16 @@ declare function __VLS_template(): {
26
26
  rootEl: HTMLButtonElement;
27
27
  };
28
28
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
29
- declare const __VLS_component: import('vue').DefineComponent<CopyButtonProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
29
+ declare const __VLS_component: import('vue').DefineComponent<ClipboardProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
30
30
  copy: (text: string) => any;
31
31
  error: (err: Error) => any;
32
- }, string, import('vue').PublicProps, Readonly<CopyButtonProps> & Readonly<{
32
+ }, string, import('vue').PublicProps, Readonly<ClipboardProps> & Readonly<{
33
33
  onCopy?: (text: string) => any;
34
34
  onError?: (err: Error) => any;
35
35
  }>, {
36
36
  variant: ButtonVariant;
37
37
  size: ButtonSize;
38
+ rounded: ButtonRounded;
38
39
  asIcon: boolean;
39
40
  defaultIcon: string;
40
41
  copiedIcon: string;
@@ -1,61 +1,61 @@
1
- import { defineComponent as f, ref as p, computed as l, openBlock as m, createBlock as x, normalizeClass as T, withCtx as y, renderSlot as v, createCommentVNode as I } from "vue";
1
+ import { defineComponent as f, ref as p, computed as i, openBlock as m, createBlock as x, normalizeClass as T, withCtx as v, renderSlot as y, createCommentVNode as I } from "vue";
2
2
  import C from "./Button.vue.js";
3
- import { $t as r } from "../utils/i18n.js";
4
- const z = /* @__PURE__ */ f({
5
- __name: "CopyButton",
3
+ import { $t as d } from "../utils/i18n.js";
4
+ const w = /* @__PURE__ */ f({
5
+ __name: "Clipboard",
6
6
  props: {
7
7
  textToCopy: {},
8
8
  variant: { default: "outline" },
9
9
  size: { default: "md" },
10
- rounded: {},
10
+ rounded: { default: "full" },
11
11
  class: {},
12
12
  disabled: { type: Boolean },
13
13
  defaultIcon: { default: "lucide:copy" },
14
14
  copiedIcon: { default: "lucide:check" },
15
15
  defaultText: {},
16
16
  copiedText: {},
17
- defaultTextI18n: { default: "vlite.copyButton.copy" },
18
- copiedTextI18n: { default: "vlite.copyButton.copied" },
17
+ defaultTextI18n: { default: "vlite.clipboard.copy" },
18
+ copiedTextI18n: { default: "vlite.clipboard.copied" },
19
19
  asIcon: { type: Boolean, default: !1 }
20
20
  },
21
21
  emits: ["copy", "error"],
22
- setup(o, { emit: d }) {
23
- const e = o, c = d, a = p(!1);
22
+ setup(o, { emit: r }) {
23
+ const e = o, l = r, a = p(!1);
24
24
  let n = null;
25
- const u = l(() => a.value ? e.copiedIcon : e.defaultIcon), i = l(() => {
25
+ const u = i(() => a.value ? e.copiedIcon : e.defaultIcon), c = i(() => {
26
26
  if (!e.asIcon)
27
27
  if (a.value) {
28
28
  if (e.copiedText) return e.copiedText;
29
- const t = r(e.copiedTextI18n);
29
+ const t = d(e.copiedTextI18n);
30
30
  return t !== e.copiedTextI18n ? t : "Copied";
31
31
  } else {
32
32
  if (e.defaultText) return e.defaultText;
33
- const t = r(e.defaultTextI18n);
33
+ const t = d(e.defaultTextI18n);
34
34
  return t !== e.defaultTextI18n ? t : "Copy";
35
35
  }
36
36
  }), s = async () => {
37
37
  if (!e.disabled)
38
38
  try {
39
- await navigator.clipboard.writeText(e.textToCopy), a.value = !0, c("copy", e.textToCopy), n && clearTimeout(n), n = setTimeout(() => {
39
+ await navigator.clipboard.writeText(e.textToCopy), a.value = !0, l("copy", e.textToCopy), n && clearTimeout(n), n = setTimeout(() => {
40
40
  a.value = !1;
41
41
  }, 500);
42
42
  } catch (t) {
43
- c("error", t instanceof Error ? t : new Error("Copy failed"));
43
+ l("error", t instanceof Error ? t : new Error("Copy failed"));
44
44
  }
45
45
  };
46
- return (t, B) => (m(), x(C, {
46
+ return (t, b) => (m(), x(C, {
47
47
  variant: o.variant,
48
48
  size: o.size,
49
49
  rounded: o.rounded,
50
50
  class: T(e.class),
51
51
  disabled: o.disabled,
52
52
  icon: u.value,
53
- text: i.value,
53
+ text: c.value,
54
54
  "as-icon": o.asIcon,
55
55
  onClick: s
56
56
  }, {
57
- default: y(() => [
58
- !o.asIcon && !i.value ? v(t.$slots, "default", {
57
+ default: v(() => [
58
+ !o.asIcon && !c.value ? y(t.$slots, "default", {
59
59
  key: 0,
60
60
  copied: a.value
61
61
  }) : I("", !0)
@@ -65,5 +65,5 @@ const z = /* @__PURE__ */ f({
65
65
  }
66
66
  });
67
67
  export {
68
- z as default
68
+ w as default
69
69
  };
@@ -0,0 +1,4 @@
1
+ import f from "./Clipboard.vue.js";
2
+ export {
3
+ f as default
4
+ };
@@ -1,5 +1,5 @@
1
- import o from "./ColorIro.vue.js";
2
- /* empty css */
1
+ import o from "./ColorIro.vue2.js";
2
+ /* empty css */
3
3
  export {
4
4
  o as default
5
5
  };
@@ -6,8 +6,8 @@ import O from "../Input.vue.js";
6
6
  import "../../core/config.js";
7
7
  /* empty css */
8
8
  import y from "../Button.vue.js";
9
- import E from "./ColorIro.vue.js";
10
- /* empty css */
9
+ import E from "./ColorIro.vue2.js";
10
+ /* empty css */
11
11
  import { useEyeDropper as P } from "@vueuse/core";
12
12
  const I = {
13
13
  key: 0,
@@ -4,7 +4,7 @@ import k from "../Icon.vue.js";
4
4
  import { $t as E } from "../../utils/i18n.js";
5
5
  import { useCommandPaletteItems as Y } from "./useCommandPaletteItems.js";
6
6
  import { useCommandPaletteNav as Z } from "./useCommandPaletteNav.js";
7
- import ee from "./CommandPaletteItem.vue.js";
7
+ import ee from "./CommandPaletteItem.vue2.js";
8
8
  const te = { class: "command-palette-content flex flex-col w-full h-full max-h-[70vh]" }, oe = { class: "flex items-center gap-3 px-4 py-3 border-b border-border/80 shrink-0" }, se = ["placeholder"], ne = ["aria-label"], re = {
9
9
  key: 0,
10
10
  class: "flex flex-col items-center justify-center py-14 px-6 text-center select-none",
@@ -1,5 +1,5 @@
1
1
  import t from "./CommandPaletteItem.vue3.js";
2
- /* empty css */
2
+ /* empty css */
3
3
  import o from "../../_virtual/_plugin-vue_export-helper.js";
4
4
  const r = /* @__PURE__ */ o(t, [["__scopeId", "data-v-66b1ae06"]]);
5
5
  export {
@@ -18,7 +18,7 @@ export interface FilterConfig {
18
18
  }
19
19
  export interface TableFilter {
20
20
  pagination: PaginationConfig;
21
- sort: SortConfig;
21
+ sort?: SortConfig;
22
22
  filter: FilterConfig;
23
23
  }
24
24
  export interface TableHeader {
@@ -1,7 +1,7 @@
1
1
  import o from "./Form.vue2.js";
2
2
  /* empty css */
3
3
  import r from "../../_virtual/_plugin-vue_export-helper.js";
4
- const p = /* @__PURE__ */ r(o, [["__scopeId", "data-v-712d6d5d"]]);
4
+ const p = /* @__PURE__ */ r(o, [["__scopeId", "data-v-45c18c7b"]]);
5
5
  export {
6
6
  p as default
7
7
  };
@@ -220,7 +220,7 @@ const Be = ["onKeydown"], Le = { class: "flex items-center gap-3" }, Ne = { clas
220
220
  ], 2)) : c("", !0),
221
221
  !e.schemaLoading && u.value && X.value.length > 0 ? (s(), d("div", {
222
222
  key: 1,
223
- class: m(["form-timeline", e.timelineTextPosition == "right" ? "mb-6.5" : "mb-13"])
223
+ class: m(["form-timeline", e.timelineTextPosition == "right" ? "mb-2" : "mb-8"])
224
224
  }, [
225
225
  T(t(Pe), {
226
226
  steps: X.value,