vlite3 1.4.40 → 1.5.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.
Files changed (137) hide show
  1. package/components/AppShell/AppShellLayoutClassic.vue.js +27 -28
  2. package/components/AppShell/AppShellLayoutDashboard.vue.js +48 -48
  3. package/components/AppShell/AppShellLayoutDock.vue.js +51 -51
  4. package/components/AppShell/AppShellLayoutHeaderShell.vue.js +69 -69
  5. package/components/AppShell/AppShellLayoutSidebarFirst.vue.d.ts +2 -2
  6. package/components/AppShell/AppShellLayoutSidebarFirst.vue.js +78 -78
  7. package/components/AppShell/AppShellLayoutStorefront.vue.js +14 -15
  8. package/components/AppShell/useAppShell.d.ts +4 -0
  9. package/components/AppShell/useAppShell.js +45 -40
  10. package/components/AsyncSelect/createAsyncSelect.js +10 -10
  11. package/components/AttachmentsList/AttachmentsList.vue.d.ts +50 -2
  12. package/components/AttachmentsList/AttachmentsList.vue.js +289 -272
  13. package/components/AttachmentsList/types.d.ts +37 -0
  14. package/components/BackButton.vue.js +2 -2
  15. package/components/Button.vue.d.ts +1 -0
  16. package/components/Button.vue.js +5 -241
  17. package/components/Button.vue2.js +245 -2
  18. package/components/ButtonGroup.vue.js +2 -2
  19. package/components/ButtonGroup.vue2.js +4 -1
  20. package/components/Calendar/Calendar.vue2.js +16 -16
  21. package/components/Cart/CartCouponInput.vue.js +24 -24
  22. package/components/Cart/CartEmptyState.vue.js +4 -4
  23. package/components/Cart/CartLineItem.vue.js +33 -33
  24. package/components/Cart/CartVariant1.vue.js +3 -3
  25. package/components/Cart/CartVariant2.vue.js +5 -5
  26. package/components/Cart/CartVariant3.vue.js +25 -25
  27. package/components/Cart/CartVariant4.vue.js +9 -9
  28. package/components/CategoryManager/CategoryManager.vue.d.ts +2 -2
  29. package/components/CategoryManager/CategoryManager.vue2.js +18 -18
  30. package/components/CategoryManager/CategoryNode.vue.js +4 -4
  31. package/components/CategoryMenu/CategoryMenu.vue.js +3 -2
  32. package/components/CategoryMenu/CategoryMenuVariant1.vue2.js +3 -2
  33. package/components/Chat/ChatInterface.vue.js +23 -23
  34. package/components/Clipboard.vue.d.ts +7 -1
  35. package/components/Clipboard.vue.js +19 -17
  36. package/components/ColorPicker/{ColorIro.vue.js → ColorIro.vue2.js} +22 -22
  37. package/components/ColorPicker/ColorIro.vue3.js +2 -2
  38. package/components/ColorPicker/ColorPicker.vue.js +8 -8
  39. package/components/Comment/CommentEditor.vue.js +14 -14
  40. package/components/Comment/CommentItem.vue2.js +6 -6
  41. package/components/Comment/CommentThread.vue.js +4 -4
  42. package/components/DataList/DataList.vue.js +7 -7
  43. package/components/DataTable/DataTable.vue.d.ts +9 -1
  44. package/components/DataTable/DataTable.vue.js +374 -263
  45. package/components/DataTable/DataTableRow.vue.d.ts +23 -2
  46. package/components/DataTable/DataTableRow.vue.js +5 -198
  47. package/components/DataTable/DataTableRow.vue2.js +360 -2
  48. package/components/DataTable/dataTableHeaders.d.ts +18 -0
  49. package/components/DataTable/dataTableHeaders.js +9 -0
  50. package/components/DataTable/types.d.ts +6 -0
  51. package/components/DatePicker.vue.js +8 -9
  52. package/components/DateRangePicker.vue2.js +34 -34
  53. package/components/Dropdown/Dropdown.vue.d.ts +7 -2
  54. package/components/Dropdown/Dropdown.vue.js +146 -139
  55. package/components/Dropdown/DropdownTrigger.vue.js +6 -6
  56. package/components/ExportData/ExportData.vue.js +15 -15
  57. package/components/FilePicker/FilePickerDropzone.vue.js +16 -16
  58. package/components/FilePicker/FilePickerInput.vue.js +3 -2
  59. package/components/FilePicker/FilePreview.vue.js +3 -3
  60. package/components/FileTree/FileTree.vue.js +4 -4
  61. package/components/FileTree/FileTree.vue2.js +9 -9
  62. package/components/FileTree/FileTreeNode.vue.js +76 -72
  63. package/components/Footer/Variant1.vue.js +48 -48
  64. package/components/Footer/Variant2.vue.js +42 -42
  65. package/components/Form/AccordionView.vue.d.ts +1 -1
  66. package/components/Form/AccordionView.vue.js +2 -2
  67. package/components/Form/AccordionView.vue3.js +61 -57
  68. package/components/Form/Form.vue2.js +41 -41
  69. package/components/Form/TableRow.vue.d.ts +7 -0
  70. package/components/Form/TableRow.vue.js +187 -41
  71. package/components/Form/TableView.vue.d.ts +11 -1
  72. package/components/Form/TableView.vue.js +71 -49
  73. package/components/Form/composables/useForm.js +146 -142
  74. package/components/Form/index.vue.d.ts +5 -1
  75. package/components/Form/index.vue.js +2 -2
  76. package/components/Form/index.vue2.js +44 -37
  77. package/components/Form/rowHelpers.d.ts +20 -0
  78. package/components/Form/rowHelpers.js +76 -28
  79. package/components/Form/types.d.ts +11 -0
  80. package/components/GoogleLogin.vue.js +4 -4
  81. package/components/IconPicker.vue.js +9 -9
  82. package/components/ImportData/ImportData.vue.js +11 -11
  83. package/components/ImportData/ImportStep1.vue.js +10 -10
  84. package/components/ImportData/ImportStep2.vue.js +15 -14
  85. package/components/Input.vue.js +133 -129
  86. package/components/Kanban/KanbanBoard.vue.js +1 -1
  87. package/components/Kanban/KanbanBoard.vue2.js +9 -9
  88. package/components/MultiSelect/MultiSelect.vue.js +3 -2
  89. package/components/Navbar/Navbar.vue.js +17 -17
  90. package/components/Navbar/NavbarGroup.vue.js +8 -7
  91. package/components/Navbar/NavbarItem.vue.js +40 -39
  92. package/components/Navbar/NavbarTabs.vue.js +6 -184
  93. package/components/Navbar/NavbarTabs.vue2.js +204 -0
  94. package/components/Navbar/useNavbar.js +3 -3
  95. package/components/NavbarCommandPalette.vue.js +1 -1
  96. package/components/NumberInput.vue.js +2 -2
  97. package/components/NumberInput.vue2.js +81 -77
  98. package/components/OTPInput/OTPInput.vue.js +24 -23
  99. package/components/Pagination/Pagination.vue.d.ts +1 -1
  100. package/components/Pagination/Pagination.vue.js +5 -274
  101. package/components/Pagination/Pagination.vue2.js +283 -2
  102. package/components/PermissionMatrix/PermissionTopBar.vue.js +19 -18
  103. package/components/PricingPlan/PricingPlanItem.vue.js +7 -7
  104. package/components/Screen/Screen.vue.d.ts +1 -1
  105. package/components/Screen/Screen.vue.js +21 -21
  106. package/components/Screen/ScreenFilter.vue.js +5 -5
  107. package/components/Screen/components/ScreenAddAction.vue.js +3 -3
  108. package/components/Screen/components/ScreenEmptyState.vue.js +10 -10
  109. package/components/Screen/components/ScreenExportModal.vue.js +12 -12
  110. package/components/Screen/components/ScreenOptionsDropdown.vue.js +5 -5
  111. package/components/Screen/components/ScreenToolbar.vue.js +15 -15
  112. package/components/SidePanel.vue.js +2 -2
  113. package/components/SidePanel.vue2.js +6 -6
  114. package/components/SidebarMenu/SidebarMenu.vue.js +77 -72
  115. package/components/SidebarMenu/SidebarMenuItem.vue.js +172 -168
  116. package/components/Slider.vue.js +123 -108
  117. package/components/Tabes/Tabes.vue.d.ts +25 -4
  118. package/components/Tabes/Tabes.vue.js +3 -3
  119. package/components/Tabes/Tabes.vue2.js +274 -211
  120. package/components/Tabes/tabes.utils.d.ts +30 -0
  121. package/components/Tabes/tabes.utils.js +49 -18
  122. package/components/Tabes/types.d.ts +7 -0
  123. package/components/Textarea.vue.d.ts +2 -0
  124. package/components/Textarea.vue.js +19 -16
  125. package/components/ThemeToggle.vue.js +8 -8
  126. package/components/ToastNotification.vue2.js +10 -10
  127. package/components/TreeConnectors/TreeConnectors.vue.d.ts +1 -1
  128. package/components/TreeConnectors/TreeConnectors.vue.js +13 -8
  129. package/components/TreeConnectors/geometry.js +77 -69
  130. package/components/Workbook/WorkbookAddButton.vue.js +2 -2
  131. package/composables/useRtl.d.ts +14 -0
  132. package/composables/useRtl.js +33 -0
  133. package/index.js +470 -471
  134. package/package.json +5 -4
  135. package/style.css +86 -1
  136. package/types/button.d.ts +8 -0
  137. package/components/Navbar/NavbarTabs.vue3.js +0 -5
@@ -9,7 +9,7 @@ const z = { class: "relative" }, C = ["aria-disabled", "aria-label", "data-testi
9
9
  class: "flex min-w-0 flex-1 items-center gap-2 text-muted-foreground"
10
10
  }, j = { class: "truncate min-w-0 flex-1" }, $ = {
11
11
  key: 0,
12
- class: "absolute right-3 top-1/2 -translate-y-1/2 flex items-center justify-center gap-2 bg-background"
12
+ class: "absolute end-3 top-1/2 -translate-y-1/2 flex items-center justify-center gap-2 bg-background"
13
13
  }, K = /* @__PURE__ */ w({
14
14
  __name: "FilePickerInput",
15
15
  props: {
@@ -50,7 +50,8 @@ const z = { class: "relative" }, C = ["aria-disabled", "aria-label", "data-testi
50
50
  "border border-input focus-visible:border-primary",
51
51
  t[n.size],
52
52
  l[n.rounded],
53
- "pr-10 text-left",
53
+ // Logical padding / align so clear affordance + placeholder mirror under RTL
54
+ "pe-10 text-start",
54
55
  n.disabled ? "cursor-not-allowed opacity-50" : ""
55
56
  ].join(" ");
56
57
  }), f = o(() => ({
@@ -8,7 +8,7 @@ const N = { class: "shrink-0 mr-3" }, B = { class: "p-2 bg-primary-light rounded
8
8
  }, P = { class: "grid relative w-fit max-w-full items-center -ml-1" }, S = { class: "invisible whitespace-pre col-start-1 row-start-1 text-sm font-medium px-1 py-0.5 max-w-full overflow-hidden text-ellipsis" }, z = ["value", "placeholder"], L = ["title"], I = {
9
9
  key: 1,
10
10
  class: "text-sm font-medium text-foreground truncate w-full min-w-0"
11
- }, $ = { class: "text-xs text-muted-foreground -mt-1" }, V = { class: "shrink-0 ml-3 flex gap-2 items-center" }, q = /* @__PURE__ */ b({
11
+ }, V = { class: "text-xs text-muted-foreground -mt-1" }, $ = { class: "shrink-0 ml-3 flex gap-2 items-center" }, q = /* @__PURE__ */ b({
12
12
  __name: "FilePreview",
13
13
  props: {
14
14
  file: {},
@@ -70,9 +70,9 @@ const N = { class: "shrink-0 mr-3" }, B = { class: "p-2 bg-primary-light rounded
70
70
  })
71
71
  ], 8, L)
72
72
  ])) : (n(), r("p", I, s(e.file.fileName), 1)),
73
- t("p", $, s(w(F)(e.file.fileSize)), 1)
73
+ t("p", V, s(w(F)(e.file.fileSize)), 1)
74
74
  ]),
75
- t("div", V, [
75
+ t("div", $, [
76
76
  e.loading || e.isProcessing ? (n(), g(d, {
77
77
  key: 0,
78
78
  icon: "lucide:loader-2",
@@ -1,7 +1,7 @@
1
- import o from "./FileTree.vue2.js";
1
+ import e from "./FileTree.vue2.js";
2
2
  /* empty css */
3
- import r from "../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ r(o, [["__scopeId", "data-v-fb5185c6"]]);
3
+ import o from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const p = /* @__PURE__ */ o(e, [["__scopeId", "data-v-06de722e"]]);
5
5
  export {
6
- m as default
6
+ p as default
7
7
  };
@@ -24,12 +24,12 @@ const Z = {
24
24
  },
25
25
  emits: ["update:modelValue", "select", "expand", "node-click"],
26
26
  setup(o, { emit: K }) {
27
- const s = o, p = K, h = x(new Set(s.defaultExpandedKeys)), f = x(/* @__PURE__ */ new Set()), y = x(/* @__PURE__ */ new Map()), b = x(/* @__PURE__ */ new Map()), P = (t) => !!(t.isFolder || t.children && t.children.length > 0), E = (t) => {
27
+ const s = o, p = K, h = x(new Set(s.defaultExpandedKeys)), f = x(/* @__PURE__ */ new Set()), y = x(/* @__PURE__ */ new Map()), L = x(/* @__PURE__ */ new Map()), P = (t) => !!(t.isFolder || t.children && t.children.length > 0), E = (t) => {
28
28
  const l = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map(), a = (n, d) => {
29
29
  for (const i of n)
30
30
  l.set(i.id, i), d && e.set(i.id, d), i.children && a(i.children, i.id);
31
31
  };
32
- a(t), y.value = l, b.value = e;
32
+ a(t), y.value = l, L.value = e;
33
33
  };
34
34
  F(
35
35
  () => s.data,
@@ -93,11 +93,11 @@ const Z = {
93
93
  i(t.id, d), n.forEach((c) => i(c, d));
94
94
  let r = l;
95
95
  for (; ; ) {
96
- const c = b.value.get(r.id);
96
+ const c = L.value.get(r.id);
97
97
  if (!c) break;
98
98
  const u = y.value.get(c);
99
99
  if (!u?.children) break;
100
- u.children.every((L) => e.has(L.id)) ? e.add(u.id) : e.delete(u.id), r = u;
100
+ u.children.every((S) => e.has(S.id)) ? e.add(u.id) : e.delete(u.id), r = u;
101
101
  }
102
102
  }
103
103
  p("update:modelValue", Array.from(e)), p("select", l, !a);
@@ -113,16 +113,16 @@ const Z = {
113
113
  const t = [], l = (e, a, n) => {
114
114
  const d = e.length - 1;
115
115
  for (let i = 0; i < e.length; i++) {
116
- const r = e[i], c = i === d, u = P(r), L = h.value.has(r.id), $ = f.value.has(r.id);
116
+ const r = e[i], c = i === d, u = P(r), S = h.value.has(r.id), $ = f.value.has(r.id);
117
117
  if (t.push({
118
118
  node: r,
119
119
  depth: a,
120
120
  isLast: c,
121
121
  ancestorLastFlags: n,
122
122
  isFolder: u
123
- }), L && u && !$) {
124
- const S = r.children;
125
- S && S.length > 0 ? l(S, a + 1, D(n, c)) : t.push({
123
+ }), S && u && !$) {
124
+ const b = r.children;
125
+ b && b.length > 0 ? l(b, a + 1, D(n, c)) : t.push({
126
126
  node: r,
127
127
  depth: a + 1,
128
128
  isLast: !0,
@@ -168,7 +168,7 @@ const Z = {
168
168
  e.showEmptyPlaceholder ? N([e.depth, e.node.id], () => (m(), v("div", {
169
169
  key: 0,
170
170
  class: "py-0.5 text-xs text-muted-foreground italic",
171
- style: G({ paddingLeft: e.depth * 20 + 26 + "px" })
171
+ style: G({ paddingInlineStart: e.depth * 20 + 26 + "px" })
172
172
  }, null, 4)), l, 0) : N([
173
173
  e.node,
174
174
  w.value.has(e.node.id),
@@ -1,13 +1,14 @@
1
- import { defineComponent as z, computed as d, openBlock as o, createElementBlock as a, createElementVNode as c, normalizeClass as r, normalizeStyle as b, createCommentVNode as f, createVNode as y, unref as P, withModifiers as v, createBlock as m, Fragment as w, renderList as C, toDisplayString as k, renderSlot as A } from "vue";
2
- import h from "../Icon.vue.js";
3
- import D from "../CheckBox.vue.js";
4
- import O from "../TreeConnectors/TreeConnectors.vue.js";
5
- import { EMPTY_ANCESTOR_LAST_FLAGS as Q } from "../TreeConnectors/geometry.js";
6
- import { $t as V } from "../../utils/i18n.js";
7
- const R = { class: "flex flex-col select-none" }, j = ["title"], q = {
1
+ import { defineComponent as D, computed as d, openBlock as i, createElementBlock as a, createElementVNode as c, normalizeClass as g, normalizeStyle as b, createCommentVNode as f, createVNode as v, unref as R, withModifiers as y, createBlock as m, Fragment as L, renderList as S, toDisplayString as k, renderSlot as A } from "vue";
2
+ import r from "../Icon.vue.js";
3
+ import O from "../CheckBox.vue.js";
4
+ import Q from "../TreeConnectors/TreeConnectors.vue.js";
5
+ import { EMPTY_ANCESTOR_LAST_FLAGS as V } from "../TreeConnectors/geometry.js";
6
+ import { $t as j } from "../../utils/i18n.js";
7
+ import { useRtl as q } from "../../composables/useRtl.js";
8
+ const G = { class: "flex flex-col select-none" }, U = ["title"], Y = ["aria-expanded"], H = {
8
9
  key: 1,
9
- class: "relative z-10 w-6 mr-1"
10
- }, G = { class: "mr-2 text-muted-foreground shrink-0" }, U = { class: "flex-1 truncate text-sm font-medium" }, Y = { class: "mr-2 text-gray-400 select-none shrink-0" }, H = { class: "truncate" }, x = 20, ee = /* @__PURE__ */ z({
10
+ class: "relative z-20 w-6 me-1 shrink-0"
11
+ }, J = { class: "relative z-20 me-2 text-muted-foreground shrink-0" }, K = { class: "relative z-20 flex-1 truncate text-sm font-medium min-w-0" }, W = { class: "me-2 text-gray-400 select-none shrink-0" }, X = { class: "truncate" }, x = 20, ie = /* @__PURE__ */ D({
11
12
  name: "FileTreeNode",
12
13
  __name: "FileTreeNode",
13
14
  props: {
@@ -24,24 +25,24 @@ const R = { class: "flex flex-col select-none" }, j = ["title"], q = {
24
25
  variant: { default: "default" },
25
26
  maxLabelLength: { default: 35 },
26
27
  isLast: { type: Boolean, default: !0 },
27
- ancestorLastFlags: { default: () => Q }
28
+ ancestorLastFlags: { default: () => V }
28
29
  },
29
30
  emits: ["toggle-expand", "toggle-select", "click-node"],
30
- setup(e, { emit: S }) {
31
- const s = e, u = S, g = d(
31
+ setup(e, { emit: C }) {
32
+ const E = q(), s = e, h = C, u = d(
32
33
  () => !!(s.node.isFolder || s.node.children && s.node.children.length > 0)
33
- ), M = d(() => `${s.depth * x}px`), L = d(
34
- () => s.node.labelI18n ? V(s.node.labelI18n) : s.node.label
35
- ), E = d(() => {
36
- const t = L.value, l = s.maxLabelLength;
34
+ ), I = d(() => `${s.depth * x}px`), p = d(
35
+ () => s.node.labelI18n ? j(s.node.labelI18n) : s.node.label
36
+ ), M = d(() => {
37
+ const t = p.value, l = s.maxLabelLength;
37
38
  if (t.length <= l) return t;
38
39
  const n = t.lastIndexOf(".");
39
40
  if (n === -1 || t.length - n > 10)
40
41
  return t.substring(0, l) + "...";
41
- const i = t.substring(n), I = t.substring(0, n), $ = Math.max(0, l - i.length - 3);
42
- return I.substring(0, $) + "..." + i;
43
- }), B = d(() => {
44
- const t = E.value;
42
+ const o = t.substring(n), $ = t.substring(0, n), P = Math.max(0, l - o.length - 3);
43
+ return $.substring(0, P) + "..." + o;
44
+ }), z = d(() => {
45
+ const t = M.value;
45
46
  if (!s.highlightSearch || !s.searchQuery)
46
47
  return [{ text: t, highlight: !1 }];
47
48
  const l = s.searchQuery.toLowerCase(), n = t.toLowerCase().indexOf(l);
@@ -53,69 +54,72 @@ const R = { class: "flex flex-col select-none" }, j = ["title"], q = {
53
54
  },
54
55
  { text: t.slice(n + l.length), highlight: !1 }
55
56
  ];
56
- }), F = d(() => {
57
+ }), B = d(() => {
57
58
  const t = s.node.searchMatch;
58
59
  if (!t) return [];
59
- const l = t.line_content, n = t.match_start, i = t.match_length;
60
+ const l = t.line_content, n = t.match_start, o = t.match_length;
60
61
  return n < 0 || n >= l.length ? [{ text: l, highlight: !1 }] : [
61
62
  { text: l.substring(0, n), highlight: !1 },
62
- { text: l.substring(n, n + i), highlight: !0 },
63
- { text: l.substring(n + i), highlight: !1 }
63
+ { text: l.substring(n, n + o), highlight: !0 },
64
+ { text: l.substring(n + o), highlight: !1 }
64
65
  ];
65
- }), p = (t) => {
66
- t && t.stopPropagation(), u("toggle-expand", s.node);
67
- }, N = () => {
68
- u("toggle-select", s.node);
66
+ }), w = (t) => {
67
+ t?.stopPropagation(), t?.preventDefault(), h("toggle-expand", s.node);
68
+ }, F = d(
69
+ () => E.value ? "lucide:chevron-left" : "lucide:chevron-right"
70
+ ), N = () => {
71
+ h("toggle-select", s.node);
69
72
  }, T = (t) => {
70
- t.stopPropagation(), g.value ? p() : s.selectionMode !== "none" && u("toggle-select", s.node), u("click-node", s.node);
73
+ t.stopPropagation(), u.value ? w() : s.selectionMode !== "none" && h("toggle-select", s.node), h("click-node", s.node);
71
74
  };
72
- return (t, l) => (o(), a("div", R, [
75
+ return (t, l) => (i(), a("div", G, [
73
76
  c("div", {
74
- class: r(["group flex flex-col transition-colors cursor-pointer relative", {
77
+ class: g(["group flex flex-col transition-colors cursor-pointer relative", {
75
78
  "bg-accent/50 text-accent-foreground": e.isSelected && e.selectionMode === "single" && !e.showCheckboxes,
76
79
  "hover:bg-accent/50": !e.isSelected || e.selectionMode !== "single",
77
80
  "opacity-50 pointer-events-none": e.node.disabled,
78
81
  "rounded-none": e.variant === "bordered",
79
82
  "rounded-md": e.variant === "default"
80
83
  }]),
81
- title: L.value,
84
+ title: p.value,
82
85
  onClick: T
83
86
  }, [
84
- e.variant === "bordered" ? (o(), a("div", {
87
+ e.variant === "bordered" ? (i(), a("div", {
85
88
  key: 0,
86
- class: "absolute bottom-0 right-0 h-[1px] bg-border pointer-events-none",
87
- style: b({ left: e.depth * x + "px" })
89
+ class: "absolute bottom-0 h-[1px] bg-border pointer-events-none",
90
+ style: b({ insetInlineStart: e.depth * x + "px", insetInlineEnd: "0" })
88
91
  }, null, 4)) : f("", !0),
89
92
  c("div", {
90
- class: r(["relative flex items-center pr-2", e.variant === "bordered" ? "py-2 min-h-[40px]" : "py-1 min-h-[32px]"]),
91
- style: b({ paddingLeft: M.value })
93
+ class: g(["tree-row-content relative z-10 flex items-center pe-2", e.variant === "bordered" ? "py-2 min-h-[40px]" : "py-1 min-h-[32px]"]),
94
+ style: b({ paddingInlineStart: I.value })
92
95
  }, [
93
- y(P(O), {
96
+ v(R(Q), {
94
97
  depth: e.depth,
95
98
  "is-last-sibling": e.isLast,
96
99
  "ancestor-last-flags": e.ancestorLastFlags,
97
- "has-toggle": g.value,
100
+ "has-toggle": u.value,
98
101
  indent: x,
99
102
  "line-class": "bg-border"
100
103
  }, null, 8, ["depth", "is-last-sibling", "ancestor-last-flags", "has-toggle"]),
101
- g.value ? (o(), a("button", {
104
+ u.value ? (i(), a("button", {
102
105
  key: 0,
103
106
  type: "button",
104
- class: r(["relative z-10 p-1 mr-1 rounded-sm hover:bg-muted text-muted-foreground transition-transform duration-200 focus:outline-none", { "rotate-90": e.isExpanded }]),
105
- onClick: v(p, ["stop"])
107
+ class: "tree-expand-toggle relative z-20 p-1 me-1 rounded-sm hover:bg-muted text-muted-foreground transition-colors focus:outline-none shrink-0",
108
+ "aria-expanded": e.isExpanded,
109
+ onClick: y(w, ["stop"])
106
110
  }, [
107
- y(h, {
108
- icon: "lucide:chevron-right",
111
+ v(r, {
112
+ icon: e.isExpanded ? "lucide:chevron-down" : F.value,
109
113
  class: "w-4 h-4"
110
- })
111
- ], 2)) : (o(), a("div", q)),
112
- e.showCheckboxes && e.selectionMode !== "none" ? (o(), a("div", {
114
+ }, null, 8, ["icon"])
115
+ ], 8, Y)) : (i(), a("div", H)),
116
+ e.showCheckboxes && e.selectionMode !== "none" ? (i(), a("div", {
113
117
  key: 2,
114
- class: "mr-2 flex items-center justify-center bg-transparent",
115
- onClick: l[0] || (l[0] = v(() => {
118
+ class: "relative z-20 me-2 flex items-center justify-center bg-transparent shrink-0",
119
+ onClick: l[0] || (l[0] = y(() => {
116
120
  }, ["stop"]))
117
121
  }, [
118
- y(D, {
122
+ v(O, {
119
123
  checked: e.isSelected,
120
124
  indeterminate: e.isIndeterminate,
121
125
  disabled: e.node.disabled,
@@ -124,61 +128,61 @@ const R = { class: "flex flex-col select-none" }, j = ["title"], q = {
124
128
  "onUpdate:checked": N
125
129
  }, null, 8, ["checked", "indeterminate", "disabled"])
126
130
  ])) : f("", !0),
127
- c("div", G, [
128
- e.isLoading ? (o(), m(h, {
131
+ c("div", J, [
132
+ e.isLoading ? (i(), m(r, {
129
133
  key: 0,
130
134
  icon: "lucide:loader-2",
131
135
  class: "w-4 h-4 animate-spin"
132
- })) : e.node.icon ? (o(), m(h, {
136
+ })) : e.node.icon ? (i(), m(r, {
133
137
  key: 1,
134
138
  icon: e.node.icon,
135
139
  class: "w-4 h-4"
136
- }, null, 8, ["icon"])) : g.value ? (o(), m(h, {
140
+ }, null, 8, ["icon"])) : u.value ? (i(), m(r, {
137
141
  key: 2,
138
142
  icon: e.isExpanded ? "lucide:folder-open" : "lucide:folder",
139
143
  class: "w-4 h-4"
140
- }, null, 8, ["icon"])) : (o(), m(h, {
144
+ }, null, 8, ["icon"])) : (i(), m(r, {
141
145
  key: 3,
142
146
  icon: "lucide:file",
143
147
  class: "w-4 h-4"
144
148
  }))
145
149
  ]),
146
- c("div", U, [
147
- (o(!0), a(w, null, C(B.value, (n, i) => (o(), a("span", {
148
- key: i,
149
- class: r({
150
+ c("div", K, [
151
+ (i(!0), a(L, null, S(z.value, (n, o) => (i(), a("span", {
152
+ key: o,
153
+ class: g({
150
154
  "bg-yellow-100 text-yellow-900 rounded-sm px-0.5": n.highlight
151
155
  })
152
156
  }, k(n.text), 3))), 128))
153
157
  ]),
154
- t.$slots.actions ? (o(), a("div", {
158
+ t.$slots.actions ? (i(), a("div", {
155
159
  key: 3,
156
- class: "ml-2 flex items-center shrink-0",
157
- onClick: l[1] || (l[1] = v(() => {
160
+ class: "relative z-20 ms-2 flex items-center shrink-0",
161
+ onClick: l[1] || (l[1] = y(() => {
158
162
  }, ["stop"]))
159
163
  }, [
160
164
  A(t.$slots, "actions", { node: e.node })
161
165
  ])) : f("", !0)
162
166
  ], 6),
163
- e.node.searchMatch ? (o(), a("div", {
167
+ e.node.searchMatch ? (i(), a("div", {
164
168
  key: 1,
165
- class: "flex items-center text-[11px] text-gray-500 font-mono pr-2 pb-1.5 truncate",
166
- style: b({ paddingLeft: e.depth * x + 28 + "px" })
169
+ class: "flex items-center text-[11px] text-gray-500 font-mono pe-2 pb-1.5 truncate",
170
+ style: b({ paddingInlineStart: e.depth * x + 28 + "px" })
167
171
  }, [
168
- c("span", Y, "L" + k(e.node.searchMatch.line_number), 1),
169
- c("div", H, [
170
- (o(!0), a(w, null, C(F.value, (n, i) => (o(), a("span", {
171
- key: i,
172
- class: r({
172
+ c("span", W, "L" + k(e.node.searchMatch.line_number), 1),
173
+ c("div", X, [
174
+ (i(!0), a(L, null, S(B.value, (n, o) => (i(), a("span", {
175
+ key: o,
176
+ class: g({
173
177
  "bg-yellow-500/20 text-gray-900 px-0.5 rounded-[1px] font-medium border border-yellow-600/30": n.highlight
174
178
  })
175
179
  }, k(n.text), 3))), 128))
176
180
  ])
177
181
  ], 4)) : f("", !0)
178
- ], 10, j)
182
+ ], 10, U)
179
183
  ]));
180
184
  }
181
185
  });
182
186
  export {
183
- ee as default
187
+ ie as default
184
188
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent as M, computed as i, useModel as $, openBlock as t, createElementBlock as l, normalizeClass as v, createElementVNode as n, createCommentVNode as o, toDisplayString as s, withModifiers as T, createVNode as x, withCtx as z, createTextVNode as F, Fragment as g, renderList as m, createBlock as U, mergeModels as C } from "vue";
1
+ import { defineComponent as M, computed as i, useModel as T, openBlock as t, createElementBlock as l, normalizeClass as v, createElementVNode as n, createCommentVNode as r, toDisplayString as s, withModifiers as $, createVNode as x, withCtx as z, createTextVNode as F, Fragment as g, renderList as m, createBlock as U, mergeModels as C } from "vue";
2
2
  import N from "../Icon.vue.js";
3
3
  import q from "../Input.vue.js";
4
4
  /* empty css */
@@ -30,7 +30,7 @@ const H = { class: "v-footer-top" }, I = { class: "flex flex-col lg:flex-row gap
30
30
  }, Z = {
31
31
  key: 3,
32
32
  class: "flex items-center gap-1 pt-1"
33
- }, ee = ["href", "aria-label", "onClick"], te = { class: "text-sm font-semibold text-foreground mb-4 tracking-wide" }, le = { class: "space-y-3" }, re = ["href", "target", "rel", "onClick"], oe = {
33
+ }, ee = ["href", "aria-label", "onClick"], te = { class: "text-sm font-semibold text-foreground mb-4 tracking-wide" }, le = { class: "space-y-3" }, oe = ["href", "target", "rel", "onClick"], re = {
34
34
  key: 0,
35
35
  class: "v-footer-bottom border-t border-border/50"
36
36
  }, ae = { class: "mx-auto w-full max-w-7xl px-6 lg:px-8 py-6 flex flex-col sm:flex-row items-center justify-between gap-3 text-center sm:text-left" }, se = {
@@ -39,7 +39,7 @@ const H = { class: "v-footer-top" }, I = { class: "flex flex-col lg:flex-row gap
39
39
  }, ne = {
40
40
  key: 1,
41
41
  class: "flex flex-wrap items-center justify-center sm:justify-end gap-x-5 gap-y-2 w-full sm:w-auto"
42
- }, ie = ["href", "target", "rel", "onClick"], fe = /* @__PURE__ */ M({
42
+ }, ie = ["href", "target", "rel", "onClick"], pe = /* @__PURE__ */ M({
43
43
  __name: "Variant1",
44
44
  props: /* @__PURE__ */ C({
45
45
  data: {},
@@ -50,44 +50,44 @@ const H = { class: "v-footer-top" }, I = { class: "flex flex-col lg:flex-row gap
50
50
  newsletterEmailModifiers: {}
51
51
  }),
52
52
  emits: /* @__PURE__ */ C(["subscribe", "link-click"], ["update:newsletterEmail"]),
53
- setup(f, { emit: E }) {
54
- const h = f, _ = E, e = i(() => h.data), V = i(() => h.labels || {}), c = $(f, "newsletterEmail"), b = i(() => e.value.linkGroups && e.value.linkGroups.length > 0), k = i(() => e.value.socialLinks && e.value.socialLinks.length > 0), y = i(() => e.value.legalLinks && e.value.legalLinks.length > 0), w = i(() => !!e.value.newsletter), B = i(() => e.value.brandName || e.value.brandLogo || e.value.brandDescription), G = i(() => e.value.copyright || y.value);
53
+ setup(p, { emit: B }) {
54
+ const h = p, b = B, e = i(() => h.data), E = i(() => h.labels || {}), c = T(p, "newsletterEmail"), _ = i(() => e.value.linkGroups && e.value.linkGroups.length > 0), k = i(() => e.value.socialLinks && e.value.socialLinks.length > 0), y = i(() => e.value.legalLinks && e.value.legalLinks.length > 0), w = i(() => !!e.value.newsletter), V = i(() => e.value.brandName || e.value.brandLogo || e.value.brandDescription), G = i(() => e.value.copyright || y.value);
55
55
  function S() {
56
- c.value.trim() && _("subscribe", c.value.trim());
56
+ c.value.trim() && b("subscribe", c.value.trim());
57
57
  }
58
- function p(L, d) {
59
- _("link-click", L, d);
58
+ function f(L, d) {
59
+ b("link-click", L, d);
60
60
  }
61
61
  return (L, d) => (t(), l("footer", {
62
- class: v(["v-footer v-footer-v1 w-full bg-background text-foreground", f.containerClass])
62
+ class: v(["v-footer v-footer-v1 w-full bg-background text-foreground", p.containerClass])
63
63
  }, [
64
64
  n("div", H, [
65
65
  n("div", {
66
- class: v(["mx-auto w-full max-w-7xl px-6 lg:px-8", b.value ? "py-12 lg:py-16" : "py-8 lg:py-10"])
66
+ class: v(["mx-auto w-full max-w-7xl px-6 lg:px-8", _.value ? "py-12 lg:py-16" : "py-8 lg:py-10"])
67
67
  }, [
68
68
  n("div", I, [
69
- B.value || k.value || w.value ? (t(), l("div", J, [
69
+ V.value || k.value || w.value ? (t(), l("div", J, [
70
70
  e.value.brandLogo || e.value.brandName ? (t(), l("div", K, [
71
71
  e.value.brandLogo ? (t(), l("img", {
72
72
  key: 0,
73
73
  src: e.value.brandLogo,
74
74
  alt: e.value.brandName || "Brand logo",
75
75
  class: "h-8 w-8 object-contain rounded"
76
- }, null, 8, O)) : o("", !0),
77
- e.value.brandName ? (t(), l("span", P, s(e.value.brandName), 1)) : o("", !0),
78
- e.value.badge ? (t(), l("span", Q, s(e.value.badge), 1)) : o("", !0)
79
- ])) : o("", !0),
80
- e.value.brandDescription ? (t(), l("p", R, s(e.value.brandDescription), 1)) : o("", !0),
76
+ }, null, 8, O)) : r("", !0),
77
+ e.value.brandName ? (t(), l("span", P, s(e.value.brandName), 1)) : r("", !0),
78
+ e.value.badge ? (t(), l("span", Q, s(e.value.badge), 1)) : r("", !0)
79
+ ])) : r("", !0),
80
+ e.value.brandDescription ? (t(), l("p", R, s(e.value.brandDescription), 1)) : r("", !0),
81
81
  w.value ? (t(), l("div", W, [
82
- e.value.newsletter?.title ? (t(), l("p", X, s(e.value.newsletter.title), 1)) : o("", !0),
83
- e.value.newsletter?.description ? (t(), l("p", Y, s(e.value.newsletter.description), 1)) : o("", !0),
82
+ e.value.newsletter?.title ? (t(), l("p", X, s(e.value.newsletter.title), 1)) : r("", !0),
83
+ e.value.newsletter?.description ? (t(), l("p", Y, s(e.value.newsletter.description), 1)) : r("", !0),
84
84
  n("form", {
85
85
  class: "flex gap-2 w-full",
86
- onSubmit: T(S, ["prevent"])
86
+ onSubmit: $(S, ["prevent"])
87
87
  }, [
88
88
  x(q, {
89
89
  modelValue: c.value,
90
- "onUpdate:modelValue": d[0] || (d[0] = (r) => c.value = r),
90
+ "onUpdate:modelValue": d[0] || (d[0] = (o) => c.value = o),
91
91
  type: "email",
92
92
  placeholder: e.value.newsletter?.placeholder || "Enter your email",
93
93
  class: "flex-1 min-w-0",
@@ -101,78 +101,78 @@ const H = { class: "v-footer-top" }, I = { class: "flex flex-col lg:flex-row gap
101
101
  class: "whitespace-nowrap"
102
102
  }, {
103
103
  default: z(() => [
104
- F(s(e.value.newsletter?.buttonText || V.value.subscribe || "Subscribe"), 1)
104
+ F(s(e.value.newsletter?.buttonText || E.value.subscribe || "Subscribe"), 1)
105
105
  ]),
106
106
  _: 1
107
107
  })
108
108
  ], 32)
109
- ])) : o("", !0),
109
+ ])) : r("", !0),
110
110
  k.value ? (t(), l("div", Z, [
111
- (t(!0), l(g, null, m(e.value.socialLinks, (r, u) => (t(), l("a", {
111
+ (t(!0), l(g, null, m(e.value.socialLinks, (o, u) => (t(), l("a", {
112
112
  key: u,
113
- href: r.url,
114
- "aria-label": r.label || "Social link",
113
+ href: o.url,
114
+ "aria-label": o.label || "Social link",
115
115
  target: "_blank",
116
116
  rel: "noopener noreferrer",
117
117
  class: "inline-flex items-center justify-center w-9 h-9 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted transition-all duration-200",
118
- onClick: (a) => p(r.url, a)
118
+ onClick: (a) => f(o.url, a)
119
119
  }, [
120
120
  x(N, {
121
- icon: r.icon,
121
+ icon: o.icon,
122
122
  class: "w-[18px] h-[18px]"
123
123
  }, null, 8, ["icon"])
124
124
  ], 8, ee))), 128))
125
- ])) : o("", !0)
126
- ])) : o("", !0),
127
- b.value ? (t(), l("div", {
125
+ ])) : r("", !0)
126
+ ])) : r("", !0),
127
+ _.value ? (t(), l("div", {
128
128
  key: 1,
129
129
  class: v(["grid w-full lg:w-auto! lg:ml-auto gap-y-10 gap-x-6 sm:gap-x-10 lg:gap-x-20 lg:pr-4", [
130
130
  e.value.linkGroups?.length === 1 ? "grid-cols-1" : e.value.linkGroups?.length === 2 ? "grid-cols-2 lg:grid-cols-[auto_auto]" : e.value.linkGroups?.length === 3 ? "grid-cols-2 md:grid-cols-3 lg:grid-cols-[auto_auto_auto]" : "grid-cols-2 md:grid-cols-4 lg:grid-cols-[auto_auto_auto_auto]"
131
131
  ]])
132
132
  }, [
133
- (t(!0), l(g, null, m(e.value.linkGroups, (r, u) => (t(), l("div", { key: u }, [
134
- n("h3", te, s(r.title), 1),
133
+ (t(!0), l(g, null, m(e.value.linkGroups, (o, u) => (t(), l("div", { key: u }, [
134
+ n("h3", te, s(o.title), 1),
135
135
  n("ul", le, [
136
- (t(!0), l(g, null, m(r.links, (a, j) => (t(), l("li", { key: j }, [
136
+ (t(!0), l(g, null, m(o.links, (a, j) => (t(), l("li", { key: j }, [
137
137
  n("a", {
138
138
  href: a.url,
139
139
  target: a.external ? "_blank" : void 0,
140
140
  rel: a.external ? "noopener noreferrer" : void 0,
141
141
  class: "inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors duration-200",
142
- onClick: (D) => p(a.url, D)
142
+ onClick: (D) => f(a.url, D)
143
143
  }, [
144
144
  a.icon ? (t(), U(N, {
145
145
  key: 0,
146
146
  icon: a.icon,
147
147
  class: "w-3.5 h-3.5 shrink-0"
148
- }, null, 8, ["icon"])) : o("", !0),
148
+ }, null, 8, ["icon"])) : r("", !0),
149
149
  n("span", null, s(a.label), 1)
150
- ], 8, re)
150
+ ], 8, oe)
151
151
  ]))), 128))
152
152
  ])
153
153
  ]))), 128))
154
- ], 2)) : o("", !0)
154
+ ], 2)) : r("", !0)
155
155
  ])
156
156
  ], 2)
157
157
  ]),
158
- G.value ? (t(), l("div", oe, [
158
+ G.value ? (t(), l("div", re, [
159
159
  n("div", ae, [
160
- e.value.copyright ? (t(), l("p", se, s(e.value.copyright), 1)) : o("", !0),
160
+ e.value.copyright ? (t(), l("p", se, s(e.value.copyright), 1)) : r("", !0),
161
161
  y.value ? (t(), l("div", ne, [
162
- (t(!0), l(g, null, m(e.value.legalLinks, (r, u) => (t(), l("a", {
162
+ (t(!0), l(g, null, m(e.value.legalLinks, (o, u) => (t(), l("a", {
163
163
  key: u,
164
- href: r.url,
165
- target: r.external ? "_blank" : void 0,
166
- rel: r.external ? "noopener noreferrer" : void 0,
164
+ href: o.url,
165
+ target: o.external ? "_blank" : void 0,
166
+ rel: o.external ? "noopener noreferrer" : void 0,
167
167
  class: "text-sm text-muted-foreground hover:text-foreground transition-colors duration-200",
168
- onClick: (a) => p(r.url, a)
169
- }, s(r.label), 9, ie))), 128))
170
- ])) : o("", !0)
168
+ onClick: (a) => f(o.url, a)
169
+ }, s(o.label), 9, ie))), 128))
170
+ ])) : r("", !0)
171
171
  ])
172
- ])) : o("", !0)
172
+ ])) : r("", !0)
173
173
  ], 2));
174
174
  }
175
175
  });
176
176
  export {
177
- fe as default
177
+ pe as default
178
178
  };