@ac-design/design-system 1.0.3 → 2.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 (235) hide show
  1. package/README.md +27 -18
  2. package/dist/lib/charts/ChartFrame.js +5 -0
  3. package/dist/lib/charts/ChartFrame.vue.d.ts +71 -0
  4. package/dist/lib/charts/ChartFrame.vue_vue_type_script_setup_true_lang.js +173 -0
  5. package/dist/lib/charts/cartesian.d.ts +324 -0
  6. package/dist/lib/charts/cartesian.js +137 -0
  7. package/dist/lib/charts/echarts.d.ts +86 -0
  8. package/dist/lib/charts/echarts.js +173 -0
  9. package/dist/lib/charts/graph.d.ts +77 -0
  10. package/dist/lib/charts/graph.js +155 -0
  11. package/dist/lib/charts/index.d.ts +11 -0
  12. package/dist/lib/charts/index.js +7 -0
  13. package/dist/lib/charts/shared.d.ts +53 -0
  14. package/dist/lib/charts/shared.js +96 -0
  15. package/dist/lib/charts/xy.d.ts +69 -0
  16. package/dist/lib/charts/xy.js +73 -0
  17. package/dist/lib/compat.css +2770 -1061
  18. package/dist/lib/components/AcAccordion.vue_vue_type_script_setup_true_lang.js +2 -2
  19. package/dist/lib/components/AcAccordionItem.vue.d.ts +1 -1
  20. package/dist/lib/components/AcAccordionItem.vue_vue_type_script_setup_true_lang.js +5 -5
  21. package/dist/lib/components/AcAlert.vue.d.ts +10 -1
  22. package/dist/lib/components/AcAlert.vue_vue_type_script_setup_true_lang.js +139 -45
  23. package/dist/lib/components/AcAppSwitcher.vue_vue_type_script_setup_true_lang.js +19 -19
  24. package/dist/lib/components/AcAreaChart.js +5 -0
  25. package/dist/lib/components/AcAreaChart.vue.d.ts +47 -0
  26. package/dist/lib/components/AcAreaChart.vue_vue_type_script_setup_true_lang.js +205 -0
  27. package/dist/lib/components/AcAvatar.vue.d.ts +7 -4
  28. package/dist/lib/components/AcAvatar.vue_vue_type_script_setup_true_lang.js +66 -61
  29. package/dist/lib/components/AcBadge.vue.d.ts +20 -7
  30. package/dist/lib/components/AcBadge.vue_vue_type_script_setup_true_lang.js +67 -44
  31. package/dist/lib/components/AcBanner.vue.d.ts +1 -1
  32. package/dist/lib/components/AcBanner.vue_vue_type_script_setup_true_lang.js +30 -30
  33. package/dist/lib/components/AcBarChart.js +5 -0
  34. package/dist/lib/components/AcBarChart.vue.d.ts +46 -0
  35. package/dist/lib/components/AcBarChart.vue_vue_type_script_setup_true_lang.js +213 -0
  36. package/dist/lib/components/AcBreadcrumb.vue.d.ts +4 -1
  37. package/dist/lib/components/AcBreadcrumb.vue_vue_type_script_setup_true_lang.js +36 -34
  38. package/dist/lib/components/AcBulkActionBar.js +5 -0
  39. package/dist/lib/components/AcBulkActionBar.vue.d.ts +45 -0
  40. package/dist/lib/components/AcBulkActionBar.vue_vue_type_script_setup_true_lang.js +84 -0
  41. package/dist/lib/components/AcButton.vue.d.ts +13 -7
  42. package/dist/lib/components/AcButton.vue_vue_type_script_setup_true_lang.js +93 -47
  43. package/dist/lib/components/AcButtons.vue_vue_type_script_setup_true_lang.js +1 -1
  44. package/dist/lib/components/AcCard.vue.d.ts +42 -3
  45. package/dist/lib/components/AcCard.vue_vue_type_script_setup_true_lang.js +175 -14
  46. package/dist/lib/components/AcCellValue.vue.d.ts +6 -3
  47. package/dist/lib/components/AcCellValue.vue_vue_type_script_setup_true_lang.js +219 -178
  48. package/dist/lib/components/AcCheckBox.vue.d.ts +17 -3
  49. package/dist/lib/components/AcCheckBox.vue_vue_type_script_setup_true_lang.js +113 -30
  50. package/dist/lib/components/AcCheckList.js +5 -0
  51. package/dist/lib/components/AcCheckList.vue.d.ts +45 -0
  52. package/dist/lib/components/AcCheckList.vue_vue_type_script_setup_true_lang.js +64 -0
  53. package/dist/lib/components/AcCheckRadio.vue.d.ts +30 -5
  54. package/dist/lib/components/AcCheckRadio.vue_vue_type_script_setup_true_lang.js +102 -26
  55. package/dist/lib/components/AcCircularProgress.js +5 -0
  56. package/dist/lib/components/AcCircularProgress.vue.d.ts +44 -0
  57. package/dist/lib/components/AcCircularProgress.vue_vue_type_script_setup_true_lang.js +114 -0
  58. package/dist/lib/components/AcClusterSwitcher.vue_vue_type_script_setup_true_lang.js +142 -167
  59. package/dist/lib/components/AcCodeEditor.vue_vue_type_script_setup_true_lang.js +9 -9
  60. package/dist/lib/components/AcColorInput.js +5 -0
  61. package/dist/lib/components/AcColorInput.vue.d.ts +57 -0
  62. package/dist/lib/components/AcColorInput.vue_vue_type_script_setup_true_lang.js +217 -0
  63. package/dist/lib/components/AcCommandBlock.js +5 -0
  64. package/dist/lib/components/AcCommandBlock.vue.d.ts +34 -0
  65. package/dist/lib/components/AcCommandBlock.vue_vue_type_script_setup_true_lang.js +88 -0
  66. package/dist/lib/components/AcConfirmModal.js +5 -0
  67. package/dist/lib/components/AcConfirmModal.vue.d.ts +56 -0
  68. package/dist/lib/components/AcConfirmModal.vue_vue_type_script_setup_true_lang.js +96 -0
  69. package/dist/lib/components/AcContentHeader.vue.d.ts +1 -1
  70. package/dist/lib/components/AcContentHeader.vue_vue_type_script_setup_true_lang.js +5 -4
  71. package/dist/lib/components/AcContentLayout.vue_vue_type_script_setup_true_lang.js +2 -2
  72. package/dist/lib/components/AcCopyButton.js +5 -0
  73. package/dist/lib/components/AcCopyButton.vue.d.ts +43 -0
  74. package/dist/lib/components/AcCopyButton.vue_vue_type_script_setup_true_lang.js +92 -0
  75. package/dist/lib/components/AcCostSummary.js +5 -0
  76. package/dist/lib/components/AcCostSummary.vue.d.ts +102 -0
  77. package/dist/lib/components/AcCostSummary.vue_vue_type_script_setup_true_lang.js +179 -0
  78. package/dist/lib/components/AcDatePicker.vue.d.ts +8 -8
  79. package/dist/lib/components/AcDatePicker.vue_vue_type_script_setup_true_lang.js +634 -417
  80. package/dist/lib/components/AcDeleteModal.vue.d.ts +4 -4
  81. package/dist/lib/components/AcDeleteModal.vue_vue_type_script_setup_true_lang.js +57 -60
  82. package/dist/lib/components/AcDonutChart.js +5 -0
  83. package/dist/lib/components/AcDonutChart.vue.d.ts +83 -0
  84. package/dist/lib/components/AcDonutChart.vue_vue_type_script_setup_true_lang.js +237 -0
  85. package/dist/lib/components/AcDropdown.vue.d.ts +5 -2
  86. package/dist/lib/components/AcDropdown.vue_vue_type_script_setup_true_lang.js +91 -78
  87. package/dist/lib/components/AcDropdownDivider.vue_vue_type_script_setup_true_lang.js +11 -10
  88. package/dist/lib/components/AcDropdownItem.vue.d.ts +2 -2
  89. package/dist/lib/components/AcDropdownItem.vue_vue_type_script_setup_true_lang.js +18 -18
  90. package/dist/lib/components/AcEmptyState.vue.d.ts +4 -1
  91. package/dist/lib/components/AcEmptyState.vue_vue_type_script_setup_true_lang.js +50 -39
  92. package/dist/lib/components/AcErrorState.js +5 -0
  93. package/dist/lib/components/AcErrorState.vue.d.ts +46 -0
  94. package/dist/lib/components/AcErrorState.vue_vue_type_script_setup_true_lang.js +66 -0
  95. package/dist/lib/components/AcFeatureCard.vue.d.ts +6 -0
  96. package/dist/lib/components/AcFeatureCard.vue_vue_type_script_setup_true_lang.js +139 -116
  97. package/dist/lib/components/AcFileEditor.vue_vue_type_script_setup_true_lang.js +16 -16
  98. package/dist/lib/components/AcFileUpload.vue.d.ts +2 -2
  99. package/dist/lib/components/AcFileUpload.vue_vue_type_script_setup_true_lang.js +55 -53
  100. package/dist/lib/components/AcFontScale.vue_vue_type_script_setup_true_lang.js +2 -2
  101. package/dist/lib/components/AcFooter.js +5 -0
  102. package/dist/lib/components/AcFooter.vue.d.ts +37 -0
  103. package/dist/lib/components/AcFooter.vue_vue_type_script_setup_true_lang.js +107 -0
  104. package/dist/lib/components/AcForm.vue.d.ts +3 -0
  105. package/dist/lib/components/AcForm.vue_vue_type_script_setup_true_lang.js +4 -2
  106. package/dist/lib/components/AcFormArray.vue.d.ts +2 -2
  107. package/dist/lib/components/AcFormArray.vue_vue_type_script_setup_true_lang.js +149 -147
  108. package/dist/lib/components/AcFormFooter.vue.d.ts +3 -3
  109. package/dist/lib/components/AcFormFooter.vue_vue_type_script_setup_true_lang.js +2 -2
  110. package/dist/lib/components/AcFormSection.vue.d.ts +8 -1
  111. package/dist/lib/components/AcFormSection.vue_vue_type_script_setup_true_lang.js +31 -21
  112. package/dist/lib/components/AcGraphChart.js +5 -0
  113. package/dist/lib/components/AcGraphChart.vue.d.ts +124 -0
  114. package/dist/lib/components/AcGraphChart.vue_vue_type_script_setup_true_lang.js +578 -0
  115. package/dist/lib/components/AcHeader.vue.d.ts +20 -5
  116. package/dist/lib/components/AcHeader.vue_vue_type_script_setup_true_lang.js +82 -28
  117. package/dist/lib/components/AcInfoTable.vue.d.ts +1 -1
  118. package/dist/lib/components/AcInfoTable.vue_vue_type_script_setup_true_lang.js +17 -13
  119. package/dist/lib/components/AcInput.vue.d.ts +4 -4
  120. package/dist/lib/components/AcInput.vue_vue_type_script_setup_true_lang.js +99 -91
  121. package/dist/lib/components/AcKbd.vue_vue_type_script_setup_true_lang.js +1 -1
  122. package/dist/lib/components/AcKeyValueInput.js +5 -0
  123. package/dist/lib/components/AcKeyValueInput.vue.d.ts +114 -0
  124. package/dist/lib/components/AcKeyValueInput.vue_vue_type_script_setup_true_lang.js +336 -0
  125. package/dist/lib/components/AcLineChart.js +5 -0
  126. package/dist/lib/components/AcLineChart.vue.d.ts +44 -0
  127. package/dist/lib/components/AcLineChart.vue_vue_type_script_setup_true_lang.js +175 -0
  128. package/dist/lib/components/AcLoader.js +5 -0
  129. package/dist/lib/components/AcLoader.vue.d.ts +15 -0
  130. package/dist/lib/components/AcLoader.vue_vue_type_script_setup_true_lang.js +66 -0
  131. package/dist/lib/components/AcLocaleSwitcher.js +5 -0
  132. package/dist/lib/components/AcLocaleSwitcher.vue.d.ts +48 -0
  133. package/dist/lib/components/AcLocaleSwitcher.vue_vue_type_script_setup_true_lang.js +111 -0
  134. package/dist/lib/components/AcMapChart.js +5 -0
  135. package/dist/lib/components/AcMapChart.vue.d.ts +136 -0
  136. package/dist/lib/components/AcMapChart.vue_vue_type_script_setup_true_lang.js +518 -0
  137. package/dist/lib/components/AcModal.vue.d.ts +6 -3
  138. package/dist/lib/components/AcModal.vue_vue_type_script_setup_true_lang.js +88 -64
  139. package/dist/lib/components/AcNavbar.vue.d.ts +8 -5
  140. package/dist/lib/components/AcNavbar.vue_vue_type_script_setup_true_lang.js +29 -21
  141. package/dist/lib/components/AcNavbarItem.vue.d.ts +2 -2
  142. package/dist/lib/components/AcNavbarItem.vue_vue_type_script_setup_true_lang.js +23 -24
  143. package/dist/lib/components/AcNotificationMenu.vue.d.ts +3 -3
  144. package/dist/lib/components/AcNotificationMenu.vue_vue_type_script_setup_true_lang.js +139 -174
  145. package/dist/lib/components/AcNumberInput.js +5 -0
  146. package/dist/lib/components/AcNumberInput.vue.d.ts +79 -0
  147. package/dist/lib/components/AcNumberInput.vue_vue_type_script_setup_true_lang.js +241 -0
  148. package/dist/lib/components/AcPage.vue.d.ts +2 -2
  149. package/dist/lib/components/AcPage.vue_vue_type_script_setup_true_lang.js +2 -2
  150. package/dist/lib/components/AcPagination.vue.d.ts +22 -5
  151. package/dist/lib/components/AcPagination.vue_vue_type_script_setup_true_lang.js +87 -56
  152. package/dist/lib/components/AcPreloader.vue.d.ts +3 -3
  153. package/dist/lib/components/AcPreloader.vue_vue_type_script_setup_true_lang.js +15 -16
  154. package/dist/lib/components/AcProductHero.js +5 -0
  155. package/dist/lib/components/AcProductHero.vue.d.ts +56 -0
  156. package/dist/lib/components/AcProductHero.vue_vue_type_script_setup_true_lang.js +95 -0
  157. package/dist/lib/components/AcProgress.vue.d.ts +19 -4
  158. package/dist/lib/components/AcProgress.vue_vue_type_script_setup_true_lang.js +85 -31
  159. package/dist/lib/components/AcResourceCard.vue.d.ts +3 -3
  160. package/dist/lib/components/AcResourceCard.vue_vue_type_script_setup_true_lang.js +17 -17
  161. package/dist/lib/components/AcSearchBar.vue.d.ts +1 -1
  162. package/dist/lib/components/AcSearchBar.vue_vue_type_script_setup_true_lang.js +14 -9
  163. package/dist/lib/components/AcSectionContent.vue.d.ts +2 -2
  164. package/dist/lib/components/AcSectionContent.vue_vue_type_script_setup_true_lang.js +8 -8
  165. package/dist/lib/components/AcSegmentedControl.vue.d.ts +1 -1
  166. package/dist/lib/components/AcSegmentedControl.vue_vue_type_script_setup_true_lang.js +4 -4
  167. package/dist/lib/components/AcSelect.vue.d.ts +6 -6
  168. package/dist/lib/components/AcSelect.vue_vue_type_script_setup_true_lang.js +246 -254
  169. package/dist/lib/components/AcSettingsRow.js +5 -0
  170. package/dist/lib/components/AcSettingsRow.vue.d.ts +29 -0
  171. package/dist/lib/components/AcSettingsRow.vue_vue_type_script_setup_true_lang.js +37 -0
  172. package/dist/lib/components/AcSidePanel.vue_vue_type_script_setup_true_lang.js +32 -32
  173. package/dist/lib/components/AcSideTabs.vue.d.ts +2 -2
  174. package/dist/lib/components/AcSideTabs.vue_vue_type_script_setup_true_lang.js +37 -37
  175. package/dist/lib/components/AcSidebar.vue.d.ts +6 -3
  176. package/dist/lib/components/AcSidebar.vue_vue_type_script_setup_true_lang.js +67 -57
  177. package/dist/lib/components/AcSidebarItem.vue.d.ts +1 -1
  178. package/dist/lib/components/AcSidebarItem.vue_vue_type_script_setup_true_lang.js +46 -45
  179. package/dist/lib/components/AcSidebarSection.vue.d.ts +2 -2
  180. package/dist/lib/components/AcSidebarSection.vue_vue_type_script_setup_true_lang.js +23 -18
  181. package/dist/lib/components/AcSkeleton.vue_vue_type_script_setup_true_lang.js +8 -8
  182. package/dist/lib/components/AcSlider.vue.d.ts +1 -1
  183. package/dist/lib/components/AcSlider.vue_vue_type_script_setup_true_lang.js +174 -172
  184. package/dist/lib/components/AcStatCard.vue.d.ts +3 -3
  185. package/dist/lib/components/AcStatCard.vue_vue_type_script_setup_true_lang.js +90 -85
  186. package/dist/lib/components/AcStatusBar.vue.d.ts +1 -1
  187. package/dist/lib/components/AcStatusBar.vue_vue_type_script_setup_true_lang.js +6 -6
  188. package/dist/lib/components/AcSteps.vue_vue_type_script_setup_true_lang.js +28 -28
  189. package/dist/lib/components/AcSwitch.vue.d.ts +3 -0
  190. package/dist/lib/components/AcSwitch.vue_vue_type_script_setup_true_lang.js +31 -19
  191. package/dist/lib/components/AcSwitchCard.js +5 -0
  192. package/dist/lib/components/AcSwitchCard.vue.d.ts +59 -0
  193. package/dist/lib/components/AcSwitchCard.vue_vue_type_script_setup_true_lang.js +121 -0
  194. package/dist/lib/components/AcTable.vue_vue_type_script_setup_true_lang.js +97 -97
  195. package/dist/lib/components/AcTabs.vue.d.ts +9 -2
  196. package/dist/lib/components/AcTabs.vue_vue_type_script_setup_true_lang.js +43 -28
  197. package/dist/lib/components/AcTag.vue.d.ts +2 -2
  198. package/dist/lib/components/AcTag.vue_vue_type_script_setup_true_lang.js +22 -22
  199. package/dist/lib/components/AcTagInput.js +5 -0
  200. package/dist/lib/components/AcTagInput.vue.d.ts +74 -0
  201. package/dist/lib/components/AcTagInput.vue_vue_type_script_setup_true_lang.js +289 -0
  202. package/dist/lib/components/AcTextarea.vue.d.ts +4 -4
  203. package/dist/lib/components/AcTextarea.vue_vue_type_script_setup_true_lang.js +85 -63
  204. package/dist/lib/components/AcThemeMode.vue.d.ts +3 -3
  205. package/dist/lib/components/AcThemeMode.vue_vue_type_script_setup_true_lang.js +56 -24
  206. package/dist/lib/components/AcTimePicker.js +5 -0
  207. package/dist/lib/components/AcTimePicker.vue.d.ts +65 -0
  208. package/dist/lib/components/AcTimePicker.vue_vue_type_script_setup_true_lang.js +455 -0
  209. package/dist/lib/components/AcToaster.vue.d.ts +6 -3
  210. package/dist/lib/components/AcToaster.vue_vue_type_script_setup_true_lang.js +115 -82
  211. package/dist/lib/components/AcTooltip.vue.d.ts +34 -14
  212. package/dist/lib/components/AcTooltip.vue_vue_type_script_setup_true_lang.js +203 -79
  213. package/dist/lib/components/AcUsageCard.vue_vue_type_script_setup_true_lang.js +27 -27
  214. package/dist/lib/components/AcUserMenu.vue.d.ts +23 -1
  215. package/dist/lib/components/AcUserMenu.vue_vue_type_script_setup_true_lang.js +166 -115
  216. package/dist/lib/components/index.d.ts +21 -2
  217. package/dist/lib/components/status.d.ts +28 -0
  218. package/dist/lib/components/status.js +125 -0
  219. package/dist/lib/composables/copyText.d.ts +2 -1
  220. package/dist/lib/composables/copyText.js +2 -2
  221. package/dist/lib/composables/useApiPagination.d.ts +55 -0
  222. package/dist/lib/composables/useApiPagination.js +58 -0
  223. package/dist/lib/composables/useBulkSelection.d.ts +44 -0
  224. package/dist/lib/composables/useBulkSelection.js +41 -0
  225. package/dist/lib/composables/useFormValidation.d.ts +65 -0
  226. package/dist/lib/composables/useFormValidation.js +148 -0
  227. package/dist/lib/composables/useTablePagination.d.ts +49 -0
  228. package/dist/lib/composables/useTablePagination.js +41 -0
  229. package/dist/lib/composables/useToast.d.ts +17 -1
  230. package/dist/lib/composables/useToast.js +10 -2
  231. package/dist/lib/editor/theme.js +65 -62
  232. package/dist/lib/index.d.ts +21 -3
  233. package/dist/lib/index.js +99 -75
  234. package/dist/lib/theme.css +377 -273
  235. package/package.json +20 -4
@@ -1,29 +1,29 @@
1
1
  /*
2
- * AppsCode design tokens as a Tailwind v4 theme.
3
- * Values come from design-system/src/components/vue-components/styles/base/utilities
4
- * (_root-variables.scss, _colors.scss, _typography.scss, _global.scss).
2
+ * AppsCode design tokens as a Tailwind v4 theme, in the look of the AppsCode Cloud console (cloud-ui):
3
+ * neutral greys on a #f9fafb canvas, the #00a651 brand green, Roboto for the interface,
4
+ * Google Sans Flex for headings and JetBrains Mono for code. Controls are 10px round, surfaces 14px.
5
5
  * Tailwind's default palette, radii and shadows are cleared so only AppsCode values exist.
6
- *
7
- * v0.2 "premium" refinements on top of the source values: Geist type, surface and ring tokens,
8
- * a softer layered elevation scale, and 6/10px radii for controls and surfaces.
9
- * The brand and status colour scales are unchanged.
6
+ * Token names are kept from v1.0 so apps keep working; only their values follow cloud-ui.
10
7
  *
11
8
  * Consumers: @import "tailwindcss"; then @import this file. Load the fonts once:
12
- * import "@fontsource-variable/geist"; import "@fontsource-variable/geist-mono";
9
+ * import "@fontsource-variable/roboto";
10
+ * import "@fontsource-variable/google-sans-flex/opsz.css";
11
+ * import "@fontsource-variable/jetbrains-mono";
13
12
  */
14
13
  @source "./components";
15
14
  @source "./editor";
15
+ @source "./charts";
16
16
  /* Dark mode is class-based: `.dark` (new) or `.is-dark-theme` (the old library's class) on <html> or any subtree. */
17
17
  @custom-variant dark (&:where(.dark, .dark *, .is-dark-theme, .is-dark-theme *));
18
18
  :root {
19
19
  /* Runtime brand hue — change these on <html> to re-hue every primary/secondary step.
20
- 26% lightness is the AA limit (4.5:1 with white text) for the default hue. */
21
- /* Interface scale: 1 = the 13px base. Set it on <html> (see useFontScale) and text, line heights, spacing
20
+ 32.5% lightness is #00a651, the cloud-ui green (3.2:1 with white text; see the Theming page). */
21
+ /* Interface scale: 1 = the 14px base. Set it on <html> (see useFontScale) and text, line heights, spacing
22
22
  and radii grow together, so layouts keep their proportions. */
23
23
  --ac-scale: 1;
24
24
  --primary-hue: 149;
25
25
  --primary-saturation: 100%;
26
- --primary-light: 26%;
26
+ --primary-light: 32.5%;
27
27
  --secondary-hue: 196;
28
28
  --secondary-saturation: 50%;
29
29
  --secondary-light: 20%;
@@ -37,10 +37,16 @@
37
37
  /* Logo colours: exact brand values, the same in both themes. */
38
38
  --color-brand-navy: #193d4b;
39
39
  --color-brand-green: #00a651;
40
+ /* AcThemeMode's toggle, as cloud-ui's ThemeSwitcher: fixed in both themes like the brand colours */
41
+ --color-theme-sun: #ffbb52;
42
+ --color-theme-sun-soft: #ffeccf;
43
+ --color-theme-moon: #485367;
40
44
 
41
45
  /* ac-primary: AppsCode green */
42
46
  --color-primary: hsl(var(--primary-hue) var(--primary-saturation) var(--primary-light));
43
- --color-primary-hover: hsl(var(--primary-hue) var(--primary-saturation) calc(var(--primary-light) - 3%));
47
+ --color-primary-hover: hsl(var(--primary-hue) var(--primary-saturation) var(--primary-light) / 0.9);
48
+ /* Primary text on tints and white: links, ghost and outline buttons, active tabs (cloud-ui success-strong) */
49
+ --color-primary-strong: hsl(var(--primary-hue) 94% 25%);
44
50
  --color-primary-5: hsl(var(--primary-hue) var(--primary-saturation) 5%);
45
51
  --color-primary-10: hsl(var(--primary-hue) var(--primary-saturation) 10%);
46
52
  --color-primary-20: hsl(var(--primary-hue) var(--primary-saturation) 20%);
@@ -76,79 +82,79 @@
76
82
  --color-secondary-dark-gray: hsl(var(--secondary-hue) 10% 10%);
77
83
 
78
84
  /* green */
79
- --color-green-5: hsl(141 53% 5%);
80
- --color-green-10: hsl(141 53% 10%);
81
- --color-green-20: hsl(141 53% 20%);
82
- --color-green-30: hsl(141 53% 30%);
83
- --color-green-40: hsl(141 53% 40%);
84
- --color-green-50: hsl(141 53% 50%);
85
- --color-green-60: hsl(141 53% 60%);
86
- --color-green-70: hsl(141 53% 70%);
87
- --color-green-80: hsl(141 53% 80%);
88
- --color-green-90: hsl(141 53% 90%);
89
- --color-green-93: hsl(141 53% 93%);
90
- --color-green-95: hsl(141 53% 95%);
91
- --color-green-97: hsl(141 53% 97%);
85
+ --color-green-5: hsl(149 65% 5%);
86
+ --color-green-10: hsl(149 65% 10%);
87
+ --color-green-20: hsl(149 65% 20%);
88
+ --color-green-30: hsl(149 65% 30%);
89
+ --color-green-40: hsl(149 65% 40%);
90
+ --color-green-50: hsl(149 65% 50%);
91
+ --color-green-60: hsl(149 65% 60%);
92
+ --color-green-70: hsl(149 65% 70%);
93
+ --color-green-80: hsl(149 65% 80%);
94
+ --color-green-90: hsl(149 65% 90%);
95
+ --color-green-93: hsl(149 65% 93%);
96
+ --color-green-95: hsl(149 65% 95%);
97
+ --color-green-97: hsl(149 65% 97%);
92
98
 
93
99
  /* blue */
94
- --color-blue-5: hsl(217 71% 5%);
95
- --color-blue-10: hsl(217 71% 10%);
96
- --color-blue-20: hsl(217 71% 20%);
97
- --color-blue-30: hsl(217 71% 30%);
98
- --color-blue-40: hsl(217 71% 40%);
99
- --color-blue-50: hsl(217 71% 50%);
100
- --color-blue-60: hsl(217 71% 60%);
101
- --color-blue-70: hsl(217 71% 70%);
102
- --color-blue-80: hsl(217 71% 80%);
103
- --color-blue-90: hsl(217 71% 90%);
104
- --color-blue-93: hsl(217 71% 93%);
105
- --color-blue-95: hsl(217 71% 95%);
106
- --color-blue-97: hsl(217 71% 97%);
100
+ --color-blue-5: hsl(215 85% 5%);
101
+ --color-blue-10: hsl(215 85% 10%);
102
+ --color-blue-20: hsl(215 85% 20%);
103
+ --color-blue-30: hsl(215 85% 30%);
104
+ --color-blue-40: hsl(215 85% 40%);
105
+ --color-blue-50: hsl(215 85% 50%);
106
+ --color-blue-60: hsl(215 85% 60%);
107
+ --color-blue-70: hsl(215 85% 70%);
108
+ --color-blue-80: hsl(215 85% 80%);
109
+ --color-blue-90: hsl(215 85% 90%);
110
+ --color-blue-93: hsl(215 85% 93%);
111
+ --color-blue-95: hsl(215 85% 95%);
112
+ --color-blue-97: hsl(215 85% 97%);
107
113
 
108
114
  /* purple */
109
- --color-purple-5: hsl(286 66% 5%);
110
- --color-purple-10: hsl(286 66% 10%);
111
- --color-purple-20: hsl(286 66% 20%);
112
- --color-purple-30: hsl(286 66% 30%);
113
- --color-purple-40: hsl(286 66% 40%);
114
- --color-purple-50: hsl(286 66% 50%);
115
- --color-purple-60: hsl(286 66% 60%);
116
- --color-purple-70: hsl(286 66% 70%);
117
- --color-purple-80: hsl(286 66% 80%);
118
- --color-purple-90: hsl(286 66% 90%);
119
- --color-purple-93: hsl(286 66% 93%);
120
- --color-purple-95: hsl(286 66% 95%);
121
- --color-purple-97: hsl(286 66% 97%);
115
+ --color-purple-5: hsl(262 75% 5%);
116
+ --color-purple-10: hsl(262 75% 10%);
117
+ --color-purple-20: hsl(262 75% 20%);
118
+ --color-purple-30: hsl(262 75% 30%);
119
+ --color-purple-40: hsl(262 75% 40%);
120
+ --color-purple-50: hsl(262 75% 50%);
121
+ --color-purple-60: hsl(262 75% 60%);
122
+ --color-purple-70: hsl(262 75% 70%);
123
+ --color-purple-80: hsl(262 75% 80%);
124
+ --color-purple-90: hsl(262 75% 90%);
125
+ --color-purple-93: hsl(262 75% 93%);
126
+ --color-purple-95: hsl(262 75% 95%);
127
+ --color-purple-97: hsl(262 75% 97%);
122
128
 
123
129
  /* yellow */
124
- --color-yellow-5: hsl(38 93% 5%);
125
- --color-yellow-10: hsl(38 93% 10%);
126
- --color-yellow-20: hsl(38 93% 20%);
127
- --color-yellow-30: hsl(38 93% 30%);
128
- --color-yellow-40: hsl(38 93% 40%);
129
- --color-yellow-50: hsl(38 93% 50%);
130
- --color-yellow-60: hsl(38 93% 60%);
131
- --color-yellow-70: hsl(38 93% 70%);
132
- --color-yellow-80: hsl(38 93% 80%);
133
- --color-yellow-90: hsl(38 93% 90%);
134
- --color-yellow-93: hsl(38 93% 93%);
135
- --color-yellow-95: hsl(38 93% 95%);
136
- --color-yellow-97: hsl(38 93% 97%);
130
+ --color-yellow-5: hsl(38 92% 5%);
131
+ --color-yellow-10: hsl(38 92% 10%);
132
+ --color-yellow-20: hsl(38 92% 20%);
133
+ --color-yellow-30: hsl(38 92% 30%);
134
+ --color-yellow-40: hsl(38 92% 40%);
135
+ --color-yellow-50: hsl(38 92% 50%);
136
+ --color-yellow-60: hsl(38 92% 60%);
137
+ --color-yellow-70: hsl(38 92% 70%);
138
+ --color-yellow-80: hsl(38 92% 80%);
139
+ --color-yellow-90: hsl(38 92% 90%);
140
+ --color-yellow-93: hsl(38 92% 93%);
141
+ --color-yellow-95: hsl(38 92% 95%);
142
+ --color-yellow-97: hsl(38 92% 97%);
137
143
 
138
144
  /* red */
139
- --color-red-5: hsl(348 100% 5%);
140
- --color-red-10: hsl(348 100% 10%);
141
- --color-red-20: hsl(348 100% 20%);
142
- --color-red-30: hsl(348 100% 30%);
143
- --color-red-40: hsl(348 100% 40%);
144
- --color-red-50: hsl(348 100% 50%);
145
- --color-red-60: hsl(348 100% 60%);
146
- --color-red-70: hsl(348 100% 70%);
147
- --color-red-80: hsl(348 100% 80%);
148
- --color-red-90: hsl(348 100% 90%);
149
- --color-red-93: hsl(348 100% 93%);
150
- --color-red-95: hsl(348 100% 95%);
151
- --color-red-97: hsl(348 100% 97%);
145
+ --color-red-5: hsl(0 75% 5%);
146
+ --color-red-10: hsl(0 75% 10%);
147
+ --color-red-20: hsl(0 75% 20%);
148
+ --color-red-30: hsl(0 75% 30%);
149
+ --color-red-40: hsl(0 75% 40%);
150
+ --color-red-50: hsl(0 75% 50%);
151
+ --color-red-60: hsl(0 75% 60%);
152
+ --color-red-70: hsl(0 75% 70%);
153
+ --color-red-80: hsl(0 75% 80%);
154
+ --color-red-90: hsl(0 75% 90%);
155
+ --color-red-93: hsl(0 75% 93%);
156
+ --color-red-95: hsl(0 75% 95%);
157
+ --color-red-97: hsl(0 75% 97%);
152
158
 
153
159
  /* gray */
154
160
  --color-gray-5: hsl(0 0% 5%);
@@ -165,87 +171,117 @@
165
171
  --color-gray-95: hsl(0 0% 95%);
166
172
  --color-gray-97: hsl(0 0% 97%);
167
173
 
168
- /* status */
169
- /* 34% is the AA limit for white text (4.6:1); green-40 gave 3.5:1 */
170
- --color-success: hsl(141 53% 34%);
171
- --color-info: var(--color-blue-50);
172
- --color-warning: var(--color-yellow-50);
173
- --color-danger: var(--color-red-40);
174
- /* Hover fills and text-on-warning are fixed values, not scale steps, so dark mode keeps them readable. */
175
- --color-success-hover: hsl(141 53% 30%);
176
- --color-info-hover: hsl(217 71% 42%);
177
- --color-warning-hover: hsl(38 93% 58%);
178
- --color-danger-hover: hsl(348 100% 33%);
179
- --color-on-warning: hsl(38 93% 8%);
174
+ /* status: cloud-ui's success, info, warning, destructive and pending */
175
+ --color-success: #00a651;
176
+ --color-info: #0069ff;
177
+ --color-warning: #f59e0b;
178
+ --color-danger: #ef4444;
179
+ --color-pending: #8b5cf6;
180
+ /* Hover fills lighten to 90%, like cloud-ui's bg-x/90. */
181
+ --color-success-hover: rgb(0 166 81 / 0.9);
182
+ --color-info-hover: rgb(0 105 255 / 0.9);
183
+ --color-warning-hover: rgb(245 158 11 / 0.9);
184
+ --color-danger-hover: rgb(239 68 68 / 0.9);
185
+ --color-pending-hover: rgb(139 92 246 / 0.9);
186
+ --color-on-warning: #1c1300;
187
+ /* Status text on tints and plain surfaces: the AA-contrast variants (5:1 or more) */
188
+ --color-success-strong: #047a3c;
189
+ --color-info-strong: #0050c4;
190
+ --color-warning-strong: #a15c07;
191
+ --color-danger-strong: #c81e1e;
192
+ --color-pending-strong: #6d28d9;
180
193
 
181
- /* slate: text and border ramp */
182
- --color-slate-5: #020617;
183
- --color-slate-10: #0f172a;
184
- --color-slate-20: #1e293b;
185
- --color-slate-30: #334155;
186
- --color-slate-40: #475569;
187
- --color-slate-50: #64748b;
188
- --color-slate-60: #94a3b8;
189
- --color-slate-70: #cbd5e1;
190
- --color-slate-80: #e2e8f0;
191
- --color-slate-90: #f1f5f9;
192
- --color-slate-95: #f8fafc;
194
+ /* slate: the neutral text and border ramp (cloud-ui greys; the name is kept for compatibility) */
195
+ --color-slate-5: #0a0a0a;
196
+ --color-slate-10: #171717;
197
+ --color-slate-20: #252525;
198
+ --color-slate-30: #3d3d3d;
199
+ --color-slate-40: #4a4a4a;
200
+ --color-slate-50: #5c5c5c;
201
+ --color-slate-60: #8f8f8f;
202
+ --color-slate-70: #d6d6d6;
203
+ --color-slate-80: #ebebeb;
204
+ --color-slate-90: #f0f0f0;
205
+ --color-slate-95: #f7f7f7;
193
206
 
194
- /* semantic text and borders (source: $color-heading, $color-text, …) */
195
- --color-heading: var(--color-slate-5);
196
- --color-body: var(--color-slate-30);
197
- --color-label: var(--color-slate-40);
198
- --color-muted: var(--color-slate-50);
199
- --color-link: var(--color-slate-20);
200
- --color-border-light: var(--color-slate-90);
201
- --color-border: var(--color-slate-80);
202
- --color-border-dark: var(--color-slate-70);
203
- --color-sidebar: hsl(var(--primary-hue) 10% 5%);
207
+ /* semantic text and borders */
208
+ --color-heading: #252525;
209
+ --color-body: #252525;
210
+ --color-label: #252525;
211
+ --color-muted: #5c5c5c;
212
+ --color-link: #252525;
213
+ --color-border-light: #f0f0f0;
214
+ --color-border: #ebebeb;
215
+ --color-border-dark: #d6d6d6;
216
+ /* The dark sidebar and status bar variants */
217
+ --color-sidebar: #171717;
204
218
 
205
- /* surfaces */
206
- --color-surface: var(--color-white);
207
- --color-surface-muted: var(--color-slate-95);
208
- --color-surface-sunken: var(--color-slate-90);
209
- /* focus ring: a translucent primary halo, drawn 3px around focused controls */
210
- --color-ring: hsl(var(--primary-hue) var(--primary-saturation) 40% / 0.28);
219
+ /* surfaces: white cards on a #f9fafb page; fields sit on the page tone */
220
+ --color-background: #f9fafb;
221
+ --color-surface: #ffffff;
222
+ --color-surface-muted: #f8f8f8;
223
+ /* Light sidebar panel: the muted surface by day, cloud-ui's #171717 sidebar by night */
224
+ --color-sidebar-panel: #fafafa;
225
+ --color-surface-sunken: #f0f0f0;
226
+ /* Neutral interaction tints: row hover, selected list item, soft chips */
227
+ --color-accent: #eaf0f4;
228
+ --color-accent-hover: #f2f9fd;
229
+ --color-accent-active: #dae9f5;
230
+ /* Focus: a solid primary ring, 2px, offset 2px on buttons */
231
+ --color-ring: hsl(var(--primary-hue) var(--primary-saturation) var(--primary-light));
211
232
  /* modal and drawer backdrop */
212
- --color-overlay: rgb(2 6 23 / 0.4);
233
+ --color-overlay: rgb(0 0 0 / 0.6);
234
+ /* Tooltips: a near-black bubble in both themes */
235
+ --color-tooltip: #171717;
236
+ --color-on-tooltip: #f5f5f5;
237
+
238
+ /* Chart palette (the /charts entry), in a fixed order: brand green, blue, amber, violet, red, cyan, then two
239
+ neutral greys for "Other" and remaining capacity. Adjacent hues stay apart under colour-blindness simulation. */
240
+ --color-chart-1: hsl(var(--primary-hue) var(--primary-saturation) var(--primary-light));
241
+ --color-chart-2: #0069ff;
242
+ --color-chart-3: #d97706;
243
+ --color-chart-4: #8b5cf6;
244
+ --color-chart-5: #ef4444;
245
+ --color-chart-6: #0891b2;
246
+ --color-chart-7: #737373;
247
+ --color-chart-8: #b5b5b5;
213
248
 
214
- /* type — Geist for UI, Geist Mono for code and resource names */
215
- --font-sans: "Geist Variable", "Geist", ui-sans-serif, system-ui, sans-serif;
216
- --font-mono: "Geist Mono Variable", "Geist Mono", ui-monospace, "SFMono-Regular", monospace;
249
+ /* type — Roboto for the interface, Google Sans Flex for headings, JetBrains Mono for code */
250
+ --font-sans: "Roboto Variable", "Roboto", ui-sans-serif, system-ui, sans-serif;
251
+ --font-heading: "Google Sans Flex Variable", "Google Sans Flex", "Roboto Variable", "Roboto", ui-sans-serif, system-ui, sans-serif;
252
+ --font-mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
217
253
  --text-xm: calc(10px * var(--ac-scale));
218
254
  --text-xm--line-height: calc(14px * var(--ac-scale));
219
255
  --text-sm: calc(11px * var(--ac-scale));
220
256
  --text-sm--line-height: calc(16px * var(--ac-scale));
221
257
  --text-xs: calc(12px * var(--ac-scale));
222
258
  --text-xs--line-height: calc(16px * var(--ac-scale));
223
- --text-base: calc(13px * var(--ac-scale));
259
+ --text-base: calc(14px * var(--ac-scale));
224
260
  --text-base--line-height: calc(20px * var(--ac-scale));
225
- --text-lg: calc(14px * var(--ac-scale));
226
- --text-lg--line-height: calc(22px * var(--ac-scale));
227
- --text-xl: calc(16px * var(--ac-scale));
228
- --text-xl--line-height: calc(26px * var(--ac-scale));
229
- --text-2xl: calc(18px * var(--ac-scale));
261
+ --text-lg: calc(16px * var(--ac-scale));
262
+ --text-lg--line-height: calc(24px * var(--ac-scale));
263
+ --text-xl: calc(18px * var(--ac-scale));
264
+ --text-xl--line-height: calc(28px * var(--ac-scale));
265
+ --text-2xl: calc(20px * var(--ac-scale));
230
266
  --text-2xl--line-height: calc(28px * var(--ac-scale));
231
267
  --text-3xl: calc(24px * var(--ac-scale));
232
268
  --text-3xl--line-height: calc(32px * var(--ac-scale));
233
269
  --text-3xl--letter-spacing: -0.02em;
234
270
  --text-4xl: calc(30px * var(--ac-scale));
235
- --text-4xl--line-height: calc(38px * var(--ac-scale));
236
- --text-4xl--letter-spacing: -0.025em;
271
+ --text-4xl--line-height: calc(36px * var(--ac-scale));
272
+ --text-4xl--letter-spacing: -0.02em;
237
273
  --text-5xl: calc(36px * var(--ac-scale));
238
- --text-5xl--line-height: calc(44px * var(--ac-scale));
239
- --text-5xl--letter-spacing: -0.03em;
240
- --text-6xl: calc(42px * var(--ac-scale));
241
- --text-6xl--line-height: calc(48px * var(--ac-scale));
274
+ --text-5xl--line-height: calc(40px * var(--ac-scale));
275
+ --text-5xl--letter-spacing: -0.025em;
276
+ --text-6xl: calc(48px * var(--ac-scale));
277
+ --text-6xl--line-height: calc(52px * var(--ac-scale));
242
278
  --text-6xl--letter-spacing: -0.03em;
243
- --text-h1: calc(32px * var(--ac-scale));
244
- --text-h2: calc(26px * var(--ac-scale));
245
- --text-h3: calc(22px * var(--ac-scale));
279
+ --text-h1: calc(30px * var(--ac-scale));
280
+ --text-h2: calc(24px * var(--ac-scale));
281
+ --text-h3: calc(20px * var(--ac-scale));
246
282
  --text-h4: calc(18px * var(--ac-scale));
247
- --text-h5: calc(15px * var(--ac-scale));
248
- --text-h6: calc(13px * var(--ac-scale));
283
+ --text-h5: calc(16px * var(--ac-scale));
284
+ --text-h6: calc(14px * var(--ac-scale));
249
285
 
250
286
  /* spacing: 1 unit = 4px, so p-4 = 16px like the source .p-16 */
251
287
  --spacing: calc(4px * var(--ac-scale));
@@ -265,32 +301,54 @@
265
301
  --container-5xl: 1024px;
266
302
  --container-6xl: 1152px;
267
303
  --container-7xl: 1280px;
304
+ /* cloud-ui's page width (custom-container) */
305
+ --container-page: 1200px;
268
306
 
269
- /* radius: 6px on controls, 10px on surfaces; the source steps are kept for old classes */
307
+ /* radius: 10px on controls, 14px on cards, 16px on dialogs, 8px on menu items; older steps are kept for apps */
270
308
  --radius-2: calc(2px * var(--ac-scale));
271
309
  --radius-4: calc(4px * var(--ac-scale));
272
310
  --radius-6: calc(6px * var(--ac-scale));
273
311
  --radius-8: calc(8px * var(--ac-scale));
274
312
  --radius-10: calc(10px * var(--ac-scale));
275
313
  --radius-12: calc(12px * var(--ac-scale));
314
+ --radius-14: calc(14px * var(--ac-scale));
276
315
  --radius-16: calc(16px * var(--ac-scale));
277
316
  --radius-50: calc(50px * var(--ac-scale));
278
317
 
279
- /* elevation: soft, slate-tinted, layered */
280
- --shadow-xs: 0 1px 2px 0 rgb(15 23 42 / 0.05);
281
- --shadow-sm: 0 1px 2px 0 rgb(15 23 42 / 0.04), 0 1px 3px 0 rgb(15 23 42 / 0.06);
282
- --shadow-md: 0 2px 4px -1px rgb(15 23 42 / 0.05), 0 4px 10px -2px rgb(15 23 42 / 0.07);
283
- --shadow-lg: 0 4px 6px -2px rgb(15 23 42 / 0.04), 0 12px 24px -4px rgb(15 23 42 / 0.10);
284
- --shadow-xl: 0 8px 16px -4px rgb(15 23 42 / 0.06), 0 24px 48px -12px rgb(15 23 42 / 0.18);
285
- /* a 1px white top highlight for solid buttons */
286
- --shadow-button: inset 0 1px 0 0 rgb(255 255 255 / 0.14), 0 1px 2px 0 rgb(15 23 42 / 0.12);
287
- --inset-shadow-xs: inset 0 1px 1px rgb(15 23 42 / 0.04);
318
+ /* elevation: cloud-ui's neutral scale. Cards rest on a border, not a shadow. */
319
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
320
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
321
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
322
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
323
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
324
+ /* Raised card on hover */
325
+ --shadow-card: 0 2px 4px rgb(15 23 42 / 0.04), 0 12px 24px -6px rgb(15 23 42 / 0.1);
326
+ /* Solid buttons */
327
+ --shadow-button: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
328
+ --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.04);
288
329
 
289
330
  --ease-out-soft: cubic-bezier(0.22, 1, 0.36, 1);
290
331
 
291
332
  --animate-shake: shake 0.5s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
292
- --animate-fade-in: fade-in 0.16s var(--ease-out-soft) both;
293
- --animate-pop-in: pop-in 0.2s var(--ease-out-soft) both;
333
+ --animate-fade-in: fade-in 0.15s var(--ease-out-soft) both;
334
+ --animate-pop-in: pop-in 0.15s var(--ease-out-soft) both;
335
+ /* AcLoader, cloud-ui's page loader: an eased arc, a breathing glow and three dots, each dot with its own delay */
336
+ --animate-loader-spin: loader-spin 0.85s cubic-bezier(0.65, 0, 0.35, 1) infinite;
337
+ --animate-loader-glow: loader-glow 1.7s ease-in-out infinite;
338
+ --animate-loader-dot-1: loader-dot 1.2s ease-in-out infinite;
339
+ --animate-loader-dot-2: loader-dot 1.2s ease-in-out 0.15s infinite;
340
+ --animate-loader-dot-3: loader-dot 1.2s ease-in-out 0.3s infinite;
341
+ @keyframes loader-spin {
342
+ to { transform: rotate(360deg); }
343
+ }
344
+ @keyframes loader-glow {
345
+ 0%, 100% { opacity: 0.5; transform: scale(1); }
346
+ 50% { opacity: 0.15; transform: scale(1.15); }
347
+ }
348
+ @keyframes loader-dot {
349
+ 0%, 70%, 100% { opacity: 0.4; transform: scale(1) translateY(0); }
350
+ 35% { opacity: 1; transform: scale(1.2) translateY(-2px); }
351
+ }
294
352
  @keyframes shake {
295
353
  10%, 90% { transform: translate3d(-1px, 0, 0); }
296
354
  20%, 80% { transform: translate3d(2px, 0, 0); }
@@ -302,7 +360,7 @@
302
360
  to { opacity: 1; }
303
361
  }
304
362
  @keyframes pop-in {
305
- from { opacity: 0; transform: translateY(4px) scale(0.98); }
363
+ from { opacity: 0; transform: scale(0.95); }
306
364
  to { opacity: 1; transform: none; }
307
365
  }
308
366
  }
@@ -314,9 +372,8 @@
314
372
  .dark,
315
373
  .is-dark-theme {
316
374
  color-scheme: dark;
317
- /* primary: the solid fill is lifted 4% so it keeps its look (and reads as text) on dark surfaces */
318
- --color-primary: hsl(var(--primary-hue) var(--primary-saturation) calc(var(--primary-light) + 4%));
319
- --color-primary-hover: hsl(var(--primary-hue) var(--primary-saturation) calc(var(--primary-light) + 1%));
375
+ /* primary: the same green fill as light mode, like cloud-ui; text on tints lifts to a light green */
376
+ --color-primary-strong: hsl(var(--primary-hue) 70% 58%);
320
377
  --color-primary-5: hsl(var(--primary-hue) var(--primary-saturation) 95%);
321
378
  --color-primary-10: hsl(var(--primary-hue) var(--primary-saturation) 90%);
322
379
  --color-primary-20: hsl(var(--primary-hue) var(--primary-saturation) 82%);
@@ -349,75 +406,75 @@
349
406
  --color-secondary-light-gray: hsl(var(--secondary-hue) 10% 12%);
350
407
  --color-secondary-dark-gray: hsl(var(--secondary-hue) 10% 90%);
351
408
  /* green */
352
- --color-green-5: hsl(141 53% 95%);
353
- --color-green-10: hsl(141 53% 90%);
354
- --color-green-20: hsl(141 53% 82%);
355
- --color-green-30: hsl(141 53% 72%);
356
- --color-green-40: hsl(141 53% 62%);
357
- --color-green-50: hsl(141 53% 52%);
358
- --color-green-60: hsl(141 53% 42%);
359
- --color-green-70: hsl(141 53% 32%);
360
- --color-green-80: hsl(141 53% 55% / 0.32);
361
- --color-green-90: hsl(141 53% 55% / 0.2);
362
- --color-green-93: hsl(141 53% 55% / 0.15);
363
- --color-green-95: hsl(141 53% 55% / 0.11);
364
- --color-green-97: hsl(141 53% 55% / 0.07);
409
+ --color-green-5: hsl(149 65% 95%);
410
+ --color-green-10: hsl(149 65% 90%);
411
+ --color-green-20: hsl(149 65% 82%);
412
+ --color-green-30: hsl(149 65% 72%);
413
+ --color-green-40: hsl(149 65% 62%);
414
+ --color-green-50: hsl(149 65% 52%);
415
+ --color-green-60: hsl(149 65% 42%);
416
+ --color-green-70: hsl(149 65% 32%);
417
+ --color-green-80: hsl(149 65% 55% / 0.32);
418
+ --color-green-90: hsl(149 65% 55% / 0.2);
419
+ --color-green-93: hsl(149 65% 55% / 0.15);
420
+ --color-green-95: hsl(149 65% 55% / 0.11);
421
+ --color-green-97: hsl(149 65% 55% / 0.07);
365
422
  /* blue */
366
- --color-blue-5: hsl(217 71% 95%);
367
- --color-blue-10: hsl(217 71% 90%);
368
- --color-blue-20: hsl(217 71% 82%);
369
- --color-blue-30: hsl(217 71% 72%);
370
- --color-blue-40: hsl(217 71% 62%);
371
- --color-blue-50: hsl(217 71% 52%);
372
- --color-blue-60: hsl(217 71% 42%);
373
- --color-blue-70: hsl(217 71% 32%);
374
- --color-blue-80: hsl(217 71% 55% / 0.32);
375
- --color-blue-90: hsl(217 71% 55% / 0.2);
376
- --color-blue-93: hsl(217 71% 55% / 0.15);
377
- --color-blue-95: hsl(217 71% 55% / 0.11);
378
- --color-blue-97: hsl(217 71% 55% / 0.07);
423
+ --color-blue-5: hsl(215 85% 95%);
424
+ --color-blue-10: hsl(215 85% 90%);
425
+ --color-blue-20: hsl(215 85% 82%);
426
+ --color-blue-30: hsl(215 85% 72%);
427
+ --color-blue-40: hsl(215 85% 62%);
428
+ --color-blue-50: hsl(215 85% 52%);
429
+ --color-blue-60: hsl(215 85% 42%);
430
+ --color-blue-70: hsl(215 85% 32%);
431
+ --color-blue-80: hsl(215 85% 55% / 0.32);
432
+ --color-blue-90: hsl(215 85% 55% / 0.2);
433
+ --color-blue-93: hsl(215 85% 55% / 0.15);
434
+ --color-blue-95: hsl(215 85% 55% / 0.11);
435
+ --color-blue-97: hsl(215 85% 55% / 0.07);
379
436
  /* purple */
380
- --color-purple-5: hsl(286 66% 95%);
381
- --color-purple-10: hsl(286 66% 90%);
382
- --color-purple-20: hsl(286 66% 82%);
383
- --color-purple-30: hsl(286 66% 72%);
384
- --color-purple-40: hsl(286 66% 62%);
385
- --color-purple-50: hsl(286 66% 52%);
386
- --color-purple-60: hsl(286 66% 42%);
387
- --color-purple-70: hsl(286 66% 32%);
388
- --color-purple-80: hsl(286 66% 55% / 0.32);
389
- --color-purple-90: hsl(286 66% 55% / 0.2);
390
- --color-purple-93: hsl(286 66% 55% / 0.15);
391
- --color-purple-95: hsl(286 66% 55% / 0.11);
392
- --color-purple-97: hsl(286 66% 55% / 0.07);
437
+ --color-purple-5: hsl(262 75% 95%);
438
+ --color-purple-10: hsl(262 75% 90%);
439
+ --color-purple-20: hsl(262 75% 82%);
440
+ --color-purple-30: hsl(262 75% 72%);
441
+ --color-purple-40: hsl(262 75% 62%);
442
+ --color-purple-50: hsl(262 75% 52%);
443
+ --color-purple-60: hsl(262 75% 42%);
444
+ --color-purple-70: hsl(262 75% 32%);
445
+ --color-purple-80: hsl(262 75% 55% / 0.32);
446
+ --color-purple-90: hsl(262 75% 55% / 0.2);
447
+ --color-purple-93: hsl(262 75% 55% / 0.15);
448
+ --color-purple-95: hsl(262 75% 55% / 0.11);
449
+ --color-purple-97: hsl(262 75% 55% / 0.07);
393
450
  /* yellow */
394
- --color-yellow-5: hsl(38 93% 95%);
395
- --color-yellow-10: hsl(38 93% 90%);
396
- --color-yellow-20: hsl(38 93% 82%);
397
- --color-yellow-30: hsl(38 93% 72%);
398
- --color-yellow-40: hsl(38 93% 62%);
399
- --color-yellow-50: hsl(38 93% 52%);
400
- --color-yellow-60: hsl(38 93% 42%);
401
- --color-yellow-70: hsl(38 93% 32%);
402
- --color-yellow-80: hsl(38 93% 55% / 0.32);
403
- --color-yellow-90: hsl(38 93% 55% / 0.2);
404
- --color-yellow-93: hsl(38 93% 55% / 0.15);
405
- --color-yellow-95: hsl(38 93% 55% / 0.11);
406
- --color-yellow-97: hsl(38 93% 55% / 0.07);
451
+ --color-yellow-5: hsl(38 92% 95%);
452
+ --color-yellow-10: hsl(38 92% 90%);
453
+ --color-yellow-20: hsl(38 92% 82%);
454
+ --color-yellow-30: hsl(38 92% 72%);
455
+ --color-yellow-40: hsl(38 92% 62%);
456
+ --color-yellow-50: hsl(38 92% 52%);
457
+ --color-yellow-60: hsl(38 92% 42%);
458
+ --color-yellow-70: hsl(38 92% 32%);
459
+ --color-yellow-80: hsl(38 92% 55% / 0.32);
460
+ --color-yellow-90: hsl(38 92% 55% / 0.2);
461
+ --color-yellow-93: hsl(38 92% 55% / 0.15);
462
+ --color-yellow-95: hsl(38 92% 55% / 0.11);
463
+ --color-yellow-97: hsl(38 92% 55% / 0.07);
407
464
  /* red */
408
- --color-red-5: hsl(348 100% 95%);
409
- --color-red-10: hsl(348 100% 90%);
410
- --color-red-20: hsl(348 100% 82%);
411
- --color-red-30: hsl(348 100% 72%);
412
- --color-red-40: hsl(348 100% 62%);
413
- --color-red-50: hsl(348 100% 52%);
414
- --color-red-60: hsl(348 100% 42%);
415
- --color-red-70: hsl(348 100% 32%);
416
- --color-red-80: hsl(348 100% 55% / 0.32);
417
- --color-red-90: hsl(348 100% 55% / 0.2);
418
- --color-red-93: hsl(348 100% 55% / 0.15);
419
- --color-red-95: hsl(348 100% 55% / 0.11);
420
- --color-red-97: hsl(348 100% 55% / 0.07);
465
+ --color-red-5: hsl(0 75% 95%);
466
+ --color-red-10: hsl(0 75% 90%);
467
+ --color-red-20: hsl(0 75% 82%);
468
+ --color-red-30: hsl(0 75% 72%);
469
+ --color-red-40: hsl(0 75% 62%);
470
+ --color-red-50: hsl(0 75% 52%);
471
+ --color-red-60: hsl(0 75% 42%);
472
+ --color-red-70: hsl(0 75% 32%);
473
+ --color-red-80: hsl(0 75% 55% / 0.32);
474
+ --color-red-90: hsl(0 75% 55% / 0.2);
475
+ --color-red-93: hsl(0 75% 55% / 0.15);
476
+ --color-red-95: hsl(0 75% 55% / 0.11);
477
+ --color-red-97: hsl(0 75% 55% / 0.07);
421
478
  /* gray */
422
479
  --color-gray-5: hsl(0 0% 95%);
423
480
  --color-gray-10: hsl(0 0% 90%);
@@ -433,47 +490,66 @@
433
490
  --color-gray-95: hsl(0 0% 55% / 0.11);
434
491
  --color-gray-97: hsl(0 0% 55% / 0.07);
435
492
  /* slate: inverted so text stays light and borders stay subtle */
436
- --color-slate-5: #f8fafc;
437
- --color-slate-10: #f1f5f9;
438
- --color-slate-20: #e2e8f0;
439
- --color-slate-30: #cbd5e1;
440
- --color-slate-40: #a3afc0;
441
- --color-slate-50: #8792a6;
442
- --color-slate-60: #64748b;
443
- --color-slate-70: #3a475c;
444
- --color-slate-80: #263245;
445
- --color-slate-90: #1a2335;
446
- --color-slate-95: #121a29;
447
- /* status fills keep their light-mode strength so white text on them stays readable */
448
- --color-success: hsl(141 53% 34%);
449
- --color-info: hsl(217 71% 55%);
450
- --color-warning: hsl(38 93% 50%);
451
- --color-danger: hsl(348 90% 55%);
452
- --color-success-hover: hsl(141 53% 31%);
453
- --color-info-hover: hsl(217 71% 60%);
454
- --color-warning-hover: hsl(38 93% 56%);
455
- --color-danger-hover: hsl(348 90% 60%);
493
+ --color-slate-5: #fafafa;
494
+ --color-slate-10: #f0f0f0;
495
+ --color-slate-20: #e5e5e5;
496
+ --color-slate-30: #d0d0d0;
497
+ --color-slate-40: #b5b5b5;
498
+ --color-slate-50: #a3a3a3;
499
+ --color-slate-60: #737373;
500
+ --color-slate-70: #3a3a3a;
501
+ --color-slate-80: #2e2f2f;
502
+ --color-slate-90: #262626;
503
+ --color-slate-95: #1f1f1f;
504
+ /* status: cloud-ui's dark values; fills keep white text */
505
+ --color-success: #22c55e;
506
+ --color-info: #3b82f6;
507
+ --color-warning: #f59e0b;
508
+ --color-danger: #f87171;
509
+ --color-pending: #8b5cf6;
510
+ --color-success-hover: rgb(34 197 94 / 0.9);
511
+ --color-info-hover: rgb(59 130 246 / 0.9);
512
+ --color-warning-hover: rgb(245 158 11 / 0.9);
513
+ --color-danger-hover: rgb(248 113 113 / 0.9);
514
+ --color-pending-hover: rgb(139 92 246 / 0.9);
515
+ --color-success-strong: #4ade80;
516
+ --color-info-strong: #93c5fd;
517
+ --color-warning-strong: #fbbf24;
518
+ --color-danger-strong: #fca5a5;
519
+ --color-pending-strong: #c4b5fd;
520
+ /* chart palette: blue lifts for the dark surface; the greys swap so "Other" stays the quieter one */
521
+ --color-chart-2: #3b82f6;
522
+ --color-chart-7: #a3a3a3;
523
+ --color-chart-8: #5c5c5c;
456
524
  /* semantic aliases are repeated so a `.dark` subtree re-resolves them */
457
- --color-heading: var(--color-slate-5);
458
- --color-body: var(--color-slate-30);
459
- --color-label: var(--color-slate-40);
460
- --color-muted: var(--color-slate-50);
461
- --color-link: var(--color-slate-20);
462
- --color-border-light: var(--color-slate-90);
463
- --color-border: var(--color-slate-80);
464
- --color-border-dark: var(--color-slate-70);
465
- --color-sidebar: hsl(var(--primary-hue) 10% 6%);
466
- --color-surface: #0c1220;
467
- --color-surface-muted: #111827;
468
- --color-surface-sunken: #080d18;
469
- --color-ring: hsl(var(--primary-hue) var(--primary-saturation) 55% / 0.35);
525
+ --color-heading: #fafafa;
526
+ --color-body: #fafafa;
527
+ --color-label: #fafafa;
528
+ --color-muted: #d0d0d0;
529
+ --color-link: #fafafa;
530
+ --color-border-light: #262626;
531
+ --color-border: #2e2f2f;
532
+ --color-border-dark: #3a3a3a;
533
+ --color-sidebar: #171717;
534
+ --color-background: #0a0a0a;
535
+ --color-surface: #171717;
536
+ --color-surface-muted: #1f1f1f;
537
+ --color-sidebar-panel: #171717;
538
+ --color-surface-sunken: #2c2c2c;
539
+ --color-accent: #2a3138;
540
+ --color-accent-hover: #323b44;
541
+ --color-accent-active: #3a4551;
542
+ --color-ring: hsl(var(--primary-hue) 71% 45%);
470
543
  --color-overlay: rgb(0 0 0 / 0.6);
544
+ --color-tooltip: #262626;
545
+ --color-on-tooltip: #f5f5f5;
471
546
  --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.3);
472
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.3), 0 1px 3px 0 rgb(0 0 0 / 0.25);
473
- --shadow-md: 0 2px 4px -1px rgb(0 0 0 / 0.3), 0 4px 10px -2px rgb(0 0 0 / 0.35);
474
- --shadow-lg: 0 4px 6px -2px rgb(0 0 0 / 0.3), 0 12px 24px -4px rgb(0 0 0 / 0.45);
475
- --shadow-xl: 0 0 0 1px rgb(255 255 255 / 0.06), 0 8px 16px -4px rgb(0 0 0 / 0.4), 0 24px 48px -12px rgb(0 0 0 / 0.6);
476
- --shadow-button: inset 0 1px 0 0 rgb(255 255 255 / 0.1), 0 1px 2px 0 rgb(0 0 0 / 0.4);
547
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.35), 0 1px 2px -1px rgb(0 0 0 / 0.35);
548
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.4);
549
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.5);
550
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.55), 0 8px 10px -6px rgb(0 0 0 / 0.55);
551
+ --shadow-card: 0 2px 4px rgb(0 0 0 / 0.3), 0 12px 24px -6px rgb(0 0 0 / 0.5);
552
+ --shadow-button: 0 1px 3px 0 rgb(0 0 0 / 0.35), 0 1px 2px -1px rgb(0 0 0 / 0.35);
477
553
  --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.25);
478
554
  }
479
555
 
@@ -484,44 +560,67 @@
484
560
  text-rendering: optimizeLegibility;
485
561
  }
486
562
  body {
487
- background-color: var(--color-surface);
563
+ background-color: var(--color-background);
488
564
  color: var(--color-body);
489
565
  font-family: var(--font-sans);
490
566
  font-size: var(--text-base);
567
+ font-weight: 450;
491
568
  line-height: var(--text-base--line-height);
569
+ letter-spacing: 0.005em;
570
+ font-optical-sizing: auto;
492
571
  }
493
- h1, h2, h3, h4, h5, h6 { color: var(--color-heading); font-weight: 600; text-wrap: balance; }
494
- h1 { font-size: var(--text-h1); line-height: calc(40px * var(--ac-scale)); letter-spacing: -0.03em; }
495
- h2 { font-size: var(--text-h2); line-height: calc(34px * var(--ac-scale)); letter-spacing: -0.025em; }
496
- h3 { font-size: var(--text-h3); line-height: calc(30px * var(--ac-scale)); letter-spacing: -0.02em; }
497
- h4 { font-size: var(--text-h4); line-height: calc(26px * var(--ac-scale)); letter-spacing: -0.015em; }
498
- h5 { font-size: var(--text-h5); line-height: calc(22px * var(--ac-scale)); letter-spacing: -0.01em; }
499
- h6 { font-size: var(--text-h6); line-height: calc(20px * var(--ac-scale)); font-weight: 500; }
572
+ h1, h2, h3, h4, h5, h6 {
573
+ color: var(--color-heading);
574
+ font-family: var(--font-heading);
575
+ font-weight: 600;
576
+ line-height: 1.25;
577
+ text-wrap: balance;
578
+ }
579
+ h1 { font-size: var(--text-h1); font-weight: 700; letter-spacing: -0.02em; }
580
+ h2 { font-size: var(--text-h2); font-weight: 700; letter-spacing: -0.02em; }
581
+ h3 { font-size: var(--text-h3); letter-spacing: -0.012em; }
582
+ h4 { font-size: var(--text-h4); letter-spacing: -0.012em; }
583
+ h5 { font-size: var(--text-h5); letter-spacing: -0.008em; }
584
+ h6 { font-size: var(--text-h6); letter-spacing: -0.008em; }
585
+ /* cloud-ui's base rules: roomy paragraphs, medium labels, table headers and controls; components still set their own sizes */
586
+ p { text-wrap: pretty; line-height: 1.625; letter-spacing: 0.002em; }
587
+ label, th { font-weight: 500; letter-spacing: 0.002em; }
588
+ button, input, select, textarea { font-family: inherit; font-weight: 500; letter-spacing: inherit; }
500
589
  code, kbd, pre, samp { font-family: var(--font-mono); font-feature-settings: normal; }
501
590
  ::selection { background-color: var(--color-primary-90); color: var(--color-primary-10); }
502
- :focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
591
+ :focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; }
503
592
  }
504
593
 
505
594
  @utility text-code {
506
595
  font-family: var(--font-mono);
507
596
  font-size: calc(13px * var(--ac-scale));
508
- letter-spacing: -0.01em;
597
+ letter-spacing: 0;
509
598
  color: var(--color-heading);
510
599
  }
511
600
 
512
- /* The standard focus treatment for form controls: solid primary border + soft halo. */
601
+ /* The standard focus treatment for form controls: a solid primary border plus a 2px primary/20 halo. */
513
602
  @utility focus-ring {
514
603
  outline: none;
515
- border-color: var(--color-primary);
516
- box-shadow: 0 0 0 3px var(--color-ring);
604
+ /* cloud-ui's field focus: a 35% primary border inside a 2px 20% halo */
605
+ border-color: color-mix(in srgb, var(--color-primary) 35%, transparent);
606
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-primary) 20%, transparent);
607
+ }
608
+
609
+ /* Thin scrollbar: a 4px grey thumb, like cloud-ui's custom-scrollbar. */
610
+ /* cloud-ui's `custom-container`: the page column, 1200px wide and centred, with 16px sides at every width. Pages add `py-8`. */
611
+ @utility page-container {
612
+ width: 100%;
613
+ max-width: var(--container-page);
614
+ margin-inline: auto;
615
+ padding-inline: calc(var(--spacing) * 4);
517
616
  }
518
617
 
519
618
  @utility ac-scrollbar {
520
619
  overflow: auto;
521
620
  scrollbar-width: thin;
522
- scrollbar-color: var(--color-slate-70) transparent;
523
- &::-webkit-scrollbar { width: 6px; height: 6px; }
524
- &::-webkit-scrollbar-thumb { background-color: var(--color-slate-70); border-radius: 50px; }
621
+ scrollbar-color: rgb(176 176 176 / 0.55) transparent;
622
+ &::-webkit-scrollbar { width: 4px; height: 4px; }
623
+ &::-webkit-scrollbar-thumb { background-color: #b0b0b0; border-radius: 9999px; }
525
624
  &::-webkit-scrollbar-track { background: transparent; }
526
625
  }
527
626
 
@@ -554,3 +653,8 @@
554
653
  @media (prefers-reduced-motion: reduce) {
555
654
  .ac-progress-indeterminate { animation: none; }
556
655
  }
656
+
657
+ /* Charts (the /charts entry). ECharts draws on a canvas and gets its colours from the tokens in JS; this only keeps figures aligned. */
658
+ [data-ac-chart] {
659
+ font-variant-numeric: tabular-nums;
660
+ }