@allbluecn/admin-app 0.1.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 (276) hide show
  1. package/package.json +86 -0
  2. package/src/client.tsx +31 -0
  3. package/src/components/admin/admin-user-menu.tsx +90 -0
  4. package/src/components/admin/developer-log.tsx +356 -0
  5. package/src/components/ai-provider/model-list-editor.tsx +147 -0
  6. package/src/components/ai-provider/provider-form.tsx +434 -0
  7. package/src/components/ai-provider/provider-icon.tsx +43 -0
  8. package/src/components/ai-provider/provider-logo.tsx +87 -0
  9. package/src/components/ai-provider/provider-table.tsx +258 -0
  10. package/src/components/auth/admin-login-form.tsx +214 -0
  11. package/src/components/auth/auth-brand-panel.tsx +60 -0
  12. package/src/components/auth/auth-header.tsx +38 -0
  13. package/src/components/auth/auth-layout.tsx +66 -0
  14. package/src/components/auth/auth-providers.tsx +34 -0
  15. package/src/components/auth/icon-input.tsx +46 -0
  16. package/src/components/auth/oauth-section.tsx +51 -0
  17. package/src/components/auth/password-input.tsx +67 -0
  18. package/src/components/common/page-header.tsx +42 -0
  19. package/src/components/common/placeholder-page.tsx +42 -0
  20. package/src/components/component/component-form-dialog.tsx +348 -0
  21. package/src/components/component/component-import-dialog.tsx +235 -0
  22. package/src/components/component/component-table.tsx +153 -0
  23. package/src/components/data-table/data-table-pagination.tsx +114 -0
  24. package/src/components/data-table/data-table.tsx +218 -0
  25. package/src/components/data-table/table-detail-layout.tsx +99 -0
  26. package/src/components/dependency/changelog-dialog.tsx +108 -0
  27. package/src/components/dependency/columns.tsx +232 -0
  28. package/src/components/dependency/dependency-table.tsx +368 -0
  29. package/src/components/dependency/edit-dialog.tsx +200 -0
  30. package/src/components/knowledge-public/bookmark-form-dialog.tsx +215 -0
  31. package/src/components/knowledge-public/compliance-form-dialog.tsx +308 -0
  32. package/src/components/knowledge-public/legal-form-dialog.tsx +315 -0
  33. package/src/components/layout/sidebar-02/app-sidebar.tsx +160 -0
  34. package/src/components/layout/sidebar-02/index.tsx +33 -0
  35. package/src/components/layout/sidebar-02/logo.tsx +40 -0
  36. package/src/components/layout/sidebar-02/nav-main.tsx +153 -0
  37. package/src/components/layout/sidebar-02/nav-notifications.tsx +78 -0
  38. package/src/components/layout/sidebar-02/team-switcher.tsx +106 -0
  39. package/src/components/magicui/animated-theme-toggler.tsx +272 -0
  40. package/src/components/magicui/rainbow-button.tsx +78 -0
  41. package/src/components/market/columns.tsx +151 -0
  42. package/src/components/market/market-app-form.tsx +237 -0
  43. package/src/components/market/market-app-list.tsx +156 -0
  44. package/src/components/monitoring/error-list.tsx +143 -0
  45. package/src/components/monitoring/health-cards.tsx +152 -0
  46. package/src/components/monitoring/metrics-stats.tsx +184 -0
  47. package/src/components/monitoring/request-log-table.tsx +179 -0
  48. package/src/components/providers/theme-toggle.tsx +59 -0
  49. package/src/components/settings/avatar/avatar-config.ts +46 -0
  50. package/src/components/ui/alert-dialog.tsx +216 -0
  51. package/src/components/ui/alert.tsx +76 -0
  52. package/src/components/ui/avatar.tsx +129 -0
  53. package/src/components/ui/badge.tsx +66 -0
  54. package/src/components/ui/button.tsx +84 -0
  55. package/src/components/ui/card.tsx +120 -0
  56. package/src/components/ui/checkbox.tsx +50 -0
  57. package/src/components/ui/collapsible.tsx +50 -0
  58. package/src/components/ui/dialog.tsx +185 -0
  59. package/src/components/ui/dropdown-menu.tsx +286 -0
  60. package/src/components/ui/field.tsx +255 -0
  61. package/src/components/ui/input-group.tsx +171 -0
  62. package/src/components/ui/input.tsx +36 -0
  63. package/src/components/ui/label.tsx +41 -0
  64. package/src/components/ui/pagination.tsx +146 -0
  65. package/src/components/ui/select.tsx +209 -0
  66. package/src/components/ui/separator.tsx +45 -0
  67. package/src/components/ui/sheet.tsx +164 -0
  68. package/src/components/ui/sidebar.tsx +719 -0
  69. package/src/components/ui/skeleton.tsx +30 -0
  70. package/src/components/ui/sonner.tsx +37 -0
  71. package/src/components/ui/switch.tsx +48 -0
  72. package/src/components/ui/table.tsx +133 -0
  73. package/src/components/ui/textarea.tsx +35 -0
  74. package/src/components/ui/tooltip.tsx +74 -0
  75. package/src/components/user/columns.tsx +153 -0
  76. package/src/components/user/settings-activity-log.tsx +358 -0
  77. package/src/components/user/settings-profile/constants.ts +42 -0
  78. package/src/components/user/settings-profile/types.ts +47 -0
  79. package/src/components/user/settings-profile.tsx +664 -0
  80. package/src/components/user/user-create-dialog.tsx +137 -0
  81. package/src/components/user/user-filters.tsx +117 -0
  82. package/src/hooks/use-mobile.ts +36 -0
  83. package/src/instrument.client.ts +34 -0
  84. package/src/lib/anyhub/capabilities.ts +59 -0
  85. package/src/lib/anyhub/types.ts +43 -0
  86. package/src/lib/auth-client.ts +83 -0
  87. package/src/lib/auth-utils.ts +24 -0
  88. package/src/lib/auth.config.ts +264 -0
  89. package/src/lib/avatar.ts +41 -0
  90. package/src/lib/i18n/client.ts +32 -0
  91. package/src/lib/i18n/config.ts +40 -0
  92. package/src/lib/i18n/detect.ts +43 -0
  93. package/src/lib/i18n/locales/en/admin-ai.json +128 -0
  94. package/src/lib/i18n/locales/en/admin-billing.json +56 -0
  95. package/src/lib/i18n/locales/en/admin-users.json +88 -0
  96. package/src/lib/i18n/locales/en/common.json +877 -0
  97. package/src/lib/i18n/locales/en/enterprise.json +208 -0
  98. package/src/lib/i18n/locales/zh/admin-ai.json +128 -0
  99. package/src/lib/i18n/locales/zh/admin-billing.json +56 -0
  100. package/src/lib/i18n/locales/zh/admin-users.json +88 -0
  101. package/src/lib/i18n/locales/zh/common.json +877 -0
  102. package/src/lib/i18n/locales/zh/enterprise.json +208 -0
  103. package/src/lib/i18n/server.ts +18 -0
  104. package/src/lib/i18n/types.ts +5 -0
  105. package/src/lib/monitoring-benchmarks.ts +85 -0
  106. package/src/lib/monitoring-descriptions.ts +78 -0
  107. package/src/lib/prisma.ts +18 -0
  108. package/src/lib/router-context.ts +38 -0
  109. package/src/lib/session.ts +38 -0
  110. package/src/lib/utils.ts +23 -0
  111. package/src/providers/index.tsx +45 -0
  112. package/src/routeTree.gen.ts +1199 -0
  113. package/src/router.tsx +51 -0
  114. package/src/routes/__root.tsx +170 -0
  115. package/src/routes/_nav/ai-providers/$id/edit/route.lazy.tsx +74 -0
  116. package/src/routes/_nav/ai-providers/$id/edit/route.tsx +35 -0
  117. package/src/routes/_nav/ai-providers/index/route.lazy.tsx +33 -0
  118. package/src/routes/_nav/ai-providers/new/route.lazy.tsx +31 -0
  119. package/src/routes/_nav/ai-providers/new/route.tsx +20 -0
  120. package/src/routes/_nav/ai-providers/route.lazy.tsx +26 -0
  121. package/src/routes/_nav/ai-providers/route.tsx +31 -0
  122. package/src/routes/_nav/apps/route.lazy.tsx +30 -0
  123. package/src/routes/_nav/apps/route.tsx +20 -0
  124. package/src/routes/_nav/audit/route.lazy.tsx +100 -0
  125. package/src/routes/_nav/audit/route.tsx +25 -0
  126. package/src/routes/_nav/billing/invoices/route.lazy.tsx +86 -0
  127. package/src/routes/_nav/billing/invoices/route.tsx +25 -0
  128. package/src/routes/_nav/billing/route.lazy.tsx +48 -0
  129. package/src/routes/_nav/billing/route.tsx +27 -0
  130. package/src/routes/_nav/billing/subscriptions/$subscriptionId/route.lazy.tsx +160 -0
  131. package/src/routes/_nav/billing/subscriptions/$subscriptionId/route.tsx +25 -0
  132. package/src/routes/_nav/billing/subscriptions/route.lazy.tsx +113 -0
  133. package/src/routes/_nav/billing/subscriptions/route.tsx +28 -0
  134. package/src/routes/_nav/compliance/route.lazy.tsx +184 -0
  135. package/src/routes/_nav/compliance/route.tsx +25 -0
  136. package/src/routes/_nav/components/route.lazy.tsx +184 -0
  137. package/src/routes/_nav/components/route.tsx +40 -0
  138. package/src/routes/_nav/dashboard/route.lazy.tsx +33 -0
  139. package/src/routes/_nav/dashboard/route.tsx +20 -0
  140. package/src/routes/_nav/dependencies/route.lazy.tsx +66 -0
  141. package/src/routes/_nav/dependencies/route.tsx +32 -0
  142. package/src/routes/_nav/developer-logs/route.lazy.tsx +6 -0
  143. package/src/routes/_nav/developer-logs/route.tsx +14 -0
  144. package/src/routes/_nav/docs/route.lazy.tsx +30 -0
  145. package/src/routes/_nav/docs/route.tsx +20 -0
  146. package/src/routes/_nav/knowledge-public/bookmarks/route.lazy.tsx +355 -0
  147. package/src/routes/_nav/knowledge-public/bookmarks/route.tsx +40 -0
  148. package/src/routes/_nav/knowledge-public/compliance/route.lazy.tsx +245 -0
  149. package/src/routes/_nav/knowledge-public/compliance/route.tsx +40 -0
  150. package/src/routes/_nav/knowledge-public/legal/route.lazy.tsx +242 -0
  151. package/src/routes/_nav/knowledge-public/legal/route.tsx +40 -0
  152. package/src/routes/_nav/licenses/$licenseId/route.lazy.tsx +235 -0
  153. package/src/routes/_nav/licenses/$licenseId/route.tsx +25 -0
  154. package/src/routes/_nav/licenses/new/route.lazy.tsx +237 -0
  155. package/src/routes/_nav/licenses/route.lazy.tsx +143 -0
  156. package/src/routes/_nav/licenses/route.tsx +25 -0
  157. package/src/routes/_nav/market/route.lazy.tsx +31 -0
  158. package/src/routes/_nav/market/route.tsx +20 -0
  159. package/src/routes/_nav/monitoring/ai-usage/route.lazy.tsx +305 -0
  160. package/src/routes/_nav/monitoring/ai-usage/route.tsx +3 -0
  161. package/src/routes/_nav/monitoring/errors/route.lazy.tsx +111 -0
  162. package/src/routes/_nav/monitoring/health/route.lazy.tsx +260 -0
  163. package/src/routes/_nav/monitoring/logs/route.lazy.tsx +165 -0
  164. package/src/routes/_nav/monitoring/metrics/route.lazy.tsx +240 -0
  165. package/src/routes/_nav/monitoring/overview/route.lazy.tsx +138 -0
  166. package/src/routes/_nav/monitoring/route.lazy.tsx +68 -0
  167. package/src/routes/_nav/monitoring/route.tsx +20 -0
  168. package/src/routes/_nav/monitoring/sentry/route.lazy.tsx +399 -0
  169. package/src/routes/_nav/monitoring/sentry/route.tsx +20 -0
  170. package/src/routes/_nav/permissions/route.lazy.tsx +504 -0
  171. package/src/routes/_nav/permissions/route.tsx +26 -0
  172. package/src/routes/_nav/route.lazy.tsx +31 -0
  173. package/src/routes/_nav/route.tsx +34 -0
  174. package/src/routes/_nav/settings/route.lazy.tsx +30 -0
  175. package/src/routes/_nav/settings/route.tsx +20 -0
  176. package/src/routes/_nav/sso/route.lazy.tsx +145 -0
  177. package/src/routes/_nav/sso/route.tsx +25 -0
  178. package/src/routes/_nav/users/$userId/route.lazy.tsx +432 -0
  179. package/src/routes/_nav/users/$userId/route.tsx +27 -0
  180. package/src/routes/_nav/users/-components/users-table.tsx +38 -0
  181. package/src/routes/_nav/users/route.lazy.tsx +74 -0
  182. package/src/routes/_nav/users/route.tsx +43 -0
  183. package/src/routes/api/compliance-download/$jobId.ts +35 -0
  184. package/src/routes/api/observability/errors.ts +41 -0
  185. package/src/routes/api/observability/health.ts +30 -0
  186. package/src/routes/api.auth.$.ts +31 -0
  187. package/src/routes/api.sentry-test.ts +33 -0
  188. package/src/routes/index/route.lazy.tsx +22 -0
  189. package/src/routes/index/route.tsx +24 -0
  190. package/src/routes/login/route.lazy.tsx +46 -0
  191. package/src/routes/login/route.tsx +28 -0
  192. package/src/routes/sentry-tunnel.ts +61 -0
  193. package/src/routes/setup/route.lazy.tsx +94 -0
  194. package/src/routes/setup/route.tsx +28 -0
  195. package/src/server/__tests__/admin-ai-alerts.test.ts +113 -0
  196. package/src/server/__tests__/licenses-issue.test.ts +98 -0
  197. package/src/server/admin-ai-alerts.ts +177 -0
  198. package/src/server/admin-ai-usage.ts +134 -0
  199. package/src/server/auth-helpers.ts +51 -0
  200. package/src/server/entitlements.ts +24 -0
  201. package/src/server/knowledge-public/canonical-id.ts +55 -0
  202. package/src/server/knowledge-public/github-sync.ts +86 -0
  203. package/src/server/license-issue.ts +78 -0
  204. package/src/server/middlewares/request.ts +26 -0
  205. package/src/server/observability/debug-middleware.ts +39 -0
  206. package/src/server/observability/error-reporter.ts +99 -0
  207. package/src/server/observability/health-check.ts +140 -0
  208. package/src/server/observability/index.ts +33 -0
  209. package/src/server/observability/logger.ts +49 -0
  210. package/src/server/observability/metrics.ts +105 -0
  211. package/src/server/observability/request-middleware.ts +125 -0
  212. package/src/server/observability/timing.ts +42 -0
  213. package/src/server/pro-services.ts +32 -0
  214. package/src/server/serverFns/admin-billing.ts +94 -0
  215. package/src/server/serverFns/ai-provider/create.ts +92 -0
  216. package/src/server/serverFns/ai-provider/delete.ts +42 -0
  217. package/src/server/serverFns/ai-provider/get.ts +35 -0
  218. package/src/server/serverFns/ai-provider/list.ts +92 -0
  219. package/src/server/serverFns/ai-provider/update.ts +73 -0
  220. package/src/server/serverFns/anyhub/market.ts +64 -0
  221. package/src/server/serverFns/audit.ts +57 -0
  222. package/src/server/serverFns/auth/session.ts +26 -0
  223. package/src/server/serverFns/auth/setup.ts +73 -0
  224. package/src/server/serverFns/compliance.ts +85 -0
  225. package/src/server/serverFns/components/import.ts +197 -0
  226. package/src/server/serverFns/components/list.ts +51 -0
  227. package/src/server/serverFns/components/mutations.ts +84 -0
  228. package/src/server/serverFns/dependency/helpers.ts +245 -0
  229. package/src/server/serverFns/dependency/list.ts +127 -0
  230. package/src/server/serverFns/dependency/sync.ts +123 -0
  231. package/src/server/serverFns/dependency/update.ts +51 -0
  232. package/src/server/serverFns/developer-log-auto-generate.ts +176 -0
  233. package/src/server/serverFns/developer-logs.ts +132 -0
  234. package/src/server/serverFns/knowledge-public/bookmarks/create.ts +53 -0
  235. package/src/server/serverFns/knowledge-public/bookmarks/delete.ts +31 -0
  236. package/src/server/serverFns/knowledge-public/bookmarks/detail.ts +32 -0
  237. package/src/server/serverFns/knowledge-public/bookmarks/list.ts +66 -0
  238. package/src/server/serverFns/knowledge-public/bookmarks/sync-all-github.ts +56 -0
  239. package/src/server/serverFns/knowledge-public/bookmarks/update.ts +50 -0
  240. package/src/server/serverFns/knowledge-public/compliance/create.ts +58 -0
  241. package/src/server/serverFns/knowledge-public/compliance/delete.ts +31 -0
  242. package/src/server/serverFns/knowledge-public/compliance/detail.ts +32 -0
  243. package/src/server/serverFns/knowledge-public/compliance/list.ts +59 -0
  244. package/src/server/serverFns/knowledge-public/compliance/update.ts +53 -0
  245. package/src/server/serverFns/knowledge-public/legal/create.ts +62 -0
  246. package/src/server/serverFns/knowledge-public/legal/delete.ts +31 -0
  247. package/src/server/serverFns/knowledge-public/legal/detail.ts +32 -0
  248. package/src/server/serverFns/knowledge-public/legal/list.ts +60 -0
  249. package/src/server/serverFns/knowledge-public/legal/update.ts +55 -0
  250. package/src/server/serverFns/licenses.ts +92 -0
  251. package/src/server/serverFns/locale.ts +10 -0
  252. package/src/server/serverFns/monitoring/check-ai-alerts.ts +13 -0
  253. package/src/server/serverFns/monitoring/get-ai-usage-overview.ts +25 -0
  254. package/src/server/serverFns/monitoring/get-errors.ts +43 -0
  255. package/src/server/serverFns/monitoring/get-health-settings.ts +35 -0
  256. package/src/server/serverFns/monitoring/get-health.ts +55 -0
  257. package/src/server/serverFns/monitoring/get-metrics.ts +46 -0
  258. package/src/server/serverFns/monitoring/get-request-logs.ts +66 -0
  259. package/src/server/serverFns/monitoring/report-error.ts +55 -0
  260. package/src/server/serverFns/monitoring/reset.ts +70 -0
  261. package/src/server/serverFns/permissions.ts +214 -0
  262. package/src/server/serverFns/sentry/config.ts +88 -0
  263. package/src/server/serverFns/sso-config.ts +83 -0
  264. package/src/server/serverFns/user/create.ts +40 -0
  265. package/src/server/serverFns/user/delete.ts +29 -0
  266. package/src/server/serverFns/user/detail.ts +45 -0
  267. package/src/server/serverFns/user/list.ts +56 -0
  268. package/src/server/serverFns/user/reset-password.ts +28 -0
  269. package/src/server/serverFns/user/update-role.ts +26 -0
  270. package/src/server/serverFns/user/update-status.ts +26 -0
  271. package/src/server.ts +27 -0
  272. package/src/start.ts +85 -0
  273. package/src/styles/_keyframe-animations.scss +91 -0
  274. package/src/styles/_variables.scss +296 -0
  275. package/src/styles/globals.css +200 -0
  276. package/src/types/start-authjs.d.ts +27 -0
@@ -0,0 +1,296 @@
1
+ :root {
2
+ /******************
3
+ Basics
4
+ ******************/
5
+
6
+ overflow-wrap: break-word;
7
+ text-size-adjust: none;
8
+ text-rendering: optimizeLegibility;
9
+ -webkit-font-smoothing: antialiased;
10
+ -moz-osx-font-smoothing: grayscale;
11
+
12
+ /******************
13
+ Colors variables
14
+ ******************/
15
+
16
+ /* Gray alpha (light mode) */
17
+ --tt-gray-light-a-50: rgba(56, 56, 56, 0.04);
18
+ --tt-gray-light-a-100: rgba(15, 22, 36, 0.05);
19
+ --tt-gray-light-a-200: rgba(37, 39, 45, 0.1);
20
+ --tt-gray-light-a-300: rgba(47, 50, 55, 0.2);
21
+ --tt-gray-light-a-400: rgba(40, 44, 51, 0.42);
22
+ --tt-gray-light-a-500: rgba(52, 55, 60, 0.64);
23
+ --tt-gray-light-a-600: rgba(36, 39, 46, 0.78);
24
+ --tt-gray-light-a-700: rgba(35, 37, 42, 0.87);
25
+ --tt-gray-light-a-800: rgba(30, 32, 36, 0.95);
26
+ --tt-gray-light-a-900: rgba(29, 30, 32, 0.98);
27
+
28
+ /* Gray (light mode) */
29
+ --tt-gray-light-50: rgba(250, 250, 250, 1);
30
+ --tt-gray-light-100: rgba(244, 244, 245, 1);
31
+ --tt-gray-light-200: rgba(234, 234, 235, 1);
32
+ --tt-gray-light-300: rgba(213, 214, 215, 1);
33
+ --tt-gray-light-400: rgba(166, 167, 171, 1);
34
+ --tt-gray-light-500: rgba(125, 127, 130, 1);
35
+ --tt-gray-light-600: rgba(83, 86, 90, 1);
36
+ --tt-gray-light-700: rgba(64, 65, 69, 1);
37
+ --tt-gray-light-800: rgba(44, 45, 48, 1);
38
+ --tt-gray-light-900: rgba(34, 35, 37, 1);
39
+
40
+ /* Gray alpha (dark mode) */
41
+ --tt-gray-dark-a-50: rgba(232, 232, 253, 0.05);
42
+ --tt-gray-dark-a-100: rgba(231, 231, 243, 0.07);
43
+ --tt-gray-dark-a-200: rgba(238, 238, 246, 0.11);
44
+ --tt-gray-dark-a-300: rgba(239, 239, 245, 0.22);
45
+ --tt-gray-dark-a-400: rgba(244, 244, 255, 0.37);
46
+ --tt-gray-dark-a-500: rgba(236, 238, 253, 0.5);
47
+ --tt-gray-dark-a-600: rgba(247, 247, 253, 0.64);
48
+ --tt-gray-dark-a-700: rgba(251, 251, 254, 0.75);
49
+ --tt-gray-dark-a-800: rgba(253, 253, 253, 0.88);
50
+ --tt-gray-dark-a-900: rgba(255, 255, 255, 0.96);
51
+
52
+ /* Gray (dark mode) */
53
+ --tt-gray-dark-50: rgba(25, 25, 26, 1);
54
+ --tt-gray-dark-100: rgba(32, 32, 34, 1);
55
+ --tt-gray-dark-200: rgba(45, 45, 47, 1);
56
+ --tt-gray-dark-300: rgba(70, 70, 73, 1);
57
+ --tt-gray-dark-400: rgba(99, 99, 105, 1);
58
+ --tt-gray-dark-500: rgba(124, 124, 131, 1);
59
+ --tt-gray-dark-600: rgba(163, 163, 168, 1);
60
+ --tt-gray-dark-700: rgba(192, 192, 195, 1);
61
+ --tt-gray-dark-800: rgba(224, 224, 225, 1);
62
+ --tt-gray-dark-900: rgba(245, 245, 245, 1);
63
+
64
+ /* Brand colors */
65
+ --tt-brand-color-50: rgba(239, 238, 255, 1);
66
+ --tt-brand-color-100: rgba(222, 219, 255, 1);
67
+ --tt-brand-color-200: rgba(195, 189, 255, 1);
68
+ --tt-brand-color-300: rgba(157, 138, 255, 1);
69
+ --tt-brand-color-400: rgba(122, 82, 255, 1);
70
+ --tt-brand-color-500: rgba(98, 41, 255, 1);
71
+ --tt-brand-color-600: rgba(84, 0, 229, 1);
72
+ --tt-brand-color-700: rgba(75, 0, 204, 1);
73
+ --tt-brand-color-800: rgba(56, 0, 153, 1);
74
+ --tt-brand-color-900: rgba(43, 25, 102, 1);
75
+ --tt-brand-color-950: hsla(257, 100%, 9%, 1);
76
+
77
+ /* Green */
78
+ --tt-color-green-inc-5: hsla(129, 100%, 97%, 1);
79
+ --tt-color-green-inc-4: hsla(129, 100%, 92%, 1);
80
+ --tt-color-green-inc-3: hsla(131, 100%, 86%, 1);
81
+ --tt-color-green-inc-2: hsla(133, 98%, 78%, 1);
82
+ --tt-color-green-inc-1: hsla(137, 99%, 70%, 1);
83
+ --tt-color-green-base: hsla(147, 99%, 50%, 1);
84
+ --tt-color-green-dec-1: hsla(147, 97%, 41%, 1);
85
+ --tt-color-green-dec-2: hsla(146, 98%, 32%, 1);
86
+ --tt-color-green-dec-3: hsla(146, 100%, 24%, 1);
87
+ --tt-color-green-dec-4: hsla(144, 100%, 16%, 1);
88
+ --tt-color-green-dec-5: hsla(140, 100%, 9%, 1);
89
+
90
+ /* Yellow */
91
+ --tt-color-yellow-inc-5: hsla(50, 100%, 97%, 1);
92
+ --tt-color-yellow-inc-4: hsla(50, 100%, 91%, 1);
93
+ --tt-color-yellow-inc-3: hsla(50, 100%, 84%, 1);
94
+ --tt-color-yellow-inc-2: hsla(50, 100%, 77%, 1);
95
+ --tt-color-yellow-inc-1: hsla(50, 100%, 68%, 1);
96
+ --tt-color-yellow-base: hsla(52, 100%, 50%, 1);
97
+ --tt-color-yellow-dec-1: hsla(52, 100%, 41%, 1);
98
+ --tt-color-yellow-dec-2: hsla(52, 100%, 32%, 1);
99
+ --tt-color-yellow-dec-3: hsla(52, 100%, 24%, 1);
100
+ --tt-color-yellow-dec-4: hsla(51, 100%, 16%, 1);
101
+ --tt-color-yellow-dec-5: hsla(50, 100%, 9%, 1);
102
+
103
+ /* Red */
104
+ --tt-color-red-inc-5: hsla(11, 100%, 96%, 1);
105
+ --tt-color-red-inc-4: hsla(11, 100%, 88%, 1);
106
+ --tt-color-red-inc-3: hsla(10, 100%, 80%, 1);
107
+ --tt-color-red-inc-2: hsla(9, 100%, 73%, 1);
108
+ --tt-color-red-inc-1: hsla(7, 100%, 64%, 1);
109
+ --tt-color-red-base: hsla(7, 100%, 54%, 1);
110
+ --tt-color-red-dec-1: hsla(7, 100%, 41%, 1);
111
+ --tt-color-red-dec-2: hsla(5, 100%, 32%, 1);
112
+ --tt-color-red-dec-3: hsla(4, 100%, 24%, 1);
113
+ --tt-color-red-dec-4: hsla(3, 100%, 16%, 1);
114
+ --tt-color-red-dec-5: hsla(1, 100%, 9%, 1);
115
+
116
+ /* Basic colors */
117
+ --white: rgba(255, 255, 255, 1);
118
+ --black: rgba(14, 14, 17, 1);
119
+ --transparent: rgba(255, 255, 255, 0);
120
+
121
+ /******************
122
+ Shadow variables
123
+ ******************/
124
+
125
+ /* Shadows Light */
126
+ --tt-shadow-elevated-md:
127
+ 0px 16px 48px 0px rgba(17, 24, 39, 0.04),
128
+ 0px 12px 24px 0px rgba(17, 24, 39, 0.04),
129
+ 0px 6px 8px 0px rgba(17, 24, 39, 0.02),
130
+ 0px 2px 3px 0px rgba(17, 24, 39, 0.02);
131
+
132
+ /**************************************************
133
+ Radius variables
134
+ **************************************************/
135
+
136
+ --tt-radius-xxs: 0.125rem; /* 2px */
137
+ --tt-radius-xs: 0.25rem; /* 4px */
138
+ --tt-radius-sm: 0.375rem; /* 6px */
139
+ --tt-radius-md: 0.5rem; /* 8px */
140
+ --tt-radius-lg: 0.75rem; /* 12px */
141
+ --tt-radius-xl: 1rem; /* 16px */
142
+
143
+ /**************************************************
144
+ Transition variables
145
+ **************************************************/
146
+
147
+ --tt-transition-duration-short: 0.1s;
148
+ --tt-transition-duration-default: 0.2s;
149
+ --tt-transition-duration-long: 0.64s;
150
+ --tt-transition-easing-default: cubic-bezier(0.46, 0.03, 0.52, 0.96);
151
+ --tt-transition-easing-cubic: cubic-bezier(0.65, 0.05, 0.36, 1);
152
+ --tt-transition-easing-quart: cubic-bezier(0.77, 0, 0.18, 1);
153
+ --tt-transition-easing-circ: cubic-bezier(0.79, 0.14, 0.15, 0.86);
154
+ --tt-transition-easing-back: cubic-bezier(0.68, -0.55, 0.27, 1.55);
155
+
156
+ /******************
157
+ Contrast variables
158
+ ******************/
159
+
160
+ --tt-accent-contrast: 8%;
161
+ --tt-destructive-contrast: 8%;
162
+ --tt-foreground-contrast: 8%;
163
+
164
+ &,
165
+ *,
166
+ ::before,
167
+ ::after {
168
+ box-sizing: border-box;
169
+ transition: none var(--tt-transition-duration-default)
170
+ var(--tt-transition-easing-default);
171
+ }
172
+ }
173
+
174
+ :root {
175
+ /**************************************************
176
+ Global colors
177
+ **************************************************/
178
+
179
+ /* Global colors - Light mode */
180
+ --tt-bg-color: var(--white);
181
+ --tt-border-color: var(--tt-gray-light-a-200);
182
+ --tt-border-color-tint: var(--tt-gray-light-a-100);
183
+ --tt-sidebar-bg-color: var(--tt-gray-light-100);
184
+ --tt-scrollbar-color: var(--tt-gray-light-a-200);
185
+ --tt-cursor-color: var(--tt-brand-color-500);
186
+ --tt-selection-color: rgba(157, 138, 255, 0.2);
187
+ --tt-card-bg-color: var(--white);
188
+ --tt-card-border-color: var(--tt-gray-light-a-100);
189
+ }
190
+
191
+ /* Global colors - Dark mode */
192
+ .dark {
193
+ --tt-bg-color: var(--black);
194
+ --tt-border-color: var(--tt-gray-dark-a-200);
195
+ --tt-border-color-tint: var(--tt-gray-dark-a-100);
196
+ --tt-sidebar-bg-color: var(--tt-gray-dark-100);
197
+ --tt-scrollbar-color: var(--tt-gray-dark-a-200);
198
+ --tt-cursor-color: var(--tt-brand-color-400);
199
+ --tt-selection-color: rgba(122, 82, 255, 0.2);
200
+ --tt-card-bg-color: var(--tt-gray-dark-50);
201
+ --tt-card-border-color: var(--tt-gray-dark-a-50);
202
+
203
+ --tt-shadow-elevated-md:
204
+ 0px 16px 48px 0px rgba(0, 0, 0, 0.5), 0px 12px 24px 0px rgba(0, 0, 0, 0.24),
205
+ 0px 6px 8px 0px rgba(0, 0, 0, 0.22), 0px 2px 3px 0px rgba(0, 0, 0, 0.12);
206
+ }
207
+
208
+ /* Text colors */
209
+ :root {
210
+ --tt-color-text-gray: hsl(45, 2%, 46%);
211
+ --tt-color-text-brown: hsl(19, 31%, 47%);
212
+ --tt-color-text-orange: hsl(30, 89%, 45%);
213
+ --tt-color-text-yellow: hsl(38, 62%, 49%);
214
+ --tt-color-text-green: hsl(148, 32%, 39%);
215
+ --tt-color-text-blue: hsl(202, 54%, 43%);
216
+ --tt-color-text-purple: hsl(274, 32%, 54%);
217
+ --tt-color-text-pink: hsl(328, 49%, 53%);
218
+ --tt-color-text-red: hsl(2, 62%, 55%);
219
+
220
+ --tt-color-text-gray-contrast: hsla(39, 26%, 26%, 0.15);
221
+ --tt-color-text-brown-contrast: hsla(18, 43%, 69%, 0.35);
222
+ --tt-color-text-orange-contrast: hsla(24, 73%, 55%, 0.27);
223
+ --tt-color-text-yellow-contrast: hsla(44, 82%, 59%, 0.39);
224
+ --tt-color-text-green-contrast: hsla(126, 29%, 60%, 0.27);
225
+ --tt-color-text-blue-contrast: hsla(202, 54%, 59%, 0.27);
226
+ --tt-color-text-purple-contrast: hsla(274, 37%, 64%, 0.27);
227
+ --tt-color-text-pink-contrast: hsla(331, 60%, 71%, 0.27);
228
+ --tt-color-text-red-contrast: hsla(8, 79%, 79%, 0.4);
229
+ }
230
+
231
+ .dark {
232
+ --tt-color-text-gray: hsl(0, 0%, 61%);
233
+ --tt-color-text-brown: hsl(18, 35%, 58%);
234
+ --tt-color-text-orange: hsl(25, 53%, 53%);
235
+ --tt-color-text-yellow: hsl(36, 54%, 55%);
236
+ --tt-color-text-green: hsl(145, 32%, 47%);
237
+ --tt-color-text-blue: hsl(202, 64%, 52%);
238
+ --tt-color-text-purple: hsl(270, 55%, 62%);
239
+ --tt-color-text-pink: hsl(329, 57%, 58%);
240
+ --tt-color-text-red: hsl(1, 69%, 60%);
241
+
242
+ --tt-color-text-gray-contrast: hsla(0, 0%, 100%, 0.09);
243
+ --tt-color-text-brown-contrast: hsla(17, 45%, 50%, 0.25);
244
+ --tt-color-text-orange-contrast: hsla(27, 82%, 53%, 0.2);
245
+ --tt-color-text-yellow-contrast: hsla(35, 49%, 47%, 0.2);
246
+ --tt-color-text-green-contrast: hsla(151, 55%, 39%, 0.2);
247
+ --tt-color-text-blue-contrast: hsla(202, 54%, 43%, 0.2);
248
+ --tt-color-text-purple-contrast: hsla(271, 56%, 60%, 0.18);
249
+ --tt-color-text-pink-contrast: hsla(331, 67%, 58%, 0.22);
250
+ --tt-color-text-red-contrast: hsla(0, 67%, 60%, 0.25);
251
+ }
252
+
253
+ /* Highlight colors */
254
+ :root {
255
+ --tt-color-highlight-yellow: #fef9c3;
256
+ --tt-color-highlight-green: #dcfce7;
257
+ --tt-color-highlight-blue: #e0f2fe;
258
+ --tt-color-highlight-purple: #f3e8ff;
259
+ --tt-color-highlight-red: #ffe4e6;
260
+ --tt-color-highlight-gray: rgb(248, 248, 247);
261
+ --tt-color-highlight-brown: rgb(244, 238, 238);
262
+ --tt-color-highlight-orange: rgb(251, 236, 221);
263
+ --tt-color-highlight-pink: rgb(252, 241, 246);
264
+
265
+ --tt-color-highlight-yellow-contrast: #fbe604;
266
+ --tt-color-highlight-green-contrast: #c7fad8;
267
+ --tt-color-highlight-blue-contrast: #ceeafd;
268
+ --tt-color-highlight-purple-contrast: #e4ccff;
269
+ --tt-color-highlight-red-contrast: #ffccd0;
270
+ --tt-color-highlight-gray-contrast: rgba(84, 72, 49, 0.15);
271
+ --tt-color-highlight-brown-contrast: rgba(210, 162, 141, 0.35);
272
+ --tt-color-highlight-orange-contrast: rgba(224, 124, 57, 0.27);
273
+ --tt-color-highlight-pink-contrast: rgba(225, 136, 179, 0.27);
274
+ }
275
+
276
+ .dark {
277
+ --tt-color-highlight-yellow: #6b6524;
278
+ --tt-color-highlight-green: #509568;
279
+ --tt-color-highlight-blue: #6e92aa;
280
+ --tt-color-highlight-purple: #583e74;
281
+ --tt-color-highlight-red: #743e42;
282
+ --tt-color-highlight-gray: rgb(47, 47, 47);
283
+ --tt-color-highlight-brown: rgb(74, 50, 40);
284
+ --tt-color-highlight-orange: rgb(92, 59, 35);
285
+ --tt-color-highlight-pink: rgb(78, 44, 60);
286
+
287
+ --tt-color-highlight-yellow-contrast: #58531e;
288
+ --tt-color-highlight-green-contrast: #47855d;
289
+ --tt-color-highlight-blue-contrast: #5e86a1;
290
+ --tt-color-highlight-purple-contrast: #4c3564;
291
+ --tt-color-highlight-red-contrast: #643539;
292
+ --tt-color-highlight-gray-contrast: rgba(255, 255, 255, 0.094);
293
+ --tt-color-highlight-brown-contrast: rgba(184, 101, 69, 0.25);
294
+ --tt-color-highlight-orange-contrast: rgba(233, 126, 37, 0.2);
295
+ --tt-color-highlight-pink-contrast: rgba(220, 76, 145, 0.22);
296
+ }
@@ -0,0 +1,200 @@
1
+ @import './_variables.scss';
2
+ @import './_keyframe-animations.scss';
3
+
4
+ @import "tailwindcss";
5
+
6
+ @custom-variant dark (&:is(.dark *));
7
+
8
+ @theme inline {
9
+ --radius-sm: calc(var(--radius) - 4px);
10
+ --radius-md: calc(var(--radius) - 2px);
11
+ --radius-lg: var(--radius);
12
+ --radius-xl: calc(var(--radius) + 4px);
13
+
14
+ --color-background: var(--background);
15
+ --color-foreground: var(--foreground);
16
+
17
+ --color-sidebar: var(--sidebar);
18
+ --color-sidebar-foreground: var(--sidebar-foreground);
19
+ --color-sidebar-primary: var(--sidebar-primary);
20
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
21
+ --color-sidebar-accent: var(--sidebar-accent);
22
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
23
+ --color-sidebar-ring: var(--sidebar-ring);
24
+ --color-sidebar-border: var(--sidebar-border);
25
+
26
+ --color-card: var(--card);
27
+ --color-card-foreground: var(--card-foreground);
28
+
29
+ --color-popover: var(--popover);
30
+ --color-popover-foreground: var(--popover-foreground);
31
+
32
+ --color-primary: var(--primary);
33
+ --color-primary-foreground: var(--primary-foreground);
34
+
35
+ --color-secondary: var(--secondary);
36
+ --color-secondary-foreground: var(--secondary-foreground);
37
+
38
+ --color-muted: var(--muted);
39
+ --color-muted-foreground: var(--muted-foreground);
40
+
41
+ --color-accent: var(--accent);
42
+ --color-accent-foreground: var(--accent-foreground);
43
+
44
+ --color-destructive: var(--destructive);
45
+ --color-destructive-foreground: var(--destructive-foreground);
46
+
47
+ --color-border: var(--border);
48
+ --color-input: var(--input);
49
+ --color-ring: var(--ring);
50
+
51
+ --color-chart-1: var(--chart-1);
52
+ --color-chart-2: var(--chart-2);
53
+ --color-chart-3: var(--chart-3);
54
+ --color-chart-4: var(--chart-4);
55
+ --color-chart-5: var(--chart-5);
56
+
57
+ --color-1: var(--color-1);
58
+ --color-2: var(--color-2);
59
+ --color-3: var(--color-3);
60
+ --color-4: var(--color-4);
61
+ --color-5: var(--color-5);
62
+
63
+ --animate-rainbow: rainbow 5s linear infinite;
64
+ @keyframes rainbow {
65
+ 0% { background-position: 0%; }
66
+ 100% { background-position: 200%; }
67
+ }
68
+ }
69
+
70
+ :root {
71
+ --radius: 0.625rem;
72
+ --background: oklch(1 0 0);
73
+ --foreground: oklch(0.145 0 0);
74
+
75
+ --sidebar: oklch(0.982 0 0);
76
+ --sidebar-foreground: oklch(0.145 0 0);
77
+ --sidebar-primary: oklch(0.205 0 0);
78
+ --sidebar-primary-foreground: oklch(0.985 0 0);
79
+ --sidebar-accent: oklch(0.95 0 0);
80
+ --sidebar-accent-foreground: oklch(0.205 0 0);
81
+ --sidebar-ring: oklch(0.708 0 0);
82
+ --sidebar-border: oklch(0.922 0 0);
83
+
84
+ --card: oklch(1 0 0);
85
+ --card-foreground: oklch(0.145 0 0);
86
+
87
+ --popover: oklch(1 0 0);
88
+ --popover-foreground: oklch(0.145 0 0);
89
+
90
+ --primary: oklch(0.205 0 0);
91
+ --primary-foreground: oklch(0.985 0 0);
92
+
93
+ --secondary: oklch(0.97 0 0);
94
+ --secondary-foreground: oklch(0.205 0 0);
95
+
96
+ --muted: oklch(0.97 0 0);
97
+ --muted-foreground: oklch(0.556 0 0);
98
+
99
+ --accent: oklch(0.97 0 0);
100
+ --accent-foreground: oklch(0.205 0 0);
101
+
102
+ --destructive: oklch(0.577 0.245 27.325);
103
+ --destructive-foreground: oklch(0.985 0 0);
104
+
105
+ --border: oklch(0.922 0 0);
106
+ --input: oklch(0.922 0 0);
107
+ --ring: oklch(0.708 0 0);
108
+
109
+ --chart-1: oklch(0.646 0.222 41.116);
110
+ --chart-2: oklch(0.6 0.118 184.704);
111
+ --chart-3: oklch(0.398 0.07 227.392);
112
+ --chart-4: oklch(0.828 0.189 84.429);
113
+ --chart-5: oklch(0.769 0.188 70.08);
114
+
115
+ --color-1: oklch(66.2% 0.225 25.9);
116
+ --color-2: oklch(60.4% 0.26 302);
117
+ --color-3: oklch(69.6% 0.165 251);
118
+ --color-4: oklch(80.2% 0.134 225);
119
+ --color-5: oklch(90.7% 0.231 133);
120
+ }
121
+
122
+ .dark {
123
+ --background: oklch(0.145 0 0);
124
+ --foreground: oklch(0.985 0 0);
125
+
126
+ --sidebar: oklch(0.175 0 0);
127
+ --sidebar-foreground: oklch(0.985 0 0);
128
+ --sidebar-primary: oklch(0.92 0 0);
129
+ --sidebar-primary-foreground: oklch(0.205 0 0);
130
+ --sidebar-accent: oklch(0.269 0 0);
131
+ --sidebar-accent-foreground: oklch(0.985 0 0);
132
+ --sidebar-ring: oklch(0.708 0 0);
133
+ --sidebar-border: oklch(0.269 0 0);
134
+
135
+ --card: oklch(0.145 0 0);
136
+ --card-foreground: oklch(0.985 0 0);
137
+
138
+ --popover: oklch(0.145 0 0);
139
+ --popover-foreground: oklch(0.985 0 0);
140
+
141
+ --primary: oklch(80.517% 0.20237 152.675 / 0.909);
142
+ --primary-foreground: oklch(0.145 0 0);
143
+
144
+ --secondary: oklch(0.269 0 0);
145
+ --secondary-foreground: oklch(0.985 0 0);
146
+
147
+ --muted: oklch(0.269 0 0);
148
+ --muted-foreground: oklch(0.708 0 0);
149
+
150
+ --accent: oklch(0.269 0 0);
151
+ --accent-foreground: oklch(0.985 0 0);
152
+
153
+ --destructive: oklch(0.704 0.191 22.216);
154
+ --destructive-foreground: oklch(0.985 0 0);
155
+
156
+ --border: oklch(0.269 0 0);
157
+ --input: oklch(0.269 0 0);
158
+ --ring: oklch(0.708 0 0);
159
+
160
+ --chart-1: oklch(0.704 0.191 84.429);
161
+ --chart-2: oklch(0.696 0.17 162.48);
162
+ --chart-3: oklch(0.769 0.188 70.08);
163
+ --chart-4: oklch(0.627 0.265 303.9);
164
+ --chart-5: oklch(0.645 0.223 10.62);
165
+
166
+ --color-1: oklch(66.2% 0.225 25.9);
167
+ --color-2: oklch(60.4% 0.26 302);
168
+ --color-3: oklch(69.6% 0.165 251);
169
+ --color-4: oklch(80.2% 0.134 225);
170
+ --color-5: oklch(90.7% 0.231 133);
171
+ }
172
+
173
+ @layer base {
174
+ * {
175
+ border-color: var(--color-border);
176
+ box-sizing: border-box;
177
+ }
178
+
179
+ html, body {
180
+ width: 100%;
181
+ margin: 0;
182
+ padding: 0;
183
+ }
184
+
185
+ body {
186
+ background-color: var(--color-background);
187
+ color: var(--color-foreground);
188
+ }
189
+ }
190
+
191
+ ::view-transition-old(root), ::view-transition-new(root) {
192
+ animation: none;
193
+ mix-blend-mode: normal;
194
+ }
195
+
196
+ /* AnimatedThemeToggler 初始 clip-path:在扩散动画启动前,
197
+ 将 new snapshot 锁定在 collapsed 状态,避免瞬显闪烁。 */
198
+ [data-magicui-theme-vt="active"]::view-transition-new(root) {
199
+ clip-path: var(--magicui-theme-vt-clip-from);
200
+ }
@@ -0,0 +1,27 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later
2
+ // AllBlue - 理想之海
3
+ // Copyright (C) 2026 AllBlue Contributors
4
+ //
5
+ // This program is free software: you can redistribute it and/or modify
6
+ // it under the terms of the GNU Affero General Public License as published by
7
+ // the Free Software Foundation, either version 3 of the License, or
8
+ // (at your option) any later version.
9
+ //
10
+ // This program is distributed in the hope that it will be useful,
11
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ // GNU Affero General Public License for more details.
14
+ //
15
+ // You should have received a copy of the GNU Affero General Public License
16
+ // along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+
18
+ declare module '@auth/core' {
19
+ interface User {
20
+ role?: string | null
21
+ avatarConfig?: Record<string, number> | null
22
+ bgShape?: string | null
23
+ bgColor?: string | null
24
+ }
25
+ }
26
+
27
+ export {}