@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
@@ -1,6 +1,7 @@
1
1
  import { Shade, createComponent } from '@furystack/shades'
2
2
  import { cssVariableTheme } from '../../services/css-variable-theme.js'
3
3
  import { Paper } from '../paper.js'
4
+ import { Typography } from '../typography.js'
4
5
 
5
6
  /**
6
7
  * Props for the PageHeader component.
@@ -58,6 +59,7 @@ export const PageHeader = Shade<PageHeaderProps>({
58
59
  shadowDomName: 'shade-page-header',
59
60
  css: {
60
61
  display: 'block',
62
+ fontFamily: cssVariableTheme.typography.fontFamily,
61
63
  position: 'sticky',
62
64
  top: '0',
63
65
  zIndex: `calc(${cssVariableTheme.zIndex.drawer} - 1)`,
@@ -76,23 +78,12 @@ export const PageHeader = Shade<PageHeaderProps>({
76
78
 
77
79
  '& .page-header-title': {
78
80
  margin: '0',
79
- fontSize: cssVariableTheme.typography.fontSize.xl,
80
- fontWeight: cssVariableTheme.typography.fontWeight.semibold,
81
- lineHeight: cssVariableTheme.typography.lineHeight.tight,
82
- color: cssVariableTheme.text.primary,
83
81
  },
84
82
 
85
83
  '& .page-header-icon': {
86
84
  marginRight: cssVariableTheme.spacing.sm,
87
85
  },
88
86
 
89
- '& .page-header-description': {
90
- margin: `${cssVariableTheme.spacing.sm} 0 0 0`,
91
- fontSize: cssVariableTheme.typography.fontSize.md,
92
- lineHeight: cssVariableTheme.typography.lineHeight.normal,
93
- color: cssVariableTheme.text.secondary,
94
- },
95
-
96
87
  '& .page-header-actions': {
97
88
  display: 'flex',
98
89
  alignItems: 'center',
@@ -106,14 +97,31 @@ export const PageHeader = Shade<PageHeaderProps>({
106
97
  return (
107
98
  <Paper elevation={2} className="page-header-container">
108
99
  <div className="page-header-content">
109
- <h2 className="page-header-title" data-testid="page-header-title">
100
+ <Typography
101
+ variant="h4"
102
+ className="page-header-title"
103
+ data-testid="page-header-title"
104
+ style={{
105
+ margin: '0',
106
+ display: 'flex',
107
+ alignItems: 'center',
108
+ gap: cssVariableTheme.spacing.sm,
109
+ lineHeight: '100%',
110
+ }}
111
+ >
110
112
  {icon && <span className="page-header-icon">{icon}</span>}
111
113
  {title}
112
- </h2>
114
+ </Typography>
113
115
  {description && (
114
- <p className="page-header-description" data-testid="page-header-description">
116
+ <Typography
117
+ variant="body1"
118
+ color="textSecondary"
119
+ className="page-header-description"
120
+ data-testid="page-header-description"
121
+ style={{ margin: '0', marginTop: cssVariableTheme.spacing.md }}
122
+ >
115
123
  {description}
116
- </p>
124
+ </Typography>
117
125
  )}
118
126
  </div>
119
127
  {actions && (
@@ -89,6 +89,7 @@ export const PageLayout = Shade<PageLayoutProps>({
89
89
  shadowDomName: 'shade-page-layout',
90
90
  css: {
91
91
  display: 'block',
92
+ fontFamily: cssVariableTheme.typography.fontFamily,
92
93
  position: 'fixed',
93
94
  top: '0',
94
95
  left: '0',
@@ -131,6 +132,7 @@ export const PageLayout = Shade<PageLayoutProps>({
131
132
  zIndex: cssVariableTheme.zIndex.drawer,
132
133
  overflow: 'hidden',
133
134
  background: cssVariableTheme.background.paper,
135
+ backgroundImage: cssVariableTheme.background.paperImage,
134
136
  transition: `transform ${cssVariableTheme.transitions.duration.slow} ${cssVariableTheme.transitions.easing.easeInOut}`,
135
137
  },
136
138
  '& .page-layout-drawer-left': {
@@ -6,10 +6,15 @@ export const Paper = Shade<{ elevation?: 0 | 1 | 2 | 3 }>({
6
6
  elementBase: HTMLDivElement,
7
7
  elementBaseName: 'div',
8
8
  css: {
9
+ fontFamily: cssVariableTheme.typography.fontFamily,
9
10
  borderRadius: cssVariableTheme.shape.borderRadius.md,
10
11
  padding: cssVariableTheme.spacing.md,
11
- backgroundColor: cssVariableTheme.background.paper,
12
+ background: cssVariableTheme.background.paper,
13
+ backgroundImage: cssVariableTheme.background.paperImage,
12
14
  color: cssVariableTheme.text.primary,
15
+ borderStyle: 'solid',
16
+ borderWidth: cssVariableTheme.shape.borderWidth,
17
+ borderColor: `${cssVariableTheme.action.subtleBorder} ${cssVariableTheme.divider} ${cssVariableTheme.divider} ${cssVariableTheme.action.subtleBorder}`,
13
18
  '&[data-elevation="0"]': {
14
19
  boxShadow: cssVariableTheme.shadows.none,
15
20
  },
@@ -65,6 +65,7 @@ export const Rating = Shade<RatingProps>({
65
65
  shadowDomName: 'shade-rating',
66
66
  css: {
67
67
  display: 'inline-flex',
68
+ fontFamily: cssVariableTheme.typography.fontFamily,
68
69
  alignItems: 'center',
69
70
 
70
71
  '& .rating-container': {
@@ -32,7 +32,7 @@ describe('Result', () => {
32
32
  }
33
33
  })
34
34
 
35
- it('should render the title text', async () => {
35
+ it('should render the title as Typography', async () => {
36
36
  const el = (
37
37
  <div>
38
38
  <Result status="success" title="Operation Successful" />
@@ -43,7 +43,7 @@ describe('Result', () => {
43
43
  await flushUpdates()
44
44
  const titleEl = result.querySelector('.result-title')
45
45
  expect(titleEl).not.toBeNull()
46
- expect(titleEl?.textContent).toBe('Operation Successful')
46
+ expect(titleEl?.getAttribute('is')).toMatch(/^shade-typography-/)
47
47
  })
48
48
 
49
49
  it('should render the subtitle when provided', async () => {
@@ -57,7 +57,7 @@ describe('Result', () => {
57
57
  await flushUpdates()
58
58
  const subtitleEl = result.querySelector('.result-subtitle')
59
59
  expect(subtitleEl).not.toBeNull()
60
- expect(subtitleEl?.textContent).toBe('Some details here')
60
+ expect(subtitleEl?.getAttribute('is')).toMatch(/^shade-typography-/)
61
61
  })
62
62
 
63
63
  it('should not render the subtitle when not provided', async () => {
@@ -3,6 +3,7 @@ import { Shade, createComponent } from '@furystack/shades'
3
3
  import { cssVariableTheme } from '../services/css-variable-theme.js'
4
4
  import { paletteMainColors } from '../services/palette-css-vars.js'
5
5
  import { Icon } from './icons/icon.js'
6
+ import { Typography } from './typography.js'
6
7
  import {
7
8
  checkCircle,
8
9
  errorCircle,
@@ -90,24 +91,11 @@ export const Result = Shade<ResultProps>({
90
91
  // ==========================================
91
92
 
92
93
  '& .result-title': {
93
- fontSize: cssVariableTheme.typography.fontSize.xl,
94
- fontWeight: cssVariableTheme.typography.fontWeight.bold,
95
- color: cssVariableTheme.text.primary,
96
- margin: '0',
97
94
  marginBottom: cssVariableTheme.spacing.sm,
98
- lineHeight: cssVariableTheme.typography.lineHeight.tight,
99
95
  },
100
96
 
101
- // ==========================================
102
- // SUBTITLE
103
- // ==========================================
104
-
105
97
  '& .result-subtitle': {
106
- fontSize: cssVariableTheme.typography.fontSize.md,
107
- color: cssVariableTheme.text.secondary,
108
- margin: '0',
109
98
  marginBottom: cssVariableTheme.spacing.lg,
110
- lineHeight: cssVariableTheme.typography.lineHeight.normal,
111
99
  maxWidth: '480px',
112
100
  },
113
101
 
@@ -144,8 +132,14 @@ export const Result = Shade<ResultProps>({
144
132
  <span className="result-icon" role="img">
145
133
  {displayIcon}
146
134
  </span>
147
- <h3 className="result-title">{title}</h3>
148
- {subtitle ? <p className="result-subtitle">{subtitle}</p> : null}
135
+ <Typography variant="h5" className="result-title" style={{ margin: '0' }}>
136
+ {title}
137
+ </Typography>
138
+ {subtitle ? (
139
+ <Typography variant="body2" color="textSecondary" className="result-subtitle" style={{ margin: '0' }}>
140
+ {subtitle}
141
+ </Typography>
142
+ ) : null}
149
143
  {hasChildren ? <div className="result-extra">{children}</div> : null}
150
144
  </>
151
145
  )
@@ -1,5 +1,6 @@
1
1
  import type { ChildrenList } from '@furystack/shades'
2
2
  import { Shade, createComponent } from '@furystack/shades'
3
+ import { cssVariableTheme } from '../../services/css-variable-theme.js'
3
4
  import { promisifyAnimation } from '../../utils/promisify-animation.js'
4
5
  import { Icon } from '../icons/icon.js'
5
6
  import { close } from '../icons/icon-definitions.js'
@@ -43,6 +44,7 @@ export const Suggest: <T>(props: SuggestProps<T>, children: ChildrenList) => JSX
43
44
  shadowDomName: 'shade-suggest',
44
45
  css: {
45
46
  ...searchableInputStyles,
47
+ fontFamily: cssVariableTheme.typography.fontFamily,
46
48
  '& .suggest-wrapper': {
47
49
  display: 'flex',
48
50
  flexDirection: 'column',
@@ -6,6 +6,7 @@ export const SuggestInput = Shade<{ manager: SuggestManager<any> }>({
6
6
  shadowDomName: 'shades-suggest-input',
7
7
  css: {
8
8
  width: '100%',
9
+ fontFamily: cssVariableTheme.typography.fontFamily,
9
10
  overflow: 'hidden',
10
11
  '& input': {
11
12
  color: cssVariableTheme.text.primary,
@@ -8,6 +8,7 @@ export const SuggestionList: <T>(props: { manager: SuggestManager<T> }, children
8
8
  Shade<{ manager: SuggestManager<any> }>({
9
9
  shadowDomName: 'shade-suggest-suggestion-list',
10
10
  css: {
11
+ fontFamily: cssVariableTheme.typography.fontFamily,
11
12
  '& .suggestion-items-container': {
12
13
  borderTop: 'none',
13
14
  position: 'absolute',
@@ -17,7 +18,8 @@ export const SuggestionList: <T>(props: { manager: SuggestManager<T> }, children
17
18
  overflow: 'hidden',
18
19
  zIndex: '1',
19
20
  left: 'auto',
20
- backgroundColor: cssVariableTheme.background.paper,
21
+ background: cssVariableTheme.background.paper,
22
+ backgroundImage: cssVariableTheme.background.paperImage,
21
23
  color: cssVariableTheme.text.secondary,
22
24
  boxShadow: cssVariableTheme.shadows.lg,
23
25
  backdropFilter: `blur(${cssVariableTheme.effects.blurXl})`,
@@ -74,6 +74,7 @@ export const Tabs = Shade<{
74
74
  }>({
75
75
  shadowDomName: 'shade-tabs',
76
76
  css: {
77
+ fontFamily: cssVariableTheme.typography.fontFamily,
77
78
  width: '100%',
78
79
  height: '100%',
79
80
  display: 'flex',
@@ -56,18 +56,6 @@ describe('TimelineItem', () => {
56
56
  expect(label.textContent).toBe('Jan 2024')
57
57
  })
58
58
 
59
- it('should not render a label when not provided', async () => {
60
- const el = (
61
- <div>
62
- <TimelineItem>Event</TimelineItem>
63
- </div>
64
- )
65
- const item = el.firstElementChild as JSX.Element
66
- item.updateComponent()
67
- await flushUpdates()
68
- expect(item.querySelector('.timeline-label')).toBeNull()
69
- })
70
-
71
59
  it('should set custom dot when dot prop is provided', async () => {
72
60
  const el = (
73
61
  <div>
@@ -194,23 +182,6 @@ describe('Timeline', () => {
194
182
  expect(timeline.getAttribute('data-mode')).toBe('left')
195
183
  })
196
184
 
197
- it('should mark last item with data-last', async () => {
198
- const el = (
199
- <div>
200
- <Timeline>
201
- <TimelineItem>First</TimelineItem>
202
- <TimelineItem>Last</TimelineItem>
203
- </Timeline>
204
- </div>
205
- )
206
- const timeline = el.firstElementChild as JSX.Element
207
- timeline.updateComponent()
208
- await flushUpdates()
209
- const items = timeline.querySelectorAll('shade-timeline-item')
210
- expect(items[0].hasAttribute('data-last')).toBe(false)
211
- expect(items[1].hasAttribute('data-last')).toBe(true)
212
- })
213
-
214
185
  it('should add pending item when pending is true', async () => {
215
186
  const el = (
216
187
  <div>
@@ -225,70 +196,4 @@ describe('Timeline', () => {
225
196
  const items = timeline.querySelectorAll('shade-timeline-item')
226
197
  expect(items.length).toBe(2)
227
198
  })
228
-
229
- it('should not mark original last item as data-last when pending is present', async () => {
230
- const el = (
231
- <div>
232
- <Timeline pending>
233
- <TimelineItem>First</TimelineItem>
234
- <TimelineItem>Second</TimelineItem>
235
- </Timeline>
236
- </div>
237
- )
238
- const timeline = el.firstElementChild as JSX.Element
239
- timeline.updateComponent()
240
- await flushUpdates()
241
- const items = timeline.querySelectorAll('shade-timeline-item')
242
- expect(items[0].hasAttribute('data-last')).toBe(false)
243
- expect(items[1].hasAttribute('data-last')).toBe(false)
244
- })
245
-
246
- it('should set data-side="right" on items in right mode', async () => {
247
- const el = (
248
- <div>
249
- <Timeline mode="right">
250
- <TimelineItem>Event</TimelineItem>
251
- </Timeline>
252
- </div>
253
- )
254
- const timeline = el.firstElementChild as JSX.Element
255
- timeline.updateComponent()
256
- await flushUpdates()
257
- const item = timeline.querySelector('shade-timeline-item') as HTMLElement
258
- expect(item.getAttribute('data-side')).toBe('right')
259
- })
260
-
261
- it('should alternate data-side in alternate mode', async () => {
262
- const el = (
263
- <div>
264
- <Timeline mode="alternate">
265
- <TimelineItem>First</TimelineItem>
266
- <TimelineItem>Second</TimelineItem>
267
- <TimelineItem>Third</TimelineItem>
268
- </Timeline>
269
- </div>
270
- )
271
- const timeline = el.firstElementChild as JSX.Element
272
- timeline.updateComponent()
273
- await flushUpdates()
274
- const items = timeline.querySelectorAll('shade-timeline-item')
275
- expect(items[0].getAttribute('data-side')).toBe('left')
276
- expect(items[1].getAttribute('data-side')).toBe('right')
277
- expect(items[2].getAttribute('data-side')).toBe('left')
278
- })
279
-
280
- it('should not set data-side in left mode', async () => {
281
- const el = (
282
- <div>
283
- <Timeline mode="left">
284
- <TimelineItem>Event</TimelineItem>
285
- </Timeline>
286
- </div>
287
- )
288
- const timeline = el.firstElementChild as JSX.Element
289
- timeline.updateComponent()
290
- await flushUpdates()
291
- const item = timeline.querySelector('shade-timeline-item') as HTMLElement
292
- expect(item.hasAttribute('data-side')).toBe(false)
293
- })
294
199
  })
@@ -31,9 +31,10 @@ export const TimelineItem = Shade<TimelineItemProps>({
31
31
  flex: '1',
32
32
  textAlign: 'right',
33
33
  paddingRight: cssVariableTheme.spacing.md,
34
- paddingTop: '2px',
34
+ paddingTop: cssVariableTheme.spacing.xs,
35
35
  fontFamily: cssVariableTheme.typography.fontFamily,
36
36
  fontSize: cssVariableTheme.typography.fontSize.sm,
37
+ lineHeight: cssVariableTheme.typography.lineHeight.normal,
37
38
  color: cssVariableTheme.text.secondary,
38
39
  boxSizing: 'border-box',
39
40
  },
@@ -44,6 +45,21 @@ export const TimelineItem = Shade<TimelineItemProps>({
44
45
  alignItems: 'center',
45
46
  flexShrink: '0',
46
47
  width: '24px',
48
+ paddingTop: cssVariableTheme.spacing.xs,
49
+ },
50
+
51
+ '& .timeline-dot-line': {
52
+ display: 'flex',
53
+ alignItems: 'center',
54
+ justifyContent: 'center',
55
+ flexShrink: '0',
56
+ },
57
+
58
+ '& .timeline-dot-line::before': {
59
+ content: '"\\200b"',
60
+ fontSize: cssVariableTheme.typography.fontSize.sm,
61
+ lineHeight: cssVariableTheme.typography.lineHeight.normal,
62
+ fontFamily: cssVariableTheme.typography.fontFamily,
47
63
  },
48
64
 
49
65
  '& .timeline-dot': {
@@ -56,7 +72,6 @@ export const TimelineItem = Shade<TimelineItemProps>({
56
72
  backgroundColor: 'var(--timeline-dot-color)',
57
73
  flexShrink: '0',
58
74
  zIndex: '1',
59
- marginTop: '5px',
60
75
  },
61
76
 
62
77
  '& .timeline-dot[data-custom]': {
@@ -83,34 +98,18 @@ export const TimelineItem = Shade<TimelineItemProps>({
83
98
 
84
99
  '& .timeline-content': {
85
100
  flex: '1',
101
+ paddingTop: cssVariableTheme.spacing.xs,
86
102
  paddingLeft: cssVariableTheme.spacing.md,
87
103
  paddingBottom: cssVariableTheme.spacing.lg,
88
104
  fontFamily: cssVariableTheme.typography.fontFamily,
89
105
  fontSize: cssVariableTheme.typography.fontSize.sm,
106
+ lineHeight: cssVariableTheme.typography.lineHeight.normal,
90
107
  color: cssVariableTheme.text.primary,
91
108
  boxSizing: 'border-box',
92
109
  },
93
110
 
94
- // When placed in a right-mode or alternate-right context, the label goes right and content goes left
95
- '&[data-side="right"] .timeline-label': {
96
- textAlign: 'left',
97
- paddingRight: '0',
98
- paddingLeft: cssVariableTheme.spacing.md,
99
- order: '3',
100
- },
101
- '&[data-side="right"] .timeline-content': {
102
- textAlign: 'right',
103
- paddingLeft: '0',
104
- paddingRight: cssVariableTheme.spacing.md,
105
- order: '1',
106
- },
107
- '&[data-side="right"] .timeline-dot-column': {
108
- order: '2',
109
- },
110
-
111
- // Last item: hide tail
112
- '&[data-last] .timeline-tail': {
113
- visibility: 'hidden',
111
+ '&:last-of-type .timeline-tail': {
112
+ display: 'none',
114
113
  },
115
114
  },
116
115
  render: ({ props, children, useHostProps }) => {
@@ -128,10 +127,12 @@ export const TimelineItem = Shade<TimelineItemProps>({
128
127
 
129
128
  return (
130
129
  <>
131
- {label !== undefined ? <div className="timeline-label">{label}</div> : null}
130
+ <div className="timeline-label">{label}</div>
132
131
  <div className="timeline-dot-column">
133
- <div className="timeline-dot" {...(dot ? { 'data-custom': '' } : {})}>
134
- {dot ?? null}
132
+ <div className="timeline-dot-line">
133
+ <div className="timeline-dot" {...(dot ? { 'data-custom': '' } : {})}>
134
+ {dot ?? null}
135
+ </div>
135
136
  </div>
136
137
  <div className="timeline-tail" {...(isPending ? { 'data-pending': '' } : {})} />
137
138
  </div>
@@ -164,6 +165,42 @@ export const Timeline = Shade<TimelineProps>({
164
165
  margin: '0',
165
166
  listStyle: 'none',
166
167
  fontFamily: cssVariableTheme.typography.fontFamily,
168
+
169
+ '&[data-mode="right"] > shade-timeline-item .timeline-label': {
170
+ display: 'block',
171
+ textAlign: 'left',
172
+ paddingRight: '0',
173
+ paddingLeft: cssVariableTheme.spacing.md,
174
+ order: '3',
175
+ },
176
+ '&[data-mode="right"] > shade-timeline-item .timeline-content': {
177
+ textAlign: 'right',
178
+ paddingLeft: '0',
179
+ paddingRight: cssVariableTheme.spacing.md,
180
+ order: '1',
181
+ },
182
+ '&[data-mode="right"] > shade-timeline-item .timeline-dot-column': {
183
+ order: '2',
184
+ },
185
+
186
+ '&[data-mode="alternate"] > shade-timeline-item .timeline-label': {
187
+ display: 'block',
188
+ },
189
+ '&[data-mode="alternate"] > shade-timeline-item:nth-of-type(even) .timeline-label': {
190
+ textAlign: 'left',
191
+ paddingRight: '0',
192
+ paddingLeft: cssVariableTheme.spacing.md,
193
+ order: '3',
194
+ },
195
+ '&[data-mode="alternate"] > shade-timeline-item:nth-of-type(even) .timeline-content': {
196
+ textAlign: 'right',
197
+ paddingLeft: '0',
198
+ paddingRight: cssVariableTheme.spacing.md,
199
+ order: '1',
200
+ },
201
+ '&[data-mode="alternate"] > shade-timeline-item:nth-of-type(even) .timeline-dot-column': {
202
+ order: '2',
203
+ },
167
204
  },
168
205
  render: ({ props, children, useHostProps }) => {
169
206
  const { mode = 'left', pending, style } = props
@@ -173,39 +210,11 @@ export const Timeline = Shade<TimelineProps>({
173
210
  ...(style ? { style: style as Record<string, string> } : {}),
174
211
  })
175
212
 
176
- const items = (Array.isArray(children) ? children.flat() : children ? [children] : []) as JSX.Element[]
177
- const totalItems = pending ? items.length + 1 : items.length
178
-
179
- items.forEach((child, index) => {
180
- if (child && typeof child === 'object' && 'setAttribute' in child) {
181
- const isLast = index === totalItems - 1
182
- if (isLast) {
183
- child.setAttribute('data-last', '')
184
- } else {
185
- child.removeAttribute('data-last')
186
- }
187
-
188
- if (mode === 'right') {
189
- child.setAttribute('data-side', 'right')
190
- } else if (mode === 'alternate') {
191
- child.setAttribute('data-side', index % 2 === 0 ? 'left' : 'right')
192
- } else {
193
- child.removeAttribute('data-side')
194
- }
195
- }
196
- })
197
-
198
213
  const pendingItem = pending ? (
199
214
  <TimelineItem
200
215
  color="info"
201
216
  dot={<span style={{ fontSize: cssVariableTheme.typography.fontSize.md }}>⏳</span>}
202
- data-last=""
203
217
  data-pending=""
204
- {...(mode === 'right'
205
- ? { 'data-side': 'right' }
206
- : mode === 'alternate'
207
- ? { 'data-side': items.length % 2 === 0 ? 'left' : 'right' }
208
- : {})}
209
218
  >
210
219
  {pending === true ? 'Loading...' : pending}
211
220
  </TimelineItem>
@@ -213,7 +222,7 @@ export const Timeline = Shade<TimelineProps>({
213
222
 
214
223
  return (
215
224
  <>
216
- {items}
225
+ {children}
217
226
  {pendingItem}
218
227
  </>
219
228
  )
@@ -26,6 +26,7 @@ export const Tooltip = Shade<TooltipProps>({
26
26
  shadowDomName: 'shade-tooltip',
27
27
  css: {
28
28
  position: 'relative',
29
+ fontFamily: cssVariableTheme.typography.fontFamily,
29
30
  display: 'inline-flex',
30
31
 
31
32
  '& .tooltip-popup': {
@@ -23,6 +23,7 @@ export const TreeItem: <T>(props: TreeItemProps<T>, children: ChildrenList) => J
23
23
  shadowDomName: 'shade-tree-item',
24
24
  css: {
25
25
  display: 'flex',
26
+ fontFamily: cssVariableTheme.typography.fontFamily,
26
27
  alignItems: 'center',
27
28
  cursor: 'default',
28
29
  userSelect: 'none',
@@ -1,6 +1,7 @@
1
1
  import type { ChildrenList, PartialElement } from '@furystack/shades'
2
2
  import { createComponent, Shade } from '@furystack/shades'
3
3
  import { ObservableValue } from '@furystack/utils'
4
+ import { cssVariableTheme } from '../../services/css-variable-theme.js'
4
5
  import type { TreeService } from '../../services/tree-service.js'
5
6
  import { TreeItem } from './tree-item.js'
6
7
 
@@ -26,6 +27,7 @@ export const Tree: <T>(props: TreeProps<T>, children: ChildrenList) => JSX.Eleme
26
27
  shadowDomName: 'shade-tree',
27
28
  css: {
28
29
  display: 'block',
30
+ fontFamily: cssVariableTheme.typography.fontFamily,
29
31
  width: '100%',
30
32
  overflow: 'auto',
31
33
  },
@@ -25,16 +25,17 @@ describe('Typography', () => {
25
25
  await flushUpdates()
26
26
  return {
27
27
  injector,
28
- element: root.querySelector('shade-typography') as HTMLElement,
28
+ element: root.querySelector('[is^="shade-typography"]') as HTMLElement,
29
29
  [Symbol.asyncDispose]: () => injector[Symbol.asyncDispose](),
30
30
  }
31
31
  }
32
32
 
33
33
  describe('rendering', () => {
34
- it('should render a shade-typography element', async () => {
34
+ it('should render a customized built-in element', async () => {
35
35
  await usingAsync(await renderTypography(), async ({ element }) => {
36
36
  expect(element).toBeTruthy()
37
- expect(element.tagName.toLowerCase()).toBe('shade-typography')
37
+ expect(element.tagName.toLowerCase()).toBe('p')
38
+ expect(element.getAttribute('is')).toBe('shade-typography-p')
38
39
  })
39
40
  })
40
41
 
@@ -51,11 +52,11 @@ describe('Typography', () => {
51
52
  const subtitleVariants: TypographyVariant[] = ['subtitle1', 'subtitle2']
52
53
  const inlineVariants: TypographyVariant[] = ['caption', 'overline']
53
54
 
54
- it('should default to body1 variant', async () => {
55
+ it('should default to body1 variant with p tag', async () => {
55
56
  await usingAsync(await renderTypography(), async ({ element }) => {
56
57
  expect(element.getAttribute('data-variant')).toBe('body1')
57
- const inner = element.querySelector('.typo-inner')
58
- expect(inner?.tagName.toLowerCase()).toBe('p')
58
+ expect(element.tagName.toLowerCase()).toBe('p')
59
+ expect(element.getAttribute('is')).toBe('shade-typography-p')
59
60
  })
60
61
  })
61
62
 
@@ -63,8 +64,8 @@ describe('Typography', () => {
63
64
  it(`should render ${variant} tag for variant="${variant}"`, async () => {
64
65
  await usingAsync(await renderTypography({ variant }), async ({ element }) => {
65
66
  expect(element.getAttribute('data-variant')).toBe(variant)
66
- const inner = element.querySelector('.typo-inner')
67
- expect(inner?.tagName.toLowerCase()).toBe(variant)
67
+ expect(element.tagName.toLowerCase()).toBe(variant)
68
+ expect(element.getAttribute('is')).toBe(`shade-typography-${variant}`)
68
69
  })
69
70
  })
70
71
  })
@@ -72,8 +73,8 @@ describe('Typography', () => {
72
73
  bodyVariants.forEach((variant) => {
73
74
  it(`should render p tag for variant="${variant}"`, async () => {
74
75
  await usingAsync(await renderTypography({ variant }), async ({ element }) => {
75
- const inner = element.querySelector('.typo-inner')
76
- expect(inner?.tagName.toLowerCase()).toBe('p')
76
+ expect(element.tagName.toLowerCase()).toBe('p')
77
+ expect(element.getAttribute('is')).toBe('shade-typography-p')
77
78
  })
78
79
  })
79
80
  })
@@ -81,8 +82,8 @@ describe('Typography', () => {
81
82
  subtitleVariants.forEach((variant) => {
82
83
  it(`should render h6 tag for variant="${variant}"`, async () => {
83
84
  await usingAsync(await renderTypography({ variant }), async ({ element }) => {
84
- const inner = element.querySelector('.typo-inner')
85
- expect(inner?.tagName.toLowerCase()).toBe('h6')
85
+ expect(element.tagName.toLowerCase()).toBe('h6')
86
+ expect(element.getAttribute('is')).toBe('shade-typography-h6')
86
87
  })
87
88
  })
88
89
  })
@@ -90,8 +91,8 @@ describe('Typography', () => {
90
91
  inlineVariants.forEach((variant) => {
91
92
  it(`should render span tag for variant="${variant}"`, async () => {
92
93
  await usingAsync(await renderTypography({ variant }), async ({ element }) => {
93
- const inner = element.querySelector('.typo-inner')
94
- expect(inner?.tagName.toLowerCase()).toBe('span')
94
+ expect(element.tagName.toLowerCase()).toBe('span')
95
+ expect(element.getAttribute('is')).toBe('shade-typography-span')
95
96
  })
96
97
  })
97
98
  })
@@ -139,8 +140,7 @@ describe('Typography', () => {
139
140
  it('should set data-ellipsis="multiline" for numeric ellipsis', async () => {
140
141
  await usingAsync(await renderTypography({ ellipsis: 3 }), async ({ element }) => {
141
142
  expect(element.getAttribute('data-ellipsis')).toBe('multiline')
142
- const inner = element.querySelector('.typo-inner') as HTMLElement
143
- expect(inner.style.webkitLineClamp).toBe('3')
143
+ expect(element.style.webkitLineClamp).toBe('3')
144
144
  })
145
145
  })
146
146