@furystack/shades-common-components 12.6.0 → 13.0.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 (594) hide show
  1. package/CHANGELOG.md +183 -0
  2. package/README.md +218 -4
  3. package/esm/components/accordion/accordion-item.d.ts +1 -1
  4. package/esm/components/accordion/accordion-item.d.ts.map +1 -1
  5. package/esm/components/accordion/accordion-item.js +6 -11
  6. package/esm/components/accordion/accordion-item.js.map +1 -1
  7. package/esm/components/accordion/accordion.d.ts.map +1 -1
  8. package/esm/components/accordion/accordion.js +1 -0
  9. package/esm/components/accordion/accordion.js.map +1 -1
  10. package/esm/components/app-bar-link.d.ts.map +1 -1
  11. package/esm/components/app-bar-link.js +1 -0
  12. package/esm/components/app-bar-link.js.map +1 -1
  13. package/esm/components/app-bar.d.ts.map +1 -1
  14. package/esm/components/app-bar.js +2 -0
  15. package/esm/components/app-bar.js.map +1 -1
  16. package/esm/components/app-bar.spec.js +3 -3
  17. package/esm/components/app-bar.spec.js.map +1 -1
  18. package/esm/components/avatar.d.ts.map +1 -1
  19. package/esm/components/avatar.js +1 -0
  20. package/esm/components/avatar.js.map +1 -1
  21. package/esm/components/badge.d.ts.map +1 -1
  22. package/esm/components/badge.js +2 -1
  23. package/esm/components/badge.js.map +1 -1
  24. package/esm/components/breadcrumb.d.ts.map +1 -1
  25. package/esm/components/breadcrumb.js +1 -0
  26. package/esm/components/breadcrumb.js.map +1 -1
  27. package/esm/components/button-group.d.ts.map +1 -1
  28. package/esm/components/button-group.js +57 -60
  29. package/esm/components/button-group.js.map +1 -1
  30. package/esm/components/button-group.spec.js +7 -6
  31. package/esm/components/button-group.spec.js.map +1 -1
  32. package/esm/components/button.d.ts.map +1 -1
  33. package/esm/components/button.js +1 -0
  34. package/esm/components/button.js.map +1 -1
  35. package/esm/components/cache-view.d.ts.map +1 -1
  36. package/esm/components/cache-view.js +4 -0
  37. package/esm/components/cache-view.js.map +1 -1
  38. package/esm/components/cache-view.spec.js +4 -1
  39. package/esm/components/cache-view.spec.js.map +1 -1
  40. package/esm/components/card.d.ts.map +1 -1
  41. package/esm/components/card.js +3 -1
  42. package/esm/components/card.js.map +1 -1
  43. package/esm/components/circular-progress.d.ts.map +1 -1
  44. package/esm/components/circular-progress.js +1 -0
  45. package/esm/components/circular-progress.js.map +1 -1
  46. package/esm/components/command-palette/command-palette-input.d.ts.map +1 -1
  47. package/esm/components/command-palette/command-palette-input.js +1 -0
  48. package/esm/components/command-palette/command-palette-input.js.map +1 -1
  49. package/esm/components/command-palette/command-palette-suggestion-list.d.ts.map +1 -1
  50. package/esm/components/command-palette/command-palette-suggestion-list.js +3 -1
  51. package/esm/components/command-palette/command-palette-suggestion-list.js.map +1 -1
  52. package/esm/components/command-palette/index.d.ts.map +1 -1
  53. package/esm/components/command-palette/index.js +2 -0
  54. package/esm/components/command-palette/index.js.map +1 -1
  55. package/esm/components/context-menu/context-menu-item.d.ts.map +1 -1
  56. package/esm/components/context-menu/context-menu-item.js +1 -0
  57. package/esm/components/context-menu/context-menu-item.js.map +1 -1
  58. package/esm/components/context-menu/context-menu.d.ts.map +1 -1
  59. package/esm/components/context-menu/context-menu.js +1 -0
  60. package/esm/components/context-menu/context-menu.js.map +1 -1
  61. package/esm/components/data-grid/body.d.ts.map +1 -1
  62. package/esm/components/data-grid/body.js +2 -0
  63. package/esm/components/data-grid/body.js.map +1 -1
  64. package/esm/components/data-grid/data-grid-row.d.ts.map +1 -1
  65. package/esm/components/data-grid/data-grid-row.js +1 -0
  66. package/esm/components/data-grid/data-grid-row.js.map +1 -1
  67. package/esm/components/data-grid/data-grid.d.ts.map +1 -1
  68. package/esm/components/data-grid/data-grid.js +1 -0
  69. package/esm/components/data-grid/data-grid.js.map +1 -1
  70. package/esm/components/data-grid/filters/boolean-filter.d.ts.map +1 -1
  71. package/esm/components/data-grid/filters/boolean-filter.js +2 -0
  72. package/esm/components/data-grid/filters/boolean-filter.js.map +1 -1
  73. package/esm/components/data-grid/filters/date-filter.d.ts.map +1 -1
  74. package/esm/components/data-grid/filters/date-filter.js +2 -0
  75. package/esm/components/data-grid/filters/date-filter.js.map +1 -1
  76. package/esm/components/data-grid/filters/enum-filter.d.ts.map +1 -1
  77. package/esm/components/data-grid/filters/enum-filter.js +2 -0
  78. package/esm/components/data-grid/filters/enum-filter.js.map +1 -1
  79. package/esm/components/data-grid/filters/filter-dropdown.d.ts.map +1 -1
  80. package/esm/components/data-grid/filters/filter-dropdown.js +1 -0
  81. package/esm/components/data-grid/filters/filter-dropdown.js.map +1 -1
  82. package/esm/components/data-grid/filters/number-filter.d.ts.map +1 -1
  83. package/esm/components/data-grid/filters/number-filter.js +2 -0
  84. package/esm/components/data-grid/filters/number-filter.js.map +1 -1
  85. package/esm/components/data-grid/filters/string-filter.d.ts.map +1 -1
  86. package/esm/components/data-grid/filters/string-filter.js +2 -0
  87. package/esm/components/data-grid/filters/string-filter.js.map +1 -1
  88. package/esm/components/data-grid/footer.d.ts.map +1 -1
  89. package/esm/components/data-grid/footer.js +1 -0
  90. package/esm/components/data-grid/footer.js.map +1 -1
  91. package/esm/components/data-grid/header.d.ts.map +1 -1
  92. package/esm/components/data-grid/header.js +2 -0
  93. package/esm/components/data-grid/header.js.map +1 -1
  94. package/esm/components/data-grid/selection-cell.d.ts.map +1 -1
  95. package/esm/components/data-grid/selection-cell.js +1 -0
  96. package/esm/components/data-grid/selection-cell.js.map +1 -1
  97. package/esm/components/dialog.d.ts.map +1 -1
  98. package/esm/components/dialog.js +8 -12
  99. package/esm/components/dialog.js.map +1 -1
  100. package/esm/components/divider.d.ts.map +1 -1
  101. package/esm/components/divider.js +1 -0
  102. package/esm/components/divider.js.map +1 -1
  103. package/esm/components/drawer/drawer-toggle-button.d.ts +1 -1
  104. package/esm/components/drawer/drawer-toggle-button.d.ts.map +1 -1
  105. package/esm/components/drawer/drawer-toggle-button.js +2 -1
  106. package/esm/components/drawer/drawer-toggle-button.js.map +1 -1
  107. package/esm/components/drawer/index.d.ts.map +1 -1
  108. package/esm/components/drawer/index.js +1 -0
  109. package/esm/components/drawer/index.js.map +1 -1
  110. package/esm/components/dropdown.d.ts.map +1 -1
  111. package/esm/components/dropdown.js +1 -0
  112. package/esm/components/dropdown.js.map +1 -1
  113. package/esm/components/fab.d.ts.map +1 -1
  114. package/esm/components/fab.js +1 -0
  115. package/esm/components/fab.js.map +1 -1
  116. package/esm/components/form.d.ts.map +1 -1
  117. package/esm/components/form.js +2 -0
  118. package/esm/components/form.js.map +1 -1
  119. package/esm/components/grid.d.ts.map +1 -1
  120. package/esm/components/grid.js +3 -1
  121. package/esm/components/grid.js.map +1 -1
  122. package/esm/components/icons/icon.d.ts.map +1 -1
  123. package/esm/components/icons/icon.js +2 -0
  124. package/esm/components/icons/icon.js.map +1 -1
  125. package/esm/components/image.d.ts.map +1 -1
  126. package/esm/components/image.js +1 -0
  127. package/esm/components/image.js.map +1 -1
  128. package/esm/components/inputs/autocomplete.d.ts.map +1 -1
  129. package/esm/components/inputs/autocomplete.js +2 -0
  130. package/esm/components/inputs/autocomplete.js.map +1 -1
  131. package/esm/components/inputs/checkbox.d.ts.map +1 -1
  132. package/esm/components/inputs/checkbox.js +2 -1
  133. package/esm/components/inputs/checkbox.js.map +1 -1
  134. package/esm/components/inputs/input-number.d.ts.map +1 -1
  135. package/esm/components/inputs/input-number.js +1 -0
  136. package/esm/components/inputs/input-number.js.map +1 -1
  137. package/esm/components/inputs/input.d.ts.map +1 -1
  138. package/esm/components/inputs/input.js +1 -0
  139. package/esm/components/inputs/input.js.map +1 -1
  140. package/esm/components/inputs/radio-group.d.ts.map +1 -1
  141. package/esm/components/inputs/radio-group.js +1 -0
  142. package/esm/components/inputs/radio-group.js.map +1 -1
  143. package/esm/components/inputs/radio.d.ts.map +1 -1
  144. package/esm/components/inputs/radio.js +1 -0
  145. package/esm/components/inputs/radio.js.map +1 -1
  146. package/esm/components/inputs/select.d.ts.map +1 -1
  147. package/esm/components/inputs/select.js +14 -16
  148. package/esm/components/inputs/select.js.map +1 -1
  149. package/esm/components/inputs/select.spec.js +3 -6
  150. package/esm/components/inputs/select.spec.js.map +1 -1
  151. package/esm/components/inputs/slider.d.ts.map +1 -1
  152. package/esm/components/inputs/slider.js +5 -31
  153. package/esm/components/inputs/slider.js.map +1 -1
  154. package/esm/components/inputs/switch.d.ts.map +1 -1
  155. package/esm/components/inputs/switch.js +2 -1
  156. package/esm/components/inputs/switch.js.map +1 -1
  157. package/esm/components/inputs/text-area.d.ts.map +1 -1
  158. package/esm/components/inputs/text-area.js +1 -0
  159. package/esm/components/inputs/text-area.js.map +1 -1
  160. package/esm/components/linear-progress.d.ts.map +1 -1
  161. package/esm/components/linear-progress.js +1 -0
  162. package/esm/components/linear-progress.js.map +1 -1
  163. package/esm/components/list/list-item.d.ts.map +1 -1
  164. package/esm/components/list/list-item.js +1 -0
  165. package/esm/components/list/list-item.js.map +1 -1
  166. package/esm/components/list/list.d.ts.map +1 -1
  167. package/esm/components/list/list.js +2 -0
  168. package/esm/components/list/list.js.map +1 -1
  169. package/esm/components/loader.d.ts.map +1 -1
  170. package/esm/components/loader.js +1 -0
  171. package/esm/components/loader.js.map +1 -1
  172. package/esm/components/markdown/markdown-display.js +1 -1
  173. package/esm/components/markdown/markdown-display.js.map +1 -1
  174. package/esm/components/markdown/markdown-display.spec.js +2 -2
  175. package/esm/components/markdown/markdown-display.spec.js.map +1 -1
  176. package/esm/components/markdown/markdown-editor.d.ts +16 -2
  177. package/esm/components/markdown/markdown-editor.d.ts.map +1 -1
  178. package/esm/components/markdown/markdown-editor.js +43 -8
  179. package/esm/components/markdown/markdown-editor.js.map +1 -1
  180. package/esm/components/markdown/markdown-editor.spec.js +191 -1
  181. package/esm/components/markdown/markdown-editor.spec.js.map +1 -1
  182. package/esm/components/markdown/markdown-input.d.ts +2 -0
  183. package/esm/components/markdown/markdown-input.d.ts.map +1 -1
  184. package/esm/components/markdown/markdown-input.js +5 -9
  185. package/esm/components/markdown/markdown-input.js.map +1 -1
  186. package/esm/components/markdown/markdown-input.spec.js +43 -0
  187. package/esm/components/markdown/markdown-input.spec.js.map +1 -1
  188. package/esm/components/markdown/markdown-validation.d.ts +25 -0
  189. package/esm/components/markdown/markdown-validation.d.ts.map +1 -0
  190. package/esm/components/markdown/markdown-validation.js +15 -0
  191. package/esm/components/markdown/markdown-validation.js.map +1 -0
  192. package/esm/components/modal.d.ts.map +1 -1
  193. package/esm/components/modal.js +2 -0
  194. package/esm/components/modal.js.map +1 -1
  195. package/esm/components/noty-list.d.ts.map +1 -1
  196. package/esm/components/noty-list.js +4 -2
  197. package/esm/components/noty-list.js.map +1 -1
  198. package/esm/components/noty-list.spec.js +1 -1
  199. package/esm/components/noty-list.spec.js.map +1 -1
  200. package/esm/components/page-container/index.d.ts +1 -1
  201. package/esm/components/page-container/index.d.ts.map +1 -1
  202. package/esm/components/page-container/index.js +2 -1
  203. package/esm/components/page-container/index.js.map +1 -1
  204. package/esm/components/page-container/page-header.d.ts.map +1 -1
  205. package/esm/components/page-container/page-header.js +10 -12
  206. package/esm/components/page-container/page-header.js.map +1 -1
  207. package/esm/components/page-container/page-header.spec.js +6 -4
  208. package/esm/components/page-container/page-header.spec.js.map +1 -1
  209. package/esm/components/page-layout/index.d.ts.map +1 -1
  210. package/esm/components/page-layout/index.js +2 -0
  211. package/esm/components/page-layout/index.js.map +1 -1
  212. package/esm/components/paper.d.ts.map +1 -1
  213. package/esm/components/paper.js +6 -1
  214. package/esm/components/paper.js.map +1 -1
  215. package/esm/components/rating.d.ts.map +1 -1
  216. package/esm/components/rating.js +1 -0
  217. package/esm/components/rating.js.map +1 -1
  218. package/esm/components/result.d.ts.map +1 -1
  219. package/esm/components/result.js +3 -14
  220. package/esm/components/result.js.map +1 -1
  221. package/esm/components/result.spec.js +3 -3
  222. package/esm/components/result.spec.js.map +1 -1
  223. package/esm/components/suggest/index.d.ts.map +1 -1
  224. package/esm/components/suggest/index.js +2 -0
  225. package/esm/components/suggest/index.js.map +1 -1
  226. package/esm/components/suggest/suggest-input.d.ts.map +1 -1
  227. package/esm/components/suggest/suggest-input.js +1 -0
  228. package/esm/components/suggest/suggest-input.js.map +1 -1
  229. package/esm/components/suggest/suggestion-list.d.ts.map +1 -1
  230. package/esm/components/suggest/suggestion-list.js +3 -1
  231. package/esm/components/suggest/suggestion-list.js.map +1 -1
  232. package/esm/components/tabs.d.ts.map +1 -1
  233. package/esm/components/tabs.js +1 -0
  234. package/esm/components/tabs.js.map +1 -1
  235. package/esm/components/timeline.d.ts.map +1 -1
  236. package/esm/components/timeline.js +58 -51
  237. package/esm/components/timeline.js.map +1 -1
  238. package/esm/components/timeline.spec.js +0 -66
  239. package/esm/components/timeline.spec.js.map +1 -1
  240. package/esm/components/tooltip.d.ts.map +1 -1
  241. package/esm/components/tooltip.js +1 -0
  242. package/esm/components/tooltip.js.map +1 -1
  243. package/esm/components/tree/tree-item.d.ts.map +1 -1
  244. package/esm/components/tree/tree-item.js +1 -0
  245. package/esm/components/tree/tree-item.js.map +1 -1
  246. package/esm/components/tree/tree.d.ts.map +1 -1
  247. package/esm/components/tree/tree.js +2 -0
  248. package/esm/components/tree/tree.js.map +1 -1
  249. package/esm/components/typography.d.ts +2 -19
  250. package/esm/components/typography.d.ts.map +1 -1
  251. package/esm/components/typography.js +104 -94
  252. package/esm/components/typography.js.map +1 -1
  253. package/esm/components/typography.spec.js +16 -16
  254. package/esm/components/typography.spec.js.map +1 -1
  255. package/esm/components/wizard/index.d.ts.map +1 -1
  256. package/esm/components/wizard/index.js +1 -0
  257. package/esm/components/wizard/index.js.map +1 -1
  258. package/esm/services/css-variable-theme.d.ts +4 -0
  259. package/esm/services/css-variable-theme.d.ts.map +1 -1
  260. package/esm/services/css-variable-theme.js +29 -6
  261. package/esm/services/css-variable-theme.js.map +1 -1
  262. package/esm/services/css-variable-theme.spec.js +93 -1
  263. package/esm/services/css-variable-theme.spec.js.map +1 -1
  264. package/esm/services/get-rgb-from-color-string.d.ts +10 -0
  265. package/esm/services/get-rgb-from-color-string.d.ts.map +1 -0
  266. package/esm/services/get-rgb-from-color-string.js +86 -0
  267. package/esm/services/get-rgb-from-color-string.js.map +1 -0
  268. package/esm/services/get-rgb-from-color-string.spec.d.ts +2 -0
  269. package/esm/services/get-rgb-from-color-string.spec.d.ts.map +1 -0
  270. package/esm/services/get-rgb-from-color-string.spec.js +107 -0
  271. package/esm/services/get-rgb-from-color-string.spec.js.map +1 -0
  272. package/esm/services/get-text-color.d.ts +10 -0
  273. package/esm/services/get-text-color.d.ts.map +1 -0
  274. package/esm/services/get-text-color.js +15 -0
  275. package/esm/services/get-text-color.js.map +1 -0
  276. package/esm/services/get-text-color.spec.d.ts +2 -0
  277. package/esm/services/get-text-color.spec.d.ts.map +1 -0
  278. package/esm/services/get-text-color.spec.js +21 -0
  279. package/esm/services/get-text-color.spec.js.map +1 -0
  280. package/esm/services/index.d.ts +7 -4
  281. package/esm/services/index.d.ts.map +1 -1
  282. package/esm/services/index.js +7 -4
  283. package/esm/services/index.js.map +1 -1
  284. package/esm/services/rgb-color.d.ts +13 -0
  285. package/esm/services/rgb-color.d.ts.map +1 -0
  286. package/esm/services/rgb-color.js +23 -0
  287. package/esm/services/rgb-color.js.map +1 -0
  288. package/esm/services/rgb-color.spec.d.ts +2 -0
  289. package/esm/services/rgb-color.spec.d.ts.map +1 -0
  290. package/esm/services/rgb-color.spec.js +69 -0
  291. package/esm/services/rgb-color.spec.js.map +1 -0
  292. package/esm/services/theme-provider-service.d.ts +9 -23
  293. package/esm/services/theme-provider-service.d.ts.map +1 -1
  294. package/esm/services/theme-provider-service.js +1 -63
  295. package/esm/services/theme-provider-service.js.map +1 -1
  296. package/esm/services/theme-provider-service.spec.js +12 -159
  297. package/esm/services/theme-provider-service.spec.js.map +1 -1
  298. package/esm/themes/architect-palette.d.ts +8 -0
  299. package/esm/themes/architect-palette.d.ts.map +1 -0
  300. package/esm/themes/architect-palette.js +56 -0
  301. package/esm/themes/architect-palette.js.map +1 -0
  302. package/esm/themes/architect-theme.d.ts +120 -0
  303. package/esm/themes/architect-theme.d.ts.map +1 -0
  304. package/esm/themes/architect-theme.js +122 -0
  305. package/esm/themes/architect-theme.js.map +1 -0
  306. package/esm/themes/auditore-palette.d.ts +8 -0
  307. package/esm/themes/auditore-palette.d.ts.map +1 -0
  308. package/esm/themes/auditore-palette.js +56 -0
  309. package/esm/themes/auditore-palette.js.map +1 -0
  310. package/esm/themes/auditore-theme.d.ts +120 -0
  311. package/esm/themes/auditore-theme.d.ts.map +1 -0
  312. package/esm/themes/auditore-theme.js +122 -0
  313. package/esm/themes/auditore-theme.js.map +1 -0
  314. package/esm/themes/black-mesa-palette.d.ts +8 -0
  315. package/esm/themes/black-mesa-palette.d.ts.map +1 -0
  316. package/esm/themes/black-mesa-palette.js +56 -0
  317. package/esm/themes/black-mesa-palette.js.map +1 -0
  318. package/esm/themes/black-mesa-theme.d.ts +120 -0
  319. package/esm/themes/black-mesa-theme.d.ts.map +1 -0
  320. package/esm/themes/black-mesa-theme.js +122 -0
  321. package/esm/themes/black-mesa-theme.js.map +1 -0
  322. package/esm/themes/chieftain-palette.d.ts +8 -0
  323. package/esm/themes/chieftain-palette.d.ts.map +1 -0
  324. package/esm/themes/chieftain-palette.js +56 -0
  325. package/esm/themes/chieftain-palette.js.map +1 -0
  326. package/esm/themes/chieftain-theme.d.ts +121 -0
  327. package/esm/themes/chieftain-theme.d.ts.map +1 -0
  328. package/esm/themes/chieftain-theme.js +123 -0
  329. package/esm/themes/chieftain-theme.js.map +1 -0
  330. package/esm/themes/default-dark-palette.d.ts +8 -0
  331. package/esm/themes/default-dark-palette.d.ts.map +1 -0
  332. package/esm/{services → themes}/default-dark-palette.js +1 -1
  333. package/esm/themes/default-dark-palette.js.map +1 -0
  334. package/esm/{services → themes}/default-dark-theme.d.ts +7 -1
  335. package/esm/themes/default-dark-theme.d.ts.map +1 -0
  336. package/esm/{services → themes}/default-dark-theme.js +6 -0
  337. package/esm/themes/default-dark-theme.js.map +1 -0
  338. package/esm/{services → themes}/default-light-theme.d.ts +7 -1
  339. package/esm/themes/default-light-theme.d.ts.map +1 -0
  340. package/esm/{services → themes}/default-light-theme.js +6 -0
  341. package/esm/themes/default-light-theme.js.map +1 -0
  342. package/esm/{services → themes}/default-palette.d.ts +1 -1
  343. package/esm/themes/default-palette.d.ts.map +1 -0
  344. package/esm/themes/default-palette.js.map +1 -0
  345. package/esm/themes/dragonborn-palette.d.ts +8 -0
  346. package/esm/themes/dragonborn-palette.d.ts.map +1 -0
  347. package/esm/themes/dragonborn-palette.js +56 -0
  348. package/esm/themes/dragonborn-palette.js.map +1 -0
  349. package/esm/themes/dragonborn-theme.d.ts +120 -0
  350. package/esm/themes/dragonborn-theme.d.ts.map +1 -0
  351. package/esm/themes/dragonborn-theme.js +122 -0
  352. package/esm/themes/dragonborn-theme.js.map +1 -0
  353. package/esm/themes/hawkins-palette.d.ts +8 -0
  354. package/esm/themes/hawkins-palette.d.ts.map +1 -0
  355. package/esm/themes/hawkins-palette.js +56 -0
  356. package/esm/themes/hawkins-palette.js.map +1 -0
  357. package/esm/themes/hawkins-theme.d.ts +120 -0
  358. package/esm/themes/hawkins-theme.d.ts.map +1 -0
  359. package/esm/themes/hawkins-theme.js +122 -0
  360. package/esm/themes/hawkins-theme.js.map +1 -0
  361. package/esm/themes/jedi-palette.d.ts +8 -0
  362. package/esm/themes/jedi-palette.d.ts.map +1 -0
  363. package/esm/themes/jedi-palette.js +56 -0
  364. package/esm/themes/jedi-palette.js.map +1 -0
  365. package/esm/themes/jedi-theme.d.ts +120 -0
  366. package/esm/themes/jedi-theme.d.ts.map +1 -0
  367. package/esm/themes/jedi-theme.js +122 -0
  368. package/esm/themes/jedi-theme.js.map +1 -0
  369. package/esm/themes/neon-runner-palette.d.ts +8 -0
  370. package/esm/themes/neon-runner-palette.d.ts.map +1 -0
  371. package/esm/themes/neon-runner-palette.js +56 -0
  372. package/esm/themes/neon-runner-palette.js.map +1 -0
  373. package/esm/themes/neon-runner-theme.d.ts +119 -0
  374. package/esm/themes/neon-runner-theme.d.ts.map +1 -0
  375. package/esm/themes/neon-runner-theme.js +120 -0
  376. package/esm/themes/neon-runner-theme.js.map +1 -0
  377. package/esm/themes/paladin-palette.d.ts +8 -0
  378. package/esm/themes/paladin-palette.d.ts.map +1 -0
  379. package/esm/themes/paladin-palette.js +56 -0
  380. package/esm/themes/paladin-palette.js.map +1 -0
  381. package/esm/themes/paladin-theme.d.ts +121 -0
  382. package/esm/themes/paladin-theme.d.ts.map +1 -0
  383. package/esm/themes/paladin-theme.js +123 -0
  384. package/esm/themes/paladin-theme.js.map +1 -0
  385. package/esm/themes/plumber-palette.d.ts +8 -0
  386. package/esm/themes/plumber-palette.d.ts.map +1 -0
  387. package/esm/themes/plumber-palette.js +56 -0
  388. package/esm/themes/plumber-palette.js.map +1 -0
  389. package/esm/themes/plumber-theme.d.ts +120 -0
  390. package/esm/themes/plumber-theme.d.ts.map +1 -0
  391. package/esm/themes/plumber-theme.js +121 -0
  392. package/esm/themes/plumber-theme.js.map +1 -0
  393. package/esm/themes/replicant-palette.d.ts +8 -0
  394. package/esm/themes/replicant-palette.d.ts.map +1 -0
  395. package/esm/themes/replicant-palette.js +56 -0
  396. package/esm/themes/replicant-palette.js.map +1 -0
  397. package/esm/themes/replicant-theme.d.ts +120 -0
  398. package/esm/themes/replicant-theme.d.ts.map +1 -0
  399. package/esm/themes/replicant-theme.js +122 -0
  400. package/esm/themes/replicant-theme.js.map +1 -0
  401. package/esm/themes/sandworm-palette.d.ts +8 -0
  402. package/esm/themes/sandworm-palette.d.ts.map +1 -0
  403. package/esm/themes/sandworm-palette.js +56 -0
  404. package/esm/themes/sandworm-palette.js.map +1 -0
  405. package/esm/themes/sandworm-theme.d.ts +120 -0
  406. package/esm/themes/sandworm-theme.d.ts.map +1 -0
  407. package/esm/themes/sandworm-theme.js +122 -0
  408. package/esm/themes/sandworm-theme.js.map +1 -0
  409. package/esm/themes/shadow-broker-palette.d.ts +8 -0
  410. package/esm/themes/shadow-broker-palette.d.ts.map +1 -0
  411. package/esm/themes/shadow-broker-palette.js +56 -0
  412. package/esm/{services/default-dark-palette.js.map → themes/shadow-broker-palette.js.map} +1 -1
  413. package/esm/themes/shadow-broker-theme.d.ts +120 -0
  414. package/esm/themes/shadow-broker-theme.d.ts.map +1 -0
  415. package/esm/themes/shadow-broker-theme.js +121 -0
  416. package/esm/themes/shadow-broker-theme.js.map +1 -0
  417. package/esm/themes/sith-palette.d.ts +8 -0
  418. package/esm/themes/sith-palette.d.ts.map +1 -0
  419. package/esm/themes/sith-palette.js +56 -0
  420. package/esm/themes/sith-palette.js.map +1 -0
  421. package/esm/themes/sith-theme.d.ts +120 -0
  422. package/esm/themes/sith-theme.d.ts.map +1 -0
  423. package/esm/themes/sith-theme.js +122 -0
  424. package/esm/themes/sith-theme.js.map +1 -0
  425. package/esm/themes/vault-dweller-palette.d.ts +8 -0
  426. package/esm/themes/vault-dweller-palette.d.ts.map +1 -0
  427. package/esm/themes/vault-dweller-palette.js +56 -0
  428. package/esm/themes/vault-dweller-palette.js.map +1 -0
  429. package/esm/themes/vault-dweller-theme.d.ts +120 -0
  430. package/esm/themes/vault-dweller-theme.d.ts.map +1 -0
  431. package/esm/themes/vault-dweller-theme.js +122 -0
  432. package/esm/themes/vault-dweller-theme.js.map +1 -0
  433. package/esm/themes/wild-hunt-palette.d.ts +8 -0
  434. package/esm/themes/wild-hunt-palette.d.ts.map +1 -0
  435. package/esm/themes/wild-hunt-palette.js +56 -0
  436. package/esm/themes/wild-hunt-palette.js.map +1 -0
  437. package/esm/themes/wild-hunt-theme.d.ts +120 -0
  438. package/esm/themes/wild-hunt-theme.d.ts.map +1 -0
  439. package/esm/themes/wild-hunt-theme.js +122 -0
  440. package/esm/themes/wild-hunt-theme.js.map +1 -0
  441. package/esm/themes/xenomorph-palette.d.ts +8 -0
  442. package/esm/themes/xenomorph-palette.d.ts.map +1 -0
  443. package/esm/themes/xenomorph-palette.js +56 -0
  444. package/esm/themes/xenomorph-palette.js.map +1 -0
  445. package/esm/themes/xenomorph-theme.d.ts +120 -0
  446. package/esm/themes/xenomorph-theme.d.ts.map +1 -0
  447. package/esm/themes/xenomorph-theme.js +121 -0
  448. package/esm/themes/xenomorph-theme.js.map +1 -0
  449. package/package.json +7 -3
  450. package/src/components/accordion/accordion-item.tsx +16 -23
  451. package/src/components/accordion/accordion.tsx +1 -0
  452. package/src/components/app-bar-link.tsx +1 -0
  453. package/src/components/app-bar.spec.tsx +3 -3
  454. package/src/components/app-bar.tsx +2 -0
  455. package/src/components/avatar.tsx +1 -0
  456. package/src/components/badge.tsx +2 -1
  457. package/src/components/breadcrumb.tsx +1 -0
  458. package/src/components/button-group.spec.tsx +7 -6
  459. package/src/components/button-group.tsx +72 -70
  460. package/src/components/button.tsx +1 -0
  461. package/src/components/cache-view.spec.tsx +4 -1
  462. package/src/components/cache-view.tsx +4 -0
  463. package/src/components/card.tsx +3 -1
  464. package/src/components/circular-progress.tsx +1 -0
  465. package/src/components/command-palette/command-palette-input.tsx +1 -0
  466. package/src/components/command-palette/command-palette-suggestion-list.tsx +3 -1
  467. package/src/components/command-palette/index.tsx +2 -0
  468. package/src/components/context-menu/context-menu-item.tsx +1 -0
  469. package/src/components/context-menu/context-menu.tsx +1 -0
  470. package/src/components/data-grid/body.tsx +2 -0
  471. package/src/components/data-grid/data-grid-row.tsx +1 -0
  472. package/src/components/data-grid/data-grid.tsx +1 -0
  473. package/src/components/data-grid/filters/boolean-filter.tsx +2 -0
  474. package/src/components/data-grid/filters/date-filter.tsx +2 -0
  475. package/src/components/data-grid/filters/enum-filter.tsx +2 -0
  476. package/src/components/data-grid/filters/filter-dropdown.tsx +1 -0
  477. package/src/components/data-grid/filters/number-filter.tsx +2 -0
  478. package/src/components/data-grid/filters/string-filter.tsx +2 -0
  479. package/src/components/data-grid/footer.tsx +1 -0
  480. package/src/components/data-grid/header.tsx +2 -0
  481. package/src/components/data-grid/selection-cell.tsx +1 -0
  482. package/src/components/dialog.tsx +15 -15
  483. package/src/components/divider.tsx +1 -0
  484. package/src/components/drawer/drawer-toggle-button.tsx +2 -1
  485. package/src/components/drawer/index.tsx +1 -0
  486. package/src/components/dropdown.tsx +1 -0
  487. package/src/components/fab.tsx +1 -0
  488. package/src/components/form.tsx +2 -0
  489. package/src/components/grid.tsx +3 -1
  490. package/src/components/icons/icon.tsx +2 -0
  491. package/src/components/image.tsx +1 -0
  492. package/src/components/inputs/autocomplete.tsx +2 -0
  493. package/src/components/inputs/checkbox.tsx +2 -1
  494. package/src/components/inputs/input-number.tsx +1 -0
  495. package/src/components/inputs/input.tsx +1 -0
  496. package/src/components/inputs/radio-group.tsx +1 -0
  497. package/src/components/inputs/radio.tsx +1 -0
  498. package/src/components/inputs/select.spec.tsx +3 -6
  499. package/src/components/inputs/select.tsx +13 -15
  500. package/src/components/inputs/slider.tsx +27 -36
  501. package/src/components/inputs/switch.tsx +2 -1
  502. package/src/components/inputs/text-area.tsx +1 -0
  503. package/src/components/linear-progress.tsx +1 -0
  504. package/src/components/list/list-item.tsx +1 -0
  505. package/src/components/list/list.tsx +2 -0
  506. package/src/components/loader.tsx +1 -0
  507. package/src/components/markdown/markdown-display.spec.tsx +2 -2
  508. package/src/components/markdown/markdown-display.tsx +1 -1
  509. package/src/components/markdown/markdown-editor.spec.tsx +262 -1
  510. package/src/components/markdown/markdown-editor.tsx +64 -10
  511. package/src/components/markdown/markdown-input.spec.tsx +63 -0
  512. package/src/components/markdown/markdown-input.tsx +7 -11
  513. package/src/components/markdown/markdown-validation.ts +33 -0
  514. package/src/components/modal.tsx +2 -0
  515. package/src/components/noty-list.spec.tsx +1 -1
  516. package/src/components/noty-list.tsx +4 -2
  517. package/src/components/page-container/index.tsx +2 -1
  518. package/src/components/page-container/page-header.spec.tsx +6 -4
  519. package/src/components/page-container/page-header.tsx +23 -15
  520. package/src/components/page-layout/index.tsx +2 -0
  521. package/src/components/paper.tsx +6 -1
  522. package/src/components/rating.tsx +1 -0
  523. package/src/components/result.spec.tsx +3 -3
  524. package/src/components/result.tsx +9 -15
  525. package/src/components/suggest/index.tsx +2 -0
  526. package/src/components/suggest/suggest-input.tsx +1 -0
  527. package/src/components/suggest/suggestion-list.tsx +3 -1
  528. package/src/components/tabs.tsx +1 -0
  529. package/src/components/timeline.spec.tsx +0 -95
  530. package/src/components/timeline.tsx +63 -54
  531. package/src/components/tooltip.tsx +1 -0
  532. package/src/components/tree/tree-item.tsx +1 -0
  533. package/src/components/tree/tree.tsx +2 -0
  534. package/src/components/typography.spec.tsx +16 -16
  535. package/src/components/typography.tsx +121 -110
  536. package/src/components/wizard/index.tsx +1 -0
  537. package/src/services/css-variable-theme.spec.ts +108 -0
  538. package/src/services/css-variable-theme.ts +30 -7
  539. package/src/services/get-rgb-from-color-string.spec.ts +122 -0
  540. package/src/services/get-rgb-from-color-string.ts +96 -0
  541. package/src/services/get-text-color.spec.ts +25 -0
  542. package/src/services/get-text-color.ts +15 -0
  543. package/src/services/index.ts +7 -4
  544. package/src/services/rgb-color.spec.ts +79 -0
  545. package/src/services/rgb-color.ts +20 -0
  546. package/src/services/theme-provider-service.spec.ts +12 -185
  547. package/src/services/theme-provider-service.ts +8 -72
  548. package/src/themes/architect-palette.ts +57 -0
  549. package/src/themes/architect-theme.ts +124 -0
  550. package/src/themes/auditore-palette.ts +57 -0
  551. package/src/themes/auditore-theme.ts +124 -0
  552. package/src/themes/black-mesa-palette.ts +57 -0
  553. package/src/themes/black-mesa-theme.ts +124 -0
  554. package/src/themes/chieftain-palette.ts +57 -0
  555. package/src/themes/chieftain-theme.ts +125 -0
  556. package/src/{services → themes}/default-dark-palette.ts +2 -2
  557. package/src/{services → themes}/default-dark-theme.ts +7 -1
  558. package/src/{services → themes}/default-light-theme.ts +7 -1
  559. package/src/{services → themes}/default-palette.ts +1 -1
  560. package/src/themes/dragonborn-palette.ts +57 -0
  561. package/src/themes/dragonborn-theme.ts +124 -0
  562. package/src/themes/hawkins-palette.ts +57 -0
  563. package/src/themes/hawkins-theme.ts +124 -0
  564. package/src/themes/jedi-palette.ts +57 -0
  565. package/src/themes/jedi-theme.ts +124 -0
  566. package/src/themes/neon-runner-palette.ts +57 -0
  567. package/src/themes/neon-runner-theme.ts +121 -0
  568. package/src/themes/paladin-palette.ts +57 -0
  569. package/src/themes/paladin-theme.ts +125 -0
  570. package/src/themes/plumber-palette.ts +57 -0
  571. package/src/themes/plumber-theme.ts +122 -0
  572. package/src/themes/replicant-palette.ts +57 -0
  573. package/src/themes/replicant-theme.ts +124 -0
  574. package/src/themes/sandworm-palette.ts +57 -0
  575. package/src/themes/sandworm-theme.ts +124 -0
  576. package/src/themes/shadow-broker-palette.ts +57 -0
  577. package/src/themes/shadow-broker-theme.ts +122 -0
  578. package/src/themes/sith-palette.ts +57 -0
  579. package/src/themes/sith-theme.ts +124 -0
  580. package/src/themes/vault-dweller-palette.ts +57 -0
  581. package/src/themes/vault-dweller-theme.ts +124 -0
  582. package/src/themes/wild-hunt-palette.ts +57 -0
  583. package/src/themes/wild-hunt-theme.ts +124 -0
  584. package/src/themes/xenomorph-palette.ts +57 -0
  585. package/src/themes/xenomorph-theme.ts +122 -0
  586. package/esm/services/default-dark-palette.d.ts +0 -8
  587. package/esm/services/default-dark-palette.d.ts.map +0 -1
  588. package/esm/services/default-dark-theme.d.ts.map +0 -1
  589. package/esm/services/default-dark-theme.js.map +0 -1
  590. package/esm/services/default-light-theme.d.ts.map +0 -1
  591. package/esm/services/default-light-theme.js.map +0 -1
  592. package/esm/services/default-palette.d.ts.map +0 -1
  593. package/esm/services/default-palette.js.map +0 -1
  594. /package/esm/{services → themes}/default-palette.js +0 -0
@@ -19,20 +19,46 @@ export type ButtonGroupProps = PartialElement<HTMLElement> & {
19
19
  disabled?: boolean
20
20
  }
21
21
 
22
+ const groupChildRadius = cssVariableTheme.shape.borderRadius.md
23
+
22
24
  export const ButtonGroup: (props: ButtonGroupProps, children: ChildrenList) => JSX.Element = Shade<ButtonGroupProps>({
23
25
  shadowDomName: 'shade-button-group',
24
26
  css: {
25
27
  display: 'inline-flex',
28
+ fontFamily: cssVariableTheme.typography.fontFamily,
26
29
  borderRadius: cssVariableTheme.shape.borderRadius.md,
27
30
 
28
31
  '&[data-orientation="vertical"]': {
29
32
  flexDirection: 'column',
30
33
  },
34
+
35
+ // Uses [role][data-orientation] for specificity (0,2,1) to override
36
+ // child Button CSS at (0,1,1)
37
+ '&[role][data-orientation] > *': {
38
+ margin: '0',
39
+ borderRadius: '0',
40
+ },
41
+
42
+ '&[role]:not([data-orientation="vertical"]) > :first-child': {
43
+ borderRadius: `${groupChildRadius} 0 0 ${groupChildRadius}`,
44
+ },
45
+ '&[role]:not([data-orientation="vertical"]) > :last-child': {
46
+ borderRadius: `0 ${groupChildRadius} ${groupChildRadius} 0`,
47
+ },
48
+
49
+ '&[role][data-orientation="vertical"] > :first-child': {
50
+ borderRadius: `${groupChildRadius} ${groupChildRadius} 0 0`,
51
+ },
52
+ '&[role][data-orientation="vertical"] > :last-child': {
53
+ borderRadius: `0 0 ${groupChildRadius} ${groupChildRadius}`,
54
+ },
55
+
56
+ '&[role][data-orientation] > :only-child': {
57
+ borderRadius: groupChildRadius,
58
+ },
31
59
  },
32
- render: ({ props, children, useHostProps, useRef }) => {
60
+ render: ({ props, children, useHostProps }) => {
33
61
  const { orientation = 'horizontal', disabled, variant, color, style } = props
34
- const radius = cssVariableTheme.shape.borderRadius.md
35
- const wrapperRef = useRef<HTMLDivElement>('wrapper')
36
62
 
37
63
  useHostProps({
38
64
  role: 'group',
@@ -43,40 +69,7 @@ export const ButtonGroup: (props: ButtonGroupProps, children: ChildrenList) => J
43
69
  ...(style ? { style: style as Record<string, string> } : {}),
44
70
  })
45
71
 
46
- // Apply inline styles to child elements so they appear joined.
47
- // Inline styles are needed because child Button components have their
48
- // own scoped CSS for margin and borderRadius that can't be overridden
49
- // from the parent's stylesheet alone.
50
- requestAnimationFrame(() => {
51
- const childElements = Array.from(wrapperRef.current?.children ?? []) as HTMLElement[]
52
- const isVertical = orientation === 'vertical'
53
-
54
- childElements.forEach((child, index) => {
55
- child.style.margin = '0'
56
-
57
- if (childElements.length === 1) {
58
- child.style.borderRadius = radius
59
- return
60
- }
61
-
62
- const isFirst = index === 0
63
- const isLast = index === childElements.length - 1
64
-
65
- if (isFirst) {
66
- child.style.borderRadius = isVertical ? `${radius} ${radius} 0 0` : `${radius} 0 0 ${radius}`
67
- } else if (isLast) {
68
- child.style.borderRadius = isVertical ? `0 0 ${radius} ${radius}` : `0 ${radius} ${radius} 0`
69
- } else {
70
- child.style.borderRadius = '0'
71
- }
72
- })
73
- })
74
-
75
- return (
76
- <div ref={wrapperRef} style={{ display: 'contents' }}>
77
- {children}
78
- </div>
79
- )
72
+ return <>{children}</>
80
73
  },
81
74
  })
82
75
 
@@ -222,6 +215,37 @@ export const ToggleButtonGroup: (props: ToggleButtonGroupProps, children: Childr
222
215
  '&[data-orientation="vertical"]': {
223
216
  flexDirection: 'column',
224
217
  },
218
+
219
+ '&[data-disabled]': {
220
+ pointerEvents: 'none',
221
+ opacity: cssVariableTheme.action.disabledOpacity,
222
+ },
223
+
224
+ // Grouped appearance: box-shadow border + reset border-radius.
225
+ // Uses [data-value] attribute selector for specificity (0,1,2) to
226
+ // override ToggleButton's own CSS at (0,1,1).
227
+ '& button[data-value]': {
228
+ boxShadow: '0px 0px 0px 1px var(--toggle-color-main)',
229
+ borderRadius: '0',
230
+ },
231
+
232
+ '&:not([data-orientation="vertical"]) button:first-of-type': {
233
+ borderRadius: `${groupChildRadius} 0 0 ${groupChildRadius}`,
234
+ },
235
+ '&:not([data-orientation="vertical"]) button:last-of-type': {
236
+ borderRadius: `0 ${groupChildRadius} ${groupChildRadius} 0`,
237
+ },
238
+
239
+ '&[data-orientation="vertical"] button:first-of-type': {
240
+ borderRadius: `${groupChildRadius} ${groupChildRadius} 0 0`,
241
+ },
242
+ '&[data-orientation="vertical"] button:last-of-type': {
243
+ borderRadius: `0 0 ${groupChildRadius} ${groupChildRadius}`,
244
+ },
245
+
246
+ '& button:only-of-type': {
247
+ borderRadius: groupChildRadius,
248
+ },
225
249
  },
226
250
  render: ({ props, children, useDisposable, useHostProps, useRef }) => {
227
251
  const groupRef = useRef<HTMLDivElement>('group')
@@ -274,20 +298,20 @@ export const ToggleButtonGroup: (props: ToggleButtonGroupProps, children: Childr
274
298
  useHostProps({
275
299
  role: 'group',
276
300
  'data-orientation': orientation,
301
+ 'data-disabled': disabled ? '' : undefined,
277
302
  style: {
278
303
  '--toggle-color-main': colors.main,
279
304
  ...(style as Record<string, string>),
280
305
  },
281
306
  })
282
307
 
283
- const radius = cssVariableTheme.shape.borderRadius.md
284
-
285
- // Update child toggle button states and apply grouping styles
308
+ // Sync data-selected, disabled, and data-size on child buttons.
309
+ // These can't be expressed in CSS because they depend on matching the
310
+ // group's value prop against each button's data-value attribute.
286
311
  requestAnimationFrame(() => {
287
312
  const buttons = Array.from(groupRef.current?.querySelectorAll('button[data-value]') ?? [])
288
- const isVertical = orientation === 'vertical'
289
313
 
290
- buttons.forEach((btn, index) => {
314
+ buttons.forEach((btn) => {
291
315
  const val = btn.getAttribute('data-value')
292
316
  if (val && selectedValues.includes(val)) {
293
317
  btn.setAttribute('data-selected', '')
@@ -295,8 +319,6 @@ export const ToggleButtonGroup: (props: ToggleButtonGroupProps, children: Childr
295
319
  btn.removeAttribute('data-selected')
296
320
  }
297
321
 
298
- btn.setAttribute('data-grouped', '')
299
-
300
322
  if (disabled) {
301
323
  btn.setAttribute('disabled', '')
302
324
  }
@@ -306,21 +328,6 @@ export const ToggleButtonGroup: (props: ToggleButtonGroupProps, children: Childr
306
328
  } else if (size === 'medium') {
307
329
  btn.removeAttribute('data-size')
308
330
  }
309
-
310
- // Propagate color CSS variable
311
- ;(btn as HTMLElement).style.setProperty('--toggle-color-main', colors.main)
312
-
313
- // Apply grouping border-radius via inline styles
314
- const el = btn as HTMLElement
315
- if (buttons.length === 1) {
316
- el.style.borderRadius = radius
317
- } else if (index === 0) {
318
- el.style.borderRadius = isVertical ? `${radius} ${radius} 0 0` : `${radius} 0 0 ${radius}`
319
- } else if (index === buttons.length - 1) {
320
- el.style.borderRadius = isVertical ? `0 0 ${radius} ${radius}` : `0 ${radius} ${radius} 0`
321
- } else {
322
- el.style.borderRadius = '0'
323
- }
324
331
  })
325
332
  })
326
333
 
@@ -440,11 +447,15 @@ export const SegmentedControl = Shade<SegmentedControlProps>({
440
447
  const isSelected = value === option.value
441
448
  const isDisabled = disabled || option.disabled
442
449
 
443
- const btn = (
450
+ return (
444
451
  <button
445
452
  type="button"
446
453
  className="segmented-option"
447
454
  disabled={isDisabled}
455
+ role="radio"
456
+ aria-checked={isSelected ? 'true' : 'false'}
457
+ data-value={option.value}
458
+ {...(isSelected ? { 'data-selected': '' } : {})}
448
459
  onclick={() => {
449
460
  if (!isDisabled && value !== option.value) {
450
461
  onValueChange?.(option.value)
@@ -453,16 +464,7 @@ export const SegmentedControl = Shade<SegmentedControlProps>({
453
464
  >
454
465
  {option.label}
455
466
  </button>
456
- ) as unknown as HTMLButtonElement
457
-
458
- btn.setAttribute('role', 'radio')
459
- btn.setAttribute('aria-checked', isSelected ? 'true' : 'false')
460
- btn.setAttribute('data-value', option.value)
461
- if (isSelected) {
462
- btn.setAttribute('data-selected', '')
463
- }
464
-
465
- return btn
467
+ )
466
468
  })
467
469
 
468
470
  return <>{buttons}</>
@@ -70,6 +70,7 @@ export const Button = Shade<ButtonProps>({
70
70
  elementBaseName: 'button',
71
71
  css: {
72
72
  // Base styles (layout, typography)
73
+ fontFamily: cssVariableTheme.typography.fontFamily,
73
74
  display: 'inline-flex',
74
75
  alignItems: 'center',
75
76
  justifyContent: 'center',
@@ -102,7 +102,10 @@ describe('CacheView', () => {
102
102
  const resultComponent = resultEl as JSX.Element
103
103
  resultComponent.updateComponent()
104
104
  await flushUpdates()
105
- expect(resultComponent.querySelector('.result-title')?.textContent).toBe('Something went wrong')
105
+ const titleEl = resultComponent.querySelector('.result-title') as JSX.Element
106
+ titleEl.updateComponent()
107
+ await flushUpdates()
108
+ expect(titleEl?.textContent).toBe('Something went wrong')
106
109
  cache[Symbol.dispose]()
107
110
  })
108
111
 
@@ -3,6 +3,7 @@ import { hasCacheValue, isFailedCacheResult, isObsoleteCacheResult } from '@fury
3
3
  import type { ShadeComponent } from '@furystack/shades'
4
4
  import { Shade, createComponent } from '@furystack/shades'
5
5
 
6
+ import { cssVariableTheme } from '../services/css-variable-theme.js'
6
7
  import { Button } from './button.js'
7
8
  import { Result } from './result.js'
8
9
 
@@ -58,6 +59,9 @@ const getDefaultErrorUi = (error: unknown, retry: () => void): JSX.Element =>
58
59
  */
59
60
  export const CacheView: <TData, TArgs extends any[]>(props: CacheViewProps<TData, TArgs>) => JSX.Element = Shade({
60
61
  shadowDomName: 'shade-cache-view',
62
+ css: {
63
+ fontFamily: cssVariableTheme.typography.fontFamily,
64
+ },
61
65
  render: ({ props, useObservable, useState }): JSX.Element | null => {
62
66
  const { cache, args, content, loader, error } = props
63
67
 
@@ -24,9 +24,11 @@ export const Card = Shade<CardProps>({
24
24
  shadowDomName: 'shade-card',
25
25
  css: {
26
26
  display: 'flex',
27
+ fontFamily: cssVariableTheme.typography.fontFamily,
27
28
  flexDirection: 'column',
28
29
  borderRadius: cssVariableTheme.shape.borderRadius.md,
29
- backgroundColor: cssVariableTheme.background.paper,
30
+ background: cssVariableTheme.background.paper,
31
+ backgroundImage: cssVariableTheme.background.paperImage,
30
32
  color: cssVariableTheme.text.primary,
31
33
  overflow: 'hidden',
32
34
  transition: buildTransition(
@@ -44,6 +44,7 @@ export const CircularProgress = Shade<CircularProgressProps>({
44
44
  shadowDomName: 'shade-circular-progress',
45
45
  css: {
46
46
  display: 'inline-flex',
47
+ fontFamily: cssVariableTheme.typography.fontFamily,
47
48
  alignItems: 'center',
48
49
  justifyContent: 'center',
49
50
  lineHeight: '1',
@@ -35,6 +35,7 @@ export const CommandPaletteInput = Shade<{ manager: CommandPaletteManager }>({
35
35
  shadowDomName: 'shades-command-palette-input',
36
36
  css: {
37
37
  width: '0%',
38
+ fontFamily: cssVariableTheme.typography.fontFamily,
38
39
  overflow: 'hidden',
39
40
  '&[data-opened]': {
40
41
  width: '100%',
@@ -6,6 +6,7 @@ import type { CommandPaletteManager } from './command-palette-manager.js'
6
6
  export const CommandPaletteSuggestionList = Shade<{ manager: CommandPaletteManager; fullScreenSuggestions?: boolean }>({
7
7
  shadowDomName: 'shade-command-palette-suggestion-list',
8
8
  css: {
9
+ fontFamily: cssVariableTheme.typography.fontFamily,
9
10
  '& .suggestion-items-container': {
10
11
  borderTop: 'none',
11
12
  position: 'absolute',
@@ -16,7 +17,8 @@ export const CommandPaletteSuggestionList = Shade<{ manager: CommandPaletteManag
16
17
  overflowY: 'auto',
17
18
  zIndex: '1',
18
19
  left: 'auto',
19
- backgroundColor: cssVariableTheme.background.paper,
20
+ background: cssVariableTheme.background.paper,
21
+ backgroundImage: cssVariableTheme.background.paperImage,
20
22
  boxShadow: cssVariableTheme.shadows.lg,
21
23
  backdropFilter: 'blur(20px)',
22
24
  border: `1px solid ${cssVariableTheme.action.subtleBorder}`,
@@ -1,5 +1,6 @@
1
1
  import { Shade, createComponent } from '@furystack/shades'
2
2
  import { ClickAwayService } from '../../services/click-away-service.js'
3
+ import { cssVariableTheme } from '../../services/css-variable-theme.js'
3
4
  import { Icon } from '../icons/icon.js'
4
5
  import { close } from '../icons/icon-definitions.js'
5
6
  import { Loader } from '../loader.js'
@@ -25,6 +26,7 @@ export const CommandPalette = Shade<CommandPaletteProps>({
25
26
  shadowDomName: 'shade-command-palette',
26
27
  css: {
27
28
  ...searchableInputStyles,
29
+ fontFamily: cssVariableTheme.typography.fontFamily,
28
30
  '& .command-palette-wrapper': {
29
31
  display: 'flex',
30
32
  flexDirection: 'column',
@@ -14,6 +14,7 @@ export const ContextMenuItemComponent: <T>(props: ContextMenuItemProps<T>, child
14
14
  shadowDomName: 'shade-context-menu-item',
15
15
  css: {
16
16
  display: 'flex',
17
+ fontFamily: cssVariableTheme.typography.fontFamily,
17
18
  alignItems: 'center',
18
19
  padding: `${cssVariableTheme.spacing.sm} ${cssVariableTheme.spacing.md}`,
19
20
  cursor: 'default',
@@ -14,6 +14,7 @@ export const ContextMenu: <T>(props: ContextMenuProps<T>, children: ChildrenList
14
14
  >({
15
15
  shadowDomName: 'shade-context-menu',
16
16
  css: {
17
+ fontFamily: cssVariableTheme.typography.fontFamily,
17
18
  '& .context-menu-backdrop': {
18
19
  opacity: '0',
19
20
  transition: `opacity ${cssVariableTheme.transitions.duration.fast} ease-out`,
@@ -1,6 +1,7 @@
1
1
  import type { ChildrenList } from '@furystack/shades'
2
2
  import { Shade, createComponent } from '@furystack/shades'
3
3
  import type { CollectionService } from '../../services/collection-service.js'
4
+ import { cssVariableTheme } from '../../services/css-variable-theme.js'
4
5
  import { DataGridRow } from './data-grid-row.js'
5
6
  import type { DataRowCells } from './data-grid.js'
6
7
 
@@ -28,6 +29,7 @@ export const DataGridBody: <T, Column extends string>(
28
29
  elementBaseName: 'tbody',
29
30
  css: {
30
31
  display: 'table-row-group',
32
+ fontFamily: cssVariableTheme.typography.fontFamily,
31
33
  },
32
34
  render: ({ props, useObservable }) => {
33
35
  const [data] = useObservable('data', props.service.data)
@@ -24,6 +24,7 @@ export const DataGridRow: <T, Column extends string>(
24
24
  shadowDomName: 'shades-data-grid-row',
25
25
  css: {
26
26
  display: 'table-row',
27
+ fontFamily: cssVariableTheme.typography.fontFamily,
27
28
  cursor: 'default',
28
29
  userSelect: 'none',
29
30
  transition: buildTransition(
@@ -124,6 +124,7 @@ export const DataGrid: <T, Column extends string>(
124
124
  shadowDomName: 'shade-data-grid',
125
125
  css: {
126
126
  display: 'block',
127
+ fontFamily: cssVariableTheme.typography.fontFamily,
127
128
  width: '100%',
128
129
  height: '100%',
129
130
  overflow: 'auto',
@@ -1,6 +1,7 @@
1
1
  import { createComponent, Shade } from '@furystack/shades'
2
2
  import type { ObservableValue } from '@furystack/utils'
3
3
  import { SegmentedControl } from '../../button-group.js'
4
+ import { cssVariableTheme } from '../../../services/css-variable-theme.js'
4
5
  import type { FilterableFindOptions } from '../data-grid.js'
5
6
 
6
7
  type BooleanFilterValue = 'true' | 'false' | 'any'
@@ -11,6 +12,7 @@ export const BooleanFilter = Shade<{
11
12
  onClose: () => void
12
13
  }>({
13
14
  shadowDomName: 'data-grid-boolean-filter',
15
+ css: { fontFamily: cssVariableTheme.typography.fontFamily },
14
16
  render: ({ props, useObservable }) => {
15
17
  const [findOptions, setFindOptions] = useObservable('findOptions', props.findOptions)
16
18
 
@@ -5,6 +5,7 @@ import { Button } from '../../button.js'
5
5
  import { close as closeIcon, search as searchIcon } from '../../icons/icon-definitions.js'
6
6
  import { Icon } from '../../icons/icon.js'
7
7
  import type { FilterableFindOptions } from '../data-grid.js'
8
+ import { cssVariableTheme } from '../../../services/css-variable-theme.js'
8
9
  import { filterBaseCss, filterInputCss } from './filter-styles.js'
9
10
 
10
11
  type DateMode = 'before' | 'after' | 'between'
@@ -17,6 +18,7 @@ export const DateFilter = Shade<{
17
18
  shadowDomName: 'data-grid-date-filter',
18
19
  css: {
19
20
  ...filterBaseCss,
21
+ fontFamily: cssVariableTheme.typography.fontFamily,
20
22
  '& input[type="datetime-local"]': filterInputCss,
21
23
  },
22
24
  render: ({ props, useObservable, useState }) => {
@@ -6,6 +6,7 @@ import { close as closeIcon, search as searchIcon } from '../../icons/icon-defin
6
6
  import { Icon } from '../../icons/icon.js'
7
7
  import { Checkbox } from '../../inputs/checkbox.js'
8
8
  import type { FilterableFindOptions } from '../data-grid.js'
9
+ import { cssVariableTheme } from '../../../services/css-variable-theme.js'
9
10
  import { filterBaseCss } from './filter-styles.js'
10
11
 
11
12
  type EnumMode = 'include' | 'exclude'
@@ -19,6 +20,7 @@ export const EnumFilter = Shade<{
19
20
  shadowDomName: 'data-grid-enum-filter',
20
21
  css: {
21
22
  ...filterBaseCss,
23
+ fontFamily: cssVariableTheme.typography.fontFamily,
22
24
  '& .filter-mode': {
23
25
  marginBottom: '8px',
24
26
  },
@@ -10,6 +10,7 @@ export type FilterDropdownProps = {
10
10
  export const FilterDropdown: (props: FilterDropdownProps, children: ChildrenList) => JSX.Element = Shade({
11
11
  shadowDomName: 'data-grid-filter-dropdown',
12
12
  css: {
13
+ fontFamily: cssVariableTheme.typography.fontFamily,
13
14
  display: 'block',
14
15
  position: 'absolute',
15
16
  top: '100%',
@@ -5,6 +5,7 @@ import { SegmentedControl } from '../../button-group.js'
5
5
  import { Icon } from '../../icons/icon.js'
6
6
  import { close as closeIcon, search as searchIcon } from '../../icons/icon-definitions.js'
7
7
  import type { FilterableFindOptions } from '../data-grid.js'
8
+ import { cssVariableTheme } from '../../../services/css-variable-theme.js'
8
9
  import { filterBaseCss, filterInputCss } from './filter-styles.js'
9
10
 
10
11
  type NumberOperator = '$eq' | '$gt' | '$gte' | '$lt' | '$lte'
@@ -25,6 +26,7 @@ export const NumberFilter = Shade<{
25
26
  shadowDomName: 'data-grid-number-filter',
26
27
  css: {
27
28
  ...filterBaseCss,
29
+ fontFamily: cssVariableTheme.typography.fontFamily,
28
30
  '& input': filterInputCss,
29
31
  },
30
32
  render: ({ props, useObservable, useState }) => {
@@ -5,6 +5,7 @@ import { SegmentedControl } from '../../button-group.js'
5
5
  import { Icon } from '../../icons/icon.js'
6
6
  import { close as closeIcon, search as searchIcon } from '../../icons/icon-definitions.js'
7
7
  import type { FilterableFindOptions } from '../data-grid.js'
8
+ import { cssVariableTheme } from '../../../services/css-variable-theme.js'
8
9
  import { filterBaseCss, filterInputCss } from './filter-styles.js'
9
10
 
10
11
  type StringOperator = '$regex' | '$startsWith' | '$endsWith' | '$eq'
@@ -24,6 +25,7 @@ export const StringFilter = Shade<{
24
25
  shadowDomName: 'data-grid-string-filter',
25
26
  css: {
26
27
  ...filterBaseCss,
28
+ fontFamily: cssVariableTheme.typography.fontFamily,
27
29
  '& input': filterInputCss,
28
30
  },
29
31
  render: ({ props, useObservable, useState }) => {
@@ -15,6 +15,7 @@ export const DataGridFooter: <T>(props: {
15
15
  shadowDomName: 'shade-data-grid-footer',
16
16
  css: {
17
17
  display: 'block',
18
+ fontFamily: cssVariableTheme.typography.fontFamily,
18
19
  '& .pager': {
19
20
  backdropFilter: 'blur(10px)',
20
21
  color: cssVariableTheme.text.secondary,
@@ -5,6 +5,7 @@ import type { ObservableValue } from '@furystack/utils'
5
5
  import { ToggleButton } from '../button-group.js'
6
6
  import { arrowDown, arrowUp, arrowUpDown, filter as filterIcon } from '../icons/icon-definitions.js'
7
7
  import { Icon } from '../icons/icon.js'
8
+ import { cssVariableTheme } from '../../services/css-variable-theme.js'
8
9
  import type { ColumnFilterConfig, FilterableFindOptions } from './data-grid.js'
9
10
  import { BooleanFilter } from './filters/boolean-filter.js'
10
11
  import { DateFilter } from './filters/date-filter.js'
@@ -127,6 +128,7 @@ export const DataGridHeader: <T, Column extends string>(
127
128
  shadowDomName: 'data-grid-header',
128
129
  css: {
129
130
  display: 'block',
131
+ fontFamily: cssVariableTheme.typography.fontFamily,
130
132
  position: 'relative',
131
133
  '& .header-content': {
132
134
  display: 'flex',
@@ -6,6 +6,7 @@ export const SelectionCell = Shade<{ entry: any; service: CollectionService<any>
6
6
  shadowDomName: 'shades-data-grid-selection-cell',
7
7
  css: {
8
8
  display: 'inline-flex',
9
+ fontFamily: cssVariableTheme.typography.fontFamily,
9
10
  alignItems: 'center',
10
11
  justifyContent: 'center',
11
12
  '& input[type="checkbox"]': {
@@ -4,6 +4,7 @@ import { promisifyAnimation } from '../utils/promisify-animation.js'
4
4
  import { Icon } from './icons/icon.js'
5
5
  import { close } from './icons/icon-definitions.js'
6
6
  import { Modal } from './modal.js'
7
+ import { Typography } from './typography.js'
7
8
 
8
9
  export type DialogProps = {
9
10
  isVisible: boolean
@@ -53,11 +54,13 @@ const hideAnimation = async (el: Element | null) => {
53
54
  export const Dialog = Shade<DialogProps>({
54
55
  shadowDomName: 'shade-dialog',
55
56
  css: {
57
+ fontFamily: cssVariableTheme.typography.fontFamily,
56
58
  '& .dialog-panel': {
57
59
  position: 'relative',
58
60
  display: 'flex',
59
61
  flexDirection: 'column',
60
- backgroundColor: cssVariableTheme.background.paper,
62
+ background: cssVariableTheme.background.paper,
63
+ backgroundImage: cssVariableTheme.background.paperImage,
61
64
  color: cssVariableTheme.text.primary,
62
65
  borderRadius: cssVariableTheme.shape.borderRadius.md,
63
66
  boxShadow: cssVariableTheme.shadows.xl,
@@ -77,10 +80,8 @@ export const Dialog = Shade<DialogProps>({
77
80
  },
78
81
 
79
82
  '& .dialog-title': {
80
- margin: '0',
81
- fontSize: cssVariableTheme.typography.fontSize.lg,
82
- fontWeight: cssVariableTheme.typography.fontWeight.semibold,
83
- lineHeight: cssVariableTheme.typography.lineHeight.tight,
83
+ flex: '1',
84
+ minWidth: '0',
84
85
  },
85
86
 
86
87
  '& .dialog-close': {
@@ -156,7 +157,13 @@ export const Dialog = Shade<DialogProps>({
156
157
  >
157
158
  {title || onClose ? (
158
159
  <div className="dialog-header">
159
- {title ? <h2 className="dialog-title">{title}</h2> : <span />}
160
+ {title ? (
161
+ <Typography variant="h5" className="dialog-title" style={{ margin: '0' }}>
162
+ {title}
163
+ </Typography>
164
+ ) : (
165
+ <span />
166
+ )}
160
167
  {onClose ? (
161
168
  <button className="dialog-close" onclick={handleClose} aria-label="Close dialog">
162
169
  <Icon icon={close} size="small" />
@@ -259,16 +266,9 @@ export const ConfirmDialog = (isVisible: boolean, options: ConfirmDialogOptions)
259
266
  }
260
267
  >
261
268
  {typeof message === 'string' ? (
262
- <p
263
- style={{
264
- margin: '0',
265
- fontSize: cssVariableTheme.typography.fontSize.md,
266
- lineHeight: cssVariableTheme.typography.lineHeight.normal,
267
- color: cssVariableTheme.text.secondary,
268
- }}
269
- >
269
+ <Typography variant="body1" color="textSecondary" style={{ margin: '0' }}>
270
270
  {message}
271
- </p>
271
+ </Typography>
272
272
  ) : (
273
273
  message
274
274
  )}
@@ -15,6 +15,7 @@ export const Divider = Shade<DividerProps>({
15
15
  shadowDomName: 'shade-divider',
16
16
  css: {
17
17
  display: 'flex',
18
+ fontFamily: cssVariableTheme.typography.fontFamily,
18
19
  alignItems: 'center',
19
20
  margin: '0',
20
21
  border: 'none',
@@ -23,7 +23,7 @@ export type DrawerToggleButtonProps = {
23
23
  * // In AppBar
24
24
  * <AppBar>
25
25
  * <DrawerToggleButton position="left" />
26
- * <h1>My App</h1>
26
+ * <Typography variant="h3">My App</Typography>
27
27
  * </AppBar>
28
28
  *
29
29
  * // With custom aria-label
@@ -37,6 +37,7 @@ export const DrawerToggleButton = Shade<DrawerToggleButtonProps>({
37
37
  shadowDomName: 'shade-drawer-toggle-button',
38
38
  css: {
39
39
  display: 'inline-block',
40
+ fontFamily: cssVariableTheme.typography.fontFamily,
40
41
 
41
42
  '& button': {
42
43
  display: 'flex',
@@ -69,6 +69,7 @@ export const Drawer = Shade<DrawerProps>({
69
69
  zIndex: '1000',
70
70
  overflow: 'hidden',
71
71
  transition: `width ${cssVariableTheme.transitions.duration.slow} ${cssVariableTheme.transitions.easing.easeInOut}, transform ${cssVariableTheme.transitions.duration.slow} ${cssVariableTheme.transitions.easing.easeInOut}`,
72
+ fontFamily: cssVariableTheme.typography.fontFamily,
72
73
  background: cssVariableTheme.background.paper,
73
74
  },
74
75
 
@@ -60,6 +60,7 @@ export const Dropdown: (props: DropdownProps, children: ChildrenList) => JSX.Ele
60
60
  shadowDomName: 'shade-dropdown',
61
61
  css: {
62
62
  display: 'inline-flex',
63
+ fontFamily: cssVariableTheme.typography.fontFamily,
63
64
  position: 'relative',
64
65
 
65
66
  '& .dropdown-trigger': {
@@ -14,6 +14,7 @@ export const Fab = Shade<FabProps>({
14
14
  elementBaseName: 'button',
15
15
  css: {
16
16
  position: 'fixed',
17
+ fontFamily: cssVariableTheme.typography.fontFamily,
17
18
  bottom: cssVariableTheme.spacing.xl,
18
19
  right: cssVariableTheme.spacing.xl,
19
20
  background: 'var(--fab-color-main)',
@@ -1,6 +1,7 @@
1
1
  import { Injectable } from '@furystack/inject'
2
2
  import type { ChildrenList, PartialElement } from '@furystack/shades'
3
3
  import { Shade, createComponent } from '@furystack/shades'
4
+ import { cssVariableTheme } from '../services/css-variable-theme.js'
4
5
  import { ObservableValue } from '@furystack/utils'
5
6
  import type { InputValidationResult } from './inputs/input.js'
6
7
 
@@ -58,6 +59,7 @@ export const Form: <T>(props: FormProps<T>, children: ChildrenList) => JSX.Eleme
58
59
  shadowDomName: 'shade-form',
59
60
  elementBase: HTMLFormElement,
60
61
  elementBaseName: 'form',
62
+ css: { fontFamily: cssVariableTheme.typography.fontFamily },
61
63
  render: ({ props, children, useDisposable, injector, useHostProps }) => {
62
64
  const formInjector = useDisposable('formInjector', () => injector.createChild())
63
65
  const formService = new FormService()