@supersoniks/concorde 5.1.1 → 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 (438) 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/.tmp-cem/custom-elements.json +503 -503
  6. package/PLAN-DOCS-AGENTS.md +80 -0
  7. package/README.md +3 -3
  8. package/ai/skills/concorde/SKILL.md +1 -1
  9. package/ai/skills/concorde-get-set-dp/SKILL.md +3 -3
  10. package/ai/skills/concorde-theme/SKILL.md +1 -1
  11. package/build-infos.json +1 -1
  12. package/concorde-core.bundle.js +1 -1
  13. package/concorde-core.es.js +1 -1
  14. package/dist/concorde-core.bundle.js +1 -1
  15. package/dist/concorde-core.es.js +1 -1
  16. package/docs/.htaccess +75 -0
  17. package/docs/404.html +15 -0
  18. package/docs/404.md +5 -0
  19. package/docs/assets/{index-Bb-_LRyY.js → index-BgG6FFPt.js} +2582 -3097
  20. package/docs/assets/index-x89XINSG.css +1 -0
  21. package/docs/core/components/functional/date/date.html +211 -0
  22. package/docs/core/components/functional/date/date.md +150 -0
  23. package/docs/core/components/functional/fetch/fetch.html +180 -0
  24. package/docs/core/components/functional/fetch/fetch.md +108 -0
  25. package/docs/core/components/functional/if/if.html +65 -0
  26. package/docs/core/components/functional/if/if.md +34 -0
  27. package/docs/core/components/functional/jsonata/jsonata.html +110 -0
  28. package/docs/core/components/functional/jsonata/jsonata.md +61 -0
  29. package/docs/core/components/functional/list/list.html +198 -0
  30. package/docs/core/components/functional/list/list.md +121 -0
  31. package/docs/core/components/functional/mix/mix.html +78 -0
  32. package/docs/core/components/functional/mix/mix.md +46 -0
  33. package/docs/core/components/functional/queue/queue.html +155 -0
  34. package/docs/core/components/functional/queue/queue.md +51 -0
  35. package/docs/core/components/functional/router/router.html +154 -0
  36. package/docs/core/components/functional/router/router.md +93 -0
  37. package/docs/core/components/functional/sdui/sdui-extension-points.html +127 -0
  38. package/docs/core/components/functional/sdui/sdui-extension-points.md +94 -0
  39. package/docs/core/components/functional/sdui/sdui.html +397 -0
  40. package/docs/core/components/functional/sdui/sdui.md +307 -0
  41. package/docs/core/components/functional/states/states.html +141 -0
  42. package/docs/core/components/functional/states/states.md +112 -0
  43. package/docs/core/components/functional/submit/submit.html +178 -0
  44. package/docs/core/components/functional/submit/submit.md +106 -0
  45. package/docs/core/components/functional/subscriber/subscriber.html +68 -0
  46. package/docs/core/components/functional/subscriber/subscriber.md +91 -0
  47. package/docs/core/components/functional/translation/translation.html +60 -0
  48. package/docs/core/components/functional/translation/translation.md +38 -0
  49. package/docs/core/components/functional/value/value.html +81 -0
  50. package/docs/core/components/functional/value/value.md +47 -0
  51. package/docs/core/components/ui/alert/alert.html +201 -0
  52. package/docs/core/components/ui/alert/alert.md +186 -0
  53. package/docs/core/components/ui/alert-messages/alert-messages.html +132 -0
  54. package/docs/core/components/ui/alert-messages/alert-messages.md +85 -0
  55. package/docs/core/components/ui/badge/badge.html +197 -0
  56. package/docs/core/components/ui/badge/badge.md +181 -0
  57. package/docs/core/components/ui/button/button.html +309 -0
  58. package/docs/core/components/ui/button/button.md +216 -0
  59. package/docs/core/components/ui/captcha/captcha.html +80 -0
  60. package/docs/core/components/ui/captcha/captcha.md +56 -0
  61. package/docs/core/components/ui/card/card.html +254 -0
  62. package/docs/core/components/ui/card/card.md +215 -0
  63. package/docs/core/components/ui/divider/divider.html +144 -0
  64. package/docs/core/components/ui/divider/divider.md +126 -0
  65. package/docs/core/components/ui/form/checkbox/checkbox.html +200 -0
  66. package/docs/core/components/ui/form/checkbox/checkbox.md +125 -0
  67. package/docs/core/components/ui/form/fieldset/fieldset.html +238 -0
  68. package/docs/core/components/ui/form/fieldset/fieldset.md +161 -0
  69. package/docs/core/components/ui/form/form-actions/form-actions.html +122 -0
  70. package/docs/core/components/ui/form/form-actions/form-actions.md +98 -0
  71. package/docs/core/components/ui/form/form-layout/form-layout.html +115 -0
  72. package/docs/core/components/ui/form/form-layout/form-layout.md +109 -0
  73. package/docs/core/components/ui/form/input/input.html +235 -0
  74. package/docs/core/components/ui/form/input/input.md +142 -0
  75. package/docs/core/components/ui/form/radio/radio.html +144 -0
  76. package/docs/core/components/ui/form/radio/radio.md +78 -0
  77. package/docs/core/components/ui/form/select/select.html +178 -0
  78. package/docs/core/components/ui/form/select/select.md +86 -0
  79. package/docs/core/components/ui/form/switch/switch.html +146 -0
  80. package/docs/core/components/ui/form/switch/switch.md +80 -0
  81. package/docs/core/components/ui/form/textarea/textarea.html +162 -0
  82. package/docs/core/components/ui/form/textarea/textarea.md +82 -0
  83. package/docs/core/components/ui/group/group.html +113 -0
  84. package/docs/core/components/ui/group/group.md +77 -0
  85. package/docs/core/components/ui/icon/icon.html +223 -0
  86. package/docs/core/components/ui/icon/icon.md +214 -0
  87. package/docs/core/components/ui/image/image.html +194 -0
  88. package/docs/core/components/ui/image/image.md +167 -0
  89. package/docs/core/components/ui/link/link.html +101 -0
  90. package/docs/core/components/ui/link/link.md +81 -0
  91. package/docs/core/components/ui/loader/loader.html +114 -0
  92. package/docs/core/components/ui/loader/loader.md +87 -0
  93. package/docs/core/components/ui/menu/menu.html +395 -0
  94. package/docs/core/components/ui/menu/menu.md +370 -0
  95. package/docs/core/components/ui/modal/modal.html +324 -0
  96. package/docs/core/components/ui/modal/modal.md +211 -0
  97. package/docs/core/components/ui/pop/pop.html +250 -0
  98. package/docs/core/components/ui/pop/pop.md +216 -0
  99. package/docs/core/components/ui/progress/progress.html +132 -0
  100. package/docs/core/components/ui/progress/progress.md +109 -0
  101. package/docs/core/components/ui/table/table.html +333 -0
  102. package/docs/core/components/ui/table/table.md +267 -0
  103. package/docs/core/components/ui/theme/theme.html +116 -0
  104. package/docs/core/components/ui/theme/theme.md +97 -0
  105. package/docs/core/components/ui/toast/toast.html +185 -0
  106. package/docs/core/components/ui/toast/toast.md +147 -0
  107. package/docs/core/components/ui/tooltip/tooltip.html +112 -0
  108. package/docs/core/components/ui/tooltip/tooltip.md +89 -0
  109. package/docs/docs/decorators/ancestor-attribute.html +71 -0
  110. package/docs/docs/decorators/ancestor-attribute.md +59 -0
  111. package/docs/docs/decorators/auto-subscribe.html +61 -0
  112. package/docs/docs/decorators/auto-subscribe.md +40 -0
  113. package/docs/docs/decorators/bind.html +86 -0
  114. package/docs/docs/decorators/bind.md +77 -0
  115. package/docs/docs/decorators/get.html +166 -0
  116. package/docs/docs/decorators/get.md +160 -0
  117. package/docs/docs/decorators/handle.html +139 -0
  118. package/docs/docs/decorators/handle.md +119 -0
  119. package/docs/docs/decorators/on-assign.html +72 -0
  120. package/docs/docs/decorators/on-assign.md +63 -0
  121. package/docs/docs/decorators/patch.html +76 -0
  122. package/docs/docs/decorators/patch.md +44 -0
  123. package/docs/docs/decorators/post.html +150 -0
  124. package/docs/docs/decorators/post.md +134 -0
  125. package/docs/docs/decorators/publish.html +74 -0
  126. package/docs/docs/decorators/publish.md +56 -0
  127. package/docs/docs/decorators/put.html +83 -0
  128. package/docs/docs/decorators/put.md +51 -0
  129. package/docs/docs/decorators/subscribe.html +91 -0
  130. package/docs/docs/decorators/subscribe.md +87 -0
  131. package/docs/docs/decorators/wait-for-ancestors.html +82 -0
  132. package/docs/docs/decorators/wait-for-ancestors.md +76 -0
  133. package/docs/docs/directives/sub.html +79 -0
  134. package/docs/docs/directives/sub.md +75 -0
  135. package/docs/docs/directives/t.html +91 -0
  136. package/docs/docs/directives/t.md +73 -0
  137. package/docs/docs/getting-started/ai-agents.html +174 -0
  138. package/{src/docs/_getting-started → docs/docs/getting-started}/ai-agents.md +3 -3
  139. package/docs/docs/getting-started/components.html +27 -0
  140. package/docs/docs/getting-started/create-a-component.html +108 -0
  141. package/{src/docs/_getting-started → docs/docs/getting-started}/create-a-component.md +3 -6
  142. package/docs/docs/getting-started/dataFlow.html +174 -0
  143. package/{src/docs/_core-concept → docs/docs/getting-started}/dataFlow.md +17 -18
  144. package/docs/docs/getting-started/installation.html +69 -0
  145. package/docs/docs/getting-started/installation.md +36 -0
  146. package/docs/docs/getting-started/my-first-component.html +180 -0
  147. package/{src/docs/_getting-started → docs/docs/getting-started}/my-first-component.md +5 -14
  148. package/docs/docs/getting-started/start.html +47 -0
  149. package/{src/docs/_getting-started → docs/docs/getting-started}/start.md +1 -13
  150. package/docs/docs/getting-started/theming.html +334 -0
  151. package/docs/docs/index.html +99 -0
  152. package/docs/docs/misc/api-configuration.html +149 -0
  153. package/{src/docs/_misc → docs/docs/misc}/api-configuration.md +10 -12
  154. package/docs/docs/misc/dataProviderKey.html +136 -0
  155. package/{src/docs/_misc → docs/docs/misc}/dataProviderKey.md +4 -4
  156. package/docs/docs/misc/docs-mock-api.html +155 -0
  157. package/{src/docs/_misc → docs/docs/misc}/docs-mock-api.md +12 -13
  158. package/docs/docs/misc/dynamic-path.html +181 -0
  159. package/{src/docs/_misc → docs/docs/misc}/dynamic-path.md +8 -8
  160. package/docs/docs/misc/endpoint.html +51 -0
  161. package/{src/docs/_misc → docs/docs/misc}/endpoint.md +8 -8
  162. package/docs/docs/misc/html-integration.html +45 -0
  163. package/{src/docs/_misc → docs/docs/misc}/html-integration.md +4 -5
  164. package/docs/docs-mock-api-sw.js +58 -223
  165. package/docs/docs-mock-api-sw.js.map +4 -4
  166. package/docs/hubs/decorators.html +443 -0
  167. package/docs/hubs/form-components.html +404 -0
  168. package/docs/hubs/remote-data.html +371 -0
  169. package/docs/img/archive/concorde-001-2cv.webp +0 -0
  170. package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  171. package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
  172. package/docs/img/archive/credits.json +28 -0
  173. package/docs/img/concorde/plane_01.jpg +0 -0
  174. package/docs/img/concorde/plane_02.jpg +0 -0
  175. package/docs/img/concorde/plane_03.jpg +0 -0
  176. package/docs/img/concorde/plane_04.jpg +0 -0
  177. package/docs/img/concorde/plane_05.jpg +0 -0
  178. package/docs/img/concorde/plane_06.jpg +0 -0
  179. package/docs/img/concorde/plane_07.jpg +0 -0
  180. package/docs/img/concorde/plane_08.jpg +0 -0
  181. package/docs/img/concorde/plane_09.jpg +0 -0
  182. package/docs/img/concorde/plane_10.jpg +0 -0
  183. package/docs/img/concorde/plane_11.jpg +0 -0
  184. package/docs/img/concorde/plane_12.jpg +0 -0
  185. package/docs/img/concorde/plane_13.jpg +0 -0
  186. package/docs/index.html +95 -68
  187. package/docs/index.md +22 -0
  188. package/docs/llms-full.txt +5795 -0
  189. package/docs/llms.txt +106 -0
  190. package/docs/robots.txt +11 -10
  191. package/docs/sitemap.xml +237 -0
  192. package/docs/src/core/components/functional/date/date.md +150 -0
  193. package/docs/src/core/components/functional/fetch/fetch.md +108 -0
  194. package/docs/src/core/components/functional/if/if.md +34 -0
  195. package/docs/src/core/components/functional/jsonata/jsonata.md +61 -0
  196. package/docs/src/core/components/functional/list/list.md +121 -0
  197. package/docs/src/core/components/functional/mix/mix.md +46 -0
  198. package/docs/src/core/components/functional/queue/queue.md +51 -0
  199. package/docs/src/core/components/functional/router/router.md +93 -0
  200. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
  201. package/docs/src/core/components/functional/sdui/component-catalog.json +3103 -0
  202. package/docs/src/core/components/functional/sdui/default-library.json +108 -0
  203. package/docs/src/core/components/functional/sdui/example.json +32 -0
  204. package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
  205. package/docs/src/core/components/functional/sdui/sdui.md +307 -0
  206. package/docs/src/core/components/functional/states/states.md +112 -0
  207. package/docs/src/core/components/functional/submit/submit.md +106 -0
  208. package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
  209. package/docs/src/core/components/functional/translation/translation.md +38 -0
  210. package/docs/src/core/components/functional/value/value.md +47 -0
  211. package/docs/src/core/components/ui/alert/alert.md +186 -0
  212. package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
  213. package/docs/src/core/components/ui/badge/badge.md +181 -0
  214. package/docs/src/core/components/ui/button/button.md +216 -0
  215. package/docs/src/core/components/ui/captcha/captcha.md +56 -0
  216. package/docs/src/core/components/ui/card/card.md +215 -0
  217. package/docs/src/core/components/ui/divider/divider.md +126 -0
  218. package/docs/src/core/components/ui/form/checkbox/checkbox.md +125 -0
  219. package/docs/src/core/components/ui/form/fieldset/fieldset.md +161 -0
  220. package/docs/src/core/components/ui/form/form-actions/form-actions.md +98 -0
  221. package/docs/src/core/components/ui/form/form-layout/form-layout.md +109 -0
  222. package/docs/src/core/components/ui/form/input/input.md +142 -0
  223. package/docs/src/core/components/ui/form/radio/radio.md +78 -0
  224. package/docs/src/core/components/ui/form/select/select.md +86 -0
  225. package/docs/src/core/components/ui/form/switch/switch.md +80 -0
  226. package/docs/src/core/components/ui/form/textarea/textarea.md +82 -0
  227. package/docs/src/core/components/ui/group/group.md +77 -0
  228. package/docs/src/core/components/ui/icon/icon.md +214 -0
  229. package/docs/src/core/components/ui/icon/icons.json +1 -0
  230. package/docs/src/core/components/ui/image/image.md +167 -0
  231. package/docs/src/core/components/ui/link/link.md +81 -0
  232. package/docs/src/core/components/ui/loader/loader.md +87 -0
  233. package/docs/src/core/components/ui/menu/menu.md +370 -0
  234. package/docs/src/core/components/ui/modal/modal.md +211 -0
  235. package/docs/src/core/components/ui/pop/pop.md +216 -0
  236. package/docs/src/core/components/ui/progress/progress.md +109 -0
  237. package/docs/src/core/components/ui/table/table.md +267 -0
  238. package/docs/src/core/components/ui/theme/theme.md +97 -0
  239. package/docs/src/core/components/ui/toast/toast.md +147 -0
  240. package/docs/src/core/components/ui/tooltip/tooltip.md +89 -0
  241. package/docs/src/docs/decorators/ancestor-attribute.md +59 -0
  242. package/docs/src/docs/decorators/auto-subscribe.md +40 -0
  243. package/docs/src/docs/decorators/bind.md +77 -0
  244. package/docs/src/docs/decorators/get.md +160 -0
  245. package/docs/src/docs/decorators/handle.md +119 -0
  246. package/docs/src/docs/decorators/on-assign.md +63 -0
  247. package/docs/src/docs/decorators/patch.md +44 -0
  248. package/docs/src/docs/decorators/post.md +134 -0
  249. package/docs/src/docs/decorators/publish.md +56 -0
  250. package/docs/src/docs/decorators/put.md +51 -0
  251. package/docs/src/docs/decorators/subscribe.md +87 -0
  252. package/docs/src/docs/decorators/wait-for-ancestors.md +76 -0
  253. package/docs/src/docs/directives/sub.md +75 -0
  254. package/docs/src/docs/directives/t.md +73 -0
  255. package/docs/src/docs/getting-started/ai-agents.md +76 -0
  256. package/docs/src/docs/getting-started/components.md +5 -0
  257. package/docs/src/docs/getting-started/create-a-component.md +136 -0
  258. package/docs/src/docs/getting-started/dataFlow.md +87 -0
  259. package/docs/src/docs/getting-started/installation.md +36 -0
  260. package/docs/src/docs/getting-started/my-first-component.md +227 -0
  261. package/docs/src/docs/getting-started/start.md +35 -0
  262. package/docs/src/docs/getting-started/theming.md +253 -0
  263. package/docs/src/docs/misc/api-configuration.md +79 -0
  264. package/docs/src/docs/misc/dataProviderKey.md +168 -0
  265. package/docs/src/docs/misc/docs-mock-api.md +62 -0
  266. package/docs/src/docs/misc/dynamic-path.md +71 -0
  267. package/docs/src/docs/misc/endpoint.md +45 -0
  268. package/docs/src/docs/misc/html-integration.md +14 -0
  269. package/docs/src/docs/search/docs-search.json +10287 -0
  270. package/docs/src/tag-list.json +1 -0
  271. package/docs/src/tsconfig-model.json +23 -0
  272. package/docs/src/tsconfig.json +1353 -0
  273. package/index.html +68 -5
  274. package/package.json +1 -1
  275. package/public/docs-mock-api-sw.js +58 -223
  276. package/public/docs-mock-api-sw.js.map +4 -4
  277. package/public/img/concorde/plane_01.jpg +0 -0
  278. package/public/img/concorde/plane_02.jpg +0 -0
  279. package/public/img/concorde/plane_03.jpg +0 -0
  280. package/public/img/concorde/plane_04.jpg +0 -0
  281. package/public/img/concorde/plane_05.jpg +0 -0
  282. package/public/img/concorde/plane_06.jpg +0 -0
  283. package/public/img/concorde/plane_07.jpg +0 -0
  284. package/public/img/concorde/plane_08.jpg +0 -0
  285. package/public/img/concorde/plane_09.jpg +0 -0
  286. package/public/img/concorde/plane_10.jpg +0 -0
  287. package/public/img/concorde/plane_11.jpg +0 -0
  288. package/public/img/concorde/plane_12.jpg +0 -0
  289. package/public/img/concorde/plane_13.jpg +0 -0
  290. package/public/robots.txt +11 -10
  291. package/scripts/docs-markdown-vite-plugin.ts +37 -0
  292. package/scripts/docs-public-url.mjs +50 -0
  293. package/scripts/docs.htaccess +75 -0
  294. package/scripts/generate-crawl-docs.mjs +207 -116
  295. package/scripts/generate-crawl-docs.test.mjs +124 -0
  296. package/scripts/post-build-docs.js +34 -50
  297. package/src/core/components/functional/date/date.md +91 -231
  298. package/src/core/components/functional/fetch/fetch.md +66 -83
  299. package/src/core/components/functional/if/if.md +28 -3
  300. package/src/core/components/functional/jsonata/jsonata.md +42 -37
  301. package/src/core/components/functional/list/list.md +99 -43
  302. package/src/core/components/functional/mix/mix.md +31 -26
  303. package/src/core/components/functional/queue/queue.demo.ts +10 -7
  304. package/src/core/components/functional/queue/queue.md +40 -61
  305. package/src/core/components/functional/router/router.demo.ts +16 -16
  306. package/src/core/components/functional/router/router.md +64 -65
  307. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  308. package/src/core/components/functional/sdui/component-catalog.json +1 -1
  309. package/src/core/components/functional/sdui/example.json +19 -86
  310. package/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
  311. package/src/core/components/functional/sdui/sdui.md +187 -358
  312. package/src/core/components/functional/states/states.demo.ts +21 -22
  313. package/src/core/components/functional/states/states.md +86 -61
  314. package/src/core/components/functional/states/states.ts +1 -1
  315. package/src/core/components/functional/submit/submit.md +64 -72
  316. package/src/core/components/functional/translation/translation.md +38 -0
  317. package/src/core/components/functional/value/value.md +34 -22
  318. package/src/core/components/ui/alert/alert.md +48 -58
  319. package/src/core/components/ui/badge/badge.md +27 -34
  320. package/src/core/components/ui/button/button.md +139 -106
  321. package/src/core/components/ui/captcha/captcha.md +17 -32
  322. package/src/core/components/ui/card/card.md +6 -6
  323. package/src/core/components/ui/divider/divider.md +8 -11
  324. package/src/core/components/ui/form/checkbox/checkbox.md +90 -42
  325. package/src/core/components/ui/form/fieldset/fieldset.md +31 -75
  326. package/src/core/components/ui/form/form-actions/form-actions.md +14 -16
  327. package/src/core/components/ui/form/form-layout/form-layout.md +19 -29
  328. package/src/core/components/ui/form/input/input.md +95 -95
  329. package/src/core/components/ui/form/radio/radio.md +55 -34
  330. package/src/core/components/ui/form/select/select.md +60 -45
  331. package/src/core/components/ui/form/switch/switch.md +57 -34
  332. package/src/core/components/ui/form/textarea/textarea.md +55 -38
  333. package/src/core/components/ui/group/group.md +35 -33
  334. package/src/core/components/ui/icon/icon.md +4 -4
  335. package/src/core/components/ui/image/image.md +41 -107
  336. package/src/core/components/ui/link/link.md +6 -6
  337. package/src/core/components/ui/loader/loader.md +30 -55
  338. package/src/core/components/ui/menu/menu.md +27 -27
  339. package/src/core/components/ui/modal/modal.md +72 -96
  340. package/src/core/components/ui/pop/pop.md +80 -158
  341. package/src/core/components/ui/progress/progress.md +2 -2
  342. package/src/core/components/ui/table/table.md +91 -255
  343. package/src/core/components/ui/theme/theme.md +11 -36
  344. package/src/core/components/ui/toast/toast.md +48 -117
  345. package/src/core/components/ui/tooltip/tooltip.md +27 -62
  346. package/src/core/utils/LocationHandler.spec.ts +80 -0
  347. package/src/core/utils/LocationHandler.ts +5 -9
  348. package/src/docs/components/docs-demo-sources.ts +55 -140
  349. package/src/docs/components/docs-lit-demo.ts +1 -3
  350. package/src/docs/components/docs-source-link.ts +0 -82
  351. package/src/docs/decorators/ancestor-attribute.md +59 -0
  352. package/src/docs/decorators/auto-subscribe.md +40 -0
  353. package/src/docs/decorators/bind.md +77 -0
  354. package/src/docs/decorators/get.md +160 -0
  355. package/src/docs/decorators/handle.md +119 -0
  356. package/src/docs/decorators/on-assign.md +63 -0
  357. package/src/docs/decorators/patch.md +44 -0
  358. package/src/docs/decorators/post.md +134 -0
  359. package/src/docs/decorators/publish.md +56 -0
  360. package/src/docs/decorators/put.md +51 -0
  361. package/src/docs/decorators/subscribe.md +87 -0
  362. package/src/docs/decorators/wait-for-ancestors.md +76 -0
  363. package/src/docs/directives/sub.md +75 -0
  364. package/src/docs/directives/t.md +73 -0
  365. package/src/docs/docs-location.spec.ts +46 -0
  366. package/src/docs/docs-location.ts +123 -32
  367. package/src/docs/docs.ts +1 -2
  368. package/src/docs/example/decorators-demo-bind-demos.ts +81 -116
  369. package/src/docs/example/decorators-demo-geo.ts +30 -19
  370. package/src/docs/example/decorators-demo-post.ts +88 -186
  371. package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +165 -268
  372. package/src/docs/example/decorators-demo.ts +85 -98
  373. package/src/docs/example/docs-api-config-demos.ts +19 -20
  374. package/src/docs/example/docs-flight-demos.ts +147 -0
  375. package/src/docs/example/docs-jsonata-demos.ts +52 -52
  376. package/src/docs/example/docs-list-demos.ts +43 -123
  377. package/src/docs/example/docs-provider-keys.ts +21 -28
  378. package/src/docs/example/docs-queue-demos.ts +37 -77
  379. package/src/docs/example/docs-router-demos.ts +20 -25
  380. package/src/docs/example/docs-submit-demos.ts +48 -48
  381. package/src/docs/example/docs-toggle-demos.ts +4 -3
  382. package/src/docs/getting-started/ai-agents.md +76 -0
  383. package/src/docs/getting-started/components.md +5 -0
  384. package/src/docs/getting-started/create-a-component.md +136 -0
  385. package/src/docs/getting-started/dataFlow.md +87 -0
  386. package/src/docs/getting-started/installation.md +36 -0
  387. package/src/docs/getting-started/my-first-component.md +227 -0
  388. package/src/docs/getting-started/start.md +35 -0
  389. package/src/docs/getting-started/theming.md +253 -0
  390. package/src/docs/header/header.ts +11 -6
  391. package/src/docs/home/catalog.ts +1 -1
  392. package/src/docs/home/home.ts +17 -10
  393. package/src/docs/layout.ts +12 -13
  394. package/src/docs/misc/api-configuration.md +79 -0
  395. package/src/docs/misc/dataProviderKey.md +168 -0
  396. package/src/docs/misc/docs-mock-api.md +62 -0
  397. package/src/docs/misc/dynamic-path.md +71 -0
  398. package/src/docs/misc/endpoint.md +45 -0
  399. package/src/docs/misc/html-integration.md +14 -0
  400. package/src/docs/mock-api/api-config-mock.ts +5 -0
  401. package/src/docs/mock-api/fixtures.ts +0 -278
  402. package/src/docs/mock-api/flights.ts +89 -0
  403. package/src/docs/mock-api/router.ts +3 -4
  404. package/src/docs/mock-api/urls.ts +1 -2
  405. package/src/docs/navigation/navigation.ts +82 -103
  406. package/src/docs/navigation/toc.ts +7 -4
  407. package/src/docs/search/docs-search.json +2845 -5110
  408. package/src/docs/search/markdown-renderer.ts +25 -7
  409. package/src/docs/search/page.ts +9 -6
  410. package/src/docs/search/search.ts +154 -122
  411. package/vite.config.mts +11 -2
  412. package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
  413. package/docs/assets/index-CD4WyL6o.css +0 -1
  414. package/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -29
  415. package/src/docs/_core-concept/overview.md +0 -57
  416. package/src/docs/_core-concept/subscriber.md +0 -75
  417. package/src/docs/_decorators/ancestor-attribute.md +0 -128
  418. package/src/docs/_decorators/auto-subscribe.md +0 -202
  419. package/src/docs/_decorators/bind.md +0 -167
  420. package/src/docs/_decorators/get.md +0 -162
  421. package/src/docs/_decorators/handle.md +0 -175
  422. package/src/docs/_decorators/on-assign.md +0 -390
  423. package/src/docs/_decorators/patch.md +0 -70
  424. package/src/docs/_decorators/post.md +0 -146
  425. package/src/docs/_decorators/publish.md +0 -55
  426. package/src/docs/_decorators/put.md +0 -70
  427. package/src/docs/_decorators/subscribe.md +0 -100
  428. package/src/docs/_decorators/wait-for-ancestors.md +0 -163
  429. package/src/docs/_directives/sub.md +0 -91
  430. package/src/docs/_getting-started/concorde-manual-install.md +0 -133
  431. package/src/docs/_getting-started/concorde-outside.md +0 -33
  432. package/src/docs/_getting-started/my-first-subscriber.md +0 -120
  433. package/src/docs/_getting-started/pubsub.md +0 -37
  434. package/src/docs/_misc/formelement-subscriber-removal.md +0 -115
  435. package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
  436. package/src/docs/example/docs-joke-demos.ts +0 -297
  437. /package/{src/docs/_getting-started → docs/docs/getting-started}/components.md +0 -0
  438. /package/{src/docs/_getting-started → docs/docs/getting-started}/theming.md +0 -0
@@ -1,72 +1,51 @@
1
1
  # Queue
2
2
 
3
- > **Try offline:** `serviceURL="/docs-mock-api"` — see [Local API demos](#docs/_misc/docs-mock-api.md/docs-mock-api). Row rendering: [Data flow](#docs/_core-concept/dataFlow.md/dataFlow) (`.items` property binding).
3
+ **`sonic-queue`** loads a paginated API in batches and renders each batch as an internal [List](/core/components/functional/list). Choose it over `sonic-list` for long or endless lists; the key attributes are `dataProviderExpression` · `limit` · `dataFilterProvider`.
4
4
 
5
- **sonic-queue** loads data in **batches**. Each batch is an internal [List](#core/components/functional/list/list.md/list) with its own `dataProvider` (`…/list-item/0`, `…/1`, …).
5
+ ## Lazy load
6
6
 
7
- | Mechanism | Role |
8
- |-----------|------|
9
- | **`dataProviderExpression`** | API path template; `$offset` and `$limit` are replaced per batch |
10
- | **`lazyload`** | Load the next batch when the user scrolls near the end |
11
- | **`dataFilterProvider`** | Publisher id of a form (`formDataProvider`); field values are merged into the request query string |
12
- | **`filteredFields`** | Optional list of form field names to **exclude** from the query (space-separated) — omit when every field should be sent |
13
- | **`.items`**, **`.noItems`**, **`.separator`**, **`.skeleton`** | Lit callbacks forwarded to each batch list (use the **dot** — functions are properties, not attributes) |
7
+ `dataProviderExpression` is the request path: `$offset` and `$limit` are replaced for each batch. The first batch starts at `offset` (default `0`) with `limit` rows (default `5`, at most `15`). The next batch loads when the end of the list scrolls into view, and the queue stops at the first empty batch. Put the queue in a box with a fixed height and `overflow-y-auto`, then scroll inside it.
14
8
 
15
- ## Lazy load — `$offset` and `$limit`
9
+ <docs-lit-demo for="docs-queue-geo-demo"></docs-lit-demo>
16
10
 
17
- When the expression contains **`$offset`** and **`$limit`**, the queue:
11
+ Rows come from the `.items` callback, as on [List](/core/components/functional/list); `.noItems` and `.skeleton` work the same way. Without `$offset` in the expression, the queue sends one request and behaves like a list. Set `noLazyload` to load every batch in a row without waiting for the scroll.
18
12
 
19
- 1. Fetches the first batch with `offset=0` (or the initial `offset` attribute) and `per_page=$limit`.
20
- 2. On scroll, appends a batch with `offset` increased by the previous batch size.
21
- 3. Stops when a batch returns fewer rows than `limit` (or none).
13
+ ## Filters
22
14
 
23
- The doc mock implements this on `GET /docs-mock-api/api/users?offset=…&per_page=…` (`paginateUsers` in `src/docs/mock-api/router.ts`).
15
+ `dataFilterProvider` names a form store (`formDataProvider`). Each non-empty field is added to the query string; when a field changes, the queue drops the loaded batches and reloads from the first offset, after a `filterTimeoutMs` debounce (default `400`). Search a city, an airport or a flight number.
24
16
 
25
17
  <docs-lit-demo for="docs-queue-users-demo"></docs-lit-demo>
26
18
 
27
- Wrap the queue in a **fixed height** with **`overflow-y-auto`** so lazy load triggers when scrolling inside the box (same layout as the [TS starter](https://github.com/supersoniks/create-concorde-ts-starter) `demo-queue-templates`).
28
-
29
- Try scrolling after load — batches of 4 users. Search e.g. `George`, `Bluth`, or `zzz` for empty results.
30
-
31
- ### Expression example
32
-
33
- ```typescript
34
- html`<sonic-queue
35
- lazyload
36
- serviceURL="/docs-mock-api"
37
- dataProviderExpression="api/users?offset=$offset&limit=$limit"
38
- key="data"
39
- limit="4"
40
- class="grid max-h-96 overflow-y-auto"
41
- .items=${this.renderUser}
42
- ></sonic-queue>`;
43
- ```
44
-
45
- Without **`$offset`** in the expression, the queue behaves like a single list (one batch), e.g. geo communes below.
46
-
47
- ## Filter — `dataFilterProvider` + `q`
48
-
49
- One search field (`name="q"`) on `formDataProvider="filter"`. The queue listens via **`dataFilterProvider="filter"`** and, on change:
50
-
51
- 1. Resets loaded batches.
52
- 2. Appends each non-empty form field to the query (here only **`q`** — no `filteredFields` needed).
53
- 3. Fetches again from offset `0`.
54
-
55
- Use **`filteredFields`** only when the form has extra fields that must **not** be sent to the API (e.g. `filteredFields="rememberMe internalId"`).
56
-
57
- The mock API filters before pagination — same haystack logic as the starter (`filterDocsUsers` in `src/docs/mock-api/fixtures.ts`, used by `paginateUsers` in `router.ts` / Service Worker):
58
-
59
- ```typescript
60
- const haystack = `${first_name} ${last_name} ${email}`.toLowerCase();
61
- return haystack.includes(q);
62
- ```
63
-
64
- ## Simple batch (no lazy scroll)
65
-
66
- Geo communes: expression uses **`$limit` only** (no `$offset`) — one request, one batch.
67
-
68
- <docs-lit-demo for="docs-queue-geo-demo"></docs-lit-demo>
69
-
70
- ## HTML `<template>` children
71
-
72
- Optional for hosts without Lit — see [HTML integration](#docs/_misc/html-integration.md/html-integration).
19
+ To keep some form fields out of the request, list their names in `filteredFields`, separated by spaces.
20
+
21
+ ## API reference
22
+
23
+ | Attribute | Values | Description |
24
+ |-----------|--------|-------------|
25
+ | `dataProviderExpression` | string (default: closest ancestor `dataProvider`) | Request path; `$offset` and `$limit` are replaced for each batch |
26
+ | `serviceURL` | string | API base URL; inherited from the closest ancestor |
27
+ | `key` | string | Response property that holds the rows |
28
+ | `limit` | number (default `5`, max `15`) | Rows per batch |
29
+ | `offset` | number (default `0`) | Offset of the first batch |
30
+ | `idKey` | string (default `id`) | Row property used as identity |
31
+ | `dataFilterProvider` | string | Form store whose fields are added to the query; inherited from the closest ancestor |
32
+ | `filteredFields` | space-separated names | Form fields not sent to the API |
33
+ | `filterTimeoutMs` | number (default `400`) | Debounce before reloading after a filter change |
34
+ | `noLazyload` | boolean | Loads all batches without waiting for the scroll |
35
+ | `lazyBoundsRatio` | number (default `1`) | Lazy-load margin, as a multiple of the viewport size |
36
+ | `loader` | `inline` · `fixed` (default `inline`) | Loader shown while a batch loads |
37
+ | `cache` | `RequestCache` (default `default`) | Fetch cache mode |
38
+ | `invalidateOnPageShow` | boolean | Reloads batches when the page is restored from the back/forward cache |
39
+ | `localStorage` | `disabled` · `enabled` (default `disabled`) | Forwarded to each batch list |
40
+ | `debug` | boolean | Shows a live inspector of each batch list's data |
41
+
42
+ | Property | Type | Description |
43
+ |----------|------|-------------|
44
+ | `items` | `ListItems` | Row renderer |
45
+ | `noItems` | `ListItems` | Rendered when the first batch is empty |
46
+ | `skeleton` | `ListItems` | Rendered while a batch loads |
47
+ | `itemPropertyMap` | object | Forwarded to each batch list |
48
+
49
+ The queue publisher exposes `resultCount`, the number of rows loaded so far.
50
+
51
+ No slots. `<template>` children are used as row templates for hosts without Lit; see [HTML integration](/docs/misc/html-integration).
@@ -5,7 +5,7 @@ import { Routes } from "@supersoniks/concorde/core/utils/route";
5
5
 
6
6
  import { tailwind } from "../../../../docs/tailwind";
7
7
  const defaultRoute = {
8
- user: "#user/:id/:slug",
8
+ flight: "#flights/:code",
9
9
  };
10
10
  export type AppRoutes = typeof defaultRoute;
11
11
 
@@ -17,28 +17,28 @@ export class RouterDemo extends LitElement {
17
17
 
18
18
  @state()
19
19
  private routes = {
20
- "#home": () => html`
20
+ "#departures": () => html`
21
21
  <div class="p-4 border border-gray-200 rounded-md">
22
- <h1 class="text-xl font-medium mb-2">Accueil</h1>
23
- <p class="text-gray-600">Bienvenue sur la démo du router</p>
22
+ <h1 class="text-xl font-medium mb-2">Departures</h1>
23
+ <p class="text-gray-600">CN 001 to New York boards at gate B12.</p>
24
24
  </div>
25
25
  `,
26
- [defaultRoute.user]: ({ slug, id }: { id: string; slug: string }) => html`
26
+ [defaultRoute.flight]: ({ code }: { code: string }) => html`
27
27
  <div class="p-4 border border-gray-200 rounded-md">
28
- <h1 class="text-xl font-medium mb-2">Profil Utilisateur ${id}</h1>
29
- <p class="text-gray-600">Slug: ${slug}</p>
28
+ <h1 class="text-xl font-medium mb-2">Flight ${code}</h1>
29
+ <p class="text-gray-600">CDG → JFK</p>
30
30
  </div>
31
31
  `,
32
- "#products/(\\d+)/(\\w+)": ([id, slug]: [string, string]) => html`
32
+ "#gates/([A-Z])(\\d+)": ([terminal, gate]: [string, string]) => html`
33
33
  <div class="p-4 border border-gray-200 rounded-md">
34
- <h1 class="text-xl font-medium mb-2">Produit ${id}</h1>
35
- <p class="text-gray-600">Slug: ${slug}</p>
34
+ <h1 class="text-xl font-medium mb-2">Terminal ${terminal}</h1>
35
+ <p class="text-gray-600">Gate ${gate}</p>
36
36
  </div>
37
37
  `,
38
38
  fallback: () => html`
39
39
  <div class="p-4 border border-red-200 bg-red-50 rounded-md">
40
40
  <h1 class="text-xl font-medium text-red-800 mb-2">404</h1>
41
- <p class="text-red-600">Page non trouvée</p>
41
+ <p class="text-red-600">Page not found</p>
42
42
  </div>
43
43
  `,
44
44
  };
@@ -46,13 +46,13 @@ export class RouterDemo extends LitElement {
46
46
  render() {
47
47
  return html`
48
48
  <div class="p-4">
49
- <h2 class="text-2xl font-medium mb-6">Démo du router</h2>
49
+ <h2 class="text-2xl font-medium mb-6">Router demo</h2>
50
50
 
51
51
  <div class="flex gap-4 mb-6">
52
- <sonic-button href="#home"> Accueil </sonic-button>
53
- <sonic-button href="#user/123/mySlug"> Utilisateur 123 </sonic-button>
54
- <sonic-button href="#products/456/mySlug"> Produit 456 </sonic-button>
55
- <sonic-button href="#invalid"> 404 </sonic-button>
52
+ <sonic-button href="#departures">Departures</sonic-button>
53
+ <sonic-button href="#flights/CN001">Flight CN 001</sonic-button>
54
+ <sonic-button href="#gates/B12">Gate B12</sonic-button>
55
+ <sonic-button href="#invalid">404</sonic-button>
56
56
  </div>
57
57
 
58
58
  <sonic-router .routes=${this.routes}></sonic-router>
@@ -1,94 +1,93 @@
1
1
  # Router
2
2
 
3
- **sonic-router** watches `document.location` (pathname + hash) and renders the matching view.
3
+ **`sonic-router`** watches the location (pathname + hash) and renders the views whose route matches. From Lit, pass a `.routes` map of path patterns to render functions; use **`sonic-redirect`** to navigate when a value appears in a data provider.
4
4
 
5
- From a **Lit** parent, pass a **`.routes`** map (property binding — same rule as [`.items` on list](#core/components/functional/list/list.md/list)): keys are path patterns, values are render functions. Use **`fallback`** when nothing matches.
5
+ ## Static routes
6
6
 
7
- Legacy HTML **`<template data-route="…">`** remains for hosts without Lit — [HTML integration](#docs/_misc/html-integration.md/html-integration).
8
-
9
- ## Static routes (no parameters)
10
-
11
- Route keys are matched against `pathname + hash`. A simple hash route `#home` matches when the location contains that segment.
12
-
13
- On the **doc site**, the page URL is already a hash (`#…/router.md/router`). Demos append a **second** hash for in-page routes (`#…/router#home`), use **`href` + `autoActive="strict"`** on `sonic-button` for the active state, and `history.replaceState` on click so markdown is not reloaded (`setDocsDemoSubHash` in `src/docs/docs-location.ts`).
7
+ Each key is tested against the pathname + hash, first as a RegExp, then as a [url-pattern](https://www.npmjs.com/package/url-pattern). Every matching route renders; the `fallback` key renders when none does. The demo links append a second hash so the doc page itself stays loaded.
14
8
 
15
9
  <docs-lit-demo for="docs-router-basic-demo"></docs-lit-demo>
16
10
 
17
- ```typescript
18
- @state()
19
- private routes = {
20
- "#home": () => html`<div>Home</div>`,
21
- "#about": () => html`<div>About</div>`,
22
- fallback: () => html`<div>Not found</div>`,
23
- };
11
+ Set `.routes` as a **property** binding: render functions cannot go through an HTML attribute.
24
12
 
25
- html`
26
- <sonic-button href="#home">Home</sonic-button>
27
- <sonic-router .routes=${this.routes}></sonic-router>
28
- `;
29
- ```
13
+ ## Route parameters
30
14
 
31
- | Key | When it runs |
32
- |-----|----------------|
33
- | `"#home"`, `"#about"`, … | `RegExp` or [url-pattern](https://www.npmjs.com/package/url-pattern) test succeeds on current location |
34
- | **`fallback`** | No other route matched (not an attribute — a key on the same object) |
15
+ A url-pattern key such as `#flights/:code` passes an object (`{ code }`) to its render function. A RegExp key passes its capturing groups as an array, in order.
35
16
 
36
- ## Routes with parameters
17
+ <docs-lit-demo for="docs-router-params-demo"></docs-lit-demo>
37
18
 
38
- Two styles (see `router.demo.ts` and `docs-router-params-demo`):
19
+ ## Base path
39
20
 
40
- ### Url-pattern (`:name`)
21
+ By default, url-pattern keys accept any leading slashes and RegExp keys are not anchored. Set `basePath` to require a prefix: it is prepended to every url-pattern key, and to RegExp keys after `^`.
41
22
 
42
- Key uses **`:param`** segments. The render function receives an **object** `{ param: string }`.
23
+ <sonic-code language="html" noPreview>
24
+ <template>
25
+ &lt;sonic-router basePath="/app"&gt;&lt;/sonic-router&gt;
26
+ &lt;!-- "/fleet" now matches /app/fleet only --&gt;
27
+ </template>
28
+ </sonic-code>
43
29
 
44
- <docs-lit-demo for="docs-router-params-demo"></docs-lit-demo>
30
+ ## HTML templates
45
31
 
46
- ```typescript
47
- "#couleur/:id": ({ id }) => html`<p>Colour id: ${id}</p>`,
48
- ```
32
+ Without Lit, declare `<template data-route>` children. A `title` attribute sets `document.title` and `data-fallback` marks the template shown when nothing matches. `dataProviderExpression` wraps the content in an element whose `dataProvider` is built from the route (`$1` or `:name`), as in [States](/core/components/functional/states).
49
33
 
50
- ### RegExp (capturing groups)
34
+ <sonic-code language="html" noPreview>
35
+ <template>
36
+ &lt;sonic-router fallBackRoute="/departures"&gt;
37
+ &lt;template data-route="/departures" title="Departures"&gt;…&lt;/template&gt;
38
+ &lt;template data-route="/flights/:code" dataProviderExpression="flights/:code"&gt;
39
+ &lt;sonic-value key="status"&gt;&lt;/sonic-value&gt;
40
+ &lt;/template&gt;
41
+ &lt;/sonic-router&gt;
42
+ </template>
43
+ </sonic-code>
51
44
 
52
- Key is a **RegExp** string with `(\d+)` / `(\w+)` groups. The render function receives an **array** of captured strings (in order).
45
+ `fallBackRoute` navigates to its URL when no route matches, even if a `data-fallback` template exists. A `routes.fallback` function prevents it.
53
46
 
54
- ```typescript
55
- "#products/(\\d+)/(\\w+)": ([productId, slug]) =>
56
- html`<p>Product ${productId}, slug ${slug}</p>`,
57
- ```
47
+ ## Redirect on data
58
48
 
59
- With parameters you usually render data directly in Lit (`${id}`). The old **`<template data-route>` + `dataProviderExpression`** pattern scoped a `dataProvider` for `data-bind` / fetch children — prefer **`@subscribe`** or explicit props when using `.routes`.
49
+ **`sonic-redirect`** navigates to `to` once the value at `onData` (dot path) in its data provider is set and truthy. Here, checking in sends the passenger to the boarding page.
60
50
 
61
- ## `.routes` binding
51
+ <sonic-code language="html" noPreview>
52
+ <template>
53
+ &lt;sonic-redirect to="#boarding" dataProvider="checkin" onData="checkedIn"&gt;&lt;/sonic-redirect&gt;
54
+ &lt;div formDataProvider="checkin"&gt;
55
+ &lt;sonic-button radio name="checkedIn" value="yes"&gt;Check in&lt;/sonic-button&gt;
56
+ &lt;/div&gt;
57
+ </template>
58
+ </sonic-code>
62
59
 
63
- Always use **`.routes=${…}`** in Lit templates: route handlers are functions and must be set as **properties**, not HTML attributes.
60
+ Objects do not trigger the redirect: point `onData` at a scalar such as `passenger.id`.
64
61
 
65
- ## Optional attributes
62
+ ## API reference
66
63
 
67
- | Attribute | Role |
68
- |-----------|------|
69
- | **`basePath`** | Prefix for pattern matching (default allows optional leading segments) |
70
- | **`fallBackRoute`** | If set and no template/route matches, navigates to this URL (redirect). Distinct from **`routes.fallback`** which only renders content |
64
+ `sonic-router`
71
65
 
72
- ## `sonic-redirect`
66
+ | Attribute | Values | Description |
67
+ |-----------|--------|-------------|
68
+ | `routes` | object (property) | Render functions keyed by RegExp or url-pattern, plus `fallback` |
69
+ | `basePath` | string | Prefix required before every route. Default: any leading slashes for url-pattern, no anchor for RegExp |
70
+ | `fallBackRoute` | string | URL to navigate to when no route matches and `routes.fallback` is not set |
73
71
 
74
- Separate component: redirect when data appears on a publisher (login steps, wizards). Not part of the `.routes` map.
72
+ | Template attribute | Description |
73
+ |--------------------|-------------|
74
+ | `data-route` | RegExp or url-pattern matched against the location |
75
+ | `data-fallback` | Template shown when no route matches |
76
+ | `title` | Sets `document.title` when the template renders |
77
+ | `dataProviderExpression` | Builds the `dataProvider` of a wrapper around the content from `$1`… or `:name` |
75
78
 
76
- <sonic-code>
77
- <template>
78
- <sonic-redirect to="#core/components/functional/router/router.md/router#data-is-set" dataProvider="stupid-data-set-id" onData="theData"></sonic-redirect>
79
- <div class="flex gap-2 mb-4" formDataProvider="stupid-data-set-id">
80
- <sonic-button radio name="theData" value="Some Data" size="xs">
81
- Enter data
82
- </sonic-button>
83
- <sonic-button radio name="theData" value="" href="javascript:history.back();" size="xs">
84
- Delete the data and do a history.back()
85
- </sonic-button>
86
- </div>
87
- </template>
88
- </sonic-code>
79
+ | Slot | Description |
80
+ |------|-------------|
81
+ | *(default)* | `<template data-route>` children |
89
82
 
90
- Example: combine with **`.routes`** and **submit** for login / logout / profile steps.
83
+ `sonic-redirect`
91
84
 
92
- ## Package demo
85
+ | Attribute | Values | Description |
86
+ |-----------|--------|-------------|
87
+ | `to` | string | Destination. A value starting with `#` only changes the hash |
88
+ | `dataProvider` | string | Provider to watch. Inherited from the closest ancestor when omitted |
89
+ | `onData` | string (required) | Dot path of the value that triggers the redirect when truthy |
90
+ | `onAdded` | boolean | Redirects as soon as the element renders, without waiting for data |
91
+ | `pushState` · `replaceState` | boolean | Navigates with `history.pushState` or `history.replaceState` instead of a full load. Ignored for `#` destinations |
93
92
 
94
- `sonic-router-demo` (`router.demo.ts`) — home, user profile (`#user/:id/:slug`), products RegExp, **fallback** 404.
93
+ No slots.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 1,
3
- "generatedAt": "2026-10-26T08:56:47.308Z",
3
+ "generatedAt": "2026-10-26T08:58:38.625Z",
4
4
  "count": 66,
5
5
  "items": [
6
6
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 1,
3
- "generatedAt": "2026-10-26T08:56:47.308Z",
3
+ "generatedAt": "2026-10-26T08:58:38.625Z",
4
4
  "componentCount": 67,
5
5
  "components": [
6
6
  {
@@ -1,99 +1,32 @@
1
1
  {
2
2
  "nodes": [
3
3
  {
4
- "tagName": "div",
5
- "attributes": {
6
- "class": "flex gap-2 items-center",
7
- "formdataprovider": "states-basic-example"
8
- },
4
+ "tagName": "sonic-card",
5
+ "attributes": { "class": "block max-w-sm" },
9
6
  "nodes": [
10
7
  {
11
- "tagName": "sonic-button",
12
- "attributes": {
13
- "radio": "",
14
- "name": "selection",
15
- "value": "#home",
16
- "checked": "",
17
- "size": "xs"
18
- },
19
- "innerHTML": "Home"
20
- },
21
- {
22
- "tagName": "sonic-button",
23
- "attributes": {
24
- "radio": "",
25
- "name": "selection",
26
- "value": "#about",
27
- "size": "xs"
28
- },
29
- "innerHTML": "About"
30
- },
31
- {
32
- "tagName": "sonic-button",
33
- "attributes": {
34
- "radio": "",
35
- "name": "selection",
36
- "value": "#work",
37
- "size": "xs"
38
- },
39
- "innerHTML": "Work"
40
- },
41
- {
42
- "tagName": "sonic-button",
43
- "attributes": {
44
- "radio": "",
45
- "name": "selection",
46
- "value": "#contact",
47
- "size": "xs"
48
- },
49
- "innerHTML": "Contact"
50
- }
51
- ]
52
- },
53
- {
54
- "tagName": "div",
55
- "attributes": {
56
- "class": "text-center text-neutral-700 border rounded text-4xl my-6 p-3 "
57
- },
58
- "nodes": [
59
- {
60
- "tagName": "sonic-states",
61
- "attributes": {
62
- "dataprovider": "states-basic-example",
63
- "data-path": "selection"
64
- },
8
+ "tagName": "div",
9
+ "attributes": { "class": "flex items-center justify-between gap-2" },
65
10
  "nodes": [
11
+ { "tagName": "strong", "textContent": "Boarding pass · CN 001" },
66
12
  {
67
- "tagName": "template",
68
- "attributes": {
69
- "data-value": "#home"
70
- },
71
- "innerHTML": "Home"
72
- },
73
- {
74
- "tagName": "template",
75
- "attributes": {
76
- "data-value": "#about"
77
- },
78
- "innerHTML": "About"
79
- },
80
- {
81
- "tagName": "template",
82
- "attributes": {
83
- "data-value": "#work"
84
- },
85
- "innerHTML": "Work"
86
- },
87
- {
88
- "tagName": "template",
89
- "attributes": {
90
- "data-value": "#contact"
91
- },
92
- "innerHTML": "Contact"
13
+ "tagName": "sonic-badge",
14
+ "attributes": { "type": "success" },
15
+ "textContent": "Boarding"
93
16
  }
94
17
  ]
18
+ },
19
+ {
20
+ "tagName": "p",
21
+ "attributes": { "class": "m-0 mt-3 text-2xl" },
22
+ "textContent": "CDG → JFK"
23
+ },
24
+ {
25
+ "tagName": "p",
26
+ "attributes": { "class": "m-0 mt-1 text-sm" },
27
+ "textContent": "Ada Lindqvist · Gate C4 · Seat 2A"
95
28
  }
96
29
  ]
97
30
  }
98
31
  ]
99
- }
32
+ }
@@ -3,7 +3,7 @@
3
3
  Aide-mémoire pour les dépôts externes (adaptateurs, shells).
4
4
  **Pas une page de la doc site** — à lire dans le package npm
5
5
  (`node_modules/@supersoniks/concorde/src/core/components/functional/sdui/sdui-extension-points.md`).
6
- La doc utilisateur / crawl reste `sdui.md` (auto-suffisante).
6
+ La doc utilisateur reste `sdui.md` (auto-suffisante).
7
7
 
8
8
  **Aucune mention de protocoles tiers ici** : uniquement les API génériques Concorde.
9
9