@ac-design/design-system 1.0.3 → 2.0.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 (186) hide show
  1. package/README.md +27 -18
  2. package/dist/lib/charts/ChartFrame.js +5 -0
  3. package/dist/lib/charts/ChartFrame.vue.d.ts +69 -0
  4. package/dist/lib/charts/ChartFrame.vue_vue_type_script_setup_true_lang.js +168 -0
  5. package/dist/lib/charts/index.d.ts +7 -0
  6. package/dist/lib/charts/index.js +5 -0
  7. package/dist/lib/charts/shared.d.ts +60 -0
  8. package/dist/lib/charts/shared.js +114 -0
  9. package/dist/lib/charts/xy.d.ts +65 -0
  10. package/dist/lib/charts/xy.js +92 -0
  11. package/dist/lib/compat.css +1707 -1042
  12. package/dist/lib/components/AcAccordion.vue_vue_type_script_setup_true_lang.js +2 -2
  13. package/dist/lib/components/AcAccordionItem.vue.d.ts +1 -1
  14. package/dist/lib/components/AcAccordionItem.vue_vue_type_script_setup_true_lang.js +5 -5
  15. package/dist/lib/components/AcAlert.vue.d.ts +1 -1
  16. package/dist/lib/components/AcAlert.vue_vue_type_script_setup_true_lang.js +19 -25
  17. package/dist/lib/components/AcAppSwitcher.vue_vue_type_script_setup_true_lang.js +19 -19
  18. package/dist/lib/components/AcAreaChart.js +5 -0
  19. package/dist/lib/components/AcAreaChart.vue.d.ts +44 -0
  20. package/dist/lib/components/AcAreaChart.vue_vue_type_script_setup_true_lang.js +215 -0
  21. package/dist/lib/components/AcAvatar.vue_vue_type_script_setup_true_lang.js +8 -8
  22. package/dist/lib/components/AcBadge.vue.d.ts +16 -7
  23. package/dist/lib/components/AcBadge.vue_vue_type_script_setup_true_lang.js +59 -43
  24. package/dist/lib/components/AcBanner.vue.d.ts +1 -1
  25. package/dist/lib/components/AcBanner.vue_vue_type_script_setup_true_lang.js +30 -30
  26. package/dist/lib/components/AcBarChart.js +5 -0
  27. package/dist/lib/components/AcBarChart.vue.d.ts +43 -0
  28. package/dist/lib/components/AcBarChart.vue_vue_type_script_setup_true_lang.js +217 -0
  29. package/dist/lib/components/AcBreadcrumb.vue_vue_type_script_setup_true_lang.js +27 -26
  30. package/dist/lib/components/AcBulkActionBar.js +5 -0
  31. package/dist/lib/components/AcBulkActionBar.vue.d.ts +43 -0
  32. package/dist/lib/components/AcBulkActionBar.vue_vue_type_script_setup_true_lang.js +84 -0
  33. package/dist/lib/components/AcButton.vue.d.ts +3 -3
  34. package/dist/lib/components/AcButton.vue_vue_type_script_setup_true_lang.js +42 -34
  35. package/dist/lib/components/AcButtons.vue_vue_type_script_setup_true_lang.js +1 -1
  36. package/dist/lib/components/AcCard.vue.d.ts +10 -2
  37. package/dist/lib/components/AcCard.vue_vue_type_script_setup_true_lang.js +37 -11
  38. package/dist/lib/components/AcCellValue.vue.d.ts +4 -1
  39. package/dist/lib/components/AcCellValue.vue_vue_type_script_setup_true_lang.js +214 -179
  40. package/dist/lib/components/AcCheckBox.vue.d.ts +17 -3
  41. package/dist/lib/components/AcCheckBox.vue_vue_type_script_setup_true_lang.js +126 -29
  42. package/dist/lib/components/AcCheckRadio.vue.d.ts +1 -1
  43. package/dist/lib/components/AcCheckRadio.vue_vue_type_script_setup_true_lang.js +33 -21
  44. package/dist/lib/components/AcCircularProgress.js +5 -0
  45. package/dist/lib/components/AcCircularProgress.vue.d.ts +44 -0
  46. package/dist/lib/components/AcCircularProgress.vue_vue_type_script_setup_true_lang.js +111 -0
  47. package/dist/lib/components/AcClusterSwitcher.vue_vue_type_script_setup_true_lang.js +142 -167
  48. package/dist/lib/components/AcCodeEditor.vue_vue_type_script_setup_true_lang.js +9 -9
  49. package/dist/lib/components/AcColorInput.js +5 -0
  50. package/dist/lib/components/AcColorInput.vue.d.ts +54 -0
  51. package/dist/lib/components/AcColorInput.vue_vue_type_script_setup_true_lang.js +187 -0
  52. package/dist/lib/components/AcConfirmModal.js +5 -0
  53. package/dist/lib/components/AcConfirmModal.vue.d.ts +56 -0
  54. package/dist/lib/components/AcConfirmModal.vue_vue_type_script_setup_true_lang.js +92 -0
  55. package/dist/lib/components/AcContentHeader.vue.d.ts +1 -1
  56. package/dist/lib/components/AcContentHeader.vue_vue_type_script_setup_true_lang.js +5 -4
  57. package/dist/lib/components/AcContentLayout.vue_vue_type_script_setup_true_lang.js +2 -2
  58. package/dist/lib/components/AcCopyButton.js +5 -0
  59. package/dist/lib/components/AcCopyButton.vue.d.ts +43 -0
  60. package/dist/lib/components/AcCopyButton.vue_vue_type_script_setup_true_lang.js +92 -0
  61. package/dist/lib/components/AcDatePicker.vue.d.ts +5 -5
  62. package/dist/lib/components/AcDatePicker.vue_vue_type_script_setup_true_lang.js +204 -213
  63. package/dist/lib/components/AcDeleteModal.vue.d.ts +4 -4
  64. package/dist/lib/components/AcDeleteModal.vue_vue_type_script_setup_true_lang.js +37 -46
  65. package/dist/lib/components/AcDonutChart.js +5 -0
  66. package/dist/lib/components/AcDonutChart.vue.d.ts +73 -0
  67. package/dist/lib/components/AcDonutChart.vue_vue_type_script_setup_true_lang.js +210 -0
  68. package/dist/lib/components/AcDropdown.vue.d.ts +1 -1
  69. package/dist/lib/components/AcDropdown.vue_vue_type_script_setup_true_lang.js +9 -9
  70. package/dist/lib/components/AcDropdownDivider.vue_vue_type_script_setup_true_lang.js +2 -2
  71. package/dist/lib/components/AcDropdownItem.vue.d.ts +1 -1
  72. package/dist/lib/components/AcDropdownItem.vue_vue_type_script_setup_true_lang.js +3 -3
  73. package/dist/lib/components/AcEmptyState.vue.d.ts +4 -1
  74. package/dist/lib/components/AcEmptyState.vue_vue_type_script_setup_true_lang.js +50 -39
  75. package/dist/lib/components/AcFeatureCard.vue_vue_type_script_setup_true_lang.js +14 -13
  76. package/dist/lib/components/AcFileEditor.vue_vue_type_script_setup_true_lang.js +16 -16
  77. package/dist/lib/components/AcFileUpload.vue.d.ts +2 -2
  78. package/dist/lib/components/AcFileUpload.vue_vue_type_script_setup_true_lang.js +55 -53
  79. package/dist/lib/components/AcFontScale.vue_vue_type_script_setup_true_lang.js +2 -2
  80. package/dist/lib/components/AcFooter.js +5 -0
  81. package/dist/lib/components/AcFooter.vue.d.ts +37 -0
  82. package/dist/lib/components/AcFooter.vue_vue_type_script_setup_true_lang.js +107 -0
  83. package/dist/lib/components/AcForm.vue.d.ts +3 -0
  84. package/dist/lib/components/AcForm.vue_vue_type_script_setup_true_lang.js +4 -2
  85. package/dist/lib/components/AcFormArray.vue.d.ts +2 -2
  86. package/dist/lib/components/AcFormArray.vue_vue_type_script_setup_true_lang.js +149 -147
  87. package/dist/lib/components/AcFormFooter.vue.d.ts +2 -2
  88. package/dist/lib/components/AcFormFooter.vue_vue_type_script_setup_true_lang.js +2 -2
  89. package/dist/lib/components/AcFormSection.vue.d.ts +7 -0
  90. package/dist/lib/components/AcFormSection.vue_vue_type_script_setup_true_lang.js +31 -21
  91. package/dist/lib/components/AcHeader.vue.d.ts +3 -3
  92. package/dist/lib/components/AcHeader.vue_vue_type_script_setup_true_lang.js +22 -22
  93. package/dist/lib/components/AcInfoTable.vue_vue_type_script_setup_true_lang.js +17 -13
  94. package/dist/lib/components/AcInput.vue.d.ts +3 -3
  95. package/dist/lib/components/AcInput.vue_vue_type_script_setup_true_lang.js +98 -87
  96. package/dist/lib/components/AcKbd.vue_vue_type_script_setup_true_lang.js +1 -1
  97. package/dist/lib/components/AcKeyValueInput.js +5 -0
  98. package/dist/lib/components/AcKeyValueInput.vue.d.ts +114 -0
  99. package/dist/lib/components/AcKeyValueInput.vue_vue_type_script_setup_true_lang.js +320 -0
  100. package/dist/lib/components/AcLineChart.js +5 -0
  101. package/dist/lib/components/AcLineChart.vue.d.ts +38 -0
  102. package/dist/lib/components/AcLineChart.vue_vue_type_script_setup_true_lang.js +187 -0
  103. package/dist/lib/components/AcLocaleSwitcher.js +5 -0
  104. package/dist/lib/components/AcLocaleSwitcher.vue.d.ts +46 -0
  105. package/dist/lib/components/AcLocaleSwitcher.vue_vue_type_script_setup_true_lang.js +103 -0
  106. package/dist/lib/components/AcModal.vue_vue_type_script_setup_true_lang.js +23 -23
  107. package/dist/lib/components/AcNavbar.vue_vue_type_script_setup_true_lang.js +6 -6
  108. package/dist/lib/components/AcNavbarItem.vue.d.ts +1 -1
  109. package/dist/lib/components/AcNavbarItem.vue_vue_type_script_setup_true_lang.js +22 -22
  110. package/dist/lib/components/AcNotificationMenu.vue_vue_type_script_setup_true_lang.js +26 -26
  111. package/dist/lib/components/AcNumberInput.js +5 -0
  112. package/dist/lib/components/AcNumberInput.vue.d.ts +79 -0
  113. package/dist/lib/components/AcNumberInput.vue_vue_type_script_setup_true_lang.js +251 -0
  114. package/dist/lib/components/AcPage.vue.d.ts +2 -2
  115. package/dist/lib/components/AcPage.vue_vue_type_script_setup_true_lang.js +2 -2
  116. package/dist/lib/components/AcPagination.vue.d.ts +20 -3
  117. package/dist/lib/components/AcPagination.vue_vue_type_script_setup_true_lang.js +81 -53
  118. package/dist/lib/components/AcPreloader.vue.d.ts +1 -1
  119. package/dist/lib/components/AcPreloader.vue_vue_type_script_setup_true_lang.js +3 -3
  120. package/dist/lib/components/AcProgress.vue.d.ts +2 -2
  121. package/dist/lib/components/AcProgress.vue_vue_type_script_setup_true_lang.js +4 -4
  122. package/dist/lib/components/AcResourceCard.vue.d.ts +2 -2
  123. package/dist/lib/components/AcResourceCard.vue_vue_type_script_setup_true_lang.js +13 -13
  124. package/dist/lib/components/AcSearchBar.vue.d.ts +1 -1
  125. package/dist/lib/components/AcSearchBar.vue_vue_type_script_setup_true_lang.js +9 -8
  126. package/dist/lib/components/AcSectionContent.vue.d.ts +2 -2
  127. package/dist/lib/components/AcSectionContent.vue_vue_type_script_setup_true_lang.js +8 -8
  128. package/dist/lib/components/AcSegmentedControl.vue.d.ts +1 -1
  129. package/dist/lib/components/AcSegmentedControl.vue_vue_type_script_setup_true_lang.js +4 -4
  130. package/dist/lib/components/AcSelect.vue.d.ts +4 -4
  131. package/dist/lib/components/AcSelect.vue_vue_type_script_setup_true_lang.js +230 -227
  132. package/dist/lib/components/AcSidePanel.vue_vue_type_script_setup_true_lang.js +31 -31
  133. package/dist/lib/components/AcSideTabs.vue.d.ts +1 -1
  134. package/dist/lib/components/AcSideTabs.vue_vue_type_script_setup_true_lang.js +37 -37
  135. package/dist/lib/components/AcSidebar.vue.d.ts +3 -3
  136. package/dist/lib/components/AcSidebar.vue_vue_type_script_setup_true_lang.js +75 -75
  137. package/dist/lib/components/AcSidebarItem.vue_vue_type_script_setup_true_lang.js +33 -32
  138. package/dist/lib/components/AcSidebarSection.vue_vue_type_script_setup_true_lang.js +6 -6
  139. package/dist/lib/components/AcSkeleton.vue_vue_type_script_setup_true_lang.js +8 -8
  140. package/dist/lib/components/AcSlider.vue.d.ts +1 -1
  141. package/dist/lib/components/AcSlider.vue_vue_type_script_setup_true_lang.js +174 -172
  142. package/dist/lib/components/AcStatCard.vue.d.ts +3 -3
  143. package/dist/lib/components/AcStatCard.vue_vue_type_script_setup_true_lang.js +90 -85
  144. package/dist/lib/components/AcStatusBar.vue.d.ts +1 -1
  145. package/dist/lib/components/AcStatusBar.vue_vue_type_script_setup_true_lang.js +6 -6
  146. package/dist/lib/components/AcSteps.vue_vue_type_script_setup_true_lang.js +28 -28
  147. package/dist/lib/components/AcSwitch.vue_vue_type_script_setup_true_lang.js +39 -34
  148. package/dist/lib/components/AcSwitchCard.js +5 -0
  149. package/dist/lib/components/AcSwitchCard.vue.d.ts +59 -0
  150. package/dist/lib/components/AcSwitchCard.vue_vue_type_script_setup_true_lang.js +119 -0
  151. package/dist/lib/components/AcTable.vue_vue_type_script_setup_true_lang.js +87 -87
  152. package/dist/lib/components/AcTabs.vue_vue_type_script_setup_true_lang.js +4 -4
  153. package/dist/lib/components/AcTag.vue.d.ts +1 -1
  154. package/dist/lib/components/AcTag.vue_vue_type_script_setup_true_lang.js +22 -22
  155. package/dist/lib/components/AcTagInput.js +5 -0
  156. package/dist/lib/components/AcTagInput.vue.d.ts +74 -0
  157. package/dist/lib/components/AcTagInput.vue_vue_type_script_setup_true_lang.js +291 -0
  158. package/dist/lib/components/AcTextarea.vue.d.ts +3 -3
  159. package/dist/lib/components/AcTextarea.vue_vue_type_script_setup_true_lang.js +89 -64
  160. package/dist/lib/components/AcThemeMode.vue_vue_type_script_setup_true_lang.js +3 -3
  161. package/dist/lib/components/AcTimePicker.js +5 -0
  162. package/dist/lib/components/AcTimePicker.vue.d.ts +65 -0
  163. package/dist/lib/components/AcTimePicker.vue_vue_type_script_setup_true_lang.js +463 -0
  164. package/dist/lib/components/AcToaster.vue_vue_type_script_setup_true_lang.js +65 -71
  165. package/dist/lib/components/AcTooltip.vue.d.ts +1 -1
  166. package/dist/lib/components/AcTooltip.vue_vue_type_script_setup_true_lang.js +77 -67
  167. package/dist/lib/components/AcUsageCard.vue_vue_type_script_setup_true_lang.js +27 -27
  168. package/dist/lib/components/AcUserMenu.vue_vue_type_script_setup_true_lang.js +111 -103
  169. package/dist/lib/components/index.d.ts +14 -2
  170. package/dist/lib/components/status.d.ts +26 -0
  171. package/dist/lib/components/status.js +110 -0
  172. package/dist/lib/composables/copyText.d.ts +2 -1
  173. package/dist/lib/composables/copyText.js +2 -2
  174. package/dist/lib/composables/useApiPagination.d.ts +55 -0
  175. package/dist/lib/composables/useApiPagination.js +58 -0
  176. package/dist/lib/composables/useBulkSelection.d.ts +44 -0
  177. package/dist/lib/composables/useBulkSelection.js +41 -0
  178. package/dist/lib/composables/useFormValidation.d.ts +65 -0
  179. package/dist/lib/composables/useFormValidation.js +148 -0
  180. package/dist/lib/composables/useTablePagination.d.ts +49 -0
  181. package/dist/lib/composables/useTablePagination.js +41 -0
  182. package/dist/lib/editor/theme.js +65 -62
  183. package/dist/lib/index.d.ts +14 -0
  184. package/dist/lib/index.js +95 -78
  185. package/dist/lib/theme.css +391 -272
  186. package/package.json +11 -4
@@ -1,13 +1,10 @@
1
1
  import { computed as e, createBlock as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, createTextVNode as a, defineComponent as o, normalizeClass as s, openBlock as c, renderSlot as l, resolveDynamicComponent as u, toDisplayString as d } from "vue";
2
2
  import { Inbox as f, SearchX as p, TriangleAlert as m } from "@lucide/vue";
3
3
  //#region src/lib/components/AcEmptyState.vue?vue&type=script&setup=true&lang.ts
4
- var h = ["role"], g = { class: "flex flex-col items-center gap-1" }, _ = {
4
+ var h = ["role"], g = {
5
5
  key: 0,
6
- class: "font-mono text-xs font-medium tracking-wide text-muted uppercase"
7
- }, v = {
8
- key: 0,
9
- class: "mt-1 flex flex-wrap items-center justify-center gap-2"
10
- }, y = /*@__PURE__*/ o({
6
+ class: "mb-1 font-mono text-xs font-medium tracking-wide text-muted uppercase"
7
+ }, _ = /*@__PURE__*/ o({
11
8
  __name: "AcEmptyState",
12
9
  props: {
13
10
  variant: { default: "empty" },
@@ -16,66 +13,80 @@ var h = ["role"], g = { class: "flex flex-col items-center gap-1" }, _ = {
16
13
  description: { default: "" },
17
14
  query: { default: "" },
18
15
  icon: { default: void 0 },
19
- size: { default: "normal" }
16
+ size: { default: "normal" },
17
+ framed: {
18
+ type: Boolean,
19
+ default: !1
20
+ }
20
21
  },
21
22
  setup(o) {
22
- let y = o, b = {
23
+ let _ = o, v = {
23
24
  empty: {
24
25
  glyph: f,
25
26
  title: "Nothing here yet",
26
- tile: "border-border bg-surface-muted text-muted"
27
+ tile: "bg-primary/10 text-primary-strong",
28
+ frame: "border-border bg-surface"
27
29
  },
28
30
  search: {
29
31
  glyph: p,
30
32
  title: "No results found",
31
- tile: "border-border bg-surface-muted text-muted"
33
+ tile: "bg-primary/10 text-primary-strong",
34
+ frame: "border-border bg-surface"
32
35
  },
33
36
  error: {
34
37
  glyph: m,
35
38
  title: "Something went wrong",
36
- tile: "border-red-90 bg-red-97 text-red-40"
39
+ tile: "bg-danger/10 text-danger-strong",
40
+ frame: "border-danger/25 bg-danger/5"
37
41
  }
38
- }, x = {
42
+ }, y = {
39
43
  small: {
40
- root: "py-6 gap-3",
41
- tile: "size-9 rounded-8 [&_svg]:size-4",
42
- title: "text-lg leading-6",
43
- text: "text-base max-w-80"
44
+ root: "py-8",
45
+ gap: "mb-3",
46
+ tile: "size-12 [&_svg]:size-6",
47
+ title: "text-lg",
48
+ text: "max-w-80 text-base",
49
+ actions: "mt-4"
44
50
  },
45
51
  normal: {
46
- root: "py-12 gap-4",
47
- tile: "size-11 rounded-10 [&_svg]:size-5",
48
- title: "text-xl leading-6",
49
- text: "text-base max-w-100"
52
+ root: "py-16",
53
+ gap: "mb-4",
54
+ tile: "size-16 [&_svg]:size-8",
55
+ title: "text-xl",
56
+ text: "max-w-md text-base",
57
+ actions: "mt-6"
50
58
  },
51
59
  large: {
52
- root: "py-20 gap-5",
53
- tile: "size-14 rounded-12 [&_svg]:size-6",
54
- title: "text-2xl leading-7",
55
- text: "text-lg max-w-120"
60
+ root: "py-20",
61
+ gap: "mb-5",
62
+ tile: "size-16 [&_svg]:size-8",
63
+ title: "text-2xl",
64
+ text: "max-w-120 text-lg",
65
+ actions: "mt-6"
56
66
  }
57
- }, S = e(() => b[y.variant]), C = e(() => x[y.size]), w = e(() => y.icon ?? S.value.glyph), T = e(() => y.title ? y.title : y.variant === "search" && y.query ? `No results for “${y.query}”` : S.value.title);
67
+ }, b = e(() => v[_.variant]), x = e(() => y[_.size]), S = e(() => _.icon ?? b.value.glyph), C = e(() => _.title ? _.title : _.variant === "search" && _.query ? `No results for “${_.query}”` : b.value.title);
58
68
  return (e, f) => (c(), r("div", {
59
- class: s(["flex flex-col items-center px-4 text-center", C.value.root]),
69
+ class: s(["flex flex-col items-center justify-center text-center", [x.value.root, o.framed ? ["rounded-16 border border-dashed px-6", b.value.frame] : "px-4"]]),
60
70
  role: o.variant === "error" ? "alert" : void 0,
61
71
  "data-ac-ds": "",
62
72
  "data-testid": "ac-empty-state"
63
73
  }, [
64
- l(e.$slots, "icon", {}, () => [i("span", {
65
- class: s(["inline-flex shrink-0 items-center justify-center border shadow-xs", [S.value.tile, C.value.tile]]),
74
+ i("div", { class: s(["flex justify-center", x.value.gap]) }, [l(e.$slots, "icon", {}, () => [i("span", {
75
+ class: s(["inline-flex shrink-0 items-center justify-center rounded-16", [b.value.tile, x.value.tile]]),
66
76
  "aria-hidden": "true"
67
- }, [(c(), t(u(w.value)))], 2)]),
68
- i("div", g, [
69
- o.code ? (c(), r("p", _, d(o.code), 1)) : n("", !0),
70
- i("p", { class: s(["font-semibold tracking-[-0.01em] text-balance text-heading", C.value.title]) }, d(T.value), 3),
71
- o.description || e.$slots.default ? (c(), r("div", {
72
- key: 1,
73
- class: s(["text-pretty text-muted [&_a]:font-medium [&_a]:text-primary-20 [&_a]:underline [&_a]:underline-offset-2", C.value.text])
74
- }, [l(e.$slots, "default", {}, () => [a(d(o.description), 1)])], 2)) : n("", !0)
75
- ]),
76
- e.$slots.actions ? (c(), r("div", v, [l(e.$slots, "actions")])) : n("", !0)
77
+ }, [(c(), t(u(S.value)))], 2)])], 2),
78
+ o.code ? (c(), r("p", g, d(o.code), 1)) : n("", !0),
79
+ i("p", { class: s(["font-heading font-semibold tracking-tight text-balance text-heading", x.value.title]) }, d(C.value), 3),
80
+ o.description || e.$slots.default ? (c(), r("div", {
81
+ key: 1,
82
+ class: s(["mt-1.5 text-pretty text-muted [&_a]:font-medium [&_a]:text-primary-strong [&_a]:underline [&_a]:underline-offset-2", x.value.text])
83
+ }, [l(e.$slots, "default", {}, () => [a(d(o.description), 1)])], 2)) : n("", !0),
84
+ e.$slots.actions ? (c(), r("div", {
85
+ key: 2,
86
+ class: s(["flex flex-wrap items-center justify-center gap-3", x.value.actions])
87
+ }, [l(e.$slots, "actions")], 2)) : n("", !0)
77
88
  ], 10, h));
78
89
  }
79
90
  });
80
91
  //#endregion
81
- export { y as default };
92
+ export { _ as default };
@@ -83,10 +83,11 @@ var D = ["aria-hidden"], O = ["src", "alt"], k = ["id"], A = ["aria-describedby"
83
83
  }
84
84
  return (n, u) => (m(), r(g(l.selectable ? "label" : "div"), {
85
85
  for: l.selectable ? `${v(V)}-input` : void 0,
86
- class: p(["group relative flex min-w-0 flex-col rounded-10 border border-border bg-surface p-4 shadow-xs transition-[border-color,box-shadow,background-color] duration-150 has-[[data-ac-card-link]:focus-visible]:ring-[3px] has-[[data-ac-card-link]:focus-visible]:ring-ring", [
86
+ class: p(["group relative flex min-w-0 flex-col rounded-14 border border-border bg-surface p-5 transition-[background-color,border-color,box-shadow,translate] duration-200 has-[[data-ac-card-link]:focus-visible]:ring-2 has-[[data-ac-card-link]:focus-visible]:ring-ring has-[[data-ac-card-link]:focus-visible]:ring-offset-2 has-[[data-ac-card-link]:focus-visible]:ring-offset-surface motion-reduce:transition-none", [
87
87
  l.centered && "items-center text-center",
88
- W() && "cursor-pointer hover:border-border-dark hover:shadow-sm",
89
- l.selectable && "has-checked:border-primary has-checked:bg-primary-97 has-checked:shadow-[0_0_0_1px_var(--color-primary)] has-focus-visible:ring-[3px] has-focus-visible:ring-ring",
88
+ W() && !l.selectable && "cursor-pointer hover:-translate-y-0.5 hover:border-primary/30 hover:bg-accent-hover/60 hover:shadow-card motion-reduce:hover:translate-y-0",
89
+ l.selectable && !l.disabled && "cursor-pointer hover:border-primary/40 hover:bg-accent-hover",
90
+ l.selectable && "has-checked:border-primary has-checked:bg-primary/5 has-checked:shadow-[inset_0_0_0_1px_var(--color-primary)] has-focus-visible:ring-2 has-focus-visible:ring-ring has-focus-visible:ring-offset-2 has-focus-visible:ring-offset-surface",
90
91
  l.disabled && "cursor-not-allowed opacity-60"
91
92
  ]]),
92
93
  "data-ac-ds": "",
@@ -95,7 +96,7 @@ var D = ["aria-hidden"], O = ["src", "alt"], k = ["id"], A = ["aria-describedby"
95
96
  default: S(() => [o("div", { class: p(["flex w-full min-w-0 gap-3", l.centered ? "flex-col items-center" : "items-start"]) }, [
96
97
  n.$slots.icon || l.logo || l.icon ? (m(), a("span", {
97
98
  key: 0,
98
- class: p(["inline-flex shrink-0 items-center justify-center overflow-hidden rounded-8", [l.centered ? "size-12" : "size-10", l.logo ? "border border-border-light bg-surface-muted p-1.5" : "bg-primary-95 text-primary-30 [&_svg]:size-5"]]),
99
+ class: p(["inline-flex shrink-0 items-center justify-center overflow-hidden border", [l.centered ? "size-12 rounded-14" : "size-10 rounded-10", l.logo ? "border-border bg-surface-muted p-1.5" : "border-primary/25 bg-primary/10 text-primary-strong [&_svg]:size-5"]]),
99
100
  "aria-hidden": l.logo && l.logoAlt ? void 0 : "true"
100
101
  }, [h(n.$slots, "icon", {}, () => [l.logo ? (m(), a("img", {
101
102
  key: 0,
@@ -107,14 +108,14 @@ var D = ["aria-hidden"], O = ["src", "alt"], k = ["id"], A = ["aria-describedby"
107
108
  o("div", { class: p(["flex min-w-0 items-start gap-2", l.centered ? "justify-center" : "justify-between"]) }, [
108
109
  o("div", { class: p(["flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1", l.centered && "justify-center"]) }, [o("h3", {
109
110
  id: `${v(V)}-title`,
110
- class: "min-w-0 text-lg leading-6 font-semibold tracking-[-0.01em] text-heading"
111
+ class: "min-w-0 font-heading text-lg leading-6 font-semibold tracking-tight text-heading"
111
112
  }, [H.value ? (m(), r(g(H.value.is), f({ key: 0 }, {
112
113
  ...H.value,
113
114
  is: void 0
114
115
  }, {
115
116
  "aria-describedby": l.description ? `${v(V)}-desc` : void 0,
116
117
  "data-ac-card-link": "",
117
- class: "outline-none after:absolute after:inset-0 after:rounded-10",
118
+ class: "outline-none after:absolute after:inset-0 after:rounded-14",
118
119
  onClick: G
119
120
  }), {
120
121
  default: S(() => [s(_(l.title), 1)]),
@@ -124,7 +125,7 @@ var D = ["aria-hidden"], O = ["src", "alt"], k = ["id"], A = ["aria-describedby"
124
125
  type: "button",
125
126
  "aria-describedby": l.description ? `${v(V)}-desc` : void 0,
126
127
  "data-ac-card-link": "",
127
- class: "cursor-pointer text-left outline-none after:absolute after:inset-0 after:rounded-10",
128
+ class: "cursor-pointer text-left outline-none after:absolute after:inset-0 after:rounded-14",
128
129
  onClick: G
129
130
  }, _(l.title), 9, A)) : (m(), a(t, { key: 2 }, [s(_(l.title), 1)], 64))], 8, k), l.centered ? i("", !0) : (m(), a(t, { key: 0 }, [
130
131
  h(n.$slots, "title-extra"),
@@ -154,14 +155,14 @@ var D = ["aria-hidden"], O = ["src", "alt"], k = ["id"], A = ["aria-describedby"
154
155
  n.$slots.actions && !l.centered ? (m(), a("div", j, [h(n.$slots, "actions")])) : i("", !0),
155
156
  !l.centered && (H.value || U()) ? (m(), r(g(l.target === "_blank" ? v(T) : v(w)), {
156
157
  key: 1,
157
- class: "mt-1 size-4 shrink-0 text-slate-60 transition-[color,transform] duration-150 group-hover:text-heading motion-safe:group-hover:translate-x-0.5",
158
+ class: "mt-1 size-4 shrink-0 text-muted transition-[color,transform] duration-200 group-hover:text-primary-strong motion-safe:group-hover:translate-x-0.5",
158
159
  "aria-hidden": "true"
159
160
  })) : i("", !0)
160
161
  ], 2),
161
162
  l.description ? (m(), a("p", {
162
163
  key: 0,
163
164
  id: `${v(V)}-desc`,
164
- class: "mt-1 line-clamp-3 text-base text-muted",
165
+ class: "mt-1 line-clamp-3 text-base leading-relaxed text-muted",
165
166
  title: l.description
166
167
  }, _(l.description), 9, M)) : i("", !0),
167
168
  n.$slots.default ? (m(), a("div", N, [h(n.$slots, "default")])) : i("", !0),
@@ -192,7 +193,7 @@ var D = ["aria-hidden"], O = ["src", "alt"], k = ["id"], A = ["aria-describedby"
192
193
  ], 2),
193
194
  l.selectable ? (m(), a("span", {
194
195
  key: 1,
195
- class: p(["relative inline-flex size-4 shrink-0", l.centered ? "absolute! top-3 right-3" : "mt-1"])
196
+ class: p(["relative inline-flex size-5 shrink-0", l.centered ? "absolute! top-3 right-3" : "mt-0.5"])
196
197
  }, [C(o("input", {
197
198
  id: `${v(V)}-input`,
198
199
  "onUpdate:modelValue": u[0] ||= (e) => L.value = e,
@@ -200,15 +201,15 @@ var D = ["aria-hidden"], O = ["src", "alt"], k = ["id"], A = ["aria-describedby"
200
201
  disabled: l.disabled,
201
202
  "aria-labelledby": `${v(V)}-title`,
202
203
  "aria-describedby": l.description ? `${v(V)}-desc` : void 0,
203
- class: "peer size-4 cursor-pointer appearance-none rounded-4 border border-border-dark bg-surface shadow-xs transition-[background-color,border-color] duration-150 outline-none group-hover:border-slate-60 checked:border-primary checked:bg-primary checked:shadow-button disabled:cursor-not-allowed"
204
+ class: "peer size-5 cursor-pointer appearance-none rounded-4 border border-muted/70 bg-surface transition-colors duration-200 outline-none checked:border-primary checked:bg-primary disabled:cursor-not-allowed disabled:bg-surface-sunken"
204
205
  }, null, 8, F), [[x, L.value]]), c(v(E), {
205
- class: "pointer-events-none absolute inset-0 m-auto size-3 scale-75 text-white opacity-0 transition duration-150 peer-checked:scale-100 peer-checked:opacity-100",
206
+ class: "pointer-events-none absolute inset-0 m-auto size-4 scale-75 text-white opacity-0 transition duration-150 peer-checked:scale-100 peer-checked:opacity-100 motion-reduce:transition-none",
206
207
  "stroke-width": 3,
207
208
  "aria-hidden": "true"
208
209
  })], 2)) : i("", !0)
209
210
  ], 2), n.$slots.footer ? (m(), a("div", {
210
211
  key: 0,
211
- class: p(["mt-auto flex w-full min-w-0 flex-wrap items-center gap-x-3 gap-y-1 pt-3 text-xs text-muted", l.centered ? "justify-center" : "justify-between"])
212
+ class: p(["mt-auto flex w-full min-w-0 flex-wrap items-center gap-x-3 gap-y-1 pt-4 text-xs text-muted", l.centered ? "justify-center" : "justify-between"])
212
213
  }, [h(n.$slots, "footer")], 2)) : i("", !0)]),
213
214
  _: 3
214
215
  }, 8, ["for", "class"]));
@@ -13,10 +13,10 @@ var ye = ["aria-busy"], be = {
13
13
  key: 0,
14
14
  class: "flex h-full flex-col @2xl:flex-row"
15
15
  }, xe = {
16
- class: "hidden w-60 shrink-0 flex-col gap-1 border-r border-border-light bg-surface-muted p-2 @2xl:flex @4xl:w-72",
16
+ class: "hidden w-60 shrink-0 flex-col gap-1 border-r border-border bg-surface-muted p-2 @2xl:flex @4xl:w-72",
17
17
  "aria-hidden": "true"
18
18
  }, Se = { class: "flex min-w-0 flex-1 flex-col gap-1.5" }, Ce = {
19
- class: "border-b border-border-light p-2 @2xl:hidden",
19
+ class: "border-b border-border p-2 @2xl:hidden",
20
20
  "aria-hidden": "true"
21
21
  }, we = {
22
22
  key: 1,
@@ -24,7 +24,7 @@ var ye = ["aria-busy"], be = {
24
24
  }, Te = {
25
25
  key: 2,
26
26
  class: "flex h-full flex-col @2xl:flex-row"
27
- }, Ee = { class: "hidden w-60 shrink-0 flex-col border-r border-border-light bg-surface-muted @2xl:flex @4xl:w-72" }, De = ["aria-label"], Oe = [
27
+ }, Ee = { class: "hidden w-60 shrink-0 flex-col border-r border-border bg-surface-muted @2xl:flex @4xl:w-72" }, De = ["aria-label"], Oe = [
28
28
  "aria-selected",
29
29
  "tabindex",
30
30
  "title",
@@ -43,10 +43,10 @@ var ye = ["aria-busy"], be = {
43
43
  }, Pe = {
44
44
  key: 2,
45
45
  class: "min-h-0 flex-1 overflow-auto"
46
- }, Fe = { class: "border-t border-border-light px-3 py-2 text-xs text-muted" }, Ie = { class: "text-red-40" }, Le = { class: "border-b border-border-light bg-surface-muted p-2 @2xl:hidden" }, Re = ["aria-label"], ze = {
46
+ }, Fe = { class: "border-t border-border px-4 py-2.5 text-xs text-muted" }, Ie = { class: "text-danger-strong" }, Le = { class: "border-b border-border bg-surface-muted p-2 @2xl:hidden" }, Re = ["aria-label"], ze = {
47
47
  key: 0,
48
- class: "border-b border-yellow-90 bg-yellow-97 px-3 py-2 text-xs text-yellow-10"
49
- }, Be = { class: "flex min-h-11 flex-wrap items-center gap-x-3 gap-y-1.5 border-b border-border-light px-3 py-2" }, Ve = { class: "min-w-0 truncate font-mono text-xs font-medium text-heading" }, He = { class: "inline-flex items-center gap-1 rounded-4 bg-surface-sunken px-1.5 text-sm leading-5 font-medium text-muted" }, Ue = { class: "ml-auto flex min-w-0 flex-wrap items-center justify-end gap-2" }, We = { class: "flex min-h-0 flex-1 items-center justify-center overflow-auto bg-surface-muted" }, Ge = ["aria-label"], Ke = /*@__PURE__*/ h({
48
+ class: "border-b border-warning/30 bg-warning/10 px-4 py-2 text-xs text-warning-strong"
49
+ }, Be = { class: "flex min-h-12 flex-wrap items-center gap-x-3 gap-y-1.5 border-b border-border bg-surface-muted px-4 py-2" }, Ve = { class: "min-w-0 truncate font-mono text-xs font-medium text-heading" }, He = { class: "inline-flex items-center gap-1 rounded-6 border border-border bg-surface px-1.5 text-xs leading-5 font-medium text-muted" }, Ue = { class: "ml-auto flex min-w-0 flex-wrap items-center justify-end gap-2" }, We = { class: "flex min-h-0 flex-1 items-center justify-center overflow-auto bg-background" }, Ge = ["aria-label"], Ke = /*@__PURE__*/ h({
50
50
  __name: "AcFileEditor",
51
51
  props: /*@__PURE__*/ g({
52
52
  loading: {
@@ -346,7 +346,7 @@ var ye = ["aria-busy"], be = {
346
346
  }), te(() => {
347
347
  clearTimeout(Tt), clearTimeout($);
348
348
  }), g({ focus: At }), (c, g) => (y(), d("div", {
349
- class: "@container min-w-0 overflow-hidden rounded-10 border border-border bg-surface shadow-xs",
349
+ class: "@container min-w-0 overflow-hidden rounded-10 border border-border bg-surface",
350
350
  style: ee({ height: h.height }),
351
351
  "aria-busy": h.loading || void 0,
352
352
  "data-ac-ds": "",
@@ -386,7 +386,7 @@ var ye = ["aria-busy"], be = {
386
386
  key: 0,
387
387
  ref_key: "searchWrap",
388
388
  ref: nt,
389
- class: "border-b border-border-light p-2",
389
+ class: "border-b border-border p-2",
390
390
  onKeydown: bt
391
391
  }, [m(n, {
392
392
  modelValue: k.value,
@@ -399,7 +399,7 @@ var ye = ["aria-busy"], be = {
399
399
  role: "listbox",
400
400
  "aria-label": h.label,
401
401
  "aria-controls": tt,
402
- class: "ac-scrollbar flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto p-1.5"
402
+ class: "ac-scrollbar flex min-h-0 flex-1 flex-col gap-1 overflow-y-auto p-2"
403
403
  }, [(y(!0), d(s, null, ne(z.value, (e, t) => (y(), d("li", {
404
404
  key: e.name,
405
405
  ref_for: !0,
@@ -408,18 +408,18 @@ var ye = ["aria-busy"], be = {
408
408
  "aria-selected": e.name === O.value,
409
409
  tabindex: e.name === B.value ? 0 : -1,
410
410
  title: e.name,
411
- class: v(["flex min-h-9 shrink-0 cursor-pointer items-center gap-2.5 rounded-6 px-2.5 py-1.5 transition-[background-color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring", e.name === O.value ? "bg-surface text-heading shadow-xs ring-1 ring-border" : "text-body hover:bg-surface-sunken"]),
411
+ class: v(["group flex min-h-9 shrink-0 cursor-pointer items-center gap-2.5 rounded-10 border px-3 py-1.5 transition-[color,background-color,border-color,box-shadow] duration-200 outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", e.name === O.value ? "border-primary/35 bg-primary/10 text-heading shadow-xs" : "border-transparent text-heading/80 hover:border-border hover:bg-accent-hover hover:text-heading"]),
412
412
  onClick: (t) => Z(e.name, !0),
413
413
  onKeydown: (e) => yt(e, t)
414
414
  }, [
415
415
  (y(), l(ie(ft(e)), {
416
- class: v(["size-4 shrink-0", e.name === O.value ? "text-primary" : "text-muted"]),
416
+ class: v(["size-4 shrink-0", e.name === O.value ? "text-primary" : "text-muted group-hover:text-heading"]),
417
417
  "aria-hidden": "true"
418
418
  }, null, 8, ["class"])),
419
419
  f("span", ke, [f("span", Ae, x(e.name), 1), Y(e) ? (y(), d("span", je, x(Y(e)), 1)) : u("", !0)]),
420
420
  J(e).length ? (y(), d("span", {
421
421
  key: 0,
422
- class: v(["inline-flex shrink-0 items-center gap-1 text-xs font-medium tabular-nums", dt(e) ? "text-red-40" : "text-yellow-30"])
422
+ class: v(["inline-flex shrink-0 items-center gap-1 text-xs font-medium tabular-nums", dt(e) ? "text-danger-strong" : "text-warning-strong"])
423
423
  }, [(y(), l(ie(dt(e) ? S(se) : S(_e)), {
424
424
  class: "size-3.5",
425
425
  "aria-hidden": "true"
@@ -515,24 +515,24 @@ var ye = ["aria-busy"], be = {
515
515
  h.downloadable && !U.value ? (y(), d("button", {
516
516
  key: 1,
517
517
  type: "button",
518
- class: "inline-flex size-7 shrink-0 cursor-pointer items-center justify-center rounded-6 text-muted transition hover:bg-surface-sunken hover:text-heading focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring",
518
+ class: "inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-8 text-muted transition-colors duration-200 hover:bg-surface-sunken hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
519
519
  "aria-label": `Download ${V.value.file.name}`,
520
520
  title: "Download",
521
521
  "data-testid": "ac-file-editor-download",
522
522
  onClick: Ct
523
523
  }, [m(S(ce), {
524
- class: "size-3.5",
524
+ class: "size-4",
525
525
  "aria-hidden": "true"
526
526
  })], 8, Ge)) : u("", !0),
527
527
  V.value.file.secret ? (y(), d("button", {
528
528
  key: 2,
529
529
  type: "button",
530
- class: "inline-flex size-7 shrink-0 cursor-pointer items-center justify-center rounded-6 text-muted transition hover:bg-surface-sunken hover:text-heading focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring",
530
+ class: "inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-8 text-muted transition-colors duration-200 hover:bg-surface-sunken hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
531
531
  "aria-label": "Hide value",
532
532
  title: "Hide value",
533
533
  onClick: g[3] ||= (e) => wt(!1)
534
534
  }, [m(S(ue), {
535
- class: "size-3.5",
535
+ class: "size-4",
536
536
  "aria-hidden": "true"
537
537
  })])) : u("", !0)
538
538
  ]),
@@ -15,7 +15,7 @@ export interface Props {
15
15
  multiple?: boolean;
16
16
  /** Largest allowed file in bytes, e.g. `1024 * 1024` for 1 MB. `0` means no limit. */
17
17
  maxSize?: number;
18
- /** Single-line field with a "Choose file" button instead of the drop zone. For tight forms. */
18
+ /** Single-line 40px field with a "Choose file" button instead of the drop zone. For tight forms. */
19
19
  small?: boolean;
20
20
  /** Line under the prompt. Defaults to the allowed types and size, e.g. ".yaml, .yml · up to 1 MB". */
21
21
  description?: string;
@@ -27,7 +27,7 @@ export interface Props {
27
27
  disabled?: boolean;
28
28
  /** Error text under the field, e.g. from server-side validation. Type and size errors are shown automatically. */
29
29
  errorMsg?: string;
30
- /** Helper text under the field (hidden while there's an error). */
30
+ /** Help text between the label and the field. */
31
31
  hint?: string;
32
32
  }
33
33
  type __VLS_Props = Props;
@@ -1,31 +1,31 @@
1
- import { Fragment as e, computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, createTextVNode as a, createVNode as o, defineComponent as s, mergeModels as c, nextTick as ee, normalizeClass as l, openBlock as u, ref as d, renderList as f, toDisplayString as p, unref as m, useId as h, useModel as g, withModifiers as _ } from "vue";
1
+ import { Fragment as e, computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, createTextVNode as a, createVNode as o, defineComponent as s, mergeModels as c, nextTick as l, normalizeClass as u, openBlock as d, ref as f, renderList as ee, toDisplayString as p, unref as m, useId as h, useModel as g, withModifiers as _ } from "vue";
2
2
  import { CircleAlert as v, FileText as y, Upload as b, X as x } from "@lucide/vue";
3
3
  //#region src/lib/components/AcFileUpload.vue?vue&type=script&setup=true&lang.ts
4
- var S = ["id"], te = {
4
+ var te = ["id"], ne = {
5
5
  key: 0,
6
6
  class: "text-danger",
7
7
  "aria-hidden": "true"
8
- }, ne = [
8
+ }, re = ["id"], S = [
9
9
  "id",
10
10
  "name",
11
11
  "accept",
12
12
  "multiple",
13
13
  "disabled"
14
- ], re = [
14
+ ], ie = [
15
15
  "disabled",
16
16
  "aria-describedby",
17
17
  "aria-label"
18
- ], ie = ["title"], ae = ["aria-label"], C = { class: "pointer-events-none text-base text-heading" }, w = { class: "font-medium" }, oe = {
18
+ ], ae = ["title"], C = ["aria-label"], oe = { class: "pointer-events-none text-base text-heading" }, w = { class: "font-medium" }, T = {
19
19
  key: 0,
20
20
  class: "text-muted"
21
- }, T = [
21
+ }, E = [
22
22
  "disabled",
23
23
  "aria-describedby",
24
24
  "aria-label"
25
- ], E = {
25
+ ], D = {
26
26
  key: 0,
27
27
  class: "pointer-events-none -mt-1 text-xs text-muted"
28
- }, D = ["id"], O = ["id"], se = ["aria-label"], ce = ["title"], le = { class: "shrink-0 text-xs text-muted tabular-nums" }, ue = [
28
+ }, O = ["id"], se = ["aria-label"], ce = ["title"], le = { class: "shrink-0 text-xs text-muted tabular-nums" }, ue = [
29
29
  "aria-label",
30
30
  "disabled",
31
31
  "onClick"
@@ -68,10 +68,10 @@ var S = ["id"], te = {
68
68
  "reject"
69
69
  ], ["update:modelValue"]),
70
70
  setup(s, { expose: c, emit: k }) {
71
- let A = s, j = g(s, "modelValue"), M = k, N = h(), P = d(null), F = d(null), I = d(null), L = d(0), R = d([]), z = d(""), B = t(() => L.value > 0), V = t(() => A.accept.split(",").map((e) => e.trim().toLowerCase()).filter(Boolean)), fe = t(() => {
71
+ let A = s, j = g(s, "modelValue"), M = k, N = h(), P = f(null), F = f(null), I = f(null), L = f(0), R = f([]), z = f(""), B = t(() => L.value > 0), V = t(() => A.accept.split(",").map((e) => e.trim().toLowerCase()).filter(Boolean)), fe = t(() => {
72
72
  let e = [];
73
73
  return V.value.length && e.push(V.value.join(", ")), A.maxSize && e.push(`up to ${q(A.maxSize)}`), e.join(" · ");
74
- }), H = t(() => A.description || fe.value), U = t(() => R.value.map((e) => e.message).join(" ")), W = t(() => A.errorMsg || U.value), G = t(() => W.value || A.hint ? `${N}-msg` : void 0), K = t(() => j.value.length ? j.value.length === 1 ? j.value[0].name : `${j.value.length} files` : "");
74
+ }), H = t(() => A.description || fe.value), U = t(() => R.value.map((e) => e.message).join(" ")), W = t(() => A.errorMsg || U.value), G = t(() => [A.hint && `${N}-hint`, W.value && `${N}-msg`].filter(Boolean).join(" ") || void 0), K = t(() => j.value.length ? j.value.length === 1 ? j.value[0].name : `${j.value.length} files` : "");
75
75
  function q(e) {
76
76
  if (e < 1024) return `${e} B`;
77
77
  let t = [
@@ -131,7 +131,7 @@ var S = ["id"], te = {
131
131
  async function ge(e) {
132
132
  let t = j.value[e];
133
133
  if (!t || A.disabled) return;
134
- j.value = j.value.filter((t, n) => n !== e), R.value = [], M("remove", t), z.value = `${t.name} removed.`, await ee();
134
+ j.value = j.value.filter((t, n) => n !== e), R.value = [], M("remove", t), z.value = `${t.name} removed.`, await l();
135
135
  let n = I.value?.querySelectorAll("button");
136
136
  (n?.[Math.min(e, n.length - 1)] ?? F.value)?.focus();
137
137
  }
@@ -139,16 +139,21 @@ var S = ["id"], te = {
139
139
  let e = [...j.value];
140
140
  j.value = [], R.value = [], e.forEach((e) => M("remove", e)), z.value = "File removed.", F.value?.focus();
141
141
  }
142
- return c({ open: Y }), (t, c) => (u(), r("div", {
143
- class: l(["w-full", s.disabled && "opacity-60"]),
142
+ return c({ open: Y }), (t, c) => (d(), r("div", {
143
+ class: u(["w-full", s.disabled && "opacity-50"]),
144
144
  "data-ac-ds": "",
145
145
  "data-testid": "ac-file-upload"
146
146
  }, [
147
- s.label ? (u(), r("p", {
147
+ s.label ? (d(), r("p", {
148
148
  key: 0,
149
149
  id: `${m(N)}-label`,
150
- class: "mb-1.5 text-xs font-medium text-label"
151
- }, [a(p(s.label), 1), s.required ? (u(), r("span", te, " *")) : n("", !0)], 8, S)) : n("", !0),
150
+ class: "mb-2 flex items-center gap-1 text-base font-medium text-heading"
151
+ }, [i("span", null, p(s.label), 1), s.required ? (d(), r("span", ne, "*")) : n("", !0)], 8, te)) : n("", !0),
152
+ s.hint ? (d(), r("p", {
153
+ key: 1,
154
+ id: `${m(N)}-hint`,
155
+ class: "mb-2 text-base text-muted"
156
+ }, p(s.hint), 9, re)) : n("", !0),
152
157
  i("input", {
153
158
  id: `${m(N)}-input`,
154
159
  ref_key: "input",
@@ -162,10 +167,10 @@ var S = ["id"], te = {
162
167
  multiple: s.multiple,
163
168
  disabled: s.disabled,
164
169
  onChange: he
165
- }, null, 40, ne),
166
- s.small ? (u(), r("div", {
167
- key: 1,
168
- class: l(["flex h-9 w-full items-center rounded-6 border bg-surface shadow-xs transition-[border-color,box-shadow] duration-150", [W.value ? "border-red-60" : B.value ? "border-primary shadow-[0_0_0_3px_var(--color-ring)]" : "border-border hover:border-border-dark", s.disabled && "bg-surface-muted"]]),
170
+ }, null, 40, S),
171
+ s.small ? (d(), r("div", {
172
+ key: 2,
173
+ class: u(["flex h-10 w-full items-center rounded-10 border transition-[border-color,box-shadow,background-color] duration-200", [s.disabled ? "cursor-not-allowed bg-surface-muted" : "bg-background", W.value ? "border-danger/60" : B.value ? "focus-ring" : ["border-border focus-within:focus-ring", !s.disabled && "hover:border-accent-active"]]]),
169
174
  onDragenter: X,
170
175
  onDragover: Z,
171
176
  onDragleave: Q,
@@ -175,32 +180,32 @@ var S = ["id"], te = {
175
180
  ref_key: "browseButton",
176
181
  ref: F,
177
182
  type: "button",
178
- class: "ml-1 inline-flex h-7 shrink-0 cursor-pointer items-center gap-1.5 rounded-4 border border-border bg-surface-muted px-2.5 text-xs font-medium text-heading transition hover:bg-surface-sunken focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring disabled:cursor-not-allowed",
183
+ class: "ml-1 inline-flex h-8 shrink-0 cursor-pointer items-center gap-1.5 rounded-8 border border-border bg-surface px-3 text-base font-medium text-heading transition-colors duration-200 hover:bg-surface-sunken/70 focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none disabled:cursor-not-allowed disabled:hover:bg-surface",
179
184
  disabled: s.disabled,
180
185
  "aria-describedby": G.value,
181
186
  "aria-label": s.label ? `${s.multiple ? "Choose files" : "Choose file"} for ${s.label}` : void 0,
182
187
  onClick: Y
183
188
  }, [o(m(b), {
184
- class: "size-3.5",
189
+ class: "size-4 text-muted",
185
190
  "aria-hidden": "true"
186
- }), a(" " + p(s.multiple ? "Choose files" : "Choose file"), 1)], 8, re),
191
+ }), a(" " + p(s.multiple ? "Choose files" : "Choose file"), 1)], 8, ie),
187
192
  i("span", {
188
- class: l(["min-w-0 flex-1 truncate px-2.5 text-base", K.value ? "text-heading" : "text-muted"]),
193
+ class: u(["min-w-0 flex-1 truncate px-3 text-base", K.value ? "text-heading" : "text-muted/80"]),
189
194
  title: j.value.map((e) => e.name).join(", ")
190
- }, p(K.value || (s.multiple ? "No files chosen" : "No file chosen")), 11, ie),
191
- j.value.length && !s.disabled ? (u(), r("button", {
195
+ }, p(K.value || (s.multiple ? "No files chosen" : "No file chosen")), 11, ae),
196
+ j.value.length && !s.disabled ? (d(), r("button", {
192
197
  key: 0,
193
198
  type: "button",
194
- class: "mr-1.5 inline-flex size-6 shrink-0 cursor-pointer items-center justify-center rounded-4 text-muted transition hover:bg-surface-sunken hover:text-heading focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring",
199
+ class: "mr-1.5 inline-flex size-7 shrink-0 cursor-pointer items-center justify-center rounded-8 text-muted transition-colors hover:bg-surface-sunken hover:text-heading focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none",
195
200
  "aria-label": j.value.length === 1 ? `Remove ${j.value[0].name}` : "Remove all files",
196
201
  onClick: _e
197
202
  }, [o(m(x), {
198
- class: "size-3.5",
203
+ class: "size-4",
199
204
  "aria-hidden": "true"
200
- })], 8, ae)) : n("", !0)
201
- ], 34)) : (u(), r("div", {
202
- key: 2,
203
- class: l(["flex flex-col items-center justify-center gap-3 rounded-10 border border-dashed px-6 py-7 text-center transition-colors duration-150", [s.disabled ? "cursor-not-allowed border-border bg-surface-muted" : "cursor-pointer", !s.disabled && (B.value ? "border-primary bg-primary-97" : W.value ? "border-red-60 bg-surface hover:bg-surface-muted" : "border-border-dark bg-surface hover:bg-surface-muted")]]),
205
+ })], 8, C)) : n("", !0)
206
+ ], 34)) : (d(), r("div", {
207
+ key: 3,
208
+ class: u(["flex flex-col items-center justify-center gap-3 rounded-10 border-2 border-dashed px-6 py-7 text-center transition-colors duration-200", [s.disabled ? "cursor-not-allowed border-border bg-surface-muted" : "cursor-pointer", !s.disabled && (B.value ? "border-primary bg-primary/5" : W.value ? "border-danger/50 bg-danger/5" : "border-border bg-surface hover:border-primary/50 hover:bg-primary/3")]]),
204
209
  onClick: _(Y, ["self"]),
205
210
  onDragenter: X,
206
211
  onDragover: Z,
@@ -208,43 +213,40 @@ var S = ["id"], te = {
208
213
  onDrop: $
209
214
  }, [
210
215
  i("span", {
211
- class: l(["pointer-events-none inline-flex size-10 items-center justify-center rounded-10 border shadow-xs transition-colors", B.value ? "border-primary-80 bg-surface text-primary" : "border-border bg-surface text-muted"]),
216
+ class: u(["pointer-events-none inline-flex size-10 items-center justify-center rounded-10 transition-colors duration-200", B.value ? "bg-primary/10 text-primary-strong" : "bg-surface-sunken text-muted"]),
212
217
  "aria-hidden": "true"
213
- }, [o(m(b), { class: "size-4.5" })], 2),
214
- i("p", C, [i("span", w, p(B.value ? "Drop to upload" : s.multiple ? "Drag and drop files here" : "Drag and drop a file here"), 1), B.value ? n("", !0) : (u(), r("span", oe, " or"))]),
218
+ }, [o(m(b), { class: "size-5" })], 2),
219
+ i("p", oe, [i("span", w, p(B.value ? "Drop to upload" : s.multiple ? "Drag and drop files here" : "Drag and drop a file here"), 1), B.value ? n("", !0) : (d(), r("span", T, " or"))]),
215
220
  i("button", {
216
221
  ref_key: "browseButton",
217
222
  ref: F,
218
223
  type: "button",
219
- class: "inline-flex h-8 cursor-pointer items-center gap-2 rounded-6 border border-border bg-surface px-3 text-base font-medium text-heading shadow-xs transition hover:border-border-dark hover:bg-surface-muted focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring disabled:cursor-not-allowed",
224
+ class: "inline-flex h-8 cursor-pointer items-center gap-2 rounded-10 border border-border bg-surface px-3 text-base font-medium text-heading transition-[color,background-color,border-color,box-shadow,transform] duration-200 hover:bg-surface-sunken/70 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-surface focus-visible:outline-none active:translate-y-px disabled:cursor-not-allowed disabled:hover:bg-surface",
220
225
  disabled: s.disabled,
221
226
  "aria-describedby": G.value,
222
227
  "aria-label": s.label ? `Browse files for ${s.label}` : void 0,
223
228
  onClick: Y
224
- }, " Browse files ", 8, T),
225
- H.value ? (u(), r("p", E, p(H.value), 1)) : n("", !0)
229
+ }, " Browse files ", 8, E),
230
+ H.value ? (d(), r("p", D, p(H.value), 1)) : n("", !0)
226
231
  ], 34)),
227
- W.value ? (u(), r("p", {
228
- key: 3,
232
+ W.value ? (d(), r("p", {
233
+ key: 4,
229
234
  id: `${m(N)}-msg`,
230
- class: "mt-1.5 flex items-start gap-1 text-xs text-red-30"
235
+ class: "mt-1.5 flex items-start gap-1.5 text-base text-danger-strong",
236
+ role: "alert"
231
237
  }, [o(m(v), {
232
- class: "mt-px size-3.5 shrink-0",
238
+ class: "mt-0.5 size-4 shrink-0",
233
239
  "aria-hidden": "true"
234
- }), a(" " + p(W.value), 1)], 8, D)) : s.hint ? (u(), r("p", {
235
- key: 4,
236
- id: `${m(N)}-msg`,
237
- class: "mt-1.5 text-xs text-muted"
238
- }, p(s.hint), 9, O)) : n("", !0),
239
- !s.small && j.value.length ? (u(), r("ul", {
240
+ }), a(" " + p(W.value), 1)], 8, O)) : n("", !0),
241
+ !s.small && j.value.length ? (d(), r("ul", {
240
242
  key: 5,
241
243
  ref_key: "list",
242
244
  ref: I,
243
- class: "mt-3 divide-y divide-border-light overflow-hidden rounded-8 border border-border bg-surface",
245
+ class: "mt-3 divide-y divide-border overflow-hidden rounded-10 border border-border bg-surface",
244
246
  "aria-label": s.label ? `${s.label} files` : "Chosen files"
245
- }, [(u(!0), r(e, null, f(j.value, (e, t) => (u(), r("li", {
247
+ }, [(d(!0), r(e, null, ee(j.value, (e, t) => (d(), r("li", {
246
248
  key: `${e.name}-${e.size}-${e.lastModified}`,
247
- class: "flex items-center gap-3 py-2 pr-2 pl-3"
249
+ class: "flex items-center gap-3 py-2 pr-2 pl-4"
248
250
  }, [
249
251
  o(m(y), {
250
252
  class: "size-4 shrink-0 text-muted",
@@ -257,12 +259,12 @@ var S = ["id"], te = {
257
259
  i("span", le, p(q(e.size)), 1),
258
260
  i("button", {
259
261
  type: "button",
260
- class: "inline-flex size-6 shrink-0 cursor-pointer items-center justify-center rounded-4 text-muted transition hover:bg-surface-sunken hover:text-heading focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring disabled:cursor-not-allowed",
262
+ class: "inline-flex size-7 shrink-0 cursor-pointer items-center justify-center rounded-8 text-muted transition-colors hover:bg-surface-sunken hover:text-heading focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring focus-visible:outline-none disabled:cursor-not-allowed",
261
263
  "aria-label": `Remove ${e.name}`,
262
264
  disabled: s.disabled,
263
265
  onClick: (e) => ge(t)
264
266
  }, [o(m(x), {
265
- class: "size-3.5",
267
+ class: "size-4",
266
268
  "aria-hidden": "true"
267
269
  })], 8, ue)
268
270
  ]))), 128))], 8, se)) : n("", !0),
@@ -4,7 +4,7 @@ import { Fragment as n, createElementBlock as r, createElementVNode as i, define
4
4
  var d = {
5
5
  role: "radiogroup",
6
6
  "aria-label": "Text size",
7
- class: "inline-flex items-center gap-0.5 rounded-8 border border-border bg-surface-muted p-0.5",
7
+ class: "inline-flex items-center gap-1 rounded-10 bg-surface-sunken p-1",
8
8
  "data-ac-ds": "",
9
9
  "data-testid": "ac-font-scale"
10
10
  }, f = [
@@ -52,7 +52,7 @@ var d = {
52
52
  "aria-checked": u(y) === e.value,
53
53
  "aria-label": a.display === "icons" ? `${e.label} text` : void 0,
54
54
  title: a.display === "icons" ? `${e.label} text` : void 0,
55
- class: o(["inline-flex h-6.5 cursor-pointer items-center justify-center gap-1.5 rounded-6 text-xs font-medium transition focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring", [a.display === "icons" ? "w-7" : "px-2.5", u(y) === e.value ? "bg-surface text-heading shadow-sm ring-1 ring-border" : "text-muted hover:text-heading"]]),
55
+ class: o(["inline-flex h-7 cursor-pointer items-center justify-center gap-1.5 rounded-8 text-base font-medium transition-[background-color,color,box-shadow] duration-200 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset focus-visible:outline-none", [a.display === "icons" ? "w-7" : "px-3", u(y) === e.value ? "bg-surface text-heading shadow-sm" : "text-muted hover:text-heading"]]),
56
56
  onClick: (t) => x(e.value)
57
57
  }, [a.display === "icons" ? (s(), r("span", {
58
58
  key: 0,
@@ -0,0 +1,5 @@
1
+ import e from "./AcFooter.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/lib/components/AcFooter.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };