@ac-design/design-system 0.0.0-stage → 1.0.1

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 (249) 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 +381 -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 +127 -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/copyText.d.ts +6 -0
  231. package/dist/lib/composables/copyText.js +16 -0
  232. package/dist/lib/composables/useBrandColor.d.ts +53 -0
  233. package/dist/lib/composables/useBrandColor.js +148 -0
  234. package/dist/lib/composables/useColorMode.d.ts +12 -0
  235. package/dist/lib/composables/useColorMode.js +40 -0
  236. package/dist/lib/composables/useFontScale.d.ts +16 -0
  237. package/dist/lib/composables/useFontScale.js +43 -0
  238. package/dist/lib/composables/useToast.d.ts +68 -0
  239. package/dist/lib/composables/useToast.js +36 -0
  240. package/dist/lib/editor/index.d.ts +4 -0
  241. package/dist/lib/editor/index.js +3 -0
  242. package/dist/lib/editor/theme.d.ts +3 -0
  243. package/dist/lib/editor/theme.js +309 -0
  244. package/dist/lib/editor/validate.d.ts +19 -0
  245. package/dist/lib/editor/validate.js +127 -0
  246. package/dist/lib/index.d.ts +29 -0
  247. package/dist/lib/index.js +78 -0
  248. package/dist/lib/theme.css +556 -0
  249. package/package.json +82 -4
@@ -0,0 +1,42 @@
1
+ import type { Component } from "vue";
2
+ export interface Props {
3
+ /** `empty` for a list with nothing in it yet, `search` for a filter or search with no matches, `error` when loading failed. Sets the default icon and title. */
4
+ variant?: "empty" | "search" | "error";
5
+ /** Heading. Defaults to "Nothing here yet", "No results found" or "Something went wrong". */
6
+ title?: string;
7
+ /** A small label above the title, such as "Error 404". */
8
+ code?: string;
9
+ /** A sentence under the title: why it's empty and what to do next. */
10
+ description?: string;
11
+ /** With `variant="search"`, the search text, shown as `No results for “pg-prod”`. */
12
+ query?: string;
13
+ /** A Lucide icon component to replace the variant's default icon. */
14
+ icon?: Component;
15
+ /** `small` for inside a table or card, `normal` for a list area, `large` for a whole page. */
16
+ size?: "small" | "normal" | "large";
17
+ }
18
+ type __VLS_Slots = {
19
+ /** Replaces the icon, e.g. with an illustration. */
20
+ icon?: () => unknown;
21
+ /** Replaces the description, e.g. to add a docs link. */
22
+ default?: () => unknown;
23
+ /** Buttons under the text: the main next step, then a secondary one. */
24
+ actions?: () => unknown;
25
+ };
26
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
27
+ variant: "empty" | "search" | "error";
28
+ code: string;
29
+ title: string;
30
+ description: string;
31
+ icon: Component;
32
+ size: "small" | "normal" | "large";
33
+ query: string;
34
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
35
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
36
+ declare const _default: typeof __VLS_export;
37
+ export default _default;
38
+ type __VLS_WithSlots<T, S> = T & {
39
+ new (): {
40
+ $slots: S;
41
+ };
42
+ };
@@ -0,0 +1,81 @@
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
+ import { Inbox as f, SearchX as p, TriangleAlert as m } from "@lucide/vue";
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" }, _ = {
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({
11
+ __name: "AcEmptyState",
12
+ props: {
13
+ variant: { default: "empty" },
14
+ title: { default: "" },
15
+ code: { default: "" },
16
+ description: { default: "" },
17
+ query: { default: "" },
18
+ icon: { default: void 0 },
19
+ size: { default: "normal" }
20
+ },
21
+ setup(o) {
22
+ let y = o, b = {
23
+ empty: {
24
+ glyph: f,
25
+ title: "Nothing here yet",
26
+ tile: "border-border bg-surface-muted text-muted"
27
+ },
28
+ search: {
29
+ glyph: p,
30
+ title: "No results found",
31
+ tile: "border-border bg-surface-muted text-muted"
32
+ },
33
+ error: {
34
+ glyph: m,
35
+ title: "Something went wrong",
36
+ tile: "border-red-90 bg-red-97 text-red-40"
37
+ }
38
+ }, x = {
39
+ 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
+ },
45
+ 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"
50
+ },
51
+ 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"
56
+ }
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);
58
+ return (e, f) => (c(), r("div", {
59
+ class: s(["flex flex-col items-center px-4 text-center", C.value.root]),
60
+ role: o.variant === "error" ? "alert" : void 0,
61
+ "data-ac-ds": "",
62
+ "data-testid": "ac-empty-state"
63
+ }, [
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]]),
66
+ "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
+ ], 10, h));
78
+ }
79
+ });
80
+ //#endregion
81
+ export { y as default };
@@ -0,0 +1,5 @@
1
+ import e from "./AcFeatureCard.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/lib/components/AcFeatureCard.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,84 @@
1
+ import type { Component } from "vue";
2
+ import type { Tone } from "./types";
3
+ export interface Props {
4
+ /** Name of the feature, product or option. Also the card's accessible name. */
5
+ title: string;
6
+ /** One or two sentences on what it does. Clamped to three lines. Old `card-sub-title` slot. */
7
+ description?: string;
8
+ /** A Lucide icon, shown in a tinted tile. Or use the `icon` slot. */
9
+ icon?: Component;
10
+ /** Logo image URL, e.g. a product or cloud-provider logo. Takes the place of `icon`. */
11
+ logo?: string;
12
+ /** Alt text for `logo`. Leave empty when the title already names it. */
13
+ logoAlt?: string;
14
+ /** A short status shown as a badge, e.g. "Enabled" or "Not installed". */
15
+ status?: string;
16
+ /** Colour of the `status` badge. */
17
+ statusColor?: Tone | "default";
18
+ /** Adds a "Required" badge. Old `isRequired`. */
19
+ required?: boolean;
20
+ /** Adds a "Recommended" badge. Shown after "Required" when both are set. */
21
+ recommended?: boolean;
22
+ /** Logo on top and centred text, for picking a provider or database type from a grid. Replaces the old Vendor card. */
23
+ centered?: boolean;
24
+ /** Makes the card a checkbox. Bind `v-model:checked`. Old CheckItemCard. */
25
+ selectable?: boolean;
26
+ /** Greys the card out and turns off its link, click and checkbox. */
27
+ disabled?: boolean;
28
+ /** Makes the card a `RouterLink` to this route. Needs vue-router in the app; without it a string is used as `href`. */
29
+ to?: string | Record<string, unknown>;
30
+ /** Makes the card a plain link. */
31
+ href?: string;
32
+ /** Link target for `href`, e.g. `_blank`. `_blank` shows an external-link arrow. */
33
+ target?: string;
34
+ }
35
+ type __VLS_Props = Props;
36
+ type __VLS_Slots = {
37
+ /** Extra content under the description, e.g. "2 unaligned clusters". */
38
+ default?: () => unknown;
39
+ /** Replaces the icon or logo. */
40
+ icon?: () => unknown;
41
+ /** Replaces the `status` badge, e.g. with several badges. */
42
+ status?: () => unknown;
43
+ /** Small content right after the title, before the badges, e.g. a ready or warning icon. */
44
+ "title-extra"?: () => unknown;
45
+ /** Controls at the top right of the card, e.g. an Enable or Reconcile button. They stay clickable when the whole card is a link or button. */
46
+ actions?: () => unknown;
47
+ /** A row at the bottom of the card, e.g. a version or "Covers 4 topologies". */
48
+ footer?: () => unknown;
49
+ };
50
+ type __VLS_ModelProps = {
51
+ /** Whether a `selectable` card is ticked. Bind with `v-model:checked`. */
52
+ "checked"?: boolean;
53
+ };
54
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
55
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
56
+ click: (e: MouseEvent) => any;
57
+ "update:checked": (value: boolean) => any;
58
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
59
+ onClick?: ((e: MouseEvent) => any) | undefined;
60
+ "onUpdate:checked"?: ((value: boolean) => any) | undefined;
61
+ }>, {
62
+ required: boolean;
63
+ description: string;
64
+ disabled: boolean;
65
+ icon: Component;
66
+ target: string;
67
+ href: string;
68
+ to: string | Record<string, unknown>;
69
+ status: string;
70
+ logo: string;
71
+ logoAlt: string;
72
+ statusColor: Tone | "default";
73
+ recommended: boolean;
74
+ centered: boolean;
75
+ selectable: boolean;
76
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
77
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
78
+ declare const _default: typeof __VLS_export;
79
+ export default _default;
80
+ type __VLS_WithSlots<T, S> = T & {
81
+ new (): {
82
+ $slots: S;
83
+ };
84
+ };
@@ -0,0 +1,218 @@
1
+ import e from "./AcBadge.js";
2
+ import { Fragment as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, getCurrentInstance as u, mergeModels as d, mergeProps as f, normalizeClass as p, openBlock as m, renderSlot as h, resolveDynamicComponent as g, toDisplayString as _, unref as v, useId as y, useModel as b, vModelCheckbox as x, withCtx as S, withDirectives as C } from "vue";
3
+ import { ArrowRight as w, ArrowUpRight as T, Check as E } from "@lucide/vue";
4
+ //#region src/lib/components/AcFeatureCard.vue?vue&type=script&setup=true&lang.ts
5
+ var D = ["aria-hidden"], O = ["src", "alt"], k = ["id"], A = ["aria-describedby"], j = {
6
+ key: 0,
7
+ class: "relative z-10 -my-0.5 flex shrink-0 items-center gap-2"
8
+ }, M = ["id", "title"], N = {
9
+ key: 1,
10
+ class: "mt-2 text-base text-body"
11
+ }, P = {
12
+ key: 2,
13
+ class: "mt-2 flex flex-wrap justify-center gap-2"
14
+ }, F = [
15
+ "id",
16
+ "disabled",
17
+ "aria-labelledby",
18
+ "aria-describedby"
19
+ ], I = /*@__PURE__*/ l({
20
+ __name: "AcFeatureCard",
21
+ props: /*@__PURE__*/ d({
22
+ title: {},
23
+ description: { default: "" },
24
+ icon: { default: void 0 },
25
+ logo: { default: "" },
26
+ logoAlt: { default: "" },
27
+ status: { default: "" },
28
+ statusColor: { default: "default" },
29
+ required: {
30
+ type: Boolean,
31
+ default: !1
32
+ },
33
+ recommended: {
34
+ type: Boolean,
35
+ default: !1
36
+ },
37
+ centered: {
38
+ type: Boolean,
39
+ default: !1
40
+ },
41
+ selectable: {
42
+ type: Boolean,
43
+ default: !1
44
+ },
45
+ disabled: {
46
+ type: Boolean,
47
+ default: !1
48
+ },
49
+ to: { default: void 0 },
50
+ href: { default: void 0 },
51
+ target: { default: void 0 }
52
+ }, {
53
+ checked: {
54
+ type: Boolean,
55
+ default: !1
56
+ },
57
+ checkedModifiers: {}
58
+ }),
59
+ emits: /*@__PURE__*/ d(["click"], ["update:checked"]),
60
+ setup(l, { emit: d }) {
61
+ let I = l, L = b(l, "checked"), R = d, z = u(), B = z?.appContext.components.RouterLink, V = y(), H = n(() => {
62
+ if (I.disabled || I.selectable) return null;
63
+ if (I.to !== void 0 && B) return {
64
+ is: B,
65
+ to: I.to
66
+ };
67
+ let e = I.href ?? (typeof I.to == "string" ? I.to : void 0);
68
+ return e ? {
69
+ is: "a",
70
+ href: e,
71
+ target: I.target,
72
+ rel: I.target === "_blank" ? "noopener noreferrer" : void 0
73
+ } : null;
74
+ });
75
+ function U() {
76
+ return !H.value && !I.disabled && !I.selectable && !!z?.vnode.props?.onClick;
77
+ }
78
+ function W() {
79
+ return !!H.value || U() || I.selectable && !I.disabled;
80
+ }
81
+ function G(e) {
82
+ R("click", e);
83
+ }
84
+ return (n, u) => (m(), r(g(l.selectable ? "label" : "div"), {
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", [
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",
90
+ l.disabled && "cursor-not-allowed opacity-60"
91
+ ]]),
92
+ "data-ac-ds": "",
93
+ "data-testid": "ac-feature-card"
94
+ }, {
95
+ default: S(() => [o("div", { class: p(["flex w-full min-w-0 gap-3", l.centered ? "flex-col items-center" : "items-start"]) }, [
96
+ n.$slots.icon || l.logo || l.icon ? (m(), a("span", {
97
+ 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
+ "aria-hidden": l.logo && l.logoAlt ? void 0 : "true"
100
+ }, [h(n.$slots, "icon", {}, () => [l.logo ? (m(), a("img", {
101
+ key: 0,
102
+ src: l.logo,
103
+ alt: l.logoAlt,
104
+ class: "size-full object-contain"
105
+ }, null, 8, O)) : (m(), r(g(l.icon), { key: 1 }))])], 10, D)) : i("", !0),
106
+ o("div", { class: p(["min-w-0 flex-1", l.centered && "w-full"]) }, [
107
+ o("div", { class: p(["flex min-w-0 items-start gap-2", l.centered ? "justify-center" : "justify-between"]) }, [
108
+ 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
+ id: `${v(V)}-title`,
110
+ class: "min-w-0 text-lg leading-6 font-semibold tracking-[-0.01em] text-heading"
111
+ }, [H.value ? (m(), r(g(H.value.is), f({ key: 0 }, {
112
+ ...H.value,
113
+ is: void 0
114
+ }, {
115
+ "aria-describedby": l.description ? `${v(V)}-desc` : void 0,
116
+ "data-ac-card-link": "",
117
+ class: "outline-none after:absolute after:inset-0 after:rounded-10",
118
+ onClick: G
119
+ }), {
120
+ default: S(() => [s(_(l.title), 1)]),
121
+ _: 1
122
+ }, 16, ["aria-describedby"])) : U() ? (m(), a("button", {
123
+ key: 1,
124
+ type: "button",
125
+ "aria-describedby": l.description ? `${v(V)}-desc` : void 0,
126
+ "data-ac-card-link": "",
127
+ class: "cursor-pointer text-left outline-none after:absolute after:inset-0 after:rounded-10",
128
+ onClick: G
129
+ }, _(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
+ h(n.$slots, "title-extra"),
131
+ l.required ? (m(), r(e, {
132
+ key: 0,
133
+ label: "Required",
134
+ color: "warning",
135
+ variant: "light",
136
+ rounded: ""
137
+ })) : i("", !0),
138
+ l.recommended ? (m(), r(e, {
139
+ key: 1,
140
+ label: "Recommended",
141
+ color: "info",
142
+ variant: "light",
143
+ rounded: ""
144
+ })) : i("", !0),
145
+ h(n.$slots, "status", {}, () => [l.status ? (m(), r(e, {
146
+ key: 0,
147
+ label: l.status,
148
+ color: l.statusColor,
149
+ variant: "light",
150
+ rounded: "",
151
+ dot: ""
152
+ }, null, 8, ["label", "color"])) : i("", !0)])
153
+ ], 64))], 2),
154
+ n.$slots.actions && !l.centered ? (m(), a("div", j, [h(n.$slots, "actions")])) : i("", !0),
155
+ !l.centered && (H.value || U()) ? (m(), r(g(l.target === "_blank" ? v(T) : v(w)), {
156
+ 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
+ "aria-hidden": "true"
159
+ })) : i("", !0)
160
+ ], 2),
161
+ l.description ? (m(), a("p", {
162
+ key: 0,
163
+ id: `${v(V)}-desc`,
164
+ class: "mt-1 line-clamp-3 text-base text-muted",
165
+ title: l.description
166
+ }, _(l.description), 9, M)) : i("", !0),
167
+ n.$slots.default ? (m(), a("div", N, [h(n.$slots, "default")])) : i("", !0),
168
+ l.centered && (l.required || l.recommended || l.status || n.$slots.status) ? (m(), a("div", P, [
169
+ l.required ? (m(), r(e, {
170
+ key: 0,
171
+ label: "Required",
172
+ color: "warning",
173
+ variant: "light",
174
+ rounded: ""
175
+ })) : i("", !0),
176
+ l.recommended ? (m(), r(e, {
177
+ key: 1,
178
+ label: "Recommended",
179
+ color: "info",
180
+ variant: "light",
181
+ rounded: ""
182
+ })) : i("", !0),
183
+ h(n.$slots, "status", {}, () => [l.status ? (m(), r(e, {
184
+ key: 0,
185
+ label: l.status,
186
+ color: l.statusColor,
187
+ variant: "light",
188
+ rounded: "",
189
+ dot: ""
190
+ }, null, 8, ["label", "color"])) : i("", !0)])
191
+ ])) : i("", !0)
192
+ ], 2),
193
+ l.selectable ? (m(), a("span", {
194
+ key: 1,
195
+ class: p(["relative inline-flex size-4 shrink-0", l.centered ? "absolute! top-3 right-3" : "mt-1"])
196
+ }, [C(o("input", {
197
+ id: `${v(V)}-input`,
198
+ "onUpdate:modelValue": u[0] ||= (e) => L.value = e,
199
+ type: "checkbox",
200
+ disabled: l.disabled,
201
+ "aria-labelledby": `${v(V)}-title`,
202
+ "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
+ }, 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
+ "stroke-width": 3,
207
+ "aria-hidden": "true"
208
+ })], 2)) : i("", !0)
209
+ ], 2), n.$slots.footer ? (m(), a("div", {
210
+ 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
+ }, [h(n.$slots, "footer")], 2)) : i("", !0)]),
213
+ _: 3
214
+ }, 8, ["for", "class"]));
215
+ }
216
+ });
217
+ //#endregion
218
+ export { I as default };
@@ -0,0 +1,5 @@
1
+ import e from "./AcFileEditor.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/lib/components/AcFileEditor.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,95 @@
1
+ import type { EditorProblem } from "../editor/validate";
2
+ import type { EditorLanguage } from "../editor/validate";
3
+ export interface EditorFile {
4
+ /** Unique within the list. Shown in the list and the editor header, e.g. `postgres.yaml`. */
5
+ name: string;
6
+ /** The text. With `encoding: "base64"`, the base64 value as a Secret stores it. */
7
+ content: string;
8
+ /** The saved version, in the same encoding as `content`. Marks the file as changed and adds an Edit / Changes switch. */
9
+ original?: string;
10
+ /** Overrides the language guessed from the extension (`.yaml`/`.yml`, `.json`, `.sh`; anything else is text). */
11
+ language?: EditorLanguage;
12
+ /** JSON Schema this file is checked against, e.g. its CRD's `openAPIV3Schema`. */
13
+ schema?: object;
14
+ /** Hides the value until someone chooses Show value. It's hidden again when they open another file. */
15
+ secret?: boolean;
16
+ /** `base64`: `content` and `original` are base64. The editor shows the decoded text and encodes edits back. */
17
+ encoding?: "base64";
18
+ /** This file can't be edited. */
19
+ readonly?: boolean;
20
+ /** Kind shown under the name, e.g. `Postgres` or `Secret`. */
21
+ kind?: string;
22
+ /** More detail after the kind, e.g. the namespace. */
23
+ description?: string;
24
+ }
25
+ export interface Props {
26
+ /** Shows a skeleton list and editor while the files load. */
27
+ loading?: boolean;
28
+ /** No file can be edited. Files with an `original` then show only their changes. */
29
+ readonly?: boolean;
30
+ /** Any CSS height for the whole editor, e.g. `480px` or `calc(100vh - 240px)`. */
31
+ height?: string;
32
+ /** Shows a search box above the list. `auto` shows it once there are more than 8 files. */
33
+ searchable?: boolean | "auto";
34
+ /** Adds a YAML / JSON switch to the header. Edits in the other format are converted back; YAML comments don't survive that. */
35
+ formatSwitch?: boolean;
36
+ /** Checks YAML and JSON files as you type, against their `schema` too. Turn off for templates that aren't valid until rendered. */
37
+ validate?: boolean;
38
+ /** Adds a copy button to the header. */
39
+ copyable?: boolean;
40
+ /** Adds a download button to the header. It saves the open file's text, in the format shown, under the file's name. Hidden while a secret is masked. */
41
+ downloadable?: boolean;
42
+ /** Wraps long lines instead of scrolling sideways. */
43
+ wrap?: boolean;
44
+ /** Accessible name for the file list, e.g. "Secret keys". */
45
+ label?: string;
46
+ /** Title shown when there are no files. */
47
+ emptyText?: string;
48
+ }
49
+ declare const _default: typeof __VLS_export;
50
+ export default _default;
51
+ declare const __VLS_export: <F extends EditorFile>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
52
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(Props & {
53
+ /** The files: `{ name, content, original?, language?, schema?, secret?, encoding?, readonly?, kind?, description? }`. Edits replace the edited file with a copy, so extra fields such as `gvr` are kept. */
54
+ files?: F[];
55
+ /** The `name` of the open file. When it's empty or doesn't match a file, the first file opens. */
56
+ active?: string;
57
+ /** The list's search text. Bind it to drive the search from your own search box. */
58
+ search?: string;
59
+ /** With `format-switch`, which format YAML and JSON files are shown in. */
60
+ format?: "yaml" | "json";
61
+ /** For a file with an `original`, whether its text or its changes show. */
62
+ view?: "edit" | "changes";
63
+ }) & {
64
+ onValidate?: ((problems: Record<string, EditorProblem[]>) => any) | undefined;
65
+ "onUpdate:view"?: ((value: "edit" | "changes") => any) | undefined;
66
+ onDownload?: ((file: F) => any) | undefined;
67
+ "onUpdate:files"?: ((value: F[]) => any) | undefined;
68
+ "onUpdate:active"?: ((value: string) => any) | undefined;
69
+ "onUpdate:search"?: ((value: string) => any) | undefined;
70
+ "onUpdate:format"?: ((value: "yaml" | "json") => any) | undefined;
71
+ }> & (typeof globalThis extends {
72
+ __VLS_PROPS_FALLBACK: infer P;
73
+ } ? P : {});
74
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
75
+ /** Moves focus into the open file's editor, or to its Show value button while a secret is hidden. */
76
+ focus: () => void;
77
+ }>) => void;
78
+ attrs: any;
79
+ slots: {
80
+ /** Buttons at the right of the editor header, e.g. Save or Delete for the open file. */
81
+ actions?: (props: {
82
+ file: F;
83
+ }) => unknown;
84
+ /** Replaces the empty state shown when there are no files. */
85
+ empty?: () => unknown;
86
+ };
87
+ emit: (((evt: "validate", problems: Record<string, EditorProblem[]>) => void) & ((evt: "download", file: F) => void)) & (((event: "update:view", value: "edit" | "changes") => void) & ((event: "update:files", value: F[]) => void) & ((event: "update:active", value: string) => void) & ((event: "update:search", value: string) => void) & ((event: "update:format", value: "yaml" | "json") => void));
88
+ }>) => import("vue").VNode & {
89
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
90
+ };
91
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
92
+ [K in keyof T]: T[K];
93
+ } : {
94
+ [K in keyof T as K]: T[K];
95
+ }) & {};