@ac-design/design-system 1.0.3 → 2.0.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 (186) 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 +69 -0
  4. package/dist/lib/charts/ChartFrame.vue_vue_type_script_setup_true_lang.js +168 -0
  5. package/dist/lib/charts/index.d.ts +7 -0
  6. package/dist/lib/charts/index.js +5 -0
  7. package/dist/lib/charts/shared.d.ts +60 -0
  8. package/dist/lib/charts/shared.js +114 -0
  9. package/dist/lib/charts/xy.d.ts +65 -0
  10. package/dist/lib/charts/xy.js +92 -0
  11. package/dist/lib/compat.css +1707 -1042
  12. package/dist/lib/components/AcAccordion.vue_vue_type_script_setup_true_lang.js +2 -2
  13. package/dist/lib/components/AcAccordionItem.vue.d.ts +1 -1
  14. package/dist/lib/components/AcAccordionItem.vue_vue_type_script_setup_true_lang.js +5 -5
  15. package/dist/lib/components/AcAlert.vue.d.ts +1 -1
  16. package/dist/lib/components/AcAlert.vue_vue_type_script_setup_true_lang.js +19 -25
  17. package/dist/lib/components/AcAppSwitcher.vue_vue_type_script_setup_true_lang.js +19 -19
  18. package/dist/lib/components/AcAreaChart.js +5 -0
  19. package/dist/lib/components/AcAreaChart.vue.d.ts +44 -0
  20. package/dist/lib/components/AcAreaChart.vue_vue_type_script_setup_true_lang.js +215 -0
  21. package/dist/lib/components/AcAvatar.vue_vue_type_script_setup_true_lang.js +8 -8
  22. package/dist/lib/components/AcBadge.vue.d.ts +16 -7
  23. package/dist/lib/components/AcBadge.vue_vue_type_script_setup_true_lang.js +59 -43
  24. package/dist/lib/components/AcBanner.vue.d.ts +1 -1
  25. package/dist/lib/components/AcBanner.vue_vue_type_script_setup_true_lang.js +30 -30
  26. package/dist/lib/components/AcBarChart.js +5 -0
  27. package/dist/lib/components/AcBarChart.vue.d.ts +43 -0
  28. package/dist/lib/components/AcBarChart.vue_vue_type_script_setup_true_lang.js +217 -0
  29. package/dist/lib/components/AcBreadcrumb.vue_vue_type_script_setup_true_lang.js +27 -26
  30. package/dist/lib/components/AcBulkActionBar.js +5 -0
  31. package/dist/lib/components/AcBulkActionBar.vue.d.ts +43 -0
  32. package/dist/lib/components/AcBulkActionBar.vue_vue_type_script_setup_true_lang.js +84 -0
  33. package/dist/lib/components/AcButton.vue.d.ts +3 -3
  34. package/dist/lib/components/AcButton.vue_vue_type_script_setup_true_lang.js +42 -34
  35. package/dist/lib/components/AcButtons.vue_vue_type_script_setup_true_lang.js +1 -1
  36. package/dist/lib/components/AcCard.vue.d.ts +10 -2
  37. package/dist/lib/components/AcCard.vue_vue_type_script_setup_true_lang.js +37 -11
  38. package/dist/lib/components/AcCellValue.vue.d.ts +4 -1
  39. package/dist/lib/components/AcCellValue.vue_vue_type_script_setup_true_lang.js +214 -179
  40. package/dist/lib/components/AcCheckBox.vue.d.ts +17 -3
  41. package/dist/lib/components/AcCheckBox.vue_vue_type_script_setup_true_lang.js +126 -29
  42. package/dist/lib/components/AcCheckRadio.vue.d.ts +1 -1
  43. package/dist/lib/components/AcCheckRadio.vue_vue_type_script_setup_true_lang.js +33 -21
  44. package/dist/lib/components/AcCircularProgress.js +5 -0
  45. package/dist/lib/components/AcCircularProgress.vue.d.ts +44 -0
  46. package/dist/lib/components/AcCircularProgress.vue_vue_type_script_setup_true_lang.js +111 -0
  47. package/dist/lib/components/AcClusterSwitcher.vue_vue_type_script_setup_true_lang.js +142 -167
  48. package/dist/lib/components/AcCodeEditor.vue_vue_type_script_setup_true_lang.js +9 -9
  49. package/dist/lib/components/AcColorInput.js +5 -0
  50. package/dist/lib/components/AcColorInput.vue.d.ts +54 -0
  51. package/dist/lib/components/AcColorInput.vue_vue_type_script_setup_true_lang.js +187 -0
  52. package/dist/lib/components/AcConfirmModal.js +5 -0
  53. package/dist/lib/components/AcConfirmModal.vue.d.ts +56 -0
  54. package/dist/lib/components/AcConfirmModal.vue_vue_type_script_setup_true_lang.js +92 -0
  55. package/dist/lib/components/AcContentHeader.vue.d.ts +1 -1
  56. package/dist/lib/components/AcContentHeader.vue_vue_type_script_setup_true_lang.js +5 -4
  57. package/dist/lib/components/AcContentLayout.vue_vue_type_script_setup_true_lang.js +2 -2
  58. package/dist/lib/components/AcCopyButton.js +5 -0
  59. package/dist/lib/components/AcCopyButton.vue.d.ts +43 -0
  60. package/dist/lib/components/AcCopyButton.vue_vue_type_script_setup_true_lang.js +92 -0
  61. package/dist/lib/components/AcDatePicker.vue.d.ts +5 -5
  62. package/dist/lib/components/AcDatePicker.vue_vue_type_script_setup_true_lang.js +204 -213
  63. package/dist/lib/components/AcDeleteModal.vue.d.ts +4 -4
  64. package/dist/lib/components/AcDeleteModal.vue_vue_type_script_setup_true_lang.js +37 -46
  65. package/dist/lib/components/AcDonutChart.js +5 -0
  66. package/dist/lib/components/AcDonutChart.vue.d.ts +73 -0
  67. package/dist/lib/components/AcDonutChart.vue_vue_type_script_setup_true_lang.js +210 -0
  68. package/dist/lib/components/AcDropdown.vue.d.ts +1 -1
  69. package/dist/lib/components/AcDropdown.vue_vue_type_script_setup_true_lang.js +9 -9
  70. package/dist/lib/components/AcDropdownDivider.vue_vue_type_script_setup_true_lang.js +2 -2
  71. package/dist/lib/components/AcDropdownItem.vue.d.ts +1 -1
  72. package/dist/lib/components/AcDropdownItem.vue_vue_type_script_setup_true_lang.js +3 -3
  73. package/dist/lib/components/AcEmptyState.vue.d.ts +4 -1
  74. package/dist/lib/components/AcEmptyState.vue_vue_type_script_setup_true_lang.js +50 -39
  75. package/dist/lib/components/AcFeatureCard.vue_vue_type_script_setup_true_lang.js +14 -13
  76. package/dist/lib/components/AcFileEditor.vue_vue_type_script_setup_true_lang.js +16 -16
  77. package/dist/lib/components/AcFileUpload.vue.d.ts +2 -2
  78. package/dist/lib/components/AcFileUpload.vue_vue_type_script_setup_true_lang.js +55 -53
  79. package/dist/lib/components/AcFontScale.vue_vue_type_script_setup_true_lang.js +2 -2
  80. package/dist/lib/components/AcFooter.js +5 -0
  81. package/dist/lib/components/AcFooter.vue.d.ts +37 -0
  82. package/dist/lib/components/AcFooter.vue_vue_type_script_setup_true_lang.js +107 -0
  83. package/dist/lib/components/AcForm.vue.d.ts +3 -0
  84. package/dist/lib/components/AcForm.vue_vue_type_script_setup_true_lang.js +4 -2
  85. package/dist/lib/components/AcFormArray.vue.d.ts +2 -2
  86. package/dist/lib/components/AcFormArray.vue_vue_type_script_setup_true_lang.js +149 -147
  87. package/dist/lib/components/AcFormFooter.vue.d.ts +2 -2
  88. package/dist/lib/components/AcFormFooter.vue_vue_type_script_setup_true_lang.js +2 -2
  89. package/dist/lib/components/AcFormSection.vue.d.ts +7 -0
  90. package/dist/lib/components/AcFormSection.vue_vue_type_script_setup_true_lang.js +31 -21
  91. package/dist/lib/components/AcHeader.vue.d.ts +3 -3
  92. package/dist/lib/components/AcHeader.vue_vue_type_script_setup_true_lang.js +22 -22
  93. package/dist/lib/components/AcInfoTable.vue_vue_type_script_setup_true_lang.js +17 -13
  94. package/dist/lib/components/AcInput.vue.d.ts +3 -3
  95. package/dist/lib/components/AcInput.vue_vue_type_script_setup_true_lang.js +98 -87
  96. package/dist/lib/components/AcKbd.vue_vue_type_script_setup_true_lang.js +1 -1
  97. package/dist/lib/components/AcKeyValueInput.js +5 -0
  98. package/dist/lib/components/AcKeyValueInput.vue.d.ts +114 -0
  99. package/dist/lib/components/AcKeyValueInput.vue_vue_type_script_setup_true_lang.js +320 -0
  100. package/dist/lib/components/AcLineChart.js +5 -0
  101. package/dist/lib/components/AcLineChart.vue.d.ts +38 -0
  102. package/dist/lib/components/AcLineChart.vue_vue_type_script_setup_true_lang.js +187 -0
  103. package/dist/lib/components/AcLocaleSwitcher.js +5 -0
  104. package/dist/lib/components/AcLocaleSwitcher.vue.d.ts +46 -0
  105. package/dist/lib/components/AcLocaleSwitcher.vue_vue_type_script_setup_true_lang.js +103 -0
  106. package/dist/lib/components/AcModal.vue_vue_type_script_setup_true_lang.js +23 -23
  107. package/dist/lib/components/AcNavbar.vue_vue_type_script_setup_true_lang.js +6 -6
  108. package/dist/lib/components/AcNavbarItem.vue.d.ts +1 -1
  109. package/dist/lib/components/AcNavbarItem.vue_vue_type_script_setup_true_lang.js +22 -22
  110. package/dist/lib/components/AcNotificationMenu.vue_vue_type_script_setup_true_lang.js +26 -26
  111. package/dist/lib/components/AcNumberInput.js +5 -0
  112. package/dist/lib/components/AcNumberInput.vue.d.ts +79 -0
  113. package/dist/lib/components/AcNumberInput.vue_vue_type_script_setup_true_lang.js +251 -0
  114. package/dist/lib/components/AcPage.vue.d.ts +2 -2
  115. package/dist/lib/components/AcPage.vue_vue_type_script_setup_true_lang.js +2 -2
  116. package/dist/lib/components/AcPagination.vue.d.ts +20 -3
  117. package/dist/lib/components/AcPagination.vue_vue_type_script_setup_true_lang.js +81 -53
  118. package/dist/lib/components/AcPreloader.vue.d.ts +1 -1
  119. package/dist/lib/components/AcPreloader.vue_vue_type_script_setup_true_lang.js +3 -3
  120. package/dist/lib/components/AcProgress.vue.d.ts +2 -2
  121. package/dist/lib/components/AcProgress.vue_vue_type_script_setup_true_lang.js +4 -4
  122. package/dist/lib/components/AcResourceCard.vue.d.ts +2 -2
  123. package/dist/lib/components/AcResourceCard.vue_vue_type_script_setup_true_lang.js +13 -13
  124. package/dist/lib/components/AcSearchBar.vue.d.ts +1 -1
  125. package/dist/lib/components/AcSearchBar.vue_vue_type_script_setup_true_lang.js +9 -8
  126. package/dist/lib/components/AcSectionContent.vue.d.ts +2 -2
  127. package/dist/lib/components/AcSectionContent.vue_vue_type_script_setup_true_lang.js +8 -8
  128. package/dist/lib/components/AcSegmentedControl.vue.d.ts +1 -1
  129. package/dist/lib/components/AcSegmentedControl.vue_vue_type_script_setup_true_lang.js +4 -4
  130. package/dist/lib/components/AcSelect.vue.d.ts +4 -4
  131. package/dist/lib/components/AcSelect.vue_vue_type_script_setup_true_lang.js +230 -227
  132. package/dist/lib/components/AcSidePanel.vue_vue_type_script_setup_true_lang.js +31 -31
  133. package/dist/lib/components/AcSideTabs.vue.d.ts +1 -1
  134. package/dist/lib/components/AcSideTabs.vue_vue_type_script_setup_true_lang.js +37 -37
  135. package/dist/lib/components/AcSidebar.vue.d.ts +3 -3
  136. package/dist/lib/components/AcSidebar.vue_vue_type_script_setup_true_lang.js +75 -75
  137. package/dist/lib/components/AcSidebarItem.vue_vue_type_script_setup_true_lang.js +33 -32
  138. package/dist/lib/components/AcSidebarSection.vue_vue_type_script_setup_true_lang.js +6 -6
  139. package/dist/lib/components/AcSkeleton.vue_vue_type_script_setup_true_lang.js +8 -8
  140. package/dist/lib/components/AcSlider.vue.d.ts +1 -1
  141. package/dist/lib/components/AcSlider.vue_vue_type_script_setup_true_lang.js +174 -172
  142. package/dist/lib/components/AcStatCard.vue.d.ts +3 -3
  143. package/dist/lib/components/AcStatCard.vue_vue_type_script_setup_true_lang.js +90 -85
  144. package/dist/lib/components/AcStatusBar.vue.d.ts +1 -1
  145. package/dist/lib/components/AcStatusBar.vue_vue_type_script_setup_true_lang.js +6 -6
  146. package/dist/lib/components/AcSteps.vue_vue_type_script_setup_true_lang.js +28 -28
  147. package/dist/lib/components/AcSwitch.vue_vue_type_script_setup_true_lang.js +39 -34
  148. package/dist/lib/components/AcSwitchCard.js +5 -0
  149. package/dist/lib/components/AcSwitchCard.vue.d.ts +59 -0
  150. package/dist/lib/components/AcSwitchCard.vue_vue_type_script_setup_true_lang.js +119 -0
  151. package/dist/lib/components/AcTable.vue_vue_type_script_setup_true_lang.js +87 -87
  152. package/dist/lib/components/AcTabs.vue_vue_type_script_setup_true_lang.js +4 -4
  153. package/dist/lib/components/AcTag.vue.d.ts +1 -1
  154. package/dist/lib/components/AcTag.vue_vue_type_script_setup_true_lang.js +22 -22
  155. package/dist/lib/components/AcTagInput.js +5 -0
  156. package/dist/lib/components/AcTagInput.vue.d.ts +74 -0
  157. package/dist/lib/components/AcTagInput.vue_vue_type_script_setup_true_lang.js +291 -0
  158. package/dist/lib/components/AcTextarea.vue.d.ts +3 -3
  159. package/dist/lib/components/AcTextarea.vue_vue_type_script_setup_true_lang.js +89 -64
  160. package/dist/lib/components/AcThemeMode.vue_vue_type_script_setup_true_lang.js +3 -3
  161. package/dist/lib/components/AcTimePicker.js +5 -0
  162. package/dist/lib/components/AcTimePicker.vue.d.ts +65 -0
  163. package/dist/lib/components/AcTimePicker.vue_vue_type_script_setup_true_lang.js +463 -0
  164. package/dist/lib/components/AcToaster.vue_vue_type_script_setup_true_lang.js +65 -71
  165. package/dist/lib/components/AcTooltip.vue.d.ts +1 -1
  166. package/dist/lib/components/AcTooltip.vue_vue_type_script_setup_true_lang.js +77 -67
  167. package/dist/lib/components/AcUsageCard.vue_vue_type_script_setup_true_lang.js +27 -27
  168. package/dist/lib/components/AcUserMenu.vue_vue_type_script_setup_true_lang.js +111 -103
  169. package/dist/lib/components/index.d.ts +14 -2
  170. package/dist/lib/components/status.d.ts +26 -0
  171. package/dist/lib/components/status.js +110 -0
  172. package/dist/lib/composables/copyText.d.ts +2 -1
  173. package/dist/lib/composables/copyText.js +2 -2
  174. package/dist/lib/composables/useApiPagination.d.ts +55 -0
  175. package/dist/lib/composables/useApiPagination.js +58 -0
  176. package/dist/lib/composables/useBulkSelection.d.ts +44 -0
  177. package/dist/lib/composables/useBulkSelection.js +41 -0
  178. package/dist/lib/composables/useFormValidation.d.ts +65 -0
  179. package/dist/lib/composables/useFormValidation.js +148 -0
  180. package/dist/lib/composables/useTablePagination.d.ts +49 -0
  181. package/dist/lib/composables/useTablePagination.js +41 -0
  182. package/dist/lib/editor/theme.js +65 -62
  183. package/dist/lib/index.d.ts +14 -0
  184. package/dist/lib/index.js +95 -78
  185. package/dist/lib/theme.css +391 -272
  186. package/package.json +11 -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%;
@@ -40,7 +40,9 @@
40
40
 
41
41
  /* ac-primary: AppsCode green */
42
42
  --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%));
43
+ --color-primary-hover: hsl(var(--primary-hue) var(--primary-saturation) var(--primary-light) / 0.9);
44
+ /* Primary text on tints and white: links, ghost and outline buttons, active tabs (cloud-ui success-strong) */
45
+ --color-primary-strong: hsl(var(--primary-hue) 94% 25%);
44
46
  --color-primary-5: hsl(var(--primary-hue) var(--primary-saturation) 5%);
45
47
  --color-primary-10: hsl(var(--primary-hue) var(--primary-saturation) 10%);
46
48
  --color-primary-20: hsl(var(--primary-hue) var(--primary-saturation) 20%);
@@ -76,79 +78,79 @@
76
78
  --color-secondary-dark-gray: hsl(var(--secondary-hue) 10% 10%);
77
79
 
78
80
  /* 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%);
81
+ --color-green-5: hsl(149 65% 5%);
82
+ --color-green-10: hsl(149 65% 10%);
83
+ --color-green-20: hsl(149 65% 20%);
84
+ --color-green-30: hsl(149 65% 30%);
85
+ --color-green-40: hsl(149 65% 40%);
86
+ --color-green-50: hsl(149 65% 50%);
87
+ --color-green-60: hsl(149 65% 60%);
88
+ --color-green-70: hsl(149 65% 70%);
89
+ --color-green-80: hsl(149 65% 80%);
90
+ --color-green-90: hsl(149 65% 90%);
91
+ --color-green-93: hsl(149 65% 93%);
92
+ --color-green-95: hsl(149 65% 95%);
93
+ --color-green-97: hsl(149 65% 97%);
92
94
 
93
95
  /* 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%);
96
+ --color-blue-5: hsl(215 85% 5%);
97
+ --color-blue-10: hsl(215 85% 10%);
98
+ --color-blue-20: hsl(215 85% 20%);
99
+ --color-blue-30: hsl(215 85% 30%);
100
+ --color-blue-40: hsl(215 85% 40%);
101
+ --color-blue-50: hsl(215 85% 50%);
102
+ --color-blue-60: hsl(215 85% 60%);
103
+ --color-blue-70: hsl(215 85% 70%);
104
+ --color-blue-80: hsl(215 85% 80%);
105
+ --color-blue-90: hsl(215 85% 90%);
106
+ --color-blue-93: hsl(215 85% 93%);
107
+ --color-blue-95: hsl(215 85% 95%);
108
+ --color-blue-97: hsl(215 85% 97%);
107
109
 
108
110
  /* 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%);
111
+ --color-purple-5: hsl(262 75% 5%);
112
+ --color-purple-10: hsl(262 75% 10%);
113
+ --color-purple-20: hsl(262 75% 20%);
114
+ --color-purple-30: hsl(262 75% 30%);
115
+ --color-purple-40: hsl(262 75% 40%);
116
+ --color-purple-50: hsl(262 75% 50%);
117
+ --color-purple-60: hsl(262 75% 60%);
118
+ --color-purple-70: hsl(262 75% 70%);
119
+ --color-purple-80: hsl(262 75% 80%);
120
+ --color-purple-90: hsl(262 75% 90%);
121
+ --color-purple-93: hsl(262 75% 93%);
122
+ --color-purple-95: hsl(262 75% 95%);
123
+ --color-purple-97: hsl(262 75% 97%);
122
124
 
123
125
  /* 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%);
126
+ --color-yellow-5: hsl(38 92% 5%);
127
+ --color-yellow-10: hsl(38 92% 10%);
128
+ --color-yellow-20: hsl(38 92% 20%);
129
+ --color-yellow-30: hsl(38 92% 30%);
130
+ --color-yellow-40: hsl(38 92% 40%);
131
+ --color-yellow-50: hsl(38 92% 50%);
132
+ --color-yellow-60: hsl(38 92% 60%);
133
+ --color-yellow-70: hsl(38 92% 70%);
134
+ --color-yellow-80: hsl(38 92% 80%);
135
+ --color-yellow-90: hsl(38 92% 90%);
136
+ --color-yellow-93: hsl(38 92% 93%);
137
+ --color-yellow-95: hsl(38 92% 95%);
138
+ --color-yellow-97: hsl(38 92% 97%);
137
139
 
138
140
  /* 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%);
141
+ --color-red-5: hsl(0 75% 5%);
142
+ --color-red-10: hsl(0 75% 10%);
143
+ --color-red-20: hsl(0 75% 20%);
144
+ --color-red-30: hsl(0 75% 30%);
145
+ --color-red-40: hsl(0 75% 40%);
146
+ --color-red-50: hsl(0 75% 50%);
147
+ --color-red-60: hsl(0 75% 60%);
148
+ --color-red-70: hsl(0 75% 70%);
149
+ --color-red-80: hsl(0 75% 80%);
150
+ --color-red-90: hsl(0 75% 90%);
151
+ --color-red-93: hsl(0 75% 93%);
152
+ --color-red-95: hsl(0 75% 95%);
153
+ --color-red-97: hsl(0 75% 97%);
152
154
 
153
155
  /* gray */
154
156
  --color-gray-5: hsl(0 0% 5%);
@@ -165,87 +167,115 @@
165
167
  --color-gray-95: hsl(0 0% 95%);
166
168
  --color-gray-97: hsl(0 0% 97%);
167
169
 
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%);
170
+ /* status: cloud-ui's success, info, warning, destructive and pending */
171
+ --color-success: #00a651;
172
+ --color-info: #0069ff;
173
+ --color-warning: #f59e0b;
174
+ --color-danger: #ef4444;
175
+ --color-pending: #8b5cf6;
176
+ /* Hover fills lighten to 90%, like cloud-ui's bg-x/90. */
177
+ --color-success-hover: rgb(0 166 81 / 0.9);
178
+ --color-info-hover: rgb(0 105 255 / 0.9);
179
+ --color-warning-hover: rgb(245 158 11 / 0.9);
180
+ --color-danger-hover: rgb(239 68 68 / 0.9);
181
+ --color-pending-hover: rgb(139 92 246 / 0.9);
182
+ --color-on-warning: #1c1300;
183
+ /* Status text on tints and plain surfaces: the AA-contrast variants (5:1 or more) */
184
+ --color-success-strong: #047a3c;
185
+ --color-info-strong: #0050c4;
186
+ --color-warning-strong: #a15c07;
187
+ --color-danger-strong: #c81e1e;
188
+ --color-pending-strong: #6d28d9;
180
189
 
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;
190
+ /* slate: the neutral text and border ramp (cloud-ui greys; the name is kept for compatibility) */
191
+ --color-slate-5: #0a0a0a;
192
+ --color-slate-10: #171717;
193
+ --color-slate-20: #252525;
194
+ --color-slate-30: #3d3d3d;
195
+ --color-slate-40: #4a4a4a;
196
+ --color-slate-50: #5c5c5c;
197
+ --color-slate-60: #8f8f8f;
198
+ --color-slate-70: #d6d6d6;
199
+ --color-slate-80: #ebebeb;
200
+ --color-slate-90: #f0f0f0;
201
+ --color-slate-95: #f7f7f7;
193
202
 
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%);
203
+ /* semantic text and borders */
204
+ --color-heading: #252525;
205
+ --color-body: #252525;
206
+ --color-label: #252525;
207
+ --color-muted: #5c5c5c;
208
+ --color-link: #252525;
209
+ --color-border-light: #f0f0f0;
210
+ --color-border: #ebebeb;
211
+ --color-border-dark: #d6d6d6;
212
+ /* The dark sidebar and status bar variants */
213
+ --color-sidebar: #171717;
204
214
 
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);
215
+ /* surfaces: white cards on a #f9fafb page; fields sit on the page tone */
216
+ --color-background: #f9fafb;
217
+ --color-surface: #ffffff;
218
+ --color-surface-muted: #f8f8f8;
219
+ --color-surface-sunken: #f0f0f0;
220
+ /* Neutral interaction tints: row hover, selected list item, soft chips */
221
+ --color-accent: #eaf0f4;
222
+ --color-accent-hover: #f2f9fd;
223
+ --color-accent-active: #dae9f5;
224
+ /* Focus: a solid primary ring, 2px, offset 2px on buttons */
225
+ --color-ring: hsl(var(--primary-hue) var(--primary-saturation) var(--primary-light));
211
226
  /* modal and drawer backdrop */
212
- --color-overlay: rgb(2 6 23 / 0.4);
227
+ --color-overlay: rgb(0 0 0 / 0.6);
228
+ /* Tooltips: a near-black bubble in both themes */
229
+ --color-tooltip: #171717;
230
+ --color-on-tooltip: #f5f5f5;
213
231
 
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;
232
+ /* Chart palette (the /charts entry), in a fixed order: brand green, blue, amber, violet, red, cyan, then two
233
+ neutral greys for "Other" and remaining capacity. Adjacent hues stay apart under colour-blindness simulation. */
234
+ --color-chart-1: hsl(var(--primary-hue) var(--primary-saturation) var(--primary-light));
235
+ --color-chart-2: #0069ff;
236
+ --color-chart-3: #d97706;
237
+ --color-chart-4: #8b5cf6;
238
+ --color-chart-5: #ef4444;
239
+ --color-chart-6: #0891b2;
240
+ --color-chart-7: #737373;
241
+ --color-chart-8: #b5b5b5;
242
+
243
+ /* type — Roboto for the interface, Google Sans Flex for headings, JetBrains Mono for code */
244
+ --font-sans: "Roboto Variable", "Roboto", ui-sans-serif, system-ui, sans-serif;
245
+ --font-heading: "Google Sans Flex Variable", "Google Sans Flex", "Roboto Variable", "Roboto", ui-sans-serif, system-ui, sans-serif;
246
+ --font-mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
217
247
  --text-xm: calc(10px * var(--ac-scale));
218
248
  --text-xm--line-height: calc(14px * var(--ac-scale));
219
249
  --text-sm: calc(11px * var(--ac-scale));
220
250
  --text-sm--line-height: calc(16px * var(--ac-scale));
221
251
  --text-xs: calc(12px * var(--ac-scale));
222
252
  --text-xs--line-height: calc(16px * var(--ac-scale));
223
- --text-base: calc(13px * var(--ac-scale));
253
+ --text-base: calc(14px * var(--ac-scale));
224
254
  --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));
255
+ --text-lg: calc(16px * var(--ac-scale));
256
+ --text-lg--line-height: calc(24px * var(--ac-scale));
257
+ --text-xl: calc(18px * var(--ac-scale));
258
+ --text-xl--line-height: calc(28px * var(--ac-scale));
259
+ --text-2xl: calc(20px * var(--ac-scale));
230
260
  --text-2xl--line-height: calc(28px * var(--ac-scale));
231
261
  --text-3xl: calc(24px * var(--ac-scale));
232
262
  --text-3xl--line-height: calc(32px * var(--ac-scale));
233
263
  --text-3xl--letter-spacing: -0.02em;
234
264
  --text-4xl: calc(30px * var(--ac-scale));
235
- --text-4xl--line-height: calc(38px * var(--ac-scale));
236
- --text-4xl--letter-spacing: -0.025em;
265
+ --text-4xl--line-height: calc(36px * var(--ac-scale));
266
+ --text-4xl--letter-spacing: -0.02em;
237
267
  --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));
268
+ --text-5xl--line-height: calc(40px * var(--ac-scale));
269
+ --text-5xl--letter-spacing: -0.025em;
270
+ --text-6xl: calc(48px * var(--ac-scale));
271
+ --text-6xl--line-height: calc(52px * var(--ac-scale));
242
272
  --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));
273
+ --text-h1: calc(30px * var(--ac-scale));
274
+ --text-h2: calc(24px * var(--ac-scale));
275
+ --text-h3: calc(20px * var(--ac-scale));
246
276
  --text-h4: calc(18px * var(--ac-scale));
247
- --text-h5: calc(15px * var(--ac-scale));
248
- --text-h6: calc(13px * var(--ac-scale));
277
+ --text-h5: calc(16px * var(--ac-scale));
278
+ --text-h6: calc(14px * var(--ac-scale));
249
279
 
250
280
  /* spacing: 1 unit = 4px, so p-4 = 16px like the source .p-16 */
251
281
  --spacing: calc(4px * var(--ac-scale));
@@ -265,32 +295,37 @@
265
295
  --container-5xl: 1024px;
266
296
  --container-6xl: 1152px;
267
297
  --container-7xl: 1280px;
298
+ /* cloud-ui's page width (custom-container) */
299
+ --container-page: 1200px;
268
300
 
269
- /* radius: 6px on controls, 10px on surfaces; the source steps are kept for old classes */
301
+ /* radius: 10px on controls, 14px on cards, 16px on dialogs, 8px on menu items; older steps are kept for apps */
270
302
  --radius-2: calc(2px * var(--ac-scale));
271
303
  --radius-4: calc(4px * var(--ac-scale));
272
304
  --radius-6: calc(6px * var(--ac-scale));
273
305
  --radius-8: calc(8px * var(--ac-scale));
274
306
  --radius-10: calc(10px * var(--ac-scale));
275
307
  --radius-12: calc(12px * var(--ac-scale));
308
+ --radius-14: calc(14px * var(--ac-scale));
276
309
  --radius-16: calc(16px * var(--ac-scale));
277
310
  --radius-50: calc(50px * var(--ac-scale));
278
311
 
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);
312
+ /* elevation: cloud-ui's neutral scale. Cards rest on a border, not a shadow. */
313
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
314
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
315
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
316
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
317
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
318
+ /* Raised card on hover */
319
+ --shadow-card: 0 2px 4px rgb(15 23 42 / 0.04), 0 12px 24px -6px rgb(15 23 42 / 0.1);
320
+ /* Solid buttons */
321
+ --shadow-button: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
322
+ --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.04);
288
323
 
289
324
  --ease-out-soft: cubic-bezier(0.22, 1, 0.36, 1);
290
325
 
291
326
  --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;
327
+ --animate-fade-in: fade-in 0.15s var(--ease-out-soft) both;
328
+ --animate-pop-in: pop-in 0.15s var(--ease-out-soft) both;
294
329
  @keyframes shake {
295
330
  10%, 90% { transform: translate3d(-1px, 0, 0); }
296
331
  20%, 80% { transform: translate3d(2px, 0, 0); }
@@ -302,7 +337,7 @@
302
337
  to { opacity: 1; }
303
338
  }
304
339
  @keyframes pop-in {
305
- from { opacity: 0; transform: translateY(4px) scale(0.98); }
340
+ from { opacity: 0; transform: scale(0.95); }
306
341
  to { opacity: 1; transform: none; }
307
342
  }
308
343
  }
@@ -314,9 +349,8 @@
314
349
  .dark,
315
350
  .is-dark-theme {
316
351
  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%));
352
+ /* primary: the same green fill as light mode, like cloud-ui; text on tints lifts to a light green */
353
+ --color-primary-strong: hsl(var(--primary-hue) 70% 58%);
320
354
  --color-primary-5: hsl(var(--primary-hue) var(--primary-saturation) 95%);
321
355
  --color-primary-10: hsl(var(--primary-hue) var(--primary-saturation) 90%);
322
356
  --color-primary-20: hsl(var(--primary-hue) var(--primary-saturation) 82%);
@@ -349,75 +383,75 @@
349
383
  --color-secondary-light-gray: hsl(var(--secondary-hue) 10% 12%);
350
384
  --color-secondary-dark-gray: hsl(var(--secondary-hue) 10% 90%);
351
385
  /* 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);
386
+ --color-green-5: hsl(149 65% 95%);
387
+ --color-green-10: hsl(149 65% 90%);
388
+ --color-green-20: hsl(149 65% 82%);
389
+ --color-green-30: hsl(149 65% 72%);
390
+ --color-green-40: hsl(149 65% 62%);
391
+ --color-green-50: hsl(149 65% 52%);
392
+ --color-green-60: hsl(149 65% 42%);
393
+ --color-green-70: hsl(149 65% 32%);
394
+ --color-green-80: hsl(149 65% 55% / 0.32);
395
+ --color-green-90: hsl(149 65% 55% / 0.2);
396
+ --color-green-93: hsl(149 65% 55% / 0.15);
397
+ --color-green-95: hsl(149 65% 55% / 0.11);
398
+ --color-green-97: hsl(149 65% 55% / 0.07);
365
399
  /* 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);
400
+ --color-blue-5: hsl(215 85% 95%);
401
+ --color-blue-10: hsl(215 85% 90%);
402
+ --color-blue-20: hsl(215 85% 82%);
403
+ --color-blue-30: hsl(215 85% 72%);
404
+ --color-blue-40: hsl(215 85% 62%);
405
+ --color-blue-50: hsl(215 85% 52%);
406
+ --color-blue-60: hsl(215 85% 42%);
407
+ --color-blue-70: hsl(215 85% 32%);
408
+ --color-blue-80: hsl(215 85% 55% / 0.32);
409
+ --color-blue-90: hsl(215 85% 55% / 0.2);
410
+ --color-blue-93: hsl(215 85% 55% / 0.15);
411
+ --color-blue-95: hsl(215 85% 55% / 0.11);
412
+ --color-blue-97: hsl(215 85% 55% / 0.07);
379
413
  /* 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);
414
+ --color-purple-5: hsl(262 75% 95%);
415
+ --color-purple-10: hsl(262 75% 90%);
416
+ --color-purple-20: hsl(262 75% 82%);
417
+ --color-purple-30: hsl(262 75% 72%);
418
+ --color-purple-40: hsl(262 75% 62%);
419
+ --color-purple-50: hsl(262 75% 52%);
420
+ --color-purple-60: hsl(262 75% 42%);
421
+ --color-purple-70: hsl(262 75% 32%);
422
+ --color-purple-80: hsl(262 75% 55% / 0.32);
423
+ --color-purple-90: hsl(262 75% 55% / 0.2);
424
+ --color-purple-93: hsl(262 75% 55% / 0.15);
425
+ --color-purple-95: hsl(262 75% 55% / 0.11);
426
+ --color-purple-97: hsl(262 75% 55% / 0.07);
393
427
  /* 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);
428
+ --color-yellow-5: hsl(38 92% 95%);
429
+ --color-yellow-10: hsl(38 92% 90%);
430
+ --color-yellow-20: hsl(38 92% 82%);
431
+ --color-yellow-30: hsl(38 92% 72%);
432
+ --color-yellow-40: hsl(38 92% 62%);
433
+ --color-yellow-50: hsl(38 92% 52%);
434
+ --color-yellow-60: hsl(38 92% 42%);
435
+ --color-yellow-70: hsl(38 92% 32%);
436
+ --color-yellow-80: hsl(38 92% 55% / 0.32);
437
+ --color-yellow-90: hsl(38 92% 55% / 0.2);
438
+ --color-yellow-93: hsl(38 92% 55% / 0.15);
439
+ --color-yellow-95: hsl(38 92% 55% / 0.11);
440
+ --color-yellow-97: hsl(38 92% 55% / 0.07);
407
441
  /* 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);
442
+ --color-red-5: hsl(0 75% 95%);
443
+ --color-red-10: hsl(0 75% 90%);
444
+ --color-red-20: hsl(0 75% 82%);
445
+ --color-red-30: hsl(0 75% 72%);
446
+ --color-red-40: hsl(0 75% 62%);
447
+ --color-red-50: hsl(0 75% 52%);
448
+ --color-red-60: hsl(0 75% 42%);
449
+ --color-red-70: hsl(0 75% 32%);
450
+ --color-red-80: hsl(0 75% 55% / 0.32);
451
+ --color-red-90: hsl(0 75% 55% / 0.2);
452
+ --color-red-93: hsl(0 75% 55% / 0.15);
453
+ --color-red-95: hsl(0 75% 55% / 0.11);
454
+ --color-red-97: hsl(0 75% 55% / 0.07);
421
455
  /* gray */
422
456
  --color-gray-5: hsl(0 0% 95%);
423
457
  --color-gray-10: hsl(0 0% 90%);
@@ -433,47 +467,65 @@
433
467
  --color-gray-95: hsl(0 0% 55% / 0.11);
434
468
  --color-gray-97: hsl(0 0% 55% / 0.07);
435
469
  /* 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%);
470
+ --color-slate-5: #fafafa;
471
+ --color-slate-10: #f0f0f0;
472
+ --color-slate-20: #e5e5e5;
473
+ --color-slate-30: #d0d0d0;
474
+ --color-slate-40: #b5b5b5;
475
+ --color-slate-50: #a3a3a3;
476
+ --color-slate-60: #737373;
477
+ --color-slate-70: #3a3a3a;
478
+ --color-slate-80: #2e2f2f;
479
+ --color-slate-90: #262626;
480
+ --color-slate-95: #1f1f1f;
481
+ /* status: cloud-ui's dark values; fills keep white text */
482
+ --color-success: #22c55e;
483
+ --color-info: #3b82f6;
484
+ --color-warning: #f59e0b;
485
+ --color-danger: #f87171;
486
+ --color-pending: #8b5cf6;
487
+ --color-success-hover: rgb(34 197 94 / 0.9);
488
+ --color-info-hover: rgb(59 130 246 / 0.9);
489
+ --color-warning-hover: rgb(245 158 11 / 0.9);
490
+ --color-danger-hover: rgb(248 113 113 / 0.9);
491
+ --color-pending-hover: rgb(139 92 246 / 0.9);
492
+ --color-success-strong: #4ade80;
493
+ --color-info-strong: #93c5fd;
494
+ --color-warning-strong: #fbbf24;
495
+ --color-danger-strong: #fca5a5;
496
+ --color-pending-strong: #c4b5fd;
497
+ /* chart palette: blue lifts for the dark surface; the greys swap so "Other" stays the quieter one */
498
+ --color-chart-2: #3b82f6;
499
+ --color-chart-7: #a3a3a3;
500
+ --color-chart-8: #5c5c5c;
456
501
  /* 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);
502
+ --color-heading: #fafafa;
503
+ --color-body: #fafafa;
504
+ --color-label: #fafafa;
505
+ --color-muted: #d0d0d0;
506
+ --color-link: #fafafa;
507
+ --color-border-light: #262626;
508
+ --color-border: #2e2f2f;
509
+ --color-border-dark: #3a3a3a;
510
+ --color-sidebar: #171717;
511
+ --color-background: #0a0a0a;
512
+ --color-surface: #171717;
513
+ --color-surface-muted: #1f1f1f;
514
+ --color-surface-sunken: #2c2c2c;
515
+ --color-accent: #2a3138;
516
+ --color-accent-hover: #323b44;
517
+ --color-accent-active: #3a4551;
518
+ --color-ring: hsl(var(--primary-hue) 71% 45%);
470
519
  --color-overlay: rgb(0 0 0 / 0.6);
520
+ --color-tooltip: #262626;
521
+ --color-on-tooltip: #f5f5f5;
471
522
  --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);
523
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.35), 0 1px 2px -1px rgb(0 0 0 / 0.35);
524
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.4);
525
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.5);
526
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.55), 0 8px 10px -6px rgb(0 0 0 / 0.55);
527
+ --shadow-card: 0 2px 4px rgb(0 0 0 / 0.3), 0 12px 24px -6px rgb(0 0 0 / 0.5);
528
+ --shadow-button: 0 1px 3px 0 rgb(0 0 0 / 0.35), 0 1px 2px -1px rgb(0 0 0 / 0.35);
477
529
  --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.25);
478
530
  }
479
531
 
@@ -484,44 +536,56 @@
484
536
  text-rendering: optimizeLegibility;
485
537
  }
486
538
  body {
487
- background-color: var(--color-surface);
539
+ background-color: var(--color-background);
488
540
  color: var(--color-body);
489
541
  font-family: var(--font-sans);
490
542
  font-size: var(--text-base);
543
+ font-weight: 450;
491
544
  line-height: var(--text-base--line-height);
545
+ letter-spacing: 0.005em;
546
+ font-optical-sizing: auto;
547
+ }
548
+ h1, h2, h3, h4, h5, h6 {
549
+ color: var(--color-heading);
550
+ font-family: var(--font-heading);
551
+ font-weight: 600;
552
+ line-height: 1.25;
553
+ text-wrap: balance;
492
554
  }
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; }
555
+ h1 { font-size: var(--text-h1); font-weight: 700; letter-spacing: -0.02em; }
556
+ h2 { font-size: var(--text-h2); font-weight: 700; letter-spacing: -0.02em; }
557
+ h3 { font-size: var(--text-h3); letter-spacing: -0.012em; }
558
+ h4 { font-size: var(--text-h4); letter-spacing: -0.012em; }
559
+ h5 { font-size: var(--text-h5); letter-spacing: -0.008em; }
560
+ h6 { font-size: var(--text-h6); letter-spacing: -0.008em; }
561
+ p { text-wrap: pretty; }
562
+ button, input, select, textarea { font-family: inherit; letter-spacing: inherit; }
500
563
  code, kbd, pre, samp { font-family: var(--font-mono); font-feature-settings: normal; }
501
564
  ::selection { background-color: var(--color-primary-90); color: var(--color-primary-10); }
502
- :focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
565
+ :focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; }
503
566
  }
504
567
 
505
568
  @utility text-code {
506
569
  font-family: var(--font-mono);
507
570
  font-size: calc(13px * var(--ac-scale));
508
- letter-spacing: -0.01em;
571
+ letter-spacing: 0;
509
572
  color: var(--color-heading);
510
573
  }
511
574
 
512
- /* The standard focus treatment for form controls: solid primary border + soft halo. */
575
+ /* The standard focus treatment for form controls: a solid primary border plus a 2px primary/20 halo. */
513
576
  @utility focus-ring {
514
577
  outline: none;
515
578
  border-color: var(--color-primary);
516
- box-shadow: 0 0 0 3px var(--color-ring);
579
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-primary) 20%, transparent);
517
580
  }
518
581
 
582
+ /* Thin scrollbar: a 4px grey thumb, like cloud-ui's custom-scrollbar. */
519
583
  @utility ac-scrollbar {
520
584
  overflow: auto;
521
585
  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; }
586
+ scrollbar-color: rgb(176 176 176 / 0.55) transparent;
587
+ &::-webkit-scrollbar { width: 4px; height: 4px; }
588
+ &::-webkit-scrollbar-thumb { background-color: #b0b0b0; border-radius: 9999px; }
525
589
  &::-webkit-scrollbar-track { background: transparent; }
526
590
  }
527
591
 
@@ -554,3 +618,58 @@
554
618
  @media (prefers-reduced-motion: reduce) {
555
619
  .ac-progress-indeterminate { animation: none; }
556
620
  }
621
+
622
+ /*
623
+ * Charts (the /charts entry). Unovis styles its SVG through --vis-* variables; they're set on chart roots only,
624
+ * so other Unovis charts on the page keep their own look. The --vis-dark-* twins get the same tokens, so
625
+ * Unovis' own dark-theme selectors (html.theme-dark and the like) still resolve to ours.
626
+ */
627
+ [data-ac-chart] {
628
+ font-variant-numeric: tabular-nums;
629
+ --vis-font-family: var(--font-sans);
630
+ --vis-axis-font-family: var(--font-sans);
631
+ --vis-axis-tick-label-font-size: 12px;
632
+ --vis-axis-tick-label-weight: 400;
633
+ --vis-axis-label-font-size: 12px;
634
+ --vis-axis-label-weight: 500;
635
+ --vis-axis-tick-color: var(--color-border);
636
+ --vis-dark-axis-tick-color: var(--color-border);
637
+ --vis-axis-domain-color: var(--color-border-dark);
638
+ --vis-dark-axis-domain-color: var(--color-border-dark);
639
+ --vis-axis-grid-color: var(--color-border);
640
+ --vis-dark-axis-grid-color: var(--color-border);
641
+ --vis-axis-tick-label-color: var(--color-muted);
642
+ --vis-dark-axis-tick-label-color: var(--color-muted);
643
+ --vis-axis-label-color: var(--color-muted);
644
+ --vis-dark-axis-label-color: var(--color-muted);
645
+ --vis-crosshair-line-stroke-color: var(--color-border-dark);
646
+ --vis-crosshair-circle-stroke-color: var(--color-surface);
647
+ --vis-crosshair-circle-stroke-width: 2px;
648
+ --vis-crosshair-circle-stroke-opacity: 1;
649
+ /* A 1px surface stroke leaves a 2px gap between stacked segments. */
650
+ --vis-stacked-bar-stroke-color: var(--color-surface);
651
+ --vis-dark-stacked-bar-stroke-color: var(--color-surface);
652
+ --vis-stacked-bar-stroke-width: 1px;
653
+ --vis-grouped-bar-hover-stroke-width: 0px;
654
+ --vis-area-fill-opacity: 1;
655
+ --vis-donut-background-color: var(--color-surface-sunken);
656
+ --vis-dark-donut-background-color: var(--color-surface-sunken);
657
+ --vis-donut-segment-stroke-color: var(--color-surface);
658
+ --vis-donut-segment-stroke-width: 2px;
659
+ --vis-donut-central-label-text-color: var(--color-heading);
660
+ --vis-dark-donut-central-label-text-color: var(--color-heading);
661
+ --vis-donut-central-sub-label-text-color: var(--color-muted);
662
+ --vis-dark-donut-central-sub-label-text-color: var(--color-muted);
663
+ --vis-legend-label-color: var(--color-muted);
664
+ --vis-dark-legend-label-color: var(--color-muted);
665
+ --vis-legend-label-font-size: 12px;
666
+ --vis-tooltip-background-color: var(--color-surface);
667
+ --vis-dark-tooltip-background-color: var(--color-surface);
668
+ --vis-tooltip-border-color: var(--color-border);
669
+ --vis-dark-tooltip-border-color: var(--color-border);
670
+ --vis-tooltip-text-color: var(--color-body);
671
+ --vis-dark-tooltip-text-color: var(--color-body);
672
+ --vis-tooltip-border-radius: 10px;
673
+ --vis-tooltip-box-shadow: var(--shadow-lg);
674
+ --vis-tooltip-padding: 10px 12px;
675
+ }