@pgcorp/ui-kit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/docs/accessibility.md +27 -0
  4. package/docs/getting-started.md +80 -0
  5. package/docs/licensing.md +30 -0
  6. package/docs/public-api.md +39 -0
  7. package/docs/security.md +21 -0
  8. package/docs/theming.md +35 -0
  9. package/docs/versioning.md +23 -0
  10. package/index.ts +3 -0
  11. package/package.json +592 -0
  12. package/src/components/icons/_internal/generatedSputnigUiIconMarkup.ts +971 -0
  13. package/src/components/icons/sputnigUiIcons.ts +530 -0
  14. package/src/components/layout/SAppShell.vue +232 -0
  15. package/src/components/layout/SDockRegion.vue +200 -0
  16. package/src/components/layout/SResizeHandle.vue +251 -0
  17. package/src/components/layout/SSideMenuButton.vue +104 -0
  18. package/src/components/layout/SSideMenuRail.vue +47 -0
  19. package/src/components/layout/SStack.css +25 -0
  20. package/src/components/layout/SStack.vue +57 -0
  21. package/src/components/layout/SStatusBarShell.css +15 -0
  22. package/src/components/layout/SStatusBarShell.vue +26 -0
  23. package/src/components/layout/SWorkbenchLayout.vue +53 -0
  24. package/src/components/layout/SWorkbenchPanelShell.css +161 -0
  25. package/src/components/layout/SWorkbenchPanelShell.vue +286 -0
  26. package/src/components/layout/_internal/SAppBrand.css +45 -0
  27. package/src/components/layout/_internal/SAppBrand.vue +37 -0
  28. package/src/components/layout/_internal/SAppBrandContent.vue +30 -0
  29. package/src/components/layout/types.ts +28 -0
  30. package/src/components/shared/_internal/SDialogSurface.css +127 -0
  31. package/src/components/shared/_internal/SDialogSurface.vue +117 -0
  32. package/src/components/shared/_internal/SDisclosureSummary.css +92 -0
  33. package/src/components/shared/_internal/SDisclosureSummary.vue +121 -0
  34. package/src/components/shared/_internal/SListboxGroup.css +18 -0
  35. package/src/components/shared/_internal/SListboxGroup.vue +24 -0
  36. package/src/components/shared/_internal/SMenuItem.css +112 -0
  37. package/src/components/shared/_internal/SMenuItem.vue +213 -0
  38. package/src/components/shared/_internal/SMenuLayer.css +21 -0
  39. package/src/components/shared/_internal/SMenuLayer.vue +48 -0
  40. package/src/components/shared/_internal/SMenuSeparator.css +5 -0
  41. package/src/components/shared/_internal/SMenuSeparator.vue +13 -0
  42. package/src/components/shared/_internal/SToastItem.css +65 -0
  43. package/src/components/shared/_internal/SToastItem.vue +58 -0
  44. package/src/components/shared/_internal/STreeNode.vue +761 -0
  45. package/src/components/shared/_internal/dialogSurface.ts +105 -0
  46. package/src/components/shared/_internal/focusTrap.ts +40 -0
  47. package/src/components/shared/_internal/listboxContext.ts +16 -0
  48. package/src/components/shared/_internal/markerContract.ts +10 -0
  49. package/src/components/shared/_internal/menuContext.ts +23 -0
  50. package/src/components/shared/_internal/selectionContract.ts +239 -0
  51. package/src/components/shared/_internal/sidebarGroupContext.ts +31 -0
  52. package/src/components/shared/_internal/tabsContext.ts +57 -0
  53. package/src/components/shared/_internal/treeRuntime.ts +203 -0
  54. package/src/components/shared/_internal/useSelectionRoving.ts +162 -0
  55. package/src/components/shared/codeLanguages.ts +168 -0
  56. package/src/components/shared/complex/SKanbanCard.css +8 -0
  57. package/src/components/shared/complex/SKanbanCard.vue +76 -0
  58. package/src/components/shared/complex/SKanbanLane.vue +82 -0
  59. package/src/components/shared/complex/STree.css +24 -0
  60. package/src/components/shared/complex/STree.vue +288 -0
  61. package/src/components/shared/complex/treeAdapter.ts +210 -0
  62. package/src/components/shared/complex/types.ts +102 -0
  63. package/src/components/shared/containers/SCloudChrome.css +103 -0
  64. package/src/components/shared/containers/SCloudChrome.vue +87 -0
  65. package/src/components/shared/containers/SCloudChromeEmpty.css +10 -0
  66. package/src/components/shared/containers/SCloudChromeEmpty.vue +18 -0
  67. package/src/components/shared/containers/SCloudChromeRow.css +78 -0
  68. package/src/components/shared/containers/SCloudChromeRow.vue +108 -0
  69. package/src/components/shared/containers/SCollapsiblePanel.css +57 -0
  70. package/src/components/shared/containers/SCollapsiblePanel.vue +360 -0
  71. package/src/components/shared/containers/SDrawer.css +60 -0
  72. package/src/components/shared/containers/SDrawer.vue +86 -0
  73. package/src/components/shared/containers/SFormGrid.css +26 -0
  74. package/src/components/shared/containers/SFormGrid.vue +46 -0
  75. package/src/components/shared/containers/SFormGridItem.css +18 -0
  76. package/src/components/shared/containers/SFormGridItem.vue +29 -0
  77. package/src/components/shared/containers/SLeftSidebar.vue +74 -0
  78. package/src/components/shared/containers/SModal.css +27 -0
  79. package/src/components/shared/containers/SModal.vue +105 -0
  80. package/src/components/shared/containers/SPageHeader.css +66 -0
  81. package/src/components/shared/containers/SPageHeader.vue +45 -0
  82. package/src/components/shared/containers/SPanel.css +134 -0
  83. package/src/components/shared/containers/SPanel.vue +169 -0
  84. package/src/components/shared/containers/SPopover.css +35 -0
  85. package/src/components/shared/containers/SPopover.vue +551 -0
  86. package/src/components/shared/containers/SSidebarGroup.css +12 -0
  87. package/src/components/shared/containers/SSidebarGroup.vue +443 -0
  88. package/src/components/shared/containers/SSidebarSection.css +41 -0
  89. package/src/components/shared/containers/SSidebarSection.vue +268 -0
  90. package/src/components/shared/containers/disclosureSummary.ts +48 -0
  91. package/src/components/shared/containers/popover.ts +72 -0
  92. package/src/components/shared/containers/sidebar.ts +206 -0
  93. package/src/components/shared/controls/SButton.css +274 -0
  94. package/src/components/shared/controls/SButton.vue +211 -0
  95. package/src/components/shared/controls/SCheckbox.css +65 -0
  96. package/src/components/shared/controls/SCheckbox.vue +130 -0
  97. package/src/components/shared/controls/SCheckboxGroup.vue +134 -0
  98. package/src/components/shared/controls/SChoiceCards.css +29 -0
  99. package/src/components/shared/controls/SChoiceCards.vue +145 -0
  100. package/src/components/shared/controls/SColorSelect.vue +146 -0
  101. package/src/components/shared/controls/SComboboxTrigger.css +35 -0
  102. package/src/components/shared/controls/SComboboxTrigger.vue +122 -0
  103. package/src/components/shared/controls/SContextMenu.css +11 -0
  104. package/src/components/shared/controls/SContextMenu.vue +186 -0
  105. package/src/components/shared/controls/SContextToggleButton.vue +64 -0
  106. package/src/components/shared/controls/SDragHandle.vue +100 -0
  107. package/src/components/shared/controls/SDropdownMenu.css +5 -0
  108. package/src/components/shared/controls/SDropdownMenu.vue +188 -0
  109. package/src/components/shared/controls/SField.css +79 -0
  110. package/src/components/shared/controls/SField.vue +89 -0
  111. package/src/components/shared/controls/SFieldGroup.css +58 -0
  112. package/src/components/shared/controls/SFieldGroup.vue +117 -0
  113. package/src/components/shared/controls/SFieldLabel.css +12 -0
  114. package/src/components/shared/controls/SFieldLabel.vue +51 -0
  115. package/src/components/shared/controls/SInlineTokenEditor.css +61 -0
  116. package/src/components/shared/controls/SInlineTokenEditor.vue +1081 -0
  117. package/src/components/shared/controls/SInputText.css +66 -0
  118. package/src/components/shared/controls/SInputText.vue +321 -0
  119. package/src/components/shared/controls/SInteractiveSurface.css +72 -0
  120. package/src/components/shared/controls/SInteractiveSurface.vue +326 -0
  121. package/src/components/shared/controls/SLink.css +114 -0
  122. package/src/components/shared/controls/SLink.ts +85 -0
  123. package/src/components/shared/controls/SLink.vue +114 -0
  124. package/src/components/shared/controls/SListbox.css +31 -0
  125. package/src/components/shared/controls/SListbox.vue +388 -0
  126. package/src/components/shared/controls/SListboxOption.css +63 -0
  127. package/src/components/shared/controls/SListboxOption.vue +85 -0
  128. package/src/components/shared/controls/SMarker.css +19 -0
  129. package/src/components/shared/controls/SMarker.vue +33 -0
  130. package/src/components/shared/controls/SMenuSurface.css +20 -0
  131. package/src/components/shared/controls/SMenuSurface.vue +333 -0
  132. package/src/components/shared/controls/SSegmentedControl.css +38 -0
  133. package/src/components/shared/controls/SSegmentedControl.vue +134 -0
  134. package/src/components/shared/controls/SSelect.css +12 -0
  135. package/src/components/shared/controls/SSelect.vue +338 -0
  136. package/src/components/shared/controls/STextarea.css +31 -0
  137. package/src/components/shared/controls/STextarea.vue +316 -0
  138. package/src/components/shared/controls/_internal/SInlineTokenSurface.vue +224 -0
  139. package/src/components/shared/controls/menu.ts +178 -0
  140. package/src/components/shared/data-display/SActionCard.css +6 -0
  141. package/src/components/shared/data-display/SActionCard.vue +49 -0
  142. package/src/components/shared/data-display/SActionList.css +15 -0
  143. package/src/components/shared/data-display/SActionList.vue +34 -0
  144. package/src/components/shared/data-display/SActionListItem.css +114 -0
  145. package/src/components/shared/data-display/SActionListItem.vue +230 -0
  146. package/src/components/shared/data-display/SBadge.css +73 -0
  147. package/src/components/shared/data-display/SBadge.vue +52 -0
  148. package/src/components/shared/data-display/SCodeBlock.css +56 -0
  149. package/src/components/shared/data-display/SCodeBlock.vue +188 -0
  150. package/src/components/shared/data-display/SCodeEditor.css +178 -0
  151. package/src/components/shared/data-display/SCodeEditor.vue +274 -0
  152. package/src/components/shared/data-display/SCodeSearchPanel.vue +327 -0
  153. package/src/components/shared/data-display/SCopyField.vue +77 -0
  154. package/src/components/shared/data-display/SDocBlock.css +136 -0
  155. package/src/components/shared/data-display/SDocBlock.vue +358 -0
  156. package/src/components/shared/data-display/SEmptyState.css +42 -0
  157. package/src/components/shared/data-display/SEmptyState.vue +79 -0
  158. package/src/components/shared/data-display/SExpandableText.vue +314 -0
  159. package/src/components/shared/data-display/SJsonTree.css +6 -0
  160. package/src/components/shared/data-display/SJsonTree.vue +111 -0
  161. package/src/components/shared/data-display/SKeyValueGrid.css +37 -0
  162. package/src/components/shared/data-display/SKeyValueGrid.vue +277 -0
  163. package/src/components/shared/data-display/SLinkedSystemsList.vue +270 -0
  164. package/src/components/shared/data-display/SMessage.css +88 -0
  165. package/src/components/shared/data-display/SMessage.vue +152 -0
  166. package/src/components/shared/data-display/SMetricCard.css +32 -0
  167. package/src/components/shared/data-display/SMetricCard.vue +117 -0
  168. package/src/components/shared/data-display/SProgressBar.css +84 -0
  169. package/src/components/shared/data-display/SProgressBar.vue +114 -0
  170. package/src/components/shared/data-display/SProgressIndicator.css +59 -0
  171. package/src/components/shared/data-display/SProgressIndicator.vue +104 -0
  172. package/src/components/shared/data-display/SSectionHeader.css +84 -0
  173. package/src/components/shared/data-display/SSectionHeader.vue +58 -0
  174. package/src/components/shared/data-display/SStatus.css +90 -0
  175. package/src/components/shared/data-display/SStatus.vue +79 -0
  176. package/src/components/shared/data-display/STable.css +83 -0
  177. package/src/components/shared/data-display/STable.vue +339 -0
  178. package/src/components/shared/data-display/SToastContainer.css +53 -0
  179. package/src/components/shared/data-display/SToastContainer.vue +31 -0
  180. package/src/components/shared/data-display/STooltip.css +114 -0
  181. package/src/components/shared/data-display/STooltip.vue +550 -0
  182. package/src/components/shared/data-display/STooltipAnchor.css +21 -0
  183. package/src/components/shared/data-display/STooltipAnchor.vue +119 -0
  184. package/src/components/shared/data-display/SVirtualList.css +24 -0
  185. package/src/components/shared/data-display/SVirtualList.ts +19 -0
  186. package/src/components/shared/data-display/SVirtualList.vue +361 -0
  187. package/src/components/shared/data-display/json.ts +136 -0
  188. package/src/components/shared/data-display/table.ts +76 -0
  189. package/src/components/shared/database/SDataGrid.css +3 -0
  190. package/src/components/shared/database/SDataGrid.vue +464 -0
  191. package/src/components/shared/database/SSqlEditor.vue +363 -0
  192. package/src/components/shared/database/dataGrid.ts +61 -0
  193. package/src/components/shared/feedback/SAsyncState.css +26 -0
  194. package/src/components/shared/feedback/SAsyncState.vue +190 -0
  195. package/src/components/shared/graph/SGraphViewport.ts +1 -0
  196. package/src/components/shared/graph/SGraphViewport.vue +858 -0
  197. package/src/components/shared/graph/_internal/graphViewportContract.ts +362 -0
  198. package/src/components/shared/markdown.ts +169 -0
  199. package/src/components/shared/navigation/SBottomNav.vue +692 -0
  200. package/src/components/shared/navigation/SBreadcrumbs.css +26 -0
  201. package/src/components/shared/navigation/SBreadcrumbs.vue +155 -0
  202. package/src/components/shared/navigation/SCatalogNavigator.css +100 -0
  203. package/src/components/shared/navigation/SCatalogNavigator.vue +308 -0
  204. package/src/components/shared/navigation/STab.vue +363 -0
  205. package/src/components/shared/navigation/STabList.vue +442 -0
  206. package/src/components/shared/navigation/STabPanel.vue +165 -0
  207. package/src/components/shared/navigation/STabPanels.vue +33 -0
  208. package/src/components/shared/navigation/STabs.vue +617 -0
  209. package/src/components/shared/navigation/SWizardSteps.css +69 -0
  210. package/src/components/shared/navigation/SWizardSteps.vue +171 -0
  211. package/src/components/shared/navigation/_internal/SCatalogNavigatorGroup.vue +63 -0
  212. package/src/components/shared/persona/SPersonaProjectPicker.css +36 -0
  213. package/src/components/shared/persona/SPersonaProjectPicker.vue +361 -0
  214. package/src/components/shared/persona/SPersonaRunWorkbench.css +109 -0
  215. package/src/components/shared/persona/SPersonaRunWorkbench.vue +549 -0
  216. package/src/components/shared/persona/_internal/SPersonaRunConsole.css +40 -0
  217. package/src/components/shared/persona/_internal/SPersonaRunConsole.vue +298 -0
  218. package/src/components/shared/persona/_internal/inventory.ts +110 -0
  219. package/src/components/shared/persona/_internal/labels.ts +79 -0
  220. package/src/components/shared/persona/presentation.ts +371 -0
  221. package/src/components/shared/persona/types.ts +256 -0
  222. package/src/composables/uiPreferencesReset.ts +52 -0
  223. package/src/composables/useClipboard.ts +37 -0
  224. package/src/composables/useDialogOverlay.ts +85 -0
  225. package/src/composables/useDisclosure.ts +40 -0
  226. package/src/composables/useFloatingPosition.ts +245 -0
  227. package/src/composables/useNotifier.ts +26 -0
  228. package/src/composables/useSidebarPanelState.ts +610 -0
  229. package/src/internal/codeEditorContract.ts +110 -0
  230. package/src/internal/codeEditorExtensions.ts +27 -0
  231. package/src/internal/feedbackPresentation.ts +136 -0
  232. package/src/internal/fieldSurface.ts +59 -0
  233. package/src/internal/focusNavigation.ts +69 -0
  234. package/src/internal/inlineTokenEditorContract.ts +136 -0
  235. package/src/internal/interactiveElement.ts +33 -0
  236. package/src/internal/layerStack.ts +202 -0
  237. package/src/internal/linkTarget.ts +256 -0
  238. package/src/internal/ownedAttrs.ts +464 -0
  239. package/src/internal/passiveContentContract.ts +129 -0
  240. package/src/internal/pointerInteractionLease.ts +81 -0
  241. package/src/internal/runtimeContract.ts +194 -0
  242. package/src/internal/runtimeTheme.ts +159 -0
  243. package/src/internal/semanticSizing.ts +60 -0
  244. package/src/internal/useMenuLayer.ts +129 -0
  245. package/src/stores/useNotifierStore.ts +69 -0
  246. package/src/styles/reference.css +4 -0
  247. package/src/styles/style.css +151 -0
  248. package/src/styles/tokens.css +836 -0
  249. package/src/theme.ts +449 -0
  250. package/src/types/highlight-js-lib.d.ts +76 -0
  251. package/src/variants.ts +15 -0
@@ -0,0 +1,836 @@
1
+ @theme {
2
+ --font-sans:
3
+ "IBM Plex Sans",
4
+ "Segoe UI",
5
+ -apple-system,
6
+ BlinkMacSystemFont,
7
+ sans-serif;
8
+ --font-mono:
9
+ "IBM Plex Mono",
10
+ "SFMono-Regular",
11
+ Consolas,
12
+ "Liberation Mono",
13
+ monospace;
14
+
15
+ --radius-xs: 0.375rem;
16
+ --radius-sm: 0.5rem;
17
+ --radius-md: 0.75rem;
18
+ --radius-lg: 1rem;
19
+ --radius-xl: 1.5rem;
20
+
21
+ --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.08);
22
+ --shadow-md: 0 10px 30px rgba(15, 23, 42, 0.08);
23
+ --shadow-lg: 0 20px 50px rgba(15, 23, 42, 0.14);
24
+ --shadow-xl: 0 30px 80px rgba(15, 23, 42, 0.18);
25
+
26
+ --color-primary: #3b82f6;
27
+ --color-primary-50: #eff6ff;
28
+ --color-primary-100: #dbeafe;
29
+ --color-primary-200: #bfdbfe;
30
+ --color-primary-300: #93c5fd;
31
+ --color-primary-400: #60a5fa;
32
+ --color-primary-500: #3b82f6;
33
+ --color-primary-600: #2563eb;
34
+ --color-primary-700: #1d4ed8;
35
+ --color-primary-800: #1e40af;
36
+ --color-primary-900: #1e3a8a;
37
+ --color-primary-950: #172554;
38
+ --color-primary-contrast: #ffffff;
39
+
40
+ --color-surface-0: #ffffff;
41
+ --color-surface-50: #f8fafc;
42
+ --color-surface-100: #f1f5f9;
43
+ --color-surface-200: #e2e8f0;
44
+ --color-surface-300: #cbd5e1;
45
+ --color-surface-400: #94a3b8;
46
+ --color-surface-500: #64748b;
47
+ --color-surface-600: #475569;
48
+ --color-surface-700: #334155;
49
+ --color-surface-800: #1e293b;
50
+ --color-surface-850: #172033;
51
+ --color-surface-900: #0f172a;
52
+ --color-surface-950: #020617;
53
+
54
+ --color-success: #22c55e;
55
+ --color-success-50: #f0fdf4;
56
+ --color-success-100: #dcfce7;
57
+ --color-success-200: #bbf7d0;
58
+ --color-success-300: #86efac;
59
+ --color-success-400: #4ade80;
60
+ --color-success-500: #22c55e;
61
+ --color-success-600: #16a34a;
62
+ --color-success-700: #15803d;
63
+ --color-success-800: #166534;
64
+ --color-success-900: #14532d;
65
+ --color-success-950: #052e16;
66
+
67
+ --color-info: #3b82f6;
68
+ --color-info-50: #eff6ff;
69
+ --color-info-100: #dbeafe;
70
+ --color-info-200: #bfdbfe;
71
+ --color-info-300: #93c5fd;
72
+ --color-info-400: #60a5fa;
73
+ --color-info-500: #3b82f6;
74
+ --color-info-600: #2563eb;
75
+ --color-info-700: #1d4ed8;
76
+ --color-info-800: #1e40af;
77
+ --color-info-900: #1e3a8a;
78
+ --color-info-950: #172554;
79
+
80
+ --color-warn: #f97316;
81
+ --color-warn-50: #fff7ed;
82
+ --color-warn-100: #ffedd5;
83
+ --color-warn-200: #fed7aa;
84
+ --color-warn-300: #fdba74;
85
+ --color-warn-400: #fb923c;
86
+ --color-warn-500: #f97316;
87
+ --color-warn-600: #ea580c;
88
+ --color-warn-700: #c2410c;
89
+ --color-warn-800: #9a3412;
90
+ --color-warn-900: #7c2d12;
91
+ --color-warn-950: #431407;
92
+
93
+ --color-danger: #ef4444;
94
+ --color-danger-50: #fef2f2;
95
+ --color-danger-100: #fee2e2;
96
+ --color-danger-200: #fecaca;
97
+ --color-danger-300: #fca5a5;
98
+ --color-danger-400: #f87171;
99
+ --color-danger-500: #ef4444;
100
+ --color-danger-600: #dc2626;
101
+ --color-danger-700: #b91c1c;
102
+ --color-danger-800: #991b1b;
103
+ --color-danger-900: #7f1d1d;
104
+ --color-danger-950: #450a0a;
105
+ }
106
+
107
+ :root {
108
+ --safe-area-top: env(safe-area-inset-top, 0px);
109
+ --safe-area-right: env(safe-area-inset-right, 0px);
110
+ --safe-area-bottom: env(safe-area-inset-bottom, 0px);
111
+ --safe-area-left: env(safe-area-inset-left, 0px);
112
+
113
+ /* Semantic interaction geometry */
114
+ --s-control-hitbox-xs: 1.5rem;
115
+ --s-control-hitbox-sm: 1.75rem;
116
+ --s-control-hitbox-md: 2.5rem;
117
+ --s-control-hitbox-lg: 3rem;
118
+ --s-control-indicator-size: 1.25rem;
119
+ --s-icon-size-2xs: 0.75rem;
120
+ --s-icon-size-xs: 1rem;
121
+ --s-icon-size-sm: 1.25rem;
122
+ --s-icon-size-md: 1.5rem;
123
+ --s-icon-size-lg: 2rem;
124
+
125
+ /* Semantic focus geometry */
126
+ --s-focus-ring-width: 2px;
127
+ --s-focus-ring-offset: 2px;
128
+ --s-focus-ring-inset-offset: -2px;
129
+ --s-focus-ring-color: var(--color-primary);
130
+ --s-focus-ring-strong-color: var(--color-primary-500);
131
+ --s-selection-invalid-outline-color: var(--color-danger-600);
132
+
133
+ /* Shared field-surface foundation */
134
+ --s-field-surface: var(--color-surface);
135
+ --s-field-surface-hover: var(--color-surface-muted);
136
+ --s-field-foreground: var(--color-text);
137
+ --s-field-placeholder-foreground: var(--color-text-muted);
138
+ --s-field-border: var(--color-border);
139
+ --s-field-border-focus: var(--s-focus-ring-strong-color);
140
+ --s-field-disabled-surface: var(--color-surface-muted);
141
+ --s-field-disabled-foreground: var(--color-text-muted);
142
+ --s-field-disabled-border: var(--color-border-subtle);
143
+ --s-field-invalid-border: var(--s-selection-invalid-outline-color);
144
+ --s-field-radius: var(--radius-md);
145
+ --s-field-shadow: var(--s-elevation-control);
146
+
147
+ /* Semantic density and spacing */
148
+ --s-density-row-compact: 2rem;
149
+ --s-density-row-default: 2.5rem;
150
+ --s-density-row-comfortable: 3rem;
151
+ --s-space-control-gap: 0.5rem;
152
+ --s-space-content-gap: 0.75rem;
153
+ --s-space-section-gap: 1rem;
154
+ --s-space-panel-gap: 1.5rem;
155
+
156
+ /* Semantic navigation surfaces */
157
+ --s-tab-overflow-mask-opaque: #000000;
158
+ --s-wizard-steps-surface: color-mix(in srgb, var(--color-surface-secondary) 86%, transparent);
159
+ --s-wizard-steps-padding: var(--s-space-control-gap);
160
+ --s-wizard-step-min-inline-size: 10rem;
161
+ --s-wizard-step-marker-size: var(--s-control-indicator-size);
162
+ --s-wizard-step-marker-border-width: 1px;
163
+ --s-wizard-step-marker-font-size: 0.75rem;
164
+
165
+ /* Semantic chrome surfaces */
166
+ --s-cloud-chrome-surface: linear-gradient(
167
+ 180deg,
168
+ color-mix(in srgb, var(--color-surface) 82%, transparent) 0%,
169
+ color-mix(in srgb, var(--color-surface-muted) 70%, transparent) 100%
170
+ );
171
+ --s-cloud-chrome-hidden-surface: linear-gradient(
172
+ 180deg,
173
+ color-mix(in srgb, var(--color-surface-muted) 76%, transparent) 0%,
174
+ color-mix(in srgb, var(--color-surface-secondary) 60%, transparent) 100%
175
+ );
176
+ --s-cloud-chrome-border: color-mix(in srgb, var(--color-border) 72%, transparent);
177
+ --s-cloud-chrome-hidden-border: color-mix(in srgb, var(--color-border-hover) 38%, transparent);
178
+ --s-cloud-chrome-shadow: var(--shadow-md);
179
+ --s-cloud-chrome-drag-shadow: var(--shadow-lg);
180
+ --s-cloud-chrome-row-surface: color-mix(in srgb, var(--color-surface) 62%, transparent);
181
+ --s-cloud-chrome-row-drag-surface: color-mix(in srgb, var(--color-surface) 86%, transparent);
182
+ --s-cloud-chrome-row-border: color-mix(in srgb, var(--color-border) 64%, transparent);
183
+ --s-cloud-chrome-row-divider: color-mix(in srgb, var(--color-border-hover) 22%, transparent);
184
+ --s-cloud-chrome-row-edge-divider: transparent;
185
+ --s-cloud-chrome-row-height: var(--s-density-row-default);
186
+ --s-cloud-chrome-drop-surface: color-mix(in srgb, var(--color-success-500) 9%, transparent);
187
+ --s-cloud-chrome-drop-border: color-mix(in srgb, var(--color-success-500) 42%, transparent);
188
+ --s-cloud-chrome-radius: var(--radius-xl);
189
+ --s-cloud-chrome-row-radius: var(--radius-lg);
190
+ --s-cloud-chrome-row-focus-shadow:
191
+ 0 0 0 var(--s-focus-ring-width) color-mix(in srgb, var(--color-primary-500) 35%, transparent);
192
+ --s-cloud-chrome-empty-border-radius: var(--s-cloud-chrome-row-radius);
193
+ --s-cloud-chrome-empty-border-width: 1px;
194
+ --s-cloud-chrome-empty-border: var(--color-border-hover);
195
+ --s-cloud-chrome-empty-background: initial;
196
+ --s-cloud-chrome-backdrop-filter: blur(1.375rem) saturate(132%);
197
+ --s-app-shell-floating-shadow: var(--shadow-lg);
198
+ --s-app-shell-floating-radius: calc(var(--radius-xl) + 0.3rem);
199
+ --s-app-brand-icon-size: var(--s-control-hitbox-lg);
200
+ --s-app-brand-icon-radius: var(--radius-lg);
201
+ --s-code-search-panel-radius: var(--radius-xl);
202
+ --s-code-search-panel-shadow: var(--shadow-lg);
203
+ --s-code-search-panel-backdrop-filter: blur(0.875rem);
204
+ --s-radius-pill: 9999px;
205
+
206
+ /* Domain-specific semantic viewport geometry */
207
+ --s-scroll-viewport-max-block-size-sm: 12rem;
208
+ --s-scroll-viewport-max-block-size-md: 18rem;
209
+ --s-scroll-viewport-max-block-size-lg: 24rem;
210
+ --s-expanded-content-max-block-size-sm: 16rem;
211
+ --s-expanded-content-max-block-size-md: 24rem;
212
+ --s-expanded-content-max-block-size-lg: 28rem;
213
+ --s-table-inline-size-md: 32rem;
214
+ --s-table-inline-size-lg: 42rem;
215
+ --s-table-column-inline-size-xs: 6rem;
216
+ --s-table-column-inline-size-sm: 9rem;
217
+ --s-table-column-inline-size-md: 12rem;
218
+ --s-table-column-inline-size-lg: 16rem;
219
+ --s-table-column-inline-size-xl: 22rem;
220
+ --s-menu-inline-size-min: 12rem;
221
+ --s-menu-inline-size-max: min(24rem, calc(100vw - 1rem));
222
+ --s-menu-surface-width: auto;
223
+ --s-menu-surface-min-width: var(--s-menu-inline-size-min);
224
+ --s-menu-surface-max-width: var(--s-menu-inline-size-max);
225
+ --s-menu-item-inline-padding: 0.75rem;
226
+ --s-menu-item-inline-padding-compact: 0.5rem;
227
+ --s-menu-item-block-padding: 0.5rem;
228
+ --s-menu-item-block-padding-compact: 0.375rem;
229
+
230
+ /* Semantic feedback surfaces */
231
+ --s-feedback-surface: color-mix(in srgb, var(--color-surface) 88%, transparent);
232
+ --s-feedback-backdrop-blur: 1.5rem;
233
+ --s-floating-surface: var(--color-surface);
234
+ --s-floating-foreground: var(--color-text);
235
+ --s-floating-outline: color-mix(in srgb, var(--color-border) 44%, transparent);
236
+ --s-overlay-backdrop-surface: color-mix(in srgb, var(--color-surface-950) 42%, transparent);
237
+ --s-section-divider: var(--color-border-subtle);
238
+ --s-json-tree-surface: color-mix(in srgb, var(--color-surface-muted) 72%, transparent);
239
+ --s-json-tree-key-foreground: var(--color-warn-700);
240
+ --s-json-tree-value-foreground: var(--color-text);
241
+ --s-toast-shadow-info:
242
+ inset 0 1px 0 color-mix(in srgb, var(--color-surface-0) 40%, transparent),
243
+ 0 18px 40px color-mix(in srgb, var(--color-info-500) 16%, transparent);
244
+ --s-toast-shadow-success:
245
+ inset 0 1px 0 color-mix(in srgb, var(--color-surface-0) 40%, transparent),
246
+ 0 18px 40px color-mix(in srgb, var(--color-success-500) 16%, transparent);
247
+ --s-toast-shadow-warn:
248
+ inset 0 1px 0 color-mix(in srgb, var(--color-surface-0) 40%, transparent),
249
+ 0 18px 40px color-mix(in srgb, var(--color-warn-500) 16%, transparent);
250
+ --s-toast-shadow-danger:
251
+ inset 0 1px 0 color-mix(in srgb, var(--color-surface-0) 40%, transparent),
252
+ 0 18px 40px color-mix(in srgb, var(--color-danger-500) 18%, transparent);
253
+
254
+ /* Semantic motion */
255
+ --s-motion-instant: 75ms;
256
+ --s-motion-fast: 150ms;
257
+ --s-motion-standard: 200ms;
258
+ --s-motion-deliberate: 300ms;
259
+
260
+ /* Semantic CodeMirror viewport and generated-surface palette */
261
+ --s-code-editor-viewport-content-max: 50vh;
262
+ --s-code-editor-viewport-compact: 12rem;
263
+ --s-code-editor-viewport-standard: 20rem;
264
+ --s-code-editor-viewport-expanded: 32rem;
265
+ --s-code-editor-search-match-background: rgb(99 102 241 / 22%);
266
+ --s-code-editor-search-match-selected-background: rgb(16 185 129 / 35%);
267
+ --s-code-editor-search-match-selected-outline: rgb(16 185 129 / 55%);
268
+
269
+ /* Sanitized document presentation */
270
+ --s-document-code-surface: var(--color-surface-muted);
271
+ --s-document-code-foreground: var(--color-text);
272
+ --s-document-code-border: var(--color-border-subtle);
273
+ --s-document-code-radius: var(--radius-xs);
274
+ --s-document-code-inline-padding: 0.15rem 0.4rem;
275
+ --s-document-code-block-padding: 0.75rem 0.875rem;
276
+ --s-document-code-font-size: 0.85rem;
277
+
278
+ /* Semantic graph runtime and surface contract */
279
+ --s-graph-node-default-color: var(--color-surface-500);
280
+ --s-graph-edge-default-color: var(--color-surface-400);
281
+ --s-graph-label-color: var(--color-text);
282
+ --s-graph-label-font-family: var(--font-sans);
283
+ --s-graph-label-font-size: 12px;
284
+ --s-graph-label-font-weight: 650;
285
+ --s-graph-label-density: 0.07;
286
+ --s-graph-label-grid-cell-size: 180px;
287
+ --s-graph-label-rendered-size-threshold: 9px;
288
+ --s-graph-min-edge-thickness: 0.35px;
289
+ --s-graph-stage-padding: 24px;
290
+ --s-graph-camera-duration: var(--s-motion-standard);
291
+ --s-graph-camera-reset-duration: var(--s-motion-deliberate);
292
+ --s-graph-error-inset: 1rem;
293
+ --s-graph-error-border-width: 1px;
294
+ --s-graph-error-border: color-mix(in srgb, var(--color-danger-600) 24%, transparent);
295
+ --s-graph-error-radius: var(--radius-sm);
296
+ --s-graph-error-background: color-mix(in srgb, var(--color-surface) 88%, transparent);
297
+ --s-graph-error-color: var(--color-danger-900);
298
+ --s-graph-error-font-size: 0.8125rem;
299
+ --s-graph-error-font-weight: 700;
300
+ --s-graph-error-line-height: 1.35;
301
+ --s-graph-error-padding: 1.125rem;
302
+ --s-graph-surface-border-width: 1px;
303
+ --s-graph-surface-radius: var(--radius-sm);
304
+ --s-graph-grid-layer: 0;
305
+ --s-graph-renderer-layer: 1;
306
+ --s-graph-error-layer: 2;
307
+ --s-graph-inventory-layer: 3;
308
+ --s-graph-grid-background-position: 0 0, 0.875rem 1.25rem;
309
+ --s-graph-grid-background-size: 2.125rem 2.125rem, 3.25rem 3.25rem;
310
+ --s-graph-grid-opacity: 0.5;
311
+ --s-graph-inventory-offset: 0.75rem;
312
+ --s-graph-inventory-inline-size: 20rem;
313
+ --s-graph-inventory-border-width: 1px;
314
+ --s-graph-inventory-radius: var(--radius-sm);
315
+ --s-graph-inventory-padding: 0.5rem;
316
+ --s-graph-inventory-reveal-distance: 0.5rem;
317
+ --s-graph-inventory-shadow: var(--shadow-lg);
318
+
319
+ /* Semantic elevation */
320
+ --s-layer-content: 1;
321
+ --s-layer-focused-control: 1;
322
+ --s-layer-sticky: 10;
323
+ --s-layer-affordance: 20;
324
+ --s-layer-status: 25;
325
+ --s-layer-floating: 40;
326
+ --s-layer-toast: 50;
327
+ --s-layer-navigation: 50;
328
+ --s-layer-navigation-submenu: 49;
329
+ --s-layer-drag: 10000;
330
+ --s-layer-overlay-backdrop: 11000;
331
+ --s-layer-overlay-surface-offset: 10;
332
+ --s-layer-overlay-step: 20;
333
+ --s-layer-overlay-surface: calc(var(--s-layer-overlay-backdrop) + var(--s-layer-overlay-surface-offset));
334
+ --s-overlay-backdrop-blur: 2px;
335
+ --s-elevation-control: var(--shadow-sm);
336
+ --s-elevation-floating: var(--shadow-lg);
337
+ --s-elevation-overlay: var(--shadow-xl);
338
+ }
339
+
340
+ @media (prefers-reduced-motion: reduce) {
341
+ :root {
342
+ --s-motion-instant: 1ms;
343
+ --s-motion-fast: 1ms;
344
+ --s-motion-standard: 1ms;
345
+ --s-motion-deliberate: 1ms;
346
+ --s-graph-camera-duration: var(--s-motion-standard);
347
+ --s-graph-camera-reset-duration: var(--s-motion-deliberate);
348
+ }
349
+ }
350
+
351
+ :root,
352
+ :root[data-theme="light"] {
353
+ --color-primary-hover: var(--color-primary-600);
354
+ --color-primary-soft: var(--color-primary-100);
355
+ --color-primary-ring: rgba(37, 99, 235, 0.24);
356
+
357
+ --color-bg: var(--color-surface-50);
358
+ --color-surface: var(--color-surface-0);
359
+ --color-surface-muted: var(--color-surface-100);
360
+ --color-surface-secondary: var(--color-surface-100);
361
+
362
+ --color-border-subtle: var(--color-surface-200);
363
+ --color-border: var(--color-surface-300);
364
+ --color-border-hover: var(--color-surface-400);
365
+
366
+ --color-text: var(--color-surface-900);
367
+ --color-text-muted: var(--color-surface-500);
368
+ --color-text-mute: var(--color-text-muted);
369
+ --color-text-secondary: var(--color-text-muted);
370
+ --color-text-on-primary: var(--color-primary-contrast);
371
+
372
+ --color-icon-primary: currentColor;
373
+ --color-icon-accent-theme: var(--color-primary-600);
374
+ --color-icon-accent: var(--color-icon-accent-theme);
375
+
376
+ --color-warning: var(--color-warn-500);
377
+ }
378
+
379
+ :root[data-theme="pink-light"] {
380
+ --color-primary: #f664af;
381
+ --color-primary-50: #fff1f7;
382
+ --color-primary-100: #ffd9ea;
383
+ --color-primary-200: #ffb0d3;
384
+ --color-primary-300: #ff7db7;
385
+ --color-primary-400: #f664af;
386
+ --color-primary-500: #f34a9e;
387
+ --color-primary-600: #dc2c84;
388
+ --color-primary-700: #b81f69;
389
+ --color-primary-800: #941d56;
390
+ --color-primary-900: #7b1d4b;
391
+ --color-primary-950: #490a29;
392
+ --color-primary-contrast: #ffffff;
393
+
394
+ --color-primary-hover: var(--color-primary-600);
395
+ --color-primary-soft: color-mix(in srgb, var(--color-primary-500) 10%, white);
396
+ --color-primary-ring: rgba(246, 100, 175, 0.26);
397
+
398
+ --color-bg: #fff6fb;
399
+ --color-surface: #fffafe;
400
+ --color-surface-muted: #fff1f7;
401
+ --color-surface-secondary: #ffeaf3;
402
+
403
+ --color-border-subtle: #f6d8e5;
404
+ --color-border: #efbfd4;
405
+ --color-border-hover: #df8fb1;
406
+
407
+ --color-text: #4a1735;
408
+ --color-text-muted: #8b5b73;
409
+ --color-text-mute: var(--color-text-muted);
410
+ --color-text-secondary: var(--color-text-muted);
411
+ --color-text-on-primary: var(--color-primary-contrast);
412
+
413
+ --color-icon-primary: currentColor;
414
+ --color-icon-accent-theme: var(--color-primary-600);
415
+ --color-icon-accent: var(--color-icon-accent-theme);
416
+
417
+ --color-warning: var(--color-warn-500);
418
+ }
419
+
420
+ :root[data-theme="green-light"] {
421
+ --color-primary: #21a038;
422
+ --color-primary-50: #eefbf3;
423
+ --color-primary-100: #d8f4df;
424
+ --color-primary-200: #b5e8c2;
425
+ --color-primary-300: #7dd691;
426
+ --color-primary-400: #49bf64;
427
+ --color-primary-500: #21a038;
428
+ --color-primary-600: #19872f;
429
+ --color-primary-700: #166d29;
430
+ --color-primary-800: #155724;
431
+ --color-primary-900: #12461e;
432
+ --color-primary-950: #06280e;
433
+ --color-primary-contrast: #ffffff;
434
+
435
+ --color-primary-hover: var(--color-primary-600);
436
+ --color-primary-soft: color-mix(in srgb, var(--color-primary-500) 10%, white);
437
+ --color-primary-ring: rgba(33, 160, 56, 0.24);
438
+
439
+ --color-bg: #f5fbf6;
440
+ --color-surface: #fbfefc;
441
+ --color-surface-muted: #edf7ef;
442
+ --color-surface-secondary: #e7f3e9;
443
+
444
+ --color-border-subtle: #d8e7dc;
445
+ --color-border: #bed7c4;
446
+ --color-border-hover: #87b593;
447
+
448
+ --color-text: #17311e;
449
+ --color-text-muted: #5a7663;
450
+ --color-text-mute: var(--color-text-muted);
451
+ --color-text-secondary: var(--color-text-muted);
452
+ --color-text-on-primary: var(--color-primary-contrast);
453
+
454
+ --color-icon-primary: currentColor;
455
+ --color-icon-accent-theme: var(--color-primary-600);
456
+ --color-icon-accent: var(--color-icon-accent-theme);
457
+
458
+ --color-warning: var(--color-warn-500);
459
+ }
460
+
461
+ :root[data-theme="dark"] {
462
+ --color-primary-hover: var(--color-primary-300);
463
+ --color-primary-soft: color-mix(in srgb, var(--color-primary-500) 16%, transparent);
464
+ --color-primary-ring: rgba(96, 165, 250, 0.26);
465
+
466
+ --color-bg: var(--color-surface-950);
467
+ --color-surface: var(--color-surface-900);
468
+ --color-surface-muted: var(--color-surface-850);
469
+ --color-surface-secondary: var(--color-surface-850);
470
+
471
+ --color-border-subtle: var(--color-surface-700);
472
+ --color-border: var(--color-surface-600);
473
+ --color-border-hover: var(--color-surface-500);
474
+
475
+ --color-text: #e5e7eb;
476
+ --color-text-muted: #9ca3af;
477
+ --color-text-mute: var(--color-text-muted);
478
+ --color-text-secondary: var(--color-text-muted);
479
+ --color-text-on-primary: #0b1120;
480
+
481
+ --color-icon-primary: currentColor;
482
+ --color-icon-accent-theme: var(--color-primary-400);
483
+ --color-icon-accent: var(--color-icon-accent-theme);
484
+
485
+ --color-warning: var(--color-warn-400);
486
+ }
487
+
488
+ :root[data-theme="pink-dark"] {
489
+ --color-primary: #f664af;
490
+ --color-primary-50: #fff1f7;
491
+ --color-primary-100: #ffd9ea;
492
+ --color-primary-200: #ffb0d3;
493
+ --color-primary-300: #ff7db7;
494
+ --color-primary-400: #f664af;
495
+ --color-primary-500: #f34a9e;
496
+ --color-primary-600: #dc2c84;
497
+ --color-primary-700: #b81f69;
498
+ --color-primary-800: #941d56;
499
+ --color-primary-900: #7b1d4b;
500
+ --color-primary-950: #490a29;
501
+ --color-primary-contrast: #1f1020;
502
+
503
+ --color-primary-hover: var(--color-primary-300);
504
+ --color-primary-soft: color-mix(in srgb, var(--color-primary-500) 16%, transparent);
505
+ --color-primary-ring: rgba(246, 100, 175, 0.28);
506
+
507
+ --color-bg: var(--color-surface-950);
508
+ --color-surface: var(--color-surface-900);
509
+ --color-surface-muted: var(--color-surface-850);
510
+ --color-surface-secondary: var(--color-surface-850);
511
+
512
+ --color-border-subtle: var(--color-surface-700);
513
+ --color-border: var(--color-surface-600);
514
+ --color-border-hover: var(--color-surface-500);
515
+
516
+ --color-text: #e5e7eb;
517
+ --color-text-muted: #9ca3af;
518
+ --color-text-mute: var(--color-text-muted);
519
+ --color-text-secondary: var(--color-text-muted);
520
+ --color-text-on-primary: var(--color-primary-contrast);
521
+
522
+ --color-icon-primary: currentColor;
523
+ --color-icon-accent-theme: var(--color-primary-400);
524
+ --color-icon-accent: var(--color-icon-accent-theme);
525
+
526
+ --color-warning: var(--color-warn-400);
527
+ }
528
+
529
+ :root[data-theme="green-dark"] {
530
+ --color-primary: #21a038;
531
+ --color-primary-50: #eefbf3;
532
+ --color-primary-100: #d8f4df;
533
+ --color-primary-200: #b5e8c2;
534
+ --color-primary-300: #7dd691;
535
+ --color-primary-400: #49bf64;
536
+ --color-primary-500: #21a038;
537
+ --color-primary-600: #19872f;
538
+ --color-primary-700: #166d29;
539
+ --color-primary-800: #155724;
540
+ --color-primary-900: #12461e;
541
+ --color-primary-950: #06280e;
542
+ --color-primary-contrast: #04120b;
543
+
544
+ --color-primary-hover: var(--color-primary-300);
545
+ --color-primary-soft: color-mix(in srgb, var(--color-primary-500) 16%, transparent);
546
+ --color-primary-ring: rgba(125, 214, 145, 0.28);
547
+
548
+ --color-bg: #04120b;
549
+ --color-surface: #091a12;
550
+ --color-surface-muted: #0e2318;
551
+ --color-surface-secondary: #10281c;
552
+
553
+ --color-border-subtle: #1c4130;
554
+ --color-border: #275a41;
555
+ --color-border-hover: #36805b;
556
+
557
+ --color-text: #e7f5eb;
558
+ --color-text-muted: #8fada0;
559
+ --color-text-mute: var(--color-text-muted);
560
+ --color-text-secondary: var(--color-text-muted);
561
+ --color-text-on-primary: var(--color-primary-contrast);
562
+
563
+ --color-icon-primary: currentColor;
564
+ --color-icon-accent-theme: var(--color-primary-300);
565
+ --color-icon-accent: var(--color-icon-accent-theme);
566
+
567
+ --color-warning: var(--color-warn-400);
568
+ }
569
+
570
+ :root[data-sputnig-icon-color-mode="monochrome"] {
571
+ --color-icon-accent: var(--color-icon-primary);
572
+ }
573
+
574
+ :root[data-sputnig-icon-color-mode="duotone"] {
575
+ --color-icon-accent: var(--color-icon-accent-theme);
576
+ }
577
+
578
+ :root,
579
+ :root[data-theme="light"],
580
+ :root[data-theme="pink-light"],
581
+ :root[data-theme="green-light"] {
582
+ --s-menu-item-foreground: var(--color-surface-700);
583
+ --s-menu-item-secondary-foreground: var(--color-text-muted);
584
+ --s-menu-item-state-background: var(--color-primary-50);
585
+ --s-menu-item-state-foreground: var(--color-primary-700);
586
+ --s-menu-item-indicator-foreground: var(--color-primary-600);
587
+ --s-menu-item-disabled-foreground: var(--color-surface-400);
588
+
589
+ --s-cloud-chrome-foreground: var(--color-surface-700);
590
+ --s-cloud-chrome-title-foreground: var(--color-surface-600);
591
+ --s-cloud-chrome-description-foreground: var(--color-surface-500);
592
+
593
+ --s-progress-bar-track-surface: var(--color-surface-200);
594
+ --s-progress-bar-label-foreground: var(--color-surface-0);
595
+ --s-progress-bar-fill-primary: var(--color-primary-500);
596
+ --s-progress-bar-fill-success: var(--color-success-500);
597
+ --s-progress-bar-fill-info: var(--color-info-500);
598
+ --s-progress-bar-fill-warn: var(--color-warn-500);
599
+ --s-progress-bar-fill-danger: var(--color-danger-500);
600
+ --s-progress-bar-fill-neutral: var(--color-surface-400);
601
+ --s-progress-bar-indeterminate-neutral-fill: var(--color-surface-500);
602
+
603
+ --s-progress-indicator-foreground-neutral: var(--color-text-muted);
604
+ --s-progress-indicator-foreground-info: var(--color-info-600);
605
+ --s-progress-indicator-foreground-success: var(--color-success-600);
606
+ --s-progress-indicator-foreground-warn: var(--color-warn-600);
607
+ --s-progress-indicator-foreground-danger: var(--color-danger-600);
608
+
609
+ --s-graph-node-tone-neutral-fill: var(--color-surface-50);
610
+ --s-graph-node-tone-neutral-border: var(--color-surface-500);
611
+ --s-graph-node-tone-neutral-label: var(--color-surface-900);
612
+ --s-graph-node-tone-primary-fill: var(--color-primary-100);
613
+ --s-graph-node-tone-primary-border: var(--color-primary-600);
614
+ --s-graph-node-tone-primary-label: var(--color-primary-900);
615
+ --s-graph-node-tone-info-fill: var(--color-info-100);
616
+ --s-graph-node-tone-info-border: var(--color-info-600);
617
+ --s-graph-node-tone-info-label: var(--color-info-900);
618
+ --s-graph-node-tone-success-fill: var(--color-success-100);
619
+ --s-graph-node-tone-success-border: var(--color-success-600);
620
+ --s-graph-node-tone-success-label: var(--color-success-900);
621
+ --s-graph-node-tone-warning-fill: var(--color-warn-100);
622
+ --s-graph-node-tone-warning-border: var(--color-warn-600);
623
+ --s-graph-node-tone-warning-label: var(--color-warn-900);
624
+ --s-graph-node-tone-danger-fill: var(--color-danger-100);
625
+ --s-graph-node-tone-danger-border: var(--color-danger-600);
626
+ --s-graph-node-tone-danger-label: var(--color-danger-900);
627
+ --s-graph-node-tone-accent-fill: #f3e8ff;
628
+ --s-graph-node-tone-accent-border: #9333ea;
629
+ --s-graph-node-tone-accent-label: #581c87;
630
+ --s-graph-edge-tone-neutral: var(--color-surface-500);
631
+ --s-graph-edge-tone-primary: var(--color-primary-600);
632
+ --s-graph-edge-tone-info: var(--color-info-500);
633
+ --s-graph-edge-tone-success: var(--color-success-600);
634
+ --s-graph-edge-tone-warning: var(--color-warn-500);
635
+ --s-graph-edge-tone-danger: var(--color-danger-600);
636
+ --s-graph-edge-tone-accent: #9333ea;
637
+ --s-graph-surface-border: var(--color-border);
638
+ --s-graph-surface-background:
639
+ radial-gradient(circle at 18% 18%, rgb(148 163 184 / 18%), transparent 24%),
640
+ radial-gradient(circle at 80% 22%, rgb(59 130 246 / 12%), transparent 20%),
641
+ radial-gradient(circle at 72% 78%, rgb(20 184 166 / 10%), transparent 26%),
642
+ linear-gradient(160deg, var(--color-surface-50) 0%, var(--color-primary-50) 46%, var(--color-surface-50) 100%);
643
+ --s-graph-grid-background-image:
644
+ radial-gradient(circle, rgb(15 23 42 / 10%) 0 1px, transparent 1.4px),
645
+ radial-gradient(circle, rgb(37 99 235 / 12%) 0 1px, transparent 1.4px);
646
+ --s-graph-inventory-border: var(--color-border);
647
+ --s-graph-inventory-background: var(--color-surface);
648
+
649
+ --s-button-primary-accent: var(--color-primary-500);
650
+ --s-button-primary-foreground: var(--color-primary-700);
651
+ --s-button-primary-solid-background: var(--color-primary-600);
652
+ --s-button-primary-solid-background-hover: var(--color-primary-700);
653
+ --s-button-primary-solid-background-active: var(--color-primary-800);
654
+ --s-button-primary-solid-foreground: var(--color-primary-contrast);
655
+
656
+ --s-button-secondary-accent: var(--color-surface-500);
657
+ --s-button-secondary-foreground: var(--color-surface-800);
658
+ --s-button-secondary-solid-background: var(--color-surface-100);
659
+ --s-button-secondary-solid-background-hover: var(--color-surface-200);
660
+ --s-button-secondary-solid-background-active: var(--color-surface-300);
661
+ --s-button-secondary-solid-foreground: var(--color-surface-800);
662
+
663
+ --s-button-success-accent: var(--color-success-500);
664
+ --s-button-success-foreground: var(--color-success-800);
665
+ --s-button-success-solid-background: var(--color-success-700);
666
+ --s-button-success-solid-background-hover: var(--color-success-800);
667
+ --s-button-success-solid-background-active: var(--color-success-900);
668
+ --s-button-success-solid-foreground: #ffffff;
669
+
670
+ --s-button-info-accent: var(--color-info-500);
671
+ --s-button-info-foreground: var(--color-info-700);
672
+ --s-button-info-solid-background: var(--color-info-600);
673
+ --s-button-info-solid-background-hover: var(--color-info-700);
674
+ --s-button-info-solid-background-active: var(--color-info-800);
675
+ --s-button-info-solid-foreground: #ffffff;
676
+
677
+ --s-button-warn-accent: var(--color-warn-500);
678
+ --s-button-warn-foreground: var(--color-warn-800);
679
+ --s-button-warn-solid-background: var(--color-warn-700);
680
+ --s-button-warn-solid-background-hover: var(--color-warn-800);
681
+ --s-button-warn-solid-background-active: var(--color-warn-900);
682
+ --s-button-warn-solid-foreground: #ffffff;
683
+
684
+ --s-button-danger-accent: var(--color-danger-500);
685
+ --s-button-danger-foreground: var(--color-danger-700);
686
+ --s-button-danger-solid-background: var(--color-danger-600);
687
+ --s-button-danger-solid-background-hover: var(--color-danger-700);
688
+ --s-button-danger-solid-background-active: var(--color-danger-800);
689
+ --s-button-danger-solid-foreground: #ffffff;
690
+
691
+ --s-button-contrast-accent: var(--color-surface-700);
692
+ --s-button-contrast-foreground: var(--color-surface-800);
693
+ --s-button-contrast-solid-background: var(--color-surface-800);
694
+ --s-button-contrast-solid-background-hover: var(--color-surface-900);
695
+ --s-button-contrast-solid-background-active: var(--color-surface-950);
696
+ --s-button-contrast-solid-foreground: #ffffff;
697
+
698
+ --s-button-disabled-background: var(--color-surface-200);
699
+ --s-button-disabled-foreground: var(--color-surface-600);
700
+ }
701
+
702
+ :root[data-theme="pink-light"] {
703
+ --s-button-primary-foreground: var(--color-primary-800);
704
+ --s-button-primary-solid-background: var(--color-primary-700);
705
+ --s-button-primary-solid-background-hover: var(--color-primary-800);
706
+ --s-button-primary-solid-background-active: var(--color-primary-900);
707
+ }
708
+
709
+ :root[data-theme="dark"],
710
+ :root[data-theme="pink-dark"],
711
+ :root[data-theme="green-dark"],
712
+ .dark {
713
+ --s-field-disabled-foreground: var(--color-surface-300);
714
+
715
+ --s-menu-item-foreground: var(--color-surface-200);
716
+ --s-menu-item-secondary-foreground: var(--color-text-muted);
717
+ --s-menu-item-state-background: color-mix(in srgb, var(--color-primary-500) 14%, transparent);
718
+ --s-menu-item-state-foreground: var(--color-primary-300);
719
+ --s-menu-item-indicator-foreground: var(--color-primary-300);
720
+ --s-menu-item-disabled-foreground: var(--color-surface-600);
721
+
722
+ --s-json-tree-key-foreground: var(--color-warn-300);
723
+ --s-wizard-steps-surface: color-mix(in srgb, var(--color-surface) 74%, transparent);
724
+ --s-cloud-chrome-foreground: var(--color-surface-200);
725
+ --s-cloud-chrome-title-foreground: var(--color-surface-300);
726
+ --s-cloud-chrome-description-foreground: var(--color-surface-400);
727
+
728
+ --s-progress-bar-track-surface: var(--color-surface-700);
729
+ --s-progress-bar-label-foreground: var(--color-surface-0);
730
+ --s-progress-bar-fill-primary: var(--color-primary-500);
731
+ --s-progress-bar-fill-success: var(--color-success-500);
732
+ --s-progress-bar-fill-info: var(--color-info-500);
733
+ --s-progress-bar-fill-warn: var(--color-warn-500);
734
+ --s-progress-bar-fill-danger: var(--color-danger-500);
735
+ --s-progress-bar-fill-neutral: var(--color-surface-500);
736
+ --s-progress-bar-indeterminate-neutral-fill: var(--color-surface-500);
737
+
738
+ --s-progress-indicator-foreground-neutral: var(--color-text-muted);
739
+ --s-progress-indicator-foreground-info: var(--color-info-300);
740
+ --s-progress-indicator-foreground-success: var(--color-success-300);
741
+ --s-progress-indicator-foreground-warn: var(--color-warn-300);
742
+ --s-progress-indicator-foreground-danger: var(--color-danger-300);
743
+
744
+ --s-graph-node-tone-neutral-fill: var(--color-surface-700);
745
+ --s-graph-node-tone-neutral-border: var(--color-surface-300);
746
+ --s-graph-node-tone-neutral-label: var(--color-surface-50);
747
+ --s-graph-node-tone-primary-fill: var(--color-primary-700);
748
+ --s-graph-node-tone-primary-border: var(--color-primary-300);
749
+ --s-graph-node-tone-primary-label: var(--color-surface-50);
750
+ --s-graph-node-tone-info-fill: var(--color-info-700);
751
+ --s-graph-node-tone-info-border: var(--color-info-300);
752
+ --s-graph-node-tone-info-label: var(--color-surface-50);
753
+ --s-graph-node-tone-success-fill: var(--color-success-700);
754
+ --s-graph-node-tone-success-border: var(--color-success-300);
755
+ --s-graph-node-tone-success-label: var(--color-surface-50);
756
+ --s-graph-node-tone-warning-fill: var(--color-warn-700);
757
+ --s-graph-node-tone-warning-border: var(--color-warn-300);
758
+ --s-graph-node-tone-warning-label: var(--color-surface-50);
759
+ --s-graph-node-tone-danger-fill: var(--color-danger-700);
760
+ --s-graph-node-tone-danger-border: var(--color-danger-300);
761
+ --s-graph-node-tone-danger-label: var(--color-surface-50);
762
+ --s-graph-node-tone-accent-fill: #6b21a8;
763
+ --s-graph-node-tone-accent-border: #d8b4fe;
764
+ --s-graph-node-tone-accent-label: #faf5ff;
765
+ --s-graph-edge-tone-neutral: var(--color-surface-300);
766
+ --s-graph-edge-tone-primary: var(--color-primary-300);
767
+ --s-graph-edge-tone-info: var(--color-info-300);
768
+ --s-graph-edge-tone-success: var(--color-success-300);
769
+ --s-graph-edge-tone-warning: var(--color-warn-300);
770
+ --s-graph-edge-tone-danger: var(--color-danger-300);
771
+ --s-graph-edge-tone-accent: #d8b4fe;
772
+ --s-graph-surface-border: var(--color-border);
773
+ --s-graph-surface-background:
774
+ radial-gradient(circle at 18% 18%, rgb(129 146 180 / 18%), transparent 24%),
775
+ radial-gradient(circle at 80% 22%, rgb(141 162 251 / 20%), transparent 20%),
776
+ radial-gradient(circle at 72% 78%, rgb(56 189 248 / 18%), transparent 26%),
777
+ linear-gradient(160deg, var(--color-surface-950) 0%, var(--color-surface) 46%, var(--color-surface-muted) 100%);
778
+ --s-graph-grid-background-image:
779
+ radial-gradient(circle, rgb(255 255 255 / 16%) 0 1px, transparent 1.4px),
780
+ radial-gradient(circle, rgb(141 162 251 / 14%) 0 1px, transparent 1.4px);
781
+ --s-graph-inventory-border: var(--color-border);
782
+ --s-graph-inventory-background: var(--color-surface);
783
+
784
+ --s-selection-invalid-outline-color: var(--color-danger-400);
785
+ --s-button-primary-accent: var(--color-primary-400);
786
+ --s-button-primary-foreground: var(--color-primary-300);
787
+ --s-button-primary-solid-background: var(--color-primary-400);
788
+ --s-button-primary-solid-background-hover: var(--color-primary-300);
789
+ --s-button-primary-solid-background-active: var(--color-primary-200);
790
+ --s-button-primary-solid-foreground: var(--color-text-on-primary);
791
+
792
+ --s-button-secondary-accent: var(--color-surface-400);
793
+ --s-button-secondary-foreground: var(--color-surface-200);
794
+ --s-button-secondary-solid-background: var(--color-surface-700);
795
+ --s-button-secondary-solid-background-hover: var(--color-surface-600);
796
+ --s-button-secondary-solid-background-active: var(--color-surface-500);
797
+ --s-button-secondary-solid-foreground: var(--color-surface-0);
798
+
799
+ --s-button-success-accent: var(--color-success-400);
800
+ --s-button-success-foreground: var(--color-success-300);
801
+ --s-button-success-solid-background: var(--color-success-400);
802
+ --s-button-success-solid-background-hover: var(--color-success-300);
803
+ --s-button-success-solid-background-active: var(--color-success-200);
804
+ --s-button-success-solid-foreground: var(--color-surface-950);
805
+
806
+ --s-button-info-accent: var(--color-info-400);
807
+ --s-button-info-foreground: var(--color-info-300);
808
+ --s-button-info-solid-background: var(--color-info-400);
809
+ --s-button-info-solid-background-hover: var(--color-info-300);
810
+ --s-button-info-solid-background-active: var(--color-info-200);
811
+ --s-button-info-solid-foreground: var(--color-surface-950);
812
+
813
+ --s-button-warn-accent: var(--color-warn-400);
814
+ --s-button-warn-foreground: var(--color-warn-300);
815
+ --s-button-warn-solid-background: var(--color-warn-300);
816
+ --s-button-warn-solid-background-hover: var(--color-warn-200);
817
+ --s-button-warn-solid-background-active: var(--color-warn-100);
818
+ --s-button-warn-solid-foreground: var(--color-surface-950);
819
+
820
+ --s-button-danger-accent: var(--color-danger-400);
821
+ --s-button-danger-foreground: var(--color-danger-300);
822
+ --s-button-danger-solid-background: var(--color-danger-400);
823
+ --s-button-danger-solid-background-hover: var(--color-danger-300);
824
+ --s-button-danger-solid-background-active: var(--color-danger-200);
825
+ --s-button-danger-solid-foreground: var(--color-surface-950);
826
+
827
+ --s-button-contrast-accent: var(--color-surface-300);
828
+ --s-button-contrast-foreground: var(--color-surface-200);
829
+ --s-button-contrast-solid-background: var(--color-surface-100);
830
+ --s-button-contrast-solid-background-hover: var(--color-surface-200);
831
+ --s-button-contrast-solid-background-active: var(--color-surface-300);
832
+ --s-button-contrast-solid-foreground: var(--color-surface-900);
833
+
834
+ --s-button-disabled-background: var(--color-surface-800);
835
+ --s-button-disabled-foreground: var(--color-surface-300);
836
+ }