@ac-design/design-system 0.0.0-stage → 1.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 (247) hide show
  1. package/README.md +160 -2
  2. package/dist/lib/compat.css +4441 -0
  3. package/dist/lib/components/AcAccordion.js +5 -0
  4. package/dist/lib/components/AcAccordion.vue.d.ts +35 -0
  5. package/dist/lib/components/AcAccordion.vue_vue_type_script_setup_true_lang.js +61 -0
  6. package/dist/lib/components/AcAccordionItem.js +5 -0
  7. package/dist/lib/components/AcAccordionItem.vue.d.ts +49 -0
  8. package/dist/lib/components/AcAccordionItem.vue_vue_type_script_setup_true_lang.js +81 -0
  9. package/dist/lib/components/AcAlert.js +5 -0
  10. package/dist/lib/components/AcAlert.vue.d.ts +52 -0
  11. package/dist/lib/components/AcAlert.vue_vue_type_script_setup_true_lang.js +121 -0
  12. package/dist/lib/components/AcAppSwitcher.js +5 -0
  13. package/dist/lib/components/AcAppSwitcher.vue.d.ts +83 -0
  14. package/dist/lib/components/AcAppSwitcher.vue_vue_type_script_setup_true_lang.js +303 -0
  15. package/dist/lib/components/AcAvatar.js +5 -0
  16. package/dist/lib/components/AcAvatar.vue.d.ts +27 -0
  17. package/dist/lib/components/AcAvatar.vue_vue_type_script_setup_true_lang.js +116 -0
  18. package/dist/lib/components/AcBadge.js +5 -0
  19. package/dist/lib/components/AcBadge.vue.d.ts +32 -0
  20. package/dist/lib/components/AcBadge.vue_vue_type_script_setup_true_lang.js +88 -0
  21. package/dist/lib/components/AcBanner.js +5 -0
  22. package/dist/lib/components/AcBanner.vue.d.ts +57 -0
  23. package/dist/lib/components/AcBanner.vue_vue_type_script_setup_true_lang.js +114 -0
  24. package/dist/lib/components/AcBreadcrumb.js +5 -0
  25. package/dist/lib/components/AcBreadcrumb.vue.d.ts +25 -0
  26. package/dist/lib/components/AcBreadcrumb.vue_vue_type_script_setup_true_lang.js +88 -0
  27. package/dist/lib/components/AcButton.js +5 -0
  28. package/dist/lib/components/AcButton.vue.d.ts +49 -0
  29. package/dist/lib/components/AcButton.vue_vue_type_script_setup_true_lang.js +103 -0
  30. package/dist/lib/components/AcButtons.js +5 -0
  31. package/dist/lib/components/AcButtons.vue.d.ts +31 -0
  32. package/dist/lib/components/AcButtons.vue_vue_type_script_setup_true_lang.js +44 -0
  33. package/dist/lib/components/AcCard.js +5 -0
  34. package/dist/lib/components/AcCard.vue.d.ts +27 -0
  35. package/dist/lib/components/AcCard.vue_vue_type_script_setup_true_lang.js +28 -0
  36. package/dist/lib/components/AcCellValue.js +5 -0
  37. package/dist/lib/components/AcCellValue.vue.d.ts +139 -0
  38. package/dist/lib/components/AcCellValue.vue_vue_type_script_setup_true_lang.js +386 -0
  39. package/dist/lib/components/AcCheckBox.js +5 -0
  40. package/dist/lib/components/AcCheckBox.vue.d.ts +31 -0
  41. package/dist/lib/components/AcCheckBox.vue_vue_type_script_setup_true_lang.js +49 -0
  42. package/dist/lib/components/AcCheckRadio.js +5 -0
  43. package/dist/lib/components/AcCheckRadio.vue.d.ts +35 -0
  44. package/dist/lib/components/AcCheckRadio.vue_vue_type_script_setup_true_lang.js +56 -0
  45. package/dist/lib/components/AcClusterSwitcher.js +5 -0
  46. package/dist/lib/components/AcClusterSwitcher.vue.d.ts +95 -0
  47. package/dist/lib/components/AcClusterSwitcher.vue_vue_type_script_setup_true_lang.js +416 -0
  48. package/dist/lib/components/AcCodeEditor.js +5 -0
  49. package/dist/lib/components/AcCodeEditor.vue.d.ts +88 -0
  50. package/dist/lib/components/AcCodeEditor.vue_vue_type_script_setup_true_lang.js +375 -0
  51. package/dist/lib/components/AcContentHeader.js +5 -0
  52. package/dist/lib/components/AcContentHeader.vue.d.ts +29 -0
  53. package/dist/lib/components/AcContentHeader.vue_vue_type_script_setup_true_lang.js +31 -0
  54. package/dist/lib/components/AcContentLayout.js +5 -0
  55. package/dist/lib/components/AcContentLayout.vue.d.ts +21 -0
  56. package/dist/lib/components/AcContentLayout.vue_vue_type_script_setup_true_lang.js +18 -0
  57. package/dist/lib/components/AcContentTable.js +5 -0
  58. package/dist/lib/components/AcContentTable.vue.d.ts +54 -0
  59. package/dist/lib/components/AcContentTable.vue_vue_type_script_setup_true_lang.js +67 -0
  60. package/dist/lib/components/AcDatePicker.js +5 -0
  61. package/dist/lib/components/AcDatePicker.vue.d.ts +88 -0
  62. package/dist/lib/components/AcDatePicker.vue_vue_type_script_setup_true_lang.js +794 -0
  63. package/dist/lib/components/AcDeleteModal.js +5 -0
  64. package/dist/lib/components/AcDeleteModal.vue.d.ts +51 -0
  65. package/dist/lib/components/AcDeleteModal.vue_vue_type_script_setup_true_lang.js +110 -0
  66. package/dist/lib/components/AcDivider.js +5 -0
  67. package/dist/lib/components/AcDivider.vue.d.ts +25 -0
  68. package/dist/lib/components/AcDivider.vue_vue_type_script_setup_true_lang.js +39 -0
  69. package/dist/lib/components/AcDropdown.js +5 -0
  70. package/dist/lib/components/AcDropdown.vue.d.ts +45 -0
  71. package/dist/lib/components/AcDropdown.vue_vue_type_script_setup_true_lang.js +152 -0
  72. package/dist/lib/components/AcDropdownDivider.js +5 -0
  73. package/dist/lib/components/AcDropdownDivider.vue.d.ts +9 -0
  74. package/dist/lib/components/AcDropdownDivider.vue_vue_type_script_setup_true_lang.js +20 -0
  75. package/dist/lib/components/AcDropdownItem.js +5 -0
  76. package/dist/lib/components/AcDropdownItem.vue.d.ts +50 -0
  77. package/dist/lib/components/AcDropdownItem.vue_vue_type_script_setup_true_lang.js +86 -0
  78. package/dist/lib/components/AcEmptyState.js +5 -0
  79. package/dist/lib/components/AcEmptyState.vue.d.ts +42 -0
  80. package/dist/lib/components/AcEmptyState.vue_vue_type_script_setup_true_lang.js +81 -0
  81. package/dist/lib/components/AcFeatureCard.js +5 -0
  82. package/dist/lib/components/AcFeatureCard.vue.d.ts +84 -0
  83. package/dist/lib/components/AcFeatureCard.vue_vue_type_script_setup_true_lang.js +218 -0
  84. package/dist/lib/components/AcFileEditor.js +5 -0
  85. package/dist/lib/components/AcFileEditor.vue.d.ts +95 -0
  86. package/dist/lib/components/AcFileEditor.vue_vue_type_script_setup_true_lang.js +556 -0
  87. package/dist/lib/components/AcFileUpload.js +5 -0
  88. package/dist/lib/components/AcFileUpload.vue.d.ts +67 -0
  89. package/dist/lib/components/AcFileUpload.vue_vue_type_script_setup_true_lang.js +274 -0
  90. package/dist/lib/components/AcFontScale.js +5 -0
  91. package/dist/lib/components/AcFontScale.vue.d.ts +17 -0
  92. package/dist/lib/components/AcFontScale.vue_vue_type_script_setup_true_lang.js +65 -0
  93. package/dist/lib/components/AcForm.js +5 -0
  94. package/dist/lib/components/AcForm.vue.d.ts +31 -0
  95. package/dist/lib/components/AcForm.vue_vue_type_script_setup_true_lang.js +38 -0
  96. package/dist/lib/components/AcFormArray.js +5 -0
  97. package/dist/lib/components/AcFormArray.vue.d.ts +124 -0
  98. package/dist/lib/components/AcFormArray.vue_vue_type_script_setup_true_lang.js +485 -0
  99. package/dist/lib/components/AcFormFooter.js +5 -0
  100. package/dist/lib/components/AcFormFooter.vue.d.ts +48 -0
  101. package/dist/lib/components/AcFormFooter.vue_vue_type_script_setup_true_lang.js +86 -0
  102. package/dist/lib/components/AcFormSection.js +5 -0
  103. package/dist/lib/components/AcFormSection.vue.d.ts +32 -0
  104. package/dist/lib/components/AcFormSection.vue_vue_type_script_setup_true_lang.js +38 -0
  105. package/dist/lib/components/AcHeader.js +5 -0
  106. package/dist/lib/components/AcHeader.vue.d.ts +46 -0
  107. package/dist/lib/components/AcHeader.vue_vue_type_script_setup_true_lang.js +60 -0
  108. package/dist/lib/components/AcHeaderItem.js +5 -0
  109. package/dist/lib/components/AcHeaderItem.vue.d.ts +13 -0
  110. package/dist/lib/components/AcHeaderItem.vue_vue_type_script_setup_true_lang.js +14 -0
  111. package/dist/lib/components/AcHeaderItems.js +5 -0
  112. package/dist/lib/components/AcHeaderItems.vue.d.ts +13 -0
  113. package/dist/lib/components/AcHeaderItems.vue_vue_type_script_setup_true_lang.js +14 -0
  114. package/dist/lib/components/AcInfoTable.js +5 -0
  115. package/dist/lib/components/AcInfoTable.vue.d.ts +59 -0
  116. package/dist/lib/components/AcInfoTable.vue_vue_type_script_setup_true_lang.js +125 -0
  117. package/dist/lib/components/AcInput.js +5 -0
  118. package/dist/lib/components/AcInput.vue.d.ts +68 -0
  119. package/dist/lib/components/AcInput.vue_vue_type_script_setup_true_lang.js +143 -0
  120. package/dist/lib/components/AcKbd.js +5 -0
  121. package/dist/lib/components/AcKbd.vue.d.ts +25 -0
  122. package/dist/lib/components/AcKbd.vue_vue_type_script_setup_true_lang.js +134 -0
  123. package/dist/lib/components/AcLogo.js +5 -0
  124. package/dist/lib/components/AcLogo.vue.d.ts +18 -0
  125. package/dist/lib/components/AcLogo.vue_vue_type_script_setup_true_lang.js +67 -0
  126. package/dist/lib/components/AcModal.js +5 -0
  127. package/dist/lib/components/AcModal.vue.d.ts +54 -0
  128. package/dist/lib/components/AcModal.vue_vue_type_script_setup_true_lang.js +125 -0
  129. package/dist/lib/components/AcNavbar.js +5 -0
  130. package/dist/lib/components/AcNavbar.vue.d.ts +41 -0
  131. package/dist/lib/components/AcNavbar.vue_vue_type_script_setup_true_lang.js +60 -0
  132. package/dist/lib/components/AcNavbarItem.js +5 -0
  133. package/dist/lib/components/AcNavbarItem.vue.d.ts +44 -0
  134. package/dist/lib/components/AcNavbarItem.vue_vue_type_script_setup_true_lang.js +65 -0
  135. package/dist/lib/components/AcNotificationMenu.js +5 -0
  136. package/dist/lib/components/AcNotificationMenu.vue.d.ts +90 -0
  137. package/dist/lib/components/AcNotificationMenu.vue_vue_type_script_setup_true_lang.js +345 -0
  138. package/dist/lib/components/AcPage.js +5 -0
  139. package/dist/lib/components/AcPage.vue.d.ts +25 -0
  140. package/dist/lib/components/AcPage.vue_vue_type_script_setup_true_lang.js +36 -0
  141. package/dist/lib/components/AcPagination.js +5 -0
  142. package/dist/lib/components/AcPagination.vue.d.ts +51 -0
  143. package/dist/lib/components/AcPagination.vue_vue_type_script_setup_true_lang.js +160 -0
  144. package/dist/lib/components/AcPreloader.js +5 -0
  145. package/dist/lib/components/AcPreloader.vue.d.ts +28 -0
  146. package/dist/lib/components/AcPreloader.vue_vue_type_script_setup_true_lang.js +39 -0
  147. package/dist/lib/components/AcProgress.js +5 -0
  148. package/dist/lib/components/AcProgress.vue.d.ts +31 -0
  149. package/dist/lib/components/AcProgress.vue_vue_type_script_setup_true_lang.js +76 -0
  150. package/dist/lib/components/AcResourceCard.js +5 -0
  151. package/dist/lib/components/AcResourceCard.vue.d.ts +106 -0
  152. package/dist/lib/components/AcResourceCard.vue_vue_type_script_setup_true_lang.js +203 -0
  153. package/dist/lib/components/AcSearchBar.js +5 -0
  154. package/dist/lib/components/AcSearchBar.vue.d.ts +41 -0
  155. package/dist/lib/components/AcSearchBar.vue_vue_type_script_setup_true_lang.js +76 -0
  156. package/dist/lib/components/AcSectionContent.js +5 -0
  157. package/dist/lib/components/AcSectionContent.vue.d.ts +55 -0
  158. package/dist/lib/components/AcSectionContent.vue_vue_type_script_setup_true_lang.js +74 -0
  159. package/dist/lib/components/AcSegmentedControl.js +5 -0
  160. package/dist/lib/components/AcSegmentedControl.vue.d.ts +46 -0
  161. package/dist/lib/components/AcSegmentedControl.vue_vue_type_script_setup_true_lang.js +104 -0
  162. package/dist/lib/components/AcSelect.js +5 -0
  163. package/dist/lib/components/AcSelect.vue.d.ts +78 -0
  164. package/dist/lib/components/AcSelect.vue_vue_type_script_setup_true_lang.js +441 -0
  165. package/dist/lib/components/AcSidePanel.js +5 -0
  166. package/dist/lib/components/AcSidePanel.vue.d.ts +57 -0
  167. package/dist/lib/components/AcSidePanel.vue_vue_type_script_setup_true_lang.js +128 -0
  168. package/dist/lib/components/AcSideTabs.js +5 -0
  169. package/dist/lib/components/AcSideTabs.vue.d.ts +93 -0
  170. package/dist/lib/components/AcSideTabs.vue_vue_type_script_setup_true_lang.js +373 -0
  171. package/dist/lib/components/AcSidebar.js +5 -0
  172. package/dist/lib/components/AcSidebar.vue.d.ts +63 -0
  173. package/dist/lib/components/AcSidebar.vue_vue_type_script_setup_true_lang.js +221 -0
  174. package/dist/lib/components/AcSidebarItem.js +5 -0
  175. package/dist/lib/components/AcSidebarItem.vue.d.ts +55 -0
  176. package/dist/lib/components/AcSidebarItem.vue_vue_type_script_setup_true_lang.js +155 -0
  177. package/dist/lib/components/AcSidebarSection.js +5 -0
  178. package/dist/lib/components/AcSidebarSection.vue.d.ts +32 -0
  179. package/dist/lib/components/AcSidebarSection.vue_vue_type_script_setup_true_lang.js +48 -0
  180. package/dist/lib/components/AcSkeleton.js +5 -0
  181. package/dist/lib/components/AcSkeleton.vue.d.ts +27 -0
  182. package/dist/lib/components/AcSkeleton.vue_vue_type_script_setup_true_lang.js +142 -0
  183. package/dist/lib/components/AcSlider.js +5 -0
  184. package/dist/lib/components/AcSlider.vue.d.ts +72 -0
  185. package/dist/lib/components/AcSlider.vue_vue_type_script_setup_true_lang.js +327 -0
  186. package/dist/lib/components/AcSpinner.js +5 -0
  187. package/dist/lib/components/AcSpinner.vue.d.ts +12 -0
  188. package/dist/lib/components/AcSpinner.vue_vue_type_script_setup_true_lang.js +45 -0
  189. package/dist/lib/components/AcStatCard.js +5 -0
  190. package/dist/lib/components/AcStatCard.vue.d.ts +84 -0
  191. package/dist/lib/components/AcStatCard.vue_vue_type_script_setup_true_lang.js +225 -0
  192. package/dist/lib/components/AcStatusBar.js +5 -0
  193. package/dist/lib/components/AcStatusBar.vue.d.ts +66 -0
  194. package/dist/lib/components/AcStatusBar.vue_vue_type_script_setup_true_lang.js +145 -0
  195. package/dist/lib/components/AcSteps.js +5 -0
  196. package/dist/lib/components/AcSteps.vue.d.ts +28 -0
  197. package/dist/lib/components/AcSteps.vue_vue_type_script_setup_true_lang.js +91 -0
  198. package/dist/lib/components/AcSwitch.js +5 -0
  199. package/dist/lib/components/AcSwitch.vue.d.ts +44 -0
  200. package/dist/lib/components/AcSwitch.vue_vue_type_script_setup_true_lang.js +67 -0
  201. package/dist/lib/components/AcTable.js +5 -0
  202. package/dist/lib/components/AcTable.vue.d.ts +98 -0
  203. package/dist/lib/components/AcTable.vue_vue_type_script_setup_true_lang.js +272 -0
  204. package/dist/lib/components/AcTabs.js +5 -0
  205. package/dist/lib/components/AcTabs.vue.d.ts +40 -0
  206. package/dist/lib/components/AcTabs.vue_vue_type_script_setup_true_lang.js +72 -0
  207. package/dist/lib/components/AcTag.js +5 -0
  208. package/dist/lib/components/AcTag.vue.d.ts +41 -0
  209. package/dist/lib/components/AcTag.vue_vue_type_script_setup_true_lang.js +99 -0
  210. package/dist/lib/components/AcTextarea.js +5 -0
  211. package/dist/lib/components/AcTextarea.vue.d.ts +53 -0
  212. package/dist/lib/components/AcTextarea.vue_vue_type_script_setup_true_lang.js +120 -0
  213. package/dist/lib/components/AcThemeMode.js +5 -0
  214. package/dist/lib/components/AcThemeMode.vue.d.ts +17 -0
  215. package/dist/lib/components/AcThemeMode.vue_vue_type_script_setup_true_lang.js +60 -0
  216. package/dist/lib/components/AcToaster.js +5 -0
  217. package/dist/lib/components/AcToaster.vue.d.ts +15 -0
  218. package/dist/lib/components/AcToaster.vue_vue_type_script_setup_true_lang.js +166 -0
  219. package/dist/lib/components/AcTooltip.js +5 -0
  220. package/dist/lib/components/AcTooltip.vue.d.ts +30 -0
  221. package/dist/lib/components/AcTooltip.vue_vue_type_script_setup_true_lang.js +117 -0
  222. package/dist/lib/components/AcUsageCard.js +5 -0
  223. package/dist/lib/components/AcUsageCard.vue.d.ts +85 -0
  224. package/dist/lib/components/AcUsageCard.vue_vue_type_script_setup_true_lang.js +230 -0
  225. package/dist/lib/components/AcUserMenu.js +5 -0
  226. package/dist/lib/components/AcUserMenu.vue.d.ts +77 -0
  227. package/dist/lib/components/AcUserMenu.vue_vue_type_script_setup_true_lang.js +258 -0
  228. package/dist/lib/components/index.d.ts +76 -0
  229. package/dist/lib/components/types.d.ts +16 -0
  230. package/dist/lib/composables/useBrandColor.d.ts +53 -0
  231. package/dist/lib/composables/useBrandColor.js +148 -0
  232. package/dist/lib/composables/useColorMode.d.ts +12 -0
  233. package/dist/lib/composables/useColorMode.js +40 -0
  234. package/dist/lib/composables/useFontScale.d.ts +16 -0
  235. package/dist/lib/composables/useFontScale.js +43 -0
  236. package/dist/lib/composables/useToast.d.ts +68 -0
  237. package/dist/lib/composables/useToast.js +36 -0
  238. package/dist/lib/editor/index.d.ts +4 -0
  239. package/dist/lib/editor/index.js +3 -0
  240. package/dist/lib/editor/theme.d.ts +3 -0
  241. package/dist/lib/editor/theme.js +309 -0
  242. package/dist/lib/editor/validate.d.ts +19 -0
  243. package/dist/lib/editor/validate.js +127 -0
  244. package/dist/lib/index.d.ts +29 -0
  245. package/dist/lib/index.js +78 -0
  246. package/dist/lib/theme.css +556 -0
  247. package/package.json +82 -4
@@ -0,0 +1,99 @@
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, normalizeClass as c, openBlock as l, renderSlot as u, toDisplayString as d, unref as f } from "vue";
2
+ import { X as p } from "@lucide/vue";
3
+ //#region src/lib/components/AcTag.vue?vue&type=script&setup=true&lang.ts
4
+ var m = {
5
+ key: 0,
6
+ class: "inline-flex shrink-0 [&_svg]:size-3.5",
7
+ "aria-hidden": "true"
8
+ }, h = { class: "truncate" }, g = { class: "truncate" }, _ = {
9
+ key: 0,
10
+ class: "inline-flex shrink-0 [&_svg]:size-3.5",
11
+ "aria-hidden": "true"
12
+ }, v = { class: "truncate" }, y = ["aria-label"], b = /*@__PURE__*/ s({
13
+ __name: "AcTag",
14
+ props: {
15
+ label: { default: "" },
16
+ color: { default: "neutral" },
17
+ rounded: {
18
+ type: Boolean,
19
+ default: !1
20
+ },
21
+ removable: {
22
+ type: Boolean,
23
+ default: !1
24
+ },
25
+ keyLabel: { default: "" },
26
+ valueLabel: { default: "" }
27
+ },
28
+ emits: ["remove"],
29
+ setup(s, { emit: b }) {
30
+ let x = s, S = b, C = {
31
+ neutral: {
32
+ box: "bg-surface text-body border-border",
33
+ value: "bg-surface text-heading",
34
+ divider: "border-border"
35
+ },
36
+ primary: {
37
+ box: "bg-primary-97 text-primary-20 border-primary-80",
38
+ value: "bg-primary-95 text-primary-10",
39
+ divider: "border-primary-80"
40
+ },
41
+ info: {
42
+ box: "bg-blue-97 text-blue-20 border-blue-80",
43
+ value: "bg-blue-95 text-blue-10",
44
+ divider: "border-blue-80"
45
+ },
46
+ success: {
47
+ box: "bg-green-97 text-green-20 border-green-80",
48
+ value: "bg-green-95 text-green-10",
49
+ divider: "border-green-80"
50
+ },
51
+ warning: {
52
+ box: "bg-yellow-97 text-yellow-20 border-yellow-80",
53
+ value: "bg-yellow-95 text-yellow-10",
54
+ divider: "border-yellow-80"
55
+ },
56
+ danger: {
57
+ box: "bg-red-97 text-red-20 border-red-80",
58
+ value: "bg-red-95 text-red-10",
59
+ divider: "border-red-80"
60
+ }
61
+ }, w = t(() => !!x.keyLabel), T = t(() => C[x.color]), E = t(() => w.value ? `${x.keyLabel}=${x.valueLabel}` : x.label), D = t(() => w.value ? ["bg-surface text-label", x.color === "neutral" ? "border-border" : T.value.divider] : T.value.box);
62
+ function O() {
63
+ S("remove");
64
+ }
65
+ return (t, b) => (l(), r("span", {
66
+ class: c(["inline-flex h-6 max-w-full items-stretch overflow-hidden border text-xs leading-none whitespace-nowrap", [
67
+ D.value,
68
+ s.rounded ? "rounded-50" : "rounded-6",
69
+ w.value && "font-mono text-[length:calc(11.5px*var(--ac-scale))]"
70
+ ]]),
71
+ "data-ac-ds": "",
72
+ "data-testid": "ac-tag"
73
+ }, [w.value ? (l(), r(e, { key: 0 }, [
74
+ i("span", { class: c(["inline-flex min-w-0 items-center gap-1.5 bg-surface-muted pr-1.5 text-label", s.rounded ? "pl-2.5" : "pl-2"]) }, [t.$slots.icon ? (l(), r("span", m, [u(t.$slots, "icon")])) : n("", !0), i("span", h, d(s.keyLabel), 1)], 2),
75
+ b[0] ||= i("span", { class: "sr-only" }, "=", -1),
76
+ i("span", { class: c(["inline-flex min-w-0 shrink-[0.25] items-center border-l pl-1.5", [
77
+ T.value.value,
78
+ T.value.divider,
79
+ !s.removable && (s.rounded ? "pr-2.5" : "pr-2")
80
+ ]]) }, [i("span", g, [u(t.$slots, "default", {}, () => [a(d(s.valueLabel), 1)])])], 2)
81
+ ], 64)) : (l(), r("span", {
82
+ key: 1,
83
+ class: c(["inline-flex min-w-0 items-center gap-1.5", [s.rounded ? "pl-2.5" : "pl-2", !s.removable && (s.rounded ? "pr-2.5" : "pr-2")]])
84
+ }, [t.$slots.icon ? (l(), r("span", _, [u(t.$slots, "icon")])) : n("", !0), i("span", v, [u(t.$slots, "default", {}, () => [a(d(s.label), 1)])])], 2)), s.removable ? (l(), r("span", {
85
+ key: 2,
86
+ class: c(["inline-flex shrink-0 items-center px-0.5", w.value && T.value.value])
87
+ }, [i("button", {
88
+ type: "button",
89
+ class: c(["inline-flex size-4.5 cursor-pointer items-center justify-center opacity-60 transition hover:bg-current/10 hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", s.rounded ? "rounded-full" : "rounded-4"]),
90
+ "aria-label": E.value ? `Remove ${E.value}` : "Remove",
91
+ onClick: O
92
+ }, [o(f(p), {
93
+ class: "size-3",
94
+ "aria-hidden": "true"
95
+ })], 10, y)], 2)) : n("", !0)], 2));
96
+ }
97
+ });
98
+ //#endregion
99
+ export { b as default };
@@ -0,0 +1,5 @@
1
+ import e from "./AcTextarea.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/lib/components/AcTextarea.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,53 @@
1
+ export interface Props {
2
+ /** Floating label. It rests on the first line and rises on focus or when filled. */
3
+ label: string;
4
+ /** Native `name` attribute. */
5
+ name?: string;
6
+ /** Visible height in lines. With `autoResize` it's the starting (minimum) height. */
7
+ rows?: number;
8
+ /** Grows the field with its content instead of showing a scrollbar. */
9
+ autoResize?: boolean;
10
+ /** With `autoResize`, the height in lines after which the field scrolls. `0` means no limit. */
11
+ maxRows?: number;
12
+ /** Maximum number of characters. Shows a live `12 / 500` count under the field. */
13
+ maxlength?: number;
14
+ /** Monospace text, for certificates, keys, YAML and other pasted config. */
15
+ mono?: boolean;
16
+ /** Marks the field required and adds a red asterisk. */
17
+ required?: boolean;
18
+ /** Disables the field. */
19
+ disabled?: boolean;
20
+ /** Read-only field with a gray background. */
21
+ readonly?: boolean;
22
+ /** Error text under the field. Turns the border and label red and sets `aria-invalid`. */
23
+ errorMsg?: string;
24
+ /** Helper text under the field (hidden while `errorMsg` is set). */
25
+ hint?: string;
26
+ }
27
+ type __VLS_Props = Props;
28
+ type __VLS_ModelProps = {
29
+ modelValue?: string;
30
+ };
31
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
32
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
33
+ /** Moves focus to the textarea. */
34
+ focus: () => void | undefined;
35
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
36
+ "update:modelValue": (value: string) => any;
37
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
38
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
39
+ }>, {
40
+ required: boolean;
41
+ disabled: boolean;
42
+ name: string;
43
+ rows: number;
44
+ hint: string;
45
+ readonly: boolean;
46
+ errorMsg: string;
47
+ mono: boolean;
48
+ maxlength: number;
49
+ autoResize: boolean;
50
+ maxRows: number;
51
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
52
+ declare const _default: typeof __VLS_export;
53
+ export default _default;
@@ -0,0 +1,120 @@
1
+ import { computed as e, createCommentVNode as t, createElementBlock as n, createElementVNode as r, createTextVNode as i, createVNode as a, defineComponent as o, mergeModels as s, nextTick as c, normalizeClass as l, onMounted as u, openBlock as d, ref as f, toDisplayString as p, unref as m, useId as h, useModel as g, vModelText as _, watch as v, withDirectives as y } from "vue";
2
+ import { CircleAlert as b } from "@lucide/vue";
3
+ //#region src/lib/components/AcTextarea.vue?vue&type=script&setup=true&lang.ts
4
+ var x = { class: "relative" }, S = [
5
+ "id",
6
+ "name",
7
+ "rows",
8
+ "maxlength",
9
+ "disabled",
10
+ "readonly",
11
+ "required",
12
+ "aria-invalid",
13
+ "aria-describedby"
14
+ ], C = ["for"], w = {
15
+ key: 0,
16
+ class: "text-danger",
17
+ "aria-hidden": "true"
18
+ }, T = {
19
+ key: 0,
20
+ class: "mt-1.5 flex items-start gap-3"
21
+ }, E = ["id"], D = ["id"], O = {
22
+ key: 2,
23
+ class: "flex-1"
24
+ }, k = ["id"], A = /*@__PURE__*/ o({
25
+ __name: "AcTextarea",
26
+ props: /*@__PURE__*/ s({
27
+ label: {},
28
+ name: { default: "" },
29
+ rows: { default: 4 },
30
+ autoResize: {
31
+ type: Boolean,
32
+ default: !1
33
+ },
34
+ maxRows: { default: 0 },
35
+ maxlength: { default: void 0 },
36
+ mono: {
37
+ type: Boolean,
38
+ default: !1
39
+ },
40
+ required: {
41
+ type: Boolean,
42
+ default: !1
43
+ },
44
+ disabled: {
45
+ type: Boolean,
46
+ default: !1
47
+ },
48
+ readonly: {
49
+ type: Boolean,
50
+ default: !1
51
+ },
52
+ errorMsg: { default: "" },
53
+ hint: { default: "" }
54
+ }, {
55
+ modelValue: { default: "" },
56
+ modelModifiers: {}
57
+ }),
58
+ emits: ["update:modelValue"],
59
+ setup(o, { expose: s }) {
60
+ let A = o, j = g(o, "modelValue"), M = h(), N = f(null), P = f(!1), F = e(() => (j.value ?? "").length), I = e(() => A.maxlength !== void 0 && F.value >= A.maxlength), L = e(() => [A.errorMsg || A.hint ? `${M}-msg` : "", A.maxlength === void 0 ? "" : `${M}-count`].filter(Boolean).join(" ") || void 0);
61
+ function R() {
62
+ let e = N.value;
63
+ if (!e || !A.autoResize) return;
64
+ let t = getComputedStyle(e), n = parseFloat(t.lineHeight) || 20, r = parseFloat(t.paddingTop) + parseFloat(t.paddingBottom) + parseFloat(t.borderTopWidth) + parseFloat(t.borderBottomWidth), i = A.rows * n + r, a = A.maxRows > 0 ? A.maxRows * n + r : Infinity;
65
+ e.style.height = "auto";
66
+ let o = e.scrollHeight + parseFloat(t.borderTopWidth) + parseFloat(t.borderBottomWidth);
67
+ e.style.height = `${Math.min(Math.max(o, i), a)}px`, P.value = o > a;
68
+ }
69
+ return v(j, () => c(R)), v(() => [
70
+ A.autoResize,
71
+ A.rows,
72
+ A.maxRows
73
+ ], () => {
74
+ !A.autoResize && N.value && (N.value.style.height = ""), c(R);
75
+ }), u(R), s({ focus: () => N.value?.focus() }), (e, s) => (d(), n("div", {
76
+ class: l(["w-full", o.disabled && "opacity-60"]),
77
+ "data-ac-ds": "",
78
+ "data-testid": "ac-textarea"
79
+ }, [r("div", x, [y(r("textarea", {
80
+ id: m(M),
81
+ ref_key: "field",
82
+ ref: N,
83
+ "onUpdate:modelValue": s[0] ||= (e) => j.value = e,
84
+ name: o.name,
85
+ rows: o.rows,
86
+ maxlength: o.maxlength,
87
+ disabled: o.disabled,
88
+ readonly: o.readonly,
89
+ required: o.required,
90
+ "aria-invalid": !!o.errorMsg || void 0,
91
+ "aria-describedby": L.value,
92
+ placeholder: " ",
93
+ class: l(["peer block w-full rounded-6 border bg-surface px-3 py-2 text-base text-heading shadow-xs transition-[border-color,box-shadow] duration-150 outline-none placeholder:text-transparent disabled:cursor-not-allowed disabled:bg-surface-muted read-only:bg-surface-muted read-only:shadow-none", [
94
+ o.mono && "font-mono text-xs leading-5",
95
+ o.autoResize ? P.value ? "ac-scrollbar resize-none" : "resize-none overflow-hidden" : "ac-scrollbar resize-y",
96
+ o.errorMsg ? "border-red-60 focus:border-danger focus:shadow-[0_0_0_3px_var(--color-red-90)]" : "border-border hover:border-border-dark focus:focus-ring"
97
+ ]])
98
+ }, null, 10, S), [[_, j.value]]), r("label", {
99
+ for: m(M),
100
+ class: l(["pointer-events-none absolute top-0 left-2.5 -translate-y-1/2 rounded-2 bg-surface px-1 text-xs font-medium text-label transition-all duration-150 ease-out peer-placeholder-shown:top-4.5 peer-placeholder-shown:text-base peer-placeholder-shown:font-normal peer-placeholder-shown:text-muted peer-focus:top-0 peer-focus:text-xs peer-focus:font-medium peer-focus:text-primary-20 peer-read-only:bg-linear-to-b peer-read-only:from-surface peer-read-only:from-50% peer-read-only:to-surface-muted peer-read-only:to-50% peer-disabled:bg-linear-to-b peer-disabled:from-surface peer-disabled:from-50% peer-disabled:to-surface-muted peer-disabled:to-50%", o.errorMsg && "text-red-30! peer-focus:text-red-30!"])
101
+ }, [i(p(o.label), 1), o.required ? (d(), n("span", w, " *")) : t("", !0)], 10, C)]), o.errorMsg || o.hint || o.maxlength !== void 0 ? (d(), n("div", T, [o.errorMsg ? (d(), n("p", {
102
+ key: 0,
103
+ id: `${m(M)}-msg`,
104
+ class: "flex min-w-0 flex-1 items-center gap-1 text-xs text-red-30"
105
+ }, [a(m(b), {
106
+ class: "size-3.5 shrink-0",
107
+ "aria-hidden": "true"
108
+ }), i(" " + p(o.errorMsg), 1)], 8, E)) : o.hint ? (d(), n("p", {
109
+ key: 1,
110
+ id: `${m(M)}-msg`,
111
+ class: "min-w-0 flex-1 text-xs text-muted"
112
+ }, p(o.hint), 9, D)) : (d(), n("span", O)), o.maxlength === void 0 ? t("", !0) : (d(), n("p", {
113
+ key: 3,
114
+ id: `${m(M)}-count`,
115
+ class: l(["shrink-0 text-xs tabular-nums", I.value ? "font-medium text-red-30" : "text-muted"])
116
+ }, [s[1] ||= r("span", { class: "sr-only" }, "Characters used: ", -1), i(p(F.value) + " / " + p(o.maxlength), 1)], 10, k))])) : t("", !0)], 2));
117
+ }
118
+ });
119
+ //#endregion
120
+ export { A as default };
@@ -0,0 +1,5 @@
1
+ import e from "./AcThemeMode.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/lib/components/AcThemeMode.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,17 @@
1
+ import type { ColorMode } from "../composables/useColorMode";
2
+ export interface Props {
3
+ /** Used until the viewer picks a mode. */
4
+ defaultMode?: ColorMode;
5
+ /** `icons` is a compact 3-icon switch; `labels` adds the words, for menus and settings pages. */
6
+ display?: "icons" | "labels";
7
+ }
8
+ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
+ "set:theme": (theme: "light" | "dark") => any;
10
+ }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
11
+ "onSet:theme"?: ((theme: "light" | "dark") => any) | undefined;
12
+ }>, {
13
+ display: "icons" | "labels";
14
+ defaultMode: ColorMode;
15
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const _default: typeof __VLS_export;
17
+ export default _default;
@@ -0,0 +1,60 @@
1
+ import { useColorMode as e } from "../composables/useColorMode.js";
2
+ import { Fragment as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, defineComponent as o, normalizeClass as s, openBlock as c, renderList as l, resolveDynamicComponent as u, toDisplayString as d, unref as f } from "vue";
3
+ import { Monitor as p, Moon as m, Sun as h } from "@lucide/vue";
4
+ //#region src/lib/components/AcThemeMode.vue?vue&type=script&setup=true&lang.ts
5
+ var g = {
6
+ role: "radiogroup",
7
+ "aria-label": "Theme",
8
+ class: "inline-flex items-center gap-0.5 rounded-8 border border-border bg-surface-muted p-0.5",
9
+ "data-ac-ds": "",
10
+ "data-testid": "ac-theme-mode"
11
+ }, _ = [
12
+ "aria-checked",
13
+ "aria-label",
14
+ "title",
15
+ "onClick"
16
+ ], v = { key: 0 }, y = /*@__PURE__*/ o({
17
+ __name: "AcThemeMode",
18
+ props: {
19
+ defaultMode: { default: "light" },
20
+ display: { default: "icons" }
21
+ },
22
+ emits: ["set:theme"],
23
+ setup(o, { emit: y }) {
24
+ let b = o, x = y, S = [
25
+ {
26
+ value: "light",
27
+ label: "Light",
28
+ icon: h
29
+ },
30
+ {
31
+ value: "dark",
32
+ label: "Dark",
33
+ icon: m
34
+ },
35
+ {
36
+ value: "system",
37
+ label: "System",
38
+ icon: p
39
+ }
40
+ ], { mode: C, isDark: w, setMode: T } = e({ defaultMode: b.defaultMode });
41
+ function E(e) {
42
+ T(e), x("set:theme", w.value ? "dark" : "light");
43
+ }
44
+ return (e, p) => (c(), i("div", g, [(c(), i(t, null, l(S, (e) => a("button", {
45
+ key: e.value,
46
+ type: "button",
47
+ role: "radio",
48
+ "aria-checked": f(C) === e.value,
49
+ "aria-label": o.display === "icons" ? `${e.label} theme` : void 0,
50
+ title: o.display === "icons" ? `${e.label} theme` : void 0,
51
+ class: s(["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", [o.display === "icons" ? "w-7" : "px-2.5", f(C) === e.value ? "bg-surface text-heading shadow-sm ring-1 ring-border" : "text-muted hover:text-heading"]]),
52
+ onClick: (t) => E(e.value)
53
+ }, [(c(), n(u(e.icon), {
54
+ class: "size-3.5",
55
+ "aria-hidden": "true"
56
+ })), o.display === "labels" ? (c(), i("span", v, d(e.label), 1)) : r("", !0)], 10, _)), 64))]));
57
+ }
58
+ });
59
+ //#endregion
60
+ export { y as default };
@@ -0,0 +1,5 @@
1
+ import e from "./AcToaster.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/lib/components/AcToaster.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,15 @@
1
+ export interface Props {
2
+ /** Corner of the screen. On phones (under 640px) toasts span the width at the same top or bottom edge. */
3
+ position?: "bottom-right" | "bottom-center" | "top-right" | "top-center";
4
+ /** How many toasts show at once (phones show at most 3). Newer ones queue behind and their timers wait until they're shown. */
5
+ max?: number;
6
+ /** Accessible name of the notification region. */
7
+ label?: string;
8
+ }
9
+ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
10
+ label: string;
11
+ max: number;
12
+ position: "bottom-right" | "bottom-center" | "top-right" | "top-center";
13
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;
@@ -0,0 +1,166 @@
1
+ import e from "./AcButton.js";
2
+ import { useToast as t } from "../composables/useToast.js";
3
+ import { Fragment as n, Teleport as r, TransitionGroup as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createVNode as u, defineComponent as d, nextTick as f, normalizeClass as p, onBeforeUnmount as m, openBlock as h, ref as g, renderList as _, resolveDynamicComponent as v, toDisplayString as y, unref as b, watch as x, withCtx as S } from "vue";
4
+ import { CircleAlert as C, CircleCheck as w, Info as T, TriangleAlert as E, X as D } from "@lucide/vue";
5
+ //#region src/lib/components/AcToaster.vue?vue&type=script&setup=true&lang.ts
6
+ var O = ["aria-label"], k = {
7
+ class: "sr-only",
8
+ role: "status",
9
+ "aria-live": "polite",
10
+ "aria-atomic": "true"
11
+ }, A = {
12
+ class: "sr-only",
13
+ role: "alert",
14
+ "aria-live": "assertive",
15
+ "aria-atomic": "true"
16
+ }, j = ["data-tone"], M = { class: "min-w-0 flex-1 py-px" }, N = ["aria-label", "onClick"], P = 3, F = /*@__PURE__*/ d({
17
+ __name: "AcToaster",
18
+ props: {
19
+ position: { default: "bottom-right" },
20
+ max: { default: 5 },
21
+ label: { default: "Notifications" }
22
+ },
23
+ setup(d) {
24
+ let F = d, I = (e) => `bg-surface bg-[image:linear-gradient(var(--color-${e}),var(--color-${e}))]`, L = {
25
+ neutral: {
26
+ icon_class: "",
27
+ box: "border-border bg-surface",
28
+ title: "text-heading",
29
+ text: "text-muted"
30
+ },
31
+ success: {
32
+ icon: w,
33
+ icon_class: "text-green-40",
34
+ box: `border-green-80 ${I("green-95")}`,
35
+ title: "text-green-10",
36
+ text: "text-green-20"
37
+ },
38
+ error: {
39
+ icon: C,
40
+ icon_class: "text-red-40",
41
+ box: `border-red-80 ${I("red-95")}`,
42
+ title: "text-red-10",
43
+ text: "text-red-20"
44
+ },
45
+ warning: {
46
+ icon: E,
47
+ icon_class: "text-yellow-50",
48
+ box: `border-yellow-70 ${I("yellow-95")}`,
49
+ title: "text-yellow-10",
50
+ text: "text-yellow-20"
51
+ },
52
+ info: {
53
+ icon: T,
54
+ icon_class: "text-blue-50",
55
+ box: `border-blue-80 ${I("blue-95")}`,
56
+ title: "text-blue-10",
57
+ text: "text-blue-20"
58
+ }
59
+ }, R = {
60
+ "bottom-right": "bottom-3 sm:bottom-6 sm:right-6",
61
+ "bottom-center": "bottom-3 sm:bottom-6 sm:left-1/2 sm:-translate-x-1/2",
62
+ "top-right": "top-3 sm:top-6 sm:right-6",
63
+ "top-center": "top-3 sm:top-6 sm:left-1/2 sm:-translate-x-1/2"
64
+ }, { toasts: z, dismiss: B } = t(), V = g(""), H = g(""), U = /* @__PURE__ */ new Map(), W = !1, G = /* @__PURE__ */ new Set(), K = a(() => F.position.startsWith("top")), q = a(() => {
65
+ let e = z.value.slice(-F.max);
66
+ return K.value ? [...e].reverse() : e;
67
+ });
68
+ function J(e) {
69
+ let t = U.get(e);
70
+ t && !W && (t.started = Date.now(), t.handle = setTimeout(() => B(e), t.remaining));
71
+ }
72
+ function Y(e) {
73
+ let t = U.get(e);
74
+ t?.handle && (clearTimeout(t.handle), t.handle = void 0, t.remaining -= Date.now() - t.started);
75
+ }
76
+ function X() {
77
+ W = !0, U.forEach((e, t) => Y(t));
78
+ }
79
+ function Z() {
80
+ W = !1, U.forEach((e, t) => J(t));
81
+ }
82
+ function Q(e) {
83
+ e.currentTarget.contains(e.relatedTarget) || Z();
84
+ }
85
+ function $(e) {
86
+ let t = new Set(e.map((e) => e.id));
87
+ for (let [e] of U) t.has(e) || (Y(e), U.delete(e));
88
+ for (let t of e) U.get(t.id)?.version !== t.version && (Y(t.id), U.delete(t.id), t.duration > 0 && (U.set(t.id, {
89
+ version: t.version,
90
+ remaining: t.duration,
91
+ started: 0
92
+ }), J(t.id)));
93
+ }
94
+ async function ee(e) {
95
+ let t = e.filter((e) => !G.has(`${e.id}:${e.version}`));
96
+ if (G = new Set(e.map((e) => `${e.id}:${e.version}`)), !t.length) return;
97
+ let n = (e) => /[.!?…]$/.test(e.trim()) ? e.trim() : `${e.trim()}.`, r = (e) => e.flatMap((e) => [e.title, e.description ?? ""].filter(Boolean).map(n)).join(" "), i = t.filter((e) => e.tone === "error"), a = t.filter((e) => e.tone !== "error");
98
+ V.value = "", H.value = "", await f(), a.length && (V.value = r(a)), i.length && (H.value = r(i));
99
+ }
100
+ function te(e) {
101
+ e.action?.onClick(), B(e.id);
102
+ }
103
+ return x(q, (e) => {
104
+ $(e), ee(e);
105
+ }, { immediate: !0 }), m(() => U.forEach((e) => clearTimeout(e.handle))), (t, a) => (h(), o(r, { to: "body" }, [l("section", {
106
+ "aria-label": d.label,
107
+ "data-ac-ds": "",
108
+ "data-testid": "ac-toaster"
109
+ }, [
110
+ l("div", k, y(V.value), 1),
111
+ l("div", A, y(H.value), 1),
112
+ u(i, {
113
+ tag: "ol",
114
+ class: p(["pointer-events-none fixed inset-x-3 z-[100] flex flex-col gap-2 sm:inset-x-auto sm:w-89", R[d.position]]),
115
+ "enter-active-class": "transition duration-200 ease-out",
116
+ "enter-from-class": `opacity-0 ${K.value ? "motion-safe:-translate-y-2" : "motion-safe:translate-y-2"}`,
117
+ "leave-active-class": "transition duration-150 ease-in",
118
+ "leave-to-class": "opacity-0 motion-safe:scale-95",
119
+ "move-class": "motion-safe:transition-transform motion-safe:duration-200",
120
+ onPointerenter: X,
121
+ onPointerleave: Z,
122
+ onFocusin: X,
123
+ onFocusout: Q
124
+ }, {
125
+ default: S(() => [(h(!0), c(n, null, _(q.value, (t, n) => (h(), c("li", {
126
+ key: t.id,
127
+ class: p(["pointer-events-auto flex items-start gap-3 rounded-10 border py-3 pr-2.5 pl-3.5 shadow-lg", [L[t.tone].box, (K.value ? n : q.value.length - 1 - n) >= P && "max-sm:hidden"]]),
128
+ "data-ac-ds": "",
129
+ "data-testid": "ac-toast",
130
+ "data-tone": t.tone
131
+ }, [
132
+ L[t.tone].icon ? (h(), o(v(L[t.tone].icon), {
133
+ key: 0,
134
+ class: p(["mt-0.5 size-4 shrink-0", L[t.tone].icon_class]),
135
+ "aria-hidden": "true"
136
+ }, null, 8, ["class"])) : s("", !0),
137
+ l("div", M, [l("p", { class: p(["text-base font-medium", L[t.tone].title]) }, y(t.title), 3), t.description ? (h(), c("p", {
138
+ key: 0,
139
+ class: p(["mt-0.5 text-base", L[t.tone].text])
140
+ }, y(t.description), 3)) : s("", !0)]),
141
+ t.action ? (h(), o(e, {
142
+ key: 1,
143
+ title: t.action.label,
144
+ size: "small",
145
+ color: "white",
146
+ class: "shrink-0",
147
+ onClick: (e) => te(t)
148
+ }, null, 8, ["title", "onClick"])) : s("", !0),
149
+ t.dismissible ? (h(), c("button", {
150
+ key: 2,
151
+ type: "button",
152
+ class: "inline-flex size-6 shrink-0 cursor-pointer items-center justify-center rounded-6 opacity-70 transition hover:bg-black/5 hover:opacity-100 dark:hover:bg-white/10 focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring",
153
+ "aria-label": `Dismiss: ${t.title}`,
154
+ onClick: (e) => b(B)(t.id)
155
+ }, [u(b(D), {
156
+ class: "size-3.5",
157
+ "aria-hidden": "true"
158
+ })], 8, N)) : s("", !0)
159
+ ], 10, j))), 128))]),
160
+ _: 1
161
+ }, 8, ["class", "enter-from-class"])
162
+ ], 8, O)]));
163
+ }
164
+ });
165
+ //#endregion
166
+ export { F as default };
@@ -0,0 +1,5 @@
1
+ import e from "./AcTooltip.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/lib/components/AcTooltip.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,30 @@
1
+ export interface Props {
2
+ /** The hint text. Keep it to a few words; use the `content` slot for richer text. */
3
+ content?: string;
4
+ /** Preferred side of the trigger. It flips to the opposite side when there isn't room. */
5
+ placement?: "top" | "bottom" | "left" | "right";
6
+ /** Milliseconds to wait on hover before showing. Keyboard focus shows it immediately. */
7
+ delay?: number;
8
+ /** Turns the tooltip off, e.g. while a menu from the same button is open. */
9
+ disabled?: boolean;
10
+ }
11
+ type __VLS_Slots = {
12
+ /** The trigger: a button, icon button, link or any focusable element. It gets `aria-describedby`. */
13
+ default?: () => unknown;
14
+ /** Tooltip content instead of the `content` prop. Text only; no links or buttons, since it can't be reached by Tab. */
15
+ content?: () => unknown;
16
+ };
17
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
18
+ disabled: boolean;
19
+ content: string;
20
+ placement: "top" | "bottom" | "left" | "right";
21
+ delay: number;
22
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };