@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,79 @@
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 '_actuator.css';
8
+ @import '_trigger.css';
9
+ @import '_overlay.css';
10
+ @import 'calendar.css';
11
+
12
+ /** DatePicker — a DateField that opens a Calendar. */
13
+ @layer skdx-components {
14
+ :where(.skdx-date-picker__content) {
15
+ padding: var(--skdx-space-2);
16
+ min-inline-size: 0;
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: var(--skdx-space-2);
20
+ }
21
+
22
+ :where(.skdx-date-picker__content[hidden]) {
23
+ display: none;
24
+ }
25
+
26
+ :where(.skdx-date-picker__calendar) {
27
+ padding: var(--skdx-space-2);
28
+ }
29
+
30
+ :where(.skdx-date-picker__time-field) {
31
+ display: flex;
32
+ align-items: center;
33
+ gap: var(--skdx-space-2);
34
+ padding-inline: var(--skdx-space-2);
35
+ padding-block-end: var(--skdx-space-2);
36
+ }
37
+
38
+ :where(.skdx-date-picker__input) {
39
+ flex: 1;
40
+ min-inline-size: 0;
41
+ color: var(--skdx-color-field-text);
42
+ background: transparent;
43
+ border: 0;
44
+ font-size: var(--skdx-font-size-sm);
45
+ }
46
+
47
+ :where(.skdx-date-picker__trigger):hover:not([data-disabled]) {
48
+ border-color: var(--skdx-color-field-border-hover);
49
+ background-color: var(--skdx-color-field-bg-hover);
50
+ }
51
+
52
+ /* Invalid paints the trigger, not the panel: the trigger is what a filled-in
53
+ form still shows after the panel closes. */
54
+ :where(.skdx-date-picker__trigger)[data-invalid] {
55
+ border-color: var(--skdx-color-field-border-invalid);
56
+ border-width: var(--skdx-border-width-thick);
57
+ }
58
+
59
+ @media (forced-colors: active) {
60
+ /* Forced colors flattens every author colour, so the invalid border is
61
+ gone unless it is redrawn thicker — thickness is one of the few author
62
+ decisions the mode preserves. */
63
+ :where(.skdx-date-picker__trigger)[data-invalid] {
64
+ border-style: double;
65
+ }
66
+ }
67
+
68
+ /* _actuator.css groups this with Popover's and Tour's close buttons as
69
+ "icon-only, known to carry no label" and squares it off with
70
+ padding-inline: 0. This one does carry a label — the component's own doc
71
+ example is `<DatePickerClose>Close</DatePickerClose>` — so the square
72
+ clipped the word by 2px. Declared in skdx-components, so it wins over the
73
+ skdx-base default on layer order alone, the mechanism that file documents
74
+ for exactly this case. */
75
+ :where(.skdx-date-picker__close) {
76
+ inline-size: auto;
77
+ padding-inline: var(--skdx-control-padding-md);
78
+ }
79
+ }
@@ -0,0 +1,161 @@
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 '_actuator.css';
8
+ @import '_overlay.css';
9
+
10
+ @layer skdx-components {
11
+ :where(.skdx-dialog__content) {
12
+ position: fixed;
13
+ inset-block-start: 50%;
14
+ /* Physical, to pair with translate below (also physical): inset-inline-start would flip under RTL while translate kept shifting the same physical direction. */
15
+ left: 50%;
16
+ translate: -50% -50%;
17
+
18
+ inline-size: min(var(--skdx-overlay-width-md, 32rem), calc(100vw - var(--skdx-space-8)));
19
+ /* Caps at the viewport so a long dialog scrolls internally rather than pushing its own actions off-screen. */
20
+ max-block-size: calc(100dvh - var(--skdx-space-8));
21
+ display: flex;
22
+ flex-direction: column;
23
+
24
+ padding: var(--skdx-space-6);
25
+ gap: var(--skdx-space-4);
26
+ border-radius: var(--skdx-overlay-radius);
27
+ z-index: var(--skdx-z-index-modal);
28
+ }
29
+
30
+ /* data-size sits inside :where(), unlike Button's sibling form, so this stays zero-specificity like the narrow-viewport rule below — source order is what lets that rule override a sized dialog on a phone. */
31
+ :where(.skdx-dialog__content[data-size='sm']) {
32
+ inline-size: min(var(--skdx-overlay-width-sm, 24rem), calc(100vw - var(--skdx-space-8)));
33
+ }
34
+
35
+ :where(.skdx-dialog__content[data-size='md']) {
36
+ inline-size: min(var(--skdx-overlay-width-md, 32rem), calc(100vw - var(--skdx-space-8)));
37
+ }
38
+
39
+ :where(.skdx-dialog__content[data-size='lg']) {
40
+ inline-size: min(var(--skdx-overlay-width-lg, 48rem), calc(100vw - var(--skdx-space-8)));
41
+ }
42
+
43
+ /* A confirmation carries a title, a sentence and two buttons: the widest rung
44
+ leaves the sentence stranded across the panel. */
45
+ :where(.skdx-dialog__content[role='alertdialog']) {
46
+ inline-size: min(var(--skdx-overlay-width-sm, 24rem), calc(100vw - var(--skdx-space-8)));
47
+ }
48
+
49
+ /* Severity accent on the panel; the derived Action button paints itself
50
+ through Button's own status axis, so no button rule belongs here. */
51
+ :where(.skdx-dialog__content[data-status]) {
52
+ border-block-start: var(--skdx-border-width-thicker) solid transparent;
53
+ }
54
+
55
+ :where(.skdx-dialog__content[data-status='info']) {
56
+ border-block-start-color: var(--skdx-color-status-info-border);
57
+ }
58
+
59
+ :where(.skdx-dialog__content[data-status='success']) {
60
+ border-block-start-color: var(--skdx-color-status-success-border);
61
+ }
62
+
63
+ :where(.skdx-dialog__content[data-status='warning']) {
64
+ border-block-start-color: var(--skdx-color-status-warning-border);
65
+ }
66
+
67
+ :where(.skdx-dialog__content[data-status='danger']) {
68
+ border-block-start-color: var(--skdx-color-status-danger-border);
69
+ }
70
+
71
+ /* Ports rendering a native <dialog> keep it mounted while closed; author display: flex above beats the UA's dialog:not([open]) rule on origin, so it must be restated here. */
72
+ :where(dialog.skdx-dialog__content:not([open])) {
73
+ display: none;
74
+ }
75
+
76
+ :where(.skdx-dialog__title) {
77
+ /* Renders an `<h2>`; the UA heading margin would double the content's own `gap`. */
78
+ margin: 0;
79
+ font-size: var(--skdx-font-size-lg);
80
+ font-weight: var(--skdx-font-weight-semibold);
81
+ line-height: var(--skdx-font-line-height-tight);
82
+ color: var(--skdx-color-text-default);
83
+ }
84
+
85
+ :where(.skdx-dialog__description) {
86
+ /* Renders a `<p>`; same UA-margin issue as the title above. */
87
+ margin: 0;
88
+ font-size: var(--skdx-font-size-sm);
89
+ line-height: var(--skdx-font-line-height-relaxed);
90
+ color: var(--skdx-color-text-muted);
91
+ }
92
+
93
+ /* body and footer are class hooks, not parts: the Vue, Svelte and Angular
94
+ recipes wrap their footer slot in one and Svelte also wraps the body;
95
+ React and Web Components leave both to the consumer. */
96
+
97
+ /* Scoped to a direct child of content, so a DialogClose reused inside .skdx-dialog__footer stays in flow instead of being pulled out by position: absolute. */
98
+ :where(.skdx-dialog__content) > :where(.skdx-dialog__close),
99
+ :where(.skdx-dialog__content)
100
+ > :where(:not([class*='skdx-']):has(> .skdx-dialog__close))
101
+ > :where(.skdx-dialog__close) {
102
+ position: absolute;
103
+ inset-block-start: var(--skdx-space-3);
104
+ /* Logical, so the close button moves to the left edge under RTL. */
105
+ inset-inline-end: var(--skdx-space-3);
106
+ }
107
+
108
+ :where(.skdx-dialog__close) {
109
+ display: inline-flex;
110
+ align-items: center;
111
+ justify-content: center;
112
+ min-inline-size: var(--skdx-target-min);
113
+ min-block-size: var(--skdx-target-min);
114
+
115
+ color: var(--skdx-color-text-muted);
116
+ background: transparent;
117
+ border: 0;
118
+ border-radius: var(--skdx-radius-sm);
119
+ cursor: pointer;
120
+ }
121
+
122
+ :where(.skdx-dialog__close):hover {
123
+ color: var(--skdx-color-text-default);
124
+ background-color: var(--skdx-color-action-ghost-bg-hover);
125
+ }
126
+
127
+ /* Narrow viewports: a centred card with margins wastes the screen, so the
128
+ dialog becomes a full-width sheet anchored to the bottom. */
129
+ @media (max-width: 40rem) {
130
+ :where(.skdx-dialog__content) {
131
+ inline-size: 100vw;
132
+ max-inline-size: 100vw;
133
+ inset-block-start: auto;
134
+ inset-block-end: 0;
135
+ inset-inline-start: 0;
136
+ translate: none;
137
+ border-start-start-radius: var(--skdx-overlay-radius);
138
+ border-start-end-radius: var(--skdx-overlay-radius);
139
+ border-end-start-radius: 0;
140
+ border-end-end-radius: 0;
141
+ }
142
+ }
143
+
144
+ :where(.skdx-dialog__body) {
145
+ flex: 1;
146
+ min-block-size: 0;
147
+ overflow: auto;
148
+ --skdx-focus-ring-offset: var(--skdx-focus-ring-offset-inset);
149
+
150
+ font-size: var(--skdx-font-size-sm);
151
+ line-height: var(--skdx-font-line-height-relaxed);
152
+ color: var(--skdx-color-text-default);
153
+ }
154
+
155
+ :where(.skdx-dialog__footer) {
156
+ display: flex;
157
+ justify-content: flex-end;
158
+ gap: var(--skdx-space-2);
159
+ flex-wrap: wrap;
160
+ }
161
+ }
@@ -0,0 +1,64 @@
1
+ /*
2
+ * Copyright (c) 2026 SkandaDX
3
+ * This file is part of the SkandaDX organization.
4
+ * Licensed under the MIT License. See LICENSE in the repository root.
5
+ */
6
+
7
+ @import '../base.css';
8
+
9
+ /**
10
+ * Divider — a one-pixel rule: a painted background, not a border, so one rule
11
+ * serves both orientations. Every package renders an `<hr>`, so `margin: 0` and
12
+ * `border: 0` are UA resets, not decoration.
13
+ */
14
+ @layer skdx-components {
15
+ :where(.skdx-divider) {
16
+ --skdx-divider-color: var(--skdx-color-separator);
17
+ --skdx-divider-thickness: var(--skdx-border-width-thin);
18
+ --skdx-divider-inset: var(--skdx-space-4);
19
+ /* A vertical separator with nothing beside it wraps onto a flex line of
20
+ its own — a lone `stretch`ed item on an empty line has nothing to
21
+ stretch to and collapses to 0 height. This floor keeps it visible on
22
+ its own; stretch still wins whenever a taller row sibling is there to
23
+ set the line height. It is a separator-owned property rather than
24
+ `--skdx-control-height-md` because the height of a medium control has no
25
+ relationship to the content this divides. */
26
+ --skdx-divider-min-length: var(--skdx-control-height-md);
27
+
28
+ flex: none;
29
+ margin: 0;
30
+ border: 0;
31
+ background-color: var(--skdx-divider-color);
32
+ }
33
+
34
+ :where(.skdx-divider)[data-orientation='horizontal'] {
35
+ inline-size: 100%;
36
+ block-size: var(--skdx-divider-thickness);
37
+ }
38
+
39
+ :where(.skdx-divider)[data-orientation='vertical'] {
40
+ inline-size: var(--skdx-divider-thickness);
41
+ /* Fills the flex line it sits in rather than assuming a height. */
42
+ align-self: stretch;
43
+ block-size: auto;
44
+ min-block-size: var(--skdx-divider-min-length);
45
+ }
46
+
47
+ /* A rule that starts and ends inside the padding of the list it
48
+ divides, rather than running the full bleed. Logical, so it flips with the
49
+ writing direction. */
50
+ :where(.skdx-divider)[data-inset='inset'][data-orientation='horizontal'] {
51
+ inline-size: auto;
52
+ margin-inline: var(--skdx-divider-inset);
53
+ }
54
+
55
+ :where(.skdx-divider)[data-inset='inset'][data-orientation='vertical'] {
56
+ margin-block: var(--skdx-divider-inset);
57
+ }
58
+
59
+ @media (forced-colors: active) {
60
+ :where(.skdx-divider) {
61
+ background-color: CanvasText;
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,166 @@
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 '_actuator.css';
8
+ @import '_overlay.css';
9
+
10
+ /* data-side is physical and already resolved (DrawerContent runs a logical placement through resolvePhysicalSide), so inset-inline-start here would pin the wrong edge under RTL. */
11
+ @layer skdx-components {
12
+ :where(.skdx-drawer__content) {
13
+ position: fixed;
14
+ z-index: var(--skdx-z-index-modal);
15
+
16
+ display: flex;
17
+ flex-direction: column;
18
+ gap: var(--skdx-space-4);
19
+
20
+ padding: var(--skdx-space-6);
21
+ background-color: var(--skdx-color-surface-raised);
22
+ box-shadow: var(--skdx-shadow-overlay);
23
+ /* Square against the attached edge; radius is added per side below for the two free corners only. */
24
+ border-radius: 0;
25
+ max-block-size: 100dvh;
26
+ overflow: auto;
27
+ --skdx-focus-ring-offset: var(--skdx-focus-ring-offset-inset);
28
+ }
29
+
30
+ /* Angular/Web Components keep a closed drawer mounted and [hidden]; author display: flex above beats it on origin, so it must be restated here. */
31
+ :where(.skdx-drawer__content)[hidden] {
32
+ display: none;
33
+ }
34
+
35
+ :where(.skdx-drawer__content)[data-side='left'] {
36
+ inset-block: 0;
37
+ left: 0;
38
+ inline-size: min(20rem, 90vw);
39
+ border-top-right-radius: var(--skdx-overlay-radius);
40
+ border-bottom-right-radius: var(--skdx-overlay-radius);
41
+ }
42
+
43
+ :where(.skdx-drawer__content)[data-side='right'] {
44
+ inset-block: 0;
45
+ right: 0;
46
+ inline-size: min(20rem, 90vw);
47
+ border-top-left-radius: var(--skdx-overlay-radius);
48
+ border-bottom-left-radius: var(--skdx-overlay-radius);
49
+ }
50
+
51
+ :where(.skdx-drawer__content)[data-side='top'] {
52
+ inset-inline: 0;
53
+ inset-block-start: 0;
54
+ block-size: auto;
55
+ border-end-start-radius: var(--skdx-overlay-radius);
56
+ border-end-end-radius: var(--skdx-overlay-radius);
57
+ }
58
+
59
+ :where(.skdx-drawer__content)[data-side='bottom'] {
60
+ inset-inline: 0;
61
+ inset-block-end: 0;
62
+ block-size: auto;
63
+ border-start-start-radius: var(--skdx-overlay-radius);
64
+ border-start-end-radius: var(--skdx-overlay-radius);
65
+ }
66
+
67
+ /* Sized on the axis the panel isn't pinned along: left/right drawers size on inline-size, top/bottom on block-size, each split per side/size pair. */
68
+ :where(.skdx-drawer__content)[data-side='left'][data-size='sm'],
69
+ :where(.skdx-drawer__content)[data-side='right'][data-size='sm'] {
70
+ inline-size: min(16rem, 90vw);
71
+ }
72
+
73
+ :where(.skdx-drawer__content)[data-side='left'][data-size='md'],
74
+ :where(.skdx-drawer__content)[data-side='right'][data-size='md'] {
75
+ inline-size: min(20rem, 90vw);
76
+ }
77
+
78
+ :where(.skdx-drawer__content)[data-side='left'][data-size='lg'],
79
+ :where(.skdx-drawer__content)[data-side='right'][data-size='lg'] {
80
+ inline-size: min(30rem, 90vw);
81
+ }
82
+
83
+ :where(.skdx-drawer__content)[data-side='top'][data-size='sm'],
84
+ :where(.skdx-drawer__content)[data-side='bottom'][data-size='sm'] {
85
+ block-size: min(12rem, 90dvh);
86
+ }
87
+
88
+ :where(.skdx-drawer__content)[data-side='top'][data-size='md'],
89
+ :where(.skdx-drawer__content)[data-side='bottom'][data-size='md'] {
90
+ block-size: min(20rem, 90dvh);
91
+ }
92
+
93
+ :where(.skdx-drawer__content)[data-side='top'][data-size='lg'],
94
+ :where(.skdx-drawer__content)[data-side='bottom'][data-size='lg'] {
95
+ block-size: min(30rem, 90dvh);
96
+ }
97
+
98
+ /* -start/-end keyframes translate along a fixed physical axis (translateX has no logical form), pairing with the physical sides above without a direction rule. */
99
+ :where(.skdx-drawer__content)[data-side='left'][data-state='open'] {
100
+ animation: skdx-slide-in-from-start var(--skdx-motion-duration-normal) var(--skdx-motion-easing);
101
+ }
102
+
103
+ :where(.skdx-drawer__content)[data-side='right'][data-state='open'] {
104
+ animation: skdx-slide-in-from-end var(--skdx-motion-duration-normal) var(--skdx-motion-easing);
105
+ }
106
+
107
+ :where(.skdx-drawer__content)[data-side='top'][data-state='open'] {
108
+ animation: skdx-slide-in-from-top var(--skdx-motion-duration-normal) var(--skdx-motion-easing);
109
+ }
110
+
111
+ :where(.skdx-drawer__content)[data-side='bottom'][data-state='open'] {
112
+ animation: skdx-slide-in-from-bottom var(--skdx-motion-duration-normal)
113
+ var(--skdx-motion-easing);
114
+ }
115
+
116
+ :where(.skdx-drawer__title) {
117
+ font-size: var(--skdx-font-size-lg);
118
+ font-weight: var(--skdx-font-weight-semibold);
119
+ }
120
+
121
+ :where(.skdx-drawer__description) {
122
+ font-size: var(--skdx-font-size-sm);
123
+ color: var(--skdx-color-text-muted);
124
+ }
125
+
126
+ /* Scoped to a direct child of content, so a DrawerClose reused lower in the panel stays in flow (see dialog.css for the same pattern). */
127
+ :where(.skdx-drawer__content) > :where(.skdx-drawer__close),
128
+ :where(.skdx-drawer__content)
129
+ > :where(:not([class*='skdx-']):has(> .skdx-drawer__close))
130
+ > :where(.skdx-drawer__close) {
131
+ position: absolute;
132
+ inset-block-start: var(--skdx-space-3);
133
+ inset-inline-end: var(--skdx-space-3);
134
+ }
135
+
136
+ /* Class hooks, not parts: the Vue, Svelte and Angular recipes wrap their
137
+ footer slot in one and Svelte also wraps the body; React and Web
138
+ Components leave both to the consumer. Same pair dialog.css ships. */
139
+ :where(.skdx-drawer__body) {
140
+ flex: 1;
141
+ min-block-size: 0;
142
+ overflow: auto;
143
+ --skdx-focus-ring-offset: var(--skdx-focus-ring-offset-inset);
144
+
145
+ font-size: var(--skdx-font-size-sm);
146
+ line-height: var(--skdx-font-line-height-relaxed);
147
+ color: var(--skdx-color-text-default);
148
+ }
149
+
150
+ :where(.skdx-drawer__footer) {
151
+ display: flex;
152
+ justify-content: flex-end;
153
+ gap: var(--skdx-space-2);
154
+ flex-wrap: wrap;
155
+ }
156
+
157
+ :where(.skdx-drawer__close) {
158
+ min-inline-size: var(--skdx-target-min);
159
+ min-block-size: var(--skdx-target-min);
160
+ color: var(--skdx-color-text-muted);
161
+ background: transparent;
162
+ border: 0;
163
+ border-radius: var(--skdx-radius-sm);
164
+ cursor: pointer;
165
+ }
166
+ }
@@ -0,0 +1,121 @@
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 '_actuator.css';
8
+ @import '../base.css';
9
+
10
+ /**
11
+ * Editable — text that becomes an input in place. Preview and input share padding
12
+ * and border width (transparent, not absent) so committing an edit never jumps.
13
+ */
14
+ @layer skdx-components {
15
+ :where(.skdx-editable) {
16
+ display: inline-flex;
17
+ align-items: center;
18
+ gap: var(--skdx-space-2);
19
+ }
20
+
21
+ /* cursor: default because clicking the label focuses the editor rather than selecting its text. */
22
+ :where(.skdx-editable__label) {
23
+ color: var(--skdx-color-text-muted);
24
+ font-size: var(--skdx-font-size-sm);
25
+ cursor: default;
26
+ }
27
+
28
+ :where(.skdx-editable__preview) {
29
+ padding-inline: var(--skdx-space-2);
30
+ padding-block: var(--skdx-space-1);
31
+ border: var(--skdx-border-width-thin) solid transparent;
32
+ border-radius: var(--skdx-radius-sm);
33
+ font-size: var(--skdx-font-size-sm);
34
+ cursor: text;
35
+ }
36
+
37
+ :where(.skdx-editable__preview):hover:not([data-disabled], [data-readonly]) {
38
+ background-color: var(--skdx-color-surface-hover);
39
+ }
40
+
41
+ /* `data-empty` is what `EditablePreview` publishes when it is showing the
42
+ placeholder instead of a value; there is no `data-placeholder`. */
43
+ :where(.skdx-editable__preview)[data-empty] {
44
+ color: var(--skdx-color-text-placeholder);
45
+ }
46
+
47
+ /* No :focus-visible rule here on purpose: base.css's single outline already covers .skdx-* elements. */
48
+ :where(.skdx-editable__preview)[data-disabled] {
49
+ color: var(--skdx-color-text-disabled);
50
+ cursor: not-allowed;
51
+ }
52
+
53
+ /* Keeps its tab stop and normal text colour; only the text caret (an edit affordance) is withdrawn. */
54
+ :where(.skdx-editable__preview)[data-readonly] {
55
+ cursor: default;
56
+ }
57
+
58
+ /* Border is transparent rather than absent, so invalid can colour it in without moving the box. */
59
+ :where(.skdx-editable__preview)[data-invalid] {
60
+ border-color: var(--skdx-color-field-border-invalid);
61
+ color: var(--skdx-color-text-danger);
62
+ }
63
+
64
+ :where(.skdx-editable__input) {
65
+ padding-inline: var(--skdx-space-2);
66
+ padding-block: var(--skdx-space-1);
67
+ color: var(--skdx-color-field-text);
68
+ background-color: var(--skdx-color-field-bg);
69
+ border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border-focus);
70
+ border-radius: var(--skdx-radius-sm);
71
+ font-size: var(--skdx-font-size-sm);
72
+ }
73
+
74
+ :where(.skdx-editable__textarea) {
75
+ inline-size: 100%;
76
+ padding: var(--skdx-space-2);
77
+ color: var(--skdx-color-field-text);
78
+ background-color: var(--skdx-color-field-bg);
79
+ border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
80
+ border-radius: var(--skdx-radius-sm);
81
+ font: inherit;
82
+ resize: vertical;
83
+ }
84
+
85
+ /* :user-invalid isn't paired in here the way TextField pairs it, because this input has no form owner. */
86
+ :where(.skdx-editable__input, .skdx-editable__textarea)[data-invalid] {
87
+ border-color: var(--skdx-color-field-border-invalid);
88
+ border-width: var(--skdx-border-width-thick);
89
+ }
90
+
91
+ :where(.skdx-editable__input):disabled,
92
+ :where(.skdx-editable__textarea):disabled {
93
+ color: var(--skdx-color-text-disabled);
94
+ background-color: var(--skdx-color-field-bg-disabled);
95
+ border-color: var(--skdx-color-border-disabled);
96
+ cursor: not-allowed;
97
+ }
98
+
99
+ /* :read-only, not [data-readonly]: the editors render the native attribute, and the pseudo-class is the truthful test of what the platform applied. */
100
+ :where(.skdx-editable__input):read-only,
101
+ :where(.skdx-editable__textarea):read-only {
102
+ background-color: var(--skdx-color-field-bg-readonly);
103
+ cursor: default;
104
+ }
105
+
106
+ @media (forced-colors: active) {
107
+ /* Forced colours strips the invalid border colour, so this needs a system colour plus a dashed style to stay distinguishable. */
108
+ :where(.skdx-editable__preview)[data-invalid],
109
+ :where(.skdx-editable__input)[data-invalid],
110
+ :where(.skdx-editable__textarea)[data-invalid] {
111
+ border-color: LinkText;
112
+ border-style: dashed;
113
+ }
114
+
115
+ :where(.skdx-editable__preview)[data-disabled],
116
+ :where(.skdx-editable__input):disabled,
117
+ :where(.skdx-editable__textarea):disabled {
118
+ color: GrayText;
119
+ }
120
+ }
121
+ }
@@ -0,0 +1,85 @@
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
+ /** EmptyState — a placeholder for a region with nothing to show, centred by default. */
10
+ @layer skdx-components {
11
+ :where(.skdx-empty-state) {
12
+ display: flex;
13
+ flex-direction: column;
14
+ align-items: center;
15
+ gap: var(--skdx-space-4);
16
+ padding: var(--skdx-space-8);
17
+ text-align: center;
18
+ }
19
+
20
+ :where(.skdx-empty-state)[data-align='start'] {
21
+ align-items: start;
22
+ text-align: start;
23
+ }
24
+
25
+ :where(.skdx-empty-state)[data-size='sm'] {
26
+ padding: var(--skdx-space-4);
27
+ }
28
+
29
+ :where(.skdx-empty-state)[data-size='md'] {
30
+ padding: var(--skdx-space-8);
31
+ }
32
+
33
+ :where(.skdx-empty-state)[data-size='lg'] {
34
+ padding: var(--skdx-space-12);
35
+ }
36
+
37
+ :where(.skdx-empty-state__icon) {
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ inline-size: var(--skdx-icon-size-lg);
42
+ block-size: var(--skdx-icon-size-lg);
43
+ color: var(--skdx-color-text-muted);
44
+ }
45
+
46
+ :where(.skdx-empty-state)[data-size='sm'] :where(.skdx-empty-state__icon) {
47
+ inline-size: var(--skdx-icon-size-md);
48
+ block-size: var(--skdx-icon-size-md);
49
+ }
50
+
51
+ :where(.skdx-empty-state)[data-size='lg'] :where(.skdx-empty-state__icon) {
52
+ inline-size: calc(var(--skdx-icon-size-lg) * 1.5);
53
+ block-size: calc(var(--skdx-icon-size-lg) * 1.5);
54
+ }
55
+
56
+ :where(.skdx-empty-state__title) {
57
+ max-inline-size: 32rem;
58
+ overflow-wrap: anywhere;
59
+ }
60
+
61
+ :where(.skdx-empty-state__description) {
62
+ max-inline-size: 32rem;
63
+ overflow-wrap: anywhere;
64
+ }
65
+
66
+ :where(.skdx-empty-state__content) {
67
+ inline-size: 100%;
68
+ }
69
+
70
+ :where(.skdx-empty-state__actions) {
71
+ display: flex;
72
+ flex-wrap: wrap;
73
+ justify-content: center;
74
+ gap: var(--skdx-space-2);
75
+ }
76
+
77
+ :where(.skdx-empty-state)[data-align='start'] :where(.skdx-empty-state__actions) {
78
+ justify-content: start;
79
+ }
80
+
81
+ /* Angular cannot omit the wrapper around unprojected content, so an empty one collapses. */
82
+ :where(.skdx-empty-state__content:empty) {
83
+ display: none;
84
+ }
85
+ }