@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,182 @@
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
+ /* data-size/data-variant resolve on the root so every part reads the same
10
+ rung; `md` has an explicit selector for resets. */
11
+ @layer skdx-components {
12
+ /* Declared on the root so a size set once reaches the input, slots and clear button. */
13
+ :where(.skdx-text-field),
14
+ :where(.skdx-text-field)[data-size='md'],
15
+ :where(.skdx-text-field__input)[data-size='md'] {
16
+ --skdx-text-field-block-size: var(--skdx-control-height-md);
17
+ --skdx-text-field-padding-inline: var(--skdx-control-padding-md);
18
+ --skdx-text-field-font-size: var(--skdx-font-size-sm);
19
+ }
20
+
21
+ :where(.skdx-text-field)[data-size='sm'],
22
+ :where(.skdx-text-field__input)[data-size='sm'] {
23
+ --skdx-text-field-block-size: var(--skdx-control-height-sm);
24
+ --skdx-text-field-padding-inline: var(--skdx-control-padding-sm);
25
+ --skdx-text-field-font-size: var(--skdx-font-size-xs);
26
+ }
27
+
28
+ :where(.skdx-text-field)[data-size='lg'],
29
+ :where(.skdx-text-field__input)[data-size='lg'] {
30
+ --skdx-text-field-block-size: var(--skdx-control-height-lg);
31
+ --skdx-text-field-padding-inline: var(--skdx-control-padding-lg);
32
+ --skdx-text-field-font-size: var(--skdx-font-size-md);
33
+ }
34
+ /* Root, input and slot/clear-button are siblings meant to read as one row, not a flex-direction: column stack. */
35
+ /* control-gap-md, not field-gap: that's the vertical label-to-control gap, a different relationship. */
36
+ :where(.skdx-text-field) {
37
+ display: flex;
38
+ align-items: center;
39
+ gap: var(--skdx-control-gap-md);
40
+ }
41
+
42
+ :where(.skdx-text-field__input) {
43
+ flex: 1;
44
+ min-inline-size: 0;
45
+ block-size: var(--skdx-text-field-block-size, var(--skdx-control-height-md));
46
+ padding-inline: var(--skdx-text-field-padding-inline, var(--skdx-control-padding-md));
47
+
48
+ color: var(--skdx-color-field-text);
49
+ background-color: var(--skdx-color-field-bg);
50
+ border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
51
+ border-radius: var(--skdx-radius-md);
52
+
53
+ font-size: var(--skdx-text-field-font-size, var(--skdx-font-size-sm));
54
+ line-height: var(--skdx-font-line-height-normal);
55
+
56
+ transition:
57
+ border-color var(--skdx-motion-duration-fast) var(--skdx-motion-easing),
58
+ background-color var(--skdx-motion-duration-fast) var(--skdx-motion-easing);
59
+ }
60
+
61
+ :where(.skdx-text-field__input)::placeholder {
62
+ color: var(--skdx-color-text-placeholder);
63
+ /* Placeholders inherit the input's opacity in Firefox; pin it so the
64
+ colour token is the only thing deciding contrast. */
65
+ opacity: 1;
66
+ }
67
+
68
+ :where(.skdx-text-field__input):hover:not(:disabled, :read-only) {
69
+ border-color: var(--skdx-color-field-border-hover);
70
+ }
71
+
72
+ /* The second selector is the Web Components host, whose input is a light-DOM child. */
73
+ :where(.skdx-text-field__input):focus-visible,
74
+ :where(.skdx-text-field__input):has(> input:focus-visible) {
75
+ border-color: var(--skdx-color-field-border-focus);
76
+ }
77
+
78
+ /* base.css's ring keys off the focused element's own class, which the Web
79
+ Components host's light-DOM input never carries; draw it here instead. */
80
+ :where(.skdx-text-field__input):has(> input:focus-visible) {
81
+ outline: var(--skdx-focus-ring-width) solid var(--skdx-color-focus-ring);
82
+ outline-offset: var(--skdx-focus-ring-offset);
83
+ }
84
+
85
+ /* Invalid is signalled by colour and a thicker border — colour alone fails WCAG 1.4.1 (Use of Colour). */
86
+ :where(.skdx-text-field__input)[data-invalid],
87
+ :where(.skdx-text-field__input):user-invalid {
88
+ border-color: var(--skdx-color-field-border-invalid);
89
+ border-width: var(--skdx-border-width-thick);
90
+ }
91
+
92
+ :where(.skdx-text-field__input):disabled,
93
+ :where(.skdx-text-field__input)[data-disabled] {
94
+ color: var(--skdx-color-text-disabled);
95
+ background-color: var(--skdx-color-field-bg-disabled);
96
+ border-color: var(--skdx-color-border-disabled);
97
+ cursor: not-allowed;
98
+ }
99
+
100
+ /* Read-only keeps full-contrast text — only the editable affordance (background well) is withdrawn. */
101
+ :where(.skdx-text-field__input)[readonly],
102
+ /* :read-only matches the native attribute; TextFieldInput doesn't mirror readOnly as a data attribute. */
103
+ :where(.skdx-text-field__input):read-only {
104
+ background-color: var(--skdx-color-field-bg-readonly);
105
+ cursor: default;
106
+ }
107
+
108
+ :where(.skdx-text-field)[data-variant='filled'] :where(.skdx-text-field__input),
109
+ :where(.skdx-text-field__input)[data-variant='filled'] {
110
+ background-color: var(--skdx-color-surface-sunken);
111
+ border-color: transparent;
112
+ }
113
+
114
+ :where(.skdx-text-field)[data-variant='ghost'] :where(.skdx-text-field__input),
115
+ :where(.skdx-text-field__input)[data-variant='ghost'] {
116
+ background-color: transparent;
117
+ border-color: transparent;
118
+ }
119
+
120
+ /* Ghost's border returns on hover/focus — its only affordance that the text is editable. */
121
+ :where(.skdx-text-field)[data-variant='ghost']
122
+ :where(.skdx-text-field__input):hover:not(:disabled, :read-only),
123
+ :where(.skdx-text-field__input)[data-variant='ghost']:hover:not(:disabled, :read-only) {
124
+ border-color: var(--skdx-color-field-border-hover);
125
+ }
126
+
127
+ :where(.skdx-text-field__clear-button) {
128
+ display: inline-flex;
129
+ align-items: center;
130
+ justify-content: center;
131
+ min-inline-size: var(--skdx-target-min);
132
+ min-block-size: var(--skdx-target-min);
133
+ /* Icon scales with the rung, but the tap target floors at --skdx-target-min regardless: a sm field must not ship a sub-minimum target. */
134
+ font-size: var(--skdx-text-field-font-size, var(--skdx-font-size-sm));
135
+ color: var(--skdx-color-text-muted);
136
+ background: transparent;
137
+ border: 0;
138
+ border-radius: var(--skdx-radius-sm);
139
+ cursor: pointer;
140
+ }
141
+
142
+ :where(.skdx-text-field__clear-button):hover {
143
+ color: var(--skdx-color-text-default);
144
+ background-color: var(--skdx-color-action-ghost-bg-hover);
145
+ }
146
+
147
+ @media (forced-colors: active) {
148
+ :where(.skdx-text-field__input) {
149
+ border-color: CanvasText;
150
+ }
151
+
152
+ :where(.skdx-text-field__input):disabled,
153
+ :where(.skdx-text-field__input)[data-disabled] {
154
+ color: GrayText;
155
+ border-color: GrayText;
156
+ }
157
+
158
+ /* Forced colours strips the invalid border colour, so this repaints it in a system colour and adds dashed style as the non-colour differentiator. */
159
+ :where(.skdx-text-field__input)[data-invalid],
160
+ :where(.skdx-text-field__input):user-invalid {
161
+ border-color: LinkText;
162
+ border-style: dashed;
163
+ }
164
+ }
165
+
166
+ /* pointer-events: none by default so the slot doesn't eat clicks meant for the input; interactive children opt back in below. */
167
+ :where(.skdx-text-field__slot) {
168
+ display: inline-flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ flex: none;
172
+ /* Reads the root's rung so an adornment matches the input as the field resizes. */
173
+ block-size: var(--skdx-text-field-block-size, var(--skdx-control-height-md));
174
+ font-size: var(--skdx-text-field-font-size, var(--skdx-font-size-sm));
175
+ color: var(--skdx-color-text-muted);
176
+ pointer-events: none;
177
+ }
178
+
179
+ :where(.skdx-text-field__slot) :where(button, a[href], input) {
180
+ pointer-events: auto;
181
+ }
182
+ }
@@ -0,0 +1,83 @@
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
+ /** Text — a typographic primitive. Three independent appearance axes. */
8
+ @layer skdx-components {
9
+ :where(.skdx-text) {
10
+ color: var(--skdx-color-text-default);
11
+ font-family: var(--skdx-font-family);
12
+ font-size: var(--skdx-font-size-md);
13
+ font-weight: var(--skdx-font-weight-regular);
14
+ line-height: var(--skdx-font-line-height-normal);
15
+ }
16
+
17
+ /* Tone is colour only. Weight is `data-variant`, scale is `data-size`; three
18
+ orthogonal axes, so muted small mono is expressible. `default` and `body`
19
+ restate the base rule, so writing either gets what was asked for rather
20
+ than the base by accident. */
21
+ :where(.skdx-text)[data-tone='default'] {
22
+ color: var(--skdx-color-text-default);
23
+ }
24
+ :where(.skdx-text)[data-tone='muted'] {
25
+ color: var(--skdx-color-text-muted);
26
+ }
27
+ :where(.skdx-text)[data-tone='accent'] {
28
+ color: var(--skdx-color-text-accent);
29
+ }
30
+ :where(.skdx-text)[data-tone='danger'] {
31
+ color: var(--skdx-color-text-danger);
32
+ }
33
+ :where(.skdx-text)[data-tone='success'] {
34
+ color: var(--skdx-color-text-success);
35
+ }
36
+ :where(.skdx-text)[data-tone='warning'] {
37
+ color: var(--skdx-color-text-warning);
38
+ }
39
+ :where(.skdx-text)[data-tone='info'] {
40
+ color: var(--skdx-color-text-info);
41
+ }
42
+
43
+ :where(.skdx-text)[data-variant='body'] {
44
+ font-family: var(--skdx-font-family);
45
+ font-variant-numeric: normal;
46
+ }
47
+
48
+ /* The one rule this file exists for: digits of equal width, so a column of
49
+ numbers lines up. Fifteen component stylesheets inline this today. */
50
+ :where(.skdx-text)[data-variant='numeric'] {
51
+ font-variant-numeric: tabular-nums;
52
+ }
53
+
54
+ /* Folds in what a separate `Code` family would have been. */
55
+ :where(.skdx-text)[data-variant='mono'] {
56
+ font-family: var(--skdx-font-family-mono);
57
+ font-variant-numeric: tabular-nums;
58
+ }
59
+
60
+ :where(.skdx-text)[data-size='md'] {
61
+ font-size: var(--skdx-font-size-md);
62
+ line-height: var(--skdx-font-line-height-normal);
63
+ }
64
+ :where(.skdx-text)[data-size='sm'] {
65
+ font-size: var(--skdx-font-size-sm);
66
+ line-height: var(--skdx-font-line-height-snug);
67
+ }
68
+ :where(.skdx-text)[data-size='lg'] {
69
+ font-size: var(--skdx-font-size-lg);
70
+ }
71
+
72
+ /* Folds in what a separate `Mark` family would have been. The UA's yellow is a
73
+ fixed colour that no theme reaches. */
74
+ /* The web component paints the host, whose tag is always `skdx-text`; the
75
+ `<mark>` it renders lives in a shadow root no light-DOM selector reaches. */
76
+ :where(mark.skdx-text, .skdx-text[as='mark']) {
77
+ padding-inline: var(--skdx-space-1);
78
+
79
+ color: var(--skdx-color-highlight-text);
80
+ background-color: var(--skdx-color-highlight-bg);
81
+ border-radius: var(--skdx-radius-sm);
82
+ }
83
+ }
@@ -0,0 +1,118 @@
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
+ * Textarea — multi-line text entry. Differs from TextField in exactly three ways:
11
+ * no fixed height, vertical-only resize, and block-direction padding because
12
+ * multi-line text does not centre itself.
13
+ */
14
+ @layer skdx-components {
15
+ :where(.skdx-textarea) {
16
+ display: flex;
17
+ flex-direction: column;
18
+ gap: var(--skdx-field-gap);
19
+ }
20
+
21
+ :where(.skdx-textarea),
22
+ :where(.skdx-textarea):is(textarea) {
23
+ inline-size: 100%;
24
+ /* Two control rows plus a step of the space scale — 84px, which is what
25
+ the reference textarea opens at. Two rows alone (72px) showed barely
26
+ three lines of text before it needed dragging. */
27
+ min-block-size: calc(var(--skdx-control-height-md) * 2 + var(--skdx-space-3));
28
+ padding-inline: var(--skdx-control-padding-md);
29
+ padding-block: var(--skdx-space-2);
30
+
31
+ color: var(--skdx-color-field-text);
32
+ background-color: var(--skdx-color-field-bg);
33
+ border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
34
+ border-radius: var(--skdx-radius-md);
35
+
36
+ font-size: var(--skdx-font-size-sm);
37
+ line-height: var(--skdx-font-line-height-normal);
38
+
39
+ /* Vertical only. Horizontal resize lets a user drag a textarea wider than
40
+ its own form column, which breaks the layout around it. Overridable with
41
+ `data-resize` below — the base value is what an unmarked textarea gets. */
42
+ resize: block;
43
+
44
+ transition: border-color var(--skdx-motion-duration-fast) var(--skdx-motion-easing);
45
+ }
46
+
47
+ :where(.skdx-textarea)::placeholder {
48
+ color: var(--skdx-color-text-placeholder);
49
+ opacity: 1;
50
+ }
51
+
52
+ :where(.skdx-textarea):hover:not(:disabled, [readonly]) {
53
+ border-color: var(--skdx-color-field-border-hover);
54
+ }
55
+
56
+ /* The second selector is the Web Components host, whose textarea is a light-DOM child. */
57
+ :where(.skdx-textarea):focus-visible,
58
+ :where(.skdx-textarea):has(> textarea:focus-visible) {
59
+ border-color: var(--skdx-color-field-border-focus);
60
+ }
61
+
62
+ :where(.skdx-textarea)[data-invalid],
63
+ :where(.skdx-textarea):user-invalid {
64
+ border-color: var(--skdx-color-field-border-invalid);
65
+ border-width: var(--skdx-border-width-thick);
66
+ }
67
+
68
+ /* Outweighs the plain :hover/:focus-visible rules above (each one pseudo-class
69
+ heavier), so invalid stays signalled through hover and through the
70
+ Web Components `:has()` focus variant instead of being overridden by them. */
71
+ :where(.skdx-textarea)[data-invalid]:hover:not(:disabled, [readonly]),
72
+ :where(.skdx-textarea):user-invalid:hover:not(:disabled, [readonly]),
73
+ :where(.skdx-textarea)[data-invalid]:focus-visible,
74
+ :where(.skdx-textarea)[data-invalid]:has(> textarea:focus-visible),
75
+ :where(.skdx-textarea):user-invalid:focus-visible,
76
+ :where(.skdx-textarea):user-invalid:has(> textarea:focus-visible) {
77
+ border-color: var(--skdx-color-field-border-invalid);
78
+ }
79
+
80
+ /* `:disabled` rather than `[data-disabled]`: the root *is* the `<textarea>`,
81
+ so it carries the native attribute — it publishes `data-invalid` and
82
+ `data-readonly`, but never `data-disabled`. */
83
+ :where(.skdx-textarea):disabled {
84
+ color: var(--skdx-color-text-disabled);
85
+ background-color: var(--skdx-color-field-bg-disabled);
86
+ border-color: var(--skdx-color-border-disabled);
87
+ cursor: not-allowed;
88
+ resize: none;
89
+ }
90
+
91
+ :where(.skdx-textarea)[readonly],
92
+ :where(.skdx-textarea)[data-readonly] {
93
+ background-color: var(--skdx-color-field-bg-readonly);
94
+ }
95
+
96
+ /* Resize hook — `none` · `block` (the default) · `auto`. `autoResize`
97
+ still wins: the component sets `resize: none` inline while measuring. */
98
+ :where(.skdx-textarea)[data-resize='none'] {
99
+ resize: none;
100
+ }
101
+
102
+ :where(.skdx-textarea)[data-resize='block'] {
103
+ resize: block;
104
+ }
105
+
106
+ :where(.skdx-textarea)[data-resize='auto'] {
107
+ resize: both;
108
+ }
109
+
110
+ @media (forced-colors: active) {
111
+ :where(.skdx-textarea) {
112
+ border-color: CanvasText;
113
+ }
114
+ }
115
+
116
+ /* Deliberately no `.skdx-textarea__character-count` rule: no package emits that
117
+ class — the only character count is Field's. Wrap the Textarea in a Field. */
118
+ }
@@ -0,0 +1,43 @@
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 'date-field.css';
8
+
9
+ /** TimeField — segmented time entry. Identical presentation to DateField. */
10
+ @layer skdx-components {
11
+ :where(.skdx-time-field) {
12
+ display: inline-flex;
13
+ align-items: center;
14
+ gap: var(--skdx-space-1);
15
+
16
+ block-size: var(--skdx-control-height-md);
17
+ padding-inline: var(--skdx-control-padding-md);
18
+
19
+ background-color: var(--skdx-color-field-bg);
20
+ border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
21
+ border-radius: var(--skdx-radius-md);
22
+ font-variant-numeric: tabular-nums;
23
+ }
24
+
25
+ /* A literal segment between minutes and the day period is often a bare
26
+ space (" hh:mm a" locales). As the sole content of a flex item that
27
+ whitespace sits at both the start and end of its own line, so the UA
28
+ collapsed it away — width came from padding alone, height from nothing,
29
+ and the segment vanished instead of reading as a gap. `pre` keeps it. */
30
+ :where(.skdx-time-field__segment) {
31
+ padding-inline: var(--skdx-space-1);
32
+ border-radius: var(--skdx-radius-sm);
33
+ font-size: var(--skdx-font-size-sm);
34
+ white-space: pre;
35
+ caret-color: transparent;
36
+ }
37
+
38
+ :where(.skdx-time-field__segment):focus-visible {
39
+ background-color: var(--skdx-color-selection-bg);
40
+ color: var(--skdx-color-selection-mark);
41
+ outline: none;
42
+ }
43
+ }
@@ -0,0 +1,13 @@
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
+ /** Time — a timestamp. Tabular by default: timestamps sit in columns. */
8
+ @layer skdx-components {
9
+ :where(.skdx-time) {
10
+ color: var(--skdx-color-text-muted);
11
+ font-variant-numeric: tabular-nums;
12
+ }
13
+ }
@@ -0,0 +1,206 @@
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
+ * data-orientation, data-align and data-state affect grid placement only —
11
+ * none change markup or DOM order. data-align is
12
+ * logical start/end for writing direction; data-state and data-status are
13
+ * deliberately separate vocabularies that never collide on the same element.
14
+ */
15
+ @layer skdx-components {
16
+ :where(.skdx-timeline) {
17
+ display: flex;
18
+ flex-direction: column;
19
+ margin: 0;
20
+ padding: 0;
21
+ list-style: none;
22
+ }
23
+
24
+ /* Grid, not flex: as a flex row, the separator's flex:1 grew sideways with content width. */
25
+ :where(.skdx-timeline__item) {
26
+ --skdx-timeline-marker-column: 1;
27
+ --skdx-timeline-content-column: 2;
28
+ /* Unused unless the item has an opposite; the rule below re-columns all three together. */
29
+ --skdx-timeline-opposite-column: 1;
30
+
31
+ display: grid;
32
+ grid-template-columns: auto minmax(0, 1fr);
33
+ grid-template-rows: auto 1fr;
34
+ column-gap: var(--skdx-space-3);
35
+ /* Space for the connector to run between markers. */
36
+ padding-block-end: var(--skdx-space-4);
37
+ }
38
+
39
+ :where(.skdx-timeline__indicator) {
40
+ /* Divider sits below in the same column, so markers line up down the list. */
41
+ grid-row: 1;
42
+ grid-column: var(--skdx-timeline-marker-column);
43
+
44
+ display: inline-flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ flex: none;
48
+
49
+ inline-size: var(--skdx-space-3);
50
+ block-size: var(--skdx-space-3);
51
+ margin-block-start: var(--skdx-space-1);
52
+
53
+ background-color: var(--skdx-color-track-fill);
54
+ border-radius: var(--skdx-radius-full);
55
+ /* Foreground set explicitly for marker content (a step number, an icon); inherited text would only measure 2.65:1 against the fill. */
56
+ color: var(--skdx-color-text-on-accent);
57
+ }
58
+
59
+ /* 2px, not a hairline: at 1px the connector disappeared next to the 12px dots. */
60
+ :where(.skdx-timeline__separator) {
61
+ grid-row: 2;
62
+ grid-column: var(--skdx-timeline-marker-column);
63
+ justify-self: center;
64
+ inline-size: var(--skdx-border-width-thick);
65
+ background-color: var(--skdx-color-separator);
66
+ }
67
+
68
+ :where(.skdx-timeline__content) {
69
+ grid-row: 1 / span 2;
70
+ grid-column: var(--skdx-timeline-content-column);
71
+ display: flex;
72
+ flex-direction: column;
73
+ gap: var(--skdx-space-1);
74
+ padding-block-end: var(--skdx-space-4);
75
+ }
76
+
77
+ :where(.skdx-timeline__opposite) {
78
+ grid-row: 1 / span 2;
79
+ grid-column: var(--skdx-timeline-opposite-column);
80
+ font-size: var(--skdx-font-size-sm);
81
+ color: var(--skdx-color-text-muted);
82
+ text-align: end;
83
+ }
84
+
85
+ /* Descendant, not child, in :has() below: Angular/Web Components host elements (display: contents) sit between the item and its parts. */
86
+ :where(.skdx-timeline__item):has(.skdx-timeline__opposite) {
87
+ --skdx-timeline-opposite-column: 1;
88
+ --skdx-timeline-marker-column: 2;
89
+ --skdx-timeline-content-column: 3;
90
+
91
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
92
+ }
93
+
94
+ /* Only column assignments change — DOM order doesn't, so reading/tab order stay identical across all three alignments. */
95
+ :where(.skdx-timeline)[data-align='end'] :where(.skdx-timeline__item),
96
+ :where(.skdx-timeline)[data-align='alternate'] :where(.skdx-timeline__item):nth-child(even) {
97
+ --skdx-timeline-content-column: 1;
98
+ --skdx-timeline-marker-column: 2;
99
+
100
+ grid-template-columns: minmax(0, 1fr) auto;
101
+ }
102
+
103
+ :where(.skdx-timeline)[data-align='end']
104
+ :where(.skdx-timeline__item):has(.skdx-timeline__opposite),
105
+ :where(.skdx-timeline)[data-align='alternate']
106
+ :where(.skdx-timeline__item):nth-child(even):has(.skdx-timeline__opposite) {
107
+ --skdx-timeline-content-column: 1;
108
+ --skdx-timeline-marker-column: 2;
109
+ --skdx-timeline-opposite-column: 3;
110
+
111
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
112
+ }
113
+
114
+ :where(.skdx-timeline)[data-align='end'] :where(.skdx-timeline__content),
115
+ :where(.skdx-timeline)[data-align='alternate']
116
+ :where(.skdx-timeline__item):nth-child(even)
117
+ :where(.skdx-timeline__content) {
118
+ text-align: end;
119
+ }
120
+
121
+ :where(.skdx-timeline)[data-align='end'] :where(.skdx-timeline__opposite),
122
+ :where(.skdx-timeline)[data-align='alternate']
123
+ :where(.skdx-timeline__item):nth-child(even)
124
+ :where(.skdx-timeline__opposite) {
125
+ text-align: start;
126
+ }
127
+
128
+ /* Turns the item 90°: marker/connector share the first row, content sits underneath. data-align (block-axis) doesn't apply here. */
129
+ :where(.skdx-timeline)[data-orientation='horizontal'] {
130
+ flex-direction: row;
131
+ align-items: start;
132
+ }
133
+
134
+ :where(.skdx-timeline)[data-orientation='horizontal'] :where(.skdx-timeline__item) {
135
+ grid-template-columns: auto minmax(0, 1fr);
136
+ grid-template-rows: auto auto;
137
+ row-gap: var(--skdx-space-2);
138
+ /* flex: 1 so every item takes an equal share, keeping connector lengths equal. */
139
+ flex: 1;
140
+ padding-block-end: 0;
141
+ }
142
+
143
+ :where(.skdx-timeline)[data-orientation='horizontal'] :where(.skdx-timeline__indicator) {
144
+ grid-row: 1;
145
+ grid-column: 1;
146
+ margin-block-start: 0;
147
+ }
148
+
149
+ :where(.skdx-timeline)[data-orientation='horizontal'] :where(.skdx-timeline__separator) {
150
+ grid-row: 1;
151
+ grid-column: 2;
152
+ align-self: center;
153
+ justify-self: stretch;
154
+ inline-size: auto;
155
+ block-size: var(--skdx-border-width-thick);
156
+ }
157
+
158
+ :where(.skdx-timeline)[data-orientation='horizontal'] :where(.skdx-timeline__content) {
159
+ grid-row: 2;
160
+ grid-column: 1 / -1;
161
+ padding-block-end: 0;
162
+ padding-inline-end: var(--skdx-space-4);
163
+ text-align: start;
164
+ }
165
+
166
+ /* No "beside" on this axis, so the opposite region moves above the marker row instead. */
167
+ :where(.skdx-timeline)[data-orientation='horizontal']
168
+ :where(.skdx-timeline__item):has(.skdx-timeline__opposite) {
169
+ grid-template-rows: auto auto auto;
170
+ }
171
+
172
+ :where(.skdx-timeline)[data-orientation='horizontal'] :where(.skdx-timeline__opposite) {
173
+ grid-row: 1;
174
+ grid-column: 1 / -1;
175
+ text-align: start;
176
+ }
177
+
178
+ :where(.skdx-timeline)[data-orientation='horizontal']
179
+ :where(.skdx-timeline__item):has(.skdx-timeline__opposite)
180
+ :where(.skdx-timeline__indicator),
181
+ :where(.skdx-timeline)[data-orientation='horizontal']
182
+ :where(.skdx-timeline__item):has(.skdx-timeline__opposite)
183
+ :where(.skdx-timeline__separator) {
184
+ grid-row: 2;
185
+ }
186
+
187
+ :where(.skdx-timeline)[data-orientation='horizontal']
188
+ :where(.skdx-timeline__item):has(.skdx-timeline__opposite)
189
+ :where(.skdx-timeline__content) {
190
+ grid-row: 3;
191
+ }
192
+
193
+ /* track measures below 3:1 in dark themes and text-on-accent (meant for the accent fill) would be invisible here, hence the border and muted foreground override. */
194
+ :where(.skdx-timeline__item)[data-state='pending'] :where(.skdx-timeline__indicator) {
195
+ background-color: var(--skdx-color-track);
196
+ color: var(--skdx-color-text-muted);
197
+ border: var(--skdx-border-width-thin) solid var(--skdx-color-border-strong);
198
+ }
199
+
200
+ /* Ringed rather than recoloured, so it stays legible next to a complete dot in forced-colours mode too. */
201
+ :where(.skdx-timeline__item)[data-state='current'] :where(.skdx-timeline__indicator) {
202
+ box-shadow:
203
+ 0 0 0 var(--skdx-border-width-thin) var(--skdx-color-surface-default),
204
+ 0 0 0 var(--skdx-border-width-thick) var(--skdx-color-track-fill);
205
+ }
206
+ }