@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,150 @@
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
+ * Rating — a star scale, readable and settable. `data-size`'s
11
+ * rungs set a `font-size` the slotted icons inherit, and `md` gets its own
12
+ * selector so a rating can be sized back down to the default rung.
13
+ */
14
+ @layer skdx-components {
15
+ :where(.skdx-rating),
16
+ :where(.skdx-rating)[data-size='md'] {
17
+ --skdx-rating-item-size: var(--skdx-font-size-lg);
18
+ --skdx-rating-gap: var(--skdx-space-1);
19
+ }
20
+
21
+ :where(.skdx-rating)[data-size='sm'] {
22
+ --skdx-rating-item-size: var(--skdx-font-size-sm);
23
+ --skdx-rating-gap: calc(var(--skdx-space-1) / 2);
24
+ }
25
+
26
+ :where(.skdx-rating)[data-size='lg'] {
27
+ --skdx-rating-item-size: var(--skdx-font-size-2xl);
28
+ --skdx-rating-gap: var(--skdx-space-2);
29
+ }
30
+
31
+ :where(.skdx-rating) {
32
+ display: inline-flex;
33
+ align-items: center;
34
+ gap: var(--skdx-rating-gap);
35
+ font-size: var(--skdx-rating-item-size);
36
+ }
37
+
38
+ :where(.skdx-rating__item) {
39
+ display: inline-flex;
40
+ /* Inherited from the root's rung, so a slotted icon sized in `em` — or a
41
+ text star — scales with the whole scale. */
42
+ font-size: inherit;
43
+ position: relative;
44
+ /* The empty part of the scale, not a track: it has to read as "a star you
45
+ have not chosen". `--skdx-color-track` is tuned to sit almost invisibly
46
+ under a progress fill, which measured ~1.0:1 against the page here, and
47
+ `--skdx-color-border-strong` collapses onto the filled ink's CanvasText
48
+ when the skin runs on its fallbacks alone. */
49
+ color: var(--skdx-color-status-neutral-icon);
50
+ background: transparent;
51
+ border: 0;
52
+ cursor: pointer;
53
+ transition: color var(--skdx-motion-duration-fast) var(--skdx-motion-easing);
54
+ }
55
+
56
+ /* Filled stars use the warning ramp — the conventional "star" hue — rather
57
+ than the brand, so a rating does not restyle itself per theme accent. */
58
+ :where(.skdx-rating__item)[data-state='checked'],
59
+ :where(.skdx-rating__item)[data-highlighted] {
60
+ color: var(--skdx-color-status-warning-icon);
61
+ }
62
+
63
+ :where(.skdx-rating)[data-readonly] :where(.skdx-rating__item) {
64
+ cursor: default;
65
+ }
66
+
67
+ /* A disabled rating still has to be *readable* — it reports a value. Border
68
+ ink is tuned to sit quietly against a field and measured ~1.1:1 against the
69
+ page here, which erased the scale entirely. */
70
+ :where(.skdx-rating)[data-disabled] :where(.skdx-rating__item) {
71
+ color: var(--skdx-color-text-disabled);
72
+ cursor: not-allowed;
73
+ }
74
+
75
+ /* A single unavailable item, independent of the root's own disabled state —
76
+ it still has to read as excluded, checked or not. Ordered after the
77
+ checked/highlighted rules above, so a disabled item that also happens to
78
+ be checked shows as disabled. */
79
+ :where(.skdx-rating__item)[data-disabled] {
80
+ color: var(--skdx-color-text-disabled);
81
+ cursor: not-allowed;
82
+ }
83
+
84
+ /* The half star: a two-stop gradient clipped to the glyph — the one technique
85
+ needing no second copy of consumer-owned content. `> *` element children are
86
+ masked instead, since `background-clip: text` only clips text runs. CSS has no
87
+ logical gradient direction, so the RTL mirror below is written by hand. */
88
+ :where(.skdx-rating__item)[data-half] {
89
+ background-image: linear-gradient(
90
+ to right,
91
+ var(--skdx-color-status-warning-icon) 50%,
92
+ var(--skdx-color-status-neutral-icon) 50%
93
+ );
94
+ -webkit-background-clip: text;
95
+ background-clip: text;
96
+ color: transparent;
97
+ }
98
+
99
+ :where([dir='rtl']) :where(.skdx-rating__item)[data-half] {
100
+ background-image: linear-gradient(
101
+ to left,
102
+ var(--skdx-color-status-warning-icon) 50%,
103
+ var(--skdx-color-status-neutral-icon) 50%
104
+ );
105
+ }
106
+
107
+ :where(.skdx-rating__item)[data-half] > * {
108
+ color: var(--skdx-color-status-warning-icon);
109
+ -webkit-mask-image: linear-gradient(to right, black 50%, transparent 50%);
110
+ mask-image: linear-gradient(to right, black 50%, transparent 50%);
111
+ }
112
+
113
+ :where([dir='rtl']) :where(.skdx-rating__item)[data-half] > * {
114
+ -webkit-mask-image: linear-gradient(to left, black 50%, transparent 50%);
115
+ mask-image: linear-gradient(to left, black 50%, transparent 50%);
116
+ }
117
+
118
+ /* Highlighting reaches past the half star — pointing at it means the whole
119
+ star — and needs the extra attribute to outrank the gradient above. */
120
+ :where(.skdx-rating__item)[data-half][data-highlighted] {
121
+ background-image: none;
122
+ color: var(--skdx-color-status-warning-icon);
123
+ }
124
+
125
+ :where(.skdx-rating__item)[data-half][data-highlighted] > * {
126
+ -webkit-mask-image: none;
127
+ mask-image: none;
128
+ }
129
+
130
+ @media (forced-colors: active) {
131
+ :where(.skdx-rating__item)[data-state='checked'] {
132
+ color: Highlight;
133
+ }
134
+
135
+ /* Forced colours drop background images, so the gradient vanishes and a
136
+ transparent glyph would leave nothing at all. Fall back to the filled
137
+ colour: a half star reads as full, which is wrong by half a star and not
138
+ invisible. */
139
+ :where(.skdx-rating__item)[data-half] {
140
+ background-image: none;
141
+ color: Highlight;
142
+ }
143
+
144
+ :where(.skdx-rating__item)[data-half] > * {
145
+ -webkit-mask-image: none;
146
+ mask-image: none;
147
+ color: Highlight;
148
+ }
149
+ }
150
+ }
@@ -0,0 +1,51 @@
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
+ /** ResetPasswordPage — a new password with its rules and confirmation, centred on the page. */
10
+ @layer skdx-components {
11
+ :where(.skdx-reset-password-page) {
12
+ display: flex;
13
+ justify-content: center;
14
+ padding: var(--skdx-space-8);
15
+ }
16
+
17
+ :where(.skdx-reset-password-page__panel) {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: var(--skdx-space-4);
21
+
22
+ inline-size: 100%;
23
+ min-inline-size: 0;
24
+ max-inline-size: 24rem;
25
+ padding: var(--skdx-space-6);
26
+
27
+ background-color: var(--skdx-color-surface-raised);
28
+ border: var(--skdx-border-width-thin) solid var(--skdx-color-border-default);
29
+ border-radius: var(--skdx-radius-lg);
30
+ box-shadow: var(--skdx-shadow-md);
31
+ }
32
+
33
+ :where(.skdx-reset-password-page__requirements) {
34
+ font-size: var(--skdx-font-size-sm);
35
+ color: var(--skdx-color-text-muted);
36
+ overflow-wrap: anywhere;
37
+ }
38
+
39
+ :where(.skdx-reset-password-page__footer) {
40
+ font-size: var(--skdx-font-size-sm);
41
+ color: var(--skdx-color-text-muted);
42
+ text-align: center;
43
+ overflow-wrap: anywhere;
44
+ }
45
+
46
+ @media (forced-colors: active) {
47
+ :where(.skdx-reset-password-page__panel) {
48
+ border-color: CanvasText;
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,131 @@
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
+ /* Every rung is at least 24px on the resize axis (WCAG 2.2 SC 2.5.8), even though the painted line stays one hairline. */
10
+ @layer skdx-components {
11
+ :where(.skdx-resizable) {
12
+ display: flex;
13
+ inline-size: 100%;
14
+
15
+ --skdx-resizable-handle-size: 1.5rem;
16
+ }
17
+
18
+ :where(.skdx-resizable)[data-size='sm'] {
19
+ --skdx-resizable-handle-size: 1.5rem;
20
+ }
21
+
22
+ :where(.skdx-resizable)[data-size='lg'] {
23
+ --skdx-resizable-handle-size: 2rem;
24
+ }
25
+
26
+ :where(.skdx-resizable)[data-orientation='vertical'] {
27
+ flex-direction: column;
28
+ }
29
+
30
+ :where(.skdx-resizable__panel) {
31
+ overflow: hidden;
32
+ --skdx-focus-ring-offset: var(--skdx-focus-ring-offset-inset);
33
+ }
34
+
35
+ :where(.skdx-resizable__handle) {
36
+ position: relative;
37
+ /* Above both panels: the negative margin below overlaps this box onto them, so the handle must win that overlap for pointer events. */
38
+ z-index: 1;
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ flex: none;
43
+
44
+ inline-size: var(--skdx-resizable-handle-size, 1.5rem);
45
+ /* Negative margin cancels the handle's own width, since the panels' inline flex-basis already sums to 100% without it. */
46
+ margin-inline: calc(var(--skdx-resizable-handle-size, 1.5rem) / -2);
47
+ background-color: transparent;
48
+ border: 0;
49
+ padding: 0;
50
+ cursor: col-resize;
51
+ touch-action: none;
52
+ }
53
+
54
+ :where(.skdx-resizable)[data-orientation='vertical'] :where(.skdx-resizable__handle) {
55
+ inline-size: auto;
56
+ block-size: var(--skdx-resizable-handle-size, 1.5rem);
57
+ margin-inline: 0;
58
+ margin-block: calc(var(--skdx-resizable-handle-size, 1.5rem) / -2);
59
+ cursor: row-resize;
60
+ }
61
+
62
+ :where(.skdx-resizable__handle)::after {
63
+ content: '';
64
+ background-color: var(--skdx-color-separator);
65
+ inline-size: var(--skdx-border-width-thin);
66
+ block-size: 100%;
67
+ }
68
+
69
+ :where(.skdx-resizable)[data-orientation='vertical'] :where(.skdx-resizable__handle)::after {
70
+ inline-size: 100%;
71
+ block-size: var(--skdx-border-width-thin);
72
+ }
73
+
74
+ /* data-dragging keeps the divider's active paint once the pointer leaves the handle during a drag; :hover covers the approach. */
75
+ :where(.skdx-resizable__handle):hover::after,
76
+ :where(.skdx-resizable__handle)[data-dragging]::after {
77
+ background-color: var(--skdx-color-border-accent);
78
+ }
79
+
80
+ :where(.skdx-resizable__handle)[data-disabled] {
81
+ cursor: default;
82
+ }
83
+
84
+ :where(.skdx-resizable__resize-trigger) {
85
+ flex: none;
86
+ position: relative;
87
+ z-index: 1;
88
+ inline-size: var(--skdx-space-1);
89
+ /* Same fix as __handle above. */
90
+ margin-inline: calc(var(--skdx-space-1) / -2);
91
+ background-color: var(--skdx-color-separator);
92
+ cursor: col-resize;
93
+ touch-action: none;
94
+ }
95
+
96
+ :where(.skdx-resizable)[data-orientation='vertical'] :where(.skdx-resizable__resize-trigger) {
97
+ inline-size: auto;
98
+ block-size: var(--skdx-space-1);
99
+ margin-inline: 0;
100
+ margin-block: calc(var(--skdx-space-1) / -2);
101
+ cursor: row-resize;
102
+ }
103
+
104
+ :where(.skdx-resizable__resize-trigger):hover,
105
+ :where(.skdx-resizable__resize-trigger)[data-dragging] {
106
+ background-color: var(--skdx-color-border-accent);
107
+ }
108
+
109
+ :where(.skdx-resizable__resize-trigger)[data-disabled] {
110
+ cursor: default;
111
+ }
112
+
113
+ @media (forced-colors: active) {
114
+ :where(.skdx-resizable__handle)::after,
115
+ :where(.skdx-resizable__resize-trigger) {
116
+ background-color: CanvasText;
117
+ }
118
+
119
+ :where(.skdx-resizable__handle):hover::after,
120
+ :where(.skdx-resizable__handle)[data-dragging]::after,
121
+ :where(.skdx-resizable__resize-trigger):hover,
122
+ :where(.skdx-resizable__resize-trigger)[data-dragging] {
123
+ background-color: Highlight;
124
+ }
125
+
126
+ :where(.skdx-resizable__handle)[data-disabled]::after,
127
+ :where(.skdx-resizable__resize-trigger)[data-disabled] {
128
+ background-color: GrayText;
129
+ }
130
+ }
131
+ }
@@ -0,0 +1,101 @@
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
+ * ScrollArea — a scrollable region with a styled scrollbar. The native scrollbar
11
+ * is hidden only where a custom one is rendered; the region keeps real scrolling,
12
+ * so keyboard scrolling, momentum and `scroll-into-view` keep working.
13
+ */
14
+ @layer skdx-components {
15
+ :where(.skdx-scroll-area) {
16
+ position: relative;
17
+ overflow: hidden;
18
+ --skdx-focus-ring-offset: var(--skdx-focus-ring-offset-inset);
19
+
20
+ /* data-size drives both the track thickness and the thumb's grab length. */
21
+ --skdx-scroll-area-track-size: var(--skdx-space-2);
22
+ --skdx-scroll-area-thumb-min-length: var(--skdx-space-6);
23
+ }
24
+
25
+ :where(.skdx-scroll-area)[data-size='sm'] {
26
+ --skdx-scroll-area-track-size: var(--skdx-space-1);
27
+ --skdx-scroll-area-thumb-min-length: var(--skdx-space-4);
28
+ }
29
+
30
+ :where(.skdx-scroll-area)[data-size='lg'] {
31
+ --skdx-scroll-area-track-size: var(--skdx-space-3);
32
+ --skdx-scroll-area-thumb-min-length: var(--skdx-space-8);
33
+ }
34
+
35
+ :where(.skdx-scroll-area__viewport) {
36
+ inline-size: 100%;
37
+ block-size: 100%;
38
+ overflow: auto;
39
+ --skdx-focus-ring-offset: var(--skdx-focus-ring-offset-inset);
40
+ scrollbar-width: none;
41
+ }
42
+
43
+ :where(.skdx-scroll-area__viewport)::-webkit-scrollbar {
44
+ display: none;
45
+ }
46
+
47
+ /* position: absolute, not in flow: the bar is the thumb's positioning context for the component's inline absolute offsets. */
48
+ :where(.skdx-scroll-area__scrollbar) {
49
+ position: absolute;
50
+ display: flex;
51
+ padding: 2px;
52
+ background: transparent;
53
+ transition: opacity var(--skdx-motion-duration-fast) var(--skdx-motion-easing);
54
+ touch-action: none;
55
+ user-select: none;
56
+ }
57
+
58
+ /* Angular/Web Components mark a non-overflowing axis [hidden] rather than unmounting; author display: flex above beats it on origin, so it must be restated here. */
59
+ :where(.skdx-scroll-area__scrollbar)[hidden] {
60
+ display: none;
61
+ }
62
+
63
+ :where(.skdx-scroll-area__scrollbar)[data-orientation='vertical'] {
64
+ inset-block: 0;
65
+ inset-inline-end: 0;
66
+ inline-size: var(--skdx-scroll-area-track-size, var(--skdx-space-2));
67
+ }
68
+
69
+ :where(.skdx-scroll-area__scrollbar)[data-orientation='horizontal'] {
70
+ inset-inline: 0;
71
+ inset-block-end: 0;
72
+ flex-direction: column;
73
+ block-size: var(--skdx-scroll-area-track-size, var(--skdx-space-2));
74
+ }
75
+
76
+ :where(.skdx-scroll-area__thumb) {
77
+ flex: 1;
78
+ background-color: var(--skdx-color-border-strong);
79
+ border-radius: var(--skdx-radius-full);
80
+ /* Comfortably grabbable even when the bar is thin. */
81
+ min-block-size: var(--skdx-scroll-area-thumb-min-length, var(--skdx-space-6));
82
+ }
83
+
84
+ :where(.skdx-scroll-area__thumb):hover {
85
+ background-color: var(--skdx-color-text-muted);
86
+ }
87
+
88
+ :where(.skdx-scroll-area__corner) {
89
+ background: transparent;
90
+ }
91
+
92
+ @media (forced-colors: active) {
93
+ :where(.skdx-scroll-area__thumb) {
94
+ background-color: CanvasText;
95
+ }
96
+
97
+ :where(.skdx-scroll-area__thumb):hover {
98
+ background-color: Highlight;
99
+ }
100
+ }
101
+ }
@@ -0,0 +1,239 @@
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 '_trigger.css';
8
+ @import '_overlay.css';
9
+ @import '_collection.css';
10
+ @import '_hit-target.css';
11
+
12
+ /** Select — choose one option from a list, in a popup, or several as removable tags. */
13
+ @layer skdx-components {
14
+ :where(.skdx-select__content) {
15
+ padding: var(--skdx-overlay-padding);
16
+ }
17
+
18
+ /* The popup matches the trigger's width so the options line up under the
19
+ value they replace. The popper helper measures the anchor and writes this. */
20
+ :where(.skdx-select__content)[data-match-width] {
21
+ inline-size: var(--skdx-select-trigger-width, auto);
22
+ }
23
+
24
+ /* `data-size`/`data-shape` resolve on the trigger; the `md`/`rounded`
25
+ defaults stay in `_trigger.css` as the base rule. */
26
+ :where(.skdx-select__trigger)[data-size='sm'] {
27
+ block-size: var(--skdx-control-height-sm);
28
+ padding-inline: var(--skdx-control-padding-sm);
29
+ font-size: var(--skdx-font-size-xs);
30
+ }
31
+
32
+ :where(.skdx-select__trigger)[data-size='lg'] {
33
+ block-size: var(--skdx-control-height-lg);
34
+ padding-inline: var(--skdx-control-padding-lg);
35
+ font-size: var(--skdx-font-size-md);
36
+ }
37
+
38
+ :where(.skdx-select__trigger)[data-shape='rounded'] {
39
+ border-radius: var(--skdx-radius-md);
40
+ }
41
+
42
+ :where(.skdx-select__trigger)[data-shape='square'] {
43
+ border-radius: 0;
44
+ }
45
+
46
+ :where(.skdx-select__trigger)[data-shape='pill'] {
47
+ border-radius: var(--skdx-radius-full);
48
+ }
49
+
50
+ :where(.skdx-select__item-indicator) {
51
+ margin-inline-start: auto;
52
+ }
53
+
54
+ /* No padding of its own: `__content` already pays the overlay padding, and
55
+ the viewport sits inside it. Both declaring it made the popup's inset
56
+ twice the shared value. */
57
+ :where(.skdx-select__viewport) {
58
+ padding: 0;
59
+ }
60
+
61
+ :where(.skdx-select__item-text) {
62
+ overflow: hidden;
63
+ /* Custom `renderOption` markup (its own flex row) needs the same room a
64
+ plain label gets from the item; without a grow factor a wrapping
65
+ inline span shrinks to content, and a child's `width: 100%` inside it
66
+ resolves against that same shrunk box instead of the item's row. */
67
+ flex: 1 1 0%;
68
+ min-inline-size: 0;
69
+ text-overflow: ellipsis;
70
+ white-space: nowrap;
71
+ --skdx-focus-ring-offset: var(--skdx-focus-ring-offset-inset);
72
+ }
73
+
74
+ /* One `Value` renders every chip in a row; without the gap a multiple
75
+ selection reads as a run of unseparated words. */
76
+ :where(.skdx-select__value)[data-multiple] {
77
+ display: inline-flex;
78
+ flex-wrap: wrap;
79
+ align-items: center;
80
+ gap: var(--skdx-space-1);
81
+ }
82
+
83
+ /* Styled from tag.css's tokens rather than by importing it: these are inert
84
+ read-outs inside a `<button>` (a nested remove control would be invalid
85
+ HTML), so they take the tag's shape without its interactive parts. */
86
+ :where(.skdx-select__value) [data-chip] {
87
+ display: inline-flex;
88
+ align-items: center;
89
+ gap: var(--skdx-space-1);
90
+
91
+ max-inline-size: 12ch;
92
+ overflow: hidden;
93
+ padding-inline: var(--skdx-space-2);
94
+
95
+ color: var(--skdx-color-status-neutral-text);
96
+ background-color: var(--skdx-color-status-neutral-bg);
97
+ border: var(--skdx-border-width-thin) solid var(--skdx-color-status-neutral-border);
98
+ border-radius: var(--skdx-radius-md);
99
+
100
+ font-size: var(--skdx-font-size-xs);
101
+ line-height: var(--skdx-font-line-height-tight);
102
+ white-space: nowrap;
103
+ text-overflow: ellipsis;
104
+ }
105
+
106
+ /* The chevron. Rotates rather than swaps, so the open and closed states are
107
+ one object in two positions. */
108
+ :where(.skdx-select__icon) {
109
+ display: inline-flex;
110
+ flex: none;
111
+ margin-inline-start: auto;
112
+ inline-size: var(--skdx-icon-size-md);
113
+ block-size: var(--skdx-icon-size-md);
114
+ color: var(--skdx-color-text-muted);
115
+ transition: rotate var(--skdx-motion-duration-fast) var(--skdx-motion-easing);
116
+ }
117
+
118
+ :where(.skdx-select__trigger)[data-state='open'] :where(.skdx-select__icon) {
119
+ rotate: 180deg;
120
+ }
121
+
122
+ /* The tag strip a `multiple` selection draws beside the field. Wraps rather
123
+ than scrolls: six chosen values are readable stacked, not truncated. */
124
+ :where(.skdx-select__tag-list) {
125
+ display: flex;
126
+ flex-wrap: wrap;
127
+ align-items: center;
128
+ gap: var(--skdx-select-tag-gap);
129
+ flex: 1;
130
+ min-inline-size: 0;
131
+ --skdx-select-tag-gap: var(--skdx-space-1);
132
+ }
133
+
134
+ :where(.skdx-select__tag-list)[data-density='compact'] {
135
+ --skdx-select-tag-gap: 0px;
136
+ }
137
+
138
+ :where(.skdx-select__tag-list)[data-density='comfortable'] {
139
+ --skdx-select-tag-gap: var(--skdx-space-2);
140
+ }
141
+
142
+ :where(.skdx-select__tag) {
143
+ display: inline-flex;
144
+ align-items: center;
145
+ gap: var(--skdx-space-1);
146
+ max-inline-size: 100%;
147
+ min-inline-size: 0;
148
+
149
+ padding-inline: var(--skdx-space-2);
150
+ padding-block: 0;
151
+ min-block-size: var(--skdx-control-height-sm);
152
+
153
+ font-size: var(--skdx-font-size-xs);
154
+ color: var(--skdx-select-tag-text);
155
+ background-color: var(--skdx-select-tag-bg);
156
+ border: var(--skdx-border-width-thin) solid var(--skdx-select-tag-border);
157
+ border-radius: var(--skdx-radius-sm);
158
+
159
+ /* Its own three names rather than the shared --skdx-status-* trio: those
160
+ inherit, so a Select inside an Alert would take that alert's severity. */
161
+ --skdx-select-tag-text: var(--skdx-color-text-default);
162
+ --skdx-select-tag-bg: var(--skdx-color-surface-sunken);
163
+ --skdx-select-tag-border: var(--skdx-color-border-subtle);
164
+ }
165
+
166
+ :where(.skdx-select__tag)[data-status='info'] {
167
+ --skdx-select-tag-text: var(--skdx-color-status-info-text);
168
+ --skdx-select-tag-bg: var(--skdx-color-status-info-bg);
169
+ --skdx-select-tag-border: var(--skdx-color-status-info-border);
170
+ }
171
+
172
+ :where(.skdx-select__tag)[data-status='success'] {
173
+ --skdx-select-tag-text: var(--skdx-color-status-success-text);
174
+ --skdx-select-tag-bg: var(--skdx-color-status-success-bg);
175
+ --skdx-select-tag-border: var(--skdx-color-status-success-border);
176
+ }
177
+
178
+ :where(.skdx-select__tag)[data-status='warning'] {
179
+ --skdx-select-tag-text: var(--skdx-color-status-warning-text);
180
+ --skdx-select-tag-bg: var(--skdx-color-status-warning-bg);
181
+ --skdx-select-tag-border: var(--skdx-color-status-warning-border);
182
+ }
183
+
184
+ :where(.skdx-select__tag)[data-status='danger'] {
185
+ --skdx-select-tag-text: var(--skdx-color-status-danger-text);
186
+ --skdx-select-tag-bg: var(--skdx-color-status-danger-bg);
187
+ --skdx-select-tag-border: var(--skdx-color-status-danger-border);
188
+ }
189
+
190
+ /* position: relative is what _hit-target.css fills with the 24px minimum. */
191
+ :where(.skdx-select__tag-remove) {
192
+ position: relative;
193
+ display: inline-flex;
194
+ align-items: center;
195
+ justify-content: center;
196
+ color: var(--skdx-color-text-muted);
197
+ background: transparent;
198
+ border: 0;
199
+ border-radius: var(--skdx-radius-sm);
200
+ cursor: pointer;
201
+ }
202
+
203
+ :where(.skdx-select__tag-remove):hover {
204
+ color: var(--skdx-color-text-danger);
205
+ }
206
+
207
+ /* The filter field. Borderless because the field box around it draws the
208
+ boundary. */
209
+ :where(.skdx-select__input) {
210
+ flex: 1;
211
+ min-inline-size: var(--skdx-space-10);
212
+ color: var(--skdx-color-field-text);
213
+ background: transparent;
214
+ border: 0;
215
+ font-size: var(--skdx-font-size-sm);
216
+ }
217
+
218
+ /* Empties the whole selection and the draft text in one press. A real tab
219
+ stop of its own — unlike TagRemove, which deliberately is not one — so
220
+ `:disabled` carries the state rather than `[data-disabled]` alone. */
221
+ :where(.skdx-select__clear) {
222
+ display: inline-flex;
223
+ align-items: center;
224
+ justify-content: center;
225
+ color: var(--skdx-color-text-muted);
226
+ background: transparent;
227
+ border: 0;
228
+ cursor: pointer;
229
+ }
230
+
231
+ :where(.skdx-select__clear):hover:not(:disabled) {
232
+ color: var(--skdx-color-text-danger);
233
+ }
234
+
235
+ :where(.skdx-select__clear):disabled {
236
+ color: var(--skdx-color-text-disabled);
237
+ cursor: default;
238
+ }
239
+ }