@supersoniks/concorde 5.1.2 → 5.1.3-immutable.1

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 (497) hide show
  1. package/.agents/skills/concorde-docs/SKILL.md +1 -1
  2. package/.claude/skills +1 -0
  3. package/.github/workflows/ci.yml +21 -0
  4. package/.github-export-ignore +30 -0
  5. package/CONTRIBUTING.md +59 -0
  6. package/DEV.md +54 -0
  7. package/LICENSE +21 -0
  8. package/OPEN_SOURCE_CHECKPOINT.md +133 -0
  9. package/README.md +1 -1
  10. package/ai/README.md +29 -41
  11. package/ai/skills/concorde/SKILL.md +54 -324
  12. package/ai/skills/concorde/rules/composition.md +32 -0
  13. package/ai/skills/concorde/rules/data.md +47 -0
  14. package/ai/skills/concorde/rules/http.md +25 -0
  15. package/ai/skills/concorde/rules/lists-forms.md +35 -0
  16. package/ai/skills/concorde/rules/styling.md +46 -0
  17. package/ai/skills/concorde/rules/troubleshooting.md +45 -0
  18. package/build-infos.json +1 -1
  19. package/concorde-core.bundle.js +177 -177
  20. package/concorde-core.es.js +4993 -4833
  21. package/custom-elements-manifest.public.config.mjs +8 -0
  22. package/{.tmp-cem/custom-elements.json → custom-elements.json} +11722 -8868
  23. package/dist/concorde-core.bundle.js +177 -177
  24. package/dist/concorde-core.es.js +4993 -4833
  25. package/dist/docs-mock-api-sw.js +58 -223
  26. package/dist/docs-mock-api-sw.js.map +4 -4
  27. package/dist/img/og-concorde.jpg +0 -0
  28. package/dist/robots.txt +11 -10
  29. package/docs/assets/index-CD4WyL6o.css +1 -0
  30. package/docs/assets/index-D_alEsng.js +12122 -0
  31. package/docs/crawl/core/components/functional/date/date.html +190 -0
  32. package/docs/crawl/core/components/functional/fetch/fetch.html +109 -0
  33. package/docs/crawl/core/components/functional/if/if.html +27 -0
  34. package/docs/crawl/core/components/functional/jsonata/jsonata.html +79 -0
  35. package/docs/crawl/core/components/functional/list/list.html +70 -0
  36. package/docs/crawl/core/components/functional/mix/mix.html +45 -0
  37. package/docs/crawl/core/components/functional/queue/queue.html +96 -0
  38. package/docs/crawl/core/components/functional/router/router.html +106 -0
  39. package/docs/{core → crawl/core}/components/functional/sdui/sdui-extension-points.html +8 -9
  40. package/docs/crawl/core/components/functional/sdui/sdui.html +368 -0
  41. package/docs/crawl/core/components/functional/states/states.html +66 -0
  42. package/docs/crawl/core/components/functional/submit/submit.html +160 -0
  43. package/docs/{core → crawl/core}/components/functional/subscriber/subscriber.html +5 -6
  44. package/docs/crawl/core/components/functional/value/value.html +51 -0
  45. package/docs/{core → crawl/core}/components/ui/alert/alert.html +63 -53
  46. package/docs/{core → crawl/core}/components/ui/alert-messages/alert-messages.html +5 -6
  47. package/docs/{core → crawl/core}/components/ui/badge/badge.html +33 -33
  48. package/docs/crawl/core/components/ui/button/button.html +150 -0
  49. package/docs/crawl/core/components/ui/captcha/captcha.html +112 -0
  50. package/docs/{core → crawl/core}/components/ui/card/card.html +11 -12
  51. package/docs/{core → crawl/core}/components/ui/divider/divider.html +14 -14
  52. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +73 -0
  53. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +266 -0
  54. package/docs/{core → crawl/core}/components/ui/form/form-actions/form-actions.html +23 -23
  55. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +121 -0
  56. package/docs/crawl/core/components/ui/form/input/input.html +109 -0
  57. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +38 -0
  58. package/docs/crawl/core/components/ui/form/radio/radio.html +56 -0
  59. package/docs/crawl/core/components/ui/form/select/select.html +73 -0
  60. package/docs/crawl/core/components/ui/form/switch/switch.html +56 -0
  61. package/docs/crawl/core/components/ui/form/textarea/textarea.html +59 -0
  62. package/docs/crawl/core/components/ui/group/group.html +104 -0
  63. package/docs/{core → crawl/core}/components/ui/icon/icon.html +9 -10
  64. package/docs/crawl/core/components/ui/image/image.html +298 -0
  65. package/docs/{core → crawl/core}/components/ui/link/link.html +11 -12
  66. package/docs/crawl/core/components/ui/loader/loader.html +124 -0
  67. package/docs/{core → crawl/core}/components/ui/menu/menu.html +33 -34
  68. package/docs/crawl/core/components/ui/modal/modal.html +342 -0
  69. package/docs/crawl/core/components/ui/pop/pop.html +296 -0
  70. package/docs/{core → crawl/core}/components/ui/progress/progress.html +7 -8
  71. package/docs/crawl/core/components/ui/table/table.html +545 -0
  72. package/docs/crawl/core/components/ui/theme/theme.html +131 -0
  73. package/docs/crawl/core/components/ui/toast/toast.html +233 -0
  74. package/docs/crawl/core/components/ui/tooltip/tooltip.html +140 -0
  75. package/docs/{docs/getting-started → crawl/docs/_core-concept}/dataFlow.html +29 -26
  76. package/docs/crawl/docs/_core-concept/overview.html +66 -0
  77. package/docs/crawl/docs/_core-concept/subscriber.html +75 -0
  78. package/docs/crawl/docs/_decorators/ancestor-attribute.html +117 -0
  79. package/docs/crawl/docs/_decorators/auto-subscribe.html +202 -0
  80. package/docs/crawl/docs/_decorators/bind.html +141 -0
  81. package/docs/crawl/docs/_decorators/get.html +149 -0
  82. package/docs/crawl/docs/_decorators/handle.html +165 -0
  83. package/docs/crawl/docs/_decorators/on-assign.html +355 -0
  84. package/docs/crawl/docs/_decorators/patch.html +78 -0
  85. package/docs/crawl/docs/_decorators/post.html +139 -0
  86. package/docs/crawl/docs/_decorators/publish.html +61 -0
  87. package/docs/crawl/docs/_decorators/put.html +78 -0
  88. package/docs/crawl/docs/_decorators/subscribe.html +109 -0
  89. package/docs/crawl/docs/_decorators/wait-for-ancestors.html +137 -0
  90. package/docs/crawl/docs/_directives/sub.html +93 -0
  91. package/docs/{docs/getting-started → crawl/docs/_getting-started}/ai-agents.html +11 -12
  92. package/docs/crawl/docs/_getting-started/concorde-manual-install.html +100 -0
  93. package/docs/crawl/docs/_getting-started/concorde-outside.html +58 -0
  94. package/docs/{docs/getting-started → crawl/docs/_getting-started}/create-a-component.html +14 -11
  95. package/docs/{docs/getting-started → crawl/docs/_getting-started}/my-first-component.html +22 -13
  96. package/docs/crawl/docs/_getting-started/my-first-subscriber.html +110 -0
  97. package/docs/crawl/docs/_getting-started/pubsub.html +62 -0
  98. package/docs/crawl/docs/_getting-started/start.html +76 -0
  99. package/docs/{docs/getting-started → crawl/docs/_getting-started}/theming.html +9 -10
  100. package/docs/{docs/misc → crawl/docs/_misc}/api-configuration.html +18 -18
  101. package/docs/{docs/misc → crawl/docs/_misc}/dataProviderKey.html +11 -12
  102. package/docs/{docs/misc → crawl/docs/_misc}/docs-mock-api.html +28 -25
  103. package/docs/{docs/misc → crawl/docs/_misc}/dynamic-path.html +15 -16
  104. package/docs/{docs/misc → crawl/docs/_misc}/endpoint.html +15 -16
  105. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +138 -0
  106. package/docs/{docs/misc → crawl/docs/_misc}/html-integration.html +15 -12
  107. package/docs/crawl/hubs/decorators.html +547 -0
  108. package/docs/crawl/hubs/form-components.html +381 -0
  109. package/docs/crawl/hubs/remote-data.html +452 -0
  110. package/docs/crawl/index.html +103 -0
  111. package/docs/docs-mock-api-sw.js +223 -58
  112. package/docs/docs-mock-api-sw.js.map +4 -4
  113. package/docs/index.html +68 -95
  114. package/docs/llms-full.txt +3610 -2231
  115. package/docs/llms.txt +86 -94
  116. package/docs/robots.txt +10 -11
  117. package/docs/sitemap.xml +84 -78
  118. package/docs/src/core/components/functional/date/date.md +231 -91
  119. package/docs/src/core/components/functional/fetch/fetch.md +83 -66
  120. package/docs/src/core/components/functional/if/if.md +3 -28
  121. package/docs/src/core/components/functional/jsonata/jsonata.md +37 -42
  122. package/docs/src/core/components/functional/list/list.md +43 -99
  123. package/docs/src/core/components/functional/mix/mix.md +26 -31
  124. package/docs/src/core/components/functional/queue/queue.md +61 -40
  125. package/docs/src/core/components/functional/router/router.md +65 -64
  126. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  127. package/docs/src/core/components/functional/sdui/component-catalog.json +1 -1
  128. package/docs/src/core/components/functional/sdui/example.json +86 -19
  129. package/docs/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
  130. package/docs/src/core/components/functional/sdui/sdui.md +358 -187
  131. package/docs/src/core/components/functional/states/states.md +61 -86
  132. package/docs/src/core/components/functional/submit/submit.md +72 -64
  133. package/docs/src/core/components/functional/value/value.md +22 -34
  134. package/docs/src/core/components/ui/alert/alert.md +58 -48
  135. package/docs/src/core/components/ui/badge/badge.md +34 -27
  136. package/docs/src/core/components/ui/button/button.md +106 -139
  137. package/docs/src/core/components/ui/captcha/captcha.md +32 -17
  138. package/docs/src/core/components/ui/card/card.md +6 -6
  139. package/docs/src/core/components/ui/divider/divider.md +11 -8
  140. package/docs/src/core/components/ui/form/checkbox/checkbox.md +42 -90
  141. package/docs/src/core/components/ui/form/fieldset/fieldset.md +75 -31
  142. package/docs/src/core/components/ui/form/form-actions/form-actions.md +16 -14
  143. package/docs/src/core/components/ui/form/form-layout/form-layout.md +29 -19
  144. package/docs/src/core/components/ui/form/input/input.md +95 -95
  145. package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +29 -0
  146. package/docs/src/core/components/ui/form/radio/radio.md +34 -55
  147. package/docs/src/core/components/ui/form/select/select.md +45 -60
  148. package/docs/src/core/components/ui/form/switch/switch.md +34 -57
  149. package/docs/src/core/components/ui/form/textarea/textarea.md +38 -55
  150. package/docs/src/core/components/ui/group/group.md +33 -35
  151. package/docs/src/core/components/ui/icon/icon.md +4 -4
  152. package/docs/src/core/components/ui/image/image.md +107 -41
  153. package/docs/src/core/components/ui/link/link.md +6 -6
  154. package/docs/src/core/components/ui/loader/loader.md +55 -30
  155. package/docs/src/core/components/ui/menu/menu.md +27 -27
  156. package/docs/src/core/components/ui/modal/modal.md +96 -72
  157. package/docs/src/core/components/ui/pop/pop.md +158 -80
  158. package/docs/src/core/components/ui/progress/progress.md +2 -2
  159. package/docs/src/core/components/ui/table/table.md +255 -91
  160. package/docs/src/core/components/ui/theme/theme.md +36 -11
  161. package/docs/src/core/components/ui/toast/toast.md +117 -48
  162. package/docs/src/core/components/ui/tooltip/tooltip.md +62 -27
  163. package/docs/{docs/getting-started → src/docs/_core-concept}/dataFlow.md +18 -17
  164. package/docs/src/docs/_core-concept/overview.md +57 -0
  165. package/docs/src/docs/_core-concept/subscriber.md +75 -0
  166. package/docs/src/docs/_decorators/ancestor-attribute.md +128 -0
  167. package/docs/src/docs/_decorators/auto-subscribe.md +202 -0
  168. package/docs/src/docs/_decorators/bind.md +167 -0
  169. package/docs/src/docs/_decorators/get.md +162 -0
  170. package/docs/src/docs/_decorators/handle.md +175 -0
  171. package/docs/src/docs/_decorators/on-assign.md +390 -0
  172. package/docs/src/docs/_decorators/patch.md +70 -0
  173. package/docs/src/docs/_decorators/post.md +146 -0
  174. package/docs/src/docs/_decorators/publish.md +55 -0
  175. package/docs/src/docs/_decorators/put.md +70 -0
  176. package/docs/src/docs/_decorators/subscribe.md +100 -0
  177. package/docs/src/docs/_decorators/wait-for-ancestors.md +163 -0
  178. package/docs/src/docs/_directives/sub.md +91 -0
  179. package/docs/src/docs/{getting-started → _getting-started}/ai-agents.md +3 -3
  180. package/docs/src/docs/_getting-started/concorde-manual-install.md +133 -0
  181. package/docs/src/docs/_getting-started/concorde-outside.md +33 -0
  182. package/docs/{docs/getting-started → src/docs/_getting-started}/create-a-component.md +6 -3
  183. package/docs/src/docs/{getting-started → _getting-started}/my-first-component.md +14 -5
  184. package/docs/src/docs/_getting-started/my-first-subscriber.md +120 -0
  185. package/docs/src/docs/_getting-started/pubsub.md +37 -0
  186. package/docs/src/docs/{getting-started → _getting-started}/start.md +13 -1
  187. package/docs/src/docs/{getting-started → _getting-started}/theming.md +2 -2
  188. package/docs/src/docs/{misc → _misc}/api-configuration.md +12 -10
  189. package/docs/src/docs/{misc → _misc}/dataProviderKey.md +4 -4
  190. package/docs/{docs/misc → src/docs/_misc}/docs-mock-api.md +13 -12
  191. package/docs/{docs/misc → src/docs/_misc}/dynamic-path.md +8 -8
  192. package/docs/{docs/misc → src/docs/_misc}/endpoint.md +8 -8
  193. package/docs/src/docs/_misc/formelement-subscriber-removal.md +115 -0
  194. package/docs/{docs/misc → src/docs/_misc}/html-integration.md +5 -4
  195. package/docs/src/docs/search/docs-search.json +4375 -2420
  196. package/docs/src/tsconfig.declarations.json +22 -0
  197. package/docs/src/tsconfig.emit.json +23 -0
  198. package/docs/src/tsconfig.json +2 -23
  199. package/gitlab/job_github_mirror.sh +39 -0
  200. package/index.html +89 -0
  201. package/package.json +22 -4
  202. package/public/img/og-concorde.jpg +0 -0
  203. package/scripts/ai-init.mjs +104 -379
  204. package/scripts/ai-init.test.mjs +81 -239
  205. package/scripts/docs-markdown-vite-plugin.ts +11 -5
  206. package/scripts/docs-public-url.mjs +6 -0
  207. package/scripts/docs.htaccess +7 -0
  208. package/scripts/generate-cem.mjs +244 -0
  209. package/scripts/generate-cem.test.mjs +122 -0
  210. package/scripts/generate-crawl-docs.mjs +29 -5
  211. package/scripts/generate-sdui-catalog.mjs +11 -10
  212. package/scripts/github-export.mjs +150 -0
  213. package/scripts/post-build-docs.js +3 -0
  214. package/scripts/post-build.mjs +0 -0
  215. package/scripts/pre-publish.mjs +2 -1
  216. package/scripts/site-pages.mjs +212 -0
  217. package/scripts/site-pages.test.mjs +116 -0
  218. package/site-pages/about.md +22 -0
  219. package/site-pages/privacy.md +32 -0
  220. package/src/core/components/functional/date/date.md +1 -1
  221. package/src/core/components/functional/example/example.ts +3 -1
  222. package/src/core/components/functional/if/if.ts +0 -0
  223. package/src/core/components/functional/list/list.demo.ts +0 -0
  224. package/src/core/components/functional/list/list.md +6 -2
  225. package/src/core/components/functional/list/list.ts +17 -4
  226. package/src/core/components/functional/mix/mix.md +0 -0
  227. package/src/core/components/functional/router/router.demo.ts +0 -0
  228. package/src/core/components/functional/router/router.ts +0 -0
  229. package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +0 -0
  230. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  231. package/src/core/components/functional/sdui/component-catalog.json +2 -2
  232. package/src/core/components/functional/sdui/example.json +0 -0
  233. package/src/core/components/functional/sdui/sdui-immutable.spec.ts +74 -0
  234. package/src/core/components/functional/sdui/sdui.ts +33 -8
  235. package/src/core/components/functional/sdui/types.ts +0 -0
  236. package/src/core/components/functional/states/states.ts +0 -0
  237. package/src/core/components/functional/submit/submit.spec.ts +60 -0
  238. package/src/core/components/functional/submit/submit.ts +6 -3
  239. package/src/core/components/functional/subscriber/subscriber.ts +0 -0
  240. package/src/core/components/functional/value/value.md +0 -0
  241. package/src/core/components/functional/value/value.ts +0 -0
  242. package/src/core/components/ui/_css/size.ts +0 -0
  243. package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
  244. package/src/core/components/ui/card/card.md +1 -1
  245. package/src/core/components/ui/form/input/input.md +19 -1
  246. package/src/core/components/ui/form/input/input.ts +8 -2
  247. package/src/core/components/ui/form/radio/radio.md +14 -0
  248. package/src/core/components/ui/image/image.md +17 -17
  249. package/src/core/components/ui/modal/modal.md +2 -2
  250. package/src/core/decorators/subscriber/bind.ts +9 -14
  251. package/src/core/decorators/subscriber/subscribe.ts +15 -9
  252. package/src/core/decorators/subscriber/subscribe.type-test.ts +14 -5
  253. package/src/core/mixins/Subscriber.ts +0 -0
  254. package/src/core/utils/DataBindObserver.ts +0 -0
  255. package/src/core/utils/Objects.ts +0 -0
  256. package/src/core/utils/PublisherProxy.ts +166 -125
  257. package/src/core/utils/deepReadonly.spec.ts +66 -0
  258. package/src/core/utils/deepReadonly.ts +71 -0
  259. package/src/core/utils/immutableValue.spec.ts +54 -0
  260. package/src/core/utils/immutableValue.ts +102 -0
  261. package/src/core/utils/nestedDotForm.spec.ts +88 -0
  262. package/src/core/utils/publisherImmutable.spec.ts +76 -0
  263. package/src/core/utils/route.ts +0 -0
  264. package/src/core/utils/strictGet.spec.ts +61 -0
  265. package/src/core/utils/strictGet.ts +102 -0
  266. package/src/css.d.ts +19 -0
  267. package/src/docs/components/docs-demo-sources.ts +3 -3
  268. package/src/docs/decorators/bind.md +23 -24
  269. package/src/docs/docs-location.spec.ts +10 -0
  270. package/src/docs/docs-location.ts +10 -0
  271. package/src/docs/example/decorators-demo-bind-demos.ts +11 -28
  272. package/src/docs/example/docs-toggle-demos.ts +1 -1
  273. package/src/docs/example/users.ts +0 -0
  274. package/src/docs/getting-started/ai-agents.md +29 -55
  275. package/src/docs/getting-started/dataFlow.md +2 -2
  276. package/src/docs/home/home.ts +3 -1
  277. package/src/docs/misc/publisher-get-immutability-docs-crawl.json +902 -0
  278. package/src/docs/misc/publisher-get-immutability-docs-recheck.json +13 -0
  279. package/src/docs/misc/publisher-get-immutability-study.md +229 -0
  280. package/src/docs/navigation/navigation.ts +5 -1
  281. package/src/docs/search/docs-search.json +358 -58
  282. package/src/docs/search/markdown-renderer.ts +6 -1
  283. package/src/docs/tailwind/css/docs/content.css +4 -5
  284. package/src/tsconfig.declarations.json +22 -0
  285. package/src/tsconfig.emit.json +23 -0
  286. package/src/tsconfig.json +53 -5
  287. package/src/tsconfig.tsbuildinfo +1 -1
  288. package/.taste-skill/after/desktop-fold.jpg +0 -0
  289. package/.taste-skill/after/desktop-page-01.jpg +0 -0
  290. package/.taste-skill/after/desktop-page-02.jpg +0 -0
  291. package/.taste-skill/after/desktop-page-03.jpg +0 -0
  292. package/.taste-skill/after/mobile-fold.jpg +0 -0
  293. package/.taste-skill/after/mobile-page-01.jpg +0 -0
  294. package/.taste-skill/after/report.json +0 -4103
  295. package/.taste-skill/after/tablet-fold.jpg +0 -0
  296. package/.taste-skill/after/tablet-page-01.jpg +0 -0
  297. package/.taste-skill/after/tablet-page-02.jpg +0 -0
  298. package/.taste-skill/before/desktop-fold.jpg +0 -0
  299. package/.taste-skill/before/desktop-page-01.jpg +0 -0
  300. package/.taste-skill/before/desktop-page-02.jpg +0 -0
  301. package/.taste-skill/before/mobile-fold.jpg +0 -0
  302. package/.taste-skill/before/mobile-page-01.jpg +0 -0
  303. package/.taste-skill/before/report.json +0 -2556
  304. package/.taste-skill/before/tablet-fold.jpg +0 -0
  305. package/.taste-skill/before/tablet-page-01.jpg +0 -0
  306. package/.taste-skill/direction.json +0 -510
  307. package/.taste-skill/notes.md +0 -84
  308. package/.taste-skill/prod/desktop-fold.jpg +0 -0
  309. package/.taste-skill/prod/desktop-page-01.jpg +0 -0
  310. package/.taste-skill/prod/desktop-page-02.jpg +0 -0
  311. package/.taste-skill/prod/desktop-page-03.jpg +0 -0
  312. package/.taste-skill/prod/mobile-fold.jpg +0 -0
  313. package/.taste-skill/prod/mobile-page-01.jpg +0 -0
  314. package/.taste-skill/prod/mobile-page-02.jpg +0 -0
  315. package/.taste-skill/prod/report.json +0 -1973
  316. package/.taste-skill/prod/tablet-fold.jpg +0 -0
  317. package/.taste-skill/prod/tablet-page-01.jpg +0 -0
  318. package/.taste-skill/prod/tablet-page-02.jpg +0 -0
  319. package/AUDIT.md +0 -228
  320. package/PLAN-AMELIORATION.md +0 -220
  321. package/PLAN-DOCS-AGENTS.md +0 -80
  322. package/ai/AGENTS.md +0 -56
  323. package/ai/cursor/rules/concorde-menu.mdc +0 -15
  324. package/ai/cursor/rules/concorde-scope.mdc +0 -14
  325. package/ai/cursor/rules/concorde-theme.mdc +0 -13
  326. package/ai/cursor/rules/concorde.mdc +0 -66
  327. package/ai/jetbrains/rules/concorde.md +0 -53
  328. package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
  329. package/ai/skills/concorde-imports/SKILL.md +0 -78
  330. package/ai/skills/concorde-menu/SKILL.md +0 -74
  331. package/ai/skills/concorde-scope/SKILL.md +0 -70
  332. package/ai/skills/concorde-theme/SKILL.md +0 -57
  333. package/docs/.htaccess +0 -75
  334. package/docs/404.html +0 -15
  335. package/docs/404.md +0 -5
  336. package/docs/assets/index-BgG6FFPt.js +0 -11765
  337. package/docs/assets/index-x89XINSG.css +0 -1
  338. package/docs/core/components/functional/date/date.html +0 -211
  339. package/docs/core/components/functional/date/date.md +0 -150
  340. package/docs/core/components/functional/fetch/fetch.html +0 -180
  341. package/docs/core/components/functional/fetch/fetch.md +0 -108
  342. package/docs/core/components/functional/if/if.html +0 -65
  343. package/docs/core/components/functional/if/if.md +0 -34
  344. package/docs/core/components/functional/jsonata/jsonata.html +0 -110
  345. package/docs/core/components/functional/jsonata/jsonata.md +0 -61
  346. package/docs/core/components/functional/list/list.html +0 -198
  347. package/docs/core/components/functional/list/list.md +0 -121
  348. package/docs/core/components/functional/mix/mix.html +0 -78
  349. package/docs/core/components/functional/mix/mix.md +0 -46
  350. package/docs/core/components/functional/queue/queue.html +0 -155
  351. package/docs/core/components/functional/queue/queue.md +0 -51
  352. package/docs/core/components/functional/router/router.html +0 -154
  353. package/docs/core/components/functional/router/router.md +0 -93
  354. package/docs/core/components/functional/sdui/sdui-extension-points.md +0 -94
  355. package/docs/core/components/functional/sdui/sdui.html +0 -397
  356. package/docs/core/components/functional/sdui/sdui.md +0 -307
  357. package/docs/core/components/functional/states/states.html +0 -141
  358. package/docs/core/components/functional/states/states.md +0 -112
  359. package/docs/core/components/functional/submit/submit.html +0 -178
  360. package/docs/core/components/functional/submit/submit.md +0 -106
  361. package/docs/core/components/functional/subscriber/subscriber.md +0 -91
  362. package/docs/core/components/functional/translation/translation.html +0 -60
  363. package/docs/core/components/functional/translation/translation.md +0 -38
  364. package/docs/core/components/functional/value/value.html +0 -81
  365. package/docs/core/components/functional/value/value.md +0 -47
  366. package/docs/core/components/ui/alert/alert.md +0 -186
  367. package/docs/core/components/ui/alert-messages/alert-messages.md +0 -85
  368. package/docs/core/components/ui/badge/badge.md +0 -181
  369. package/docs/core/components/ui/button/button.html +0 -309
  370. package/docs/core/components/ui/button/button.md +0 -216
  371. package/docs/core/components/ui/captcha/captcha.html +0 -80
  372. package/docs/core/components/ui/captcha/captcha.md +0 -56
  373. package/docs/core/components/ui/card/card.md +0 -215
  374. package/docs/core/components/ui/divider/divider.md +0 -126
  375. package/docs/core/components/ui/form/checkbox/checkbox.html +0 -200
  376. package/docs/core/components/ui/form/checkbox/checkbox.md +0 -125
  377. package/docs/core/components/ui/form/fieldset/fieldset.html +0 -238
  378. package/docs/core/components/ui/form/fieldset/fieldset.md +0 -161
  379. package/docs/core/components/ui/form/form-actions/form-actions.md +0 -98
  380. package/docs/core/components/ui/form/form-layout/form-layout.html +0 -115
  381. package/docs/core/components/ui/form/form-layout/form-layout.md +0 -109
  382. package/docs/core/components/ui/form/input/input.html +0 -235
  383. package/docs/core/components/ui/form/input/input.md +0 -142
  384. package/docs/core/components/ui/form/radio/radio.html +0 -144
  385. package/docs/core/components/ui/form/radio/radio.md +0 -78
  386. package/docs/core/components/ui/form/select/select.html +0 -178
  387. package/docs/core/components/ui/form/select/select.md +0 -86
  388. package/docs/core/components/ui/form/switch/switch.html +0 -146
  389. package/docs/core/components/ui/form/switch/switch.md +0 -80
  390. package/docs/core/components/ui/form/textarea/textarea.html +0 -162
  391. package/docs/core/components/ui/form/textarea/textarea.md +0 -82
  392. package/docs/core/components/ui/group/group.html +0 -113
  393. package/docs/core/components/ui/group/group.md +0 -77
  394. package/docs/core/components/ui/icon/icon.md +0 -214
  395. package/docs/core/components/ui/image/image.html +0 -194
  396. package/docs/core/components/ui/image/image.md +0 -167
  397. package/docs/core/components/ui/link/link.md +0 -81
  398. package/docs/core/components/ui/loader/loader.html +0 -114
  399. package/docs/core/components/ui/loader/loader.md +0 -87
  400. package/docs/core/components/ui/menu/menu.md +0 -370
  401. package/docs/core/components/ui/modal/modal.html +0 -324
  402. package/docs/core/components/ui/modal/modal.md +0 -211
  403. package/docs/core/components/ui/pop/pop.html +0 -250
  404. package/docs/core/components/ui/pop/pop.md +0 -216
  405. package/docs/core/components/ui/progress/progress.md +0 -109
  406. package/docs/core/components/ui/table/table.html +0 -333
  407. package/docs/core/components/ui/table/table.md +0 -267
  408. package/docs/core/components/ui/theme/theme.html +0 -116
  409. package/docs/core/components/ui/theme/theme.md +0 -97
  410. package/docs/core/components/ui/toast/toast.html +0 -185
  411. package/docs/core/components/ui/toast/toast.md +0 -147
  412. package/docs/core/components/ui/tooltip/tooltip.html +0 -112
  413. package/docs/core/components/ui/tooltip/tooltip.md +0 -89
  414. package/docs/docs/decorators/ancestor-attribute.html +0 -71
  415. package/docs/docs/decorators/ancestor-attribute.md +0 -59
  416. package/docs/docs/decorators/auto-subscribe.html +0 -61
  417. package/docs/docs/decorators/auto-subscribe.md +0 -40
  418. package/docs/docs/decorators/bind.html +0 -86
  419. package/docs/docs/decorators/bind.md +0 -77
  420. package/docs/docs/decorators/get.html +0 -166
  421. package/docs/docs/decorators/get.md +0 -160
  422. package/docs/docs/decorators/handle.html +0 -139
  423. package/docs/docs/decorators/handle.md +0 -119
  424. package/docs/docs/decorators/on-assign.html +0 -72
  425. package/docs/docs/decorators/on-assign.md +0 -63
  426. package/docs/docs/decorators/patch.html +0 -76
  427. package/docs/docs/decorators/patch.md +0 -44
  428. package/docs/docs/decorators/post.html +0 -150
  429. package/docs/docs/decorators/post.md +0 -134
  430. package/docs/docs/decorators/publish.html +0 -74
  431. package/docs/docs/decorators/publish.md +0 -56
  432. package/docs/docs/decorators/put.html +0 -83
  433. package/docs/docs/decorators/put.md +0 -51
  434. package/docs/docs/decorators/subscribe.html +0 -91
  435. package/docs/docs/decorators/subscribe.md +0 -87
  436. package/docs/docs/decorators/wait-for-ancestors.html +0 -82
  437. package/docs/docs/decorators/wait-for-ancestors.md +0 -76
  438. package/docs/docs/directives/sub.html +0 -79
  439. package/docs/docs/directives/sub.md +0 -75
  440. package/docs/docs/directives/t.html +0 -91
  441. package/docs/docs/directives/t.md +0 -73
  442. package/docs/docs/getting-started/ai-agents.md +0 -76
  443. package/docs/docs/getting-started/components.html +0 -27
  444. package/docs/docs/getting-started/components.md +0 -5
  445. package/docs/docs/getting-started/installation.html +0 -69
  446. package/docs/docs/getting-started/installation.md +0 -36
  447. package/docs/docs/getting-started/my-first-component.md +0 -227
  448. package/docs/docs/getting-started/start.html +0 -47
  449. package/docs/docs/getting-started/start.md +0 -35
  450. package/docs/docs/getting-started/theming.md +0 -253
  451. package/docs/docs/index.html +0 -99
  452. package/docs/docs/misc/api-configuration.md +0 -79
  453. package/docs/docs/misc/dataProviderKey.md +0 -168
  454. package/docs/hubs/decorators.html +0 -443
  455. package/docs/hubs/form-components.html +0 -404
  456. package/docs/hubs/remote-data.html +0 -371
  457. package/docs/img/archive/concorde-001-2cv.webp +0 -0
  458. package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  459. package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
  460. package/docs/img/archive/credits.json +0 -28
  461. package/docs/index.md +0 -22
  462. package/docs/src/core/components/functional/translation/translation.md +0 -38
  463. package/docs/src/docs/decorators/ancestor-attribute.md +0 -59
  464. package/docs/src/docs/decorators/auto-subscribe.md +0 -40
  465. package/docs/src/docs/decorators/bind.md +0 -77
  466. package/docs/src/docs/decorators/get.md +0 -160
  467. package/docs/src/docs/decorators/handle.md +0 -119
  468. package/docs/src/docs/decorators/on-assign.md +0 -63
  469. package/docs/src/docs/decorators/patch.md +0 -44
  470. package/docs/src/docs/decorators/post.md +0 -134
  471. package/docs/src/docs/decorators/publish.md +0 -56
  472. package/docs/src/docs/decorators/put.md +0 -51
  473. package/docs/src/docs/decorators/subscribe.md +0 -87
  474. package/docs/src/docs/decorators/wait-for-ancestors.md +0 -76
  475. package/docs/src/docs/directives/sub.md +0 -75
  476. package/docs/src/docs/directives/t.md +0 -73
  477. package/docs/src/docs/getting-started/components.md +0 -5
  478. package/docs/src/docs/getting-started/create-a-component.md +0 -136
  479. package/docs/src/docs/getting-started/dataFlow.md +0 -87
  480. package/docs/src/docs/getting-started/installation.md +0 -36
  481. package/docs/src/docs/misc/docs-mock-api.md +0 -62
  482. package/docs/src/docs/misc/dynamic-path.md +0 -71
  483. package/docs/src/docs/misc/endpoint.md +0 -45
  484. package/docs/src/docs/misc/html-integration.md +0 -14
  485. /package/{docs → dist}/img/concorde/plane_01.jpg +0 -0
  486. /package/{docs → dist}/img/concorde/plane_02.jpg +0 -0
  487. /package/{docs → dist}/img/concorde/plane_03.jpg +0 -0
  488. /package/{docs → dist}/img/concorde/plane_04.jpg +0 -0
  489. /package/{docs → dist}/img/concorde/plane_05.jpg +0 -0
  490. /package/{docs → dist}/img/concorde/plane_06.jpg +0 -0
  491. /package/{docs → dist}/img/concorde/plane_07.jpg +0 -0
  492. /package/{docs → dist}/img/concorde/plane_08.jpg +0 -0
  493. /package/{docs → dist}/img/concorde/plane_09.jpg +0 -0
  494. /package/{docs → dist}/img/concorde/plane_10.jpg +0 -0
  495. /package/{docs → dist}/img/concorde/plane_11.jpg +0 -0
  496. /package/{docs → dist}/img/concorde/plane_12.jpg +0 -0
  497. /package/{docs → dist}/img/concorde/plane_13.jpg +0 -0
@@ -0,0 +1,96 @@
1
+ <!DOCTYPE html>
2
+ <html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/core/components/functional/queue/queue.html" data-doc-id="core/components/functional/queue/queue">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Queue — Concorde</title>
7
+ <meta name="description" content="&gt; Try offline: serviceURL=&quot;/docs-mock-api&quot; — see Local API demos. Row rendering: Data flow (.items property binding).">
8
+ <meta name="keywords" content="Concorde, supersoniks, core/components/functional/queue/queue, queue, Queue, functional component, sonic-queue, web component, serviceURL=&quot;/docs-mock-api&quot;, .items, dataProvider, …/list-item/0, …/1, dataProviderExpression, $offset, $limit, lazyload, dataFilterProvider">
9
+ <meta name="concorde-doc-id" content="core/components/functional/queue/queue">
10
+ <link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/functional/queue/queue.html">
11
+ </head>
12
+ <body>
13
+ <header>
14
+ <p><a href="../../../../index.html">Concorde documentation (crawl)</a> · <a href="https://concorde.supersoniks.org/#core/components/functional/queue/queue.md/queue" rel="nofollow">interactive version</a></p>
15
+ </header>
16
+ <main>
17
+ <article>
18
+ <p class="doc-lead" id="doc-summary"><strong>Concorde functional component — Queue</strong>. &gt; Try offline: serviceURL=&quot;/docs-mock-api&quot; — see Local API demos. Row rendering: Data flow (.items property binding). <span>Doc ID: <code>core/components/functional/queue/queue</code>. Keywords: Concorde, supersoniks, core/components/functional/queue/queue, queue, Queue, functional component, sonic-queue, web component, serviceURL=&quot;/docs-mock-api&quot;, .items, dataProvider, …/list-item/0, …/1, dataProviderExpression, $offset, $limit, lazyload, dataFilterProvider. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/functional/queue/queue.html">https://concorde.supersoniks.org/crawl/core/components/functional/queue/queue.html</a>.</span></p>
19
+ <h1 id="queue">Queue</h1>
20
+ <blockquote>
21
+ <p><strong>Try offline:</strong> <code>serviceURL=&quot;/docs-mock-api&quot;</code> — see <a href="../../../../docs/_misc/docs-mock-api.html#docs-mock-api">Local API demos</a>. Row rendering: <a href="../../../../docs/_core-concept/dataFlow.html#dataFlow">Data flow</a> (<code>.items</code> property binding).</p>
22
+ </blockquote>
23
+ <p><strong>sonic-queue</strong> loads data in <strong>batches</strong>. Each batch is an internal <a href="../list/list.html#list">List</a> with its own <code>dataProvider</code> (<code>…/list-item/0</code>, <code>…/1</code>, …).</p>
24
+ <table>
25
+ <thead>
26
+ <tr>
27
+ <th>Mechanism</th>
28
+ <th>Role</th>
29
+ </tr>
30
+ </thead>
31
+ <tbody><tr>
32
+ <td><strong><code>dataProviderExpression</code></strong></td>
33
+ <td>API path template; <code>$offset</code> and <code>$limit</code> are replaced per batch</td>
34
+ </tr>
35
+ <tr>
36
+ <td><strong><code>lazyload</code></strong></td>
37
+ <td>Load the next batch when the user scrolls near the end</td>
38
+ </tr>
39
+ <tr>
40
+ <td><strong><code>dataFilterProvider</code></strong></td>
41
+ <td>Publisher id of a form (<code>formDataProvider</code>); field values are merged into the request query string</td>
42
+ </tr>
43
+ <tr>
44
+ <td><strong><code>filteredFields</code></strong></td>
45
+ <td>Optional list of form field names to <strong>exclude</strong> from the query (space-separated) — omit when every field should be sent</td>
46
+ </tr>
47
+ <tr>
48
+ <td><strong><code>.items</code></strong>, <strong><code>.noItems</code></strong>, <strong><code>.separator</code></strong>, <strong><code>.skeleton</code></strong></td>
49
+ <td>Lit callbacks forwarded to each batch list (use the <strong>dot</strong> — functions are properties, not attributes)</td>
50
+ </tr>
51
+ </tbody></table>
52
+ <h2 id="lazy-load--offset-and-limit">Lazy load — <code>$offset</code> and <code>$limit</code></h2>
53
+ <p>When the expression contains <strong><code>$offset</code></strong> and <strong><code>$limit</code></strong>, the queue:</p>
54
+ <ol>
55
+ <li>Fetches the first batch with <code>offset=0</code> (or the initial <code>offset</code> attribute) and <code>per_page=$limit</code>.</li>
56
+ <li>On scroll, appends a batch with <code>offset</code> increased by the previous batch size.</li>
57
+ <li>Stops when a batch returns fewer rows than <code>limit</code> (or none).</li>
58
+ </ol>
59
+ <p>The doc mock implements this on <code>GET /docs-mock-api/api/users?offset=…&amp;per_page=…</code> (<code>paginateUsers</code> in <code>src/docs/mock-api/router.ts</code>).</p>
60
+ <p><docs-lit-demo for="docs-queue-users-demo"></docs-lit-demo></p>
61
+ <p>Wrap the queue in a <strong>fixed height</strong> with <strong><code>overflow-y-auto</code></strong> so lazy load triggers when scrolling inside the box (same layout as the <a href="https://github.com/supersoniks/create-concorde-ts-starter">TS starter</a> <code>demo-queue-templates</code>).</p>
62
+ <p>Try scrolling after load — batches of 4 users. Search e.g. <code>George</code>, <code>Bluth</code>, or <code>zzz</code> for empty results.</p>
63
+ <h3 id="expression-example">Expression example</h3>
64
+ <pre><code class="language-typescript">html`&lt;sonic-queue
65
+ lazyload
66
+ serviceURL=&quot;/docs-mock-api&quot;
67
+ dataProviderExpression=&quot;api/users?offset=$offset&amp;limit=$limit&quot;
68
+ key=&quot;data&quot;
69
+ limit=&quot;4&quot;
70
+ class=&quot;grid max-h-96 overflow-y-auto&quot;
71
+ .items=${this.renderUser}
72
+ &gt;&lt;/sonic-queue&gt;`;
73
+ </code></pre>
74
+ <p>Without <strong><code>$offset</code></strong> in the expression, the queue behaves like a single list (one batch), e.g. geo communes below.</p>
75
+ <h2 id="filter--datafilterprovider--q">Filter — <code>dataFilterProvider</code> + <code>q</code></h2>
76
+ <p>One search field (<code>name=&quot;q&quot;</code>) on <code>formDataProvider=&quot;filter&quot;</code>. The queue listens via <strong><code>dataFilterProvider=&quot;filter&quot;</code></strong> and, on change:</p>
77
+ <ol>
78
+ <li>Resets loaded batches.</li>
79
+ <li>Appends each non-empty form field to the query (here only <strong><code>q</code></strong> — no <code>filteredFields</code> needed).</li>
80
+ <li>Fetches again from offset <code>0</code>.</li>
81
+ </ol>
82
+ <p>Use <strong><code>filteredFields</code></strong> only when the form has extra fields that must <strong>not</strong> be sent to the API (e.g. <code>filteredFields=&quot;rememberMe internalId&quot;</code>).</p>
83
+ <p>The mock API filters before pagination — same haystack logic as the starter (<code>filterDocsUsers</code> in <code>src/docs/mock-api/fixtures.ts</code>, used by <code>paginateUsers</code> in <code>router.ts</code> / Service Worker):</p>
84
+ <pre><code class="language-typescript">const haystack = `${first_name} ${last_name} ${email}`.toLowerCase();
85
+ return haystack.includes(q);
86
+ </code></pre>
87
+ <h2 id="simple-batch-no-lazy-scroll">Simple batch (no lazy scroll)</h2>
88
+ <p>Geo communes: expression uses <strong><code>$limit</code> only</strong> (no <code>$offset</code>) — one request, one batch.</p>
89
+ <p><docs-lit-demo for="docs-queue-geo-demo"></docs-lit-demo></p>
90
+ <h2 id="html-template-children">HTML <code>&lt;template&gt;</code> children</h2>
91
+ <p>Optional for hosts without Lit — see <a href="../../../../docs/_misc/html-integration.html#html-integration">HTML integration</a>.</p>
92
+
93
+ </article>
94
+ </main>
95
+ </body>
96
+ </html>
@@ -0,0 +1,106 @@
1
+ <!DOCTYPE html>
2
+ <html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/core/components/functional/router/router.html" data-doc-id="core/components/functional/router/router">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Router — Concorde</title>
7
+ <meta name="description" content="sonic-router watches document.location (pathname + hash) and renders the matching view.">
8
+ <meta name="keywords" content="Concorde, supersoniks, core/components/functional/router/router, router, Router, functional component, sonic-router, web component, document.location, .routes, .items, fallback, , pathname + hash, #home, #…/router.md/router, #…/router#home, href">
9
+ <meta name="concorde-doc-id" content="core/components/functional/router/router">
10
+ <link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/functional/router/router.html">
11
+ </head>
12
+ <body>
13
+ <header>
14
+ <p><a href="../../../../index.html">Concorde documentation (crawl)</a> · <a href="https://concorde.supersoniks.org/#core/components/functional/router/router.md/router" rel="nofollow">interactive version</a></p>
15
+ </header>
16
+ <main>
17
+ <article>
18
+ <p class="doc-lead" id="doc-summary"><strong>Concorde functional component — Router</strong>. sonic-router watches document.location (pathname + hash) and renders the matching view. <span>Doc ID: <code>core/components/functional/router/router</code>. Keywords: Concorde, supersoniks, core/components/functional/router/router, router, Router, functional component, sonic-router, web component, document.location, .routes, .items, fallback, , pathname + hash, #home, #…/router.md/router, #…/router#home, href. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/functional/router/router.html">https://concorde.supersoniks.org/crawl/core/components/functional/router/router.html</a>.</span></p>
19
+ <h1 id="router">Router</h1>
20
+ <p><strong>sonic-router</strong> watches <code>document.location</code> (pathname + hash) and renders the matching view.</p>
21
+ <p>From a <strong>Lit</strong> parent, pass a <strong><code>.routes</code></strong> map (property binding — same rule as <a href="../list/list.html#list"><code>.items</code> on list</a>): keys are path patterns, values are render functions. Use <strong><code>fallback</code></strong> when nothing matches.</p>
22
+ <p>Legacy HTML <strong><code>&lt;template data-route=&quot;…&quot;&gt;</code></strong> remains for hosts without Lit — <a href="../../../../docs/_misc/html-integration.html#html-integration">HTML integration</a>.</p>
23
+ <h2 id="static-routes-no-parameters">Static routes (no parameters)</h2>
24
+ <p>Route keys are matched against <code>pathname + hash</code>. A simple hash route <code>#home</code> matches when the location contains that segment.</p>
25
+ <p>On the <strong>doc site</strong>, the page URL is already a hash (<code>../../../../…/router.html#router</code>). Demos append a <strong>second</strong> hash for in-page routes (<code>#…/router#home</code>), use <strong><code>href</code> + <code>autoActive=&quot;strict&quot;</code></strong> on <code>sonic-button</code> for the active state, and <code>history.replaceState</code> on click so markdown is not reloaded (<code>setDocsDemoSubHash</code> in <code>src/docs/docs-location.ts</code>).</p>
26
+ <p><docs-lit-demo for="docs-router-basic-demo"></docs-lit-demo></p>
27
+ <pre><code class="language-typescript">@state()
28
+ private routes = {
29
+ &quot;#home&quot;: () =&gt; html`&lt;div&gt;Home&lt;/div&gt;`,
30
+ &quot;#about&quot;: () =&gt; html`&lt;div&gt;About&lt;/div&gt;`,
31
+ fallback: () =&gt; html`&lt;div&gt;Not found&lt;/div&gt;`,
32
+ };
33
+
34
+ html`
35
+ &lt;sonic-button href=&quot;#home&quot;&gt;Home&lt;/sonic-button&gt;
36
+ &lt;sonic-router .routes=${this.routes}&gt;&lt;/sonic-router&gt;
37
+ `;
38
+ </code></pre>
39
+ <table>
40
+ <thead>
41
+ <tr>
42
+ <th>Key</th>
43
+ <th>When it runs</th>
44
+ </tr>
45
+ </thead>
46
+ <tbody><tr>
47
+ <td><code>&quot;#home&quot;</code>, <code>&quot;#about&quot;</code>, …</td>
48
+ <td><code>RegExp</code> or <a href="https://www.npmjs.com/package/url-pattern">url-pattern</a> test succeeds on current location</td>
49
+ </tr>
50
+ <tr>
51
+ <td><strong><code>fallback</code></strong></td>
52
+ <td>No other route matched (not an attribute — a key on the same object)</td>
53
+ </tr>
54
+ </tbody></table>
55
+ <h2 id="routes-with-parameters">Routes with parameters</h2>
56
+ <p>Two styles (see <code>router.demo.ts</code> and <code>docs-router-params-demo</code>):</p>
57
+ <h3 id="url-pattern-name">Url-pattern (<code>:name</code>)</h3>
58
+ <p>Key uses <strong><code>:param</code></strong> segments. The render function receives an <strong>object</strong> <code>{ param: string }</code>.</p>
59
+ <p><docs-lit-demo for="docs-router-params-demo"></docs-lit-demo></p>
60
+ <pre><code class="language-typescript">&quot;#couleur/:id&quot;: ({ id }) =&gt; html`&lt;p&gt;Colour id: ${id}&lt;/p&gt;`,
61
+ </code></pre>
62
+ <h3 id="regexp-capturing-groups">RegExp (capturing groups)</h3>
63
+ <p>Key is a <strong>RegExp</strong> string with <code>(\d+)</code> / <code>(\w+)</code> groups. The render function receives an <strong>array</strong> of captured strings (in order).</p>
64
+ <pre><code class="language-typescript">&quot;#products/(\\d+)/(\\w+)&quot;: ([productId, slug]) =&gt;
65
+ html`&lt;p&gt;Product ${productId}, slug ${slug}&lt;/p&gt;`,
66
+ </code></pre>
67
+ <p>With parameters you usually render data directly in Lit (<code>${id}</code>). The old <strong><code>&lt;template data-route&gt;</code> + <code>dataProviderExpression</code></strong> pattern scoped a <code>dataProvider</code> for <code>data-bind</code> / fetch children — prefer <strong><code>@subscribe</code></strong> or explicit props when using <code>.routes</code>.</p>
68
+ <h2 id="routes-binding"><code>.routes</code> binding</h2>
69
+ <p>Always use <strong><code>.routes=${…}</code></strong> in Lit templates: route handlers are functions and must be set as <strong>properties</strong>, not HTML attributes.</p>
70
+ <h2 id="optional-attributes">Optional attributes</h2>
71
+ <table>
72
+ <thead>
73
+ <tr>
74
+ <th>Attribute</th>
75
+ <th>Role</th>
76
+ </tr>
77
+ </thead>
78
+ <tbody><tr>
79
+ <td><strong><code>basePath</code></strong></td>
80
+ <td>Prefix for pattern matching (default allows optional leading segments)</td>
81
+ </tr>
82
+ <tr>
83
+ <td><strong><code>fallBackRoute</code></strong></td>
84
+ <td>If set and no template/route matches, navigates to this URL (redirect). Distinct from <strong><code>routes.fallback</code></strong> which only renders content</td>
85
+ </tr>
86
+ </tbody></table>
87
+ <h2 id="sonic-redirect"><code>sonic-redirect</code></h2>
88
+ <p>Separate component: redirect when data appears on a publisher (login steps, wizards). Not part of the <code>.routes</code> map.</p>
89
+ <pre><code>&lt;sonic-redirect to=&quot;./router.html#router#data-is-set&quot; dataProvider=&quot;stupid-data-set-id&quot; onData=&quot;theData&quot;&gt;&lt;/sonic-redirect&gt;
90
+ &lt;div class=&quot;flex gap-2 mb-4&quot; formDataProvider=&quot;stupid-data-set-id&quot;&gt;
91
+ &lt;sonic-button radio name=&quot;theData&quot; value=&quot;Some Data&quot; size=&quot;xs&quot;&gt;
92
+ Enter data
93
+ &lt;/sonic-button&gt;
94
+ &lt;sonic-button radio name=&quot;theData&quot; value=&quot;&quot; href=&quot;javascript:history.back();&quot; size=&quot;xs&quot;&gt;
95
+ Delete the data and do a history.back()
96
+ &lt;/sonic-button&gt;
97
+ &lt;/div&gt;
98
+ </code></pre>
99
+ <p>Example: combine with <strong><code>.routes</code></strong> and <strong>submit</strong> for login / logout / profile steps.</p>
100
+ <h2 id="package-demo">Package demo</h2>
101
+ <p><code>sonic-router-demo</code> (<code>router.demo.ts</code>) — home, user profile (<code>#user/:id/:slug</code>), products RegExp, <strong>fallback</strong> 404.</p>
102
+
103
+ </article>
104
+ </main>
105
+ </body>
106
+ </html>
@@ -1,30 +1,29 @@
1
1
  <!DOCTYPE html>
2
- <html lang="en" data-doc-url="https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points" data-doc-id="core/components/functional/sdui/sdui-extension-points">
2
+ <html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/core/components/functional/sdui/sdui-extension-points.html" data-doc-id="core/components/functional/sdui/sdui-extension-points">
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>SDUI — points d’extension publics — Concorde by Supersoniks</title>
6
+ <title>SDUI — points d’extension publics — Concorde</title>
7
7
  <meta name="description" content="Aide-mémoire pour les dépôts externes (adaptateurs, shells).">
8
8
  <meta name="keywords" content="Concorde, supersoniks, core/components/functional/sdui/sdui-extension-points, sdui-extension-points, SDUI — points d’extension publics, functional component, sonic-sdui-extension-points, web component, ).
9
- La doc utilisateur reste , safe, html
9
+ La doc utilisateur / crawl reste , safe, html
10
10
 
11
11
  , js, markup, innerHTML, prefix, suffix, textContent, action">
12
12
  <meta name="concorde-doc-id" content="core/components/functional/sdui/sdui-extension-points">
13
- <link rel="canonical" href="https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points">
14
- <link rel="alternate" type="text/markdown" href="https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points.md">
13
+ <link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/functional/sdui/sdui-extension-points.html">
15
14
  </head>
16
15
  <body>
17
16
  <header>
18
- <p><a href="/docs/index.html">Concorde documentation</a> · <a href="https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points">same URL (interactive)</a> · <a href="/llms.txt">llms.txt</a></p>
17
+ <p><a href="../../../../index.html">Concorde documentation (crawl)</a> · <a href="https://concorde.supersoniks.org/#core/components/functional/sdui/sdui-extension-points.md/sdui-extension-points" rel="nofollow">interactive version</a></p>
19
18
  </header>
20
19
  <main>
21
20
  <article>
22
21
  <p class="doc-lead" id="doc-summary"><strong>Concorde functional component — SDUI — points d’extension publics</strong>. Aide-mémoire pour les dépôts externes (adaptateurs, shells). <span>Doc ID: <code>core/components/functional/sdui/sdui-extension-points</code>. Keywords: Concorde, supersoniks, core/components/functional/sdui/sdui-extension-points, sdui-extension-points, SDUI — points d’extension publics, functional component, sonic-sdui-extension-points, web component, ).
23
- La doc utilisateur reste , safe, html
22
+ La doc utilisateur / crawl reste , safe, html
24
23
 
25
- , js, markup, innerHTML, prefix, suffix, textContent, action. URL: <a href="https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points">https://concorde.supersoniks.org/core/components/functional/sdui/sdui-extension-points</a>.</span></p>
24
+ , js, markup, innerHTML, prefix, suffix, textContent, action. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/functional/sdui/sdui-extension-points.html">https://concorde.supersoniks.org/crawl/core/components/functional/sdui/sdui-extension-points.html</a>.</span></p>
26
25
  <h1 id="sdui--points-dextension-publics">SDUI — points d’extension publics</h1>
27
- <p>Aide-mémoire pour les dépôts externes (adaptateurs, shells).<br><strong>Pas une page de la doc site</strong> — à lire dans le package npm<br>(<code>node_modules/@supersoniks/concorde/src/core/components/functional/sdui/sdui-extension-points.md</code>).<br>La doc utilisateur reste <code>sdui.md</code> (auto-suffisante).</p>
26
+ <p>Aide-mémoire pour les dépôts externes (adaptateurs, shells).<br><strong>Pas une page de la doc site</strong> — à lire dans le package npm<br>(<code>node_modules/@supersoniks/concorde/src/core/components/functional/sdui/sdui-extension-points.md</code>).<br>La doc utilisateur / crawl reste <code>sdui.md</code> (auto-suffisante).</p>
28
27
  <p><strong>Aucune mention de protocoles tiers ici</strong> : uniquement les API génériques Concorde.</p>
29
28
  <h2 id="1-profil-safe-opt-in">1. Profil <code>safe</code> (opt-in)</h2>
30
29
  <pre><code class="language-html">&lt;sonic-sdui profile=&quot;safe&quot; …&gt;