@supersoniks/concorde 5.1.0 → 5.1.2

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 (628) hide show
  1. package/.agents/skills/concorde-docs/SKILL.md +153 -0
  2. package/.agents/skills/{concorde-component-docs/template.md → concorde-docs/templates/component.md} +6 -2
  3. package/.agents/skills/concorde-docs/templates/decorator.md +43 -0
  4. package/.agents/skills/concorde-docs/templates/guide.md +25 -0
  5. package/.claude/launch.json +15 -0
  6. package/.claude/vite.http.config.mjs +7 -0
  7. package/.taste-skill/after/desktop-fold.jpg +0 -0
  8. package/.taste-skill/after/desktop-page-01.jpg +0 -0
  9. package/.taste-skill/after/desktop-page-02.jpg +0 -0
  10. package/.taste-skill/after/desktop-page-03.jpg +0 -0
  11. package/.taste-skill/after/mobile-fold.jpg +0 -0
  12. package/.taste-skill/after/mobile-page-01.jpg +0 -0
  13. package/.taste-skill/after/report.json +4103 -0
  14. package/.taste-skill/after/tablet-fold.jpg +0 -0
  15. package/.taste-skill/after/tablet-page-01.jpg +0 -0
  16. package/.taste-skill/after/tablet-page-02.jpg +0 -0
  17. package/.taste-skill/before/desktop-fold.jpg +0 -0
  18. package/.taste-skill/before/desktop-page-01.jpg +0 -0
  19. package/.taste-skill/before/desktop-page-02.jpg +0 -0
  20. package/.taste-skill/before/mobile-fold.jpg +0 -0
  21. package/.taste-skill/before/mobile-page-01.jpg +0 -0
  22. package/.taste-skill/before/report.json +2556 -0
  23. package/.taste-skill/before/tablet-fold.jpg +0 -0
  24. package/.taste-skill/before/tablet-page-01.jpg +0 -0
  25. package/.taste-skill/direction.json +510 -0
  26. package/.taste-skill/notes.md +84 -0
  27. package/.taste-skill/prod/desktop-fold.jpg +0 -0
  28. package/.taste-skill/prod/desktop-page-01.jpg +0 -0
  29. package/.taste-skill/prod/desktop-page-02.jpg +0 -0
  30. package/.taste-skill/prod/desktop-page-03.jpg +0 -0
  31. package/.taste-skill/prod/mobile-fold.jpg +0 -0
  32. package/.taste-skill/prod/mobile-page-01.jpg +0 -0
  33. package/.taste-skill/prod/mobile-page-02.jpg +0 -0
  34. package/.taste-skill/prod/report.json +1973 -0
  35. package/.taste-skill/prod/tablet-fold.jpg +0 -0
  36. package/.taste-skill/prod/tablet-page-01.jpg +0 -0
  37. package/.taste-skill/prod/tablet-page-02.jpg +0 -0
  38. package/.tmp-cem/custom-elements.json +2013 -2013
  39. package/AUDIT.md +228 -0
  40. package/PLAN-AMELIORATION.md +220 -0
  41. package/PLAN-DOCS-AGENTS.md +80 -0
  42. package/README.md +3 -3
  43. package/ai/skills/concorde/SKILL.md +1 -1
  44. package/ai/skills/concorde-get-set-dp/SKILL.md +3 -3
  45. package/ai/skills/concorde-theme/SKILL.md +1 -1
  46. package/build-infos.json +1 -1
  47. package/concorde-core.bundle.js +16 -16
  48. package/concorde-core.es.js +235 -233
  49. package/dist/concorde-core.bundle.js +16 -16
  50. package/dist/concorde-core.es.js +235 -233
  51. package/dist/img/archive/concorde-001-2cv.webp +0 -0
  52. package/dist/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  53. package/dist/img/archive/concorde-red-arrows-2002.webm +0 -0
  54. package/dist/img/archive/credits.json +28 -0
  55. package/docs/.htaccess +75 -0
  56. package/docs/404.html +15 -0
  57. package/docs/404.md +5 -0
  58. package/docs/assets/index-BgG6FFPt.js +11765 -0
  59. package/docs/assets/index-x89XINSG.css +1 -0
  60. package/docs/core/components/functional/date/date.html +211 -0
  61. package/docs/core/components/functional/date/date.md +150 -0
  62. package/docs/core/components/functional/fetch/fetch.html +180 -0
  63. package/docs/core/components/functional/fetch/fetch.md +108 -0
  64. package/docs/core/components/functional/if/if.html +65 -0
  65. package/docs/core/components/functional/if/if.md +34 -0
  66. package/docs/core/components/functional/jsonata/jsonata.html +110 -0
  67. package/docs/core/components/functional/jsonata/jsonata.md +61 -0
  68. package/docs/core/components/functional/list/list.html +198 -0
  69. package/docs/core/components/functional/list/list.md +121 -0
  70. package/docs/core/components/functional/mix/mix.html +78 -0
  71. package/docs/core/components/functional/mix/mix.md +46 -0
  72. package/docs/core/components/functional/queue/queue.html +155 -0
  73. package/docs/core/components/functional/queue/queue.md +51 -0
  74. package/docs/core/components/functional/router/router.html +154 -0
  75. package/docs/core/components/functional/router/router.md +93 -0
  76. package/docs/core/components/functional/sdui/sdui-extension-points.html +127 -0
  77. package/docs/core/components/functional/sdui/sdui-extension-points.md +94 -0
  78. package/docs/core/components/functional/sdui/sdui.html +397 -0
  79. package/docs/core/components/functional/sdui/sdui.md +307 -0
  80. package/docs/core/components/functional/states/states.html +141 -0
  81. package/docs/core/components/functional/states/states.md +112 -0
  82. package/docs/core/components/functional/submit/submit.html +178 -0
  83. package/docs/core/components/functional/submit/submit.md +106 -0
  84. package/docs/{crawl/core → core}/components/functional/subscriber/subscriber.html +6 -5
  85. package/docs/core/components/functional/subscriber/subscriber.md +91 -0
  86. package/docs/core/components/functional/translation/translation.html +60 -0
  87. package/docs/core/components/functional/translation/translation.md +38 -0
  88. package/docs/core/components/functional/value/value.html +81 -0
  89. package/docs/core/components/functional/value/value.md +47 -0
  90. package/docs/core/components/ui/alert/alert.html +201 -0
  91. package/docs/core/components/ui/alert/alert.md +186 -0
  92. package/docs/core/components/ui/alert-messages/alert-messages.html +132 -0
  93. package/docs/core/components/ui/alert-messages/alert-messages.md +85 -0
  94. package/docs/core/components/ui/badge/badge.html +197 -0
  95. package/docs/core/components/ui/badge/badge.md +181 -0
  96. package/docs/core/components/ui/button/button.html +309 -0
  97. package/docs/core/components/ui/button/button.md +216 -0
  98. package/docs/core/components/ui/captcha/captcha.html +80 -0
  99. package/docs/core/components/ui/captcha/captcha.md +56 -0
  100. package/docs/core/components/ui/card/card.html +254 -0
  101. package/docs/core/components/ui/card/card.md +215 -0
  102. package/docs/core/components/ui/divider/divider.html +144 -0
  103. package/docs/core/components/ui/divider/divider.md +126 -0
  104. package/docs/core/components/ui/form/checkbox/checkbox.html +200 -0
  105. package/docs/core/components/ui/form/checkbox/checkbox.md +125 -0
  106. package/docs/core/components/ui/form/fieldset/fieldset.html +238 -0
  107. package/docs/core/components/ui/form/fieldset/fieldset.md +161 -0
  108. package/docs/core/components/ui/form/form-actions/form-actions.html +122 -0
  109. package/docs/core/components/ui/form/form-actions/form-actions.md +98 -0
  110. package/docs/core/components/ui/form/form-layout/form-layout.html +115 -0
  111. package/docs/core/components/ui/form/form-layout/form-layout.md +109 -0
  112. package/docs/core/components/ui/form/input/input.html +235 -0
  113. package/docs/core/components/ui/form/input/input.md +142 -0
  114. package/docs/core/components/ui/form/radio/radio.html +144 -0
  115. package/docs/core/components/ui/form/radio/radio.md +78 -0
  116. package/docs/core/components/ui/form/select/select.html +178 -0
  117. package/docs/core/components/ui/form/select/select.md +86 -0
  118. package/docs/core/components/ui/form/switch/switch.html +146 -0
  119. package/docs/core/components/ui/form/switch/switch.md +80 -0
  120. package/docs/core/components/ui/form/textarea/textarea.html +162 -0
  121. package/docs/core/components/ui/form/textarea/textarea.md +82 -0
  122. package/docs/core/components/ui/group/group.html +113 -0
  123. package/docs/core/components/ui/group/group.md +77 -0
  124. package/docs/core/components/ui/icon/icon.html +223 -0
  125. package/docs/core/components/ui/icon/icon.md +214 -0
  126. package/docs/core/components/ui/image/image.html +194 -0
  127. package/docs/core/components/ui/image/image.md +167 -0
  128. package/docs/core/components/ui/link/link.html +101 -0
  129. package/docs/core/components/ui/link/link.md +81 -0
  130. package/docs/core/components/ui/loader/loader.html +114 -0
  131. package/docs/core/components/ui/loader/loader.md +87 -0
  132. package/docs/{crawl/core → core}/components/ui/menu/menu.html +189 -116
  133. package/docs/core/components/ui/menu/menu.md +370 -0
  134. package/docs/core/components/ui/modal/modal.html +324 -0
  135. package/docs/core/components/ui/modal/modal.md +211 -0
  136. package/docs/core/components/ui/pop/pop.html +250 -0
  137. package/docs/core/components/ui/pop/pop.md +216 -0
  138. package/docs/core/components/ui/progress/progress.html +132 -0
  139. package/docs/core/components/ui/progress/progress.md +109 -0
  140. package/docs/core/components/ui/table/table.html +333 -0
  141. package/docs/core/components/ui/table/table.md +267 -0
  142. package/docs/core/components/ui/theme/theme.html +116 -0
  143. package/docs/core/components/ui/theme/theme.md +97 -0
  144. package/docs/core/components/ui/toast/toast.html +185 -0
  145. package/docs/core/components/ui/toast/toast.md +147 -0
  146. package/docs/core/components/ui/tooltip/tooltip.html +112 -0
  147. package/docs/core/components/ui/tooltip/tooltip.md +89 -0
  148. package/docs/docs/decorators/ancestor-attribute.html +71 -0
  149. package/docs/docs/decorators/ancestor-attribute.md +59 -0
  150. package/docs/docs/decorators/auto-subscribe.html +61 -0
  151. package/docs/docs/decorators/auto-subscribe.md +40 -0
  152. package/docs/docs/decorators/bind.html +86 -0
  153. package/docs/docs/decorators/bind.md +77 -0
  154. package/docs/docs/decorators/get.html +166 -0
  155. package/docs/docs/decorators/get.md +160 -0
  156. package/docs/docs/decorators/handle.html +139 -0
  157. package/docs/docs/decorators/handle.md +119 -0
  158. package/docs/docs/decorators/on-assign.html +72 -0
  159. package/docs/docs/decorators/on-assign.md +63 -0
  160. package/docs/docs/decorators/patch.html +76 -0
  161. package/docs/docs/decorators/patch.md +44 -0
  162. package/docs/docs/decorators/post.html +150 -0
  163. package/docs/docs/decorators/post.md +134 -0
  164. package/docs/docs/decorators/publish.html +74 -0
  165. package/docs/docs/decorators/publish.md +56 -0
  166. package/docs/docs/decorators/put.html +83 -0
  167. package/docs/docs/decorators/put.md +51 -0
  168. package/docs/docs/decorators/subscribe.html +91 -0
  169. package/docs/docs/decorators/subscribe.md +87 -0
  170. package/docs/docs/decorators/wait-for-ancestors.html +82 -0
  171. package/docs/docs/decorators/wait-for-ancestors.md +76 -0
  172. package/docs/docs/directives/sub.html +79 -0
  173. package/docs/docs/directives/sub.md +75 -0
  174. package/docs/docs/directives/t.html +91 -0
  175. package/docs/docs/directives/t.md +73 -0
  176. package/docs/{crawl/docs/_getting-started → docs/getting-started}/ai-agents.html +12 -11
  177. package/{src/docs/_getting-started → docs/docs/getting-started}/ai-agents.md +3 -3
  178. package/docs/docs/getting-started/components.html +27 -0
  179. package/docs/docs/getting-started/components.md +5 -0
  180. package/docs/{crawl/docs/_getting-started → docs/getting-started}/create-a-component.html +11 -14
  181. package/docs/{src/docs/_getting-started → docs/getting-started}/create-a-component.md +3 -6
  182. package/docs/{crawl/docs/_core-concept → docs/getting-started}/dataFlow.html +26 -29
  183. package/docs/{src/docs/_core-concept → docs/getting-started}/dataFlow.md +17 -18
  184. package/docs/docs/getting-started/installation.html +69 -0
  185. package/docs/docs/getting-started/installation.md +36 -0
  186. package/docs/{crawl/docs/_getting-started → docs/getting-started}/my-first-component.html +13 -22
  187. package/docs/{src/docs/_getting-started → docs/getting-started}/my-first-component.md +5 -14
  188. package/docs/docs/getting-started/start.html +47 -0
  189. package/{src/docs/_getting-started → docs/docs/getting-started}/start.md +1 -13
  190. package/docs/docs/getting-started/theming.html +334 -0
  191. package/{src/docs/_getting-started → docs/docs/getting-started}/theming.md +2 -2
  192. package/docs/docs/index.html +99 -0
  193. package/docs/{crawl/docs/_misc → docs/misc}/api-configuration.html +18 -18
  194. package/docs/{src/docs/_misc → docs/misc}/api-configuration.md +10 -12
  195. package/docs/{crawl/docs/_misc → docs/misc}/dataProviderKey.html +12 -11
  196. package/{src/docs/_misc → docs/docs/misc}/dataProviderKey.md +4 -4
  197. package/docs/{crawl/docs/_misc → docs/misc}/docs-mock-api.html +25 -28
  198. package/docs/{src/docs/_misc → docs/misc}/docs-mock-api.md +12 -13
  199. package/docs/{crawl/docs/_misc → docs/misc}/dynamic-path.html +16 -15
  200. package/{src/docs/_misc → docs/docs/misc}/dynamic-path.md +8 -8
  201. package/docs/{crawl/docs/_misc → docs/misc}/endpoint.html +16 -15
  202. package/{src/docs/_misc → docs/docs/misc}/endpoint.md +8 -8
  203. package/docs/{crawl/docs/_misc → docs/misc}/html-integration.html +12 -15
  204. package/docs/{src/docs/_misc → docs/misc}/html-integration.md +4 -5
  205. package/docs/docs-mock-api-sw.js +60 -223
  206. package/docs/docs-mock-api-sw.js.map +4 -4
  207. package/docs/hubs/decorators.html +443 -0
  208. package/docs/hubs/form-components.html +404 -0
  209. package/docs/hubs/remote-data.html +371 -0
  210. package/docs/img/archive/concorde-001-2cv.webp +0 -0
  211. package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  212. package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
  213. package/docs/img/archive/credits.json +28 -0
  214. package/docs/img/concorde/plane_01.jpg +0 -0
  215. package/docs/img/concorde/plane_02.jpg +0 -0
  216. package/docs/img/concorde/plane_03.jpg +0 -0
  217. package/docs/img/concorde/plane_04.jpg +0 -0
  218. package/docs/img/concorde/plane_05.jpg +0 -0
  219. package/docs/img/concorde/plane_06.jpg +0 -0
  220. package/docs/img/concorde/plane_07.jpg +0 -0
  221. package/docs/img/concorde/plane_08.jpg +0 -0
  222. package/docs/img/concorde/plane_09.jpg +0 -0
  223. package/docs/img/concorde/plane_10.jpg +0 -0
  224. package/docs/img/concorde/plane_11.jpg +0 -0
  225. package/docs/img/concorde/plane_12.jpg +0 -0
  226. package/docs/img/concorde/plane_13.jpg +0 -0
  227. package/docs/index.html +96 -67
  228. package/docs/index.md +22 -0
  229. package/docs/llms-full.txt +3329 -3295
  230. package/docs/llms.txt +94 -92
  231. package/docs/robots.txt +11 -10
  232. package/docs/sitemap.xml +78 -78
  233. package/docs/src/core/components/functional/date/date.md +91 -231
  234. package/docs/src/core/components/functional/fetch/fetch.md +66 -83
  235. package/docs/src/core/components/functional/if/if.md +28 -3
  236. package/docs/src/core/components/functional/jsonata/jsonata.md +42 -37
  237. package/docs/src/core/components/functional/list/list.md +99 -43
  238. package/docs/src/core/components/functional/mix/mix.md +31 -26
  239. package/docs/src/core/components/functional/queue/queue.md +40 -61
  240. package/docs/src/core/components/functional/router/router.md +64 -65
  241. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
  242. package/docs/src/core/components/functional/sdui/component-catalog.json +3103 -0
  243. package/docs/src/core/components/functional/sdui/example.json +19 -86
  244. package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
  245. package/docs/src/core/components/functional/sdui/sdui.md +196 -245
  246. package/docs/src/core/components/functional/states/states.md +86 -61
  247. package/docs/src/core/components/functional/submit/submit.md +64 -72
  248. package/docs/src/core/components/functional/translation/translation.md +38 -0
  249. package/docs/src/core/components/functional/value/value.md +34 -22
  250. package/docs/src/core/components/ui/alert/alert.md +139 -74
  251. package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
  252. package/docs/src/core/components/ui/badge/badge.md +137 -83
  253. package/docs/src/core/components/ui/button/button.md +139 -105
  254. package/docs/src/core/components/ui/captcha/captcha.md +50 -6
  255. package/docs/src/core/components/ui/card/card.md +183 -65
  256. package/docs/src/core/components/ui/divider/divider.md +104 -13
  257. package/docs/src/core/components/ui/form/checkbox/checkbox.md +90 -42
  258. package/docs/src/core/components/ui/form/fieldset/fieldset.md +135 -103
  259. package/docs/src/core/components/ui/form/form-actions/form-actions.md +71 -50
  260. package/docs/src/core/components/ui/form/form-layout/form-layout.md +99 -34
  261. package/docs/src/core/components/ui/form/input/input.md +95 -95
  262. package/docs/src/core/components/ui/form/radio/radio.md +55 -34
  263. package/docs/src/core/components/ui/form/select/select.md +60 -45
  264. package/docs/src/core/components/ui/form/switch/switch.md +57 -34
  265. package/docs/src/core/components/ui/form/textarea/textarea.md +55 -38
  266. package/docs/src/core/components/ui/group/group.md +49 -47
  267. package/docs/src/core/components/ui/icon/icon.md +132 -43
  268. package/docs/src/core/components/ui/image/image.md +132 -72
  269. package/docs/src/core/components/ui/link/link.md +46 -8
  270. package/docs/src/core/components/ui/loader/loader.md +55 -23
  271. package/docs/src/core/components/ui/menu/menu.md +155 -114
  272. package/docs/src/core/components/ui/modal/modal.md +154 -62
  273. package/docs/src/core/components/ui/pop/pop.md +185 -65
  274. package/docs/src/core/components/ui/progress/progress.md +76 -30
  275. package/docs/src/core/components/ui/table/table.md +146 -334
  276. package/docs/src/core/components/ui/theme/theme.md +97 -0
  277. package/docs/src/core/components/ui/toast/toast.md +80 -99
  278. package/docs/src/core/components/ui/tooltip/tooltip.md +52 -45
  279. package/docs/src/docs/decorators/ancestor-attribute.md +59 -0
  280. package/docs/src/docs/decorators/auto-subscribe.md +40 -0
  281. package/docs/src/docs/decorators/bind.md +77 -0
  282. package/docs/src/docs/decorators/get.md +160 -0
  283. package/docs/src/docs/decorators/handle.md +119 -0
  284. package/docs/src/docs/decorators/on-assign.md +63 -0
  285. package/docs/src/docs/decorators/patch.md +44 -0
  286. package/docs/src/docs/decorators/post.md +134 -0
  287. package/docs/src/docs/decorators/publish.md +56 -0
  288. package/docs/src/docs/decorators/put.md +51 -0
  289. package/docs/src/docs/decorators/subscribe.md +87 -0
  290. package/docs/src/docs/decorators/wait-for-ancestors.md +76 -0
  291. package/docs/src/docs/directives/sub.md +75 -0
  292. package/docs/src/docs/directives/t.md +73 -0
  293. package/docs/src/docs/{_getting-started → getting-started}/ai-agents.md +3 -3
  294. package/docs/src/docs/getting-started/components.md +5 -0
  295. package/{src/docs/_getting-started → docs/src/docs/getting-started}/create-a-component.md +3 -6
  296. package/{src/docs/_core-concept → docs/src/docs/getting-started}/dataFlow.md +17 -18
  297. package/docs/src/docs/getting-started/installation.md +36 -0
  298. package/{src/docs/_getting-started → docs/src/docs/getting-started}/my-first-component.md +5 -14
  299. package/docs/src/docs/getting-started/start.md +35 -0
  300. package/docs/src/docs/getting-started/theming.md +253 -0
  301. package/{src/docs/_misc → docs/src/docs/misc}/api-configuration.md +10 -12
  302. package/docs/src/docs/{_misc → misc}/dataProviderKey.md +4 -4
  303. package/{src/docs/_misc → docs/src/docs/misc}/docs-mock-api.md +12 -13
  304. package/docs/src/docs/{_misc → misc}/dynamic-path.md +8 -8
  305. package/docs/src/docs/{_misc → misc}/endpoint.md +8 -8
  306. package/{src/docs/_misc → docs/src/docs/misc}/html-integration.md +4 -5
  307. package/docs/src/docs/search/docs-search.json +3729 -2949
  308. package/docs/src/tsconfig.json +176 -5
  309. package/index.html +94 -67
  310. package/package.json +11 -4
  311. package/public/docs-mock-api-sw.js +58 -223
  312. package/public/docs-mock-api-sw.js.map +4 -4
  313. package/public/img/archive/concorde-001-2cv.webp +0 -0
  314. package/public/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  315. package/public/img/archive/concorde-red-arrows-2002.webm +0 -0
  316. package/public/img/archive/credits.json +28 -0
  317. package/public/img/concorde/plane_01.jpg +0 -0
  318. package/public/img/concorde/plane_02.jpg +0 -0
  319. package/public/img/concorde/plane_03.jpg +0 -0
  320. package/public/img/concorde/plane_04.jpg +0 -0
  321. package/public/img/concorde/plane_05.jpg +0 -0
  322. package/public/img/concorde/plane_06.jpg +0 -0
  323. package/public/img/concorde/plane_07.jpg +0 -0
  324. package/public/img/concorde/plane_08.jpg +0 -0
  325. package/public/img/concorde/plane_09.jpg +0 -0
  326. package/public/img/concorde/plane_10.jpg +0 -0
  327. package/public/img/concorde/plane_11.jpg +0 -0
  328. package/public/img/concorde/plane_12.jpg +0 -0
  329. package/public/img/concorde/plane_13.jpg +0 -0
  330. package/public/robots.txt +11 -10
  331. package/scripts/docs-markdown-vite-plugin.ts +37 -0
  332. package/scripts/docs-public-url.mjs +50 -0
  333. package/scripts/docs.htaccess +75 -0
  334. package/scripts/generate-crawl-docs.mjs +207 -116
  335. package/scripts/generate-crawl-docs.test.mjs +124 -0
  336. package/scripts/post-build-docs.js +34 -50
  337. package/scripts/post-build.mjs +0 -0
  338. package/src/core/components/functional/date/date.md +91 -231
  339. package/src/core/components/functional/fetch/fetch.md +66 -83
  340. package/src/core/components/functional/if/if.md +28 -3
  341. package/src/core/components/functional/if/if.ts +0 -0
  342. package/src/core/components/functional/jsonata/jsonata.md +42 -37
  343. package/src/core/components/functional/list/list.demo.ts +0 -0
  344. package/src/core/components/functional/list/list.md +99 -43
  345. package/src/core/components/functional/mix/mix.md +31 -26
  346. package/src/core/components/functional/queue/queue.demo.ts +10 -7
  347. package/src/core/components/functional/queue/queue.md +40 -61
  348. package/src/core/components/functional/router/router.demo.ts +16 -16
  349. package/src/core/components/functional/router/router.md +64 -65
  350. package/src/core/components/functional/router/router.ts +0 -0
  351. package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +0 -0
  352. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  353. package/src/core/components/functional/sdui/component-catalog.json +1 -1
  354. package/src/core/components/functional/sdui/example.json +19 -86
  355. package/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
  356. package/src/core/components/functional/sdui/sdui.md +187 -358
  357. package/src/core/components/functional/sdui/types.ts +0 -0
  358. package/src/core/components/functional/states/states.demo.ts +21 -22
  359. package/src/core/components/functional/states/states.md +86 -61
  360. package/src/core/components/functional/states/states.ts +1 -1
  361. package/src/core/components/functional/submit/submit.md +64 -72
  362. package/src/core/components/functional/subscriber/subscriber.ts +0 -0
  363. package/src/core/components/functional/translation/translation.md +38 -0
  364. package/src/core/components/functional/value/value.md +34 -22
  365. package/src/core/components/functional/value/value.ts +0 -0
  366. package/src/core/components/ui/_css/size.ts +0 -0
  367. package/src/core/components/ui/alert/alert.md +48 -58
  368. package/src/core/components/ui/badge/badge.md +27 -34
  369. package/src/core/components/ui/button/button.md +139 -106
  370. package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
  371. package/src/core/components/ui/captcha/captcha.md +17 -32
  372. package/src/core/components/ui/card/card.md +6 -6
  373. package/src/core/components/ui/divider/divider.md +8 -11
  374. package/src/core/components/ui/form/checkbox/checkbox.md +90 -42
  375. package/src/core/components/ui/form/fieldset/fieldset.md +31 -75
  376. package/src/core/components/ui/form/form-actions/form-actions.md +14 -16
  377. package/src/core/components/ui/form/form-layout/form-layout.md +19 -29
  378. package/src/core/components/ui/form/input/input.md +95 -95
  379. package/src/core/components/ui/form/radio/radio.md +55 -34
  380. package/src/core/components/ui/form/select/select.md +60 -45
  381. package/src/core/components/ui/form/switch/switch.md +57 -34
  382. package/src/core/components/ui/form/textarea/textarea.md +55 -38
  383. package/src/core/components/ui/group/group.md +35 -33
  384. package/src/core/components/ui/icon/icon.md +4 -4
  385. package/src/core/components/ui/image/image.md +41 -107
  386. package/src/core/components/ui/link/link.md +6 -6
  387. package/src/core/components/ui/loader/loader.md +30 -55
  388. package/src/core/components/ui/menu/menu.md +27 -27
  389. package/src/core/components/ui/modal/modal.md +72 -96
  390. package/src/core/components/ui/modal/modal.ts +14 -11
  391. package/src/core/components/ui/pop/pop.md +80 -158
  392. package/src/core/components/ui/progress/progress.md +2 -2
  393. package/src/core/components/ui/table/table.md +91 -255
  394. package/src/core/components/ui/theme/theme.md +11 -36
  395. package/src/core/components/ui/toast/toast.md +48 -117
  396. package/src/core/components/ui/tooltip/tooltip.md +27 -62
  397. package/src/core/mixins/Subscriber.ts +0 -0
  398. package/src/core/utils/DataBindObserver.ts +0 -0
  399. package/src/core/utils/LocationHandler.spec.ts +80 -0
  400. package/src/core/utils/LocationHandler.ts +5 -9
  401. package/src/core/utils/Objects.ts +0 -0
  402. package/src/core/utils/route.ts +0 -0
  403. package/src/docs/code.ts +88 -75
  404. package/src/docs/components/docs-demo-sources.ts +70 -147
  405. package/src/docs/components/docs-lit-demo.ts +20 -40
  406. package/src/docs/components/docs-source-link.ts +0 -82
  407. package/src/docs/decorators/ancestor-attribute.md +59 -0
  408. package/src/docs/decorators/auto-subscribe.md +40 -0
  409. package/src/docs/decorators/bind.md +77 -0
  410. package/src/docs/decorators/get.md +160 -0
  411. package/src/docs/decorators/handle.md +119 -0
  412. package/src/docs/decorators/on-assign.md +63 -0
  413. package/src/docs/decorators/patch.md +44 -0
  414. package/src/docs/decorators/post.md +134 -0
  415. package/src/docs/decorators/publish.md +56 -0
  416. package/src/docs/decorators/put.md +51 -0
  417. package/src/docs/decorators/subscribe.md +87 -0
  418. package/src/docs/decorators/wait-for-ancestors.md +76 -0
  419. package/src/docs/directives/sub.md +75 -0
  420. package/src/docs/directives/t.md +73 -0
  421. package/src/docs/docs-location.spec.ts +46 -0
  422. package/src/docs/docs-location.ts +123 -32
  423. package/src/docs/docs.ts +6 -2
  424. package/src/docs/example/decorators-demo-bind-demos.ts +81 -116
  425. package/src/docs/example/decorators-demo-geo.ts +30 -19
  426. package/src/docs/example/decorators-demo-post.ts +88 -186
  427. package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +165 -268
  428. package/src/docs/example/decorators-demo.ts +85 -98
  429. package/src/docs/example/docs-api-config-demos.ts +19 -20
  430. package/src/docs/example/docs-boarding-pass-demo.ts +134 -0
  431. package/src/docs/example/docs-flight-demos.ts +147 -0
  432. package/src/docs/example/docs-jsonata-demos.ts +52 -52
  433. package/src/docs/example/docs-list-demos.ts +43 -123
  434. package/src/docs/example/docs-provider-keys.ts +33 -28
  435. package/src/docs/example/docs-queue-demos.ts +37 -77
  436. package/src/docs/example/docs-router-demos.ts +20 -25
  437. package/src/docs/example/docs-submit-demos.ts +48 -48
  438. package/src/docs/example/docs-toggle-demos.ts +4 -3
  439. package/src/docs/example/users.ts +0 -0
  440. package/src/docs/getting-started/ai-agents.md +76 -0
  441. package/src/docs/getting-started/components.md +5 -0
  442. package/src/docs/getting-started/create-a-component.md +136 -0
  443. package/src/docs/getting-started/dataFlow.md +87 -0
  444. package/src/docs/getting-started/installation.md +36 -0
  445. package/src/docs/getting-started/my-first-component.md +227 -0
  446. package/src/docs/getting-started/start.md +35 -0
  447. package/src/docs/getting-started/theming.md +253 -0
  448. package/src/docs/header/header.ts +240 -71
  449. package/src/docs/home/catalog.ts +44 -0
  450. package/src/docs/home/home.ts +520 -0
  451. package/src/docs/home/mach-stage.ts +389 -0
  452. package/src/docs/layout.ts +12 -11
  453. package/src/docs/misc/api-configuration.md +79 -0
  454. package/src/docs/misc/dataProviderKey.md +168 -0
  455. package/src/docs/misc/docs-mock-api.md +62 -0
  456. package/src/docs/misc/dynamic-path.md +71 -0
  457. package/src/docs/misc/endpoint.md +45 -0
  458. package/src/docs/misc/html-integration.md +14 -0
  459. package/src/docs/mock-api/api-config-mock.ts +5 -0
  460. package/src/docs/mock-api/fixtures.ts +0 -278
  461. package/src/docs/mock-api/flights.ts +89 -0
  462. package/src/docs/mock-api/router.ts +3 -4
  463. package/src/docs/mock-api/urls.ts +1 -2
  464. package/src/docs/navigation/components-index.ts +56 -0
  465. package/src/docs/navigation/navigation.ts +219 -232
  466. package/src/docs/navigation/pager.ts +67 -0
  467. package/src/docs/navigation/toc.ts +101 -0
  468. package/src/docs/search/docs-search.json +2419 -4374
  469. package/src/docs/search/markdown-renderer.ts +33 -7
  470. package/src/docs/search/page.ts +9 -6
  471. package/src/docs/search/search.ts +154 -122
  472. package/src/docs/shiki/index.ts +109 -0
  473. package/src/docs/tailwind/css/base/scrollbar.css +22 -0
  474. package/src/docs/tailwind/css/base/theme.css +96 -0
  475. package/src/docs/tailwind/css/base/typography.css +4 -0
  476. package/src/docs/tailwind/css/docs/boarding-pass.css +65 -0
  477. package/src/docs/tailwind/css/docs/content.css +32 -0
  478. package/src/docs/tailwind/css/docs/page.css +10 -0
  479. package/src/docs/tailwind/css/docs.css +9 -0
  480. package/src/docs/tailwind/css/home/hero.css +210 -0
  481. package/src/docs/tailwind/css/home/motion.css +84 -0
  482. package/src/docs/tailwind/css/home/sections.css +416 -0
  483. package/src/docs/tailwind/css/tailwind.css +7 -185
  484. package/src/tsconfig.json +23 -2
  485. package/src/tsconfig.tsbuildinfo +1 -1
  486. package/tailwind.config.js +8 -4
  487. package/vite.config.mts +11 -2
  488. package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
  489. package/.github/workflows/ci.yml +0 -21
  490. package/.github-export-ignore +0 -30
  491. package/CONTRIBUTING.md +0 -59
  492. package/DEV.md +0 -54
  493. package/LICENSE +0 -21
  494. package/OPEN_SOURCE_CHECKPOINT.md +0 -133
  495. package/concorde-3d.bundle.js +0 -3960
  496. package/concorde-3d.es.js +0 -33433
  497. package/concorde-hugging-face-infer.bundle.js +0 -32
  498. package/concorde-hugging-face-infer.es.js +0 -2952
  499. package/concorde-interactive.bundle.js +0 -1157
  500. package/concorde-interactive.es.js +0 -10734
  501. package/concorde-shader.bundle.js +0 -116
  502. package/concorde-shader.es.js +0 -8353
  503. package/concorde-webgpu.bundle.js +0 -307
  504. package/concorde-webgpu.es.js +0 -8627
  505. package/docs/assets/index-D8MVWqY6.js +0 -12251
  506. package/docs/assets/index-DiD0qYvE.css +0 -1
  507. package/docs/crawl/core/components/functional/date/date.html +0 -190
  508. package/docs/crawl/core/components/functional/fetch/fetch.html +0 -109
  509. package/docs/crawl/core/components/functional/if/if.html +0 -27
  510. package/docs/crawl/core/components/functional/jsonata/jsonata.html +0 -79
  511. package/docs/crawl/core/components/functional/list/list.html +0 -70
  512. package/docs/crawl/core/components/functional/mix/mix.html +0 -45
  513. package/docs/crawl/core/components/functional/queue/queue.html +0 -96
  514. package/docs/crawl/core/components/functional/router/router.html +0 -106
  515. package/docs/crawl/core/components/functional/sdui/sdui.html +0 -269
  516. package/docs/crawl/core/components/functional/states/states.html +0 -66
  517. package/docs/crawl/core/components/functional/submit/submit.html +0 -160
  518. package/docs/crawl/core/components/functional/value/value.html +0 -51
  519. package/docs/crawl/core/components/ui/alert/alert.html +0 -110
  520. package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +0 -23
  521. package/docs/crawl/core/components/ui/badge/badge.html +0 -119
  522. package/docs/crawl/core/components/ui/button/button.html +0 -149
  523. package/docs/crawl/core/components/ui/captcha/captcha.html +0 -30
  524. package/docs/crawl/core/components/ui/card/card.html +0 -99
  525. package/docs/crawl/core/components/ui/divider/divider.html +0 -58
  526. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +0 -73
  527. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +0 -135
  528. package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +0 -79
  529. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +0 -62
  530. package/docs/crawl/core/components/ui/form/input/input.html +0 -109
  531. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +0 -38
  532. package/docs/crawl/core/components/ui/form/radio/radio.html +0 -56
  533. package/docs/crawl/core/components/ui/form/select/select.html +0 -73
  534. package/docs/crawl/core/components/ui/form/switch/switch.html +0 -56
  535. package/docs/crawl/core/components/ui/form/textarea/textarea.html +0 -59
  536. package/docs/crawl/core/components/ui/group/group.html +0 -82
  537. package/docs/crawl/core/components/ui/icon/icon.html +0 -133
  538. package/docs/crawl/core/components/ui/image/image.html +0 -110
  539. package/docs/crawl/core/components/ui/link/link.html +0 -42
  540. package/docs/crawl/core/components/ui/loader/loader.html +0 -50
  541. package/docs/crawl/core/components/ui/modal/modal.html +0 -117
  542. package/docs/crawl/core/components/ui/pop/pop.html +0 -102
  543. package/docs/crawl/core/components/ui/progress/progress.html +0 -58
  544. package/docs/crawl/core/components/ui/table/table.html +0 -413
  545. package/docs/crawl/core/components/ui/toast/toast.html +0 -122
  546. package/docs/crawl/core/components/ui/tooltip/tooltip.html +0 -79
  547. package/docs/crawl/docs/_core-concept/overview.html +0 -66
  548. package/docs/crawl/docs/_core-concept/subscriber.html +0 -75
  549. package/docs/crawl/docs/_decorators/ancestor-attribute.html +0 -116
  550. package/docs/crawl/docs/_decorators/auto-subscribe.html +0 -202
  551. package/docs/crawl/docs/_decorators/bind.html +0 -141
  552. package/docs/crawl/docs/_decorators/get.html +0 -149
  553. package/docs/crawl/docs/_decorators/handle.html +0 -165
  554. package/docs/crawl/docs/_decorators/on-assign.html +0 -355
  555. package/docs/crawl/docs/_decorators/patch.html +0 -78
  556. package/docs/crawl/docs/_decorators/post.html +0 -139
  557. package/docs/crawl/docs/_decorators/publish.html +0 -61
  558. package/docs/crawl/docs/_decorators/put.html +0 -78
  559. package/docs/crawl/docs/_decorators/subscribe.html +0 -109
  560. package/docs/crawl/docs/_decorators/wait-for-ancestors.html +0 -137
  561. package/docs/crawl/docs/_directives/sub.html +0 -93
  562. package/docs/crawl/docs/_getting-started/concorde-manual-install.html +0 -100
  563. package/docs/crawl/docs/_getting-started/concorde-outside.html +0 -58
  564. package/docs/crawl/docs/_getting-started/my-first-subscriber.html +0 -110
  565. package/docs/crawl/docs/_getting-started/pubsub.html +0 -62
  566. package/docs/crawl/docs/_getting-started/start.html +0 -76
  567. package/docs/crawl/docs/_getting-started/theming.html +0 -85
  568. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +0 -138
  569. package/docs/crawl/hubs/decorators.html +0 -547
  570. package/docs/crawl/hubs/form-components.html +0 -359
  571. package/docs/crawl/hubs/remote-data.html +0 -452
  572. package/docs/crawl/index.html +0 -101
  573. package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
  574. package/docs/src/docs/_core-concept/overview.md +0 -57
  575. package/docs/src/docs/_core-concept/subscriber.md +0 -75
  576. package/docs/src/docs/_decorators/ancestor-attribute.md +0 -127
  577. package/docs/src/docs/_decorators/auto-subscribe.md +0 -202
  578. package/docs/src/docs/_decorators/bind.md +0 -167
  579. package/docs/src/docs/_decorators/get.md +0 -162
  580. package/docs/src/docs/_decorators/handle.md +0 -175
  581. package/docs/src/docs/_decorators/on-assign.md +0 -390
  582. package/docs/src/docs/_decorators/patch.md +0 -70
  583. package/docs/src/docs/_decorators/post.md +0 -146
  584. package/docs/src/docs/_decorators/publish.md +0 -55
  585. package/docs/src/docs/_decorators/put.md +0 -70
  586. package/docs/src/docs/_decorators/subscribe.md +0 -100
  587. package/docs/src/docs/_decorators/wait-for-ancestors.md +0 -163
  588. package/docs/src/docs/_directives/sub.md +0 -91
  589. package/docs/src/docs/_getting-started/concorde-manual-install.md +0 -133
  590. package/docs/src/docs/_getting-started/concorde-outside.md +0 -33
  591. package/docs/src/docs/_getting-started/my-first-subscriber.md +0 -120
  592. package/docs/src/docs/_getting-started/pubsub.md +0 -37
  593. package/docs/src/docs/_getting-started/start.md +0 -47
  594. package/docs/src/docs/_getting-started/theming.md +0 -91
  595. package/docs/src/docs/_misc/formelement-subscriber-removal.md +0 -115
  596. package/docs/src/tsconfig.declarations.json +0 -22
  597. package/docs/src/tsconfig.emit.json +0 -23
  598. package/gitlab/job_github_mirror.sh +0 -39
  599. package/scripts/github-export.mjs +0 -150
  600. package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
  601. package/src/css.d.ts +0 -19
  602. package/src/docs/_core-concept/overview.md +0 -57
  603. package/src/docs/_core-concept/subscriber.md +0 -75
  604. package/src/docs/_decorators/ancestor-attribute.md +0 -128
  605. package/src/docs/_decorators/auto-subscribe.md +0 -202
  606. package/src/docs/_decorators/bind.md +0 -167
  607. package/src/docs/_decorators/get.md +0 -162
  608. package/src/docs/_decorators/handle.md +0 -175
  609. package/src/docs/_decorators/on-assign.md +0 -390
  610. package/src/docs/_decorators/patch.md +0 -70
  611. package/src/docs/_decorators/post.md +0 -146
  612. package/src/docs/_decorators/publish.md +0 -55
  613. package/src/docs/_decorators/put.md +0 -70
  614. package/src/docs/_decorators/subscribe.md +0 -100
  615. package/src/docs/_decorators/wait-for-ancestors.md +0 -163
  616. package/src/docs/_directives/sub.md +0 -91
  617. package/src/docs/_getting-started/concorde-manual-install.md +0 -133
  618. package/src/docs/_getting-started/concorde-outside.md +0 -33
  619. package/src/docs/_getting-started/my-first-subscriber.md +0 -120
  620. package/src/docs/_getting-started/pubsub.md +0 -37
  621. package/src/docs/_misc/formelement-subscriber-removal.md +0 -115
  622. package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
  623. package/src/docs/example/docs-joke-demos.ts +0 -297
  624. package/src/docs/prism/index.ts +0 -6
  625. package/src/docs/prism/prism.css +0 -158
  626. package/src/docs/prism/prism.js +0 -1022
  627. package/src/tsconfig.declarations.json +0 -22
  628. package/src/tsconfig.emit.json +0 -23
@@ -1,120 +0,0 @@
1
- # Legacy: My first subscriber component
2
-
3
- > **New projects:** use [My first component](#docs/_getting-started/my-first-component.md/my-first-component) (`@ancestorAttribute`, `@subscribe` + `DataProviderKey`, `.items` on lists) and [Data flow](#docs/_core-concept/dataFlow.md/dataFlow). This page documents the **Subscriber mixin** used by older apps and core components.
4
-
5
- Learn how to build a component with the **Subscriber** mixin, styled with Tailwind, filled from a DataProvider via automatic property mapping.
6
-
7
- ## Create a classic lit component
8
-
9
- <sonic-code language="javascript" >
10
- <template>
11
- import { html, LitElement, nothing } from "lit";
12
- import { customElement, property } from "lit/decorators.js";
13
- @customElement("docs-user")
14
- export class user extends LitElement {
15
- @property({ type: String }) first_name = "";
16
- @property({ type: String }) last_name = "";
17
- @property({ type: String }) avatar = "";
18
- @property({ type: String }) email = "";
19
- render() {
20
- return html`
21
- &lt;img src="${this.avatar}" /&gt; &lt;br&gt;
22
- ${this.first_name} ${this.last_name} &lt;br&gt;
23
- ${this.email}`;
24
- }
25
- }
26
- </template>
27
- </sonic-code>
28
-
29
- ### Style with tailwind and ui components
30
-
31
- <sonic-code language="javascript">
32
- <template>
33
- import { css, unsafeCSS } from "lit";
34
- import tailwindImport from "./css/tailwind.css?inline";
35
- export const tailwind = css`${unsafeCSS(tailwindImport)}`;
36
- </template>
37
- </sonic-code>
38
-
39
- <sonic-code language="javascript">
40
- <template>
41
- import { html, LitElement } from "lit";
42
- import { customElement, property } from "lit/decorators.js";
43
- import { tailwind } from "../tailwind";
44
- import '@supersoniks/concode/ui/image'
45
- import '@supersoniks/concode/ui/button'
46
- import '@supersoniks/concode/ui/icon'
47
- @customElement("docs-user")
48
- export class user extends LitElement {
49
- static styles = [tailwind];
50
- @property({ type: String }) first_name = "";
51
- @property({ type: String }) last_name = "";
52
- @property({ type: String }) avatar = "";
53
- @property({ type: String }) email = "";
54
- render() {
55
- return html`&lt;div class="flex items-center gap-3 p-2"&gt;
56
- &lt;sonic-image src=${this.avatar} rounded="md" ratio="1/1" class="w-16"&gt;&lt;/sonic-image&gt;
57
- &lt;div&gt;${this.first_name} &lt;span class="font-bold"&gt;${this.last_name}&lt;/span&gt;&lt;/div&gt;
58
- &lt;div class="text-sm text-neutral-400"&gt;${this.email}&lt;/div&gt;
59
- &lt;/div&gt;`;
60
- }
61
- }
62
- </template>
63
- </sonic-code>
64
-
65
- ## Add Subscriber mixin
66
-
67
- <sonic-code language="javascript">
68
- <template>
69
- import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber";
70
- @customElement("docs-user")
71
- export class user extends Subscriber(LitElement) {
72
- // properties auto-filled from DataProvider when names match
73
- }
74
- </template>
75
- </sonic-code>
76
-
77
- See [Legacy: Subscriber mixin](#docs/_core-concept/subscriber.md/subscriber).
78
-
79
- ## Autofill from a dataProvider
80
-
81
- <sonic-code >
82
- <template>
83
- <docs-demo-sources for="list-users-fetch"></docs-demo-sources>
84
- <div serviceURL="/docs-mock-api">
85
- <sonic-fetch
86
- serviceURL="/docs-mock-api"
87
- dataProvider="api/users/3"
88
- key="data">
89
- <docs-user></docs-user>
90
- </sonic-fetch>
91
- </div>
92
- </template>
93
- </sonic-code>
94
-
95
- <sonic-code >
96
- <template>
97
- <sonic-fetch
98
- serviceURL="/docs-mock-api"
99
- dataProvider="api/users/2"
100
- key="data"></sonic-fetch>
101
- <docs-user dataProvider="api/users/2" ></docs-user>
102
- </template>
103
- </sonic-code>
104
-
105
- <sonic-code >
106
- <template>
107
- <div class="grid grid-cols-1 gap-4">
108
- <form formDataProvider="userPreview" class="grid grid-cols-4 gap-3" >
109
- <sonic-input label="First name" type="text" name="first_name" value="Paul" size="sm"></sonic-input>
110
- <sonic-input label="Last name" type="text" name="last_name" value="Metrand" size="sm"></sonic-input>
111
- <sonic-input class="col-span-2" label="email" type="text" name="email" value="paul@example.com" size="sm"></sonic-input>
112
- <sonic-input label="Image url" type="text" name="avatar" value="https://i.pravatar.cc/150?u=paul" size="sm"></sonic-input>
113
- </form>
114
- <sonic-divider align="left">Preview before submit</sonic-divider>
115
- <div dataProvider="userPreview">
116
- <docs-user></docs-user>
117
- </div>
118
- </div>
119
- </template>
120
- </sonic-code>
@@ -1,37 +0,0 @@
1
- # Legacy: Sharing data
2
-
3
- > **New apps:** [Data flow](#docs/_core-concept/dataFlow.md/dataFlow) (`get` / `set` / `DataProviderKey`, decorators). This page documents the historical **Publisher** proxy API (`PublisherManager`, `publisher.set`, `onAssign`, …).
4
-
5
- This section describes how data is shared between graphical and non-graphical components.
6
-
7
- Graphical components should not reference each other directly — they stay decoupled via a **publish/subscribe** store.
8
-
9
- ## The Publisher
10
-
11
- ### Principle
12
-
13
- * The **publisher** is a [JavaScript proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) that holds data.<br>
14
- Example: `{foo:{hello:["world"]}, bar:"baz"}`
15
-
16
- * Accessing a property (`myPublisher.foo.hello`) returns another **publisher** for that segment.
17
-
18
- * Missing properties create a publisher with internal data `null`, filled later.
19
-
20
- * **Subscribers** listen via `onAssign`, `onInternalMutation`, template filling on the **Subscriber mixin**, etc.
21
-
22
- * Updates use `publisher.set(...)` or nested assignment; changes propagate to subscribers.
23
-
24
- ❇️ Order of creation vs subscription theoretically does not matter.
25
-
26
- ### Methods
27
-
28
- * **set** — replace internal value
29
- <sonic-code language="javascript"><template>publisher.set({foo:{hello:["world"]}, bar:"baz"});</template></sonic-code>
30
-
31
- * **get** — read internal value
32
- <sonic-code language="javascript"><template>publisher.get()</template></sonic-code>
33
-
34
- * **onAssign / offAssign** — react to `set`
35
- <sonic-code language="javascript"><template>publisher.a.b.onAssign(console.log);</template></sonic-code>
36
-
37
- Modern equivalent: `get` / `set` / `@handle` — see [Data flow](#docs/_core-concept/dataFlow.md/dataFlow).
@@ -1,115 +0,0 @@
1
- # FormElement without Subscriber (REDMINE-79569)
2
-
3
- Form fields (`sonic-input`, `textarea`, `select`, `checkbox`, `radio`, `switch`, `button`, `input-autocomplete`) no longer inherit the **Subscriber** mixin.
4
-
5
- ## Behaviour now
6
-
7
- | Before | After |
8
- |--------|--------|
9
- | Dual channel `dataProvider` (autofill) + `formDataProvider` | **`formDataProvider` + `name` only** |
10
- | Ancestor `dataProvider` auto-filled field props | Ignored by form fields |
11
- | `noAutoFill` on fields/buttons inside a `dataProvider` tree | Dead on form fields (attribute harmless; can be cleaned in apps) |
12
-
13
- Preview pattern still valid: form writes via `formDataProvider`, display card reads via `dataProvider` on a **Subscriber** (or `@subscribe`) sibling — not on the fields themselves.
14
-
15
- ## Migration checklist (apps)
16
-
17
- 1. Prefer `formDataProvider` alone on forms / fieldsets.
18
- 2. Drop redundant `dataProvider={sameKey}` on form containers when it only existed for field autofill.
19
- 3. Prefill edit forms with `set(formKey, row)` / `dp(formKey.field).set(...)` before mount — not field `dataProvider`.
20
- 4. Remove `noAutoFill` on `sonic-button` / fields when it only blocked Subscriber autofill.
21
- 5. `initFromPublisher` still works (form publisher only).
22
-
23
- ## Billetterie collect — dual-channel risk
24
-
25
- Files under `la-billetterie/concorde` that mention both `formDataProvider` and `dataProvider=` (review; many are filter+queue, not field autofill):
26
-
27
- ### High priority (same key on form container)
28
-
29
- - `la-billetterie/components/reservation-request/atoms/request-event-form.ts` — `form` / `fieldset` with both attrs equal
30
- - `la-billetterie/components/reservation/atoms/new-quote-form.ts`
31
- - `la-billetterie/components/stats/sales-summary/sales-summary.ts`
32
- - `la-billetterie/components/product/price-selection-form/price-selection-form.ts` — `formDataProvider` + `dataProvider="cart/editForm"`
33
- - `la-billetterie/components/user/account/link-ticket/link-ticket.ts` — distinct keys (API vs form) — keep `dataProvider` only if used by fetch/submit siblings
34
-
35
- ### Filters + queue (usually OK)
36
-
37
- `formDataProvider` on filter bar, `dataProvider` on `sonic-queue` / list — no field autofill dependency:
38
-
39
- - `access-control/components/event/list/index.ts`
40
- - `access-control/components/control/search/views/list.ts`
41
- - `la-billetterie/components/event/form-event-filter/form-event-filter.ts`
42
- - `la-billetterie/components/counter/*` (agenda, store, reservation-request-treatment, …)
43
- - `widgets/agenda/agenda.ts`
44
- - … see full dual list in ticket notes / grep below
45
-
46
- ### Full dual-channel file list (55)
47
-
48
- ```
49
- concorde/src/access-control/components/control/search/views/list.ts
50
- concorde/src/access-control/components/event/list/index.ts
51
- concorde/src/la-billetterie/components/access-control-mobile/access-controller-picker.ts
52
- concorde/src/la-billetterie/components/accreditations-directory/accreditations-directory.ts
53
- concorde/src/la-billetterie/components/address/address-suggestion.ts
54
- concorde/src/la-billetterie/components/bulk/bulk.ts
55
- concorde/src/la-billetterie/components/campaign/campaign-content.ts
56
- concorde/src/la-billetterie/components/counter/agenda/agenda.ts
57
- concorde/src/la-billetterie/components/counter/event-selector/event-selector.ts
58
- concorde/src/la-billetterie/components/counter/order-validation/order-validation-settings.ts
59
- concorde/src/la-billetterie/components/counter/print/format-menu.ts
60
- concorde/src/la-billetterie/components/counter/reservation-request-treatment/reservation-request-treatment.ts
61
- concorde/src/la-billetterie/components/counter/store/counter-store.ts
62
- concorde/src/la-billetterie/components/counter/widgets-settings/widgets-settings-page.ts
63
- concorde/src/la-billetterie/components/custom-list/custom-list.ts
64
- concorde/src/la-billetterie/components/event/agenda/agenda.ts
65
- concorde/src/la-billetterie/components/event/atoms/buy-event-block/buy-event-block.ts
66
- concorde/src/la-billetterie/components/event/atoms/categorizedPrices/categorizedPrices.ts
67
- concorde/src/la-billetterie/components/event/event-store/event-store-content.ts
68
- concorde/src/la-billetterie/components/event/form-event-filter/form-event-filter.ts
69
- concorde/src/la-billetterie/components/form/event-selection/event-selection-filters.ts
70
- concorde/src/la-billetterie/components/form/event-selection/event-selection.ts
71
- concorde/src/la-billetterie/components/giftcards/giftcard-link.ts
72
- concorde/src/la-billetterie/components/layout/header.ts
73
- concorde/src/la-billetterie/components/orders/recover/recover.ts
74
- concorde/src/la-billetterie/components/placing/atoms/placement-choice/placement-choice.ts
75
- concorde/src/la-billetterie/components/placing/seatmap-view/seatmap-view.ts
76
- concorde/src/la-billetterie/components/product/price-selection-form/price-selection-form.ts
77
- concorde/src/la-billetterie/components/product/prices-form/price-button/price-button.ts
78
- concorde/src/la-billetterie/components/purchase/purchase-summary/complementary-info/complementary-info.ts
79
- concorde/src/la-billetterie/components/reservation-request/atoms/request-event-form.ts
80
- concorde/src/la-billetterie/components/reservation/atoms/new-quote-form.ts
81
- concorde/src/la-billetterie/components/reservation/reservation-content.ts
82
- concorde/src/la-billetterie/components/seatmap/seatmap.ts
83
- concorde/src/la-billetterie/components/shop/shop.ts
84
- concorde/src/la-billetterie/components/stats/dashboard/dashboard.ts
85
- concorde/src/la-billetterie/components/stats/event/event-stats-check.ts
86
- concorde/src/la-billetterie/components/stats/sales-summary/sales-summary.ts
87
- concorde/src/la-billetterie/components/subscription/atoms/quick-select-display-toggle/quick-select-display-toggle.ts
88
- concorde/src/la-billetterie/components/subscription/cart-quick-select.ts
89
- concorde/src/la-billetterie/components/subscription/edit/subscription-renew-form.ts
90
- concorde/src/la-billetterie/components/ticket/ticket-freeup.ts
91
- concorde/src/la-billetterie/components/tickets-app/default-router.ts
92
- concorde/src/la-billetterie/components/user/account/account-purchases.ts
93
- concorde/src/la-billetterie/components/user/account/account-tickets.ts
94
- concorde/src/la-billetterie/components/user/account/link-ticket/link-ticket.ts
95
- concorde/src/la-billetterie/components/user/form/login.ts
96
- concorde/src/la-billetterie/components/user/user-attach/buyer-attach-form.ts
97
- concorde/src/la-billetterie/components/user/user-attach/buyer-attach.ts
98
- concorde/src/la-billetterie/components/user/user-attach/owner-attach-form.ts
99
- concorde/src/la-billetterie/components/user/user-attach/subscription-attach-form.ts
100
- concorde/src/la-billetterie/components/user/user-attach/subscription-selector.ts
101
- concorde/src/la-billetterie/components/user/user-selector/user-selector.ts
102
- concorde/src/la-billetterie/components/user/user-suggest/user-suggest.ts
103
- concorde/src/widgets/agenda/agenda.ts
104
- ```
105
-
106
- Re-run audit:
107
-
108
- ```bash
109
- # from la-billetterie
110
- rg -l 'formDataProvider' concorde/src | while read f; do rg -q 'dataProvider\s*=' "$f" && echo "$f"; done
111
- ```
112
-
113
- ## Non-regression (Concorde docs)
114
-
115
- Smoke form demos: input, textarea, select, checkbox (incl. check-all), radio, switch, button form modes, queue + `dataFilterProvider`, submit, validation / sameValueAs, input-autocomplete.
@@ -1,110 +0,0 @@
1
- import { html, LitElement } from "lit";
2
- import { customElement } from "lit/decorators.js";
3
- import { DOCS_MOCK_GEO_SERVICE } from "../mock-api/urls";
4
-
5
- import "../../core/components/ui/form/input-autocomplete/input-autocomplete";
6
- import "../../core/components/ui/menu/menu-item";
7
-
8
- type CommuneRow = { nom: string; code: string };
9
-
10
- /** Ligne suggestion : pas de radio/name (évite d'écrire dans le form au render). */
11
- const communeItem =
12
- (valueKey: "nom" | "code") => (item: CommuneRow) =>
13
- html`<sonic-menu-item
14
- data-autocomplete-value=${item[valueKey]}
15
- data-autocomplete-label=${item.nom}
16
- >${item.nom}</sonic-menu-item
17
- >`;
18
-
19
- @customElement("docs-input-autocomplete-basic-demo")
20
- export class DocsInputAutocompleteBasicDemo extends LitElement {
21
- private items = communeItem("nom");
22
-
23
- render() {
24
- return html`
25
- <sonic-input-autocomplete
26
- class="w-64"
27
- label="Ville"
28
- formDataProvider="autoComplete-example-base"
29
- name="nom"
30
- placeholder="Paris, Lyon, Tours, ..."
31
- serviceURL=${DOCS_MOCK_GEO_SERVICE}
32
- dataProviderExpression="communes?limit=5"
33
- .items=${this.items}
34
- ></sonic-input-autocomplete>
35
- `;
36
- }
37
- }
38
-
39
- @customElement("docs-input-autocomplete-code-demo")
40
- export class DocsInputAutocompleteCodeDemo extends LitElement {
41
- private items = communeItem("code");
42
-
43
- render() {
44
- return html`
45
- <sonic-input-autocomplete
46
- class="w-64"
47
- label="Ville (code INSEE)"
48
- formDataProvider="autoComplete-example"
49
- name="code"
50
- value="13055"
51
- placeholder="Paris, Lyon, Tours, ..."
52
- serviceURL=${DOCS_MOCK_GEO_SERVICE}
53
- dataProviderExpression="communes?limit=5"
54
- searchParameter="nom"
55
- .items=${this.items}
56
- ></sonic-input-autocomplete>
57
- `;
58
- }
59
- }
60
-
61
- @customElement("docs-input-autocomplete-select-demo")
62
- export class DocsInputAutocompleteSelectDemo extends LitElement {
63
- private items = communeItem("code");
64
-
65
- render() {
66
- return html`
67
- <sonic-input-autocomplete
68
- select
69
- class="w-64"
70
- label="Ville (select)"
71
- formDataProvider="autoComplete-example2"
72
- name="code"
73
- value="69123"
74
- placeholder="Paris, Lyon, Tours, ..."
75
- serviceURL=${DOCS_MOCK_GEO_SERVICE}
76
- dataProviderExpression="communes?limit=5"
77
- searchParameter="nom"
78
- .items=${this.items}
79
- ></sonic-input-autocomplete>
80
- `;
81
- }
82
- }
83
-
84
- @customElement("docs-input-autocomplete-keyboard-demo")
85
- export class DocsInputAutocompleteKeyboardDemo extends LitElement {
86
- private items = (item: CommuneRow) =>
87
- html`<sonic-menu-item
88
- data-keyboard-nav="nav-autocomplete"
89
- data-autocomplete-value=${item.nom}
90
- data-autocomplete-label=${item.nom}
91
- >${item.nom}</sonic-menu-item
92
- >`;
93
-
94
- render() {
95
- return html`
96
- <sonic-input-autocomplete
97
- class="w-64"
98
- label="Ville"
99
- formDataProvider="autoComplete-example-keyboard"
100
- name="nom"
101
- data-keyboard-nav="nav-autocomplete"
102
- placeholder="Paris, Lyon, Tours, ..."
103
- serviceURL=${DOCS_MOCK_GEO_SERVICE}
104
- dataProviderExpression="communes?limit=60"
105
- minSearchLength="1"
106
- .items=${this.items}
107
- ></sonic-input-autocomplete>
108
- `;
109
- }
110
- }
@@ -1,297 +0,0 @@
1
- import { html, LitElement, nothing } from "lit";
2
- import { customElement, property, state } from "lit/decorators.js";
3
- import {
4
- ancestorAttribute,
5
- subscribe,
6
- } from "@supersoniks/concorde/core/decorators/Subscriber";
7
- import { DataProviderKey } from "@supersoniks/concorde/core/utils/dataProviderKey";
8
- import { DOCS_MOCK_JOKES_SERVICE } from "../mock-api/urls";
9
- import {
10
- docsJokeCheckboxFilterKey,
11
- docsJokeInputFilterKey,
12
- docsJokeRadioFilterKey,
13
- docsJokeSelectFilterKey,
14
- docsJokeSwitchFilterKey,
15
- } from "./docs-provider-keys";
16
- import { tailwind } from "../tailwind";
17
-
18
- import "../../core/components/functional/queue/queue";
19
- import "../../core/components/ui/form/input/input";
20
- import "../../core/components/ui/form/select/select";
21
- import "../../core/components/ui/form/checkbox/checkbox";
22
- import "../../core/components/ui/form/radio/radio";
23
- import "../../core/components/ui/form/switch/switch";
24
-
25
- type JokeRow = {
26
- joke: string;
27
- setup?: string;
28
- delivery?: string;
29
- };
30
-
31
- const jokeRowKey = new DataProviderKey<
32
- JokeRow,
33
- { dataProvider: string | null }
34
- >("${dataProvider}");
35
-
36
- const filterFieldKey = new DataProviderKey<
37
- string,
38
- { filterProvider: string; field: string }
39
- >("${filterProvider}.${field}");
40
-
41
- @customElement("docs-joke-item")
42
- export class DocsJokeItem extends LitElement {
43
- static styles = [tailwind];
44
-
45
- @ancestorAttribute("dataProvider")
46
- dataProvider: string | null = null;
47
-
48
- @subscribe(jokeRowKey)
49
- @state()
50
- row: JokeRow | null = null;
51
-
52
- render() {
53
- const r = this.row;
54
- if (!r) return nothing;
55
- return html`
56
- <div
57
- class="space-y-1 border-0 border-b border-dotted border-neutral-300 py-3"
58
- >
59
- <div>${r.joke}</div>
60
- ${r.setup
61
- ? html`<div class="text-sm text-neutral-500">${r.setup}</div>`
62
- : nothing}
63
- ${r.delivery
64
- ? html`<div class="text-sm text-neutral-500">${r.delivery}</div>`
65
- : nothing}
66
- </div>
67
- `;
68
- }
69
- }
70
-
71
- @customElement("docs-joke-filter-caption")
72
- export class DocsJokeFilterCaption extends LitElement {
73
- @property() filterProvider = "";
74
- @property() field = "";
75
- @property() label = "";
76
-
77
- @subscribe(filterFieldKey)
78
- @state()
79
- value = "";
80
-
81
- render() {
82
- return html`
83
- <p class="my-4 block text-xl font-bold">
84
- ${this.label} « <span class="text-info">${this.value || "…"}</span> » :
85
- </p>
86
- `;
87
- }
88
- }
89
-
90
- @customElement("docs-joke-queue")
91
- export class DocsJokeQueue extends LitElement {
92
- @property() filterProvider = "";
93
- @property() expression = "joke/Any?amount=10&lang=fr";
94
-
95
- private jokeItem = () => html`<docs-joke-item></docs-joke-item>`;
96
-
97
- render() {
98
- return html`
99
- <sonic-queue
100
- lazyload
101
- dataProviderExpression=${this.expression}
102
- dataFilterProvider=${this.filterProvider}
103
- serviceURL=${DOCS_MOCK_JOKES_SERVICE}
104
- key="jokes"
105
- .items=${this.jokeItem}
106
- ></sonic-queue>
107
- `;
108
- }
109
- }
110
-
111
- @customElement("docs-joke-search-demo")
112
- export class DocsJokeSearchDemo extends LitElement {
113
- static styles = [tailwind];
114
-
115
- render() {
116
- return html`
117
- <sonic-input
118
- formDataProvider=${docsJokeInputFilterKey.path}
119
- name="contains"
120
- value="chien"
121
- class="mb-4"
122
- ></sonic-input>
123
- <docs-joke-filter-caption
124
- filterProvider=${docsJokeInputFilterKey.path}
125
- field="contains"
126
- label="Blagues trouvées pour"
127
- ></docs-joke-filter-caption>
128
- <docs-joke-queue
129
- filterProvider=${docsJokeInputFilterKey.path}
130
- expression="joke/Any?amount=10&lang=fr"
131
- ></docs-joke-queue>
132
- `;
133
- }
134
- }
135
-
136
- @customElement("docs-joke-lang-demo")
137
- export class DocsJokeLangDemo extends LitElement {
138
- static styles = [tailwind];
139
-
140
- render() {
141
- return html`
142
- <sonic-select
143
- formDataProvider=${docsJokeSelectFilterKey.path}
144
- name="lang"
145
- value="fr"
146
- >
147
- <option value="fr">fr</option>
148
- <option value="en">en</option>
149
- </sonic-select>
150
- <docs-joke-filter-caption
151
- filterProvider=${docsJokeSelectFilterKey.path}
152
- field="lang"
153
- label="Blagues pour la langue"
154
- ></docs-joke-filter-caption>
155
- <docs-joke-queue
156
- filterProvider=${docsJokeSelectFilterKey.path}
157
- expression="joke/Any?amount=10"
158
- ></docs-joke-queue>
159
- `;
160
- }
161
- }
162
-
163
- const jokeQueueRow = (row: JokeRow) => html`
164
- <div class="border-0 border-b border-neutral-300 py-3 leading-tight">
165
- <div>${row.joke}</div>
166
- ${row.setup ? html`<div class="font-bold">${row.setup}</div>` : nothing}
167
- ${row.delivery ? html`<div>${row.delivery}</div>` : nothing}
168
- </div>
169
- `;
170
-
171
- const BLACKLIST_CONTROLS = html`
172
- <sonic-checkbox name="blacklistFlags" value="nsfw">nsfw</sonic-checkbox>
173
- <sonic-checkbox name="blacklistFlags" value="religious">religious</sonic-checkbox>
174
- <sonic-checkbox name="blacklistFlags" value="political">political</sonic-checkbox>
175
- <sonic-checkbox name="blacklistFlags" value="racist" checked>racist</sonic-checkbox>
176
- <sonic-checkbox name="blacklistFlags" value="sexist" checked>sexist</sonic-checkbox>
177
- <sonic-checkbox name="blacklistFlags" value="explicit">explicit</sonic-checkbox>
178
- `;
179
-
180
- /** Checkbox — « Remove following jokes » (blacklistFlags → mock API). */
181
- @customElement("docs-joke-blacklist-demo")
182
- export class DocsJokeBlacklistDemo extends LitElement {
183
- static styles = [tailwind];
184
-
185
- private items = jokeQueueRow;
186
-
187
- render() {
188
- return html`
189
- <p class="my-4 block text-xl font-bold">Remove following jokes :</p>
190
- <div
191
- formDataProvider=${docsJokeCheckboxFilterKey.path}
192
- class="mb-3 grid grid-cols-2 gap-x-6 gap-y-2 lg:grid-cols-3"
193
- >
194
- ${BLACKLIST_CONTROLS}
195
- </div>
196
- <sonic-queue
197
- lazyload
198
- dataProviderExpression="joke/Any?offset=$offset&limit=$limit&lang=en"
199
- dataFilterProvider=${docsJokeCheckboxFilterKey.path}
200
- serviceURL=${DOCS_MOCK_JOKES_SERVICE}
201
- key="jokes"
202
- limit="5"
203
- class="grid max-h-96 overflow-y-auto"
204
- .items=${this.items}
205
- debug
206
- ></sonic-queue>
207
- `;
208
- }
209
- }
210
-
211
- /** Radio group — same API, single `blacklistFlags` value. */
212
- @customElement("docs-joke-blacklist-radio-demo")
213
- export class DocsJokeBlacklistRadioDemo extends LitElement {
214
- static styles = [tailwind];
215
-
216
- private items = jokeQueueRow;
217
-
218
- render() {
219
- return html`
220
- <p class="my-4 block text-xl font-bold">Remove following jokes :</p>
221
- <div
222
- formDataProvider=${docsJokeRadioFilterKey.path}
223
- class="mb-3 grid grid-cols-2 gap-x-6 gap-y-2 lg:grid-cols-3"
224
- >
225
- <sonic-radio name="blacklistFlags" value="nsfw">nsfw</sonic-radio>
226
- <sonic-radio name="blacklistFlags" value="religious"
227
- >religious</sonic-radio
228
- >
229
- <sonic-radio name="blacklistFlags" value="political"
230
- >political</sonic-radio
231
- >
232
- <sonic-radio name="blacklistFlags" value="racist" checked
233
- >racist</sonic-radio
234
- >
235
- <sonic-radio name="blacklistFlags" value="sexist">sexist</sonic-radio>
236
- <sonic-radio name="blacklistFlags" value="explicit"
237
- >explicit</sonic-radio
238
- >
239
- </div>
240
- <sonic-queue
241
- lazyload
242
- dataProviderExpression="joke/Any?offset=$offset&limit=$limit&lang=en"
243
- dataFilterProvider="jokeFilterRadio"
244
- serviceURL=${DOCS_MOCK_JOKES_SERVICE}
245
- key="jokes"
246
- limit="5"
247
- class="grid max-h-96 overflow-y-auto"
248
- .items=${this.items}
249
- debug
250
- ></sonic-queue>
251
- `;
252
- }
253
- }
254
-
255
- /** Switch — same blacklist filter. */
256
- @customElement("docs-joke-blacklist-switch-demo")
257
- export class DocsJokeBlacklistSwitchDemo extends LitElement {
258
- static styles = [tailwind];
259
-
260
- private items = jokeQueueRow;
261
-
262
- render() {
263
- return html`
264
- <p class="my-4 block text-xl font-bold">Remove following jokes :</p>
265
- <div
266
- formDataProvider=${docsJokeSwitchFilterKey.path}
267
- class="mb-3 grid grid-cols-2 gap-x-6 gap-y-2 lg:grid-cols-3"
268
- >
269
- <sonic-switch name="blacklistFlags" value="nsfw">nsfw</sonic-switch>
270
- <sonic-switch name="blacklistFlags" value="religious"
271
- >religious</sonic-switch
272
- >
273
- <sonic-switch name="blacklistFlags" value="political"
274
- >political</sonic-switch
275
- >
276
- <sonic-switch name="blacklistFlags" value="racist" checked
277
- >racist</sonic-switch
278
- >
279
- <sonic-switch name="blacklistFlags" value="sexist">sexist</sonic-switch>
280
- <sonic-switch name="blacklistFlags" value="explicit"
281
- >explicit</sonic-switch
282
- >
283
- </div>
284
- <sonic-queue
285
- lazyload
286
- dataProviderExpression="joke/Any?offset=$offset&limit=$limit&lang=en"
287
- dataFilterProvider=${docsJokeSwitchFilterKey.path}
288
- serviceURL=${DOCS_MOCK_JOKES_SERVICE}
289
- key="jokes"
290
- limit="5"
291
- class="grid max-h-96 overflow-y-auto"
292
- .items=${this.items}
293
- debug
294
- ></sonic-queue>
295
- `;
296
- }
297
- }