@aithe/aithe-ui 26.2.3 → 26.3.2

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 (620) hide show
  1. package/README.md +19 -11
  2. package/dist/apps/admin/app.js +12 -0
  3. package/dist/apps/admin/components/admin-app.js +83 -0
  4. package/dist/apps/admin/components/admin-layout.d.ts +0 -1
  5. package/dist/apps/admin/components/admin-layout.d.ts.map +1 -1
  6. package/dist/apps/admin/components/admin-layout.js +250 -0
  7. package/dist/apps/admin/datahub/auth.js +24 -0
  8. package/dist/apps/admin/datahub/dashboard.js +16 -0
  9. package/dist/apps/admin/datahub/index.js +42 -0
  10. package/dist/apps/admin/datahub/menu.js +16 -0
  11. package/dist/apps/admin/datahub/mock/auth.js +11 -0
  12. package/dist/apps/admin/datahub/mock/dashboard.js +10 -0
  13. package/dist/apps/admin/datahub/mock/menu.js +42 -0
  14. package/dist/apps/admin/i18n/de-DE.js +37 -0
  15. package/dist/apps/admin/i18n/en-US.js +37 -0
  16. package/dist/apps/admin/i18n/es-ES.js +38 -0
  17. package/dist/apps/admin/i18n/fr-FR.js +37 -0
  18. package/dist/apps/admin/i18n/index.js +27 -0
  19. package/dist/apps/admin/i18n/ja-JP.js +38 -0
  20. package/dist/apps/admin/i18n/ko-KR.js +37 -0
  21. package/dist/apps/admin/i18n/pt-BR.js +37 -0
  22. package/dist/apps/admin/i18n/zh-CN.js +37 -0
  23. package/dist/apps/admin/i18n/zh-HK.js +37 -0
  24. package/dist/apps/admin/i18n/zh-TW.js +37 -0
  25. package/dist/apps/admin/pages/dashboard-page.d.ts +1 -0
  26. package/dist/apps/admin/pages/dashboard-page.d.ts.map +1 -1
  27. package/dist/apps/admin/pages/dashboard-page.js +199 -0
  28. package/dist/apps/admin/pages/login-page.js +278 -0
  29. package/dist/apps/admin/pages/not-found-page.js +57 -0
  30. package/dist/apps/admin/pages/role-page.js +76 -0
  31. package/dist/apps/admin/pages/settings-page.js +95 -0
  32. package/dist/apps/admin/pages/user-page.js +76 -0
  33. package/dist/apps/admin/router/index.js +43 -0
  34. package/dist/apps/admin/standalone.js +1 -0
  35. package/dist/apps/admin/store/auth.js +42 -0
  36. package/dist/apps/api/app.js +82 -0
  37. package/dist/apps/api/demo-data.d.ts.map +1 -1
  38. package/dist/apps/api/demo-data.js +965 -0
  39. package/dist/apps/api/docs-viewer.js +684 -0
  40. package/dist/apps/api/i18n/de-DE.d.ts.map +1 -1
  41. package/dist/apps/api/i18n/de-DE.js +131 -0
  42. package/dist/apps/api/i18n/en-US.d.ts.map +1 -1
  43. package/dist/apps/api/i18n/en-US.js +141 -0
  44. package/dist/apps/api/i18n/es-ES.d.ts.map +1 -1
  45. package/dist/apps/api/i18n/es-ES.js +131 -0
  46. package/dist/apps/api/i18n/fr-FR.d.ts.map +1 -1
  47. package/dist/apps/api/i18n/fr-FR.js +131 -0
  48. package/dist/apps/api/i18n/index.js +27 -0
  49. package/dist/apps/api/i18n/ja-JP.d.ts.map +1 -1
  50. package/dist/apps/api/i18n/ja-JP.js +131 -0
  51. package/dist/apps/api/i18n/ko-KR.d.ts.map +1 -1
  52. package/dist/apps/api/i18n/ko-KR.js +131 -0
  53. package/dist/apps/api/i18n/pt-BR.d.ts.map +1 -1
  54. package/dist/apps/api/i18n/pt-BR.js +131 -0
  55. package/dist/apps/api/i18n/zh-CN.d.ts.map +1 -1
  56. package/dist/apps/api/i18n/zh-CN.js +141 -0
  57. package/dist/apps/api/i18n/zh-HK.d.ts.map +1 -1
  58. package/dist/apps/api/i18n/zh-HK.js +131 -0
  59. package/dist/apps/api/i18n/zh-TW.d.ts.map +1 -1
  60. package/dist/apps/api/i18n/zh-TW.js +131 -0
  61. package/dist/apps/api/pages/docs.d.ts.map +1 -1
  62. package/dist/apps/api/pages/docs.js +369 -0
  63. package/dist/apps/api/standalone.js +1 -0
  64. package/dist/apps/demo/app.d.ts.map +1 -1
  65. package/dist/apps/demo/app.js +275 -0
  66. package/dist/apps/demo/editor.d.ts.map +1 -1
  67. package/dist/apps/demo/editor.js +270 -0
  68. package/dist/apps/demo/helpers.js +7 -0
  69. package/dist/apps/demo/i18n/de-DE.d.ts.map +1 -1
  70. package/dist/apps/demo/i18n/de-DE.js +289 -0
  71. package/dist/apps/demo/i18n/en-US.d.ts.map +1 -1
  72. package/dist/apps/demo/i18n/en-US.js +301 -0
  73. package/dist/apps/demo/i18n/es-ES.d.ts.map +1 -1
  74. package/dist/apps/demo/i18n/es-ES.js +289 -0
  75. package/dist/apps/demo/i18n/fr-FR.d.ts.map +1 -1
  76. package/dist/apps/demo/i18n/fr-FR.js +289 -0
  77. package/dist/apps/demo/i18n/index.js +27 -0
  78. package/dist/apps/demo/i18n/ja-JP.d.ts.map +1 -1
  79. package/dist/apps/demo/i18n/ja-JP.js +289 -0
  80. package/dist/apps/demo/i18n/ko-KR.d.ts.map +1 -1
  81. package/dist/apps/demo/i18n/ko-KR.js +289 -0
  82. package/dist/apps/demo/i18n/pt-BR.d.ts.map +1 -1
  83. package/dist/apps/demo/i18n/pt-BR.js +289 -0
  84. package/dist/apps/demo/i18n/zh-CN.d.ts.map +1 -1
  85. package/dist/apps/demo/i18n/zh-CN.js +301 -0
  86. package/dist/apps/demo/i18n/zh-HK.d.ts.map +1 -1
  87. package/dist/apps/demo/i18n/zh-HK.js +289 -0
  88. package/dist/apps/demo/i18n/zh-TW.d.ts.map +1 -1
  89. package/dist/apps/demo/i18n/zh-TW.js +289 -0
  90. package/dist/apps/demo/pages/autoform.d.ts.map +1 -1
  91. package/dist/apps/demo/pages/autoform.js +422 -0
  92. package/dist/apps/demo/pages/autoview.d.ts +3 -0
  93. package/dist/apps/demo/pages/autoview.d.ts.map +1 -0
  94. package/dist/apps/demo/pages/autoview.js +310 -0
  95. package/dist/apps/demo/pages/basic.js +157 -0
  96. package/dist/apps/demo/pages/code.js +1088 -0
  97. package/dist/apps/demo/pages/container.js +42 -0
  98. package/dist/apps/demo/pages/dashboard.js +159 -0
  99. package/dist/apps/demo/pages/data.d.ts.map +1 -1
  100. package/dist/apps/demo/pages/data.js +327 -0
  101. package/dist/apps/demo/pages/display.d.ts.map +1 -1
  102. package/dist/apps/demo/pages/display.js +295 -0
  103. package/dist/apps/demo/pages/feedback.js +94 -0
  104. package/dist/apps/demo/pages/form.d.ts.map +1 -1
  105. package/dist/apps/demo/pages/form.js +119 -0
  106. package/dist/apps/demo/pages/layout.js +74 -0
  107. package/dist/apps/demo/pages/navigation.js +54 -0
  108. package/dist/apps/demo/pages/progress.js +42 -0
  109. package/dist/apps/demo/pages/theme.js +126 -0
  110. package/dist/apps/demo/standalone.js +1 -0
  111. package/dist/components/basic/AGENTS.md +1 -0
  112. package/dist/components/basic/avatar.js +168 -0
  113. package/dist/components/basic/badge.js +157 -0
  114. package/dist/components/basic/button-group.js +70 -0
  115. package/dist/components/basic/button.d.ts +2 -4
  116. package/dist/components/basic/button.d.ts.map +1 -1
  117. package/dist/components/basic/button.js +315 -0
  118. package/dist/components/basic/card.js +186 -0
  119. package/dist/components/basic/chip.js +103 -0
  120. package/dist/components/basic/divider.js +127 -0
  121. package/dist/components/basic/empty.js +72 -0
  122. package/dist/components/basic/icon.js +129 -0
  123. package/dist/components/basic/input.d.ts.map +1 -1
  124. package/dist/components/basic/input.js +314 -0
  125. package/dist/components/basic/tag.d.ts +7 -2
  126. package/dist/components/basic/tag.d.ts.map +1 -1
  127. package/dist/components/basic/tag.js +248 -0
  128. package/dist/components/basic/textarea.d.ts +0 -1
  129. package/dist/components/basic/textarea.d.ts.map +1 -1
  130. package/dist/components/basic/textarea.js +130 -0
  131. package/dist/components/container/callout.js +108 -0
  132. package/dist/components/container/details.js +117 -0
  133. package/dist/components/container/scroller.js +144 -0
  134. package/dist/components/container/split-panel.js +150 -0
  135. package/dist/components/data/AGENTS.md +1 -1
  136. package/dist/components/data/box-table.d.ts +53 -0
  137. package/dist/components/data/box-table.d.ts.map +1 -0
  138. package/dist/components/data/box-table.js +220 -0
  139. package/dist/components/data/dropdown.d.ts +8 -5
  140. package/dist/components/data/dropdown.d.ts.map +1 -1
  141. package/dist/components/data/dropdown.js +219 -0
  142. package/dist/components/data/metrics-group.js +180 -0
  143. package/dist/components/data/metrics.d.ts +11 -0
  144. package/dist/components/data/metrics.d.ts.map +1 -1
  145. package/dist/components/data/metrics.js +309 -0
  146. package/dist/components/data/pagination.js +119 -0
  147. package/dist/components/data/tab-pane.d.ts +58 -12
  148. package/dist/components/data/tab-pane.d.ts.map +1 -1
  149. package/dist/components/data/tab-pane.js +130 -0
  150. package/dist/components/data/table-column.d.ts +29 -5
  151. package/dist/components/data/table-column.d.ts.map +1 -1
  152. package/dist/components/data/table-column.js +123 -0
  153. package/dist/components/data/table.d.ts +134 -54
  154. package/dist/components/data/table.d.ts.map +1 -1
  155. package/dist/components/data/table.js +1210 -0
  156. package/dist/components/data/tabs.d.ts +60 -3
  157. package/dist/components/data/tabs.d.ts.map +1 -1
  158. package/dist/components/data/tabs.js +416 -0
  159. package/dist/components/data/timeline-item.js +127 -0
  160. package/dist/components/data/timeline.js +204 -0
  161. package/dist/components/data/tree-menu.d.ts +12 -2
  162. package/dist/components/data/tree-menu.d.ts.map +1 -1
  163. package/dist/components/data/tree-menu.js +482 -0
  164. package/dist/components/data/tree.js +269 -0
  165. package/dist/components/display/AGENTS.md +5 -2
  166. package/dist/components/display/animated-image.js +98 -0
  167. package/dist/components/display/autoview.d.ts +139 -0
  168. package/dist/components/display/autoview.d.ts.map +1 -0
  169. package/dist/components/display/autoview.js +460 -0
  170. package/dist/components/display/brief-box.d.ts +42 -0
  171. package/dist/components/display/brief-box.d.ts.map +1 -0
  172. package/dist/components/display/brief-box.js +117 -0
  173. package/dist/components/display/carousel.js +223 -0
  174. package/dist/components/display/code-editor.d.ts.map +1 -1
  175. package/dist/components/display/code-editor.js +976 -0
  176. package/dist/components/display/comparison.js +132 -0
  177. package/dist/components/display/desc-item.d.ts +48 -0
  178. package/dist/components/display/desc-item.d.ts.map +1 -0
  179. package/dist/components/display/desc-item.js +150 -0
  180. package/dist/components/display/desc.d.ts +68 -0
  181. package/dist/components/display/desc.d.ts.map +1 -0
  182. package/dist/components/display/desc.js +405 -0
  183. package/dist/components/display/detail-box.d.ts +51 -0
  184. package/dist/components/display/detail-box.d.ts.map +1 -0
  185. package/dist/components/display/detail-box.js +157 -0
  186. package/dist/components/display/label.js +166 -0
  187. package/dist/components/display/markdown-editor.js +319 -0
  188. package/dist/components/display/markdown.d.ts.map +1 -1
  189. package/dist/components/display/markdown.js +193 -0
  190. package/dist/components/display/mini-box.d.ts +31 -0
  191. package/dist/components/display/mini-box.d.ts.map +1 -0
  192. package/dist/components/display/mini-box.js +137 -0
  193. package/dist/components/display/profile.d.ts +18 -0
  194. package/dist/components/display/profile.d.ts.map +1 -0
  195. package/dist/components/display/profile.js +164 -0
  196. package/dist/components/feedback/AGENTS.md +1 -0
  197. package/dist/components/feedback/alert.js +150 -0
  198. package/dist/components/feedback/dialog.js +228 -0
  199. package/dist/components/feedback/drawer.d.ts.map +1 -1
  200. package/dist/components/feedback/drawer.js +338 -0
  201. package/dist/components/feedback/loading.js +130 -0
  202. package/dist/components/feedback/modal.d.ts.map +1 -1
  203. package/dist/components/feedback/modal.js +303 -0
  204. package/dist/components/feedback/notification.js +170 -0
  205. package/dist/components/feedback/popover.d.ts +1 -1
  206. package/dist/components/feedback/popover.js +124 -0
  207. package/dist/components/feedback/toast.js +142 -0
  208. package/dist/components/feedback/tooltip.d.ts +1 -1
  209. package/dist/components/feedback/tooltip.js +153 -0
  210. package/dist/components/form/AGENTS.md +4 -0
  211. package/dist/components/form/autoform-item.d.ts +6 -0
  212. package/dist/components/form/autoform-item.d.ts.map +1 -1
  213. package/dist/components/form/autoform-item.js +791 -0
  214. package/dist/components/form/autoform.d.ts +15 -5
  215. package/dist/components/form/autoform.d.ts.map +1 -1
  216. package/dist/components/form/autoform.js +303 -0
  217. package/dist/components/form/checkbox-group.js +118 -0
  218. package/dist/components/form/checkbox.js +123 -0
  219. package/dist/components/form/color-picker.js +148 -0
  220. package/dist/components/form/combobox.d.ts +4 -0
  221. package/dist/components/form/combobox.d.ts.map +1 -1
  222. package/dist/components/form/combobox.js +325 -0
  223. package/dist/components/form/date-picker.js +123 -0
  224. package/dist/components/form/form-item.d.ts.map +1 -1
  225. package/dist/components/form/form-item.js +141 -0
  226. package/dist/components/form/form.js +94 -0
  227. package/dist/components/form/radio-group.js +106 -0
  228. package/dist/components/form/radio.js +110 -0
  229. package/dist/components/form/rate.js +116 -0
  230. package/dist/components/form/select.d.ts +5 -1
  231. package/dist/components/form/select.d.ts.map +1 -1
  232. package/dist/components/form/select.js +539 -0
  233. package/dist/components/form/slider.js +134 -0
  234. package/dist/components/form/switch.js +146 -0
  235. package/dist/components/form/time-picker.js +92 -0
  236. package/dist/components/form/transfer.js +273 -0
  237. package/dist/components/form/upload.js +138 -0
  238. package/dist/components/framework/body.js +333 -0
  239. package/dist/components/framework/dashboard-panel.js +519 -0
  240. package/dist/components/framework/dashboard.d.ts.map +1 -1
  241. package/dist/components/framework/dashboard.js +1084 -0
  242. package/dist/components/framework/header.js +237 -0
  243. package/dist/components/framework/log-panel.js +637 -0
  244. package/dist/components/framework/page.js +151 -0
  245. package/dist/components/framework/sidebar.d.ts +4 -10
  246. package/dist/components/framework/sidebar.d.ts.map +1 -1
  247. package/dist/components/framework/sidebar.js +477 -0
  248. package/dist/components/layout/affix.js +137 -0
  249. package/dist/components/layout/col.js +103 -0
  250. package/dist/components/layout/collapse-item.js +165 -0
  251. package/dist/components/layout/collapse.js +108 -0
  252. package/dist/components/layout/container.js +92 -0
  253. package/dist/components/layout/flex.js +100 -0
  254. package/dist/components/layout/row.js +103 -0
  255. package/dist/components/layout/space.js +85 -0
  256. package/dist/components/navigation/back-top.js +127 -0
  257. package/dist/components/navigation/breadcrumb-item.js +108 -0
  258. package/dist/components/navigation/breadcrumb.js +70 -0
  259. package/dist/components/navigation/menu-item.js +181 -0
  260. package/dist/components/navigation/menu.js +126 -0
  261. package/dist/components/navigation/steps.js +183 -0
  262. package/dist/components/navigation/sub-menu.d.ts.map +1 -1
  263. package/dist/components/navigation/sub-menu.js +252 -0
  264. package/dist/components/progress/progress-bar.js +97 -0
  265. package/dist/components/progress/progress-ring.js +111 -0
  266. package/dist/components/progress/skeleton.js +108 -0
  267. package/dist/components/progress/spinner.js +129 -0
  268. package/dist/components/theme/locale-switch.js +241 -0
  269. package/dist/components/theme/shadow-picker.js +233 -0
  270. package/dist/components/theme/shape-picker.js +232 -0
  271. package/dist/components/theme/theme-picker.js +236 -0
  272. package/dist/components/theme/theme-preview.d.ts +1 -2
  273. package/dist/components/theme/theme-preview.d.ts.map +1 -1
  274. package/dist/components/theme/theme-preview.js +376 -0
  275. package/dist/components/theme/theme-switch.d.ts.map +1 -1
  276. package/dist/components/theme/theme-switch.js +318 -0
  277. package/dist/components/theme/typo-picker.js +219 -0
  278. package/dist/core/AGENTS.md +6 -1
  279. package/dist/core/aithe-element.d.ts +2 -2
  280. package/dist/core/aithe-element.js +135 -0
  281. package/dist/core/aithe-widget.js +30 -0
  282. package/dist/core/anchored-overlay.d.ts +3 -0
  283. package/dist/core/anchored-overlay.d.ts.map +1 -1
  284. package/dist/core/anchored-overlay.js +111 -0
  285. package/dist/core/autoform/autoform.js +79 -0
  286. package/dist/core/autoform/autoview.d.ts +86 -0
  287. package/dist/core/autoform/autoview.d.ts.map +1 -0
  288. package/dist/core/autoform/autoview.js +37 -0
  289. package/dist/core/autoform/condition.js +170 -0
  290. package/dist/core/autoform/index.d.ts +2 -0
  291. package/dist/core/autoform/index.d.ts.map +1 -1
  292. package/dist/core/autoform/index.js +9 -0
  293. package/dist/core/autoform/types.js +7 -0
  294. package/dist/core/datahub/__tests__/force-options.test.d.ts +8 -0
  295. package/dist/core/datahub/__tests__/force-options.test.d.ts.map +1 -0
  296. package/dist/core/datahub/__tests__/force-options.test.js +161 -0
  297. package/dist/core/datahub/config/strategy.d.ts +1 -1
  298. package/dist/core/datahub/config/strategy.d.ts.map +1 -1
  299. package/dist/core/datahub/config/strategy.js +50 -0
  300. package/dist/core/datahub/core/adapter/fetch-adapter.d.ts +1 -1
  301. package/dist/core/datahub/core/adapter/fetch-adapter.d.ts.map +1 -1
  302. package/dist/core/datahub/core/adapter/fetch-adapter.js +118 -0
  303. package/dist/core/datahub/core/adapter/index.js +7 -0
  304. package/dist/core/datahub/core/adapter/mock-adapter.d.ts +1 -1
  305. package/dist/core/datahub/core/adapter/mock-adapter.d.ts.map +1 -1
  306. package/dist/core/datahub/core/adapter/mock-adapter.js +58 -0
  307. package/dist/core/datahub/core/api-styles.d.ts +1 -1
  308. package/dist/core/datahub/core/api-styles.d.ts.map +1 -1
  309. package/dist/core/datahub/core/api-styles.js +136 -0
  310. package/dist/core/datahub/core/datahub-core.d.ts +53 -3
  311. package/dist/core/datahub/core/datahub-core.d.ts.map +1 -1
  312. package/dist/core/datahub/core/datahub-core.js +520 -0
  313. package/dist/core/datahub/core/index.js +7 -0
  314. package/dist/core/datahub/index.js +50 -0
  315. package/dist/core/datahub/types.d.ts +24 -0
  316. package/dist/core/datahub/types.d.ts.map +1 -1
  317. package/dist/core/datahub/types.js +31 -0
  318. package/dist/core/datahub/utils/cache.js +55 -0
  319. package/dist/core/datahub/utils/common.js +23 -0
  320. package/dist/core/datahub/utils/dedup.d.ts +1 -1
  321. package/dist/core/datahub/utils/dedup.d.ts.map +1 -1
  322. package/dist/core/datahub/utils/dedup.js +52 -0
  323. package/dist/core/datahub/utils/idempotent.js +61 -0
  324. package/dist/core/datahub/utils/is-query.js +53 -0
  325. package/dist/core/datahub/utils/loading.js +78 -0
  326. package/dist/core/filter/__tests__/index.test.d.ts +2 -0
  327. package/dist/core/filter/__tests__/index.test.d.ts.map +1 -0
  328. package/dist/core/filter/__tests__/index.test.js +230 -0
  329. package/dist/core/filter/builtins.d.ts +60 -0
  330. package/dist/core/filter/builtins.d.ts.map +1 -0
  331. package/dist/core/filter/builtins.js +172 -0
  332. package/dist/core/filter/factory.d.ts +54 -0
  333. package/dist/core/filter/factory.d.ts.map +1 -0
  334. package/dist/core/filter/factory.js +96 -0
  335. package/dist/core/filter/index.d.ts +11 -0
  336. package/dist/core/filter/index.d.ts.map +1 -0
  337. package/dist/core/filter/index.js +9 -0
  338. package/dist/core/filter/types.d.ts +12 -0
  339. package/dist/core/filter/types.d.ts.map +1 -0
  340. package/dist/core/filter/types.js +1 -0
  341. package/dist/core/floating.js +132 -0
  342. package/dist/core/highlight/index.js +43 -0
  343. package/dist/core/highlight/lang-bash.js +27 -0
  344. package/dist/core/highlight/lang-c.js +27 -0
  345. package/dist/core/highlight/lang-cmake.js +27 -0
  346. package/dist/core/highlight/lang-cpp.js +27 -0
  347. package/dist/core/highlight/lang-css.js +24 -0
  348. package/dist/core/highlight/lang-dart.js +27 -0
  349. package/dist/core/highlight/lang-dockerfile.js +16 -0
  350. package/dist/core/highlight/lang-fsharp.js +23 -0
  351. package/dist/core/highlight/lang-go.js +22 -0
  352. package/dist/core/highlight/lang-html.js +12 -0
  353. package/dist/core/highlight/lang-java.js +22 -0
  354. package/dist/core/highlight/lang-javascript.js +26 -0
  355. package/dist/core/highlight/lang-json.js +13 -0
  356. package/dist/core/highlight/lang-jsonline.js +13 -0
  357. package/dist/core/highlight/lang-jsx.js +30 -0
  358. package/dist/core/highlight/lang-kotlin.js +27 -0
  359. package/dist/core/highlight/lang-latex.js +22 -0
  360. package/dist/core/highlight/lang-lua.js +26 -0
  361. package/dist/core/highlight/lang-makefile.js +22 -0
  362. package/dist/core/highlight/lang-markdown.js +18 -0
  363. package/dist/core/highlight/lang-objectivec.js +24 -0
  364. package/dist/core/highlight/lang-perl.js +30 -0
  365. package/dist/core/highlight/lang-powershell.js +23 -0
  366. package/dist/core/highlight/lang-python.js +27 -0
  367. package/dist/core/highlight/lang-r.js +21 -0
  368. package/dist/core/highlight/lang-ruby.js +29 -0
  369. package/dist/core/highlight/lang-rust.js +24 -0
  370. package/dist/core/highlight/lang-scala.js +26 -0
  371. package/dist/core/highlight/lang-sql.js +21 -0
  372. package/dist/core/highlight/lang-svelte.js +27 -0
  373. package/dist/core/highlight/lang-swift.js +28 -0
  374. package/dist/core/highlight/lang-tsx.js +35 -0
  375. package/dist/core/highlight/lang-typescript.js +31 -0
  376. package/dist/core/highlight/lang-vue.js +29 -0
  377. package/dist/core/highlight/lang-wasm.js +22 -0
  378. package/dist/core/highlight/lang-xml.js +12 -0
  379. package/dist/core/highlight/lang-yaml.js +14 -0
  380. package/dist/core/highlight/registry.js +99 -0
  381. package/dist/core/logger/LoggerCore.js +626 -0
  382. package/dist/core/logger/index.js +10 -0
  383. package/dist/core/logger/types.js +29 -0
  384. package/dist/core/markdown/index.js +20 -0
  385. package/dist/core/markdown/parser.d.ts +2 -0
  386. package/dist/core/markdown/parser.d.ts.map +1 -1
  387. package/dist/core/markdown/parser.js +376 -0
  388. package/dist/core/markdown/plugins.d.ts +2 -1
  389. package/dist/core/markdown/plugins.d.ts.map +1 -1
  390. package/dist/core/markdown/plugins.js +755 -0
  391. package/dist/core/markdown/types.d.ts +5 -0
  392. package/dist/core/markdown/types.d.ts.map +1 -1
  393. package/dist/core/markdown/types.js +7 -0
  394. package/dist/core/router/index.js +244 -0
  395. package/dist/core/styles.js +44 -0
  396. package/dist/core/types.d.ts +52 -3
  397. package/dist/core/types.d.ts.map +1 -1
  398. package/dist/core/types.js +1 -0
  399. package/dist/index.d.ts +9 -0
  400. package/dist/index.d.ts.map +1 -1
  401. package/dist/index.js +3695 -1622
  402. package/dist/index.js.map +1 -1
  403. package/dist/index.umd.js +1844 -758
  404. package/dist/index.umd.js.map +1 -1
  405. package/dist/styles/aithe-ui.d.ts +23 -0
  406. package/dist/styles/aithe-ui.d.ts.map +1 -1
  407. package/dist/styles/aithe-ui.js +185 -0
  408. package/dist/styles/global.css.d.ts +1 -1
  409. package/dist/styles/global.css.d.ts.map +1 -1
  410. package/dist/styles/global.css.js +119 -0
  411. package/dist/styles/i18n/index.js +206 -0
  412. package/dist/styles/i18n/locales/de-DE.d.ts.map +1 -1
  413. package/dist/styles/i18n/locales/de-DE.js +151 -0
  414. package/dist/styles/i18n/locales/en-US.d.ts.map +1 -1
  415. package/dist/styles/i18n/locales/en-US.js +160 -0
  416. package/dist/styles/i18n/locales/es-ES.d.ts.map +1 -1
  417. package/dist/styles/i18n/locales/es-ES.js +151 -0
  418. package/dist/styles/i18n/locales/fr-FR.d.ts.map +1 -1
  419. package/dist/styles/i18n/locales/fr-FR.js +151 -0
  420. package/dist/styles/i18n/locales/index.js +14 -0
  421. package/dist/styles/i18n/locales/ja-JP.d.ts.map +1 -1
  422. package/dist/styles/i18n/locales/ja-JP.js +151 -0
  423. package/dist/styles/i18n/locales/ko-KR.d.ts.map +1 -1
  424. package/dist/styles/i18n/locales/ko-KR.js +151 -0
  425. package/dist/styles/i18n/locales/pt-BR.d.ts.map +1 -1
  426. package/dist/styles/i18n/locales/pt-BR.js +151 -0
  427. package/dist/styles/i18n/locales/zh-CN.d.ts.map +1 -1
  428. package/dist/styles/i18n/locales/zh-CN.js +160 -0
  429. package/dist/styles/i18n/locales/zh-HK.d.ts.map +1 -1
  430. package/dist/styles/i18n/locales/zh-HK.js +151 -0
  431. package/dist/styles/i18n/locales/zh-TW.d.ts.map +1 -1
  432. package/dist/styles/i18n/locales/zh-TW.js +151 -0
  433. package/dist/styles/layout/index.js +88 -0
  434. package/dist/styles/mixins.js +43 -0
  435. package/dist/styles/shadow/cyber.js +19 -0
  436. package/dist/styles/shadow/deep.js +19 -0
  437. package/dist/styles/shadow/diffuse.js +19 -0
  438. package/dist/styles/shadow/flat.js +19 -0
  439. package/dist/styles/shadow/glassmorphism.js +19 -0
  440. package/dist/styles/shadow/index.js +129 -0
  441. package/dist/styles/shadow/neumorphism.js +21 -0
  442. package/dist/styles/shadow/retro.js +19 -0
  443. package/dist/styles/shadow/sharp-business.js +19 -0
  444. package/dist/styles/shadow/skeuomorphic.js +21 -0
  445. package/dist/styles/shape/chamfer.js +19 -0
  446. package/dist/styles/shape/circle.js +19 -0
  447. package/dist/styles/shape/index.js +174 -0
  448. package/dist/styles/shape/organic.js +19 -0
  449. package/dist/styles/shape/pill.js +19 -0
  450. package/dist/styles/shape/rounded.js +21 -0
  451. package/dist/styles/shape/rounder.js +19 -0
  452. package/dist/styles/shape/sharp.js +19 -0
  453. package/dist/styles/shape/smooth.js +19 -0
  454. package/dist/styles/theme/aliyun.d.ts +1 -1
  455. package/dist/styles/theme/aliyun.d.ts.map +1 -1
  456. package/dist/styles/theme/aliyun.js +102 -0
  457. package/dist/styles/theme/amber.d.ts +1 -1
  458. package/dist/styles/theme/amber.d.ts.map +1 -1
  459. package/dist/styles/theme/amber.js +101 -0
  460. package/dist/styles/theme/blue.d.ts +1 -1
  461. package/dist/styles/theme/blue.d.ts.map +1 -1
  462. package/dist/styles/theme/blue.js +101 -0
  463. package/dist/styles/theme/charcoal.d.ts +1 -1
  464. package/dist/styles/theme/charcoal.d.ts.map +1 -1
  465. package/dist/styles/theme/charcoal.js +106 -0
  466. package/dist/styles/theme/cyan.d.ts +1 -1
  467. package/dist/styles/theme/cyan.d.ts.map +1 -1
  468. package/dist/styles/theme/cyan.js +96 -0
  469. package/dist/styles/theme/dark.d.ts +1 -1
  470. package/dist/styles/theme/dark.d.ts.map +1 -1
  471. package/dist/styles/theme/dark.js +106 -0
  472. package/dist/styles/theme/ebony.d.ts +1 -1
  473. package/dist/styles/theme/ebony.d.ts.map +1 -1
  474. package/dist/styles/theme/ebony.js +106 -0
  475. package/dist/styles/theme/festive.d.ts +1 -1
  476. package/dist/styles/theme/festive.d.ts.map +1 -1
  477. package/dist/styles/theme/festive.js +101 -0
  478. package/dist/styles/theme/graphite.d.ts +1 -1
  479. package/dist/styles/theme/graphite.d.ts.map +1 -1
  480. package/dist/styles/theme/graphite.js +106 -0
  481. package/dist/styles/theme/gray.d.ts +1 -1
  482. package/dist/styles/theme/gray.d.ts.map +1 -1
  483. package/dist/styles/theme/gray.js +101 -0
  484. package/dist/styles/theme/huawei.d.ts +1 -1
  485. package/dist/styles/theme/huawei.d.ts.map +1 -1
  486. package/dist/styles/theme/huawei.js +102 -0
  487. package/dist/styles/theme/index.d.ts +1 -1
  488. package/dist/styles/theme/index.d.ts.map +1 -1
  489. package/dist/styles/theme/index.js +276 -0
  490. package/dist/styles/theme/indigo.d.ts +1 -1
  491. package/dist/styles/theme/indigo.d.ts.map +1 -1
  492. package/dist/styles/theme/indigo.js +101 -0
  493. package/dist/styles/theme/ink.d.ts +1 -1
  494. package/dist/styles/theme/ink.d.ts.map +1 -1
  495. package/dist/styles/theme/ink.js +106 -0
  496. package/dist/styles/theme/light.d.ts +1 -1
  497. package/dist/styles/theme/light.d.ts.map +1 -1
  498. package/dist/styles/theme/light.js +102 -0
  499. package/dist/styles/theme/midnight.d.ts +1 -1
  500. package/dist/styles/theme/midnight.d.ts.map +1 -1
  501. package/dist/styles/theme/midnight.js +106 -0
  502. package/dist/styles/theme/navy.d.ts +1 -1
  503. package/dist/styles/theme/navy.d.ts.map +1 -1
  504. package/dist/styles/theme/navy.js +106 -0
  505. package/dist/styles/theme/obsidian.d.ts +1 -1
  506. package/dist/styles/theme/obsidian.d.ts.map +1 -1
  507. package/dist/styles/theme/obsidian.js +106 -0
  508. package/dist/styles/theme/onyx.d.ts +1 -1
  509. package/dist/styles/theme/onyx.d.ts.map +1 -1
  510. package/dist/styles/theme/onyx.js +106 -0
  511. package/dist/styles/theme/orange.d.ts +1 -1
  512. package/dist/styles/theme/orange.d.ts.map +1 -1
  513. package/dist/styles/theme/orange.js +101 -0
  514. package/dist/styles/theme/pink.d.ts +1 -1
  515. package/dist/styles/theme/pink.d.ts.map +1 -1
  516. package/dist/styles/theme/pink.js +101 -0
  517. package/dist/styles/theme/purple.d.ts +1 -1
  518. package/dist/styles/theme/purple.d.ts.map +1 -1
  519. package/dist/styles/theme/purple.js +101 -0
  520. package/dist/styles/theme/raisin.d.ts +1 -1
  521. package/dist/styles/theme/raisin.d.ts.map +1 -1
  522. package/dist/styles/theme/raisin.js +106 -0
  523. package/dist/styles/theme/slate.d.ts +1 -1
  524. package/dist/styles/theme/slate.d.ts.map +1 -1
  525. package/dist/styles/theme/slate.js +106 -0
  526. package/dist/styles/theme/teal.d.ts +1 -1
  527. package/dist/styles/theme/teal.d.ts.map +1 -1
  528. package/dist/styles/theme/teal.js +101 -0
  529. package/dist/styles/theme/tianyi.d.ts +1 -1
  530. package/dist/styles/theme/tianyi.d.ts.map +1 -1
  531. package/dist/styles/theme/tianyi.js +102 -0
  532. package/dist/styles/types.js +1 -0
  533. package/dist/styles/typo/business.js +34 -0
  534. package/dist/styles/typo/compact.js +34 -0
  535. package/dist/styles/typo/index.js +99 -0
  536. package/dist/styles/typo/luxury.js +34 -0
  537. package/dist/styles/typo/minimal.js +34 -0
  538. package/dist/types/index.js +2 -0
  539. package/dist/utils/dom.js +51 -0
  540. package/dist/utils/events.js +32 -0
  541. package/dist/utils/icon.js +176 -0
  542. package/dist/utils/index.js +4 -0
  543. package/dist/utils/utils.d.ts +5 -5
  544. package/dist/utils/utils.js +89 -0
  545. package/dist/utils/validation.js +52 -0
  546. package/docs/api/basic/button.md +9 -6
  547. package/docs/api/basic/tag.md +24 -17
  548. package/docs/api/data/box-table.md +73 -0
  549. package/docs/api/data/dropdown.md +3 -2
  550. package/docs/api/data/metrics.md +2 -0
  551. package/docs/api/data/table-column.md +37 -23
  552. package/docs/api/data/table.md +158 -44
  553. package/docs/api/data/tabs.md +46 -1
  554. package/docs/api/data/tree-menu.md +55 -2
  555. package/docs/api/display/autoview.md +277 -0
  556. package/docs/api/display/box.md +66 -0
  557. package/docs/api/display/brief-box.md +73 -0
  558. package/docs/api/display/desc-item.md +57 -0
  559. package/docs/api/display/desc.md +246 -0
  560. package/docs/api/display/detail-box.md +75 -0
  561. package/docs/api/display/mini-box.md +100 -0
  562. package/docs/api/display/profile.md +92 -0
  563. package/docs/api/feedback/popover.md +10 -10
  564. package/docs/api/feedback/tooltip.md +14 -14
  565. package/docs/api/form/autoform-item.md +115 -0
  566. package/docs/api/form/autoform.md +7 -3
  567. package/docs/api/form/combobox.md +27 -7
  568. package/docs/api/form/select.md +50 -28
  569. package/docs/api/framework/log-panel.md +46 -0
  570. package/docs/api/framework/sidebar.md +3 -2
  571. package/docs/api/summary.md +46 -35
  572. package/docs/api/theme/theme-switch.md +1 -1
  573. package/docs/autoform.md +14 -33
  574. package/docs/changelog/CHANGELOG.md +155 -0
  575. package/docs/changelog/VERSION_26.3.1.md +966 -0
  576. package/docs/changelog/VERSION_26.3.2.md +852 -0
  577. package/docs/datahub.md +4 -1
  578. package/docs/filter.md +332 -0
  579. package/docs/framework-integration.md +2 -2
  580. package/docs/guide.md +72 -6
  581. package/docs/i18n.md +2 -4
  582. package/docs/issue/26.3.1/issue_26.3.1.0.md +84 -0
  583. package/docs/issue/26.3.1/issue_26.3.1.1.md +72 -0
  584. package/docs/issue/26.3.1/issue_26.3.1.2.md +75 -0
  585. package/docs/issue/26.3.1/issue_26.3.1.3.md +78 -0
  586. package/docs/issue/26.3.1/issue_26.3.1.4.md +113 -0
  587. package/docs/issue/26.3.1/issue_26.3.1.5.md +142 -0
  588. package/docs/issue/26.3.1/issue_26.3.1.6.md +100 -0
  589. package/docs/issue/26.3.1/issue_26.3.1.7.md +78 -0
  590. package/docs/issue/26.3.2/issue_26.3.2.1.md +46 -0
  591. package/docs/issue/26.3.2/issue_26.3.2.2.md +82 -0
  592. package/docs/issue/26.3.2/issue_26.3.2.3.md +57 -0
  593. package/docs/issue/26.3.2/issue_26.3.2.4.md +43 -0
  594. package/docs/issue/AGENTS.md +24 -3
  595. package/docs/markdown.md +2 -2
  596. package/docs/quickstart.md +5 -5
  597. package/docs/theming.md +5 -4
  598. package/package.json +5 -2
  599. package/dist/components/navigation/dropdown.d.ts +0 -56
  600. package/dist/components/navigation/dropdown.d.ts.map +0 -1
  601. /package/docs/issue/{issue_26.2.2.1.md → 26.2.2/issue_26.2.2.1.md} +0 -0
  602. /package/docs/issue/{issue_26.2.2.2.md → 26.2.2/issue_26.2.2.2.md} +0 -0
  603. /package/docs/issue/{issue_26.2.2.3.md → 26.2.2/issue_26.2.2.3.md} +0 -0
  604. /package/docs/issue/{issue_26.2.2.4.md → 26.2.2/issue_26.2.2.4.md} +0 -0
  605. /package/docs/issue/{issue_26.2.3.1.md → 26.2.3/issue_26.2.3.1.md} +0 -0
  606. /package/docs/issue/{issue_26.2.3.10.md → 26.2.3/issue_26.2.3.10.md} +0 -0
  607. /package/docs/issue/{issue_26.2.3.11.md → 26.2.3/issue_26.2.3.11.md} +0 -0
  608. /package/docs/issue/{issue_26.2.3.12.md → 26.2.3/issue_26.2.3.12.md} +0 -0
  609. /package/docs/issue/{issue_26.2.3.13.md → 26.2.3/issue_26.2.3.13.md} +0 -0
  610. /package/docs/issue/{issue_26.2.3.14.md → 26.2.3/issue_26.2.3.14.md} +0 -0
  611. /package/docs/issue/{issue_26.2.3.15.md → 26.2.3/issue_26.2.3.15.md} +0 -0
  612. /package/docs/issue/{issue_26.2.3.16.md → 26.2.3/issue_26.2.3.16.md} +0 -0
  613. /package/docs/issue/{issue_26.2.3.2.md → 26.2.3/issue_26.2.3.2.md} +0 -0
  614. /package/docs/issue/{issue_26.2.3.3.md → 26.2.3/issue_26.2.3.3.md} +0 -0
  615. /package/docs/issue/{issue_26.2.3.4.md → 26.2.3/issue_26.2.3.4.md} +0 -0
  616. /package/docs/issue/{issue_26.2.3.5.md → 26.2.3/issue_26.2.3.5.md} +0 -0
  617. /package/docs/issue/{issue_26.2.3.6.md → 26.2.3/issue_26.2.3.6.md} +0 -0
  618. /package/docs/issue/{issue_26.2.3.7.md → 26.2.3/issue_26.2.3.7.md} +0 -0
  619. /package/docs/issue/{issue_26.2.3.8.md → 26.2.3/issue_26.2.3.8.md} +0 -0
  620. /package/docs/issue/{issue_26.2.3.9.md → 26.2.3/issue_26.2.3.9.md} +0 -0
@@ -0,0 +1,1088 @@
1
+ import { t } from '../../../styles/i18n';
2
+ const jsCode = `function fibonacci(n) {
3
+ if (n <= 1) return n;
4
+ return fibonacci(n - 1) + fibonacci(n - 2);
5
+ }
6
+
7
+ const result = fibonacci(10);
8
+ console.log('Fibonacci(10) =', result);`;
9
+ const tsCode = `interface User {
10
+ name: string;
11
+ age: number;
12
+ email: string;
13
+ }
14
+
15
+ function greet(user: User): string {
16
+ return \`Hello, \${user.name}! You are \${user.age} years old.\`;
17
+ }
18
+
19
+ const user: User = { name: 'Alice', age: 30, email: 'alice@example.com' };
20
+ console.log(greet(user));`;
21
+ const cCode = `#include <stdio.h>
22
+
23
+ int factorial(int n) {
24
+ if (n <= 1) return 1;
25
+ return n * factorial(n - 1);
26
+ }
27
+
28
+ int main() {
29
+ printf("Factorial(5) = %d\\n", factorial(5));
30
+ return 0;
31
+ }`;
32
+ const cppCode = `#include <iostream>
33
+ #include <vector>
34
+ #include <algorithm>
35
+
36
+ int main() {
37
+ std::vector<int> nums = {5, 3, 8, 1, 9, 2};
38
+ std::sort(nums.begin(), nums.end());
39
+
40
+ for (const auto& n : nums) {
41
+ std::cout << n << " ";
42
+ }
43
+ std::cout << std::endl;
44
+ return 0;
45
+ }`;
46
+ const javaCode = `import java.util.ArrayList;
47
+ import java.util.List;
48
+
49
+ public class Main {
50
+ public static void main(String[] args) {
51
+ List<String> items = new ArrayList<>();
52
+ items.add("Apple");
53
+ items.add("Banana");
54
+ items.add("Cherry");
55
+
56
+ items.stream()
57
+ .filter(s -> s.startsWith("A"))
58
+ .forEach(System.out::println);
59
+ }
60
+ }`;
61
+ const htmlCode = `<!DOCTYPE html>
62
+ <html lang="en">
63
+ <head>
64
+ <meta charset="UTF-8">
65
+ <title>Aithe UI Demo</title>
66
+ </head>
67
+ <body>
68
+ <h1>Hello, Aithe UI!</h1>
69
+ <p>A lightweight design system.</p>
70
+ </body>
71
+ </html>`;
72
+ const xmlCode = `<?xml version="1.0" encoding="UTF-8"?>
73
+ <configuration>
74
+ <database>
75
+ <host>localhost</host>
76
+ <port>5432</port>
77
+ <name>aithe_db</name>
78
+ </database>
79
+ <server>
80
+ <port>8080</port>
81
+ <cors>true</cors>
82
+ </server>
83
+ </configuration>`;
84
+ const jsonCode = `{
85
+ "name": "aithe-ui",
86
+ "version": "26.2.3",
87
+ "description": "Enterprise design system",
88
+ "keywords": ["lit", "web-components", "design-system"],
89
+ "license": "MIT"
90
+ }`;
91
+ const jsonlineCode = `{"level":"info","time":"2026-05-26T10:30:00Z","msg":"Server started","port":8080}
92
+ {"level":"warn","time":"2026-05-26T10:30:01Z","msg":"Slow query detected","duration":1200}
93
+ {"level":"error","time":"2026-05-26T10:30:02Z","msg":"Connection failed","retry":3}`;
94
+ const yamlCode = `server:
95
+ host: 0.0.0.0
96
+ port: 8080
97
+
98
+ database:
99
+ driver: postgresql
100
+ host: localhost
101
+ port: 5432
102
+ name: aithe_db
103
+
104
+ logging:
105
+ level: info
106
+ format: json`;
107
+ const mdCode = `# Aithe UI Design System
108
+
109
+ A lightweight **enterprise design system** built with Lit.
110
+
111
+ ## Features
112
+
113
+ - Web Components based
114
+ - Themeable with CSS variables
115
+ - TypeScript support
116
+ - Accessible by design
117
+
118
+ ## Code Example
119
+
120
+ \`\`\`typescript
121
+ import { LitElement, html, css } from 'lit';
122
+ import { customElement, property } from 'lit/decorators.js';
123
+
124
+ @customElement('my-element')
125
+ export class MyElement extends LitElement {
126
+ @property({ type: String }) name = 'World';
127
+
128
+ render() {
129
+ return html\`<h1>Hello, \${this.name}!</h1>\`;
130
+ }
131
+ }
132
+ \`\`\`
133
+
134
+ ## Component Status
135
+
136
+ | Component | Status | Version |
137
+ |-----------|--------|---------|
138
+ | Button | ✅ Done | 2.0.0 |
139
+ | Table | ✅ Done | 1.5.0 |
140
+ | Form | 🚧 WIP | 0.9.0 |
141
+ | Chart | 📝 Plan | - |
142
+
143
+ > **Tip:** Use \`<aithe-markdown-editor>\` for rich text editing with live preview.`;
144
+ const pythonCode = `import asyncio
145
+ from typing import Optional
146
+
147
+
148
+ class DataProcessor:
149
+ """Process and transform data with async support."""
150
+
151
+ def __init__(self, name: str, config: Optional[dict] = None):
152
+ self.name = name
153
+ self.config = config or {}
154
+
155
+ async def fetch_data(self, url: str) -> dict:
156
+ async with aiohttp.ClientSession() as session:
157
+ async with session.get(url) as resp:
158
+ return await resp.json()
159
+
160
+ def transform(self, items: list) -> list:
161
+ return [item for item in items if item.get("active")]
162
+
163
+
164
+ async def main():
165
+ processor = DataProcessor("main")
166
+ data = await processor.fetch_data("https://api.example.com/data")
167
+ result = processor.transform(data)
168
+ print(f"Processed {len(result)} items")`;
169
+ const rubyCode = `require 'json'
170
+
171
+ class BlogPost
172
+ attr_reader :title, :body, :tags
173
+
174
+ def initialize(title:, body:, tags: [])
175
+ @title = title
176
+ @body = body
177
+ @tags = tags
178
+ end
179
+
180
+ def summary(length = 100)
181
+ body.length > length ? body[0...length] + '...' : body
182
+ end
183
+
184
+ def self.from_json(json_str)
185
+ data = JSON.parse(json_str)
186
+ new(title: data['title'], body: data['body'], tags: data['tags'] || [])
187
+ end
188
+ end
189
+
190
+ post = BlogPost.new(title: 'Hello Ruby', body: 'A dynamic language', tags: %w[ruby oop])
191
+ puts post.summary`;
192
+ const bashCode = `#!/bin/bash
193
+
194
+ # Build and deploy script
195
+ set -euo pipefail
196
+
197
+ PROJECT="aithe-ui"
198
+ VERSION="\${1:-latest}"
199
+
200
+ build_project() {
201
+ echo "Building $PROJECT:$VERSION..."
202
+ npm ci --silent
203
+ npm run build
204
+ docker build -t "$PROJECT:$VERSION" .
205
+ }
206
+
207
+ deploy_staging() {
208
+ echo "Deploying to staging..."
209
+ kubectl set image deployment/$PROJECT \\
210
+ $PROJECT="$PROJECT:$VERSION" \\
211
+ --namespace=staging
212
+ }
213
+
214
+ case "\${ENV:-dev}" in
215
+ staging) build_project && deploy_staging ;;
216
+ prod) echo "Production deploy requires approval" ;;
217
+ *) build_project ;;
218
+ esac`;
219
+ const cssCode = `:root {
220
+ --color-primary: #3b82f6;
221
+ --color-surface: oklch(0.98 0.01 240);
222
+ --shadow-card: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.08);
223
+ }
224
+
225
+ @container sidebar (min-width: 280px) {
226
+ .card {
227
+ display: grid;
228
+ grid-template-columns: 1fr 1fr;
229
+ gap: 1rem;
230
+ padding: clamp(0.5rem, 2vw, 1.5rem);
231
+ background: var(--color-surface);
232
+ border-radius: 12px;
233
+ box-shadow: var(--shadow-card);
234
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
235
+ }
236
+
237
+ .card:hover {
238
+ transform: translateY(-2px);
239
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
240
+ }
241
+ }
242
+
243
+ @media (prefers-color-scheme: dark) {
244
+ :root {
245
+ --color-primary: #60a5fa;
246
+ --color-surface: oklch(0.2 0.02 240);
247
+ }
248
+ }`;
249
+ const sqlCode = `-- Find top customers by revenue
250
+ WITH customer_revenue AS (
251
+ SELECT
252
+ c.id,
253
+ c.name,
254
+ c.email,
255
+ SUM(o.total_amount) AS total_spent,
256
+ COUNT(o.id) AS order_count
257
+ FROM customers c
258
+ JOIN orders o ON c.id = o.customer_id
259
+ WHERE o.status = 'completed'
260
+ AND o.created_at >= DATE_TRUNC('month', NOW())
261
+ GROUP BY c.id, c.name, c.email
262
+ HAVING SUM(o.total_amount) > 1000
263
+ )
264
+ SELECT
265
+ name,
266
+ email,
267
+ total_spent,
268
+ order_count,
269
+ RANK() OVER (ORDER BY total_spent DESC) AS rank
270
+ FROM customer_revenue
271
+ ORDER BY total_spent DESC
272
+ LIMIT 10;`;
273
+ const rustCode = `use serde::{Deserialize, Serialize};
274
+ use tokio::fs;
275
+
276
+ #[derive(Debug, Serialize, Deserialize)]
277
+ struct Config {
278
+ host: String,
279
+ port: u16,
280
+ workers: Option<usize>,
281
+ }
282
+
283
+ #[tokio::main]
284
+ async fn main() -> Result<(), Box<dyn std::error::Error>> {
285
+ let content = fs::read_to_string("config.toml").await?;
286
+ let config: Config = toml::from_str(&content)?;
287
+
288
+ let worker_count = config.workers.unwrap_or_else(num_cpus::get);
289
+
290
+ println!(
291
+ "Starting server on {}:{} with {} workers",
292
+ config.host, config.port, worker_count
293
+ );
294
+ Ok(())
295
+ }`;
296
+ const goCode = `package main
297
+
298
+ import (
299
+ "context"
300
+ "fmt"
301
+ "log"
302
+ "net/http"
303
+ "os/signal"
304
+ "syscall"
305
+ "time"
306
+ )
307
+
308
+ type Server struct {
309
+ port string
310
+ handler http.Handler
311
+ }
312
+
313
+ func NewServer(port string) *Server {
314
+ mux := http.NewServeMux()
315
+ mux.HandleFunc("GET /health", func(w http.ResponseWriter, r *http.Request) {
316
+ w.Write([]byte(` +
317
+ '`' +
318
+ `{"status":"ok"}` +
319
+ '`' +
320
+ `))
321
+ })
322
+ return &Server{port: port, handler: mux}
323
+ }
324
+
325
+ func (s *Server) Start(ctx context.Context) error {
326
+ srv := &http.Server{Addr: ":" + s.port, Handler: s.handler}
327
+ go srv.ListenAndServe()
328
+ <-ctx.Done()
329
+ return srv.Shutdown(context.Background())
330
+ }
331
+
332
+ func main() {
333
+ ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
334
+ defer stop()
335
+
336
+ server := NewServer("8080")
337
+ log.Printf("Server starting on :%s", server.port)
338
+ if err := server.Start(ctx); err != nil {
339
+ log.Fatal(err)
340
+ }
341
+ fmt.Println("Server stopped gracefully")
342
+ }`;
343
+ const kotlinCode = `import kotlinx.coroutines.*
344
+ import kotlinx.serialization.Serializable
345
+
346
+ @Serializable
347
+ data class User(
348
+ val id: Long,
349
+ val name: String,
350
+ val email: String,
351
+ val roles: List<String> = emptyList()
352
+ )
353
+
354
+ class UserService(private val db: Database) {
355
+ suspend fun getActiveUsers(): List<User> = withContext(Dispatchers.IO) {
356
+ db.query("SELECT * FROM users WHERE active = true")
357
+ .map { it.toUser() }
358
+ }
359
+
360
+ suspend fun createUser(name: String, email: String): User {
361
+ require(name.isNotBlank()) { "Name required" }
362
+ val id = db.insert("users", mapOf("name" to name, "email" to email))
363
+ return User(id, name, email)
364
+ }
365
+ }
366
+
367
+ fun main() = runBlocking {
368
+ val service = UserService(Database())
369
+ val users = service.getActiveUsers()
370
+ println("Active users: \${users.size}")
371
+ }`;
372
+ const swiftCode = `import SwiftUI
373
+
374
+ struct ContentView: View {
375
+ @State private var items: [String] = []
376
+ @State private var newItem: String = ""
377
+
378
+ var body: some View {
379
+ NavigationStack {
380
+ List {
381
+ ForEach(items, id: \\.self) { item in
382
+ Text(item)
383
+ .font(.body)
384
+ .swipeActions {
385
+ Button("Delete", role: .destructive) {
386
+ items.removeAll { $0 == item }
387
+ }
388
+ }
389
+ }
390
+ TextField("Add item", text: $newItem)
391
+ .onSubmit {
392
+ guard !newItem.isEmpty else { return }
393
+ items.append(newItem)
394
+ newItem = ""
395
+ }
396
+ }
397
+ .navigationTitle("Items ((items.count))")
398
+ }
399
+ }
400
+ }
401
+
402
+ #Preview {
403
+ ContentView()
404
+ }`;
405
+ const jsxCode = `import React, { useState, useEffect, useCallback } from 'react';
406
+
407
+ interface Todo {
408
+ id: number;
409
+ text: string;
410
+ done: boolean;
411
+ }
412
+
413
+ export default function TodoApp() {
414
+ const [todos, setTodos] = useState<Todo[]>([]);
415
+ const [input, setInput] = useState('');
416
+
417
+ const addTodo = useCallback(() => {
418
+ if (!input.trim()) return;
419
+ setTodos(prev => [...prev, {
420
+ id: Date.now(),
421
+ text: input,
422
+ done: false,
423
+ }]);
424
+ setInput('');
425
+ }, [input]);
426
+
427
+ return (
428
+ <div className="todo-app">
429
+ <h1>Todos</h1>
430
+ <div className="input-row">
431
+ <input
432
+ value={input}
433
+ onChange={e => setInput(e.target.value)}
434
+ onKeyDown={e => e.key === 'Enter' && addTodo()}
435
+ />
436
+ <button onClick={addTodo}>Add</button>
437
+ </div>
438
+ <ul>
439
+ {todos.map(todo => (
440
+ <li key={todo.id} className={todo.done ? 'done' : ''}>
441
+ <span>{todo.text}</span>
442
+ </li>
443
+ ))}
444
+ </ul>
445
+ </div>
446
+ );
447
+ }`;
448
+ const tsxCode = `import React, { useState } from 'react';
449
+
450
+ interface VideoPlayerProps {
451
+ src: string;
452
+ poster?: string;
453
+ onEnded?: () => void;
454
+ }
455
+
456
+ const VideoPlayer: React.FC<VideoPlayerProps> = ({ src, poster, onEnded }) => {
457
+ const [playing, setPlaying] = useState(false);
458
+ const videoRef = useRef<HTMLVideoElement>(null);
459
+
460
+ const togglePlay = () => {
461
+ const video = videoRef.current;
462
+ if (!video) return;
463
+ if (playing) {
464
+ video.pause();
465
+ } else {
466
+ video.play();
467
+ }
468
+ setPlaying(!playing);
469
+ };
470
+
471
+ return (
472
+ <div className="video-player">
473
+ <video ref={videoRef} src={src} poster={poster} onEnded={onEnded} />
474
+ <button onClick={togglePlay} aria-label={playing ? 'Pause' : 'Play'}>
475
+ {playing ? <PauseIcon /> : <PlayIcon />}
476
+ </button>
477
+ </div>
478
+ );
479
+ };
480
+
481
+ export default VideoPlayer;`;
482
+ const vueCode = `<script setup lang="ts">
483
+ import { ref, computed } from 'vue'
484
+
485
+ interface Task {
486
+ id: number
487
+ title: string
488
+ priority: 'low' | 'medium' | 'high'
489
+ done: boolean
490
+ }
491
+
492
+ const tasks = ref<Task[]>([])
493
+ const filter = ref<'all' | 'active' | 'done'>('all')
494
+
495
+ const filteredTasks = computed(() => {
496
+ switch (filter.value) {
497
+ case 'active': return tasks.value.filter(t => !t.done)
498
+ case 'done': return tasks.value.filter(t => t.done)
499
+ default: return tasks.value
500
+ }
501
+ })
502
+
503
+ function addTask(title: string) {
504
+ tasks.value.push({
505
+ id: Date.now(),
506
+ title,
507
+ priority: 'medium',
508
+ done: false,
509
+ })
510
+ }
511
+ </script>
512
+
513
+ <template>
514
+ <div class="task-manager">
515
+ <h1>Tasks ({{ filteredTasks.length }})</h1>
516
+ <input @keyup.enter="addTask($event.target.value)" placeholder="New task..." />
517
+ <select v-model="filter">
518
+ <option value="all">All</option>
519
+ <option value="active">Active</option>
520
+ <option value="done">Done</option>
521
+ </select>
522
+ <ul>
523
+ <li v-for="task in filteredTasks" :key="task.id"
524
+ :class="{ done: task.done }">
525
+ <input type="checkbox" v-model="task.done" />
526
+ <span>{{ task.title }}</span>
527
+ </li>
528
+ </ul>
529
+ </div>
530
+ </template>`;
531
+ const svelteCode = `<script lang="ts">
532
+ import { writable, derived } from 'svelte/store'
533
+
534
+ interface Message {
535
+ id: string
536
+ text: string
537
+ user: string
538
+ timestamp: Date
539
+ }
540
+
541
+ let messages: Message[] = []
542
+ let newMessage = ''
543
+
544
+ $: messageCount = messages.length
545
+ $: latestMessage = messages.at(-1)
546
+
547
+ function sendMessage() {
548
+ if (!newMessage.trim()) return
549
+ messages = [...messages, {
550
+ id: crypto.randomUUID(),
551
+ text: newMessage,
552
+ user: 'current-user',
553
+ timestamp: new Date(),
554
+ }]
555
+ newMessage = ''
556
+ }
557
+ </script>
558
+
559
+ <div class="chat">
560
+ <h1>Chat ({messageCount})</h1>
561
+ <div class="messages">
562
+ {#each messages as msg (msg.id)}
563
+ <div class="message">
564
+ <strong>{msg.user}</strong>
565
+ <p>{msg.text}</p>
566
+ <small>{msg.timestamp.toLocaleTimeString()}</small>
567
+ </div>
568
+ {/each}
569
+ </div>
570
+ <input bind:value={newMessage}
571
+ on:keydown={(e) => e.key === 'Enter' && sendMessage()}
572
+ placeholder="Type a message..." />
573
+ </div>`;
574
+ const wasmCode = `(module
575
+ (import "wasi_unstable" "fd_write" (func $fd_write (param i32 i32 i32 i32) (result i32)))
576
+
577
+ (memory (export "memory") 1)
578
+
579
+ (data (i32.const 0) "Hello, WebAssembly!\\0a")
580
+
581
+ (func (export "hello") (result i32)
582
+ i32.const 1
583
+ i32.const 0
584
+ i32.const 20
585
+ i32.const 100
586
+ call $fd_write
587
+ drop
588
+ i32.const 0
589
+ )
590
+
591
+ (func (export "add") (param i32 i32) (result i32)
592
+ local.get 0
593
+ local.get 1
594
+ i32.add
595
+ )
596
+ )`;
597
+ const dockerfileCode = `FROM node:20-alpine AS builder
598
+
599
+ WORKDIR /app
600
+ COPY package*.json ./
601
+ RUN npm ci --omit=dev
602
+
603
+ COPY . .
604
+ RUN npm run build
605
+
606
+ FROM nginx:1.25-alpine AS runner
607
+
608
+ RUN addgroup -S app && adduser -S app -G app
609
+
610
+ COPY --from=builder /app/dist /usr/share/nginx/html
611
+ COPY nginx.conf /etc/nginx/nginx.conf
612
+
613
+ EXPOSE 80
614
+
615
+ USER app
616
+ CMD ["nginx", "-g", "daemon off;"]`;
617
+ const makefileCode = `PROJECT := aithe-ui
618
+ VERSION := $(shell git describe --tags --always)
619
+ LDFLAGS := -ldflags="-X main.Version=$(VERSION)"
620
+
621
+ .PHONY: all build test clean install lint
622
+
623
+ all: clean lint test build
624
+
625
+ build:
626
+ go build $(LDFLAGS) -o bin/$(PROJECT) ./cmd/$(PROJECT)
627
+
628
+ test:
629
+ go test -v -race -coverprofile=coverage.out ./...
630
+ go tool cover -func=coverage.out
631
+
632
+ lint:
633
+ golangci-lint run ./...
634
+
635
+ install:
636
+ cp bin/$(PROJECT) /usr/local/bin/$(PROJECT)
637
+
638
+ clean:
639
+ rm -rf bin/ coverage.out dist/`;
640
+ const cmakeCode = `cmake_minimum_required(VERSION 3.20)
641
+ project(AitheUI VERSION 26.2.3 LANGUAGES CXX C)
642
+
643
+ set(CMAKE_CXX_STANDARD 20)
644
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
645
+ set(CMAKE_CXX_EXTENSIONS OFF)
646
+
647
+ find_package(FetchContent REQUIRED)
648
+
649
+ FetchContent_Declare(
650
+ nlohmann_json
651
+ GIT_REPOSITORY https://github.com/nlohmann/json.git
652
+ GIT_TAG v3.11.3
653
+ )
654
+ FetchContent_MakeAvailable(nlohmann_json)
655
+
656
+ add_library(aithe_core
657
+ src/core/engine.cpp
658
+ src/core/parser.cpp
659
+ src/core/renderer.cpp
660
+ )
661
+
662
+ target_include_directories(aithe_core PUBLIC src)
663
+ target_link_libraries(aithe_core PRIVATE nlohmann_json::nlohmann_json)
664
+
665
+ add_executable(aithe_cli src/main.cpp)
666
+ target_link_libraries(aithe_cli PRIVATE aithe_core)
667
+
668
+ install(TARGETS aithe_core aithe_cli DESTINATION lib)`;
669
+ const latexCode = String.raw `\documentclass[11pt,a4paper]{article}
670
+
671
+ \usepackage[utf8]{inputenc}
672
+ \usepackage{amsmath,amssymb}
673
+ \usepackage{graphicx}
674
+ \usepackage{hyperref}
675
+
676
+ \title{Notes on Machine Learning}
677
+ \author{Aithe Research}
678
+ \date{\today}
679
+
680
+ \begin{document}
681
+ \maketitle
682
+
683
+ \section{Linear Regression}
684
+
685
+ Given input features $x \in \mathbb{R}^n$ and target $y \in \mathbb{R}$,
686
+ the linear model is:
687
+
688
+ \begin{equation}
689
+ \hat{y} = \mathbf{w}^\top \mathbf{x} + b
690
+ \label{eq:linear}
691
+ \end{equation}
692
+
693
+ The cost function uses mean squared error:
694
+
695
+ \begin{equation}
696
+ J(\mathbf{w}, b) = \frac{1}{2m} \sum_{i=1}^{m}
697
+ (\hat{y}^{(i)} - y^{(i)})^2
698
+ \label{eq:mse}
699
+ \end{equation}
700
+
701
+ \subsection{Gradient Descent}
702
+
703
+ \begin{align}
704
+ w_j &:= w_j - \alpha \frac{\partial}{\partial w_j} J(\mathbf{w}, b) \\
705
+ b &:= b - \alpha \frac{\partial}{\partial b} J(\mathbf{w}, b)
706
+ \end{align}
707
+
708
+ \end{document}`;
709
+ const fsharpCode = `open System
710
+ open System.Threading.Tasks
711
+
712
+ type Result<'T> =
713
+ | Success of 'T
714
+ | Error of string
715
+
716
+ module UserService =
717
+ let getUser id : Async<Result<string>> = async {
718
+ try
719
+ let! data = Database.queryAsync "SELECT name FROM users WHERE id = @id" [ "id", id ]
720
+ return data
721
+ |> Seq.tryHead
722
+ |> Option.map (fun row -> Success (string row["name"]))
723
+ |> Option.defaultValue (Error "User not found")
724
+ with ex ->
725
+ return Error ex.Message
726
+ }
727
+
728
+ let createUser name email =
729
+ if String.IsNullOrWhiteSpace name then Error "Name required"
730
+ elif not (email.Contains "@") then Error "Invalid email"
731
+ else Success {| Name = name; Email = email |}
732
+
733
+ [<EntryPoint>]
734
+ let main argv =
735
+ async {
736
+ match! UserService.getUser 42 with
737
+ | Success name -> printfn "Hello, %s!" name
738
+ | Error msg -> printfn "Error: %s" msg
739
+ }
740
+ |> Async.RunSynchronously
741
+ 0`;
742
+ const powershellCode = `function Get-SystemReport {
743
+ <#
744
+ .SYNOPSIS
745
+ Generates a system health report.
746
+ #>
747
+ [CmdletBinding()]
748
+ param(
749
+ [Parameter(Mandatory)]
750
+ [string]$ComputerName,
751
+ [ValidateSet('CPU','Memory','Disk')]
752
+ [string[]]$Metrics = @('CPU','Memory')
753
+ )
754
+
755
+ $report = [PSCustomObject]@{
756
+ ComputerName = $ComputerName
757
+ Timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
758
+ CPU = (Get-Counter 'Processor(_Total)% Processor Time').CounterSamples.CookedValue
759
+ Memory = (Get-CimInstance Win32_OperatingSystem).FreePhysicalMemory / 1MB
760
+ }
761
+
762
+ if ('Disk' -in $Metrics) {
763
+ $report | Add-Member -NotePropertyName 'DiskFree' \`
764
+ -NotePropertyValue (Get-PSDrive C | Select-Object -ExpandProperty Free)
765
+ }
766
+ return $report
767
+ }
768
+
769
+ $report = Get-SystemReport -ComputerName 'SRV-001' -Metrics 'CPU','Memory','Disk'
770
+ $report | ConvertTo-Json | Out-File 'report.json'`;
771
+ const perlCode = `#!/usr/bin/perl
772
+ use strict;
773
+ use warnings;
774
+ use JSON::XS;
775
+ use Data::Dumper;
776
+
777
+ package Logger {
778
+ sub new {
779
+ my ($class, %args) = @_;
780
+ return bless {
781
+ level => $args{level} // 'info',
782
+ output => $args{output} // *STDOUT,
783
+ }, $class;
784
+ }
785
+
786
+ sub log {
787
+ my ($self, $level, $msg) = @_;
788
+ my %levels = (error => 0, warn => 1, info => 2, debug => 3);
789
+ return if $levels{$level} > $levels{$self->{level}};
790
+
791
+ my $entry = encode_json({
792
+ time => scalar localtime,
793
+ level => $level,
794
+ msg => $msg,
795
+ });
796
+ print {$self->{output}} "$entry\\n";
797
+ }
798
+ }
799
+
800
+ my $log = Logger->new(level => 'debug');
801
+ $log->log('info', 'Application started');
802
+ $log->log('debug', "Loaded " . scalar(keys %INC) . " modules");`;
803
+ const luaCode = `-- Configuration manager
804
+ local ConfigManager = {}
805
+ ConfigManager.__index = ConfigManager
806
+
807
+ function ConfigManager:new(filepath)
808
+ local obj = {
809
+ filepath = filepath,
810
+ data = {},
811
+ watcher = nil,
812
+ }
813
+ setmetatable(obj, self)
814
+ return obj
815
+ end
816
+
817
+ function ConfigManager:load()
818
+ local file, err = io.open(self.filepath, "r")
819
+ if not file then return nil, err end
820
+
821
+ local content = file:read("*all")
822
+ file:close()
823
+
824
+ local ok, result = pcall(function()
825
+ return assert(load("return " .. content))()
826
+ end)
827
+
828
+ if ok then
829
+ self.data = result
830
+ return result
831
+ else
832
+ return nil, result
833
+ end
834
+ end
835
+
836
+ function ConfigManager:get(key, default)
837
+ local val = self.data
838
+ for k in key:gmatch("[%w_]+") do
839
+ if type(val) ~= "table" then return default end
840
+ val = val[k]
841
+ end
842
+ return val or default
843
+ end
844
+
845
+ -- Usage
846
+ local config = ConfigManager:new("config.lua")
847
+ config:load()
848
+ print(config:get("app.version", "1.0.0"))`;
849
+ const scalaCode = `import scala.concurrent.{ExecutionContext, Future}
850
+ import scala.util.{Failure, Success}
851
+
852
+ case class User(id: Long, name: String, email: String)
853
+
854
+ trait Repository[T] {
855
+ def find(id: Long): Future[Option[T]]
856
+ def save(entity: T): Future[T]
857
+ }
858
+
859
+ class UserService(repo: Repository[User])(implicit ec: ExecutionContext) {
860
+ def getUser(id: Long): Future[Either[String, User]] = {
861
+ repo.find(id).map {
862
+ case Some(user) => Right(user)
863
+ case None => Left(s"User $id not found")
864
+ }
865
+ }
866
+
867
+ def createUser(name: String, email: String): Future[User] = {
868
+ val user = User(0, name, email)
869
+ repo.save(user)
870
+ }
871
+ }
872
+
873
+ object Main extends App {
874
+ implicit val ec: ExecutionContext = ExecutionContext.global
875
+
876
+ val service = new UserService(MockUserRepo)
877
+ service.getUser(42).onComplete {
878
+ case Success(Right(user)) => println(s"Found: $user")
879
+ case Success(Left(err)) => println(s"Error: $err")
880
+ case Failure(ex) => println(s"Exception: $ex")
881
+ }
882
+ }`;
883
+ const dartCode = `import 'dart:async';
884
+ import 'dart:convert';
885
+
886
+ class Todo {
887
+ final int id;
888
+ final String title;
889
+ final bool completed;
890
+
891
+ const Todo({
892
+ required this.id,
893
+ required this.title,
894
+ this.completed = false,
895
+ });
896
+
897
+ Todo.fromJson(Map<String, dynamic> json)
898
+ : id = json['id'] as int,
899
+ title = json['title'] as String,
900
+ completed = json['completed'] as bool? ?? false;
901
+
902
+ Map<String, dynamic> toJson() => {
903
+ 'id': id,
904
+ 'title': title,
905
+ 'completed': completed,
906
+ };
907
+ }
908
+
909
+ class TodoService {
910
+ final HttpClient _client;
911
+
912
+ TodoService(this._client);
913
+
914
+ Future<List<Todo>> fetchTodos() async {
915
+ final request = await _client.getUrl(
916
+ Uri.parse('https://jsonplaceholder.typicode.com/todos'),
917
+ );
918
+ final response = await request.close();
919
+ final json = await response.transform(utf8.decoder).join();
920
+ final list = jsonDecode(json) as List;
921
+ return list.map((e) => Todo.fromJson(e)).toList();
922
+ }
923
+ }
924
+
925
+ void main() async {
926
+ final service = TodoService(HttpClient());
927
+ final todos = await service.fetchTodos();
928
+ todos.where((t) => !t.completed).forEach(print);
929
+ }`;
930
+ const rCode = `library(tidyverse)
931
+ library(lubridate)
932
+
933
+ # Sales analysis pipeline
934
+ sales <- read_csv("sales_2024.csv") |>
935
+ mutate(
936
+ date = ymd(date),
937
+ month = floor_date(date, "month"),
938
+ revenue = quantity * price,
939
+ category = factor(category)
940
+ ) |>
941
+ filter(!is.na(revenue))
942
+
943
+ monthly_summary <- sales |>
944
+ group_by(month, category) |>
945
+ summarise(
946
+ total_revenue = sum(revenue, na.rm = TRUE),
947
+ avg_price = mean(price, na.rm = TRUE),
948
+ order_count = n(),
949
+ .groups = "drop"
950
+ ) |>
951
+ arrange(month, desc(total_revenue))
952
+
953
+ ggplot(monthly_summary, aes(x = month, y = total_revenue, fill = category)) +
954
+ geom_col(position = "dodge") +
955
+ labs(title = "Monthly Revenue by Category") +
956
+ theme_minimal()`;
957
+ const objectivecCode = `#import <Foundation/Foundation.h>
958
+
959
+ @interface TaskManager : NSObject
960
+
961
+ @property (nonatomic, strong) NSMutableArray<NSString *> *tasks;
962
+ @property (nonatomic, assign, getter=isRunning) BOOL running;
963
+
964
+ - (void)addTask:(NSString *)task;
965
+ - (void)processTasksWithCompletion:(void (^)(NSUInteger count))completion;
966
+
967
+ @end
968
+
969
+ @implementation TaskManager
970
+
971
+ - (instancetype)init {
972
+ self = [super init];
973
+ if (self) {
974
+ _tasks = [NSMutableArray array];
975
+ _running = NO;
976
+ }
977
+ return self;
978
+ }
979
+
980
+ - (void)addTask:(NSString *)task {
981
+ @synchronized (self) {
982
+ [self.tasks addObject:task];
983
+ }
984
+ }
985
+
986
+ - (void)processTasksWithCompletion:(void (^)(NSUInteger))completion {
987
+ self.running = YES;
988
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
989
+ [NSThread sleepForTimeInterval:1.0];
990
+ dispatch_async(dispatch_get_main_queue(), ^{
991
+ self.running = NO;
992
+ if (completion) {
993
+ completion(self.tasks.count);
994
+ }
995
+ });
996
+ });
997
+ }
998
+
999
+ @end
1000
+
1001
+ int main(int argc, const char * argv[]) {
1002
+ @autoreleasepool {
1003
+ TaskManager *manager = [[TaskManager alloc] init];
1004
+ [manager addTask:@"Build UI"];
1005
+ [manager addTask:@"Run tests"];
1006
+ [manager processTasksWithCompletion:^(NSUInteger count) {
1007
+ NSLog(@"Processed %lu tasks", (unsigned long)count);
1008
+ }];
1009
+ }
1010
+ return 0;
1011
+ }`;
1012
+ function makeExample(langKey, lang, code) {
1013
+ return {
1014
+ title: () => t(`demo.code.${langKey}.title`),
1015
+ description: () => t(`demo.code.${langKey}.description`),
1016
+ code: `<aithe-code-editor language="${lang}" show-toolbar></aithe-code-editor>`,
1017
+ displayCode: code,
1018
+ hideEditor: true,
1019
+ setup: (root) => {
1020
+ requestAnimationFrame(() => {
1021
+ const editor = root.querySelector('aithe-code-editor');
1022
+ if (editor) {
1023
+ editor.value = code;
1024
+ }
1025
+ });
1026
+ },
1027
+ previewHeight: '280px',
1028
+ };
1029
+ }
1030
+ export const codePage = {
1031
+ key: 'code',
1032
+ title: () => t('demo.code.title'),
1033
+ description: () => t('demo.code.description'),
1034
+ examples: [
1035
+ makeExample('javascript', 'javascript', jsCode),
1036
+ makeExample('typescript', 'typescript', tsCode),
1037
+ makeExample('c', 'c', cCode),
1038
+ makeExample('cpp', 'cpp', cppCode),
1039
+ makeExample('java', 'java', javaCode),
1040
+ makeExample('html', 'html', htmlCode),
1041
+ makeExample('xml', 'xml', xmlCode),
1042
+ makeExample('json', 'json', jsonCode),
1043
+ makeExample('jsonline', 'jsonline', jsonlineCode),
1044
+ makeExample('yaml', 'yaml', yamlCode),
1045
+ makeExample('python', 'python', pythonCode),
1046
+ makeExample('ruby', 'ruby', rubyCode),
1047
+ makeExample('bash', 'bash', bashCode),
1048
+ makeExample('css', 'css', cssCode),
1049
+ makeExample('sql', 'sql', sqlCode),
1050
+ makeExample('rust', 'rust', rustCode),
1051
+ makeExample('go', 'go', goCode),
1052
+ makeExample('kotlin', 'kotlin', kotlinCode),
1053
+ makeExample('swift', 'swift', swiftCode),
1054
+ makeExample('jsx', 'jsx', jsxCode),
1055
+ makeExample('tsx', 'tsx', tsxCode),
1056
+ makeExample('vue', 'vue', vueCode),
1057
+ makeExample('svelte', 'svelte', svelteCode),
1058
+ makeExample('wasm', 'wasm', wasmCode),
1059
+ makeExample('dockerfile', 'dockerfile', dockerfileCode),
1060
+ makeExample('makefile', 'makefile', makefileCode),
1061
+ makeExample('cmake', 'cmake', cmakeCode),
1062
+ makeExample('latex', 'latex', latexCode),
1063
+ makeExample('fsharp', 'fsharp', fsharpCode),
1064
+ makeExample('powershell', 'powershell', powershellCode),
1065
+ makeExample('perl', 'perl', perlCode),
1066
+ makeExample('lua', 'lua', luaCode),
1067
+ makeExample('scala', 'scala', scalaCode),
1068
+ makeExample('dart', 'dart', dartCode),
1069
+ makeExample('r', 'r', rCode),
1070
+ makeExample('objectivec', 'objectivec', objectivecCode),
1071
+ {
1072
+ title: () => t('demo.code.markdown.title'),
1073
+ description: () => t('demo.code.markdown.description'),
1074
+ code: '<aithe-markdown-editor show-toolbar line-numbers></aithe-markdown-editor>',
1075
+ displayCode: mdCode,
1076
+ hideEditor: true,
1077
+ setup: (root) => {
1078
+ requestAnimationFrame(() => {
1079
+ const editor = root.querySelector('aithe-markdown-editor');
1080
+ if (editor) {
1081
+ editor.value = mdCode;
1082
+ }
1083
+ });
1084
+ },
1085
+ previewHeight: '280px',
1086
+ },
1087
+ ],
1088
+ };