@furystack/shades-common-components 13.5.0 → 15.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 (540) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/README.md +3 -3
  3. package/esm/components/accordion/accordion-item.d.ts.map +1 -1
  4. package/esm/components/accordion/accordion-item.js +7 -10
  5. package/esm/components/accordion/accordion-item.js.map +1 -1
  6. package/esm/components/accordion/accordion.d.ts +7 -0
  7. package/esm/components/accordion/accordion.d.ts.map +1 -1
  8. package/esm/components/accordion/accordion.js +5 -2
  9. package/esm/components/accordion/accordion.js.map +1 -1
  10. package/esm/components/accordion/accordion.spec.js +91 -50
  11. package/esm/components/accordion/accordion.spec.js.map +1 -1
  12. package/esm/components/alert.js +1 -1
  13. package/esm/components/alert.js.map +1 -1
  14. package/esm/components/app-bar-link.js +1 -1
  15. package/esm/components/app-bar-link.js.map +1 -1
  16. package/esm/components/app-bar.js +1 -1
  17. package/esm/components/app-bar.js.map +1 -1
  18. package/esm/components/avatar.js +1 -1
  19. package/esm/components/avatar.js.map +1 -1
  20. package/esm/components/badge.js +1 -1
  21. package/esm/components/badge.js.map +1 -1
  22. package/esm/components/breadcrumb.js +1 -1
  23. package/esm/components/breadcrumb.js.map +1 -1
  24. package/esm/components/breadcrumb.spec.js +3 -3
  25. package/esm/components/breadcrumb.spec.js.map +1 -1
  26. package/esm/components/button-group.js +4 -4
  27. package/esm/components/button-group.js.map +1 -1
  28. package/esm/components/button.js +1 -1
  29. package/esm/components/button.js.map +1 -1
  30. package/esm/components/button.spec.js +1 -1
  31. package/esm/components/button.spec.js.map +1 -1
  32. package/esm/components/cache-view.js +1 -1
  33. package/esm/components/cache-view.js.map +1 -1
  34. package/esm/components/cache-view.spec.js +2 -2
  35. package/esm/components/cache-view.spec.js.map +1 -1
  36. package/esm/components/card.js +5 -5
  37. package/esm/components/card.js.map +1 -1
  38. package/esm/components/carousel.js +2 -2
  39. package/esm/components/carousel.js.map +1 -1
  40. package/esm/components/chip.d.ts.map +1 -1
  41. package/esm/components/chip.js +5 -3
  42. package/esm/components/chip.js.map +1 -1
  43. package/esm/components/chip.spec.js +42 -0
  44. package/esm/components/chip.spec.js.map +1 -1
  45. package/esm/components/circular-progress.d.ts +2 -4
  46. package/esm/components/circular-progress.d.ts.map +1 -1
  47. package/esm/components/circular-progress.js +3 -6
  48. package/esm/components/circular-progress.js.map +1 -1
  49. package/esm/components/circular-progress.spec.js +19 -14
  50. package/esm/components/circular-progress.spec.js.map +1 -1
  51. package/esm/components/command-palette/command-palette-input.js +1 -1
  52. package/esm/components/command-palette/command-palette-input.js.map +1 -1
  53. package/esm/components/command-palette/command-palette-suggestion-list.js +1 -1
  54. package/esm/components/command-palette/command-palette-suggestion-list.js.map +1 -1
  55. package/esm/components/command-palette/command-palette-suggestion-list.spec.js +1 -1
  56. package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -1
  57. package/esm/components/command-palette/index.d.ts.map +1 -1
  58. package/esm/components/command-palette/index.js +15 -2
  59. package/esm/components/command-palette/index.js.map +1 -1
  60. package/esm/components/command-palette/index.spec.js +78 -33
  61. package/esm/components/command-palette/index.spec.js.map +1 -1
  62. package/esm/components/context-menu/context-menu-item.js +1 -1
  63. package/esm/components/context-menu/context-menu-item.js.map +1 -1
  64. package/esm/components/context-menu/context-menu.js +1 -1
  65. package/esm/components/context-menu/context-menu.js.map +1 -1
  66. package/esm/components/data-grid/body.js +1 -1
  67. package/esm/components/data-grid/body.js.map +1 -1
  68. package/esm/components/data-grid/data-grid-row.d.ts.map +1 -1
  69. package/esm/components/data-grid/data-grid-row.js +19 -3
  70. package/esm/components/data-grid/data-grid-row.js.map +1 -1
  71. package/esm/components/data-grid/data-grid.d.ts +12 -2
  72. package/esm/components/data-grid/data-grid.d.ts.map +1 -1
  73. package/esm/components/data-grid/data-grid.js +33 -13
  74. package/esm/components/data-grid/data-grid.js.map +1 -1
  75. package/esm/components/data-grid/data-grid.spec.js +170 -90
  76. package/esm/components/data-grid/data-grid.spec.js.map +1 -1
  77. package/esm/components/data-grid/filters/boolean-filter.d.ts +2 -2
  78. package/esm/components/data-grid/filters/boolean-filter.d.ts.map +1 -1
  79. package/esm/components/data-grid/filters/boolean-filter.js +4 -4
  80. package/esm/components/data-grid/filters/boolean-filter.js.map +1 -1
  81. package/esm/components/data-grid/filters/boolean-filter.spec.js +18 -17
  82. package/esm/components/data-grid/filters/boolean-filter.spec.js.map +1 -1
  83. package/esm/components/data-grid/filters/date-filter.d.ts +2 -2
  84. package/esm/components/data-grid/filters/date-filter.d.ts.map +1 -1
  85. package/esm/components/data-grid/filters/date-filter.js +6 -6
  86. package/esm/components/data-grid/filters/date-filter.js.map +1 -1
  87. package/esm/components/data-grid/filters/date-filter.spec.js +26 -21
  88. package/esm/components/data-grid/filters/date-filter.spec.js.map +1 -1
  89. package/esm/components/data-grid/filters/enum-filter.d.ts +2 -2
  90. package/esm/components/data-grid/filters/enum-filter.d.ts.map +1 -1
  91. package/esm/components/data-grid/filters/enum-filter.js +5 -5
  92. package/esm/components/data-grid/filters/enum-filter.js.map +1 -1
  93. package/esm/components/data-grid/filters/enum-filter.spec.js +21 -19
  94. package/esm/components/data-grid/filters/enum-filter.spec.js.map +1 -1
  95. package/esm/components/data-grid/filters/filter-dropdown.js +1 -1
  96. package/esm/components/data-grid/filters/filter-dropdown.js.map +1 -1
  97. package/esm/components/data-grid/filters/number-filter.d.ts +2 -2
  98. package/esm/components/data-grid/filters/number-filter.d.ts.map +1 -1
  99. package/esm/components/data-grid/filters/number-filter.js +5 -5
  100. package/esm/components/data-grid/filters/number-filter.js.map +1 -1
  101. package/esm/components/data-grid/filters/number-filter.spec.js +23 -21
  102. package/esm/components/data-grid/filters/number-filter.spec.js.map +1 -1
  103. package/esm/components/data-grid/filters/string-filter.d.ts +2 -2
  104. package/esm/components/data-grid/filters/string-filter.d.ts.map +1 -1
  105. package/esm/components/data-grid/filters/string-filter.js +5 -5
  106. package/esm/components/data-grid/filters/string-filter.js.map +1 -1
  107. package/esm/components/data-grid/filters/string-filter.spec.js +21 -19
  108. package/esm/components/data-grid/filters/string-filter.spec.js.map +1 -1
  109. package/esm/components/data-grid/footer.d.ts +2 -2
  110. package/esm/components/data-grid/footer.d.ts.map +1 -1
  111. package/esm/components/data-grid/footer.js +8 -13
  112. package/esm/components/data-grid/footer.js.map +1 -1
  113. package/esm/components/data-grid/footer.spec.js +38 -27
  114. package/esm/components/data-grid/footer.spec.js.map +1 -1
  115. package/esm/components/data-grid/header.d.ts +6 -6
  116. package/esm/components/data-grid/header.d.ts.map +1 -1
  117. package/esm/components/data-grid/header.js +16 -17
  118. package/esm/components/data-grid/header.js.map +1 -1
  119. package/esm/components/data-grid/header.spec.js +66 -60
  120. package/esm/components/data-grid/header.spec.js.map +1 -1
  121. package/esm/components/data-grid/selection-cell.d.ts.map +1 -1
  122. package/esm/components/data-grid/selection-cell.js +2 -2
  123. package/esm/components/data-grid/selection-cell.js.map +1 -1
  124. package/esm/components/dialog.d.ts +11 -0
  125. package/esm/components/dialog.d.ts.map +1 -1
  126. package/esm/components/dialog.js +3 -3
  127. package/esm/components/dialog.js.map +1 -1
  128. package/esm/components/dialog.spec.js +54 -2
  129. package/esm/components/dialog.spec.js.map +1 -1
  130. package/esm/components/divider.js +1 -1
  131. package/esm/components/divider.js.map +1 -1
  132. package/esm/components/drawer/drawer-toggle-button.js +1 -1
  133. package/esm/components/drawer/drawer-toggle-button.js.map +1 -1
  134. package/esm/components/drawer/index.js +1 -1
  135. package/esm/components/drawer/index.js.map +1 -1
  136. package/esm/components/dropdown.d.ts.map +1 -1
  137. package/esm/components/dropdown.js +2 -2
  138. package/esm/components/dropdown.js.map +1 -1
  139. package/esm/components/dropdown.spec.js +8 -0
  140. package/esm/components/dropdown.spec.js.map +1 -1
  141. package/esm/components/fab.js +1 -1
  142. package/esm/components/fab.js.map +1 -1
  143. package/esm/components/form.js +1 -1
  144. package/esm/components/form.js.map +1 -1
  145. package/esm/components/grid.js +1 -1
  146. package/esm/components/grid.js.map +1 -1
  147. package/esm/components/icons/icon.js +1 -1
  148. package/esm/components/icons/icon.js.map +1 -1
  149. package/esm/components/image.d.ts.map +1 -1
  150. package/esm/components/image.js +17 -8
  151. package/esm/components/image.js.map +1 -1
  152. package/esm/components/image.spec.js +60 -0
  153. package/esm/components/image.spec.js.map +1 -1
  154. package/esm/components/inputs/autocomplete.js +1 -1
  155. package/esm/components/inputs/autocomplete.js.map +1 -1
  156. package/esm/components/inputs/checkbox.d.ts.map +1 -1
  157. package/esm/components/inputs/checkbox.js +2 -1
  158. package/esm/components/inputs/checkbox.js.map +1 -1
  159. package/esm/components/inputs/checkbox.spec.js +1 -1
  160. package/esm/components/inputs/checkbox.spec.js.map +1 -1
  161. package/esm/components/inputs/input-number.js +1 -1
  162. package/esm/components/inputs/input-number.js.map +1 -1
  163. package/esm/components/inputs/input-number.spec.js +1 -1
  164. package/esm/components/inputs/input-number.spec.js.map +1 -1
  165. package/esm/components/inputs/input.js +1 -1
  166. package/esm/components/inputs/input.js.map +1 -1
  167. package/esm/components/inputs/input.spec.js +1 -1
  168. package/esm/components/inputs/input.spec.js.map +1 -1
  169. package/esm/components/inputs/radio-group.js +1 -1
  170. package/esm/components/inputs/radio-group.js.map +1 -1
  171. package/esm/components/inputs/radio-group.spec.js +1 -1
  172. package/esm/components/inputs/radio-group.spec.js.map +1 -1
  173. package/esm/components/inputs/radio.d.ts.map +1 -1
  174. package/esm/components/inputs/radio.js +2 -1
  175. package/esm/components/inputs/radio.js.map +1 -1
  176. package/esm/components/inputs/radio.spec.js +1 -1
  177. package/esm/components/inputs/radio.spec.js.map +1 -1
  178. package/esm/components/inputs/select.js +1 -1
  179. package/esm/components/inputs/select.js.map +1 -1
  180. package/esm/components/inputs/slider.d.ts.map +1 -1
  181. package/esm/components/inputs/slider.js +2 -1
  182. package/esm/components/inputs/slider.js.map +1 -1
  183. package/esm/components/inputs/switch.d.ts.map +1 -1
  184. package/esm/components/inputs/switch.js +2 -1
  185. package/esm/components/inputs/switch.js.map +1 -1
  186. package/esm/components/inputs/switch.spec.js +1 -1
  187. package/esm/components/inputs/switch.spec.js.map +1 -1
  188. package/esm/components/inputs/text-area.js +1 -1
  189. package/esm/components/inputs/text-area.js.map +1 -1
  190. package/esm/components/inputs/text-area.spec.js +1 -1
  191. package/esm/components/inputs/text-area.spec.js.map +1 -1
  192. package/esm/components/linear-progress.d.ts +2 -4
  193. package/esm/components/linear-progress.d.ts.map +1 -1
  194. package/esm/components/linear-progress.js +3 -6
  195. package/esm/components/linear-progress.js.map +1 -1
  196. package/esm/components/linear-progress.spec.js +21 -18
  197. package/esm/components/linear-progress.spec.js.map +1 -1
  198. package/esm/components/list/list-item.d.ts.map +1 -1
  199. package/esm/components/list/list-item.js +22 -6
  200. package/esm/components/list/list-item.js.map +1 -1
  201. package/esm/components/list/list.d.ts +7 -0
  202. package/esm/components/list/list.d.ts.map +1 -1
  203. package/esm/components/list/list.js +29 -9
  204. package/esm/components/list/list.js.map +1 -1
  205. package/esm/components/list/list.spec.js +117 -23
  206. package/esm/components/list/list.spec.js.map +1 -1
  207. package/esm/components/loader.js +1 -1
  208. package/esm/components/loader.js.map +1 -1
  209. package/esm/components/loader.spec.js +1 -1
  210. package/esm/components/loader.spec.js.map +1 -1
  211. package/esm/components/markdown/markdown-display.d.ts.map +1 -1
  212. package/esm/components/markdown/markdown-display.js +12 -2
  213. package/esm/components/markdown/markdown-display.js.map +1 -1
  214. package/esm/components/markdown/markdown-display.spec.js +98 -1
  215. package/esm/components/markdown/markdown-display.spec.js.map +1 -1
  216. package/esm/components/markdown/markdown-editor.js +1 -1
  217. package/esm/components/markdown/markdown-editor.js.map +1 -1
  218. package/esm/components/markdown/markdown-editor.spec.js +88 -1
  219. package/esm/components/markdown/markdown-editor.spec.js.map +1 -1
  220. package/esm/components/markdown/markdown-input.js +1 -1
  221. package/esm/components/markdown/markdown-input.js.map +1 -1
  222. package/esm/components/markdown/markdown-input.spec.js +1 -1
  223. package/esm/components/markdown/markdown-input.spec.js.map +1 -1
  224. package/esm/components/menu/menu.js +2 -2
  225. package/esm/components/menu/menu.js.map +1 -1
  226. package/esm/components/modal.d.ts +10 -0
  227. package/esm/components/modal.d.ts.map +1 -1
  228. package/esm/components/modal.js +25 -5
  229. package/esm/components/modal.js.map +1 -1
  230. package/esm/components/modal.spec.js +89 -4
  231. package/esm/components/modal.spec.js.map +1 -1
  232. package/esm/components/noty-list.js +2 -2
  233. package/esm/components/noty-list.js.map +1 -1
  234. package/esm/components/page-container/index.js +1 -1
  235. package/esm/components/page-container/index.js.map +1 -1
  236. package/esm/components/page-container/page-header.js +1 -1
  237. package/esm/components/page-container/page-header.js.map +1 -1
  238. package/esm/components/page-layout/index.js +2 -2
  239. package/esm/components/page-layout/index.js.map +1 -1
  240. package/esm/components/page-layout/index.spec.js +14 -0
  241. package/esm/components/page-layout/index.spec.js.map +1 -1
  242. package/esm/components/pagination.js +1 -1
  243. package/esm/components/pagination.js.map +1 -1
  244. package/esm/components/paper.js +1 -1
  245. package/esm/components/paper.js.map +1 -1
  246. package/esm/components/rating.d.ts.map +1 -1
  247. package/esm/components/rating.js +29 -22
  248. package/esm/components/rating.js.map +1 -1
  249. package/esm/components/rating.spec.js +152 -5
  250. package/esm/components/rating.spec.js.map +1 -1
  251. package/esm/components/result.js +1 -1
  252. package/esm/components/result.js.map +1 -1
  253. package/esm/components/skeleton.js +1 -1
  254. package/esm/components/skeleton.js.map +1 -1
  255. package/esm/components/suggest/index.d.ts.map +1 -1
  256. package/esm/components/suggest/index.js +15 -2
  257. package/esm/components/suggest/index.js.map +1 -1
  258. package/esm/components/suggest/index.spec.js +99 -44
  259. package/esm/components/suggest/index.spec.js.map +1 -1
  260. package/esm/components/suggest/suggest-input.js +1 -1
  261. package/esm/components/suggest/suggest-input.js.map +1 -1
  262. package/esm/components/suggest/suggest-input.spec.js +1 -1
  263. package/esm/components/suggest/suggest-input.spec.js.map +1 -1
  264. package/esm/components/suggest/suggestion-list.js +1 -1
  265. package/esm/components/suggest/suggestion-list.js.map +1 -1
  266. package/esm/components/suggest/suggestion-list.spec.js +1 -1
  267. package/esm/components/suggest/suggestion-list.spec.js.map +1 -1
  268. package/esm/components/tabs.d.ts.map +1 -1
  269. package/esm/components/tabs.js +6 -2
  270. package/esm/components/tabs.js.map +1 -1
  271. package/esm/components/timeline.js +2 -2
  272. package/esm/components/timeline.js.map +1 -1
  273. package/esm/components/tooltip.js +1 -1
  274. package/esm/components/tooltip.js.map +1 -1
  275. package/esm/components/tree/tree-item.d.ts.map +1 -1
  276. package/esm/components/tree/tree-item.js +19 -6
  277. package/esm/components/tree/tree-item.js.map +1 -1
  278. package/esm/components/tree/tree.d.ts +7 -0
  279. package/esm/components/tree/tree.d.ts.map +1 -1
  280. package/esm/components/tree/tree.js +13 -4
  281. package/esm/components/tree/tree.js.map +1 -1
  282. package/esm/components/tree/tree.spec.js +64 -2
  283. package/esm/components/tree/tree.spec.js.map +1 -1
  284. package/esm/components/typography.js +1 -1
  285. package/esm/components/typography.js.map +1 -1
  286. package/esm/components/wizard/index.js +1 -1
  287. package/esm/components/wizard/index.js.map +1 -1
  288. package/esm/components/wizard/index.spec.js +3 -3
  289. package/esm/components/wizard/index.spec.js.map +1 -1
  290. package/esm/services/collection-service.d.ts +9 -0
  291. package/esm/services/collection-service.d.ts.map +1 -1
  292. package/esm/services/collection-service.js +33 -11
  293. package/esm/services/collection-service.js.map +1 -1
  294. package/esm/services/collection-service.spec.js +33 -24
  295. package/esm/services/collection-service.spec.js.map +1 -1
  296. package/esm/services/css-variable-theme.d.ts +7 -0
  297. package/esm/services/css-variable-theme.d.ts.map +1 -1
  298. package/esm/services/css-variable-theme.js +23 -0
  299. package/esm/services/css-variable-theme.js.map +1 -1
  300. package/esm/services/css-variable-theme.spec.js +1 -0
  301. package/esm/services/css-variable-theme.spec.js.map +1 -1
  302. package/esm/services/list-service.d.ts +9 -0
  303. package/esm/services/list-service.d.ts.map +1 -1
  304. package/esm/services/list-service.js +13 -13
  305. package/esm/services/list-service.js.map +1 -1
  306. package/esm/services/list-service.spec.js +13 -33
  307. package/esm/services/list-service.spec.js.map +1 -1
  308. package/esm/services/theme-provider-service.d.ts +3 -0
  309. package/esm/services/theme-provider-service.d.ts.map +1 -1
  310. package/esm/services/theme-provider-service.js.map +1 -1
  311. package/esm/services/tree-service.d.ts.map +1 -1
  312. package/esm/services/tree-service.js +5 -9
  313. package/esm/services/tree-service.js.map +1 -1
  314. package/esm/services/tree-service.spec.js +12 -9
  315. package/esm/services/tree-service.spec.js.map +1 -1
  316. package/esm/themes/architect-theme.d.ts +1 -0
  317. package/esm/themes/architect-theme.d.ts.map +1 -1
  318. package/esm/themes/architect-theme.js +1 -0
  319. package/esm/themes/architect-theme.js.map +1 -1
  320. package/esm/themes/auditore-theme.d.ts +1 -0
  321. package/esm/themes/auditore-theme.d.ts.map +1 -1
  322. package/esm/themes/auditore-theme.js +1 -0
  323. package/esm/themes/auditore-theme.js.map +1 -1
  324. package/esm/themes/black-mesa-theme.d.ts +1 -0
  325. package/esm/themes/black-mesa-theme.d.ts.map +1 -1
  326. package/esm/themes/black-mesa-theme.js +1 -0
  327. package/esm/themes/black-mesa-theme.js.map +1 -1
  328. package/esm/themes/chieftain-theme.d.ts +1 -0
  329. package/esm/themes/chieftain-theme.d.ts.map +1 -1
  330. package/esm/themes/chieftain-theme.js +1 -0
  331. package/esm/themes/chieftain-theme.js.map +1 -1
  332. package/esm/themes/default-dark-theme.d.ts +1 -0
  333. package/esm/themes/default-dark-theme.d.ts.map +1 -1
  334. package/esm/themes/default-dark-theme.js +1 -0
  335. package/esm/themes/default-dark-theme.js.map +1 -1
  336. package/esm/themes/default-light-theme.d.ts +1 -0
  337. package/esm/themes/default-light-theme.d.ts.map +1 -1
  338. package/esm/themes/default-light-theme.js +1 -0
  339. package/esm/themes/default-light-theme.js.map +1 -1
  340. package/esm/themes/dragonborn-theme.d.ts +1 -0
  341. package/esm/themes/dragonborn-theme.d.ts.map +1 -1
  342. package/esm/themes/dragonborn-theme.js +1 -0
  343. package/esm/themes/dragonborn-theme.js.map +1 -1
  344. package/esm/themes/hawkins-theme.d.ts +1 -0
  345. package/esm/themes/hawkins-theme.d.ts.map +1 -1
  346. package/esm/themes/hawkins-theme.js +1 -0
  347. package/esm/themes/hawkins-theme.js.map +1 -1
  348. package/esm/themes/jedi-theme.d.ts +1 -0
  349. package/esm/themes/jedi-theme.d.ts.map +1 -1
  350. package/esm/themes/jedi-theme.js +1 -0
  351. package/esm/themes/jedi-theme.js.map +1 -1
  352. package/esm/themes/neon-runner-theme.d.ts +1 -0
  353. package/esm/themes/neon-runner-theme.d.ts.map +1 -1
  354. package/esm/themes/neon-runner-theme.js +1 -0
  355. package/esm/themes/neon-runner-theme.js.map +1 -1
  356. package/esm/themes/paladin-theme.d.ts +1 -0
  357. package/esm/themes/paladin-theme.d.ts.map +1 -1
  358. package/esm/themes/paladin-theme.js +1 -0
  359. package/esm/themes/paladin-theme.js.map +1 -1
  360. package/esm/themes/plumber-theme.d.ts +1 -0
  361. package/esm/themes/plumber-theme.d.ts.map +1 -1
  362. package/esm/themes/plumber-theme.js +1 -0
  363. package/esm/themes/plumber-theme.js.map +1 -1
  364. package/esm/themes/replicant-theme.d.ts +1 -0
  365. package/esm/themes/replicant-theme.d.ts.map +1 -1
  366. package/esm/themes/replicant-theme.js +1 -0
  367. package/esm/themes/replicant-theme.js.map +1 -1
  368. package/esm/themes/sandworm-theme.d.ts +1 -0
  369. package/esm/themes/sandworm-theme.d.ts.map +1 -1
  370. package/esm/themes/sandworm-theme.js +1 -0
  371. package/esm/themes/sandworm-theme.js.map +1 -1
  372. package/esm/themes/shadow-broker-theme.d.ts +1 -0
  373. package/esm/themes/shadow-broker-theme.d.ts.map +1 -1
  374. package/esm/themes/shadow-broker-theme.js +1 -0
  375. package/esm/themes/shadow-broker-theme.js.map +1 -1
  376. package/esm/themes/sith-theme.d.ts +1 -0
  377. package/esm/themes/sith-theme.d.ts.map +1 -1
  378. package/esm/themes/sith-theme.js +1 -0
  379. package/esm/themes/sith-theme.js.map +1 -1
  380. package/esm/themes/vault-dweller-theme.d.ts +1 -0
  381. package/esm/themes/vault-dweller-theme.d.ts.map +1 -1
  382. package/esm/themes/vault-dweller-theme.js +1 -0
  383. package/esm/themes/vault-dweller-theme.js.map +1 -1
  384. package/esm/themes/wild-hunt-theme.d.ts +1 -0
  385. package/esm/themes/wild-hunt-theme.d.ts.map +1 -1
  386. package/esm/themes/wild-hunt-theme.js +1 -0
  387. package/esm/themes/wild-hunt-theme.js.map +1 -1
  388. package/esm/themes/xenomorph-theme.d.ts +1 -0
  389. package/esm/themes/xenomorph-theme.d.ts.map +1 -1
  390. package/esm/themes/xenomorph-theme.js +1 -0
  391. package/esm/themes/xenomorph-theme.js.map +1 -1
  392. package/package.json +3 -3
  393. package/src/components/accordion/accordion-item.tsx +10 -15
  394. package/src/components/accordion/accordion.spec.tsx +134 -79
  395. package/src/components/accordion/accordion.tsx +14 -2
  396. package/src/components/alert.tsx +1 -1
  397. package/src/components/app-bar-link.tsx +1 -1
  398. package/src/components/app-bar.tsx +1 -1
  399. package/src/components/avatar.tsx +1 -1
  400. package/src/components/badge.tsx +1 -1
  401. package/src/components/breadcrumb.spec.tsx +3 -3
  402. package/src/components/breadcrumb.tsx +1 -1
  403. package/src/components/button-group.tsx +4 -4
  404. package/src/components/button.spec.tsx +1 -1
  405. package/src/components/button.tsx +1 -1
  406. package/src/components/cache-view.spec.tsx +2 -2
  407. package/src/components/cache-view.tsx +3 -3
  408. package/src/components/card.tsx +5 -5
  409. package/src/components/carousel.tsx +2 -2
  410. package/src/components/chip.spec.tsx +64 -0
  411. package/src/components/chip.tsx +5 -2
  412. package/src/components/circular-progress.spec.tsx +20 -14
  413. package/src/components/circular-progress.tsx +5 -11
  414. package/src/components/command-palette/command-palette-input.tsx +1 -1
  415. package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +1 -1
  416. package/src/components/command-palette/command-palette-suggestion-list.tsx +1 -1
  417. package/src/components/command-palette/index.spec.tsx +95 -33
  418. package/src/components/command-palette/index.tsx +16 -4
  419. package/src/components/context-menu/context-menu-item.tsx +1 -1
  420. package/src/components/context-menu/context-menu.tsx +1 -1
  421. package/src/components/data-grid/body.tsx +1 -1
  422. package/src/components/data-grid/data-grid-row.tsx +21 -3
  423. package/src/components/data-grid/data-grid.spec.tsx +246 -92
  424. package/src/components/data-grid/data-grid.tsx +52 -21
  425. package/src/components/data-grid/filters/boolean-filter.spec.tsx +29 -18
  426. package/src/components/data-grid/filters/boolean-filter.tsx +6 -6
  427. package/src/components/data-grid/filters/date-filter.spec.tsx +35 -22
  428. package/src/components/data-grid/filters/date-filter.tsx +8 -8
  429. package/src/components/data-grid/filters/enum-filter.spec.tsx +35 -20
  430. package/src/components/data-grid/filters/enum-filter.tsx +7 -7
  431. package/src/components/data-grid/filters/filter-dropdown.tsx +1 -1
  432. package/src/components/data-grid/filters/number-filter.spec.tsx +32 -22
  433. package/src/components/data-grid/filters/number-filter.tsx +7 -7
  434. package/src/components/data-grid/filters/string-filter.spec.tsx +32 -20
  435. package/src/components/data-grid/filters/string-filter.tsx +7 -7
  436. package/src/components/data-grid/footer.spec.tsx +79 -31
  437. package/src/components/data-grid/footer.tsx +10 -15
  438. package/src/components/data-grid/header.spec.tsx +152 -68
  439. package/src/components/data-grid/header.tsx +64 -27
  440. package/src/components/data-grid/selection-cell.tsx +2 -1
  441. package/src/components/dialog.spec.tsx +77 -2
  442. package/src/components/dialog.tsx +15 -2
  443. package/src/components/divider.tsx +1 -1
  444. package/src/components/drawer/drawer-toggle-button.tsx +1 -1
  445. package/src/components/drawer/index.tsx +1 -1
  446. package/src/components/dropdown.spec.tsx +9 -0
  447. package/src/components/dropdown.tsx +2 -1
  448. package/src/components/fab.tsx +1 -1
  449. package/src/components/form.tsx +1 -1
  450. package/src/components/grid.tsx +1 -1
  451. package/src/components/icons/icon.tsx +1 -1
  452. package/src/components/image.spec.tsx +82 -0
  453. package/src/components/image.tsx +18 -9
  454. package/src/components/inputs/autocomplete.tsx +1 -1
  455. package/src/components/inputs/checkbox.spec.tsx +1 -1
  456. package/src/components/inputs/checkbox.tsx +2 -1
  457. package/src/components/inputs/input-number.spec.tsx +1 -1
  458. package/src/components/inputs/input-number.tsx +1 -1
  459. package/src/components/inputs/input.spec.tsx +1 -1
  460. package/src/components/inputs/input.tsx +1 -1
  461. package/src/components/inputs/radio-group.spec.tsx +1 -1
  462. package/src/components/inputs/radio-group.tsx +1 -1
  463. package/src/components/inputs/radio.spec.tsx +1 -1
  464. package/src/components/inputs/radio.tsx +2 -1
  465. package/src/components/inputs/select.tsx +1 -1
  466. package/src/components/inputs/slider.tsx +2 -1
  467. package/src/components/inputs/switch.spec.tsx +1 -1
  468. package/src/components/inputs/switch.tsx +2 -1
  469. package/src/components/inputs/text-area.spec.tsx +1 -1
  470. package/src/components/inputs/text-area.tsx +1 -1
  471. package/src/components/linear-progress.spec.tsx +22 -18
  472. package/src/components/linear-progress.tsx +5 -11
  473. package/src/components/list/list-item.tsx +23 -5
  474. package/src/components/list/list.spec.tsx +165 -32
  475. package/src/components/list/list.tsx +38 -11
  476. package/src/components/loader.spec.tsx +1 -1
  477. package/src/components/loader.tsx +1 -1
  478. package/src/components/markdown/markdown-display.spec.tsx +133 -1
  479. package/src/components/markdown/markdown-display.tsx +13 -2
  480. package/src/components/markdown/markdown-editor.spec.tsx +124 -1
  481. package/src/components/markdown/markdown-editor.tsx +1 -1
  482. package/src/components/markdown/markdown-input.spec.tsx +1 -1
  483. package/src/components/markdown/markdown-input.tsx +1 -1
  484. package/src/components/menu/menu.tsx +2 -2
  485. package/src/components/modal.spec.tsx +127 -4
  486. package/src/components/modal.tsx +42 -4
  487. package/src/components/noty-list.tsx +2 -2
  488. package/src/components/page-container/index.tsx +1 -1
  489. package/src/components/page-container/page-header.tsx +1 -1
  490. package/src/components/page-layout/index.spec.tsx +20 -0
  491. package/src/components/page-layout/index.tsx +2 -2
  492. package/src/components/pagination.tsx +1 -1
  493. package/src/components/paper.tsx +1 -1
  494. package/src/components/rating.spec.tsx +200 -5
  495. package/src/components/rating.tsx +29 -23
  496. package/src/components/result.tsx +1 -1
  497. package/src/components/skeleton.tsx +1 -1
  498. package/src/components/suggest/index.spec.tsx +148 -44
  499. package/src/components/suggest/index.tsx +16 -3
  500. package/src/components/suggest/suggest-input.spec.tsx +1 -1
  501. package/src/components/suggest/suggest-input.tsx +1 -1
  502. package/src/components/suggest/suggestion-list.spec.tsx +1 -1
  503. package/src/components/suggest/suggestion-list.tsx +1 -1
  504. package/src/components/tabs.tsx +6 -2
  505. package/src/components/timeline.tsx +2 -2
  506. package/src/components/tooltip.tsx +1 -1
  507. package/src/components/tree/tree-item.tsx +20 -5
  508. package/src/components/tree/tree.spec.tsx +101 -2
  509. package/src/components/tree/tree.tsx +22 -4
  510. package/src/components/typography.tsx +1 -1
  511. package/src/components/wizard/index.spec.tsx +3 -3
  512. package/src/components/wizard/index.tsx +1 -1
  513. package/src/services/collection-service.spec.ts +33 -24
  514. package/src/services/collection-service.ts +35 -13
  515. package/src/services/css-variable-theme.spec.ts +1 -0
  516. package/src/services/css-variable-theme.ts +25 -0
  517. package/src/services/list-service.spec.ts +13 -42
  518. package/src/services/list-service.ts +15 -13
  519. package/src/services/theme-provider-service.ts +2 -0
  520. package/src/services/tree-service.spec.ts +12 -9
  521. package/src/services/tree-service.ts +5 -8
  522. package/src/themes/architect-theme.ts +1 -0
  523. package/src/themes/auditore-theme.ts +1 -0
  524. package/src/themes/black-mesa-theme.ts +1 -0
  525. package/src/themes/chieftain-theme.ts +1 -0
  526. package/src/themes/default-dark-theme.ts +1 -0
  527. package/src/themes/default-light-theme.ts +1 -0
  528. package/src/themes/dragonborn-theme.ts +1 -0
  529. package/src/themes/hawkins-theme.ts +1 -0
  530. package/src/themes/jedi-theme.ts +1 -0
  531. package/src/themes/neon-runner-theme.ts +1 -0
  532. package/src/themes/paladin-theme.ts +1 -0
  533. package/src/themes/plumber-theme.ts +1 -0
  534. package/src/themes/replicant-theme.ts +1 -0
  535. package/src/themes/sandworm-theme.ts +1 -0
  536. package/src/themes/shadow-broker-theme.ts +1 -0
  537. package/src/themes/sith-theme.ts +1 -0
  538. package/src/themes/vault-dweller-theme.ts +1 -0
  539. package/src/themes/wild-hunt-theme.ts +1 -0
  540. package/src/themes/xenomorph-theme.ts +1 -0
@@ -76,7 +76,7 @@ describe('Button', () => {
76
76
  const root = document.getElementById('root')!
77
77
 
78
78
  const TestComponent = Shade<{ variant?: 'contained' | 'outlined' }>({
79
- shadowDomName: 'button-test-variant-wrapper',
79
+ customElementName: 'button-test-variant-wrapper',
80
80
  render: ({ props }) => <Button variant={props.variant}>Test</Button>,
81
81
  })
82
82
 
@@ -65,7 +65,7 @@ const iconWrapperStyle: Partial<CSSStyleDeclaration> = {
65
65
  }
66
66
 
67
67
  export const Button = Shade<ButtonProps>({
68
- shadowDomName: 'shade-button',
68
+ customElementName: 'shade-button',
69
69
  elementBase: HTMLButtonElement,
70
70
  elementBaseName: 'button',
71
71
  css: {
@@ -7,12 +7,12 @@ import { describe, expect, it, vi } from 'vitest'
7
7
  import { CacheView } from './cache-view.js'
8
8
 
9
9
  const TestContent = Shade<{ data: CacheWithValue<string> }>({
10
- shadowDomName: 'test-cache-content',
10
+ customElementName: 'test-cache-content',
11
11
  render: ({ props }) => <span className="content-value">{props.data.value}</span>,
12
12
  })
13
13
 
14
14
  const TestContentWithLabel = Shade<{ data: CacheWithValue<string>; label: string }>({
15
- shadowDomName: 'test-cache-content-with-label',
15
+ customElementName: 'test-cache-content-with-label',
16
16
  render: ({ props }) => (
17
17
  <span className="content-value">
18
18
  {props.label}: {props.data.value}
@@ -58,7 +58,7 @@ const getDefaultErrorUi = (error: unknown, retry: () => void): JSX.Element =>
58
58
  * @example
59
59
  * ```tsx
60
60
  * const MyContent = Shade<{ data: CacheWithValue<User> }>({
61
- * shadowDomName: 'my-content',
61
+ * customElementName: 'my-content',
62
62
  * render: ({ props }) => <div>{props.data.value.name}</div>,
63
63
  * })
64
64
  *
@@ -66,7 +66,7 @@ const getDefaultErrorUi = (error: unknown, retry: () => void): JSX.Element =>
66
66
  *
67
67
  * // With custom content props
68
68
  * const MyContentWithLabel = Shade<{ data: CacheWithValue<User>; label: string }>({
69
- * shadowDomName: 'my-content-with-label',
69
+ * customElementName: 'my-content-with-label',
70
70
  * render: ({ props }) => <div>{props.label}: {props.data.value.name}</div>,
71
71
  * })
72
72
  *
@@ -85,7 +85,7 @@ type InternalCacheViewProps = {
85
85
  }
86
86
 
87
87
  export const CacheView = Shade<InternalCacheViewProps>({
88
- shadowDomName: 'shade-cache-view',
88
+ customElementName: 'shade-cache-view',
89
89
  css: {
90
90
  fontFamily: cssVariableTheme.typography.fontFamily,
91
91
  },
@@ -21,7 +21,7 @@ export type CardProps = PartialElement<HTMLElement> & {
21
21
  * Compose with CardHeader, CardContent, CardMedia, and CardActions for structured layouts.
22
22
  */
23
23
  export const Card = Shade<CardProps>({
24
- shadowDomName: 'shade-card',
24
+ customElementName: 'shade-card',
25
25
  css: {
26
26
  display: 'flex',
27
27
  fontFamily: cssVariableTheme.typography.fontFamily,
@@ -102,7 +102,7 @@ export type CardHeaderProps = PartialElement<HTMLElement> & {
102
102
  * Displays a title, optional subheader, avatar, and action area at the top of a Card.
103
103
  */
104
104
  export const CardHeader = Shade<CardHeaderProps>({
105
- shadowDomName: 'shade-card-header',
105
+ customElementName: 'shade-card-header',
106
106
  css: {
107
107
  display: 'flex',
108
108
  alignItems: 'center',
@@ -174,7 +174,7 @@ export type CardContentProps = PartialElement<HTMLElement>
174
174
  * Provides padded content area within a Card.
175
175
  */
176
176
  export const CardContent = Shade<CardContentProps>({
177
- shadowDomName: 'shade-card-content',
177
+ customElementName: 'shade-card-content',
178
178
  css: {
179
179
  display: 'block',
180
180
  padding: `0 ${cssVariableTheme.spacing.md} ${cssVariableTheme.spacing.md}`,
@@ -208,7 +208,7 @@ export type CardMediaProps = PartialElement<HTMLElement> & {
208
208
  * Displays an image or media element within a Card.
209
209
  */
210
210
  export const CardMedia = Shade<CardMediaProps>({
211
- shadowDomName: 'shade-card-media',
211
+ customElementName: 'shade-card-media',
212
212
  css: {
213
213
  display: 'block',
214
214
  overflow: 'hidden',
@@ -242,7 +242,7 @@ export type CardActionsProps = PartialElement<HTMLElement> & {
242
242
  * Provides a row of actions (buttons, links) at the bottom of a Card.
243
243
  */
244
244
  export const CardActions = Shade<CardActionsProps>({
245
- shadowDomName: 'shade-card-actions',
245
+ customElementName: 'shade-card-actions',
246
246
  css: {
247
247
  display: 'flex',
248
248
  alignItems: 'center',
@@ -34,7 +34,7 @@ const TRANSITION_MS = 400
34
34
  * keyboard navigation, and swipe gestures.
35
35
  */
36
36
  export const Carousel = Shade<CarouselProps>({
37
- shadowDomName: 'shade-carousel',
37
+ customElementName: 'shade-carousel',
38
38
  css: {
39
39
  display: 'block',
40
40
  position: 'relative',
@@ -200,7 +200,7 @@ export const Carousel = Shade<CarouselProps>({
200
200
  'data-vertical': vertical ? '' : undefined,
201
201
  role: 'region',
202
202
  'aria-roledescription': 'carousel',
203
- tabindex: '0',
203
+ tabIndex: 0,
204
204
  ...(style ? { style: style as Record<string, string> } : {}),
205
205
  })
206
206
 
@@ -140,6 +140,70 @@ describe('Chip', () => {
140
140
  expect(chip.hasAttribute('data-clickable')).toBe(true)
141
141
  })
142
142
 
143
+ it('should be focusable when clickable', async () => {
144
+ const el = (
145
+ <div>
146
+ <Chip clickable>Clickable</Chip>
147
+ </div>
148
+ )
149
+ const chip = el.firstElementChild as JSX.Element
150
+ chip.updateComponent()
151
+ await flushUpdates()
152
+ expect(chip.getAttribute('tabindex')).toBe('0')
153
+ })
154
+
155
+ it('should be focusable when onclick handler is provided', async () => {
156
+ const el = (
157
+ <div>
158
+ <Chip onclick={() => {}}>Click Handler</Chip>
159
+ </div>
160
+ )
161
+ const chip = el.firstElementChild as JSX.Element
162
+ chip.updateComponent()
163
+ await flushUpdates()
164
+ expect(chip.getAttribute('tabindex')).toBe('0')
165
+ })
166
+
167
+ it('should not be focusable when clickable but disabled', async () => {
168
+ const el = (
169
+ <div>
170
+ <Chip clickable disabled>
171
+ Disabled Clickable
172
+ </Chip>
173
+ </div>
174
+ )
175
+ const chip = el.firstElementChild as JSX.Element
176
+ chip.updateComponent()
177
+ await flushUpdates()
178
+ expect(chip.hasAttribute('tabindex')).toBe(false)
179
+ })
180
+
181
+ it('should not be focusable when not clickable', async () => {
182
+ const el = (
183
+ <div>
184
+ <Chip>Not Clickable</Chip>
185
+ </div>
186
+ )
187
+ const chip = el.firstElementChild as JSX.Element
188
+ chip.updateComponent()
189
+ await flushUpdates()
190
+ expect(chip.hasAttribute('tabindex')).toBe(false)
191
+ })
192
+
193
+ it('should have a focusable delete button', async () => {
194
+ const onDelete = vi.fn()
195
+ const el = (
196
+ <div>
197
+ <Chip onDelete={onDelete}>Deletable</Chip>
198
+ </div>
199
+ )
200
+ const chip = el.firstElementChild as JSX.Element
201
+ chip.updateComponent()
202
+ await flushUpdates()
203
+ const deleteBtn = chip.querySelector('.chip-delete') as HTMLElement
204
+ expect(deleteBtn.getAttribute('tabindex')).toBe('0')
205
+ })
206
+
143
207
  it('should set CSS custom properties for palette color', async () => {
144
208
  const el = (
145
209
  <div>
@@ -25,7 +25,7 @@ const defaultColors = {
25
25
  }
26
26
 
27
27
  export const Chip = Shade<ChipProps>({
28
- shadowDomName: 'shade-chip',
28
+ customElementName: 'shade-chip',
29
29
  css: {
30
30
  display: 'inline-flex',
31
31
  alignItems: 'center',
@@ -152,11 +152,13 @@ export const Chip = Shade<ChipProps>({
152
152
  const { variant, color, size, disabled, clickable, onDelete, style, ...rest } = props
153
153
 
154
154
  const colors = color ? paletteFullColors[color] : defaultColors
155
+ const isClickable = clickable || rest.onclick
155
156
  useHostProps({
156
157
  'data-variant': variant || undefined,
157
158
  'data-size': size === 'small' ? 'small' : undefined,
158
159
  'data-disabled': disabled ? '' : undefined,
159
- 'data-clickable': clickable || rest.onclick ? '' : undefined,
160
+ 'data-clickable': isClickable ? '' : undefined,
161
+ tabIndex: isClickable && !disabled ? 0 : undefined,
160
162
  style: {
161
163
  '--chip-color-main': colors.main,
162
164
  '--chip-color-main-contrast': colors.mainContrast,
@@ -174,6 +176,7 @@ export const Chip = Shade<ChipProps>({
174
176
  <span
175
177
  className="chip-delete"
176
178
  role="button"
179
+ tabIndex={0}
177
180
  onclick={(ev: MouseEvent) => {
178
181
  ev.stopPropagation()
179
182
  onDelete(ev)
@@ -1,10 +1,18 @@
1
1
  import { Injector } from '@furystack/inject'
2
- import { createComponent, initializeShadeRoot } from '@furystack/shades'
2
+ import { createComponent, initializeShadeRoot, Shade } from '@furystack/shades'
3
3
  import { ObservableValue, sleepAsync, usingAsync } from '@furystack/utils'
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
5
5
  import { ThemeProviderService } from '../services/theme-provider-service.js'
6
6
  import { CircularProgress } from './circular-progress.js'
7
7
 
8
+ const CircularWrapper = Shade<{ obs: ObservableValue<number> }>({
9
+ customElementName: 'test-circular-progress-wrapper',
10
+ render: ({ props, useObservable }) => {
11
+ const [value] = useObservable('value', props.obs)
12
+ return <CircularProgress variant="determinate" value={value} />
13
+ },
14
+ })
15
+
8
16
  describe('CircularProgress', () => {
9
17
  let originalAnimate: typeof Element.prototype.animate
10
18
 
@@ -35,7 +43,7 @@ describe('CircularProgress', () => {
35
43
  vi.restoreAllMocks()
36
44
  })
37
45
 
38
- it('should render with shadow DOM', async () => {
46
+ it('should render as custom element', async () => {
39
47
  await usingAsync(new Injector(), async (injector) => {
40
48
  const rootElement = document.getElementById('root') as HTMLDivElement
41
49
 
@@ -147,12 +155,11 @@ describe('CircularProgress', () => {
147
155
  it('should set aria-valuenow for determinate variant', async () => {
148
156
  await usingAsync(new Injector(), async (injector) => {
149
157
  const rootElement = document.getElementById('root') as HTMLDivElement
150
- const value = new ObservableValue(50)
151
158
 
152
159
  initializeShadeRoot({
153
160
  injector,
154
161
  rootElement,
155
- jsxElement: <CircularProgress variant="determinate" value={value} />,
162
+ jsxElement: <CircularProgress variant="determinate" value={50} />,
156
163
  })
157
164
 
158
165
  await sleepAsync(50)
@@ -167,12 +174,11 @@ describe('CircularProgress', () => {
167
174
  it('should clamp value to 0-100 range', async () => {
168
175
  await usingAsync(new Injector(), async (injector) => {
169
176
  const rootElement = document.getElementById('root') as HTMLDivElement
170
- const value = new ObservableValue(150)
171
177
 
172
178
  initializeShadeRoot({
173
179
  injector,
174
180
  rootElement,
175
- jsxElement: <CircularProgress variant="determinate" value={value} />,
181
+ jsxElement: <CircularProgress variant="determinate" value={150} />,
176
182
  })
177
183
 
178
184
  await sleepAsync(50)
@@ -182,15 +188,15 @@ describe('CircularProgress', () => {
182
188
  })
183
189
  })
184
190
 
185
- it('should update stroke-dashoffset when observable value changes', async () => {
191
+ it('should update stroke-dashoffset when value prop changes', async () => {
186
192
  await usingAsync(new Injector(), async (injector) => {
187
193
  const rootElement = document.getElementById('root') as HTMLDivElement
188
- const value = new ObservableValue(0)
194
+ const obs = new ObservableValue(0)
189
195
 
190
196
  initializeShadeRoot({
191
197
  injector,
192
198
  rootElement,
193
- jsxElement: <CircularProgress variant="determinate" value={value} />,
199
+ jsxElement: <CircularWrapper obs={obs} />,
194
200
  })
195
201
 
196
202
  await sleepAsync(50)
@@ -198,7 +204,7 @@ describe('CircularProgress', () => {
198
204
  const circle = document.querySelector('shade-circular-progress .progress-circle') as SVGCircleElement
199
205
  const initialOffset = circle.style.strokeDashoffset
200
206
 
201
- value.setValue(75)
207
+ obs.setValue(75)
202
208
  await sleepAsync(50)
203
209
 
204
210
  const updatedOffset = circle.style.strokeDashoffset
@@ -206,15 +212,15 @@ describe('CircularProgress', () => {
206
212
  })
207
213
  })
208
214
 
209
- it('should update aria-valuenow when observable value changes', async () => {
215
+ it('should update aria-valuenow when value prop changes', async () => {
210
216
  await usingAsync(new Injector(), async (injector) => {
211
217
  const rootElement = document.getElementById('root') as HTMLDivElement
212
- const value = new ObservableValue(20)
218
+ const obs = new ObservableValue(20)
213
219
 
214
220
  initializeShadeRoot({
215
221
  injector,
216
222
  rootElement,
217
- jsxElement: <CircularProgress variant="determinate" value={value} />,
223
+ jsxElement: <CircularWrapper obs={obs} />,
218
224
  })
219
225
 
220
226
  await sleepAsync(50)
@@ -222,7 +228,7 @@ describe('CircularProgress', () => {
222
228
  const el = document.querySelector('shade-circular-progress') as HTMLElement
223
229
  expect(el.getAttribute('aria-valuenow')).toBe('20')
224
230
 
225
- value.setValue(85)
231
+ obs.setValue(85)
226
232
  await sleepAsync(50)
227
233
 
228
234
  expect(el.getAttribute('aria-valuenow')).toBe('85')
@@ -1,15 +1,13 @@
1
1
  import { Shade, createComponent } from '@furystack/shades'
2
- import type { ObservableValue } from '@furystack/utils'
3
2
  import { cssVariableTheme } from '../services/css-variable-theme.js'
4
3
  import type { Palette } from '../services/theme-provider-service.js'
5
4
  import { ThemeProviderService } from '../services/theme-provider-service.js'
6
5
 
7
6
  export type CircularProgressProps = {
8
7
  /**
9
- * An observable progress value (0–100). Used when variant is 'determinate'.
10
- * The component subscribes internally and updates the arc without re-rendering.
8
+ * A progress value (0–100). Used when variant is 'determinate'.
11
9
  */
12
- value?: ObservableValue<number>
10
+ value?: number
13
11
  /**
14
12
  * The variant of the progress indicator.
15
13
  * - 'determinate': shows a fixed arc based on `value`
@@ -41,7 +39,7 @@ const DEFAULT_THICKNESS = 3.6
41
39
  const clampValue = (v: number) => Math.max(0, Math.min(100, v))
42
40
 
43
41
  export const CircularProgress = Shade<CircularProgressProps>({
44
- shadowDomName: 'shade-circular-progress',
42
+ customElementName: 'shade-circular-progress',
45
43
  css: {
46
44
  display: 'inline-flex',
47
45
  fontFamily: cssVariableTheme.typography.fontFamily,
@@ -65,10 +63,10 @@ export const CircularProgress = Shade<CircularProgressProps>({
65
63
  transition: `stroke-dashoffset ${cssVariableTheme.transitions.duration.normal} ${cssVariableTheme.transitions.easing.easeInOut}`,
66
64
  },
67
65
  },
68
- render: ({ props, injector, useObservable, useHostProps }) => {
66
+ render: ({ props, injector, useHostProps }) => {
69
67
  const themeProvider = injector.getInstance(ThemeProviderService)
70
68
  const variant = props.variant || 'indeterminate'
71
- const value = clampValue(props.value?.getValue() ?? 0)
69
+ const value = clampValue(props.value ?? 0)
72
70
  const size = props.size ?? DEFAULT_SIZE
73
71
  const thickness = props.thickness ?? DEFAULT_THICKNESS
74
72
  const indeterminate = variant === 'indeterminate'
@@ -76,10 +74,6 @@ export const CircularProgress = Shade<CircularProgressProps>({
76
74
  const radius = (SVG_SIZE - thickness) / 2
77
75
  const circumference = 2 * Math.PI * radius
78
76
 
79
- if (variant === 'determinate' && props.value) {
80
- useObservable('ariaValue', props.value)
81
- }
82
-
83
77
  const color = themeProvider.theme.palette[props.color || 'primary'].main
84
78
  useHostProps({
85
79
  role: 'progressbar',
@@ -3,7 +3,7 @@ import { cssVariableTheme } from '../../services/css-variable-theme.js'
3
3
  import type { CommandPaletteManager } from './command-palette-manager.js'
4
4
 
5
5
  export const CommandPaletteInput = Shade<{ manager: CommandPaletteManager }>({
6
- shadowDomName: 'shades-command-palette-input',
6
+ customElementName: 'shades-command-palette-input',
7
7
  css: {
8
8
  width: '100%',
9
9
  fontFamily: cssVariableTheme.typography.fontFamily,
@@ -54,7 +54,7 @@ describe('CommandPaletteSuggestionList', () => {
54
54
  onSelected: vi.fn(),
55
55
  })
56
56
 
57
- it('should render with shadow DOM', async () => {
57
+ it('should render as custom element', async () => {
58
58
  await usingAsync(new Injector(), async (injector) => {
59
59
  await usingAsync(createManager(), async (manager) => {
60
60
  const rootElement = document.getElementById('root') as HTMLDivElement
@@ -4,7 +4,7 @@ import { promisifyAnimation } from '../../utils/promisify-animation.js'
4
4
  import type { CommandPaletteManager } from './command-palette-manager.js'
5
5
 
6
6
  export const CommandPaletteSuggestionList = Shade<{ manager: CommandPaletteManager; fullScreenSuggestions?: boolean }>({
7
- shadowDomName: 'shade-command-palette-suggestion-list',
7
+ customElementName: 'shade-command-palette-suggestion-list',
8
8
  css: {
9
9
  fontFamily: cssVariableTheme.typography.fontFamily,
10
10
  '& .suggestion-items-container': {