@skdx/docs-kit 0.35.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 (505) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +22 -0
  3. package/dist/component-aliases.json +12 -0
  4. package/dist/data/THIRD-PARTY-NOTICES.md +21 -0
  5. package/dist/data/angular-inputs.json +1 -0
  6. package/dist/data/api-manifest.json +1 -0
  7. package/dist/data/exports-by-framework.json +1 -0
  8. package/dist/data/honoured-slots.json +1 -0
  9. package/dist/data/styling-hooks-manifest.json +10331 -0
  10. package/dist/frameworks.mjs +64 -0
  11. package/dist/shared/contracts/accordion.d.ts +3 -0
  12. package/dist/shared/contracts/accordion.js +1 -0
  13. package/dist/shared/contracts/alert.d.ts +3 -0
  14. package/dist/shared/contracts/alert.js +1 -0
  15. package/dist/shared/contracts/angle-slider.d.ts +3 -0
  16. package/dist/shared/contracts/angle-slider.js +1 -0
  17. package/dist/shared/contracts/aspect-ratio.d.ts +3 -0
  18. package/dist/shared/contracts/aspect-ratio.js +1 -0
  19. package/dist/shared/contracts/autocomplete.d.ts +3 -0
  20. package/dist/shared/contracts/autocomplete.js +1 -0
  21. package/dist/shared/contracts/avatar.d.ts +3 -0
  22. package/dist/shared/contracts/avatar.js +1 -0
  23. package/dist/shared/contracts/badge.d.ts +3 -0
  24. package/dist/shared/contracts/badge.js +1 -0
  25. package/dist/shared/contracts/box.d.ts +3 -0
  26. package/dist/shared/contracts/box.js +1 -0
  27. package/dist/shared/contracts/breadcrumb.d.ts +3 -0
  28. package/dist/shared/contracts/breadcrumb.js +1 -0
  29. package/dist/shared/contracts/button.d.ts +3 -0
  30. package/dist/shared/contracts/button.js +1 -0
  31. package/dist/shared/contracts/calendar.d.ts +5 -0
  32. package/dist/shared/contracts/calendar.js +1 -0
  33. package/dist/shared/contracts/card.d.ts +3 -0
  34. package/dist/shared/contracts/card.js +1 -0
  35. package/dist/shared/contracts/carousel.d.ts +3 -0
  36. package/dist/shared/contracts/carousel.js +1 -0
  37. package/dist/shared/contracts/change-reason.d.ts +29 -0
  38. package/dist/shared/contracts/change-reason.js +1 -0
  39. package/dist/shared/contracts/chat-composer.d.ts +3 -0
  40. package/dist/shared/contracts/chat-composer.js +1 -0
  41. package/dist/shared/contracts/chat-message.d.ts +3 -0
  42. package/dist/shared/contracts/chat-message.js +1 -0
  43. package/dist/shared/contracts/checkbox-card.d.ts +3 -0
  44. package/dist/shared/contracts/checkbox-card.js +1 -0
  45. package/dist/shared/contracts/checkbox-group.d.ts +3 -0
  46. package/dist/shared/contracts/checkbox-group.js +1 -0
  47. package/dist/shared/contracts/checkbox.d.ts +3 -0
  48. package/dist/shared/contracts/checkbox.js +1 -0
  49. package/dist/shared/contracts/clipboard.d.ts +3 -0
  50. package/dist/shared/contracts/clipboard.js +1 -0
  51. package/dist/shared/contracts/collapsible.d.ts +3 -0
  52. package/dist/shared/contracts/collapsible.js +1 -0
  53. package/dist/shared/contracts/color-picker.d.ts +3 -0
  54. package/dist/shared/contracts/color-picker.js +1 -0
  55. package/dist/shared/contracts/combobox.d.ts +3 -0
  56. package/dist/shared/contracts/combobox.js +1 -0
  57. package/dist/shared/contracts/command.d.ts +3 -0
  58. package/dist/shared/contracts/command.js +1 -0
  59. package/dist/shared/contracts/comment-thread.d.ts +3 -0
  60. package/dist/shared/contracts/comment-thread.js +1 -0
  61. package/dist/shared/contracts/comment.d.ts +3 -0
  62. package/dist/shared/contracts/comment.js +1 -0
  63. package/dist/shared/contracts/confirm-dialog.d.ts +3 -0
  64. package/dist/shared/contracts/confirm-dialog.js +1 -0
  65. package/dist/shared/contracts/conversation-list.d.ts +3 -0
  66. package/dist/shared/contracts/conversation-list.js +1 -0
  67. package/dist/shared/contracts/dashboard-layout.d.ts +3 -0
  68. package/dist/shared/contracts/dashboard-layout.js +1 -0
  69. package/dist/shared/contracts/date-field.d.ts +3 -0
  70. package/dist/shared/contracts/date-field.js +1 -0
  71. package/dist/shared/contracts/date-picker.d.ts +3 -0
  72. package/dist/shared/contracts/date-picker.js +1 -0
  73. package/dist/shared/contracts/date-value.d.ts +11 -0
  74. package/dist/shared/contracts/date-value.js +1 -0
  75. package/dist/shared/contracts/dialog.d.ts +3 -0
  76. package/dist/shared/contracts/dialog.js +1 -0
  77. package/dist/shared/contracts/divider.d.ts +5 -0
  78. package/dist/shared/contracts/divider.js +1 -0
  79. package/dist/shared/contracts/drawer.d.ts +3 -0
  80. package/dist/shared/contracts/drawer.js +1 -0
  81. package/dist/shared/contracts/editable.d.ts +3 -0
  82. package/dist/shared/contracts/editable.js +1 -0
  83. package/dist/shared/contracts/empty-state.d.ts +3 -0
  84. package/dist/shared/contracts/empty-state.js +1 -0
  85. package/dist/shared/contracts/field.d.ts +3 -0
  86. package/dist/shared/contracts/field.js +1 -0
  87. package/dist/shared/contracts/file-upload.d.ts +3 -0
  88. package/dist/shared/contracts/file-upload.js +1 -0
  89. package/dist/shared/contracts/filter-bar.d.ts +3 -0
  90. package/dist/shared/contracts/filter-bar.js +1 -0
  91. package/dist/shared/contracts/floating-panel.d.ts +3 -0
  92. package/dist/shared/contracts/floating-panel.js +1 -0
  93. package/dist/shared/contracts/forgot-password-page.d.ts +3 -0
  94. package/dist/shared/contracts/forgot-password-page.js +1 -0
  95. package/dist/shared/contracts/form-property.d.ts +3 -0
  96. package/dist/shared/contracts/form-property.js +1 -0
  97. package/dist/shared/contracts/form-section.d.ts +3 -0
  98. package/dist/shared/contracts/form-section.js +1 -0
  99. package/dist/shared/contracts/form-validity.d.ts +7 -0
  100. package/dist/shared/contracts/form-validity.js +1 -0
  101. package/dist/shared/contracts/form.d.ts +3 -0
  102. package/dist/shared/contracts/form.js +1 -0
  103. package/dist/shared/contracts/heading.d.ts +3 -0
  104. package/dist/shared/contracts/heading.js +1 -0
  105. package/dist/shared/contracts/image.d.ts +3 -0
  106. package/dist/shared/contracts/image.js +1 -0
  107. package/dist/shared/contracts/index.d.ts +8 -0
  108. package/dist/shared/contracts/index.js +1 -0
  109. package/dist/shared/contracts/kbd.d.ts +3 -0
  110. package/dist/shared/contracts/kbd.js +1 -0
  111. package/dist/shared/contracts/label.d.ts +3 -0
  112. package/dist/shared/contracts/label.js +1 -0
  113. package/dist/shared/contracts/link.d.ts +3 -0
  114. package/dist/shared/contracts/link.js +1 -0
  115. package/dist/shared/contracts/list.d.ts +3 -0
  116. package/dist/shared/contracts/list.js +1 -0
  117. package/dist/shared/contracts/listbox.d.ts +3 -0
  118. package/dist/shared/contracts/listbox.js +1 -0
  119. package/dist/shared/contracts/loading-overlay.d.ts +3 -0
  120. package/dist/shared/contracts/loading-overlay.js +1 -0
  121. package/dist/shared/contracts/member-id.d.ts +18 -0
  122. package/dist/shared/contracts/member-id.js +1 -0
  123. package/dist/shared/contracts/mentions.d.ts +3 -0
  124. package/dist/shared/contracts/mentions.js +1 -0
  125. package/dist/shared/contracts/menu.d.ts +3 -0
  126. package/dist/shared/contracts/menu.js +1 -0
  127. package/dist/shared/contracts/menubar.d.ts +3 -0
  128. package/dist/shared/contracts/menubar.js +1 -0
  129. package/dist/shared/contracts/navigation-menu.d.ts +6 -0
  130. package/dist/shared/contracts/navigation-menu.js +1 -0
  131. package/dist/shared/contracts/notification-center.d.ts +3 -0
  132. package/dist/shared/contracts/notification-center.js +1 -0
  133. package/dist/shared/contracts/number-field.d.ts +5 -0
  134. package/dist/shared/contracts/number-field.js +1 -0
  135. package/dist/shared/contracts/onboarding-checklist.d.ts +3 -0
  136. package/dist/shared/contracts/onboarding-checklist.js +1 -0
  137. package/dist/shared/contracts/overlay-parts.d.ts +73 -0
  138. package/dist/shared/contracts/overlay-parts.js +1 -0
  139. package/dist/shared/contracts/page-container.d.ts +3 -0
  140. package/dist/shared/contracts/page-container.js +1 -0
  141. package/dist/shared/contracts/pagination.d.ts +5 -0
  142. package/dist/shared/contracts/pagination.js +1 -0
  143. package/dist/shared/contracts/password-input.d.ts +6 -0
  144. package/dist/shared/contracts/password-input.js +1 -0
  145. package/dist/shared/contracts/pin-input.d.ts +6 -0
  146. package/dist/shared/contracts/pin-input.js +1 -0
  147. package/dist/shared/contracts/polymorphic.d.ts +6 -0
  148. package/dist/shared/contracts/polymorphic.js +1 -0
  149. package/dist/shared/contracts/popover.d.ts +7 -0
  150. package/dist/shared/contracts/popover.js +1 -0
  151. package/dist/shared/contracts/progress.d.ts +6 -0
  152. package/dist/shared/contracts/progress.js +1 -0
  153. package/dist/shared/contracts/qr-code.d.ts +5 -0
  154. package/dist/shared/contracts/qr-code.js +1 -0
  155. package/dist/shared/contracts/radio-card.d.ts +6 -0
  156. package/dist/shared/contracts/radio-card.js +1 -0
  157. package/dist/shared/contracts/radio-group.d.ts +6 -0
  158. package/dist/shared/contracts/radio-group.js +1 -0
  159. package/dist/shared/contracts/rating.d.ts +6 -0
  160. package/dist/shared/contracts/rating.js +1 -0
  161. package/dist/shared/contracts/reset-password-page.d.ts +3 -0
  162. package/dist/shared/contracts/reset-password-page.js +1 -0
  163. package/dist/shared/contracts/resizable.d.ts +7 -0
  164. package/dist/shared/contracts/resizable.js +1 -0
  165. package/dist/shared/contracts/rules.d.ts +11 -0
  166. package/dist/shared/contracts/rules.js +1 -0
  167. package/dist/shared/contracts/scroll-area.d.ts +6 -0
  168. package/dist/shared/contracts/scroll-area.js +1 -0
  169. package/dist/shared/contracts/select.d.ts +5 -0
  170. package/dist/shared/contracts/select.js +1 -0
  171. package/dist/shared/contracts/selection-value.d.ts +20 -0
  172. package/dist/shared/contracts/selection-value.js +1 -0
  173. package/dist/shared/contracts/sign-in-page.d.ts +3 -0
  174. package/dist/shared/contracts/sign-in-page.js +1 -0
  175. package/dist/shared/contracts/sign-up-page.d.ts +3 -0
  176. package/dist/shared/contracts/sign-up-page.js +1 -0
  177. package/dist/shared/contracts/skeleton.d.ts +5 -0
  178. package/dist/shared/contracts/skeleton.js +1 -0
  179. package/dist/shared/contracts/slider.d.ts +7 -0
  180. package/dist/shared/contracts/slider.js +1 -0
  181. package/dist/shared/contracts/speed-dial.d.ts +6 -0
  182. package/dist/shared/contracts/speed-dial.js +1 -0
  183. package/dist/shared/contracts/spinner.d.ts +6 -0
  184. package/dist/shared/contracts/spinner.js +1 -0
  185. package/dist/shared/contracts/split-button.d.ts +6 -0
  186. package/dist/shared/contracts/split-button.js +1 -0
  187. package/dist/shared/contracts/stat-card.d.ts +3 -0
  188. package/dist/shared/contracts/stat-card.js +1 -0
  189. package/dist/shared/contracts/stepper.d.ts +6 -0
  190. package/dist/shared/contracts/stepper.js +1 -0
  191. package/dist/shared/contracts/styling-hooks.d.ts +8 -0
  192. package/dist/shared/contracts/styling-hooks.js +1 -0
  193. package/dist/shared/contracts/switch.d.ts +6 -0
  194. package/dist/shared/contracts/switch.js +1 -0
  195. package/dist/shared/contracts/table.d.ts +7 -0
  196. package/dist/shared/contracts/table.js +1 -0
  197. package/dist/shared/contracts/tabs.d.ts +5 -0
  198. package/dist/shared/contracts/tabs.js +1 -0
  199. package/dist/shared/contracts/tag-group.d.ts +7 -0
  200. package/dist/shared/contracts/tag-group.js +1 -0
  201. package/dist/shared/contracts/tags-input.d.ts +8 -0
  202. package/dist/shared/contracts/tags-input.js +1 -0
  203. package/dist/shared/contracts/text-field.d.ts +6 -0
  204. package/dist/shared/contracts/text-field.js +1 -0
  205. package/dist/shared/contracts/text.d.ts +6 -0
  206. package/dist/shared/contracts/text.js +1 -0
  207. package/dist/shared/contracts/textarea.d.ts +5 -0
  208. package/dist/shared/contracts/textarea.js +1 -0
  209. package/dist/shared/contracts/time-field.d.ts +5 -0
  210. package/dist/shared/contracts/time-field.js +1 -0
  211. package/dist/shared/contracts/time.d.ts +6 -0
  212. package/dist/shared/contracts/time.js +1 -0
  213. package/dist/shared/contracts/timeline.d.ts +5 -0
  214. package/dist/shared/contracts/timeline.js +1 -0
  215. package/dist/shared/contracts/toast.d.ts +6 -0
  216. package/dist/shared/contracts/toast.js +1 -0
  217. package/dist/shared/contracts/toggle-group.d.ts +6 -0
  218. package/dist/shared/contracts/toggle-group.js +1 -0
  219. package/dist/shared/contracts/toggle.d.ts +5 -0
  220. package/dist/shared/contracts/toggle.js +1 -0
  221. package/dist/shared/contracts/toolbar.d.ts +3 -0
  222. package/dist/shared/contracts/toolbar.js +1 -0
  223. package/dist/shared/contracts/tour.d.ts +5 -0
  224. package/dist/shared/contracts/tour.js +1 -0
  225. package/dist/shared/contracts/transfer.d.ts +6 -0
  226. package/dist/shared/contracts/transfer.js +1 -0
  227. package/dist/shared/contracts/tree-select.d.ts +6 -0
  228. package/dist/shared/contracts/tree-select.js +1 -0
  229. package/dist/shared/contracts/tree.d.ts +6 -0
  230. package/dist/shared/contracts/tree.js +1 -0
  231. package/dist/shared/contracts/types.d.ts +230 -0
  232. package/dist/shared/contracts/types.js +1 -0
  233. package/dist/shared/contracts/usage-card.d.ts +3 -0
  234. package/dist/shared/contracts/usage-card.js +1 -0
  235. package/dist/shared/contracts/user-menu.d.ts +3 -0
  236. package/dist/shared/contracts/user-menu.js +1 -0
  237. package/dist/shared/contracts/verification-page.d.ts +3 -0
  238. package/dist/shared/contracts/verification-page.js +1 -0
  239. package/dist/shared/contracts/workspace-switcher.d.ts +3 -0
  240. package/dist/shared/contracts/workspace-switcher.js +1 -0
  241. package/dist/shared/core/announcer.d.ts +17 -0
  242. package/dist/shared/core/announcer.js +1 -0
  243. package/dist/shared/core/appearance.d.ts +14 -0
  244. package/dist/shared/core/appearance.js +1 -0
  245. package/dist/shared/core/arrow-keys.d.ts +7 -0
  246. package/dist/shared/core/arrow-keys.js +1 -0
  247. package/dist/shared/core/calendar-locale.d.ts +35 -0
  248. package/dist/shared/core/calendar-locale.js +1 -0
  249. package/dist/shared/core/color.d.ts +80 -0
  250. package/dist/shared/core/color.js +1 -0
  251. package/dist/shared/core/controllable.d.ts +42 -0
  252. package/dist/shared/core/controllable.js +1 -0
  253. package/dist/shared/core/csv.d.ts +43 -0
  254. package/dist/shared/core/csv.js +2 -0
  255. package/dist/shared/core/date-segments.d.ts +223 -0
  256. package/dist/shared/core/date-segments.js +1 -0
  257. package/dist/shared/core/date-value.d.ts +57 -0
  258. package/dist/shared/core/date-value.js +1 -0
  259. package/dist/shared/core/dev-mode.d.ts +12 -0
  260. package/dist/shared/core/dev-mode.js +1 -0
  261. package/dist/shared/core/dialogs.d.ts +96 -0
  262. package/dist/shared/core/dialogs.js +1 -0
  263. package/dist/shared/core/dismissal.d.ts +56 -0
  264. package/dist/shared/core/dismissal.js +1 -0
  265. package/dist/shared/core/field-core.d.ts +250 -0
  266. package/dist/shared/core/field-core.js +1 -0
  267. package/dist/shared/core/focus-targets.d.ts +77 -0
  268. package/dist/shared/core/focus-targets.js +1 -0
  269. package/dist/shared/core/format-file-size.d.ts +9 -0
  270. package/dist/shared/core/format-file-size.js +1 -0
  271. package/dist/shared/core/glyph-data.d.ts +13 -0
  272. package/dist/shared/core/glyph-data.js +1 -0
  273. package/dist/shared/core/measure-auto-resize.d.ts +5 -0
  274. package/dist/shared/core/measure-auto-resize.js +1 -0
  275. package/dist/shared/core/media-query.d.ts +7 -0
  276. package/dist/shared/core/media-query.js +1 -0
  277. package/dist/shared/core/mentions.d.ts +116 -0
  278. package/dist/shared/core/mentions.js +2 -0
  279. package/dist/shared/core/pin-chars.d.ts +13 -0
  280. package/dist/shared/core/pin-chars.js +1 -0
  281. package/dist/shared/core/placement.d.ts +102 -0
  282. package/dist/shared/core/placement.js +1 -0
  283. package/dist/shared/core/qr-encoder.d.ts +33 -0
  284. package/dist/shared/core/qr-encoder.js +1 -0
  285. package/dist/shared/core/roving-tab-stop.d.ts +37 -0
  286. package/dist/shared/core/roving-tab-stop.js +1 -0
  287. package/dist/shared/core/select-keyboard.d.ts +80 -0
  288. package/dist/shared/core/select-keyboard.js +1 -0
  289. package/dist/shared/core/selection.d.ts +58 -0
  290. package/dist/shared/core/selection.js +1 -0
  291. package/dist/shared/core/tabbable.d.ts +8 -0
  292. package/dist/shared/core/tabbable.js +1 -0
  293. package/dist/shared/core/timer.d.ts +82 -0
  294. package/dist/shared/core/timer.js +1 -0
  295. package/dist/shared/core/tree-columns.d.ts +48 -0
  296. package/dist/shared/core/tree-columns.js +1 -0
  297. package/dist/shared/core/typeahead.d.ts +27 -0
  298. package/dist/shared/core/typeahead.js +1 -0
  299. package/dist/shared/index.d.ts +113 -0
  300. package/dist/shared/index.js +1 -0
  301. package/dist/skins-src/_foundation-fallback.css +124 -0
  302. package/dist/skins-src/base.css +328 -0
  303. package/dist/skins-src/components/_actuator.css +203 -0
  304. package/dist/skins-src/components/_arrow.css +20 -0
  305. package/dist/skins-src/components/_card-control.css +27 -0
  306. package/dist/skins-src/components/_collection.css +281 -0
  307. package/dist/skins-src/components/_hit-target.css +28 -0
  308. package/dist/skins-src/components/_overlay.css +214 -0
  309. package/dist/skins-src/components/_status.css +38 -0
  310. package/dist/skins-src/components/_trigger.css +85 -0
  311. package/dist/skins-src/components/accordion.css +85 -0
  312. package/dist/skins-src/components/alert.css +118 -0
  313. package/dist/skins-src/components/angle-slider.css +110 -0
  314. package/dist/skins-src/components/aspect-ratio.css +26 -0
  315. package/dist/skins-src/components/autocomplete.css +112 -0
  316. package/dist/skins-src/components/avatar.css +87 -0
  317. package/dist/skins-src/components/badge.css +164 -0
  318. package/dist/skins-src/components/box.css +9 -0
  319. package/dist/skins-src/components/breadcrumb.css +78 -0
  320. package/dist/skins-src/components/button.css +304 -0
  321. package/dist/skins-src/components/calendar.css +269 -0
  322. package/dist/skins-src/components/card.css +116 -0
  323. package/dist/skins-src/components/carousel.css +192 -0
  324. package/dist/skins-src/components/chat-composer.css +89 -0
  325. package/dist/skins-src/components/chat-message.css +98 -0
  326. package/dist/skins-src/components/checkbox-card.css +153 -0
  327. package/dist/skins-src/components/checkbox-group.css +72 -0
  328. package/dist/skins-src/components/checkbox.css +141 -0
  329. package/dist/skins-src/components/clipboard.css +126 -0
  330. package/dist/skins-src/components/collapsible.css +64 -0
  331. package/dist/skins-src/components/color-picker.css +304 -0
  332. package/dist/skins-src/components/combobox.css +111 -0
  333. package/dist/skins-src/components/command.css +73 -0
  334. package/dist/skins-src/components/comment-thread.css +56 -0
  335. package/dist/skins-src/components/comment.css +59 -0
  336. package/dist/skins-src/components/confirm-dialog.css +43 -0
  337. package/dist/skins-src/components/conversation-list.css +142 -0
  338. package/dist/skins-src/components/dashboard-layout.css +106 -0
  339. package/dist/skins-src/components/date-field.css +95 -0
  340. package/dist/skins-src/components/date-picker.css +79 -0
  341. package/dist/skins-src/components/dialog.css +161 -0
  342. package/dist/skins-src/components/divider.css +64 -0
  343. package/dist/skins-src/components/drawer.css +166 -0
  344. package/dist/skins-src/components/editable.css +121 -0
  345. package/dist/skins-src/components/empty-state.css +85 -0
  346. package/dist/skins-src/components/field.css +104 -0
  347. package/dist/skins-src/components/file-upload.css +164 -0
  348. package/dist/skins-src/components/filter-bar.css +48 -0
  349. package/dist/skins-src/components/floating-panel.css +168 -0
  350. package/dist/skins-src/components/forgot-password-page.css +45 -0
  351. package/dist/skins-src/components/form-section.css +75 -0
  352. package/dist/skins-src/components/form.css +115 -0
  353. package/dist/skins-src/components/heading.css +38 -0
  354. package/dist/skins-src/components/image.css +43 -0
  355. package/dist/skins-src/components/kbd.css +76 -0
  356. package/dist/skins-src/components/label.css +45 -0
  357. package/dist/skins-src/components/link.css +72 -0
  358. package/dist/skins-src/components/list.css +104 -0
  359. package/dist/skins-src/components/listbox.css +90 -0
  360. package/dist/skins-src/components/loading-overlay.css +89 -0
  361. package/dist/skins-src/components/mentions.css +79 -0
  362. package/dist/skins-src/components/menu.css +102 -0
  363. package/dist/skins-src/components/menubar.css +130 -0
  364. package/dist/skins-src/components/navigation-menu.css +145 -0
  365. package/dist/skins-src/components/notification-center.css +139 -0
  366. package/dist/skins-src/components/number-field.css +95 -0
  367. package/dist/skins-src/components/onboarding-checklist.css +156 -0
  368. package/dist/skins-src/components/page-container.css +29 -0
  369. package/dist/skins-src/components/pagination.css +147 -0
  370. package/dist/skins-src/components/password-input.css +116 -0
  371. package/dist/skins-src/components/pin-input.css +115 -0
  372. package/dist/skins-src/components/popover.css +108 -0
  373. package/dist/skins-src/components/progress.css +207 -0
  374. package/dist/skins-src/components/qr-code.css +62 -0
  375. package/dist/skins-src/components/radio-card.css +158 -0
  376. package/dist/skins-src/components/radio-group.css +148 -0
  377. package/dist/skins-src/components/rating.css +150 -0
  378. package/dist/skins-src/components/reset-password-page.css +51 -0
  379. package/dist/skins-src/components/resizable.css +131 -0
  380. package/dist/skins-src/components/scroll-area.css +101 -0
  381. package/dist/skins-src/components/select.css +239 -0
  382. package/dist/skins-src/components/sign-in-page.css +47 -0
  383. package/dist/skins-src/components/sign-up-page.css +55 -0
  384. package/dist/skins-src/components/skeleton.css +55 -0
  385. package/dist/skins-src/components/skip-link.css +51 -0
  386. package/dist/skins-src/components/slider.css +164 -0
  387. package/dist/skins-src/components/speed-dial.css +162 -0
  388. package/dist/skins-src/components/spinner.css +59 -0
  389. package/dist/skins-src/components/split-button.css +167 -0
  390. package/dist/skins-src/components/stat-card.css +117 -0
  391. package/dist/skins-src/components/stepper.css +153 -0
  392. package/dist/skins-src/components/switch.css +155 -0
  393. package/dist/skins-src/components/table.css +336 -0
  394. package/dist/skins-src/components/tabs.css +116 -0
  395. package/dist/skins-src/components/tag-group.css +72 -0
  396. package/dist/skins-src/components/tags-input.css +176 -0
  397. package/dist/skins-src/components/text-field.css +182 -0
  398. package/dist/skins-src/components/text.css +83 -0
  399. package/dist/skins-src/components/textarea.css +118 -0
  400. package/dist/skins-src/components/time-field.css +43 -0
  401. package/dist/skins-src/components/time.css +13 -0
  402. package/dist/skins-src/components/timeline.css +206 -0
  403. package/dist/skins-src/components/toast.css +133 -0
  404. package/dist/skins-src/components/toggle-group.css +185 -0
  405. package/dist/skins-src/components/toggle.css +89 -0
  406. package/dist/skins-src/components/toolbar.css +84 -0
  407. package/dist/skins-src/components/tour.css +67 -0
  408. package/dist/skins-src/components/transfer.css +112 -0
  409. package/dist/skins-src/components/tree-select.css +124 -0
  410. package/dist/skins-src/components/tree.css +110 -0
  411. package/dist/skins-src/components/usage-card.css +129 -0
  412. package/dist/skins-src/components/user-menu.css +83 -0
  413. package/dist/skins-src/components/verification-page.css +64 -0
  414. package/dist/skins-src/components/workspace-switcher.css +133 -0
  415. package/dist/skins-src/utilities.css +130 -0
  416. package/dist/skins-src/web-components.css +64 -0
  417. package/dist/strip-paint.d.mts +7 -0
  418. package/dist/strip-paint.mjs +131 -0
  419. package/dist/themes/AntDark.md +14 -0
  420. package/dist/themes/AntDark.ts +47 -0
  421. package/dist/themes/AntLight.md +21 -0
  422. package/dist/themes/AntLight.ts +95 -0
  423. package/dist/themes/CatppuccinLatte.md +20 -0
  424. package/dist/themes/CatppuccinLatte.ts +93 -0
  425. package/dist/themes/CatppuccinMocha.md +15 -0
  426. package/dist/themes/CatppuccinMocha.ts +93 -0
  427. package/dist/themes/ChakraDark.md +8 -0
  428. package/dist/themes/ChakraDark.ts +47 -0
  429. package/dist/themes/ChakraLight.md +14 -0
  430. package/dist/themes/ChakraLight.ts +93 -0
  431. package/dist/themes/Contrast.test.ts +80 -0
  432. package/dist/themes/CupcakeDark.md +8 -0
  433. package/dist/themes/CupcakeDark.ts +39 -0
  434. package/dist/themes/CupcakeLight.md +31 -0
  435. package/dist/themes/CupcakeLight.ts +93 -0
  436. package/dist/themes/DefaultTheme.md +8 -0
  437. package/dist/themes/DefaultTheme.test.ts +96 -0
  438. package/dist/themes/DefaultTheme.ts +137 -0
  439. package/dist/themes/DraculaDark.md +14 -0
  440. package/dist/themes/DraculaDark.ts +93 -0
  441. package/dist/themes/DraculaLight.md +8 -0
  442. package/dist/themes/DraculaLight.ts +55 -0
  443. package/dist/themes/EmeraldDark.md +8 -0
  444. package/dist/themes/EmeraldDark.ts +35 -0
  445. package/dist/themes/EmeraldLight.md +8 -0
  446. package/dist/themes/EmeraldLight.ts +93 -0
  447. package/dist/themes/EverforestDark.md +26 -0
  448. package/dist/themes/EverforestDark.ts +99 -0
  449. package/dist/themes/EverforestLight.md +31 -0
  450. package/dist/themes/EverforestLight.ts +51 -0
  451. package/dist/themes/FluentDark.md +8 -0
  452. package/dist/themes/FluentDark.ts +47 -0
  453. package/dist/themes/FluentLight.md +8 -0
  454. package/dist/themes/FluentLight.ts +100 -0
  455. package/dist/themes/GraphiteDark.md +8 -0
  456. package/dist/themes/GraphiteDark.ts +35 -0
  457. package/dist/themes/GraphiteLight.md +14 -0
  458. package/dist/themes/GraphiteLight.ts +93 -0
  459. package/dist/themes/GruvboxDark.md +14 -0
  460. package/dist/themes/GruvboxDark.ts +93 -0
  461. package/dist/themes/GruvboxLight.md +27 -0
  462. package/dist/themes/GruvboxLight.ts +49 -0
  463. package/dist/themes/MaterialDark.md +8 -0
  464. package/dist/themes/MaterialDark.ts +47 -0
  465. package/dist/themes/MaterialLight.md +8 -0
  466. package/dist/themes/MaterialLight.ts +104 -0
  467. package/dist/themes/MidnightDark.md +8 -0
  468. package/dist/themes/MidnightDark.ts +19 -0
  469. package/dist/themes/MidnightLight.md +8 -0
  470. package/dist/themes/MidnightLight.ts +23 -0
  471. package/dist/themes/NordDark.md +28 -0
  472. package/dist/themes/NordDark.ts +93 -0
  473. package/dist/themes/NordLight.md +20 -0
  474. package/dist/themes/NordLight.ts +50 -0
  475. package/dist/themes/OneDark.md +26 -0
  476. package/dist/themes/OneDark.ts +93 -0
  477. package/dist/themes/OneLight.md +20 -0
  478. package/dist/themes/OneLight.ts +51 -0
  479. package/dist/themes/PrimerDark.md +26 -0
  480. package/dist/themes/PrimerDark.ts +99 -0
  481. package/dist/themes/PrimerLight.md +14 -0
  482. package/dist/themes/PrimerLight.ts +93 -0
  483. package/dist/themes/RosePine.md +23 -0
  484. package/dist/themes/RosePine.ts +93 -0
  485. package/dist/themes/RosePineDawn.md +20 -0
  486. package/dist/themes/RosePineDawn.ts +51 -0
  487. package/dist/themes/SkandaDark.md +8 -0
  488. package/dist/themes/SkandaDark.ts +57 -0
  489. package/dist/themes/SkandaLight.md +8 -0
  490. package/dist/themes/SkandaLight.ts +96 -0
  491. package/dist/themes/SolarizedDark.md +8 -0
  492. package/dist/themes/SolarizedDark.ts +93 -0
  493. package/dist/themes/SolarizedLight.md +32 -0
  494. package/dist/themes/SolarizedLight.ts +93 -0
  495. package/dist/themes/SynthwaveDark.md +8 -0
  496. package/dist/themes/SynthwaveDark.ts +93 -0
  497. package/dist/themes/SynthwaveLight.md +20 -0
  498. package/dist/themes/SynthwaveLight.ts +48 -0
  499. package/dist/themes/Themes.test.ts +110 -0
  500. package/dist/themes/brands.test.ts +63 -0
  501. package/dist/themes/brands.ts +121 -0
  502. package/dist/themes/createBrandTheme.test.ts +223 -0
  503. package/dist/themes/createBrandTheme.ts +298 -0
  504. package/dist/themes/index.ts +54 -0
  505. package/package.json +73 -0
@@ -0,0 +1,130 @@
1
+ /*
2
+ * Copyright (c) 2026 SkandaDX
3
+ * This file is part of the SkandaDX organization.
4
+ * Licensed under the MIT License. See LICENSE in the repository root.
5
+ */
6
+
7
+ @import 'base.css';
8
+
9
+ /**
10
+ * Opt-in helpers, in the last layer so they win over component rules without
11
+ * `!important`. Deliberately tiny — not a utility framework.
12
+ */
13
+ @layer skdx-utilities {
14
+ /* Visually hidden but still announced: clip-path, never `display: none` or
15
+ `visibility: hidden`, which remove the element from the accessibility tree.
16
+ `-focusable` is the inverse: revealed once focused, for skip links and the like. */
17
+ .skdx-visually-hidden,
18
+ .skdx-visually-hidden-focusable:not(:focus, :focus-within) {
19
+ position: absolute;
20
+ inline-size: 1px;
21
+ block-size: 1px;
22
+ margin: -1px;
23
+ padding: 0;
24
+ overflow: hidden;
25
+ clip-path: inset(50%);
26
+ white-space: nowrap;
27
+ border: 0;
28
+ }
29
+
30
+ /** Suppresses the skin's focus ring where a parent already renders one. */
31
+ .skdx-focus-ring-none:focus-visible {
32
+ outline: none;
33
+ }
34
+ }
35
+
36
+ @layer skdx-utilities {
37
+ /* An attached strip of plain buttons: seams share one border, only the outer
38
+ corners keep their radius. The focused button rises above its neighbours so
39
+ the ring is not clipped by the overlap. */
40
+ .skdx-button-group {
41
+ display: inline-flex;
42
+ }
43
+
44
+ .skdx-button-group > .skdx-button:not(:first-child) {
45
+ margin-inline-start: calc(-1 * var(--skdx-border-width-thin));
46
+ border-start-start-radius: 0;
47
+ border-end-start-radius: 0;
48
+ }
49
+
50
+ .skdx-button-group > .skdx-button:not(:last-child) {
51
+ border-start-end-radius: 0;
52
+ border-end-end-radius: 0;
53
+ }
54
+
55
+ .skdx-button-group[data-orientation='vertical'] {
56
+ flex-direction: column;
57
+ }
58
+
59
+ .skdx-button-group[data-orientation='vertical'] > .skdx-button:not(:first-child) {
60
+ margin-inline-start: 0;
61
+ margin-block-start: calc(-1 * var(--skdx-border-width-thin));
62
+ border-start-start-radius: 0;
63
+ border-start-end-radius: 0;
64
+ border-end-start-radius: var(--skdx-radius-md);
65
+ }
66
+
67
+ .skdx-button-group[data-orientation='vertical'] > .skdx-button:not(:last-child) {
68
+ border-end-start-radius: 0;
69
+ border-end-end-radius: 0;
70
+ border-start-end-radius: var(--skdx-radius-md);
71
+ }
72
+
73
+ .skdx-button-group > .skdx-button:focus-visible {
74
+ position: relative;
75
+ z-index: 1;
76
+ }
77
+
78
+ /* Enter and exit animations on the motion tokens. Without data-state the
79
+ element animates in on mount; with the data-state every overlay part
80
+ publishes it also animates out — pair with forceMount (and Presence in
81
+ React) so the exit has time to play. */
82
+ .skdx-fade,
83
+ .skdx-zoom,
84
+ .skdx-slide-from-top,
85
+ .skdx-slide-from-bottom,
86
+ .skdx-slide-from-start,
87
+ .skdx-slide-from-end {
88
+ animation-duration: var(--skdx-motion-duration-normal);
89
+ animation-timing-function: var(--skdx-motion-easing);
90
+ animation-fill-mode: forwards;
91
+ }
92
+
93
+ .skdx-fade:not([data-state='closed']) {
94
+ animation-name: skdx-fade-in;
95
+ }
96
+
97
+ .skdx-zoom:not([data-state='closed']) {
98
+ animation-name: skdx-zoom-in;
99
+ }
100
+
101
+ .skdx-slide-from-top:not([data-state='closed']) {
102
+ animation-name: skdx-slide-in-from-top;
103
+ }
104
+
105
+ .skdx-slide-from-bottom:not([data-state='closed']) {
106
+ animation-name: skdx-slide-in-from-bottom;
107
+ }
108
+
109
+ .skdx-slide-from-start:not([data-state='closed']) {
110
+ animation-name: skdx-slide-in-from-start;
111
+ }
112
+
113
+ .skdx-slide-from-end:not([data-state='closed']) {
114
+ animation-name: skdx-slide-in-from-end;
115
+ }
116
+
117
+ .skdx-fade[data-state='closed'],
118
+ .skdx-slide-from-top[data-state='closed'],
119
+ .skdx-slide-from-bottom[data-state='closed'],
120
+ .skdx-slide-from-start[data-state='closed'],
121
+ .skdx-slide-from-end[data-state='closed'] {
122
+ animation-name: skdx-fade-out;
123
+ animation-timing-function: var(--skdx-motion-easing-exit);
124
+ }
125
+
126
+ .skdx-zoom[data-state='closed'] {
127
+ animation-name: skdx-zoom-out;
128
+ animation-timing-function: var(--skdx-motion-easing-exit);
129
+ }
130
+ }
@@ -0,0 +1,64 @@
1
+ /*
2
+ * Copyright (c) 2026 SkandaDX
3
+ * This file is part of the SkandaDX organization.
4
+ * Licensed under the MIT License. See LICENSE in the repository root.
5
+ */
6
+
7
+ /* Web Components only. `:not(:defined)` matches any unregistered tag, and the
8
+ Angular package uses these same tag names as component selectors without ever
9
+ calling `customElements.define`. Every rule below is scoped with
10
+ `:root:not(:has([ng-version]))` — Angular stamps `ng-version` on its bootstrapped
11
+ root element — so it never matches inside an Angular app. Kept out of base.css
12
+ and all.css regardless, since it has no effect there. */
13
+ @layer skdx-reset, skdx-base, skdx-components, skdx-utilities;
14
+
15
+ @layer skdx-base {
16
+ /* A custom element the browser has not upgraded yet has no box of its own, so every
17
+ `<skdx-*>` on the page collapses and the content below it jumps the moment its
18
+ module runs. These reserve the control box for the four families whose height is a
19
+ token; `visibility: hidden` keeps it empty until the upgrade drops the selector.
20
+ Families with no height token (text, cards, overlays) still reflow — see guides/ssr. */
21
+ :root:not(:has([ng-version])) skdx-button:not(:defined),
22
+ :root:not(:has([ng-version])) skdx-tabs-trigger:not(:defined) {
23
+ display: inline-block;
24
+ visibility: hidden;
25
+ block-size: var(--skdx-control-height-md);
26
+ }
27
+
28
+ :root:not(:has([ng-version])) skdx-text-field:not(:defined),
29
+ :root:not(:has([ng-version])) skdx-number-field:not(:defined),
30
+ :root:not(:has([ng-version])) skdx-password-input:not(:defined),
31
+ :root:not(:has([ng-version])) skdx-select-trigger:not(:defined),
32
+ :root:not(:has([ng-version])) skdx-tabs-list:not(:defined) {
33
+ display: block;
34
+ visibility: hidden;
35
+ block-size: var(--skdx-control-height-md);
36
+ }
37
+
38
+ /* `data-size` is authored markup, so it is already on the element before the upgrade. */
39
+ :root:not(:has([ng-version]))
40
+ :is(
41
+ skdx-button,
42
+ skdx-tabs-trigger,
43
+ skdx-text-field,
44
+ skdx-number-field,
45
+ skdx-password-input,
46
+ skdx-select-trigger,
47
+ skdx-tabs-list
48
+ ):not(:defined)[data-size='sm'] {
49
+ block-size: var(--skdx-control-height-sm);
50
+ }
51
+
52
+ :root:not(:has([ng-version]))
53
+ :is(
54
+ skdx-button,
55
+ skdx-tabs-trigger,
56
+ skdx-text-field,
57
+ skdx-number-field,
58
+ skdx-password-input,
59
+ skdx-select-trigger,
60
+ skdx-tabs-list
61
+ ):not(:defined)[data-size='lg'] {
62
+ block-size: var(--skdx-control-height-lg);
63
+ }
64
+ }
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Copyright (c) 2026 SkandaDX
3
+ * This file is part of the SkandaDX organization.
4
+ * Licensed under the MIT License. See LICENSE in the repository root.
5
+ */
6
+
7
+ export function stripPaint(css: string): string;
@@ -0,0 +1,131 @@
1
+ #!/usr/bin/env node
2
+
3
+ /*
4
+ * Copyright (c) 2026 SkandaDX
5
+ * This file is part of the SkandaDX organization.
6
+ * Licensed under the MIT License. See LICENSE in the repository root.
7
+ */
8
+
9
+ /*
10
+ * Strips paint properties, --skdx-color-* custom properties, and the colour
11
+ * part of border/outline/column-rule shorthands (width and style survive).
12
+ *
13
+ * ponytail: the parser below does no string/url escaping, so a `;`, `{`, or
14
+ * `}` inside a `url()` or quoted string would mis-tokenize. Fine for our own
15
+ * CSS; `tests/structure.test.ts` guards the filtered output. Reach for a real
16
+ * CSS parser if that assumption ever breaks.
17
+ */
18
+
19
+ const PAINT_PROPERTY =
20
+ /^(color|background|background-color|background-image|background-blend-mode|box-shadow|text-shadow|text-emphasis-color|text-decoration-color|column-rule-color|outline-color|border-color|border(-block|-inline)?(-start|-end)?-color|border-(top|right|bottom|left)-color|fill|stroke|caret-color|accent-color|-webkit-text-fill-color)$/;
21
+
22
+ const COLOUR_VALUE =
23
+ /var\(\s*--skdx-color-|#[0-9a-f]{3,8}\b|\b(rgba?|hsla?|oklch|oklab|lab|lch|color-mix|(linear|radial|conic)-gradient)\(|(^|[\s,(])(transparent|currentcolor|canvas|canvastext|highlight|highlighttext|graytext|linktext|visitedtext|activetext|buttonface|buttontext|buttonborder|field|fieldtext|mark|marktext|accentcolor|accentcolortext|selecteditem|selecteditemtext)([\s,)]|$)/i;
24
+
25
+ const GEOMETRY_SHORTHAND =
26
+ /^(border(-block|-inline)?(-start|-end)?|border-(top|right|bottom|left)|outline|column-rule)$/;
27
+
28
+ const GEOMETRY_PART =
29
+ /^(none|hidden|solid|dashed|dotted|double|groove|ridge|inset|outset|thin|medium|thick|0|[\d.]+(px|rem|em|ch|ex|%|vw|vh)?|var\(\s*--skdx-[a-z0-9-]*width[a-z0-9-]*\s*\))$/i;
30
+
31
+ function splitParts(value) {
32
+ const parts = [];
33
+ let buf = '';
34
+ let depth = 0;
35
+ for (const ch of value) {
36
+ if (ch === '(') depth++;
37
+ else if (ch === ')') depth--;
38
+ if (depth === 0 && /\s/.test(ch)) {
39
+ if (buf) parts.push(buf);
40
+ buf = '';
41
+ continue;
42
+ }
43
+ buf += ch;
44
+ }
45
+ if (buf) parts.push(buf);
46
+ return parts;
47
+ }
48
+
49
+ function keepDeclaration(property, value) {
50
+ if (PAINT_PROPERTY.test(property)) return null;
51
+ if (property.startsWith('--')) return COLOUR_VALUE.test(value) ? null : `${property}: ${value}`;
52
+ if (GEOMETRY_SHORTHAND.test(property)) {
53
+ const kept = splitParts(value).filter((part) => GEOMETRY_PART.test(part));
54
+ return kept.length > 0 ? `${property}: ${kept.join(' ')}` : null;
55
+ }
56
+ return `${property}: ${value}`;
57
+ }
58
+
59
+ // CSS comments are dropped along with the paint they describe.
60
+
61
+ function parse(css) {
62
+ const root = { children: [] };
63
+ const stack = [root];
64
+ let buf = '';
65
+ let depth = 0;
66
+
67
+ for (let i = 0; i < css.length; i++) {
68
+ const ch = css[i];
69
+ if (ch === '/' && css[i + 1] === '*') {
70
+ const end = css.indexOf('*/', i + 2);
71
+ i = end === -1 ? css.length : end + 1;
72
+ continue;
73
+ }
74
+ if (ch === '(') depth++;
75
+ else if (ch === ')') depth--;
76
+
77
+ if (depth === 0 && (ch === '{' || ch === '}' || ch === ';')) {
78
+ const chunk = buf.trim();
79
+ buf = '';
80
+ const parent = stack[stack.length - 1];
81
+ if (ch === '{') {
82
+ const block = { prelude: chunk, children: [] };
83
+ parent.children.push(block);
84
+ stack.push(block);
85
+ } else {
86
+ if (chunk) parent.children.push({ text: chunk });
87
+ if (ch === '}') stack.pop();
88
+ }
89
+ continue;
90
+ }
91
+ buf += ch;
92
+ }
93
+ return root;
94
+ }
95
+
96
+ function render(node, indent, out) {
97
+ for (const child of node.children) {
98
+ if (child.children) {
99
+ const inner = [];
100
+ render(child, `${indent} `, inner);
101
+ if (inner.length === 0) continue;
102
+ out.push(`${indent}${child.prelude} {`, ...inner, `${indent}}`);
103
+ continue;
104
+ }
105
+ // `@layer a, b;` and friends are statements, not declarations.
106
+ if (child.text.startsWith('@')) {
107
+ out.push(`${indent}${child.text};`);
108
+ continue;
109
+ }
110
+ const colon = child.text.indexOf(':');
111
+ if (colon === -1) continue;
112
+ const kept = keepDeclaration(
113
+ child.text.slice(0, colon).trim(),
114
+ child.text
115
+ .slice(colon + 1)
116
+ .replace(/\s+/g, ' ')
117
+ .trim(),
118
+ );
119
+ if (kept) out.push(`${indent}${kept};`);
120
+ }
121
+ }
122
+
123
+ /**
124
+ * @param {string} css
125
+ * @returns {string} the same rules with nothing that paints.
126
+ */
127
+ export function stripPaint(css) {
128
+ const out = [];
129
+ render(parse(css), '', out);
130
+ return out.join('\n');
131
+ }
@@ -0,0 +1,14 @@
1
+ ---
2
+ upstream: Ant Design
3
+ deviations:
4
+ - token: text-muted
5
+ upstream: #8c8c8c
6
+ ours: #989898
7
+ reason: Read 3.90:1 against selected, the primary-950 wash, under the 4.5:1
8
+ floor for body text. Lightened on lightness alone, hue and saturation kept,
9
+ to clear 4.5:1 against selected.
10
+ ---
11
+
12
+ # themes/ant-dark.ts
13
+
14
+ Exports **`antDark`** — a dark theme registered as `data-skdx-theme="ant-dark"`, the `ant` brand's dark mode, following Ant Design's dark algorithm — `background: #141414`, `surface: #1f1f1f`, gray borders at `#303030`/`#424242`, and the same daybreak-blue primary ramp as `ant-daybreak`.
@@ -0,0 +1,47 @@
1
+ /*
2
+ * Copyright (c) 2026 SkandaDX
3
+ * This file is part of the SkandaDX organization.
4
+ * Licensed under the MIT License. See LICENSE in the repository root.
5
+ */
6
+
7
+ import type { Theme } from '../utils/theme';
8
+ import { antLight } from './AntLight';
9
+ import { createTheme } from './DefaultTheme';
10
+
11
+ /** Dark counterpart of Ant Design's dark surfaces (#141414/#1f1f1f), using the dark-derived blue since the light ramp's blue fails contrast on dark backgrounds. @public */
12
+ export const antDark: Theme = createTheme(
13
+ 'ant-dark',
14
+ {
15
+ mode: 'dark',
16
+ colors: {
17
+ primary: {
18
+ 50: '#f3f9fe',
19
+ 100: '#e4f1fc',
20
+ 200: '#c5e1f8',
21
+ 300: '#9ecdf4',
22
+ 400: '#7abaef',
23
+ 500: '#5baaec',
24
+ 600: '#3c9ae8',
25
+ 700: '#327dbd',
26
+ 800: '#2a669a',
27
+ 900: '#23527c',
28
+ 950: '#18324c',
29
+ },
30
+ neutral: { 200: '#303030', 300: '#424242', 800: '#1f1f1f', 900: '#141414', 950: '#0a0a0a' },
31
+ semantic: {
32
+ background: '#141414',
33
+ surface: '#1f1f1f',
34
+ surfaceHover: '#262626',
35
+ overlay: 'rgb(0 0 0 / 0.65)',
36
+ text: '#d9d9d9',
37
+ textMuted: '#989898',
38
+ textInverted: '#141414',
39
+ border: '#303030',
40
+ borderStrong: '#6b6b6b',
41
+ focusRing: '#4096ff',
42
+ },
43
+ },
44
+ shadow: { color: '0 0 0', strength: '4.7' },
45
+ },
46
+ antLight,
47
+ );
@@ -0,0 +1,21 @@
1
+ ---
2
+ upstream: Ant Design
3
+ deviations:
4
+ - token: warning-600
5
+ upstream: #d48806 (gold-7)
6
+ ours: #c88006
7
+ reason: Ant's gold-7 reads 2.76:1 against gold-1, the wash the alert icon sits
8
+ on, and the icon is the non-colour signal for severity. Darkened on lightness
9
+ alone to clear 3:1; hue and saturation are Ant's. Inherited by ant-dark, where
10
+ the icon reads step 400 and the value is unused.
11
+ - token: text-muted
12
+ upstream: #737373
13
+ ours: #686868
14
+ reason: Read 4.35:1 against hover, 4.23:1 against selected and 3.85:1 against
15
+ pressed, under the 4.5:1 floor for body text. Darkened on lightness alone,
16
+ hue and saturation kept, to clear 4.5:1 against all three fills.
17
+ ---
18
+
19
+ # themes/ant-light.ts
20
+
21
+ Character: Ant's "daybreak blue" primary ramp (`#1677ff` at 500), its signature status palettes on the success/warning/danger ramps, alpha-based text color (`rgb(0 0 0 / 0.88)`), neutral gray surfaces, and Ant's compact pixel-based corners (`sm: 2px`, `md: 6px`, `lg: 8px`, `xl: 12px`).
@@ -0,0 +1,95 @@
1
+ /*
2
+ * Copyright (c) 2026 SkandaDX
3
+ * This file is part of the SkandaDX organization.
4
+ * Licensed under the MIT License. See LICENSE in the repository root.
5
+ */
6
+
7
+ import type { Theme } from '../utils/theme';
8
+
9
+ /** Ant Design inspired: daybreak blue, compact corners, signature status palettes. @public */
10
+ export const antLight: Theme = {
11
+ name: 'ant-daybreak',
12
+ mode: 'light',
13
+ colors: {
14
+ primary: {
15
+ 50: '#e6f4ff',
16
+ 100: '#bae0ff',
17
+ 200: '#91caff',
18
+ 300: '#69b1ff',
19
+ 400: '#4096ff',
20
+ 500: '#1677ff',
21
+ 600: '#0958d9',
22
+ 700: '#003eb3',
23
+ 800: '#002c8c',
24
+ 900: '#001d66',
25
+ 950: '#001141',
26
+ },
27
+ neutral: {
28
+ 50: '#f8fafc',
29
+ 100: '#f1f5f9',
30
+ 200: '#e2e8f0',
31
+ 300: '#cbd5e1',
32
+ 400: '#94a3b8',
33
+ 500: '#64748b',
34
+ 600: '#475569',
35
+ 700: '#334155',
36
+ 800: '#1e293b',
37
+ 900: '#0f172a',
38
+ 950: '#020617',
39
+ },
40
+ success: {
41
+ 50: '#f6ffed',
42
+ 100: '#d9f7be',
43
+ 200: '#b7eb8f',
44
+ 300: '#95de64',
45
+ 400: '#73d13d',
46
+ 500: '#52c41a',
47
+ 600: '#389e0d',
48
+ 700: '#237804',
49
+ 800: '#135200',
50
+ 900: '#092b00',
51
+ 950: '#051f00',
52
+ },
53
+ warning: {
54
+ 50: '#fffbe6',
55
+ 100: '#fff1b8',
56
+ 200: '#ffe58f',
57
+ 300: '#ffd666',
58
+ 400: '#ffc53d',
59
+ 500: '#faad14',
60
+ 600: '#c88006',
61
+ 700: '#ad6800',
62
+ 800: '#874d00',
63
+ 900: '#613400',
64
+ 950: '#422400',
65
+ },
66
+ danger: {
67
+ 50: '#fff1f0',
68
+ 100: '#ffccc7',
69
+ 200: '#ffa39e',
70
+ 300: '#ff7875',
71
+ 400: '#ff4d4f',
72
+ 500: '#f5222d',
73
+ 600: '#cf1322',
74
+ 700: '#a8071a',
75
+ 800: '#820014',
76
+ 900: '#5c0011',
77
+ 950: '#3d000b',
78
+ },
79
+ semantic: {
80
+ background: '#ffffff',
81
+ surface: '#fafafa',
82
+ surfaceHover: '#f5f5f5',
83
+ overlay: 'rgb(0 0 0 / 0.45)',
84
+ // text/textMuted are hex composites over background: contrastRatio() rejects non-hex values.
85
+ text: '#1f1f1f',
86
+ textMuted: '#686868',
87
+ textInverted: '#ffffff',
88
+ border: '#d9d9d9',
89
+ borderStrong: '#919191',
90
+ focusRing: '#1677ff',
91
+ },
92
+ },
93
+ shadow: { color: '2 6 23', strength: '1' },
94
+ motion: { easing: 'cubic-bezier(0.645, 0.045, 0.355, 1)' },
95
+ };
@@ -0,0 +1,20 @@
1
+ ---
2
+ upstream: Catppuccin Latte
3
+ deviations:
4
+ - token: success-600
5
+ upstream: #40a02b (green)
6
+ ours: #3f9e2a
7
+ reason: Read 2.96:1 against the theme background, under the 3:1 floor for status
8
+ ramps. Darkened on lightness alone, hue and saturation kept, to reach 3.03:1
9
+ contrast against the theme background.
10
+ - token: text-muted
11
+ upstream: #65687d
12
+ ours: #5f6276
13
+ reason: Read 4.14:1 against hover, under the 4.5:1 floor for body text.
14
+ Darkened on lightness alone, hue and saturation kept, to clear 4.5:1
15
+ against hover.
16
+ ---
17
+
18
+ # themes/catppuccin-latte.ts
19
+
20
+ Character: warm off-white surfaces (`background: #eff1f5`, `surface: #e6e9ef`), saturated Latte blue actions (`#1e66f5` at 600), Latte green/yellow/red on the status ramps, ink-blue text (`#4c4f69`), and a neutral ramp built from the Latte surface/overlay/subtext grays.
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Copyright (c) 2026 SkandaDX
3
+ * This file is part of the SkandaDX organization.
4
+ * Licensed under the MIT License. See LICENSE in the repository root.
5
+ */
6
+
7
+ import type { Theme } from '../utils/theme';
8
+
9
+ /** Catppuccin Latte inspired light theme: warm off-white surfaces, saturated blue actions, Latte status hues. Palette source: catppuccin/catppuccin (MIT). @public */
10
+ export const catppuccinLatte: Theme = {
11
+ name: 'catppuccin-latte',
12
+ mode: 'light',
13
+ colors: {
14
+ primary: {
15
+ 50: '#eef2fe',
16
+ 100: '#dde6fd',
17
+ 200: '#c1d2fb',
18
+ 300: '#96b4f9',
19
+ 400: '#648df7',
20
+ 500: '#3a70f6',
21
+ 600: '#1e66f5',
22
+ 700: '#1652cd',
23
+ 800: '#1543a4',
24
+ 900: '#163a82',
25
+ 950: '#12254f',
26
+ },
27
+ neutral: {
28
+ 50: '#f4f6fa',
29
+ 100: '#eff1f5',
30
+ 200: '#e6e9ef',
31
+ 300: '#ccd0da',
32
+ 400: '#acb0be',
33
+ 500: '#9ca0b0',
34
+ 600: '#7c7f93',
35
+ 700: '#6c6f85',
36
+ 800: '#5c5f77',
37
+ 900: '#4c4f69',
38
+ 950: '#3a3d52',
39
+ },
40
+ success: {
41
+ 50: '#f1faee',
42
+ 100: '#e0f4d9',
43
+ 200: '#c3e8b6',
44
+ 300: '#9cd688',
45
+ 400: '#6fbe55',
46
+ 500: '#4fae38',
47
+ 600: '#3f9e2a',
48
+ 700: '#357f25',
49
+ 800: '#2d6521',
50
+ 900: '#27531f',
51
+ 950: '#112d0c',
52
+ },
53
+ warning: {
54
+ 50: '#fdf7ec',
55
+ 100: '#f9ecd3',
56
+ 200: '#f3d7a5',
57
+ 300: '#ecbd6e',
58
+ 400: '#e5a340',
59
+ 500: '#df8e1d',
60
+ 600: '#c67916',
61
+ 700: '#a45e15',
62
+ 800: '#854a17',
63
+ 900: '#6d3d16',
64
+ 950: '#3e1f09',
65
+ },
66
+ danger: {
67
+ 50: '#fef1f4',
68
+ 100: '#fde0e7',
69
+ 200: '#fbc6d3',
70
+ 300: '#f79cb1',
71
+ 400: '#f16587',
72
+ 500: '#e63862',
73
+ 600: '#d20f39',
74
+ 700: '#b10d33',
75
+ 800: '#940e31',
76
+ 900: '#7f102f',
77
+ 950: '#470415',
78
+ },
79
+ semantic: {
80
+ background: '#eff1f5',
81
+ surface: '#e6e9ef',
82
+ surfaceHover: '#dce0e8',
83
+ overlay: 'rgb(76 79 105 / 0.4)',
84
+ text: '#4c4f69',
85
+ textMuted: '#5f6276',
86
+ textInverted: '#ffffff',
87
+ border: '#ccd0da',
88
+ borderStrong: '#7c849c',
89
+ focusRing: '#1e66f5',
90
+ },
91
+ },
92
+ shadow: { color: '76 79 105', strength: '1.3' },
93
+ };
@@ -0,0 +1,15 @@
1
+ ---
2
+ upstream: Catppuccin Mocha
3
+ deviations:
4
+ - token: neutral-400
5
+ upstream: #a6adc8 (subtext0)
6
+ ours: #9399b2 (overlay2)
7
+ reason: In dark mode this step is the disabled ink and nothing else, and holding
8
+ subtext0 made it identical to text-muted, so a disabled control was
9
+ indistinguishable from an enabled one. Remapped to the next dimmer Catppuccin
10
+ colour rather than inventing a value; text-muted still carries subtext0.
11
+ ---
12
+
13
+ # themes/catppuccin-mocha.ts
14
+
15
+ Character: the signature `#1e1e2e` base with `#313244` surfaces, pastel blue actions (`#89b4fa` at 400) with dark inverted text, Mocha green/yellow/red status hues, lavender-tinted text (`#cdd6f4`), and a neutral ramp whose dark steps are remapped to the Mocha surface/base/crust colors.