@done-coding/admin-core 0.17.1-alpha.0 → 0.18.1-alpha.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 (342) hide show
  1. package/README.md +77 -1
  2. package/es/_virtual/_plugin-vue_export-helper.mjs +7 -6
  3. package/es/bridge/config-hook.mjs +49 -37
  4. package/es/bridge/index.mjs +152 -109
  5. package/es/bridge/layout.mjs +45 -31
  6. package/es/bridge/plugin.mjs +22 -12
  7. package/es/bridge/route.mjs +59 -50
  8. package/es/bridge/state.mjs +54 -39
  9. package/es/bridge/storage.mjs +18 -8
  10. package/es/bridge/theme/index.mjs +200 -97
  11. package/es/bridge/theme/persist.mjs +11 -7
  12. package/es/bridge/theme/system-dark.mjs +13 -6
  13. package/es/components/app-layout/AppAside.vue.mjs +4 -4
  14. package/es/components/app-layout/AppAside.vue2.mjs +37 -30
  15. package/es/components/app-layout/AppBody.vue.mjs +4 -4
  16. package/es/components/app-layout/AppBody.vue2.mjs +97 -60
  17. package/es/components/app-layout/AppBreadcrumb.vue.mjs +4 -4
  18. package/es/components/app-layout/AppBreadcrumb.vue2.mjs +59 -38
  19. package/es/components/app-layout/AppCollapseToggle.vue.mjs +4 -4
  20. package/es/components/app-layout/AppCollapseToggle.vue2.mjs +51 -42
  21. package/es/components/app-layout/AppFooter.vue.mjs +4 -4
  22. package/es/components/app-layout/AppFooter.vue2.mjs +15 -12
  23. package/es/components/app-layout/AppHeader.vue.mjs +4 -4
  24. package/es/components/app-layout/AppHeader.vue2.mjs +81 -58
  25. package/es/components/app-layout/AppLayout.vue.mjs +4 -4
  26. package/es/components/app-layout/AppLayout.vue2.mjs +148 -112
  27. package/es/components/app-layout/AppPage.vue.mjs +4 -4
  28. package/es/components/app-layout/AppPage.vue2.mjs +254 -197
  29. package/es/components/app-layout/AppShell.vue.mjs +44 -42
  30. package/es/components/app-layout/AppShell.vue2.mjs +2 -2
  31. package/es/components/app-layout/AppSidebar.vue.mjs +4 -4
  32. package/es/components/app-layout/AppSidebar.vue2.mjs +76 -59
  33. package/es/components/app-layout/AppTheme.vue.mjs +4 -4
  34. package/es/components/app-layout/AppTheme.vue2.mjs +69 -57
  35. package/es/components/app-layout/app-page-geometry.mjs +44 -42
  36. package/es/components/app-layout/keep-alive.mjs +27 -19
  37. package/es/components/app-layout/viewport.mjs +4 -3
  38. package/es/components/data-view/DataListView.vue.mjs +4 -4
  39. package/es/components/data-view/DataListView.vue2.mjs +133 -93
  40. package/es/components/data-view/DataListViewItem.vue.mjs +4 -4
  41. package/es/components/data-view/DataListViewItem.vue2.mjs +11 -9
  42. package/es/components/data-view/utils.mjs +36 -34
  43. package/es/components/display/ActionBtn.vue.mjs +94 -71
  44. package/es/components/display/ActionBtn.vue2.mjs +2 -2
  45. package/es/components/display/ActionBtnGroup.vue.mjs +54 -48
  46. package/es/components/display/ActionBtnGroup.vue2.mjs +2 -2
  47. package/es/components/display/ActionConfirm.vue.mjs +4 -4
  48. package/es/components/display/ActionConfirm.vue2.mjs +116 -92
  49. package/es/components/display/BooleanTag.vue.mjs +24 -18
  50. package/es/components/display/BooleanTag.vue2.mjs +2 -2
  51. package/es/components/display/HeightProvider.vue.mjs +37 -27
  52. package/es/components/display/HeightProvider.vue2.mjs +2 -2
  53. package/es/components/display/TabsHeader.vue.mjs +4 -4
  54. package/es/components/display/TabsHeader.vue2.mjs +86 -57
  55. package/es/components/display/TabsMain.vue.mjs +156 -125
  56. package/es/components/display/TabsMain.vue2.mjs +2 -2
  57. package/es/components/display/TabsNaturalFlow.vue.mjs +15 -11
  58. package/es/components/display/TabsNaturalFlow.vue2.mjs +2 -2
  59. package/es/components/display/TabsRefineFlow.vue.mjs +55 -42
  60. package/es/components/display/TabsRefineFlow.vue2.mjs +2 -2
  61. package/es/components/display/TabsTile.vue.mjs +4 -4
  62. package/es/components/display/TabsTile.vue2.mjs +204 -146
  63. package/es/components/display/WatchSize.vue.mjs +50 -30
  64. package/es/components/display/WatchSize.vue2.mjs +2 -2
  65. package/es/components/display/use-tabs-query-sync.mjs +21 -17
  66. package/es/components/form/FormItem.vue.mjs +4 -4
  67. package/es/components/form/FormItem.vue2.mjs +183 -121
  68. package/es/components/form/FormItemNestForm.vue.mjs +4 -4
  69. package/es/components/form/FormItemNestForm.vue2.mjs +38 -34
  70. package/es/components/form/FormItemNestFormList.vue.mjs +4 -4
  71. package/es/components/form/FormItemNestFormList.vue2.mjs +135 -106
  72. package/es/components/form/FormMain.vue.mjs +4 -4
  73. package/es/components/form/FormMain.vue2.mjs +226 -139
  74. package/es/components/form/FormRadioGroup.vue.mjs +67 -52
  75. package/es/components/form/FormRadioGroup.vue2.mjs +2 -2
  76. package/es/components/form/FormSearch.vue.mjs +4 -4
  77. package/es/components/form/FormSearch.vue2.mjs +194 -156
  78. package/es/components/form/FormSelect.vue.mjs +69 -42
  79. package/es/components/form/FormSelect.vue2.mjs +2 -2
  80. package/es/components/form/FormSubmitBtn.vue.mjs +30 -25
  81. package/es/components/form/FormSubmitBtn.vue2.mjs +2 -2
  82. package/es/components/form/FormSubmitPanel.vue.mjs +4 -4
  83. package/es/components/form/FormSubmitPanel.vue2.mjs +129 -96
  84. package/es/components/form/FormTree.vue.mjs +19 -16
  85. package/es/components/form/FormTree.vue2.mjs +2 -2
  86. package/es/components/form/FormVerifyCode.vue.mjs +58 -41
  87. package/es/components/form/FormVerifyCode.vue2.mjs +2 -2
  88. package/es/components/form/FormVerifyImage.vue.mjs +4 -4
  89. package/es/components/form/FormVerifyImage.vue2.mjs +62 -40
  90. package/es/components/form/form-search-utils.mjs +83 -52
  91. package/es/components/form/nest-form-item-list.mjs +63 -55
  92. package/es/components/form/nest-form-item.mjs +30 -30
  93. package/es/components/form/nest-registry.mjs +4 -4
  94. package/es/components/form/use-form-submit.mjs +18 -15
  95. package/es/components/form/use-layout-by-container.mjs +23 -15
  96. package/es/components/form/use-nest-form-list.mjs +19 -16
  97. package/es/components/form/use-nest-form.mjs +37 -28
  98. package/es/components/form/use-nest-layout-scale.mjs +11 -10
  99. package/es/components/form/utils.mjs +233 -145
  100. package/es/components/list-page/ListPage.vue.mjs +4 -4
  101. package/es/components/list-page/ListPage.vue2.mjs +313 -207
  102. package/es/components/list-page/use-sticky.mjs +45 -33
  103. package/es/components/menu/MenuItemSub.vue.mjs +47 -43
  104. package/es/components/menu/MenuItemSub.vue2.mjs +2 -2
  105. package/es/components/menu/MenuTree.vue.mjs +84 -61
  106. package/es/components/menu/MenuTree.vue2.mjs +2 -2
  107. package/es/components/misc/AutoRefresh.vue.mjs +4 -4
  108. package/es/components/misc/AutoRefresh.vue2.mjs +78 -53
  109. package/es/components/misc/AutoRefreshGroup.vue.mjs +4 -4
  110. package/es/components/misc/AutoRefreshGroup.vue2.mjs +54 -51
  111. package/es/components/misc/SelectModule.vue.mjs +54 -45
  112. package/es/components/misc/SelectModule.vue2.mjs +2 -2
  113. package/es/components/misc/TriggerAutoImport.vue.mjs +7 -5
  114. package/es/components/misc/TriggerAutoImport.vue2.mjs +2 -2
  115. package/es/components/modal/ModalConfirm.vue.mjs +4 -4
  116. package/es/components/modal/ModalConfirm.vue2.mjs +160 -125
  117. package/es/components/modal/ModalDetail.vue.mjs +50 -39
  118. package/es/components/modal/ModalDetail.vue2.mjs +2 -2
  119. package/es/components/modal/ModalForm.vue.mjs +63 -52
  120. package/es/components/modal/ModalForm.vue2.mjs +2 -2
  121. package/es/components/modal/ModalPorter.vue.mjs +51 -36
  122. package/es/components/modal/ModalPorter.vue2.mjs +2 -2
  123. package/es/components/modal/ModalShelf.vue.mjs +38 -28
  124. package/es/components/modal/ModalShelf.vue2.mjs +2 -2
  125. package/es/components/modal/modal-shelf-core.mjs +52 -36
  126. package/es/components/modal/modal-shelf-hierarchy.mjs +11 -9
  127. package/es/components/panel/PanelEditSwitch.vue.mjs +4 -4
  128. package/es/components/panel/PanelEditSwitch.vue2.mjs +88 -66
  129. package/es/components/panel/PanelItem.vue.mjs +4 -4
  130. package/es/components/panel/PanelItem.vue2.mjs +103 -77
  131. package/es/components/panel/PanelItemNestForm.vue.mjs +4 -4
  132. package/es/components/panel/PanelItemNestForm.vue2.mjs +61 -52
  133. package/es/components/panel/PanelItemNestPanel.vue.mjs +22 -20
  134. package/es/components/panel/PanelItemNestPanel.vue2.mjs +2 -2
  135. package/es/components/panel/PanelMain.vue.mjs +4 -4
  136. package/es/components/panel/PanelMain.vue2.mjs +92 -74
  137. package/es/components/panel/nest-panel-form.mjs +44 -38
  138. package/es/components/panel/nest-panel-item.mjs +18 -17
  139. package/es/components/slot-layout/SlotLayoutFlowAside.vue.mjs +4 -4
  140. package/es/components/slot-layout/SlotLayoutFlowAside.vue2.mjs +55 -42
  141. package/es/components/slot-layout/SlotLayoutTemplate.vue.mjs +11 -9
  142. package/es/components/slot-layout/SlotLayoutTemplate.vue2.mjs +2 -2
  143. package/es/components/table/TableMain.vue.mjs +4 -4
  144. package/es/components/table/TableMain.vue2.mjs +378 -275
  145. package/es/components/table/TableSkeleton.vue.mjs +4 -4
  146. package/es/components/table/TableSkeleton.vue2.mjs +95 -74
  147. package/es/components/table/TableToolbar.vue.mjs +4 -4
  148. package/es/components/table/TableToolbar.vue2.mjs +170 -154
  149. package/es/components/table/ToolbarButtons.vue.mjs +12 -10
  150. package/es/components/table/ToolbarButtons.vue2.mjs +2 -2
  151. package/es/components/table/constants.mjs +4 -3
  152. package/es/components/table/use-fill-height.mjs +12 -10
  153. package/es/components/table/use-table-skeleton.mjs +19 -15
  154. package/es/config/list-model.mjs +2 -2
  155. package/es/config/route.mjs +4 -3
  156. package/es/helpers/form.mjs +35 -25
  157. package/es/helpers/list-helper.mjs +59 -44
  158. package/es/hooks/activated.mjs +49 -33
  159. package/es/hooks/feel-size.mjs +39 -23
  160. package/es/hooks/menus-dispatch.mjs +68 -35
  161. package/es/hooks/timeout.mjs +29 -14
  162. package/es/hooks/use-breakpoint.mjs +35 -23
  163. package/es/hooks/use-channel-viewport-height.mjs +30 -20
  164. package/es/hooks/use-custom-breakpoint.mjs +48 -31
  165. package/es/hooks/use-observe-size.mjs +37 -20
  166. package/es/hooks/use-theme-apply.mjs +175 -124
  167. package/es/hooks/use-viewport-apply.mjs +39 -27
  168. package/es/index.mjs +239 -239
  169. package/es/inject/key.mjs +52 -41
  170. package/es/injectInfo.json.mjs +2 -2
  171. package/es/router/group-redirect.mjs +22 -16
  172. package/es/router/guard/index.mjs +26 -21
  173. package/es/router/guard/login.mjs +4 -2
  174. package/es/router/guard/permission.mjs +4 -2
  175. package/es/store/app.mjs +163 -123
  176. package/es/store/router-permission.mjs +75 -46
  177. package/es/store/user.mjs +100 -71
  178. package/es/style.css +769 -1
  179. package/es/utils/dom.mjs +20 -16
  180. package/es/utils/export.mjs +34 -18
  181. package/es/utils/id.mjs +5 -3
  182. package/es/utils/router.mjs +21 -14
  183. package/es/utils/theme-scale.mjs +50 -35
  184. package/es/utils/time.mjs +20 -14
  185. package/package.json +4 -3
  186. package/src/bridge/README.md +5 -0
  187. package/src/bridge/docs/README.md +72 -0
  188. package/src/components/README.md +84 -0
  189. package/src/components/app-layout/README.md +46 -0
  190. package/src/components/app-layout/docs/README-AppAside.md +69 -0
  191. package/src/components/app-layout/docs/README-AppBody.md +81 -0
  192. package/src/components/app-layout/docs/README-AppBreadcrumb.md +71 -0
  193. package/src/components/app-layout/docs/README-AppFooter.md +41 -0
  194. package/src/components/app-layout/docs/README-AppHeader.md +73 -0
  195. package/src/components/app-layout/docs/README-AppLayout.md +83 -0
  196. package/src/components/app-layout/docs/README-AppPage.md +80 -0
  197. package/src/components/app-layout/docs/README-AppSidebar.md +70 -0
  198. package/src/components/app-layout/docs/README-AppTheme.md +66 -0
  199. package/src/components/data-view/README.md +19 -0
  200. package/src/components/data-view/docs/README-DataListView.md +114 -0
  201. package/src/components/display/README.md +23 -0
  202. package/src/components/display/docs/README-ActionBtn.md +84 -0
  203. package/src/components/display/docs/README-ActionBtnGroup.md +96 -0
  204. package/src/components/display/docs/README-ActionConfirm.md +77 -0
  205. package/src/components/display/docs/README-BooleanTag.md +76 -0
  206. package/src/components/display/docs/README-HeightProvider.md +74 -0
  207. package/src/components/display/docs/README-TabsMain.md +99 -0
  208. package/src/components/display/docs/README-WatchSize.md +70 -0
  209. package/src/components/form/README.md +24 -0
  210. package/src/components/form/docs/README-FormItemNestForm.md +86 -0
  211. package/src/components/form/docs/README-FormItemNestFormList.md +93 -0
  212. package/src/components/form/docs/README-FormMain.md +101 -0
  213. package/src/components/form/docs/README-FormSearch.md +89 -0
  214. package/src/components/form/docs/README-FormSubmitBtn.md +72 -0
  215. package/src/components/form/docs/README-FormSubmitPanel.md +97 -0
  216. package/src/components/list-page/README.md +16 -0
  217. package/src/components/list-page/docs/README-ListPage.md +136 -0
  218. package/src/components/menu/README.md +19 -0
  219. package/src/components/menu/docs/README-MenuItemSub.md +53 -0
  220. package/src/components/menu/docs/README-MenuTree.md +76 -0
  221. package/src/components/misc/README.md +21 -0
  222. package/src/components/misc/docs/README-AutoRefresh.md +74 -0
  223. package/src/components/misc/docs/README-AutoRefreshGroup.md +74 -0
  224. package/src/components/misc/docs/README-SelectModule.md +72 -0
  225. package/src/components/modal/README.md +21 -0
  226. package/src/components/modal/docs/README-ModalConfirm.md +105 -0
  227. package/src/components/modal/docs/README-ModalDetail.md +103 -0
  228. package/src/components/modal/docs/README-ModalForm.md +97 -0
  229. package/src/components/modal/docs/README-ModalPorter.md +92 -0
  230. package/src/components/modal/docs/README-ModalShelf.md +115 -0
  231. package/src/components/panel/README.md +19 -0
  232. package/src/components/panel/docs/README-PanelMain.md +149 -0
  233. package/src/components/slot-layout/README.md +17 -0
  234. package/src/components/slot-layout/docs/README-SlotLayoutFlowAside.md +83 -0
  235. package/src/components/slot-layout/docs/README-SlotLayoutTemplate.md +73 -0
  236. package/src/components/table/README.md +17 -0
  237. package/src/components/table/docs/README-TableMain.md +140 -0
  238. package/src/hooks/README.md +5 -0
  239. package/src/hooks/docs/README.md +49 -0
  240. package/types/bridge/config-hook.d.ts +68 -0
  241. package/types/bridge/index.d.ts +411 -0
  242. package/types/bridge/layout.d.ts +40 -0
  243. package/types/bridge/plugin.d.ts +18 -0
  244. package/types/bridge/route.d.ts +20 -1
  245. package/types/bridge/state.d.ts +14 -0
  246. package/types/bridge/storage.d.ts +9 -0
  247. package/types/bridge/theme/index.d.ts +7 -0
  248. package/types/bridge/theme/persist.d.ts +12 -0
  249. package/types/bridge/theme/system-dark.d.ts +12 -0
  250. package/types/bridge/theme/types.d.ts +238 -0
  251. package/types/components/app-layout/AppAside.vue.d.ts +1 -0
  252. package/types/components/app-layout/AppCollapseToggle.vue.d.ts +3 -0
  253. package/types/components/app-layout/AppHeader.vue.d.ts +3 -0
  254. package/types/components/app-layout/AppLayout.vue.d.ts +12 -0
  255. package/types/components/app-layout/AppPage.vue.d.ts +17 -0
  256. package/types/components/app-layout/AppSidebar.vue.d.ts +2 -0
  257. package/types/components/app-layout/app-page-geometry.d.ts +48 -0
  258. package/types/components/app-layout/keep-alive.d.ts +17 -0
  259. package/types/components/app-layout/types.d.ts +125 -0
  260. package/types/components/app-layout/viewport.d.ts +28 -0
  261. package/types/components/data-view/DataListViewItem.vue.d.ts +8 -0
  262. package/types/components/data-view/index.d.ts +4 -0
  263. package/types/components/data-view/types.d.ts +42 -0
  264. package/types/components/data-view/utils.d.ts +3 -0
  265. package/types/components/display/TabsHeader.vue.d.ts +2 -0
  266. package/types/components/display/TabsMain.vue.d.ts +2 -0
  267. package/types/components/display/TabsRefineFlow.vue.d.ts +1 -0
  268. package/types/components/display/TabsTile.vue.d.ts +247 -12
  269. package/types/components/display/WatchSize.vue.d.ts +9 -0
  270. package/types/components/display/index.d.ts +37 -1
  271. package/types/components/display/types.d.ts +163 -0
  272. package/types/components/display/use-tabs-query-sync.d.ts +29 -0
  273. package/types/components/form/FormItemNestForm.vue.d.ts +5 -0
  274. package/types/components/form/FormItemNestFormList.vue.d.ts +17 -0
  275. package/types/components/form/FormVerifyCode.vue.d.ts +9 -0
  276. package/types/components/form/FormVerifyImage.vue.d.ts +1 -0
  277. package/types/components/form/form-search-utils.d.ts +34 -0
  278. package/types/components/form/nest-form-item-list.d.ts +28 -0
  279. package/types/components/form/nest-form-item.d.ts +21 -0
  280. package/types/components/form/nest-registry.d.ts +14 -0
  281. package/types/components/form/types.d.ts +208 -8
  282. package/types/components/form/use-form-submit.d.ts +13 -0
  283. package/types/components/form/use-layout-by-container.d.ts +23 -0
  284. package/types/components/form/use-nest-form-list.d.ts +13 -0
  285. package/types/components/form/use-nest-form.d.ts +15 -0
  286. package/types/components/form/use-nest-layout-scale.d.ts +12 -0
  287. package/types/components/form/utils.d.ts +56 -1
  288. package/types/components/list-page/ListPage.vue.d.ts +6 -0
  289. package/types/components/list-page/types.d.ts +50 -2
  290. package/types/components/list-page/use-sticky.d.ts +23 -0
  291. package/types/components/misc/index.d.ts +6 -1
  292. package/types/components/misc/types.d.ts +7 -0
  293. package/types/components/modal/ModalConfirm.vue.d.ts +29 -0
  294. package/types/components/modal/index.d.ts +7 -1
  295. package/types/components/modal/modal-shelf-core.d.ts +3 -0
  296. package/types/components/modal/modal-shelf-hierarchy.d.ts +4 -0
  297. package/types/components/modal/modal-shelf-types.d.ts +34 -0
  298. package/types/components/modal/types.d.ts +63 -2
  299. package/types/components/panel/PanelItemNestForm.vue.d.ts +6 -0
  300. package/types/components/panel/PanelItemNestPanel.vue.d.ts +5 -0
  301. package/types/components/panel/nest-panel-form.d.ts +21 -0
  302. package/types/components/panel/nest-panel-item.d.ts +14 -0
  303. package/types/components/panel/types.d.ts +52 -1
  304. package/types/components/slot-layout/SlotLayoutTemplate.vue.d.ts +21 -0
  305. package/types/components/slot-layout/types.d.ts +4 -0
  306. package/types/components/table/constants.d.ts +8 -0
  307. package/types/components/table/types.d.ts +140 -9
  308. package/types/components/table/use-fill-height.d.ts +14 -0
  309. package/types/components/table/use-table-skeleton.d.ts +16 -0
  310. package/types/config/list-model.d.ts +29 -0
  311. package/types/config/route.d.ts +2 -0
  312. package/types/helpers/form.d.ts +5 -0
  313. package/types/helpers/list-helper.d.ts +26 -0
  314. package/types/helpers/types.d.ts +11 -0
  315. package/types/hooks/activated.d.ts +23 -0
  316. package/types/hooks/feel-size.d.ts +2 -0
  317. package/types/hooks/menus-dispatch.d.ts +4 -0
  318. package/types/hooks/timeout.d.ts +4 -0
  319. package/types/hooks/use-channel-viewport-height.d.ts +8 -0
  320. package/types/hooks/use-custom-breakpoint.d.ts +19 -0
  321. package/types/hooks/use-observe-size.d.ts +29 -0
  322. package/types/hooks/use-theme-apply.d.ts +23 -0
  323. package/types/hooks/use-viewport-apply.d.ts +12 -0
  324. package/types/inject/key.d.ts +163 -0
  325. package/types/injectInfo.json.d.ts +1 -1
  326. package/types/router/group-redirect.d.ts +9 -0
  327. package/types/router/guard/index.d.ts +13 -0
  328. package/types/router/guard/login.d.ts +1 -0
  329. package/types/router/guard/permission.d.ts +1 -0
  330. package/types/router/guard/types.d.ts +3 -0
  331. package/types/store/app.d.ts +27 -0
  332. package/types/store/router-permission.d.ts +53 -0
  333. package/types/store/user.d.ts +24 -0
  334. package/types/types/dot-path.d.ts +8 -0
  335. package/types/types/route.d.ts +45 -0
  336. package/types/types/utility-types.d.ts +7 -0
  337. package/types/utils/dom.d.ts +22 -0
  338. package/types/utils/export.d.ts +16 -1
  339. package/types/utils/id.d.ts +1 -0
  340. package/types/utils/router.d.ts +2 -0
  341. package/types/utils/theme-scale.d.ts +31 -0
  342. package/types/utils/time.d.ts +1 -0
@@ -1,117 +1,220 @@
1
- import { ref as r, computed as J, readonly as A, markRaw as j } from "vue";
2
- import { readPersist as q, DEFAULT_STORAGE_KEY as Q } from "./persist.mjs";
3
- import { readSystemPrefersDark as X, watchSystemPrefersDark as Z } from "./system-dark.mjs";
4
- const l = "default", $ = "light", ee = "默认", S = "cozy", y = "standard", te = (o) => ({
5
- light: { ...o.light },
6
- dark: { ...o.dark }
1
+ import { ref, computed, readonly, markRaw } from "vue";
2
+ import { readPersist, DEFAULT_STORAGE_KEY } from "./persist.mjs";
3
+ import { readSystemPrefersDark, watchSystemPrefersDark } from "./system-dark.mjs";
4
+ const DEFAULT_STYLE = "default";
5
+ const DEFAULT_MODE = "light";
6
+ const DEFAULT_LABEL = "默认";
7
+ const DEFAULT_DENSITY = "cozy";
8
+ const DEFAULT_MOTION = "standard";
9
+ const snapshotConfig = (config) => ({
10
+ light: { ...config.light },
11
+ dark: { ...config.dark }
7
12
  });
8
- function re(o) {
9
- var k;
10
- const g = o.storageKey ?? Q, _ = /* @__PURE__ */ new Map(), O = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), h = /* @__PURE__ */ new Map(), d = r(l), c = r(o.defaultMode ?? $), m = r(X()), R = J(
11
- () => c.value === "system" ? m.value : c.value === "dark"
13
+ function createBridgeThemeHook(init) {
14
+ var _a;
15
+ const storageKey = init.storageKey ?? DEFAULT_STORAGE_KEY;
16
+ const styleMap = /* @__PURE__ */ new Map();
17
+ const layoutMap = /* @__PURE__ */ new Map();
18
+ const hookMap = /* @__PURE__ */ new Map();
19
+ const rhythmMap = /* @__PURE__ */ new Map();
20
+ const themeStyle = ref(DEFAULT_STYLE);
21
+ const themeMode = ref(init.defaultMode ?? DEFAULT_MODE);
22
+ const systemPrefersDark = ref(readSystemPrefersDark());
23
+ const themeIsDark = computed(
24
+ () => themeMode.value === "system" ? systemPrefersDark.value : themeMode.value === "dark"
12
25
  );
13
- Z((e) => {
14
- m.value = e;
26
+ watchSystemPrefersDark((isDark) => {
27
+ systemPrefersDark.value = isDark;
15
28
  });
16
- const I = r({
29
+ const themeLayout = ref({
17
30
  shell: void 0,
18
- extractLevel1ToHeader: !1
19
- }), u = r(S), P = r(y), E = r([]), f = r({}), v = r({});
20
- let p = l;
21
- const a = q(o.storage, g);
22
- a && (typeof a.themeStyle == "string" && a.themeStyle && (p = a.themeStyle), a.themeMode === "light" || a.themeMode === "dark" || a.themeMode === "system" ? c.value = a.themeMode : typeof a.themeIsDark == "boolean" && (c.value = a.themeIsDark ? "dark" : "light"));
23
- const F = () => {
24
- o.storage.setItem(
25
- g,
31
+ extractLevel1ToHeader: false
32
+ });
33
+ const themeDensity = ref(DEFAULT_DENSITY);
34
+ const themeMotion = ref(DEFAULT_MOTION);
35
+ const themeList = ref([]);
36
+ const themeLabels = ref({});
37
+ const themeDescriptions = ref({});
38
+ let desiredStyle = DEFAULT_STYLE;
39
+ const persisted = readPersist(init.storage, storageKey);
40
+ if (persisted) {
41
+ if (typeof persisted.themeStyle === "string" && persisted.themeStyle) {
42
+ desiredStyle = persisted.themeStyle;
43
+ }
44
+ if (persisted.themeMode === "light" || persisted.themeMode === "dark" || persisted.themeMode === "system") {
45
+ themeMode.value = persisted.themeMode;
46
+ } else if (typeof persisted.themeIsDark === "boolean") {
47
+ themeMode.value = persisted.themeIsDark ? "dark" : "light";
48
+ }
49
+ }
50
+ const persist = () => {
51
+ init.storage.setItem(
52
+ storageKey,
26
53
  JSON.stringify({
27
- themeStyle: d.value,
28
- themeMode: c.value
54
+ themeStyle: themeStyle.value,
55
+ themeMode: themeMode.value
29
56
  })
30
57
  );
31
- }, M = () => {
32
- E.value = Array.from(_.keys());
33
- }, B = (e) => {
34
- o.update("APP_THEME_CONFIG", { light: e.light, dark: e.dark });
35
- }, w = (e) => {
36
- const t = o.layoutBaseline;
37
- t && (o.update("APP_LAYOUT_HEADER_CONFIG", { ...t.header }), o.update("APP_LAYOUT_FOOTER_CONFIG", { ...t.footer }), o.update("APP_LAYOUT_SIDEBAR_CONFIG", { ...t.sidebar }), o.update("APP_LAYOUT_ASIDE_CONFIG", { ...t.aside }), o.update("APP_LAYOUT_BREADCRUMB_CONFIG", { ...t.breadcrumb }), o.update("APP_LAYOUT_BODY_CONFIG", { ...t.body }), o.update("APP_LAYOUT_VIEWPORT_CONFIG", { ...t.viewport }), o.update("APP_LAYOUT_GAP_CONFIG", { ...t.gap })), e && (e.header && o.update("APP_LAYOUT_HEADER_CONFIG", e.header), e.footer && o.update("APP_LAYOUT_FOOTER_CONFIG", e.footer), e.sidebar && o.update("APP_LAYOUT_SIDEBAR_CONFIG", e.sidebar), e.aside && o.update("APP_LAYOUT_ASIDE_CONFIG", e.aside), e.breadcrumb && o.update("APP_LAYOUT_BREADCRUMB_CONFIG", e.breadcrumb), e.body && o.update("APP_LAYOUT_BODY_CONFIG", e.body), e.viewport && o.update("APP_LAYOUT_VIEWPORT_CONFIG", e.viewport), e.gap && o.update("APP_LAYOUT_GAP_CONFIG", e.gap)), I.value = {
38
- shell: e != null && e.shell ? j(e.shell) : void 0,
39
- extractLevel1ToHeader: (e == null ? void 0 : e.extractLevel1ToHeader) ?? !1
58
+ };
59
+ const refreshList = () => {
60
+ themeList.value = Array.from(styleMap.keys());
61
+ };
62
+ const applyConfig = (config) => {
63
+ init.update("APP_THEME_CONFIG", { light: config.light, dark: config.dark });
64
+ };
65
+ const applyLayout = (layout) => {
66
+ const baseline = init.layoutBaseline;
67
+ if (baseline) {
68
+ init.update("APP_LAYOUT_HEADER_CONFIG", { ...baseline.header });
69
+ init.update("APP_LAYOUT_FOOTER_CONFIG", { ...baseline.footer });
70
+ init.update("APP_LAYOUT_SIDEBAR_CONFIG", { ...baseline.sidebar });
71
+ init.update("APP_LAYOUT_ASIDE_CONFIG", { ...baseline.aside });
72
+ init.update("APP_LAYOUT_BREADCRUMB_CONFIG", { ...baseline.breadcrumb });
73
+ init.update("APP_LAYOUT_BODY_CONFIG", { ...baseline.body });
74
+ init.update("APP_LAYOUT_VIEWPORT_CONFIG", { ...baseline.viewport });
75
+ init.update("APP_LAYOUT_GAP_CONFIG", { ...baseline.gap });
76
+ }
77
+ if (layout) {
78
+ if (layout.header) init.update("APP_LAYOUT_HEADER_CONFIG", layout.header);
79
+ if (layout.footer) init.update("APP_LAYOUT_FOOTER_CONFIG", layout.footer);
80
+ if (layout.sidebar)
81
+ init.update("APP_LAYOUT_SIDEBAR_CONFIG", layout.sidebar);
82
+ if (layout.aside) init.update("APP_LAYOUT_ASIDE_CONFIG", layout.aside);
83
+ if (layout.breadcrumb)
84
+ init.update("APP_LAYOUT_BREADCRUMB_CONFIG", layout.breadcrumb);
85
+ if (layout.body) init.update("APP_LAYOUT_BODY_CONFIG", layout.body);
86
+ if (layout.viewport)
87
+ init.update("APP_LAYOUT_VIEWPORT_CONFIG", layout.viewport);
88
+ if (layout.gap) init.update("APP_LAYOUT_GAP_CONFIG", layout.gap);
89
+ }
90
+ themeLayout.value = {
91
+ shell: (layout == null ? void 0 : layout.shell) ? markRaw(layout.shell) : void 0,
92
+ extractLevel1ToHeader: (layout == null ? void 0 : layout.extractLevel1ToHeader) ?? false
40
93
  };
41
- }, L = (e, t) => {
42
- if (e)
43
- try {
44
- e({ id: t });
45
- } catch (s) {
46
- console.warn("[dc-theme] lifecycle hook error", s);
47
- }
48
- }, T = (e) => {
49
- var G, N;
50
- const t = _.get(e), s = t ? e : l, Y = t ?? _.get(l);
51
- if (!Y) return;
52
- const D = d.value;
53
- if (D === s) return;
54
- L((G = i.get(D)) == null ? void 0 : G.onDeactivate, D), B(Y), w(O.get(s));
55
- const n = h.get(s);
56
- u.value = (n == null ? void 0 : n.density) ?? S, P.value = (n == null ? void 0 : n.motion) ?? y, d.value = s, L((N = i.get(s)) == null ? void 0 : N.onActivate, s), F();
57
- }, U = (e) => {
58
- c.value = e, F();
59
- }, H = (e) => {
60
- U(e ? "dark" : "light");
61
- }, x = (e) => {
62
- u.value = e;
63
- }, K = (e) => {
64
- P.value = e;
65
- }, C = (e, t) => {
66
- _.set(e, te(t.config)), t.layout ? O.set(e, t.layout) : O.delete(e), t.onActivate || t.onDeactivate ? i.set(e, {
67
- onActivate: t.onActivate,
68
- onDeactivate: t.onDeactivate
69
- }) : i.delete(e), t.density || t.motion ? h.set(e, {
70
- density: t.density,
71
- motion: t.motion
72
- }) : h.delete(e), f.value = { ...f.value, [e]: t.label ?? e }, t.description !== void 0 && (v.value = {
73
- ...v.value,
74
- [e]: t.description
75
- }), M(), e === p && d.value !== p && T(e);
76
- }, V = (e) => {
77
- if (e === l || !_.delete(e)) return;
78
- O.delete(e), h.delete(e);
79
- const t = { ...f.value };
80
- delete t[e], f.value = t;
81
- const s = { ...v.value };
82
- delete s[e], v.value = s, M(), d.value === e && T(l), i.delete(e);
83
- }, W = (e) => f.value[e] ?? e, z = (e) => v.value[e];
84
- C(l, {
85
- config: o.initConfig,
86
- label: ee,
94
+ };
95
+ const fireHook = (fn, id) => {
96
+ if (!fn) return;
97
+ try {
98
+ fn({ id });
99
+ } catch (e) {
100
+ console.warn("[dc-theme] lifecycle hook error", e);
101
+ }
102
+ };
103
+ const setStyle = (name) => {
104
+ var _a2, _b;
105
+ const config = styleMap.get(name);
106
+ const target = config ? name : DEFAULT_STYLE;
107
+ const targetConfig = config ?? styleMap.get(DEFAULT_STYLE);
108
+ if (!targetConfig) return;
109
+ const prev = themeStyle.value;
110
+ if (prev === target) return;
111
+ fireHook((_a2 = hookMap.get(prev)) == null ? void 0 : _a2.onDeactivate, prev);
112
+ applyConfig(targetConfig);
113
+ applyLayout(layoutMap.get(target));
114
+ const rhythm = rhythmMap.get(target);
115
+ themeDensity.value = (rhythm == null ? void 0 : rhythm.density) ?? DEFAULT_DENSITY;
116
+ themeMotion.value = (rhythm == null ? void 0 : rhythm.motion) ?? DEFAULT_MOTION;
117
+ themeStyle.value = target;
118
+ fireHook((_b = hookMap.get(target)) == null ? void 0 : _b.onActivate, target);
119
+ persist();
120
+ };
121
+ const setMode = (mode) => {
122
+ themeMode.value = mode;
123
+ persist();
124
+ };
125
+ const setDark = (isDark) => {
126
+ setMode(isDark ? "dark" : "light");
127
+ };
128
+ const setDensity = (density) => {
129
+ themeDensity.value = density;
130
+ };
131
+ const setMotion = (motion) => {
132
+ themeMotion.value = motion;
133
+ };
134
+ const add = (name, preset) => {
135
+ styleMap.set(name, snapshotConfig(preset.config));
136
+ if (preset.layout) {
137
+ layoutMap.set(name, preset.layout);
138
+ } else {
139
+ layoutMap.delete(name);
140
+ }
141
+ if (preset.onActivate || preset.onDeactivate) {
142
+ hookMap.set(name, {
143
+ onActivate: preset.onActivate,
144
+ onDeactivate: preset.onDeactivate
145
+ });
146
+ } else {
147
+ hookMap.delete(name);
148
+ }
149
+ if (preset.density || preset.motion) {
150
+ rhythmMap.set(name, {
151
+ density: preset.density,
152
+ motion: preset.motion
153
+ });
154
+ } else {
155
+ rhythmMap.delete(name);
156
+ }
157
+ themeLabels.value = { ...themeLabels.value, [name]: preset.label ?? name };
158
+ if (preset.description !== void 0) {
159
+ themeDescriptions.value = {
160
+ ...themeDescriptions.value,
161
+ [name]: preset.description
162
+ };
163
+ }
164
+ refreshList();
165
+ if (name === desiredStyle && themeStyle.value !== desiredStyle) {
166
+ setStyle(name);
167
+ }
168
+ };
169
+ const remove = (name) => {
170
+ if (name === DEFAULT_STYLE) return;
171
+ if (!styleMap.delete(name)) return;
172
+ layoutMap.delete(name);
173
+ rhythmMap.delete(name);
174
+ const nextLabels = { ...themeLabels.value };
175
+ delete nextLabels[name];
176
+ themeLabels.value = nextLabels;
177
+ const nextDescriptions = { ...themeDescriptions.value };
178
+ delete nextDescriptions[name];
179
+ themeDescriptions.value = nextDescriptions;
180
+ refreshList();
181
+ if (themeStyle.value === name) setStyle(DEFAULT_STYLE);
182
+ hookMap.delete(name);
183
+ };
184
+ const labelOf = (name) => themeLabels.value[name] ?? name;
185
+ const descriptionOf = (name) => themeDescriptions.value[name];
186
+ add(DEFAULT_STYLE, {
187
+ config: init.initConfig,
188
+ label: DEFAULT_LABEL,
87
189
  description: {
88
190
  suitable: "常规中后台:左 sidebar 主导航 + 顶 header,表单 / 列表密集型管理应用。",
89
191
  unsuitable: "需沉浸式边框 / 右侧上下文面板 / 一级模块横向切换的应用(宜用带布局变更的 preset)。"
90
192
  }
91
193
  });
92
- const b = d.value;
93
- return L((k = i.get(b)) == null ? void 0 : k.onActivate, b), {
194
+ const initialStyle = themeStyle.value;
195
+ fireHook((_a = hookMap.get(initialStyle)) == null ? void 0 : _a.onActivate, initialStyle);
196
+ return {
94
197
  theme: {
95
- add: C,
96
- remove: V,
97
- setStyle: T,
98
- setMode: U,
99
- setDark: H,
100
- setDensity: x,
101
- setMotion: K,
102
- list: A(E),
103
- labelOf: W,
104
- descriptionOf: z
198
+ add,
199
+ remove,
200
+ setStyle,
201
+ setMode,
202
+ setDark,
203
+ setDensity,
204
+ setMotion,
205
+ list: readonly(themeList),
206
+ labelOf,
207
+ descriptionOf
105
208
  },
106
- themeStyle: A(d),
107
- themeMode: A(c),
209
+ themeStyle: readonly(themeStyle),
210
+ themeMode: readonly(themeMode),
108
211
  // themeIsDark 为 computed(已只读),直接返回;与 DeepReadonly<Ref<boolean>> 契约相容。
109
- themeIsDark: R,
110
- themeLayout: A(I),
111
- themeDensity: A(u),
112
- themeMotion: A(P)
212
+ themeIsDark,
213
+ themeLayout: readonly(themeLayout),
214
+ themeDensity: readonly(themeDensity),
215
+ themeMotion: readonly(themeMotion)
113
216
  };
114
217
  }
115
218
  export {
116
- re as createBridgeThemeHook
219
+ createBridgeThemeHook
117
220
  };
@@ -1,14 +1,18 @@
1
- const c = "dc-core-theme", o = (r, n) => {
2
- const e = r.getItem(n);
3
- if (!e) return null;
1
+ const DEFAULT_STORAGE_KEY = "dc-core-theme";
2
+ const readPersist = (storage, key) => {
3
+ const raw = storage.getItem(key);
4
+ if (!raw) return null;
4
5
  try {
5
- const t = JSON.parse(e);
6
- return t && typeof t == "object" ? t : null;
6
+ const parsed = JSON.parse(raw);
7
+ if (parsed && typeof parsed === "object") {
8
+ return parsed;
9
+ }
10
+ return null;
7
11
  } catch {
8
12
  return null;
9
13
  }
10
14
  };
11
15
  export {
12
- c as DEFAULT_STORAGE_KEY,
13
- o as readPersist
16
+ DEFAULT_STORAGE_KEY,
17
+ readPersist
14
18
  };
@@ -1,11 +1,18 @@
1
- const o = () => typeof window > "u" || typeof window.matchMedia != "function" ? !1 : window.matchMedia("(prefers-color-scheme: dark)").matches, a = (r) => {
2
- if (typeof window > "u" || typeof window.matchMedia != "function")
1
+ const readSystemPrefersDark = () => {
2
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function")
3
+ return false;
4
+ return window.matchMedia("(prefers-color-scheme: dark)").matches;
5
+ };
6
+ const watchSystemPrefersDark = (cb) => {
7
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function")
3
8
  return () => {
4
9
  };
5
- const e = window.matchMedia("(prefers-color-scheme: dark)"), n = (t) => r(t.matches);
6
- return e.addEventListener("change", n), () => e.removeEventListener("change", n);
10
+ const mql = window.matchMedia("(prefers-color-scheme: dark)");
11
+ const handler = (e) => cb(e.matches);
12
+ mql.addEventListener("change", handler);
13
+ return () => mql.removeEventListener("change", handler);
7
14
  };
8
15
  export {
9
- o as readSystemPrefersDark,
10
- a as watchSystemPrefersDark
16
+ readSystemPrefersDark,
17
+ watchSystemPrefersDark
11
18
  };
@@ -1,7 +1,7 @@
1
- import o from "./AppAside.vue2.mjs";
1
+ import _sfc_main from "./AppAside.vue2.mjs";
2
2
  /* empty css */
3
- import p from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const m = /* @__PURE__ */ p(o, [["__scopeId", "data-v-7e17d342"]]);
3
+ import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
+ const AppAside = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-7e17d342"]]);
5
5
  export {
6
- m as default
6
+ AppAside as default
7
7
  };
@@ -1,39 +1,46 @@
1
- import { defineComponent as m, inject as a, computed as o, withDirectives as u, openBlock as _, createElementBlock as h, normalizeStyle as i, createElementVNode as p, renderSlot as v, createVNode as A, unref as S, vShow as w } from "vue";
2
- import f from "./AppCollapseToggle.vue.mjs";
3
- import { APP_LAYOUT_APP_STORE_KEY as y, APP_LAYOUT_BRIDGE_KEY as P } from "../../inject/key.mjs";
4
- const E = { class: "app-aside-clip" }, Y = /* @__PURE__ */ m({
1
+ import { defineComponent, inject, computed, withDirectives, openBlock, createElementBlock, normalizeStyle, createElementVNode, renderSlot, createVNode, unref, vShow } from "vue";
2
+ import AppCollapseToggle from "./AppCollapseToggle.vue.mjs";
3
+ import { APP_LAYOUT_APP_STORE_KEY, APP_LAYOUT_BRIDGE_KEY } from "../../inject/key.mjs";
4
+ const _hoisted_1 = { class: "app-aside-clip" };
5
+ const _sfc_main = /* @__PURE__ */ defineComponent({
5
6
  __name: "AppAside",
6
7
  props: {
7
8
  show: { type: Boolean }
8
9
  },
9
- setup(t) {
10
- const e = a(y), n = o(() => e.asideStyle), d = a(P), s = o(() => e.asideIsCollapse), c = o(() => ({
11
- width: `${d.APP_LAYOUT_ASIDE_CONFIG.width}px`,
12
- opacity: s.value ? 0 : 1
10
+ setup(__props) {
11
+ const appStore = inject(APP_LAYOUT_APP_STORE_KEY);
12
+ const asideStyle = computed(() => appStore.asideStyle);
13
+ const bridge = inject(APP_LAYOUT_BRIDGE_KEY);
14
+ const collapse = computed(() => appStore.asideIsCollapse);
15
+ const shimStyle = computed(() => ({
16
+ width: `${bridge.APP_LAYOUT_ASIDE_CONFIG.width}px`,
17
+ opacity: collapse.value ? 0 : 1
13
18
  }));
14
- return (r, l) => u((_(), h("div", {
15
- class: "app-aside",
16
- style: i(n.value)
17
- }, [
18
- p("div", E, [
19
- p("div", {
20
- class: "app-aside-shim",
21
- style: i(c.value)
22
- }, [
23
- v(r.$slots, "default", {}, void 0, !0)
24
- ], 4)
25
- ]),
26
- A(f, {
27
- side: "aside",
28
- show: t.show,
29
- collapse: s.value,
30
- onToggle: l[0] || (l[0] = (g) => S(e).changeAsideCollapseStatus(!s.value))
31
- }, null, 8, ["show", "collapse"])
32
- ], 4)), [
33
- [w, t.show]
34
- ]);
19
+ return (_ctx, _cache) => {
20
+ return withDirectives((openBlock(), createElementBlock("div", {
21
+ class: "app-aside",
22
+ style: normalizeStyle(asideStyle.value)
23
+ }, [
24
+ createElementVNode("div", _hoisted_1, [
25
+ createElementVNode("div", {
26
+ class: "app-aside-shim",
27
+ style: normalizeStyle(shimStyle.value)
28
+ }, [
29
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
30
+ ], 4)
31
+ ]),
32
+ createVNode(AppCollapseToggle, {
33
+ side: "aside",
34
+ show: __props.show,
35
+ collapse: collapse.value,
36
+ onToggle: _cache[0] || (_cache[0] = ($event) => unref(appStore).changeAsideCollapseStatus(!collapse.value))
37
+ }, null, 8, ["show", "collapse"])
38
+ ], 4)), [
39
+ [vShow, __props.show]
40
+ ]);
41
+ };
35
42
  }
36
43
  });
37
44
  export {
38
- Y as default
45
+ _sfc_main as default
39
46
  };
@@ -1,7 +1,7 @@
1
- import o from "./AppBody.vue2.mjs";
1
+ import _sfc_main from "./AppBody.vue2.mjs";
2
2
  /* empty css */
3
- import p from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const _ = /* @__PURE__ */ p(o, [["__scopeId", "data-v-746de972"]]);
3
+ import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
+ const AppBody = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-746de972"]]);
5
5
  export {
6
- _ as default
6
+ AppBody as default
7
7
  };