vlite3 0.6.7 → 0.6.9

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 (46) hide show
  1. package/_virtual/_commonjsHelpers.js +6 -0
  2. package/_virtual/dayjs.min.js +7 -0
  3. package/_virtual/dayjs.min2.js +4 -0
  4. package/components/Barcode/Barcode.vue.d.ts +1 -1
  5. package/components/Breadcrumb/BreadcrumbItem.vue.js +2 -2
  6. package/components/ConfirmationModal.vue.js +30 -25
  7. package/components/DataTable/DataTableRow.vue.js +70 -64
  8. package/components/Date/Date.vue.d.ts +8 -0
  9. package/components/Date/Date.vue.js +21 -0
  10. package/components/Date/Date.vue2.js +4 -0
  11. package/components/Date/index.d.ts +1 -0
  12. package/components/Dropdown/DropdownMenu.vue.js +1 -1
  13. package/components/Form/Form.vue.js +1 -1
  14. package/components/Form/Form.vue2.js +39 -36
  15. package/components/List/ListFieldRow.vue.js +150 -107
  16. package/components/Modal.vue.js +2 -2
  17. package/components/Modal.vue2.js +43 -42
  18. package/components/Navbar/Navbar.vue.d.ts +33 -19
  19. package/components/Navbar/Navbar.vue.js +295 -185
  20. package/components/Navbar/NavbarTabs.vue.js +1 -1
  21. package/components/PermissionMatrix/PermissionEditor.vue.js +37 -37
  22. package/components/PermissionMatrix/PermissionEditorList.vue.js +5 -154
  23. package/components/PermissionMatrix/PermissionEditorList.vue2.js +160 -2
  24. package/components/PermissionMatrix/PermissionEditorMatrix.vue.js +5 -205
  25. package/components/PermissionMatrix/PermissionEditorMatrix.vue2.js +204 -2
  26. package/components/PermissionMatrix/PermissionMatrix.vue.js +1 -1
  27. package/components/PermissionMatrix/PermissionMatrix.vue2.js +115 -126
  28. package/components/Price/Price.vue.d.ts +8 -0
  29. package/components/Price/Price.vue.js +26 -0
  30. package/components/Price/Price.vue2.js +4 -0
  31. package/components/Price/index.d.ts +1 -0
  32. package/components/Screen/Screen.vue.js +19 -19
  33. package/components/SidebarMenu/SidebarMenu.vue.js +95 -93
  34. package/components/SidebarMenu/SidebarMenuItem.vue.js +42 -42
  35. package/components/Tabes/Tabes.vue.d.ts +6 -0
  36. package/components/Tabes/Tabes.vue.js +63 -56
  37. package/core/config.d.ts +14 -1
  38. package/core/config.js +15 -9
  39. package/core/index.d.ts +0 -22
  40. package/core/index.js +17 -9
  41. package/index.d.ts +2 -0
  42. package/index.js +18 -14
  43. package/package.json +2 -1
  44. package/style.css +1 -1
  45. package/types/config.type.d.ts +6 -0
  46. package/types/navbar.type.d.ts +7 -17
@@ -1,4 +1,4 @@
1
- import { defineComponent as E, ref as b, watch as l, onMounted as _, computed as g, openBlock as i, createElementBlock as p, normalizeClass as c, normalizeStyle as D, createCommentVNode as y, Fragment as N, renderList as O, createBlock as x, resolveDynamicComponent as P, mergeProps as T, withCtx as F, createElementVNode as q, toDisplayString as G, nextTick as H } from "vue";
1
+ import { defineComponent as E, ref as b, watch as l, onMounted as D, computed as g, openBlock as i, createElementBlock as p, normalizeClass as u, normalizeStyle as N, createCommentVNode as y, Fragment as O, renderList as P, createBlock as x, resolveDynamicComponent as T, mergeProps as F, withCtx as _, createElementVNode as q, toDisplayString as G, nextTick as H } from "vue";
2
2
  import { useResizeObserver as J } from "@vueuse/core";
3
3
  import K from "../Icon.vue.js";
4
4
  import { $t as Q } from "../../utils/i18n.js";
@@ -10,84 +10,91 @@ const Z = /* @__PURE__ */ E({
10
10
  size: { default: "md" },
11
11
  variant: { default: "surface" },
12
12
  block: { type: Boolean, default: !1 },
13
- textClass: {}
13
+ textClass: {},
14
+ wrap: { type: Boolean, default: !1 }
14
15
  },
15
16
  emits: ["update:modelValue", "change"],
16
17
  setup(s, { emit: h }) {
17
- const n = s, v = h, u = b(null), d = b(/* @__PURE__ */ new Map()), k = (e, a) => {
18
- e ? d.value.set(a, e) : d.value.delete(a);
19
- }, f = b({
18
+ const n = s, v = h, d = b(null), f = b(/* @__PURE__ */ new Map()), k = (e, a) => {
19
+ e ? f.value.set(a, e) : f.value.delete(a);
20
+ }, m = b({
20
21
  width: "0px",
21
22
  height: "0px",
22
23
  transform: "translate(0px, 0px)",
23
24
  opacity: 0
24
25
  }), o = async () => {
25
26
  await H();
26
- const e = u.value, a = d.value.get(n.modelValue);
27
+ const e = d.value, a = f.value.get(n.modelValue);
27
28
  if (!e || !a) {
28
- f.value.opacity = 0;
29
+ m.value.opacity = 0;
29
30
  return;
30
31
  }
31
- const r = e.getBoundingClientRect(), t = a.getBoundingClientRect(), m = t.left - r.left, M = t.top - r.top, j = t.width, A = t.height;
32
- f.value = {
32
+ const t = e.getBoundingClientRect(), r = a.getBoundingClientRect(), c = r.left - t.left, M = r.top - t.top, j = r.width, A = r.height;
33
+ m.value = {
33
34
  width: `${j}px`,
34
35
  height: `${A}px`,
35
- transform: `translate(${m}px, ${M}px)`,
36
+ transform: `translate(${c}px, ${M}px)`,
36
37
  opacity: 1
37
38
  };
38
39
  };
39
- J(u, o), l(() => n.modelValue, o), l(() => n.options, o, { deep: !0 }), l(() => n.size, o), l(() => n.block, o), _(o);
40
+ J(d, o), l(() => n.modelValue, o), l(() => n.options, o, { deep: !0 }), l(() => n.size, o), l(() => n.block, o), l(() => n.wrap, o), D(o);
40
41
  const C = (e) => {
41
42
  e.disabled || (v("update:modelValue", e.value), v("change", e.value));
42
- }, w = g(() => ["inline-flex rounded-lg relative isolate", {
43
- surface: "bg-secondary/80 p-1",
44
- primary: "bg-secondary p-1",
45
- secondary: "bg-secondary p-1",
46
- danger: "bg-danger/10 p-1",
47
- success: "bg-success/10 p-1",
48
- outline: "bg-transparent border border-border p-1",
49
- line: "bg-transparent gap-6 rounded-none p-0 border-b border-border w-full"
50
- }[n.variant], n.block ? "flex w-full" : ""]), z = {
43
+ }, w = g(() => {
44
+ const e = n.variant === "line", a = {
45
+ surface: "bg-secondary/80 p-1",
46
+ primary: "bg-secondary p-1",
47
+ secondary: "bg-secondary p-1",
48
+ danger: "bg-danger/10 p-1",
49
+ success: "bg-success/10 p-1",
50
+ outline: "bg-transparent border border-border p-1",
51
+ line: "bg-transparent gap-6 rounded-none p-0 border-b border-border"
52
+ }, t = n.wrap && !e ? "flex-wrap" : "";
53
+ return [`${n.block || e ? "flex w-full" : "inline-flex"} rounded-lg relative isolate ${t}`, a[n.variant]];
54
+ }), z = {
51
55
  sm: "text-xs px-2.5 py-1",
52
56
  md: "-text-fs-2 px-3 py-1",
53
57
  lg: "-text-fs-1 px-4 py-1"
54
- }, V = g(() => [n.variant === "line" ? "relative z-10 flex items-center justify-center gap-2 font-medium transition-colors duration-50 ease-out cursor-pointer select-none outline-none focus-visible:ring-2 focus-visible:ring-primary/50 pb-2 border-b-2 border-transparent hover:text-foreground" : "relative z-10 flex-1 flex items-center justify-center gap-2 font-medium transition-colors duration-50 ease-out cursor-pointer select-none rounded-md outline-none focus-visible:ring-2 focus-visible:ring-primary/50"]), $ = (e) => {
55
- const a = e.value === n.modelValue, r = n.variant === "line";
56
- let t = "";
58
+ }, $ = g(() => {
59
+ const e = n.variant === "line", a = e ? "relative z-10 flex items-center justify-center gap-2 font-medium transition-colors duration-50 ease-out cursor-pointer select-none outline-none focus-visible:ring-2 focus-visible:ring-primary/50 pb-2 border-b-2 border-transparent hover:text-foreground" : "relative z-10 flex items-center justify-center gap-2 font-medium transition-colors duration-50 ease-out cursor-pointer select-none rounded-md outline-none focus-visible:ring-2 focus-visible:ring-primary/50", t = (n.block || n.wrap) && !e ? "flex-1" : "";
60
+ return [a, t];
61
+ }), V = (e) => {
62
+ const a = e.value === n.modelValue, t = n.variant === "line";
63
+ let r = "";
57
64
  if (a)
58
- if (r)
59
- t = "text-primary";
65
+ if (t)
66
+ r = "text-primary";
60
67
  else
61
68
  switch (n.variant) {
62
69
  case "surface":
63
- t = "text-foreground";
70
+ r = "text-foreground";
64
71
  break;
65
72
  case "primary":
66
- t = "text-primary-foreground";
73
+ r = "text-primary-foreground";
67
74
  break;
68
75
  case "secondary":
69
- t = "text-secondary";
76
+ r = "text-secondary";
70
77
  break;
71
78
  case "danger":
72
- t = "text-danger-fg";
79
+ r = "text-danger-fg";
73
80
  break;
74
81
  case "success":
75
- t = "text-success-fg";
82
+ r = "text-success-fg";
76
83
  break;
77
84
  case "outline":
78
- t = "text-accent-foreground";
85
+ r = "text-accent-foreground";
79
86
  break;
80
87
  default:
81
- t = "text-foreground";
88
+ r = "text-foreground";
82
89
  }
83
90
  else
84
- t = r ? "text-muted-foreground" : "text-muted-foreground hover:text-foreground/80";
85
- const m = e.disabled ? "opacity-50 cursor-not-allowed" : "";
86
- return [V.value, t, m].join(" ");
91
+ r = t ? "text-muted-foreground" : "text-muted-foreground hover:text-foreground/80";
92
+ const c = e.disabled ? "opacity-50 cursor-not-allowed" : "";
93
+ return [$.value, r, c].join(" ");
87
94
  }, R = g(() => {
88
95
  const e = "absolute left-0 top-0 transition-all duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] z-0 pointer-events-none";
89
96
  return n.variant === "line" ? `${e} !h-[2px] !top-auto bottom-0` : `${e} rounded-md shadow-sm`;
90
- }), S = () => ({
97
+ }), B = () => ({
91
98
  surface: "bg-background",
92
99
  primary: "bg-primary",
93
100
  secondary: "bg-secondary-foreground",
@@ -95,38 +102,38 @@ const Z = /* @__PURE__ */ E({
95
102
  success: "bg-success",
96
103
  outline: "bg-accent/50 ring-1 ring-border",
97
104
  line: "bg-primary"
98
- })[n.variant], B = (e) => e.labelI18n ? Q(e.labelI18n) : e.label, I = (e) => e.to ? "router-link" : e.href ? "a" : "button", L = (e) => e.to ? { to: e.to } : e.href ? { href: e.href, target: "_blank", rel: "noopener noreferrer" } : { type: "button" };
105
+ })[n.variant], S = (e) => e.labelI18n ? Q(e.labelI18n) : e.label, I = (e) => e.to ? "router-link" : e.href ? "a" : "button", L = (e) => e.to ? { to: e.to } : e.href ? { href: e.href, target: "_blank", rel: "noopener noreferrer" } : { type: "button" };
99
106
  return (e, a) => (i(), p("div", {
100
107
  ref_key: "containerRef",
101
- ref: u,
102
- class: c(w.value),
108
+ ref: d,
109
+ class: u(w.value),
103
110
  role: "tablist"
104
111
  }, [
105
- s.modelValue !== void 0 ? (i(), p("div", {
112
+ s.modelValue !== void 0 && !s.wrap ? (i(), p("div", {
106
113
  key: 0,
107
- class: c([R.value, S()]),
108
- style: D(f.value)
114
+ class: u([R.value, B()]),
115
+ style: N(m.value)
109
116
  }, null, 6)) : y("", !0),
110
- (i(!0), p(N, null, O(s.options, (r) => (i(), x(P(I(r)), T({
111
- key: r.value,
117
+ (i(!0), p(O, null, P(s.options, (t) => (i(), x(T(I(t)), F({
118
+ key: t.value,
112
119
  ref_for: !0,
113
- ref: (t) => k(t?.$el || t, r.value),
120
+ ref: (r) => k(r?.$el || r, t.value),
114
121
  role: "tab",
115
- "aria-selected": s.modelValue === r.value,
116
- disabled: r.disabled,
117
- class: [$(r), z[n.size]]
118
- }, { ref_for: !0 }, L(r), {
119
- onClick: (t) => C(r)
122
+ "aria-selected": s.modelValue === t.value,
123
+ disabled: t.disabled,
124
+ class: [V(t), z[n.size]]
125
+ }, { ref_for: !0 }, L(t), {
126
+ onClick: (r) => C(t)
120
127
  }), {
121
- default: F(() => [
122
- r.icon ? (i(), x(K, {
128
+ default: _(() => [
129
+ t.icon ? (i(), x(K, {
123
130
  key: 0,
124
- icon: r.icon,
125
- class: c(s.size === "sm" ? "w-3.5 h-3.5" : "w-4 h-4")
131
+ icon: t.icon,
132
+ class: u(s.size === "sm" ? "w-3.5 h-3.5" : "w-4 h-4")
126
133
  }, null, 8, ["icon", "class"])) : y("", !0),
127
134
  q("span", {
128
- class: c(["whitespace-nowrap z-20 relative", s.textClass])
129
- }, G(B(r)), 3)
135
+ class: u(["whitespace-nowrap z-20 relative", s.textClass])
136
+ }, G(S(t)), 3)
130
137
  ]),
131
138
  _: 2
132
139
  }, 1040, ["aria-selected", "disabled", "class", "onClick"]))), 128))
package/core/config.d.ts CHANGED
@@ -30,10 +30,17 @@ export declare const configState: {
30
30
  rounded?: import('..').InputRounded;
31
31
  showRequiredAsterisk?: boolean;
32
32
  };
33
+ price?: {
34
+ currency?: string;
35
+ };
36
+ date?: {
37
+ format?: string;
38
+ };
33
39
  };
34
40
  };
35
41
  /**
36
- * Helper to update the global configuration.
42
+ * Helper to update the global configuration safely.
43
+ * Uses deep merge to preserve existing nested objects.
37
44
  */
38
45
  export declare function updateConfig(updates: Partial<VLiteConfig>): void;
39
46
  /**
@@ -61,5 +68,11 @@ export declare function useVLiteConfig(): {
61
68
  rounded?: import('..').InputRounded;
62
69
  showRequiredAsterisk?: boolean;
63
70
  };
71
+ price?: {
72
+ currency?: string;
73
+ };
74
+ date?: {
75
+ format?: string;
76
+ };
64
77
  };
65
78
  };
package/core/config.js CHANGED
@@ -1,15 +1,21 @@
1
- import { reactive as o, inject as t } from "vue";
2
- const e = /* @__PURE__ */ Symbol("vlite-config"), n = {
1
+ import { reactive as t, inject as e } from "vue";
2
+ const o = /* @__PURE__ */ Symbol("vlite-config"), n = {
3
3
  services: {},
4
4
  components: {
5
- form: {}
5
+ form: {},
6
+ price: {
7
+ currency: "USD"
8
+ },
9
+ date: {
10
+ format: "MM/DD/YYYY"
11
+ }
6
12
  }
7
- }, i = o({ ...n });
8
- function f() {
9
- return t(e, i);
13
+ }, c = t({ ...n });
14
+ function r() {
15
+ return e(o, c);
10
16
  }
11
17
  export {
12
- e as VLITE_CONFIG_KEY,
13
- i as configState,
14
- f as useVLiteConfig
18
+ o as VLITE_CONFIG_KEY,
19
+ c as configState,
20
+ r as useVLiteConfig
15
21
  };
package/core/index.d.ts CHANGED
@@ -2,28 +2,6 @@ import { App } from 'vue';
2
2
  import { VLiteConfig } from '../types/config.type';
3
3
  /**
4
4
  * Creates the VLite plugin instance.
5
- *
6
- * @example
7
- * // main.ts
8
- * import { createApp } from 'vue'
9
- * import { createVLite } from 'vlite3'
10
- *
11
- * const app = createApp(App)
12
- *
13
- * const vlite = createVLite({
14
- * services: {
15
- * upload: async (file) => {
16
- * // Custom API call here
17
- * const formData = new FormData()
18
- * formData.append('file', file)
19
- * const res = await axios.post('/api/upload', formData)
20
- * return res.data.url
21
- * }
22
- * }
23
- * })
24
- *
25
- * app.use(vlite)
26
- * app.mount('#app')
27
5
  */
28
6
  export declare function createVLite(options?: VLiteConfig): {
29
7
  install(app: App): void;
package/core/index.js CHANGED
@@ -1,22 +1,30 @@
1
1
  import { configState as e, VLITE_CONFIG_KEY as a } from "./config.js";
2
- import { useVLiteConfig as f } from "./config.js";
3
- function m(r = {}) {
2
+ import { useVLiteConfig as n } from "./config.js";
3
+ function o(t = {}) {
4
4
  return {
5
- install(t) {
6
- r && (r.services && (e.services = { ...e.services, ...r.services }), r.importData && (e.importData = { ...e.importData, ...r.importData }), r.exportData && (e.exportData = { ...e.exportData, ...r.exportData }), r.components && (e.components = {
5
+ install(r) {
6
+ t && (t.services && (e.services = { ...e.services, ...t.services }), t.importData && (e.importData = { ...e.importData, ...t.importData }), t.exportData && (e.exportData = { ...e.exportData, ...t.exportData }), t.components && (e.components = {
7
7
  ...e.components,
8
- ...r.components,
8
+ ...t.components,
9
9
  form: {
10
10
  ...e.components?.form || {},
11
- ...r.components.form || {}
11
+ ...t.components.form || {}
12
+ },
13
+ price: {
14
+ ...e.components?.price || {},
15
+ ...t.components.price || {}
16
+ },
17
+ date: {
18
+ ...e.components?.date || {},
19
+ ...t.components.date || {}
12
20
  }
13
- })), t.provide(a, e), t.config.globalProperties.$vlite = e;
21
+ })), r.provide(a, e), r.config.globalProperties.$vlite = e;
14
22
  }
15
23
  };
16
24
  }
17
25
  export {
18
26
  a as VLITE_CONFIG_KEY,
19
27
  e as configState,
20
- m as createVLite,
21
- f as useVLiteConfig
28
+ o as createVLite,
29
+ n as useVLiteConfig
22
30
  };
package/index.d.ts CHANGED
@@ -72,3 +72,5 @@ export { $t } from './utils/i18n';
72
72
  export { createVLite, useVLiteConfig } from './core';
73
73
  export { GoogleSignInPlugin };
74
74
  export * from './components/StatusChip';
75
+ export * from './components/Price';
76
+ export * from './components/Date';
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { default as f } from "vue3-google-signin";
2
2
  import { deepMerge as l } from "./utils/object.js";
3
- import { camelCase as p, capitalize as d, copyToClipboard as u, debounce as x, delay as i, downloadFile as n, flattenArray as c, formatCurrency as T, getUniqueId as S, isAppleDevice as b, isEmpty as g, randomNumber as C, removeExtraProperties as P, slugify as I, throttle as D, truncate as v } from "./utils/functions.js";
3
+ import { camelCase as p, capitalize as d, copyToClipboard as u, debounce as x, delay as i, downloadFile as n, flattenArray as c, formatCurrency as T, getUniqueId as S, isAppleDevice as b, isEmpty as g, randomNumber as P, removeExtraProperties as C, slugify as I, throttle as D, truncate as v } from "./utils/functions.js";
4
4
  import { lazySearch as h, resetSearchIndex as A, search as B } from "./utils/search.util.js";
5
5
  import { env as k } from "./utils/env.js";
6
6
  import { $t as y } from "./utils/i18n.js";
@@ -25,7 +25,7 @@ import { default as xe } from "./components/QRCode/QRCode.vue.js";
25
25
  import { default as ne } from "./components/Screen/Screen.vue.js";
26
26
  import { default as Te } from "./components/Screen/ScreenFilter.vue.js";
27
27
  import { default as be } from "./components/Heatmap/Heatmap.vue.js";
28
- import { default as Ce } from "./components/Masonry/Masonry.vue.js";
28
+ import { default as Pe } from "./components/Masonry/Masonry.vue.js";
29
29
  import { MASONRY_BREAKPOINTS as Ie } from "./components/Masonry/types.js";
30
30
  import { default as ve } from "./components/Spinner/Spinner.vue.js";
31
31
  import { default as he } from "./components/Barcode/Barcode.vue.js";
@@ -50,7 +50,7 @@ import { default as so } from "./components/List/List.vue.js";
50
50
  import { default as uo } from "./components/List/ListFieldRow.vue.js";
51
51
  import { formatDate as io, formatNumber as no, formatPrice as co, getObjectValue as To, getStatusColorClass as So } from "./components/List/utils.js";
52
52
  import { default as go } from "./components/Empty/Empty.vue.js";
53
- import { default as Po } from "./components/Accordion/Accordion.vue.js";
53
+ import { default as Co } from "./components/Accordion/Accordion.vue.js";
54
54
  import { default as Do } from "./components/Accordion/AccordionItem.vue.js";
55
55
  import { default as No } from "./components/Accordion/AccordionTrigger.vue.js";
56
56
  import { default as Ao } from "./components/Accordion/AccordionContent.vue.js";
@@ -76,7 +76,7 @@ import { default as dr } from "./components/PermissionMatrix/PermissionEditor.vu
76
76
  import { useAdvancedKeyStroke as xr, useKeyStroke as ir } from "./composables/useKeyStroke.js";
77
77
  import { vScrollReveal as cr } from "./directives/vScrollReveal.js";
78
78
  import { default as Sr } from "./components/AvatarUploader/AvatarUploader.vue.js";
79
- import { configure as gr, pauseTimers as Cr, removeToast as Pr, resumeTimers as Ir, showToast as Dr, toast as vr, useNotifications as Nr } from "./composables/useNotifications.js";
79
+ import { configure as gr, pauseTimers as Pr, removeToast as Cr, resumeTimers as Ir, showToast as Dr, toast as vr, useNotifications as Nr } from "./composables/useNotifications.js";
80
80
  import { default as Ar } from "./components/Timeline/Timeline.vue.js";
81
81
  import { default as Fr } from "./components/Timeline/TimelineItem.vue.js";
82
82
  import { default as wr } from "./components/Timeline/TimelineIndicator.vue.js";
@@ -102,7 +102,7 @@ import { default as it } from "./components/IconPicker.vue.js";
102
102
  import { default as ct } from "./components/ButtonGroup.vue.js";
103
103
  import { default as St } from "./components/NumberInput.vue.js";
104
104
  import { default as gt } from "./components/ThemeToggle.vue.js";
105
- import { default as Pt } from "./components/GoogleLogin.vue.js";
105
+ import { default as Ct } from "./components/GoogleLogin.vue.js";
106
106
  import { default as Dt } from "./components/ColorPicker/ColorPicker.vue.js";
107
107
  import { default as Nt } from "./components/ConfirmationModal.vue.js";
108
108
  import { default as At } from "./components/ToastNotification.vue.js";
@@ -112,10 +112,12 @@ import { default as Mt } from "./components/DateRangePicker.vue.js";
112
112
  import { createVLite as Lt } from "./core/index.js";
113
113
  import { default as Kt } from "./components/StatusChip/StatusChip.vue.js";
114
114
  import { STATUS_MAP as zt, normalizeStatus as Gt, resolveStatus as Ut } from "./components/StatusChip/status-map.js";
115
- import { useVLiteConfig as Vt } from "./core/config.js";
115
+ import { default as Vt } from "./components/Price/Price.vue.js";
116
+ import { default as Yt } from "./components/Date/Date.vue.js";
117
+ import { useVLiteConfig as qt } from "./core/config.js";
116
118
  export {
117
119
  y as $t,
118
- Po as Accordion,
120
+ Co as Accordion,
119
121
  Ao as AccordionContent,
120
122
  Do as AccordionItem,
121
123
  No as AccordionTrigger,
@@ -141,6 +143,7 @@ export {
141
143
  wo as DataTable,
142
144
  Mo as DataTableHeader,
143
145
  Lo as DataTableRow,
146
+ Yt as Date,
144
147
  ut as DatePicker,
145
148
  Mt as DateRangePicker,
146
149
  ye as Dropdown,
@@ -155,7 +158,7 @@ export {
155
158
  R as Form,
156
159
  O as FormField,
157
160
  G as FormFields,
158
- Pt as GoogleLogin,
161
+ Ct as GoogleLogin,
159
162
  f as GoogleSignInPlugin,
160
163
  be as Heatmap,
161
164
  Mr as Icon,
@@ -169,7 +172,7 @@ export {
169
172
  uo as ListFieldRow,
170
173
  Lr as Logo,
171
174
  Ie as MASONRY_BREAKPOINTS,
172
- Ce as Masonry,
175
+ Pe as Masonry,
173
176
  Yr as Modal,
174
177
  Xo as MultiSelect,
175
178
  ae as Navbar,
@@ -182,6 +185,7 @@ export {
182
185
  Ho as Pagination,
183
186
  dr as PermissionEditor,
184
187
  sr as PermissionMatrix,
188
+ Vt as Price,
185
189
  Jo as PricingPlan,
186
190
  er as PricingPlanItem,
187
191
  mr as ProgressBar,
@@ -232,10 +236,10 @@ export {
232
236
  g as isEmpty,
233
237
  h as lazySearch,
234
238
  Gt as normalizeStatus,
235
- Cr as pauseTimers,
236
- C as randomNumber,
237
- P as removeExtraProperties,
238
- Pr as removeToast,
239
+ Pr as pauseTimers,
240
+ P as randomNumber,
241
+ C as removeExtraProperties,
242
+ Cr as removeToast,
239
243
  A as resetSearchIndex,
240
244
  Ut as resolveStatus,
241
245
  Ir as resumeTimers,
@@ -255,6 +259,6 @@ export {
255
259
  Nr as useNotifications,
256
260
  Go as useTheme,
257
261
  Je as useTreeSelection,
258
- Vt as useVLiteConfig,
262
+ qt as useVLiteConfig,
259
263
  cr as vScrollReveal
260
264
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "private": false,
4
4
  "description": "A Vue 3 UI component library built with Tailwind CSS.",
5
5
  "license": "MIT",
6
- "version": "0.6.7",
6
+ "version": "0.6.9",
7
7
  "type": "module",
8
8
  "main": "index.js",
9
9
  "module": "index.js",
@@ -39,6 +39,7 @@
39
39
  "@types/scrollreveal": "^0.0.11",
40
40
  "@vueuse/core": "^14.1.0",
41
41
  "@vueuse/integrations": "^14.2.1",
42
+ "dayjs": "^1.11.19",
42
43
  "file-saver": "^2.0.5",
43
44
  "iconify-icon-picker": "^1.0.3",
44
45
  "jsbarcode": "^3.12.3",
package/style.css CHANGED
@@ -894,5 +894,5 @@ textarea::-webkit-scrollbar-thumb {
894
894
  }
895
895
 
896
896
  /* --- Vite Generated CSS --- */
897
- input[data-v-e7171c4f]::-webkit-outer-spin-button,input[data-v-e7171c4f]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-e7171c4f]{-moz-appearance:textfield;appearance:textfield}@keyframes onAutoFillStart{0%{opacity:1}to{opacity:1}}@keyframes onAutoFillCancel{0%{opacity:1}to{opacity:1}}input.autofill-detect:-webkit-autofill{animation-name:onAutoFillStart;animation-duration:1ms;animation-fill-mode:both}input.autofill-detect:not(:-webkit-autofill){animation-name:onAutoFillCancel;animation-duration:1ms;animation-fill-mode:both}.blink-bg[data-v-906bb006]{animation:blink-animation-906bb006 1s infinite}@keyframes blink-animation-906bb006{0%{background-color:inherit}15%{background-color:var(--color-gray-250)}35%{background-color:inherit}75%{background-color:var(--color-gray-250)}to{background-color:inherit}}.IroBox{border-radius:8px!important}.custom-fields-table[data-v-c9831df1] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-c9831df1] input,.custom-fields-table[data-v-c9831df1] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-c9831df1] input,.custom-fields-table[data-v-c9831df1] textarea,.custom-fields-table[data-v-c9831df1] select,.custom-fields-table[data-v-c9831df1] .input-wrapper,.custom-fields-table[data-v-c9831df1] .tooltip-trigger button{border:none!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;height:100%!important;min-height:40px}.custom-fields-table[data-v-c9831df1] .tooltip-trigger button{justify-content:space-between!important}.custom-fields-table[data-v-c9831df1] input:focus,.custom-fields-table[data-v-c9831df1] textarea:focus,.custom-fields-table[data-v-c9831df1] select:focus,.custom-fields-table[data-v-c9831df1] .input-wrapper:focus-within{background-color:hsla(var(--primary) / .03)!important;box-shadow:inset 0 0 0 2px hsla(var(--primary) / .1)!important}.custom-fields-table[data-v-c9831df1] .w-full{width:100%;height:100%}.list-enter-active[data-v-c9831df1]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-c9831df1]{opacity:0;transform:translateY(-5px)}.form-field-item[data-v-0fe8a23f]{display:flex;flex-direction:column}.form-field-item[data-v-0fe8a23f]:has([role=switch]),.form-field-item[data-v-0fe8a23f]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.form-container[data-v-78f87e2c]{width:100%}.custom-scrollbar[data-v-3849c10a]::-webkit-scrollbar{width:0px}.custom-scrollbar[data-v-3849c10a]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-3849c10a]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar{height:8px}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.navbar-tabs-no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.navbar-tabs-no-scrollbar::-webkit-scrollbar{display:none}.fade-x-enter-active,.fade-x-leave-active{transition:opacity .15s ease}.fade-x-enter-from,.fade-x-leave-to{opacity:0}.breadcrumb-item[data-v-5c9662c5]{display:inline-flex;align-items:center}.breadcrumb-link[data-v-5c9662c5]{display:inline-flex;align-items:center;gap:.35em;color:var(--color-muted-foreground);text-decoration:none;transition:color .15s ease,background-color .15s ease;border-radius:var(--radius-sm)}.breadcrumb-link[data-v-5c9662c5]:not(.current):not(.disabled):hover{color:var(--color-foreground)}.breadcrumb-link.current[data-v-5c9662c5]{color:var(--color-foreground);font-weight:600;cursor:default}.breadcrumb-link.disabled[data-v-5c9662c5]{opacity:.45;cursor:not-allowed;pointer-events:none}.breadcrumb-icon[data-v-5c9662c5]{flex-shrink:0}.breadcrumb-list[data-v-12cf2491]{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0;gap:.45em}.breadcrumb--sm[data-v-12cf2491]{font-size:var(--text--fs-2)}.breadcrumb--md[data-v-12cf2491]{font-size:var(--text-fs-0.5, 1em)}.breadcrumb--lg[data-v-12cf2491]{font-size:var(--text-fs-2)}.breadcrumb-separator[data-v-12cf2491]{display:inline-flex;align-items:center;color:var(--color-gray-500);-webkit-user-select:none;user-select:none;font-size:.9em;line-height:1;padding:0 .1em}.breadcrumb-ellipsis[data-v-12cf2491]{display:inline-flex;align-items:center}.breadcrumb-ellipsis-btn[data-v-12cf2491]{display:inline-flex;align-items:center;justify-content:center;width:1.6em;height:1.6em;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:transparent;color:var(--color-muted-foreground);cursor:pointer;font-size:.9em;line-height:1;letter-spacing:.05em;transition:all .15s ease}.breadcrumb-ellipsis-btn[data-v-12cf2491]:hover{background:var(--color-accent);color:var(--color-foreground);border-color:var(--color-gray-350)}.breadcrumb--contained[data-v-12cf2491]{background:var(--color-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:.45em 1em}.breadcrumb--pills[data-v-12cf2491] .breadcrumb-link{padding:.2em .7em;border-radius:9999px;background:var(--color-secondary);border:1px solid var(--color-border)}.breadcrumb--pills[data-v-12cf2491] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent);border-color:var(--color-gray-350)}.breadcrumb--pills[data-v-12cf2491] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground);border-color:var(--color-primary)}.breadcrumb--arrow .breadcrumb-list[data-v-12cf2491]{gap:0}.breadcrumb--arrow[data-v-12cf2491] .breadcrumb-link{padding:.35em .9em .35em 1.4em;background:var(--color-secondary);clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%,.6em 50%);border:none;margin-left:-.3em}.breadcrumb--arrow[data-v-12cf2491] .breadcrumb-item:first-child .breadcrumb-link{padding-left:.9em;clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%);border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-left:0}.breadcrumb--arrow[data-v-12cf2491] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent)}.breadcrumb--arrow[data-v-12cf2491] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground)}.breadcrumb--arrow .breadcrumb-separator[data-v-12cf2491]{display:none}.heatmap-container[data-v-00476f00]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.heatmap-wrapper[data-v-00476f00]{width:100%;height:100%;overflow:auto;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;position:relative}.heatmap-grid[data-v-00476f00]{width:fit-content;height:fit-content;transition:all .2s ease-in-out}.heatmap-cell[data-v-00476f00]{aspect-ratio:1 / 1;border-radius:2px;transition:all .15s ease-in-out;border:1px solid transparent;box-sizing:border-box}.heatmap-cell-interactive[data-v-00476f00]{cursor:pointer}.heatmap-cell-interactive[data-v-00476f00]:hover{transform:scale(1.1);border-color:var(--border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;z-index:10;position:relative}.heatmap-cell-empty[data-v-00476f00]{opacity:.6}.heatmap-cell-hovered[data-v-00476f00]{outline:2px solid var(--primary);outline-offset:1px}.heatmap-cell-label[data-v-00476f00]{font-size:8px;font-weight:500;color:var(--foreground);opacity:.8;display:flex;align-items:center;justify-content:center;height:100%;width:100%;pointer-events:none}.heatmap-legend[data-v-00476f00]{display:flex;align-items:center;gap:.5rem;margin-top:1rem;font-size:.75rem;color:var(--muted-foreground);flex-shrink:0}.heatmap-legend-label[data-v-00476f00]{font-weight:500}.heatmap-legend-colors[data-v-00476f00]{display:flex;gap:.125rem}.heatmap-legend-item[data-v-00476f00]{width:.75rem;height:.75rem;border-radius:.375rem;border:1px solid var(--border)}@media(max-width:640px){.heatmap-wrapper[data-v-00476f00]{padding:12px}.heatmap-cell[data-v-00476f00]{border-radius:2px}.heatmap-cell-label[data-v-00476f00]{font-size:7px}}@media(min-width:641px)and (max-width:1023px){.heatmap-wrapper[data-v-00476f00]{padding:14px}.heatmap-cell[data-v-00476f00]{border-radius:2px}}@media(min-width:1024px){.heatmap-wrapper[data-v-00476f00]{padding:16px}.heatmap-cell[data-v-00476f00]{border-radius:3px}}.masonry-item[data-v-c29d0159]{content-visibility:auto;contain-intrinsic-size:1px 200px}.carousel-wrapper[data-v-655a78c8]{width:100%;position:relative}.accordion-enter-active[data-v-aa189e08],.accordion-leave-active[data-v-aa189e08]{transition:height .3s ease-in-out}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.bg-stripe[data-v-454a1505]{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.animate-progress-stripe[data-v-454a1505]{animation:progress-stripe-454a1505 1s linear infinite}@keyframes progress-stripe-454a1505{0%{background-position:1rem 0}to{background-position:0 0}}.animate-progress-indeterminate[data-v-454a1505]{animation:progress-indeterminate-454a1505 1.5s infinite cubic-bezier(.65,.815,.735,.395)}@keyframes progress-indeterminate-454a1505{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(0) scaleX(.5)}to{transform:translate(100%) scaleX(.2)}}.permission-matrix-wrapper[data-v-c5641678]{max-height:70vh}.permission-matrix-wrapper[data-v-c5641678]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-c5641678]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-c5641678]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-c5641678]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.button-group[data-v-ba735fac] button{align-self:stretch;height:auto!important;min-height:unset!important;min-width:unset!important;width:auto!important}.button-group[data-v-ba735fac]:not(.vertical-group) button{aspect-ratio:unset}.attached-group[data-v-ba735fac] button{position:relative;--radius: .375rem}.attached-group[data-v-ba735fac] button:focus-visible,.attached-group[data-v-ba735fac] button:hover{z-index:10}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child){margin-left:-1px}.attached-group[data-v-ba735fac]:not(.vertical-group) button:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius);border-top-right-radius:0;border-bottom-right-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-bottom-left-radius:0}.vertical-group[data-v-ba735fac] button:not(:first-child){margin-top:-1px}.vertical-group[data-v-ba735fac] button:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.vertical-group[data-v-ba735fac] button:not(:first-child):not(:last-child){border-radius:0}.vertical-group[data-v-ba735fac] button:last-child{border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-top-right-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child):not(.border):before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none;height:100%}.vertical-group[data-v-ba735fac] button:not(:first-child):not(.border):before{content:"";position:absolute;top:0;left:0;right:0;height:1px;width:100%;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none}.first-toast-enter-active[data-v-dc3a3b49]{animation:first-toast-in-dc3a3b49 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-dc3a3b49]{transition:all .25s ease-in}.first-toast-leave-to[data-v-dc3a3b49]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-dc3a3b49{0%{opacity:var(--entrance-opacity, .6);transform:translateY(var(--entrance-offset, 25px)) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.stack-toast-enter-active[data-v-dc3a3b49],.stack-toast-leave-active[data-v-dc3a3b49]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-dc3a3b49]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-dc3a3b49]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-dc3a3b49]{transition:transform .4s cubic-bezier(.16,1,.3,1)}.command-palette-content[data-v-e919f56b] ::-webkit-scrollbar{width:4px}.command-palette-content[data-v-e919f56b] ::-webkit-scrollbar-track{background:transparent}.command-palette-content[data-v-e919f56b] ::-webkit-scrollbar-thumb{background:var(--border);border-radius:9999px}
897
+ input[data-v-e7171c4f]::-webkit-outer-spin-button,input[data-v-e7171c4f]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-e7171c4f]{-moz-appearance:textfield;appearance:textfield}@keyframes onAutoFillStart{0%{opacity:1}to{opacity:1}}@keyframes onAutoFillCancel{0%{opacity:1}to{opacity:1}}input.autofill-detect:-webkit-autofill{animation-name:onAutoFillStart;animation-duration:1ms;animation-fill-mode:both}input.autofill-detect:not(:-webkit-autofill){animation-name:onAutoFillCancel;animation-duration:1ms;animation-fill-mode:both}.blink-bg[data-v-2a2855f6]{animation:blink-animation-2a2855f6 1s infinite}@keyframes blink-animation-2a2855f6{0%{background-color:inherit}15%{background-color:var(--color-gray-250)}35%{background-color:inherit}75%{background-color:var(--color-gray-250)}to{background-color:inherit}}.IroBox{border-radius:8px!important}.custom-fields-table[data-v-c9831df1] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-c9831df1] input,.custom-fields-table[data-v-c9831df1] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-c9831df1] input,.custom-fields-table[data-v-c9831df1] textarea,.custom-fields-table[data-v-c9831df1] select,.custom-fields-table[data-v-c9831df1] .input-wrapper,.custom-fields-table[data-v-c9831df1] .tooltip-trigger button{border:none!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;height:100%!important;min-height:40px}.custom-fields-table[data-v-c9831df1] .tooltip-trigger button{justify-content:space-between!important}.custom-fields-table[data-v-c9831df1] input:focus,.custom-fields-table[data-v-c9831df1] textarea:focus,.custom-fields-table[data-v-c9831df1] select:focus,.custom-fields-table[data-v-c9831df1] .input-wrapper:focus-within{background-color:hsla(var(--primary) / .03)!important;box-shadow:inset 0 0 0 2px hsla(var(--primary) / .1)!important}.custom-fields-table[data-v-c9831df1] .w-full{width:100%;height:100%}.list-enter-active[data-v-c9831df1]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-c9831df1]{opacity:0;transform:translateY(-5px)}.form-field-item[data-v-0fe8a23f]{display:flex;flex-direction:column}.form-field-item[data-v-0fe8a23f]:has([role=switch]),.form-field-item[data-v-0fe8a23f]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.form-container[data-v-e5c8ab25]{width:100%}.custom-scrollbar[data-v-3849c10a]::-webkit-scrollbar{width:0px}.custom-scrollbar[data-v-3849c10a]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-3849c10a]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar{height:8px}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.navbar-tabs-no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.navbar-tabs-no-scrollbar::-webkit-scrollbar{display:none}.fade-x-enter-active,.fade-x-leave-active{transition:opacity .15s ease}.fade-x-enter-from,.fade-x-leave-to{opacity:0}.breadcrumb-item[data-v-ecb5df7c]{display:inline-flex;align-items:center;cursor:pointer}.breadcrumb-link[data-v-ecb5df7c]{display:inline-flex;align-items:center;gap:.35em;color:var(--color-muted-foreground);text-decoration:none;transition:color .15s ease,background-color .15s ease;border-radius:var(--radius-sm)}.breadcrumb-link[data-v-ecb5df7c]:not(.current):not(.disabled):hover{color:var(--color-foreground)}.breadcrumb-link.current[data-v-ecb5df7c]{color:var(--color-foreground);font-weight:600;cursor:default}.breadcrumb-link.disabled[data-v-ecb5df7c]{opacity:.45;cursor:not-allowed;pointer-events:none}.breadcrumb-icon[data-v-ecb5df7c]{flex-shrink:0}.breadcrumb-list[data-v-12cf2491]{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0;gap:.45em}.breadcrumb--sm[data-v-12cf2491]{font-size:var(--text--fs-2)}.breadcrumb--md[data-v-12cf2491]{font-size:var(--text-fs-0.5, 1em)}.breadcrumb--lg[data-v-12cf2491]{font-size:var(--text-fs-2)}.breadcrumb-separator[data-v-12cf2491]{display:inline-flex;align-items:center;color:var(--color-gray-500);-webkit-user-select:none;user-select:none;font-size:.9em;line-height:1;padding:0 .1em}.breadcrumb-ellipsis[data-v-12cf2491]{display:inline-flex;align-items:center}.breadcrumb-ellipsis-btn[data-v-12cf2491]{display:inline-flex;align-items:center;justify-content:center;width:1.6em;height:1.6em;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:transparent;color:var(--color-muted-foreground);cursor:pointer;font-size:.9em;line-height:1;letter-spacing:.05em;transition:all .15s ease}.breadcrumb-ellipsis-btn[data-v-12cf2491]:hover{background:var(--color-accent);color:var(--color-foreground);border-color:var(--color-gray-350)}.breadcrumb--contained[data-v-12cf2491]{background:var(--color-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:.45em 1em}.breadcrumb--pills[data-v-12cf2491] .breadcrumb-link{padding:.2em .7em;border-radius:9999px;background:var(--color-secondary);border:1px solid var(--color-border)}.breadcrumb--pills[data-v-12cf2491] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent);border-color:var(--color-gray-350)}.breadcrumb--pills[data-v-12cf2491] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground);border-color:var(--color-primary)}.breadcrumb--arrow .breadcrumb-list[data-v-12cf2491]{gap:0}.breadcrumb--arrow[data-v-12cf2491] .breadcrumb-link{padding:.35em .9em .35em 1.4em;background:var(--color-secondary);clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%,.6em 50%);border:none;margin-left:-.3em}.breadcrumb--arrow[data-v-12cf2491] .breadcrumb-item:first-child .breadcrumb-link{padding-left:.9em;clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%);border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-left:0}.breadcrumb--arrow[data-v-12cf2491] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent)}.breadcrumb--arrow[data-v-12cf2491] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground)}.breadcrumb--arrow .breadcrumb-separator[data-v-12cf2491]{display:none}.heatmap-container[data-v-00476f00]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.heatmap-wrapper[data-v-00476f00]{width:100%;height:100%;overflow:auto;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;position:relative}.heatmap-grid[data-v-00476f00]{width:fit-content;height:fit-content;transition:all .2s ease-in-out}.heatmap-cell[data-v-00476f00]{aspect-ratio:1 / 1;border-radius:2px;transition:all .15s ease-in-out;border:1px solid transparent;box-sizing:border-box}.heatmap-cell-interactive[data-v-00476f00]{cursor:pointer}.heatmap-cell-interactive[data-v-00476f00]:hover{transform:scale(1.1);border-color:var(--border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;z-index:10;position:relative}.heatmap-cell-empty[data-v-00476f00]{opacity:.6}.heatmap-cell-hovered[data-v-00476f00]{outline:2px solid var(--primary);outline-offset:1px}.heatmap-cell-label[data-v-00476f00]{font-size:8px;font-weight:500;color:var(--foreground);opacity:.8;display:flex;align-items:center;justify-content:center;height:100%;width:100%;pointer-events:none}.heatmap-legend[data-v-00476f00]{display:flex;align-items:center;gap:.5rem;margin-top:1rem;font-size:.75rem;color:var(--muted-foreground);flex-shrink:0}.heatmap-legend-label[data-v-00476f00]{font-weight:500}.heatmap-legend-colors[data-v-00476f00]{display:flex;gap:.125rem}.heatmap-legend-item[data-v-00476f00]{width:.75rem;height:.75rem;border-radius:.375rem;border:1px solid var(--border)}@media(max-width:640px){.heatmap-wrapper[data-v-00476f00]{padding:12px}.heatmap-cell[data-v-00476f00]{border-radius:2px}.heatmap-cell-label[data-v-00476f00]{font-size:7px}}@media(min-width:641px)and (max-width:1023px){.heatmap-wrapper[data-v-00476f00]{padding:14px}.heatmap-cell[data-v-00476f00]{border-radius:2px}}@media(min-width:1024px){.heatmap-wrapper[data-v-00476f00]{padding:16px}.heatmap-cell[data-v-00476f00]{border-radius:3px}}.masonry-item[data-v-c29d0159]{content-visibility:auto;contain-intrinsic-size:1px 200px}.carousel-wrapper[data-v-655a78c8]{width:100%;position:relative}.accordion-enter-active[data-v-aa189e08],.accordion-leave-active[data-v-aa189e08]{transition:height .3s ease-in-out}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.bg-stripe[data-v-454a1505]{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.animate-progress-stripe[data-v-454a1505]{animation:progress-stripe-454a1505 1s linear infinite}@keyframes progress-stripe-454a1505{0%{background-position:1rem 0}to{background-position:0 0}}.animate-progress-indeterminate[data-v-454a1505]{animation:progress-indeterminate-454a1505 1.5s infinite cubic-bezier(.65,.815,.735,.395)}@keyframes progress-indeterminate-454a1505{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(0) scaleX(.5)}to{transform:translate(100%) scaleX(.2)}}.permission-matrix-wrapper[data-v-4b13b586]{max-height:70vh}.permission-matrix-wrapper[data-v-4b13b586]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-4b13b586]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-4b13b586]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-4b13b586]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.permission-list-wrapper[data-v-3adbf210]{border:1px solid var(--color-border);border-radius:.5rem;overflow:hidden;background-color:var(--color-background)}.custom-list-header[data-v-3adbf210]{background-color:var(--color-muted);border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-list-group-content .custom-list-item[data-v-3adbf210]{border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);background-color:var(--color-background)}.custom-list-group-content .custom-list-item[data-v-3adbf210]:hover{background-color:var(--color-accent)}.custom-list-group-content .custom-list-item[data-v-3adbf210]:last-child{border-bottom:none}.custom-list-group-content+.custom-list-header[data-v-3adbf210],.custom-list-header+.custom-list-header[data-v-3adbf210]{border-top:1px solid var(--color-border)}.permission-list-wrapper>.custom-list-header[data-v-3adbf210]:last-child{border-bottom:none}.permission-matrix-wrapper[data-v-3bbb236a]{border:1px solid var(--color-border);background-color:var(--color-gray-100);border-radius:.5rem;overflow:auto}.custom-table[data-v-3bbb236a]{width:100%;border-collapse:collapse}.custom-th[data-v-3bbb236a]{background-color:var(--color-gray-150);color:var(--color-foreground);border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);text-align:left;font-weight:600;min-width:200px}.custom-th.text-center[data-v-3bbb236a]{text-align:center;min-width:100px}.custom-th[data-v-3bbb236a]:first-child{border-left:none}.custom-td[data-v-3bbb236a]{border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-td.text-center[data-v-3bbb236a]{text-align:center}.custom-td[data-v-3bbb236a]:first-child{border-left:none}.custom-group-row td[data-v-3bbb236a]{background-color:var(--color-gray-100);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.custom-entity-row[data-v-3bbb236a]{background-color:var(--color-background);transition:background-color .1s ease}.custom-entity-row[data-v-3bbb236a]:hover{background-color:var(--color-gray-50)}.custom-entity-row:last-child td[data-v-3bbb236a]{border-bottom:none}.custom-active-cell[data-v-3bbb236a]{cursor:pointer}.custom-active-cell[data-v-3bbb236a]:hover{background-color:var(--color-accent)}.button-group[data-v-ba735fac] button{align-self:stretch;height:auto!important;min-height:unset!important;min-width:unset!important;width:auto!important}.button-group[data-v-ba735fac]:not(.vertical-group) button{aspect-ratio:unset}.attached-group[data-v-ba735fac] button{position:relative;--radius: .375rem}.attached-group[data-v-ba735fac] button:focus-visible,.attached-group[data-v-ba735fac] button:hover{z-index:10}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child){margin-left:-1px}.attached-group[data-v-ba735fac]:not(.vertical-group) button:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius);border-top-right-radius:0;border-bottom-right-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-bottom-left-radius:0}.vertical-group[data-v-ba735fac] button:not(:first-child){margin-top:-1px}.vertical-group[data-v-ba735fac] button:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.vertical-group[data-v-ba735fac] button:not(:first-child):not(:last-child){border-radius:0}.vertical-group[data-v-ba735fac] button:last-child{border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-top-right-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child):not(.border):before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none;height:100%}.vertical-group[data-v-ba735fac] button:not(:first-child):not(.border):before{content:"";position:absolute;top:0;left:0;right:0;height:1px;width:100%;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none}.first-toast-enter-active[data-v-dc3a3b49]{animation:first-toast-in-dc3a3b49 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-dc3a3b49]{transition:all .25s ease-in}.first-toast-leave-to[data-v-dc3a3b49]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-dc3a3b49{0%{opacity:var(--entrance-opacity, .6);transform:translateY(var(--entrance-offset, 25px)) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.stack-toast-enter-active[data-v-dc3a3b49],.stack-toast-leave-active[data-v-dc3a3b49]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-dc3a3b49]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-dc3a3b49]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-dc3a3b49]{transition:transform .4s cubic-bezier(.16,1,.3,1)}.command-palette-content[data-v-e919f56b] ::-webkit-scrollbar{width:4px}.command-palette-content[data-v-e919f56b] ::-webkit-scrollbar-track{background:transparent}.command-palette-content[data-v-e919f56b] ::-webkit-scrollbar-thumb{background:var(--border);border-radius:9999px}
898
898
 
@@ -69,5 +69,11 @@ export interface VLiteConfig {
69
69
  rounded?: InputRounded;
70
70
  showRequiredAsterisk?: boolean;
71
71
  };
72
+ price?: {
73
+ currency?: string;
74
+ };
75
+ date?: {
76
+ format?: string;
77
+ };
72
78
  };
73
79
  }
@@ -1,6 +1,7 @@
1
1
  export type NavbarVariant = 'header' | 'sidebar';
2
2
  export type NavbarPosition = 'fixed' | 'sticky' | 'relative' | 'absolute';
3
3
  export type NavbarCenterPosition = 'center' | 'left' | 'right';
4
+ export type NavbarLayoutMode = 'classic' | 'sidebar-first';
4
5
  export interface NavbarItemProps {
5
6
  to?: string;
6
7
  href?: string;
@@ -42,30 +43,19 @@ export interface NavbarProps {
42
43
  rightClass?: string;
43
44
  mobileTriggerClass?: string;
44
45
  mobileMenuVariant?: 'sidepanel' | 'dropdown';
45
- /**
46
- * When true (Layout Mode only), renders a bars toggle button before the logo
47
- * in the #header slot area on large screens. Allows users to show/hide the
48
- * sidebar. Preference is persisted in localStorage.
49
- * Mobile breakpoint behavior is completely unaffected.
50
- */
51
46
  sidebarToggle?: boolean;
52
- /**
53
- * When true, automatically renders a Breadcrumb inside the #main slot area
54
- * based on the current route path. Works in Layout Mode.
55
- */
56
47
  breadcrumb?: boolean;
57
- /** Where to render the breadcrumb: 'header' renders as a slim bar inside the header, 'main' renders above the main content (default: 'header') */
58
48
  breadcrumbPosition?: 'header' | 'main';
59
- /** Breadcrumb visual variant (default: 'default') */
60
49
  breadcrumbVariant?: import('../components/Breadcrumb/types').BreadcrumbVariant;
61
- /** Breadcrumb separator style (default: 'chevron') */
62
50
  breadcrumbSeparator?: import('../components/Breadcrumb/types').BreadcrumbSeparator;
63
- /** Breadcrumb size (default: 'sm') */
64
51
  breadcrumbSize?: import('../components/Breadcrumb/types').BreadcrumbSize;
65
- /** Override auto-generated labels by path, e.g. { '/settings': 'Preferences' } */
66
52
  breadcrumbLabels?: Record<string, string>;
67
- /** Home icon (default: 'lucide:home') */
68
53
  breadcrumbHomeIcon?: string;
69
- /** Extra CSS classes for the breadcrumb wrapper */
70
54
  breadcrumbClass?: string;
55
+ /**
56
+ * Controls the layout structure when both #header and #main slots are used.
57
+ * - 'sidebar-first' (default): Sidebar spans full height on the left; header + main stack on the right.
58
+ * - 'classic': Header spans full width on top; sidebar + main sit below it side by side.
59
+ */
60
+ layoutMode?: NavbarLayoutMode;
71
61
  }