@supersoniks/concorde 5.1.2 → 5.1.3-immutable.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 (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 +5183 -5018
  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 +5183 -5018
  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 +58 -0
  260. package/src/core/utils/immutableValue.ts +116 -0
  261. package/src/core/utils/nestedDotForm.spec.ts +88 -0
  262. package/src/core/utils/publisherImmutable.spec.ts +127 -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 +51 -51
  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
@@ -1,51 +0,0 @@
1
- # Queue
2
-
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
-
5
- ## Lazy load
6
-
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.
8
-
9
- <docs-lit-demo for="docs-queue-geo-demo"></docs-lit-demo>
10
-
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.
12
-
13
- ## Filters
14
-
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.
16
-
17
- <docs-lit-demo for="docs-queue-users-demo"></docs-lit-demo>
18
-
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).
@@ -1,154 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en" data-doc-url="https://concorde.supersoniks.org/core/components/functional/router" 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 by Supersoniks</title>
7
- <meta name="description" content="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 ">
8
- <meta name="keywords" content="Concorde, supersoniks, core/components/functional/router/router, router, Router, functional component, sonic-router, web component, .routes, sonic-redirect, fallback, #flights/:code, { code }, basePath, , title">
9
- <meta name="concorde-doc-id" content="core/components/functional/router/router">
10
- <link rel="canonical" href="https://concorde.supersoniks.org/core/components/functional/router">
11
- <link rel="alternate" type="text/markdown" href="https://concorde.supersoniks.org/core/components/functional/router.md">
12
- </head>
13
- <body>
14
- <header>
15
- <p><a href="/docs/index.html">Concorde documentation</a> · <a href="https://concorde.supersoniks.org/core/components/functional/router">same URL (interactive)</a> · <a href="/llms.txt">llms.txt</a></p>
16
- </header>
17
- <main>
18
- <article>
19
- <p class="doc-lead" id="doc-summary"><strong>Concorde functional component — Router</strong>. 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 <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, .routes, sonic-redirect, fallback, #flights/:code, { code }, basePath, , title. URL: <a href="https://concorde.supersoniks.org/core/components/functional/router">https://concorde.supersoniks.org/core/components/functional/router</a>.</span></p>
20
- <h1 id="router">Router</h1>
21
- <p><strong><code>sonic-router</code></strong> watches the location (pathname + hash) and renders the views whose route matches. From Lit, pass a <code>.routes</code> map of path patterns to render functions; use <strong><code>sonic-redirect</code></strong> to navigate when a value appears in a data provider.</p>
22
- <h2 id="static-routes">Static routes</h2>
23
- <p>Each key is tested against the pathname + hash, first as a RegExp, then as a <a href="https://www.npmjs.com/package/url-pattern">url-pattern</a>. Every matching route renders; the <code>fallback</code> key renders when none does. The demo links append a second hash so the doc page itself stays loaded.</p>
24
- <p><docs-lit-demo for="docs-router-basic-demo"></docs-lit-demo></p>
25
- <p>Set <code>.routes</code> as a <strong>property</strong> binding: render functions cannot go through an HTML attribute.</p>
26
- <h2 id="route-parameters">Route parameters</h2>
27
- <p>A url-pattern key such as <code>#flights/:code</code> passes an object (<code>{ code }</code>) to its render function. A RegExp key passes its capturing groups as an array, in order.</p>
28
- <p><docs-lit-demo for="docs-router-params-demo"></docs-lit-demo></p>
29
- <h2 id="base-path">Base path</h2>
30
- <p>By default, url-pattern keys accept any leading slashes and RegExp keys are not anchored. Set <code>basePath</code> to require a prefix: it is prepended to every url-pattern key, and to RegExp keys after <code>^</code>.</p>
31
- <pre><code class="language-html">&amp;lt;sonic-router basePath=&quot;/app&quot;&amp;gt;&amp;lt;/sonic-router&amp;gt;
32
- &amp;lt;!-- &quot;/fleet&quot; now matches /app/fleet only --&amp;gt;
33
- </code></pre>
34
- <h2 id="html-templates">HTML templates</h2>
35
- <p>Without Lit, declare <code>&lt;template data-route&gt;</code> children. A <code>title</code> attribute sets <code>document.title</code> and <code>data-fallback</code> marks the template shown when nothing matches. <code>dataProviderExpression</code> wraps the content in an element whose <code>dataProvider</code> is built from the route (<code>$1</code> or <code>:name</code>), as in <a href="/core/components/functional/states">States</a>.</p>
36
- <pre><code class="language-html">&amp;lt;sonic-router fallBackRoute=&quot;/departures&quot;&amp;gt;
37
- &amp;lt;template data-route=&quot;/departures&quot; title=&quot;Departures&quot;&amp;gt;…&amp;lt;/template&amp;gt;
38
- &amp;lt;template data-route=&quot;/flights/:code&quot; dataProviderExpression=&quot;flights/:code&quot;&amp;gt;
39
- &amp;lt;sonic-value key=&quot;status&quot;&amp;gt;&amp;lt;/sonic-value&amp;gt;
40
- &amp;lt;/template&amp;gt;
41
- &amp;lt;/sonic-router&amp;gt;
42
- </code></pre>
43
- <p><code>fallBackRoute</code> navigates to its URL when no route matches, even if a <code>data-fallback</code> template exists. A <code>routes.fallback</code> function prevents it.</p>
44
- <h2 id="redirect-on-data">Redirect on data</h2>
45
- <p><strong><code>sonic-redirect</code></strong> navigates to <code>to</code> once the value at <code>onData</code> (dot path) in its data provider is set and truthy. Here, checking in sends the passenger to the boarding page.</p>
46
- <pre><code class="language-html">&amp;lt;sonic-redirect to=&quot;#boarding&quot; dataProvider=&quot;checkin&quot; onData=&quot;checkedIn&quot;&amp;gt;&amp;lt;/sonic-redirect&amp;gt;
47
- &amp;lt;div formDataProvider=&quot;checkin&quot;&amp;gt;
48
- &amp;lt;sonic-button radio name=&quot;checkedIn&quot; value=&quot;yes&quot;&amp;gt;Check in&amp;lt;/sonic-button&amp;gt;
49
- &amp;lt;/div&amp;gt;
50
- </code></pre>
51
- <p>Objects do not trigger the redirect: point <code>onData</code> at a scalar such as <code>passenger.id</code>.</p>
52
- <h2 id="api-reference">API reference</h2>
53
- <p><code>sonic-router</code></p>
54
- <table>
55
- <thead>
56
- <tr>
57
- <th>Attribute</th>
58
- <th>Values</th>
59
- <th>Description</th>
60
- </tr>
61
- </thead>
62
- <tbody><tr>
63
- <td><code>routes</code></td>
64
- <td>object (property)</td>
65
- <td>Render functions keyed by RegExp or url-pattern, plus <code>fallback</code></td>
66
- </tr>
67
- <tr>
68
- <td><code>basePath</code></td>
69
- <td>string</td>
70
- <td>Prefix required before every route. Default: any leading slashes for url-pattern, no anchor for RegExp</td>
71
- </tr>
72
- <tr>
73
- <td><code>fallBackRoute</code></td>
74
- <td>string</td>
75
- <td>URL to navigate to when no route matches and <code>routes.fallback</code> is not set</td>
76
- </tr>
77
- </tbody></table>
78
- <table>
79
- <thead>
80
- <tr>
81
- <th>Template attribute</th>
82
- <th>Description</th>
83
- </tr>
84
- </thead>
85
- <tbody><tr>
86
- <td><code>data-route</code></td>
87
- <td>RegExp or url-pattern matched against the location</td>
88
- </tr>
89
- <tr>
90
- <td><code>data-fallback</code></td>
91
- <td>Template shown when no route matches</td>
92
- </tr>
93
- <tr>
94
- <td><code>title</code></td>
95
- <td>Sets <code>document.title</code> when the template renders</td>
96
- </tr>
97
- <tr>
98
- <td><code>dataProviderExpression</code></td>
99
- <td>Builds the <code>dataProvider</code> of a wrapper around the content from <code>$1</code>… or <code>:name</code></td>
100
- </tr>
101
- </tbody></table>
102
- <table>
103
- <thead>
104
- <tr>
105
- <th>Slot</th>
106
- <th>Description</th>
107
- </tr>
108
- </thead>
109
- <tbody><tr>
110
- <td><em>(default)</em></td>
111
- <td><code>&lt;template data-route&gt;</code> children</td>
112
- </tr>
113
- </tbody></table>
114
- <p><code>sonic-redirect</code></p>
115
- <table>
116
- <thead>
117
- <tr>
118
- <th>Attribute</th>
119
- <th>Values</th>
120
- <th>Description</th>
121
- </tr>
122
- </thead>
123
- <tbody><tr>
124
- <td><code>to</code></td>
125
- <td>string</td>
126
- <td>Destination. A value starting with <code>#</code> only changes the hash</td>
127
- </tr>
128
- <tr>
129
- <td><code>dataProvider</code></td>
130
- <td>string</td>
131
- <td>Provider to watch. Inherited from the closest ancestor when omitted</td>
132
- </tr>
133
- <tr>
134
- <td><code>onData</code></td>
135
- <td>string (required)</td>
136
- <td>Dot path of the value that triggers the redirect when truthy</td>
137
- </tr>
138
- <tr>
139
- <td><code>onAdded</code></td>
140
- <td>boolean</td>
141
- <td>Redirects as soon as the element renders, without waiting for data</td>
142
- </tr>
143
- <tr>
144
- <td><code>pushState</code> · <code>replaceState</code></td>
145
- <td>boolean</td>
146
- <td>Navigates with <code>history.pushState</code> or <code>history.replaceState</code> instead of a full load. Ignored for <code>#</code> destinations</td>
147
- </tr>
148
- </tbody></table>
149
- <p>No slots.</p>
150
-
151
- </article>
152
- </main>
153
- </body>
154
- </html>
@@ -1,93 +0,0 @@
1
- # Router
2
-
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
-
5
- ## Static routes
6
-
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.
8
-
9
- <docs-lit-demo for="docs-router-basic-demo"></docs-lit-demo>
10
-
11
- Set `.routes` as a **property** binding: render functions cannot go through an HTML attribute.
12
-
13
- ## Route parameters
14
-
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.
16
-
17
- <docs-lit-demo for="docs-router-params-demo"></docs-lit-demo>
18
-
19
- ## Base path
20
-
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 `^`.
22
-
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>
29
-
30
- ## HTML templates
31
-
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).
33
-
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>
44
-
45
- `fallBackRoute` navigates to its URL when no route matches, even if a `data-fallback` template exists. A `routes.fallback` function prevents it.
46
-
47
- ## Redirect on data
48
-
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.
50
-
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>
59
-
60
- Objects do not trigger the redirect: point `onData` at a scalar such as `passenger.id`.
61
-
62
- ## API reference
63
-
64
- `sonic-router`
65
-
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 |
71
-
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` |
78
-
79
- | Slot | Description |
80
- |------|-------------|
81
- | *(default)* | `<template data-route>` children |
82
-
83
- `sonic-redirect`
84
-
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 |
92
-
93
- No slots.
@@ -1,94 +0,0 @@
1
- # SDUI — points d’extension publics
2
-
3
- Aide-mémoire pour les dépôts externes (adaptateurs, shells).
4
- **Pas une page de la doc site** — à lire dans le package npm
5
- (`node_modules/@supersoniks/concorde/src/core/components/functional/sdui/sdui-extension-points.md`).
6
- La doc utilisateur reste `sdui.md` (auto-suffisante).
7
-
8
- **Aucune mention de protocoles tiers ici** : uniquement les API génériques Concorde.
9
-
10
- ## 1. Profil `safe` (opt-in)
11
-
12
- ```html
13
- <sonic-sdui profile="safe" …>
14
- ```
15
-
16
- | Refusé | Autorisé |
17
- |--------|----------|
18
- | `js`, `markup`, `innerHTML`, `prefix`, `suffix` | `textContent`, structure, attributs, `action`, `childNodeIds` |
19
-
20
- - Nœud refusé → ignoré + `console.warn` (pas de crash)
21
- - Helper pur : `validateSafeDescriptor(descriptor)` depuis `sdui-safe`
22
-
23
- ## 2. Événement `sdui-action`
24
-
25
- Sur un nœud :
26
-
27
- ```json
28
- {
29
- "tagName": "sonic-button",
30
- "nodeId": "confirm",
31
- "textContent": "OK",
32
- "action": { "name": "confirm", "context": { "step": 1 } }
33
- }
34
- ```
35
-
36
- Au clic, `sonic-sdui` émet :
37
-
38
- - type : `sdui-action`
39
- - `detail` : `{ name, context, sourceNodeId? }`
40
- - `bubbles: true`, `composed: true`
41
-
42
- Ne remplace pas `sonic-submit` / POST / `messagesKey`.
43
-
44
- ## 3. Catalogue de composants (build only)
45
-
46
- - Fichier publié : `component-catalog.json`
47
- - Import : `@supersoniks/concorde/sdui/component-catalog.json`
48
- - Régénération : `yarn generate:sdui-catalog` (aussi `prebuild`)
49
- - Gaps d’annotations : `component-catalog.gaps.json`
50
- - **Aucun impact runtime**
51
-
52
- ## 4. Rendu partiel (opt-in)
53
-
54
- ```html
55
- <sonic-sdui partial …>
56
- ```
57
-
58
- - Registre plat : `nodeById`
59
- - Enfants par id : `childNodeIds`
60
- - Id manquant + `partial` → placeholder (`data-sdui-placeholder`, `data-sdui-node-id`, `display: contents`)
61
- - Sans `partial` → warning + skip
62
-
63
- ## 5. Ops incrémentales (opt-in, chemin à côté)
64
-
65
- Le descripteur entier + rebuild reste le chemin par défaut. Les ops mutent un descripteur local et mettent à jour le DOM **chirurgicalement** (frères préservés : focus, valeurs d’input, état composants).
66
-
67
- ### Méthodes publiques sur `sonic-sdui`
68
-
69
- ```ts
70
- upsertNode(node, parentId?, index?) // node.nodeId requis
71
- removeNode(nodeId)
72
- setData(path, value) // chemin publisher, ex. "form.email"
73
- applyOp(op) // { op: "upsertNode"|"removeNode"|"setData", … }
74
- endIncremental() // revient au mode props → rebuild
75
- ```
76
-
77
- ### Flux optionnel
78
-
79
- Attribut `opsDataProvider` : chaque valeur assignée (`SDUIOp` ou `SDUIOp[]`) est passée à `applyOp`.
80
-
81
- ### Comportement
82
-
83
- - Première op → clone local du descripteur + mode partial automatique
84
- - `data-sdui-node-id` marque les nœuds rendus
85
- - Remplacement d’un placeholder / nœud existant via `replaceWith` (pas de `removeChildren` global)
86
-
87
- ## Imports utiles
88
-
89
- | Artefact | Chemin |
90
- |----------|--------|
91
- | Composant | `@supersoniks/concorde/sdui` |
92
- | Types | `…/sdui/types` (via package exports / short path) |
93
- | Safe | `@supersoniks/concorde/sdui-safe` |
94
- | Catalogue | `@supersoniks/concorde/sdui/component-catalog.json` |