@supersoniks/concorde 5.1.1 → 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 (459) hide show
  1. package/.agents/skills/concorde-docs/SKILL.md +153 -0
  2. package/.agents/skills/{concorde-component-docs/template.md → concorde-docs/templates/component.md} +6 -2
  3. package/.agents/skills/concorde-docs/templates/decorator.md +43 -0
  4. package/.agents/skills/concorde-docs/templates/guide.md +25 -0
  5. package/.claude/skills +1 -0
  6. package/.github/workflows/ci.yml +21 -0
  7. package/.github-export-ignore +30 -0
  8. package/CONTRIBUTING.md +59 -0
  9. package/DEV.md +54 -0
  10. package/LICENSE +21 -0
  11. package/OPEN_SOURCE_CHECKPOINT.md +133 -0
  12. package/README.md +4 -4
  13. package/ai/README.md +29 -41
  14. package/ai/skills/concorde/SKILL.md +54 -324
  15. package/ai/skills/concorde/rules/composition.md +32 -0
  16. package/ai/skills/concorde/rules/data.md +47 -0
  17. package/ai/skills/concorde/rules/http.md +25 -0
  18. package/ai/skills/concorde/rules/lists-forms.md +35 -0
  19. package/ai/skills/concorde/rules/styling.md +46 -0
  20. package/ai/skills/concorde/rules/troubleshooting.md +45 -0
  21. package/build-infos.json +1 -1
  22. package/concorde-core.bundle.js +177 -177
  23. package/concorde-core.es.js +4993 -4833
  24. package/custom-elements-manifest.public.config.mjs +8 -0
  25. package/{.tmp-cem/custom-elements.json → custom-elements.json} +11758 -8904
  26. package/dist/concorde-core.bundle.js +177 -177
  27. package/dist/concorde-core.es.js +4993 -4833
  28. package/dist/docs-mock-api-sw.js +58 -223
  29. package/dist/docs-mock-api-sw.js.map +4 -4
  30. package/dist/img/concorde/plane_01.jpg +0 -0
  31. package/dist/img/concorde/plane_02.jpg +0 -0
  32. package/dist/img/concorde/plane_03.jpg +0 -0
  33. package/dist/img/concorde/plane_04.jpg +0 -0
  34. package/dist/img/concorde/plane_05.jpg +0 -0
  35. package/dist/img/concorde/plane_06.jpg +0 -0
  36. package/dist/img/concorde/plane_07.jpg +0 -0
  37. package/dist/img/concorde/plane_08.jpg +0 -0
  38. package/dist/img/concorde/plane_09.jpg +0 -0
  39. package/dist/img/concorde/plane_10.jpg +0 -0
  40. package/dist/img/concorde/plane_11.jpg +0 -0
  41. package/dist/img/concorde/plane_12.jpg +0 -0
  42. package/dist/img/concorde/plane_13.jpg +0 -0
  43. package/dist/img/og-concorde.jpg +0 -0
  44. package/dist/robots.txt +11 -10
  45. package/docs/assets/index-D_alEsng.js +12122 -0
  46. package/docs/crawl/core/components/functional/date/date.html +190 -0
  47. package/docs/crawl/core/components/functional/fetch/fetch.html +109 -0
  48. package/docs/crawl/core/components/functional/if/if.html +27 -0
  49. package/docs/crawl/core/components/functional/jsonata/jsonata.html +79 -0
  50. package/docs/crawl/core/components/functional/list/list.html +70 -0
  51. package/docs/crawl/core/components/functional/mix/mix.html +45 -0
  52. package/docs/crawl/core/components/functional/queue/queue.html +96 -0
  53. package/docs/crawl/core/components/functional/router/router.html +106 -0
  54. package/docs/crawl/core/components/functional/sdui/sdui-extension-points.html +126 -0
  55. package/docs/crawl/core/components/functional/sdui/sdui.html +368 -0
  56. package/docs/crawl/core/components/functional/states/states.html +66 -0
  57. package/docs/crawl/core/components/functional/submit/submit.html +160 -0
  58. package/docs/crawl/core/components/functional/subscriber/subscriber.html +67 -0
  59. package/docs/crawl/core/components/functional/value/value.html +51 -0
  60. package/docs/crawl/core/components/ui/alert/alert.html +211 -0
  61. package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +131 -0
  62. package/docs/crawl/core/components/ui/badge/badge.html +197 -0
  63. package/docs/crawl/core/components/ui/button/button.html +150 -0
  64. package/docs/crawl/core/components/ui/captcha/captcha.html +112 -0
  65. package/docs/crawl/core/components/ui/card/card.html +253 -0
  66. package/docs/crawl/core/components/ui/divider/divider.html +144 -0
  67. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +73 -0
  68. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +266 -0
  69. package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +122 -0
  70. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +121 -0
  71. package/docs/crawl/core/components/ui/form/input/input.html +109 -0
  72. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +38 -0
  73. package/docs/crawl/core/components/ui/form/radio/radio.html +56 -0
  74. package/docs/crawl/core/components/ui/form/select/select.html +73 -0
  75. package/docs/crawl/core/components/ui/form/switch/switch.html +56 -0
  76. package/docs/crawl/core/components/ui/form/textarea/textarea.html +59 -0
  77. package/docs/crawl/core/components/ui/group/group.html +104 -0
  78. package/docs/crawl/core/components/ui/icon/icon.html +222 -0
  79. package/docs/crawl/core/components/ui/image/image.html +298 -0
  80. package/docs/crawl/core/components/ui/link/link.html +100 -0
  81. package/docs/crawl/core/components/ui/loader/loader.html +124 -0
  82. package/docs/crawl/core/components/ui/menu/menu.html +394 -0
  83. package/docs/crawl/core/components/ui/modal/modal.html +342 -0
  84. package/docs/crawl/core/components/ui/pop/pop.html +296 -0
  85. package/docs/crawl/core/components/ui/progress/progress.html +131 -0
  86. package/docs/crawl/core/components/ui/table/table.html +545 -0
  87. package/docs/crawl/core/components/ui/theme/theme.html +131 -0
  88. package/docs/crawl/core/components/ui/toast/toast.html +233 -0
  89. package/docs/crawl/core/components/ui/tooltip/tooltip.html +140 -0
  90. package/docs/crawl/docs/_core-concept/dataFlow.html +177 -0
  91. package/docs/crawl/docs/_core-concept/overview.html +66 -0
  92. package/docs/crawl/docs/_core-concept/subscriber.html +75 -0
  93. package/docs/crawl/docs/_decorators/ancestor-attribute.html +117 -0
  94. package/docs/crawl/docs/_decorators/auto-subscribe.html +202 -0
  95. package/docs/crawl/docs/_decorators/bind.html +141 -0
  96. package/docs/crawl/docs/_decorators/get.html +149 -0
  97. package/docs/crawl/docs/_decorators/handle.html +165 -0
  98. package/docs/crawl/docs/_decorators/on-assign.html +355 -0
  99. package/docs/crawl/docs/_decorators/patch.html +78 -0
  100. package/docs/crawl/docs/_decorators/post.html +139 -0
  101. package/docs/crawl/docs/_decorators/publish.html +61 -0
  102. package/docs/crawl/docs/_decorators/put.html +78 -0
  103. package/docs/crawl/docs/_decorators/subscribe.html +109 -0
  104. package/docs/crawl/docs/_decorators/wait-for-ancestors.html +137 -0
  105. package/docs/crawl/docs/_directives/sub.html +93 -0
  106. package/docs/crawl/docs/_getting-started/ai-agents.html +173 -0
  107. package/docs/crawl/docs/_getting-started/concorde-manual-install.html +100 -0
  108. package/docs/crawl/docs/_getting-started/concorde-outside.html +58 -0
  109. package/docs/crawl/docs/_getting-started/create-a-component.html +111 -0
  110. package/docs/crawl/docs/_getting-started/my-first-component.html +189 -0
  111. package/docs/crawl/docs/_getting-started/my-first-subscriber.html +110 -0
  112. package/docs/crawl/docs/_getting-started/pubsub.html +62 -0
  113. package/docs/crawl/docs/_getting-started/start.html +76 -0
  114. package/docs/crawl/docs/_getting-started/theming.html +333 -0
  115. package/docs/crawl/docs/_misc/api-configuration.html +149 -0
  116. package/docs/crawl/docs/_misc/dataProviderKey.html +135 -0
  117. package/docs/crawl/docs/_misc/docs-mock-api.html +158 -0
  118. package/docs/crawl/docs/_misc/dynamic-path.html +180 -0
  119. package/docs/crawl/docs/_misc/endpoint.html +50 -0
  120. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +138 -0
  121. package/docs/crawl/docs/_misc/html-integration.html +48 -0
  122. package/docs/crawl/hubs/decorators.html +547 -0
  123. package/docs/crawl/hubs/form-components.html +381 -0
  124. package/docs/crawl/hubs/remote-data.html +452 -0
  125. package/docs/crawl/index.html +103 -0
  126. package/docs/index.html +1 -1
  127. package/docs/llms-full.txt +7174 -0
  128. package/docs/llms.txt +98 -0
  129. package/docs/sitemap.xml +243 -0
  130. package/docs/src/core/components/functional/date/date.md +290 -0
  131. package/docs/src/core/components/functional/fetch/fetch.md +125 -0
  132. package/docs/src/core/components/functional/if/if.md +9 -0
  133. package/docs/src/core/components/functional/jsonata/jsonata.md +56 -0
  134. package/docs/src/core/components/functional/list/list.md +65 -0
  135. package/docs/src/core/components/functional/mix/mix.md +41 -0
  136. package/docs/src/core/components/functional/queue/queue.md +72 -0
  137. package/docs/src/core/components/functional/router/router.md +94 -0
  138. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +511 -0
  139. package/docs/src/core/components/functional/sdui/component-catalog.json +3103 -0
  140. package/docs/src/core/components/functional/sdui/default-library.json +108 -0
  141. package/docs/src/core/components/functional/sdui/example.json +99 -0
  142. package/docs/src/core/components/functional/sdui/sdui-extension-points.md +94 -0
  143. package/docs/src/core/components/functional/sdui/sdui.md +478 -0
  144. package/docs/src/core/components/functional/states/states.md +87 -0
  145. package/docs/src/core/components/functional/submit/submit.md +114 -0
  146. package/docs/src/core/components/functional/subscriber/subscriber.md +91 -0
  147. package/docs/src/core/components/functional/value/value.md +35 -0
  148. package/docs/src/core/components/ui/alert/alert.md +196 -0
  149. package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
  150. package/docs/src/core/components/ui/badge/badge.md +188 -0
  151. package/docs/src/core/components/ui/button/button.md +183 -0
  152. package/docs/src/core/components/ui/captcha/captcha.md +71 -0
  153. package/docs/src/core/components/ui/card/card.md +215 -0
  154. package/docs/src/core/components/ui/divider/divider.md +129 -0
  155. package/docs/src/core/components/ui/form/checkbox/checkbox.md +77 -0
  156. package/docs/src/core/components/ui/form/fieldset/fieldset.md +205 -0
  157. package/docs/src/core/components/ui/form/form-actions/form-actions.md +100 -0
  158. package/docs/src/core/components/ui/form/form-layout/form-layout.md +119 -0
  159. package/docs/src/core/components/ui/form/input/input.md +142 -0
  160. package/docs/src/core/components/ui/form/radio/radio.md +57 -0
  161. package/docs/src/core/components/ui/form/select/select.md +71 -0
  162. package/docs/src/core/components/ui/form/switch/switch.md +57 -0
  163. package/docs/src/core/components/ui/form/textarea/textarea.md +65 -0
  164. package/docs/src/core/components/ui/group/group.md +75 -0
  165. package/docs/src/core/components/ui/icon/icon.md +214 -0
  166. package/docs/src/core/components/ui/icon/icons.json +1 -0
  167. package/docs/src/core/components/ui/image/image.md +233 -0
  168. package/docs/src/core/components/ui/link/link.md +81 -0
  169. package/docs/src/core/components/ui/loader/loader.md +112 -0
  170. package/docs/src/core/components/ui/menu/menu.md +370 -0
  171. package/docs/src/core/components/ui/modal/modal.md +235 -0
  172. package/docs/src/core/components/ui/pop/pop.md +294 -0
  173. package/docs/src/core/components/ui/progress/progress.md +109 -0
  174. package/docs/src/core/components/ui/table/table.md +431 -0
  175. package/docs/src/core/components/ui/theme/theme.md +122 -0
  176. package/docs/src/core/components/ui/toast/toast.md +216 -0
  177. package/docs/src/core/components/ui/tooltip/tooltip.md +124 -0
  178. package/{src → docs/src}/docs/_core-concept/subscriber.md +0 -0
  179. package/{src → docs/src}/docs/_getting-started/my-first-subscriber.md +0 -0
  180. package/{src → docs/src}/docs/_getting-started/pubsub.md +0 -0
  181. package/docs/src/docs/_getting-started/theming.md +253 -0
  182. package/docs/src/docs/search/docs-search.json +12242 -0
  183. package/docs/src/tag-list.json +1 -0
  184. package/docs/src/tsconfig-model.json +23 -0
  185. package/docs/src/tsconfig.declarations.json +22 -0
  186. package/docs/src/tsconfig.emit.json +23 -0
  187. package/docs/src/tsconfig.json +1332 -0
  188. package/gitlab/job_github_mirror.sh +39 -0
  189. package/index.html +157 -5
  190. package/package.json +22 -4
  191. package/public/docs-mock-api-sw.js +58 -223
  192. package/public/docs-mock-api-sw.js.map +4 -4
  193. package/public/img/concorde/plane_01.jpg +0 -0
  194. package/public/img/concorde/plane_02.jpg +0 -0
  195. package/public/img/concorde/plane_03.jpg +0 -0
  196. package/public/img/concorde/plane_04.jpg +0 -0
  197. package/public/img/concorde/plane_05.jpg +0 -0
  198. package/public/img/concorde/plane_06.jpg +0 -0
  199. package/public/img/concorde/plane_07.jpg +0 -0
  200. package/public/img/concorde/plane_08.jpg +0 -0
  201. package/public/img/concorde/plane_09.jpg +0 -0
  202. package/public/img/concorde/plane_10.jpg +0 -0
  203. package/public/img/concorde/plane_11.jpg +0 -0
  204. package/public/img/concorde/plane_12.jpg +0 -0
  205. package/public/img/concorde/plane_13.jpg +0 -0
  206. package/public/img/og-concorde.jpg +0 -0
  207. package/public/robots.txt +11 -10
  208. package/scripts/ai-init.mjs +104 -379
  209. package/scripts/ai-init.test.mjs +81 -239
  210. package/scripts/docs-markdown-vite-plugin.ts +43 -0
  211. package/scripts/docs-public-url.mjs +56 -0
  212. package/scripts/docs.htaccess +82 -0
  213. package/scripts/generate-cem.mjs +244 -0
  214. package/scripts/generate-cem.test.mjs +122 -0
  215. package/scripts/generate-crawl-docs.mjs +233 -118
  216. package/scripts/generate-crawl-docs.test.mjs +124 -0
  217. package/scripts/generate-sdui-catalog.mjs +11 -10
  218. package/scripts/github-export.mjs +150 -0
  219. package/scripts/post-build-docs.js +37 -50
  220. package/scripts/post-build.mjs +0 -0
  221. package/scripts/pre-publish.mjs +2 -1
  222. package/scripts/site-pages.mjs +212 -0
  223. package/scripts/site-pages.test.mjs +116 -0
  224. package/site-pages/about.md +22 -0
  225. package/site-pages/privacy.md +32 -0
  226. package/src/core/components/functional/date/date.md +91 -231
  227. package/src/core/components/functional/example/example.ts +3 -1
  228. package/src/core/components/functional/fetch/fetch.md +66 -83
  229. package/src/core/components/functional/if/if.md +28 -3
  230. package/src/core/components/functional/if/if.ts +0 -0
  231. package/src/core/components/functional/jsonata/jsonata.md +42 -37
  232. package/src/core/components/functional/list/list.demo.ts +0 -0
  233. package/src/core/components/functional/list/list.md +103 -43
  234. package/src/core/components/functional/list/list.ts +17 -4
  235. package/src/core/components/functional/mix/mix.md +31 -26
  236. package/src/core/components/functional/queue/queue.demo.ts +10 -7
  237. package/src/core/components/functional/queue/queue.md +40 -61
  238. package/src/core/components/functional/router/router.demo.ts +16 -16
  239. package/src/core/components/functional/router/router.md +64 -65
  240. package/src/core/components/functional/router/router.ts +0 -0
  241. package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +0 -0
  242. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  243. package/src/core/components/functional/sdui/component-catalog.json +2 -2
  244. package/src/core/components/functional/sdui/example.json +19 -86
  245. package/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
  246. package/src/core/components/functional/sdui/sdui-immutable.spec.ts +74 -0
  247. package/src/core/components/functional/sdui/sdui.md +187 -358
  248. package/src/core/components/functional/sdui/sdui.ts +33 -8
  249. package/src/core/components/functional/sdui/types.ts +0 -0
  250. package/src/core/components/functional/states/states.demo.ts +21 -22
  251. package/src/core/components/functional/states/states.md +86 -61
  252. package/src/core/components/functional/states/states.ts +1 -1
  253. package/src/core/components/functional/submit/submit.md +64 -72
  254. package/src/core/components/functional/submit/submit.spec.ts +60 -0
  255. package/src/core/components/functional/submit/submit.ts +6 -3
  256. package/src/core/components/functional/subscriber/subscriber.ts +0 -0
  257. package/src/core/components/functional/translation/translation.md +38 -0
  258. package/src/core/components/functional/value/value.md +34 -22
  259. package/src/core/components/functional/value/value.ts +0 -0
  260. package/src/core/components/ui/_css/size.ts +0 -0
  261. package/src/core/components/ui/alert/alert.md +48 -58
  262. package/src/core/components/ui/badge/badge.md +27 -34
  263. package/src/core/components/ui/button/button.md +139 -106
  264. package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
  265. package/src/core/components/ui/captcha/captcha.md +17 -32
  266. package/src/core/components/ui/card/card.md +6 -6
  267. package/src/core/components/ui/divider/divider.md +8 -11
  268. package/src/core/components/ui/form/checkbox/checkbox.md +90 -42
  269. package/src/core/components/ui/form/fieldset/fieldset.md +31 -75
  270. package/src/core/components/ui/form/form-actions/form-actions.md +14 -16
  271. package/src/core/components/ui/form/form-layout/form-layout.md +19 -29
  272. package/src/core/components/ui/form/input/input.md +108 -90
  273. package/src/core/components/ui/form/input/input.ts +8 -2
  274. package/src/core/components/ui/form/radio/radio.md +65 -30
  275. package/src/core/components/ui/form/select/select.md +60 -45
  276. package/src/core/components/ui/form/switch/switch.md +57 -34
  277. package/src/core/components/ui/form/textarea/textarea.md +55 -38
  278. package/src/core/components/ui/group/group.md +35 -33
  279. package/src/core/components/ui/icon/icon.md +4 -4
  280. package/src/core/components/ui/image/image.md +41 -107
  281. package/src/core/components/ui/link/link.md +6 -6
  282. package/src/core/components/ui/loader/loader.md +30 -55
  283. package/src/core/components/ui/menu/menu.md +27 -27
  284. package/src/core/components/ui/modal/modal.md +72 -96
  285. package/src/core/components/ui/pop/pop.md +80 -158
  286. package/src/core/components/ui/progress/progress.md +2 -2
  287. package/src/core/components/ui/table/table.md +91 -255
  288. package/src/core/components/ui/theme/theme.md +11 -36
  289. package/src/core/components/ui/toast/toast.md +48 -117
  290. package/src/core/components/ui/tooltip/tooltip.md +27 -62
  291. package/src/core/decorators/subscriber/bind.ts +9 -14
  292. package/src/core/decorators/subscriber/subscribe.ts +15 -9
  293. package/src/core/decorators/subscriber/subscribe.type-test.ts +14 -5
  294. package/src/core/mixins/Subscriber.ts +0 -0
  295. package/src/core/utils/DataBindObserver.ts +0 -0
  296. package/src/core/utils/LocationHandler.spec.ts +80 -0
  297. package/src/core/utils/LocationHandler.ts +5 -9
  298. package/src/core/utils/Objects.ts +0 -0
  299. package/src/core/utils/PublisherProxy.ts +166 -125
  300. package/src/core/utils/deepReadonly.spec.ts +66 -0
  301. package/src/core/utils/deepReadonly.ts +71 -0
  302. package/src/core/utils/immutableValue.spec.ts +54 -0
  303. package/src/core/utils/immutableValue.ts +102 -0
  304. package/src/core/utils/nestedDotForm.spec.ts +88 -0
  305. package/src/core/utils/publisherImmutable.spec.ts +76 -0
  306. package/src/core/utils/route.ts +0 -0
  307. package/src/core/utils/strictGet.spec.ts +61 -0
  308. package/src/core/utils/strictGet.ts +102 -0
  309. package/src/css.d.ts +19 -0
  310. package/src/docs/components/docs-demo-sources.ts +55 -140
  311. package/src/docs/components/docs-lit-demo.ts +1 -3
  312. package/src/docs/components/docs-source-link.ts +0 -82
  313. package/src/docs/decorators/ancestor-attribute.md +59 -0
  314. package/src/docs/decorators/auto-subscribe.md +40 -0
  315. package/src/docs/decorators/bind.md +76 -0
  316. package/src/docs/decorators/get.md +160 -0
  317. package/src/docs/decorators/handle.md +119 -0
  318. package/src/docs/decorators/on-assign.md +63 -0
  319. package/src/docs/decorators/patch.md +44 -0
  320. package/src/docs/decorators/post.md +134 -0
  321. package/src/docs/decorators/publish.md +56 -0
  322. package/src/docs/decorators/put.md +51 -0
  323. package/src/docs/decorators/subscribe.md +87 -0
  324. package/src/docs/decorators/wait-for-ancestors.md +76 -0
  325. package/src/docs/directives/sub.md +75 -0
  326. package/src/docs/directives/t.md +73 -0
  327. package/src/docs/docs-location.spec.ts +56 -0
  328. package/src/docs/docs-location.ts +133 -32
  329. package/src/docs/docs.ts +1 -2
  330. package/src/docs/example/decorators-demo-bind-demos.ts +83 -135
  331. package/src/docs/example/decorators-demo-geo.ts +30 -19
  332. package/src/docs/example/decorators-demo-post.ts +88 -186
  333. package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +165 -268
  334. package/src/docs/example/decorators-demo.ts +85 -98
  335. package/src/docs/example/docs-api-config-demos.ts +19 -20
  336. package/src/docs/example/docs-flight-demos.ts +147 -0
  337. package/src/docs/example/docs-jsonata-demos.ts +52 -52
  338. package/src/docs/example/docs-list-demos.ts +43 -123
  339. package/src/docs/example/docs-provider-keys.ts +21 -28
  340. package/src/docs/example/docs-queue-demos.ts +37 -77
  341. package/src/docs/example/docs-router-demos.ts +20 -25
  342. package/src/docs/example/docs-submit-demos.ts +48 -48
  343. package/src/docs/example/docs-toggle-demos.ts +4 -3
  344. package/src/docs/example/users.ts +0 -0
  345. package/src/docs/getting-started/ai-agents.md +50 -0
  346. package/src/docs/getting-started/create-a-component.md +136 -0
  347. package/src/docs/getting-started/dataFlow.md +87 -0
  348. package/src/docs/getting-started/installation.md +36 -0
  349. package/src/docs/getting-started/my-first-component.md +227 -0
  350. package/src/docs/getting-started/start.md +35 -0
  351. package/src/docs/header/header.ts +11 -6
  352. package/src/docs/home/catalog.ts +1 -1
  353. package/src/docs/home/home.ts +20 -11
  354. package/src/docs/layout.ts +12 -13
  355. package/src/docs/misc/api-configuration.md +79 -0
  356. package/src/docs/misc/dataProviderKey.md +168 -0
  357. package/src/docs/misc/docs-mock-api.md +62 -0
  358. package/src/docs/misc/dynamic-path.md +71 -0
  359. package/src/docs/misc/endpoint.md +45 -0
  360. package/src/docs/misc/html-integration.md +14 -0
  361. package/src/docs/misc/publisher-get-immutability-docs-crawl.json +902 -0
  362. package/src/docs/misc/publisher-get-immutability-docs-recheck.json +13 -0
  363. package/src/docs/misc/publisher-get-immutability-study.md +229 -0
  364. package/src/docs/mock-api/api-config-mock.ts +5 -0
  365. package/src/docs/mock-api/fixtures.ts +0 -278
  366. package/src/docs/mock-api/flights.ts +89 -0
  367. package/src/docs/mock-api/router.ts +3 -4
  368. package/src/docs/mock-api/urls.ts +1 -2
  369. package/src/docs/navigation/navigation.ts +84 -101
  370. package/src/docs/navigation/toc.ts +7 -4
  371. package/src/docs/search/docs-search.json +3188 -5153
  372. package/src/docs/search/markdown-renderer.ts +31 -8
  373. package/src/docs/search/page.ts +9 -6
  374. package/src/docs/search/search.ts +154 -122
  375. package/src/docs/tailwind/css/docs/content.css +4 -5
  376. package/src/tsconfig.declarations.json +22 -0
  377. package/src/tsconfig.emit.json +23 -0
  378. package/src/tsconfig.json +53 -5
  379. package/src/tsconfig.tsbuildinfo +1 -1
  380. package/vite.config.mts +11 -2
  381. package/.agents/skills/concorde-component-docs/SKILL.md +0 -194
  382. package/.taste-skill/after/desktop-fold.jpg +0 -0
  383. package/.taste-skill/after/desktop-page-01.jpg +0 -0
  384. package/.taste-skill/after/desktop-page-02.jpg +0 -0
  385. package/.taste-skill/after/desktop-page-03.jpg +0 -0
  386. package/.taste-skill/after/mobile-fold.jpg +0 -0
  387. package/.taste-skill/after/mobile-page-01.jpg +0 -0
  388. package/.taste-skill/after/report.json +0 -4103
  389. package/.taste-skill/after/tablet-fold.jpg +0 -0
  390. package/.taste-skill/after/tablet-page-01.jpg +0 -0
  391. package/.taste-skill/after/tablet-page-02.jpg +0 -0
  392. package/.taste-skill/before/desktop-fold.jpg +0 -0
  393. package/.taste-skill/before/desktop-page-01.jpg +0 -0
  394. package/.taste-skill/before/desktop-page-02.jpg +0 -0
  395. package/.taste-skill/before/mobile-fold.jpg +0 -0
  396. package/.taste-skill/before/mobile-page-01.jpg +0 -0
  397. package/.taste-skill/before/report.json +0 -2556
  398. package/.taste-skill/before/tablet-fold.jpg +0 -0
  399. package/.taste-skill/before/tablet-page-01.jpg +0 -0
  400. package/.taste-skill/direction.json +0 -510
  401. package/.taste-skill/notes.md +0 -84
  402. package/.taste-skill/prod/desktop-fold.jpg +0 -0
  403. package/.taste-skill/prod/desktop-page-01.jpg +0 -0
  404. package/.taste-skill/prod/desktop-page-02.jpg +0 -0
  405. package/.taste-skill/prod/desktop-page-03.jpg +0 -0
  406. package/.taste-skill/prod/mobile-fold.jpg +0 -0
  407. package/.taste-skill/prod/mobile-page-01.jpg +0 -0
  408. package/.taste-skill/prod/mobile-page-02.jpg +0 -0
  409. package/.taste-skill/prod/report.json +0 -1973
  410. package/.taste-skill/prod/tablet-fold.jpg +0 -0
  411. package/.taste-skill/prod/tablet-page-01.jpg +0 -0
  412. package/.taste-skill/prod/tablet-page-02.jpg +0 -0
  413. package/AUDIT.md +0 -228
  414. package/PLAN-AMELIORATION.md +0 -220
  415. package/ai/AGENTS.md +0 -56
  416. package/ai/cursor/rules/concorde-menu.mdc +0 -15
  417. package/ai/cursor/rules/concorde-scope.mdc +0 -14
  418. package/ai/cursor/rules/concorde-theme.mdc +0 -13
  419. package/ai/cursor/rules/concorde.mdc +0 -66
  420. package/ai/jetbrains/rules/concorde.md +0 -53
  421. package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
  422. package/ai/skills/concorde-imports/SKILL.md +0 -78
  423. package/ai/skills/concorde-menu/SKILL.md +0 -74
  424. package/ai/skills/concorde-scope/SKILL.md +0 -70
  425. package/ai/skills/concorde-theme/SKILL.md +0 -57
  426. package/docs/assets/index-Bb-_LRyY.js +0 -12280
  427. package/src/docs/example/docs-input-autocomplete-demos.ts +0 -110
  428. package/src/docs/example/docs-joke-demos.ts +0 -297
  429. /package/{src → docs/src}/core/components/ui/form/input-autocomplete/input-autocomplete.md +0 -0
  430. /package/{src → docs/src}/docs/_core-concept/dataFlow.md +0 -0
  431. /package/{src → docs/src}/docs/_core-concept/overview.md +0 -0
  432. /package/{src → docs/src}/docs/_decorators/ancestor-attribute.md +0 -0
  433. /package/{src → docs/src}/docs/_decorators/auto-subscribe.md +0 -0
  434. /package/{src → docs/src}/docs/_decorators/bind.md +0 -0
  435. /package/{src → docs/src}/docs/_decorators/get.md +0 -0
  436. /package/{src → docs/src}/docs/_decorators/handle.md +0 -0
  437. /package/{src → docs/src}/docs/_decorators/on-assign.md +0 -0
  438. /package/{src → docs/src}/docs/_decorators/patch.md +0 -0
  439. /package/{src → docs/src}/docs/_decorators/post.md +0 -0
  440. /package/{src → docs/src}/docs/_decorators/publish.md +0 -0
  441. /package/{src → docs/src}/docs/_decorators/put.md +0 -0
  442. /package/{src → docs/src}/docs/_decorators/subscribe.md +0 -0
  443. /package/{src → docs/src}/docs/_decorators/wait-for-ancestors.md +0 -0
  444. /package/{src → docs/src}/docs/_directives/sub.md +0 -0
  445. /package/{src → docs/src}/docs/_getting-started/ai-agents.md +0 -0
  446. /package/{src → docs/src}/docs/_getting-started/concorde-manual-install.md +0 -0
  447. /package/{src → docs/src}/docs/_getting-started/concorde-outside.md +0 -0
  448. /package/{src → docs/src}/docs/_getting-started/create-a-component.md +0 -0
  449. /package/{src → docs/src}/docs/_getting-started/my-first-component.md +0 -0
  450. /package/{src → docs/src}/docs/_getting-started/start.md +0 -0
  451. /package/{src → docs/src}/docs/_misc/api-configuration.md +0 -0
  452. /package/{src → docs/src}/docs/_misc/dataProviderKey.md +0 -0
  453. /package/{src → docs/src}/docs/_misc/docs-mock-api.md +0 -0
  454. /package/{src → docs/src}/docs/_misc/dynamic-path.md +0 -0
  455. /package/{src → docs/src}/docs/_misc/endpoint.md +0 -0
  456. /package/{src → docs/src}/docs/_misc/formelement-subscriber-removal.md +0 -0
  457. /package/{src → docs/src}/docs/_misc/html-integration.md +0 -0
  458. /package/src/docs/{_getting-started → getting-started}/components.md +0 -0
  459. /package/src/docs/{_getting-started → getting-started}/theming.md +0 -0
@@ -0,0 +1,452 @@
1
+ <!DOCTYPE html>
2
+ <html lang="fr" data-crawl-url="https://concorde.supersoniks.org/crawl/hubs/remote-data.html" data-doc-id="hubs/remote-data">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Fetching remote data in Concorde — Concorde</title>
7
+ <meta name="description" content="Hub for loading online data: @get decorator, Endpoint, API configuration, dynamic paths, sonic-list fetch, sonic-queue, legacy sonic-fetch.">
8
+ <meta name="keywords" content="@get, fetch, remote data, API, Endpoint, ApiResult, serviceURL, sonic-list, sonic-queue, HTTP GET">
9
+ <meta name="concorde-doc-id" content="hubs/remote-data">
10
+ <link rel="canonical" href="https://concorde.supersoniks.org/crawl/hubs/remote-data.html">
11
+ </head>
12
+ <body>
13
+ <header>
14
+ <p><a href="../index.html">Concorde documentation (crawl)</a></p>
15
+ </header>
16
+ <main>
17
+ <article>
18
+ <p class="doc-lead" id="doc-summary"><strong>Concorde documentation — Fetching remote data in Concorde</strong>. Hub for loading online data: @get decorator, Endpoint, API configuration, dynamic paths, sonic-list fetch, sonic-queue, legacy sonic-fetch. <span>Doc ID: <code>hubs/remote-data</code>. Keywords: @get, fetch, remote data, API, Endpoint, ApiResult, serviceURL, sonic-list, sonic-queue, HTTP GET. URL: <a href="https://concorde.supersoniks.org/crawl/hubs/remote-data.html">https://concorde.supersoniks.org/crawl/hubs/remote-data.html</a>.</span></p>
19
+ <section id="core-components-functional-fetch-fetch" data-doc-id="core/components/functional/fetch/fetch">
20
+ <h2><a href="../core/components/functional/fetch/fetch.html">Fetch</a></h2>
21
+ <p><strong>Doc ID:</strong> <code>core/components/functional/fetch/fetch</code> · <a href="../core/components/functional/fetch/fetch.html">full page</a></p>
22
+ <p>&gt; New apps: prefer @get for a typed GET on a component, or List / Queue with fetch for collections. Use Local API demos (serviceURL=&quot;/docs-mock-api&quot;) to try examples offline.</p>
23
+ <pre class="doc-excerpt">Fetch
24
+
25
+ &gt; New apps: prefer @get for a typed GET on a component, or List / Queue with fetch for collections. Use Local API demos (serviceURL=&quot;/docs-mock-api&quot;) to try examples offline.
26
+
27
+ The sonic-fetch component requests and stores API data. It extends the Fetcher and Subscriber mixins.
28
+
29
+ Basic usage
30
+ In order to work properly the sonic-fetch component needs at least the following attributes.
31
+ - serviceURL : A base service url. This attribute can be inherited from an ancestor.
32
+ ex : /docs-mock-api
33
+ - endPoint : the specific location where requests for information are sent (see the api docs).
34
+ ex : api/users | api/users?page=2 | api/users/2
35
+ - dataProvider (Required) : An ID that is used as a reference to the object storing the data returned by the API.
36
+ This attribute can be inherited from an ancestor.
37
+
38
+ Hover to see the data
39
+
40
+ DataProvider as an endPoint
41
+ If no endPoint is specified it will be filled by the dataProvider ID instead
42
+
43
+ Hover to see the data
44
+
45
+ HeadersDataProvider
46
+
47
+ Deprecated
48
+
49
+ Key
50
+ When the key attribute is present, only a sub-part of the data received is injected into the dataProvider.
51
+ We can use the dot syntax to target what we want to keep.
52
+
53
+ For example if the data </pre>
54
+ </section>
55
+ <section id="core-components-functional-list-list" data-doc-id="core/components/functional/list/list">
56
+ <h2><a href="../core/components/functional/list/list.html">List</a></h2>
57
+ <p><strong>Doc ID:</strong> <code>core/components/functional/list/list</code> · <a href="../core/components/functional/list/list.html">full page</a></p>
58
+ <p>&gt; Try offline: serviceURL=&quot;/docs-mock-api&quot; and dataProvider=&quot;api/users&quot; with key=&quot;data&quot; — see Local API demos. Recommended patterns: Data flow.</p>
59
+ <pre class="doc-excerpt">List
60
+
61
+ &gt; Try offline: serviceURL=&quot;/docs-mock-api&quot; and dataProvider=&quot;api/users&quot; with key=&quot;data&quot; — see Local API demos. Recommended patterns: Data flow.
62
+
63
+ The sonic-list component renders one row per entry in props (array from fetch or set on the element).
64
+
65
+ List extends Subscriber and Fetcher:
66
+ Subscriber — props + dataProvider
67
+ Fetcher — optional fetch + serviceURL / key (see Fetch)
68
+
69
+ Row renderer (items) — recommended
70
+
71
+ From a Lit parent, pass a function on the items property (ListItems). Each row is wrapped in a sonic-subscriber with dataProvider=&quot;…/list-item/n&quot; (hover rows with debug).
72
+
73
+ private items = ({ firstname, lastname, email, avatar }) =&gt; html
74
+
75
+ ${firstname} ${lastname}
76
+ ${email}
77
+ ;
78
+
79
+ html ;
80
+
81
+ Use .items=${fn} (property binding): Lit passes functions only as properties, not as HTML attributes — @property({ type: Function }) does not change that. Same for .noItems, .separator, .skeleton. The callback receives each row object (replacing data-bind / in a ).
82
+
83
+ Live demo + TypeScript source (one file, no Markdown copy):
84
+
85
+ Implementation: src/docs/example/docs-users-list.ts — row markup in the items callback (item.firstname, …), same idea as replacing data-bind / in a .
86
+
87
+ Alte</pre>
88
+ </section>
89
+ <section id="core-components-functional-queue-queue" data-doc-id="core/components/functional/queue/queue">
90
+ <h2><a href="../core/components/functional/queue/queue.html">Queue</a></h2>
91
+ <p><strong>Doc ID:</strong> <code>core/components/functional/queue/queue</code> · <a href="../core/components/functional/queue/queue.html">full page</a></p>
92
+ <p>&gt; Try offline: serviceURL=&quot;/docs-mock-api&quot; — see Local API demos. Row rendering: Data flow (.items property binding).</p>
93
+ <pre class="doc-excerpt">Queue
94
+
95
+ &gt; Try offline: serviceURL=&quot;/docs-mock-api&quot; — see Local API demos. Row rendering: Data flow (.items property binding).
96
+
97
+ sonic-queue loads data in batches. Each batch is an internal List with its own dataProvider (…/list-item/0, …/1, …).
98
+
99
+ | Mechanism | Role |
100
+ |-----------|------|
101
+ | dataProviderExpression | API path template; $offset and $limit are replaced per batch |
102
+ | lazyload | Load the next batch when the user scrolls near the end |
103
+ | dataFilterProvider | Publisher id of a form (formDataProvider); field values are merged into the request query string |
104
+ | filteredFields | Optional list of form field names to exclude from the query (space-separated) — omit when every field should be sent |
105
+ | .items, .noItems, .separator, .skeleton | Lit callbacks forwarded to each batch list (use the dot — functions are properties, not attributes) |
106
+
107
+ Lazy load — $offset and $limit
108
+
109
+ When the expression contains $offset and $limit, the queue:
110
+
111
+ 1. Fetches the first batch with offset=0 (or the initial offset attribute) and perpage=$limit.
112
+ 2. On scroll, appends a batch with offset increased by the previous batch size.
113
+ 3. Stops when a batch returns fewer rows than limit (or none).
114
+
115
+ The doc mock im</pre>
116
+ </section>
117
+ <section id="docs-_core-concept-dataFlow" data-doc-id="docs/_core-concept/dataFlow">
118
+ <h2><a href="../docs/_core-concept/dataFlow.html">Data flow</a></h2>
119
+ <p><strong>Doc ID:</strong> <code>docs/_core-concept/dataFlow</code> · <a href="../docs/_core-concept/dataFlow.html">full page</a></p>
120
+ <p>Recommended patterns for new Concorde apps (Lit + TypeScript). Under the hood, data lives in a DataProvider store (legacy Publisher API: Legacy: Sharing data).</p>
121
+ <pre class="doc-excerpt">Data flow
122
+
123
+ Recommended patterns for new Concorde apps (Lit + TypeScript). Under the hood, data lives in a DataProvider store (legacy Publisher API: Legacy: Sharing data).
124
+
125
+ Quick map
126
+
127
+ | Need | Use |
128
+ |------|-----|
129
+ | Read/write in code | get / set / dp + DataProviderKey (static paths only) |
130
+ | Reactive Lit template | sub(key) or @subscribe |
131
+ | Read component state from store | @subscribe + DataProviderKey + @state |
132
+ | Inherit ancestor attributes | @ancestorAttribute |
133
+ | Write from component state | @publish |
134
+ | React to assignments | @handle |
135
+ | HTTP GET | @get + Endpoint, or sonic-list / sonic-queue with fetch |
136
+ | HTTP POST (body from store) | @post + Endpoint + body DataProviderKey |
137
+ | HTTP PUT / PATCH (body from store) | @put / @patch — same model as @post |
138
+ | Forms | formDataProvider + name on fields (no Subscriber on form elements) |
139
+ | Derived / aggregate (JSONata) | derive() or sonic-jsonata — Jsonata |
140
+ | Offline doc demos | serviceURL=&quot;/docs-mock-api&quot; — Local API demos |
141
+
142
+ Skill: concorde-get-set-dp in the package ai/ folder.
143
+
144
+ DataProviderKey
145
+
146
+ import { DataProviderKey } from &quot;@supersoniks/concorde/dataProviderKey&quot;;
147
+ import { dp, get, set } from &quot;@supersoniks/concorde/utils&quot;;
148
+
149
+ c</pre>
150
+ </section>
151
+ <section id="docs-_decorators-get" data-doc-id="docs/_decorators/get">
152
+ <h2><a href="../docs/_decorators/get.html">@get</a></h2>
153
+ <p><strong>Doc ID:</strong> <code>docs/_decorators/get</code> · <a href="../docs/_decorators/get.html">full page</a></p>
154
+ <p>@get loads data and stores the result in an optional ApiResult&lt;T&gt; property.</p>
155
+ <pre class="doc-excerpt">@get
156
+
157
+ @get loads data and stores the result in an optional ApiResult property.
158
+ The property is undefined until a result is available.
159
+
160
+ - payload.result: typed data;
161
+ - payload.response: the HTTP response;
162
+ - payload.request: the request that was sent.
163
+
164
+ Minimal usage
165
+
166
+ const usersEndpoint = new Endpoint (&quot;users&quot;);
167
+
168
+ @get(usersEndpoint)
169
+ @state()
170
+ payload?: ApiResult ;
171
+
172
+ The same decorator adapts to a method. The method receives the complete
173
+ ApiResult payload after each GET:
174
+
175
+ @get(usersEndpoint)
176
+ handleUsers(payload?: ApiResult ) {
177
+ if (!payload) return;
178
+
179
+ console.log(payload.response?.status);
180
+ console.log(payload.result);
181
+ }
182
+
183
+ The first argument is always an
184
+ Endpoint . API configuration is read
185
+ from the HTML scope (serviceURL, token, etc.), so the component is usually
186
+ placed below an element that provides this configuration.
187
+
188
+ Refetching a GET
189
+
190
+ From the component
191
+
192
+ Keep the decorator in a constant to access refetch(component). Refetch only
193
+ targets the instance passed as the argument, even before it has received a
194
+ result.
195
+
196
+ const usersGet = get(new Endpoint (&quot;users&quot;));
197
+
198
+ @usersGet
199
+ @state()
200
+ payload?: ApiResult ;
201
+
202
+ async refresh() {
203
+ const payload = await usersGet.refetch(this);
204
+ console.log(</pre>
205
+ </section>
206
+ <section id="docs-_decorators-patch" data-doc-id="docs/_decorators/patch">
207
+ <h2><a href="../docs/_decorators/patch.html">@patch</a></h2>
208
+ <p><strong>Doc ID:</strong> <code>docs/_decorators/patch</code> · <a href="../docs/_decorators/patch.html">full page</a></p>
209
+ <p>@patch applies a partial update with the body from a publisher. It uses the</p>
210
+ <pre class="doc-excerpt">@patch
211
+
212
+ @patch applies a partial update with the body from a publisher. It uses the
213
+ same model as @post:
214
+ Endpoint , DataProviderKey , ApiResult , options, and the
215
+ send(component) handle.
216
+
217
+ Minimal usage
218
+
219
+ const bodyKey = new DataProviderKey &gt;(&quot;users.patch&quot;);
220
+ const patchUser = patch(new Endpoint (&quot;users/42&quot;), bodyKey);
221
+
222
+ @patchUser
223
+ @state()
224
+ payload?: ApiResult ;
225
+
226
+ The same decorator adapts to a method:
227
+
228
+ @patch(new Endpoint (&quot;users/42&quot;), bodyKey)
229
+ handlePatch(payload?: ApiResult ) {
230
+ if (payload?.response?.ok) console.log(payload.result);
231
+ }
232
+
233
+ To run the operation again from the component:
234
+
235
+ async savePatch() {
236
+ await patchUser.send(this);
237
+ }
238
+
239
+ send(component) returns a Promise resolved after the PATCH completes. See
240
+ @post for the method-decorator form and the
241
+ when: &quot;before&quot; option.
242
+
243
+ The PATCH is also sent automatically when the body mutates, unless
244
+ autoPostOnBodyMutation: false is set. The available options are described in
245
+ @post:
246
+
247
+ - autoPostOnBodyMutation
248
+ - skipIfBodyMissing
249
+ - refetchEveryMs
250
+ - skipEmptyPlaceholder
251
+ - triggerKey
252
+
253
+ Pass explicit API configuration as the third argument:
254
+
255
+ @patch(endpoint, bodyKey, apiConfigurationKey)
256
+
257
+ Import
258
+
259
+ import { patch, type ApiResult } from &quot;@supersoniks/</pre>
260
+ </section>
261
+ <section id="docs-_decorators-post" data-doc-id="docs/_decorators/post">
262
+ <h2><a href="../docs/_decorators/post.html">@post</a></h2>
263
+ <p><strong>Doc ID:</strong> <code>docs/_decorators/post</code> · <a href="../docs/_decorators/post.html">full page</a></p>
264
+ <p>@post sends the contents of a publisher and stores the response in an</p>
265
+ <pre class="doc-excerpt">@post
266
+
267
+ @post sends the contents of a publisher and stores the response in an
268
+ optional ApiResult property. The property is undefined until a result
269
+ is available.
270
+
271
+ Minimal usage
272
+
273
+ Pass an Endpoint and a DataProviderKey for the request body.
274
+
275
+ const userBodyKey = new DataProviderKey (&quot;users.form&quot;);
276
+ const createUser = post(new Endpoint (&quot;users&quot;), userBodyKey);
277
+
278
+ @createUser
279
+ @state()
280
+ payload?: ApiResult ;
281
+
282
+ The same decorator adapts to a method and receives the complete payload:
283
+
284
+ @post(new Endpoint (&quot;users&quot;), userBodyKey)
285
+ handleCreate(payload?: ApiResult ) {
286
+ if (payload?.response?.ok) console.log(payload.result);
287
+ }
288
+
289
+ The current body is read from userBodyKey. By default, the POST is sent when
290
+ the component connects and after each body mutation. Mutations in the same
291
+ frame are coalesced into one request.
292
+
293
+ API configuration is read from the HTML scope, as with
294
+ @get.
295
+
296
+ Sending the POST again
297
+
298
+ From the component
299
+
300
+ Keep the decorator to access send(component). The body is read again when the
301
+ operation runs.
302
+
303
+ async saveAgain() {
304
+ const payload = await createUser.send(this);
305
+ console.log(payload?.result);
306
+ }
307
+
308
+ send() returns a Promise | undefined&gt; that resolves after the
309
+ operation completes. It</pre>
310
+ </section>
311
+ <section id="docs-_decorators-put" data-doc-id="docs/_decorators/put">
312
+ <h2><a href="../docs/_decorators/put.html">@put</a></h2>
313
+ <p><strong>Doc ID:</strong> <code>docs/_decorators/put</code> · <a href="../docs/_decorators/put.html">full page</a></p>
314
+ <p>@put replaces a resource with the body from a publisher. It uses exactly the</p>
315
+ <pre class="doc-excerpt">@put
316
+
317
+ @put replaces a resource with the body from a publisher. It uses exactly the
318
+ same model as @post:
319
+ Endpoint , DataProviderKey , ApiResult , options, and the
320
+ send(component) handle.
321
+
322
+ Minimal usage
323
+
324
+ const bodyKey = new DataProviderKey (&quot;users.form&quot;);
325
+ const updateUser = put(new Endpoint (&quot;users/42&quot;), bodyKey);
326
+
327
+ @updateUser
328
+ @state()
329
+ payload?: ApiResult ;
330
+
331
+ The same decorator adapts to a method:
332
+
333
+ @put(new Endpoint (&quot;users/42&quot;), bodyKey)
334
+ handleUpdate(payload?: ApiResult ) {
335
+ if (payload?.response?.ok) console.log(payload.result);
336
+ }
337
+
338
+ To run the operation again from the component:
339
+
340
+ async update() {
341
+ await updateUser.send(this);
342
+ }
343
+
344
+ send(component) returns a Promise resolved after the PUT completes. See
345
+ @post for the method-decorator form and the
346
+ when: &quot;before&quot; option.
347
+
348
+ The PUT is also sent automatically when the body mutates, unless
349
+ autoPostOnBodyMutation: false is set. See
350
+ @post for the option details:
351
+
352
+ - autoPostOnBodyMutation
353
+ - skipIfBodyMissing
354
+ - refetchEveryMs
355
+ - skipEmptyPlaceholder
356
+ - triggerKey
357
+
358
+ Pass explicit API configuration as the third argument:
359
+
360
+ @put(endpoint, bodyKey, apiConfigurationKey)
361
+
362
+ Import
363
+
364
+ import { put, type ApiResult } from &quot;@supersoniks/concorde/decorators&quot;;
365
+ impo</pre>
366
+ </section>
367
+ <section id="docs-_misc-api-configuration" data-doc-id="docs/_misc/api-configuration">
368
+ <h2><a href="../docs/_misc/api-configuration.html">API configuration</a></h2>
369
+ <p><strong>Doc ID:</strong> <code>docs/_misc/api-configuration</code> · <a href="../docs/_misc/api-configuration.html">full page</a></p>
370
+ <p>APIConfiguration is the object built by HTML.getApiConfiguration from ancestor attributes on the DOM (or from a typed publisher — see @get / @post configuration key). It is passed to API by fetchers, </p>
371
+ <pre class="doc-excerpt">API configuration
372
+
373
+ APIConfiguration is the object built by HTML.getApiConfiguration from ancestor attributes on the DOM (or from a typed publisher — see @get / @post configuration key). It is passed to API by fetchers, sonic-submit, the wording() directive, @get, @post, @put, and @patch.
374
+
375
+ &gt; Mock service: same Local API demos Service Worker / Vite middleware. Routes used on this page are listed in the API config routes section below.
376
+
377
+ Attribute map
378
+
379
+ | Attribute (ancestor) | APIConfiguration field | Role |
380
+ |---------------------|---------------------------|------|
381
+ | serviceURL | serviceURL | Base URL (e.g. /docs-mock-api) |
382
+ | token | token | Static Bearer sent on REST calls |
383
+ | userName / password | userName / password | Basic auth for tokenProvider fetch only |
384
+ | eventsApiToken | authToken | Bearer for tokenProvider when no Basic |
385
+ | tokenProvider | tokenProvider | Path to GET a new token ({ token } JSON) |
386
+ | wordingProvider | — (read by wording()) | Base path + query for label batch GET |
387
+ | wordingVersionProvider | — | Publisher id; bump version → reload wordings |
388
+ | credentials | credentials | fetch credentials mode |
389
+ | addHTTPResponse | addHTTPResponse | Attach sonichttpresponse </pre>
390
+ </section>
391
+ <section id="docs-_misc-dynamic-path" data-doc-id="docs/_misc/dynamic-path">
392
+ <h2><a href="../docs/_misc/dynamic-path.html">Dynamic path placeholders</a></h2>
393
+ <p><strong>Doc ID:</strong> <code>docs/_misc/dynamic-path</code> · <a href="../docs/_misc/dynamic-path.html">full page</a></p>
394
+ <p>Decorators and DataProviderKey paths can include placeholders resolved on the host component at runtime:</p>
395
+ <pre class="doc-excerpt">Dynamic path placeholders
396
+
397
+ Decorators and DataProviderKey paths can include placeholders resolved on the host component at runtime:
398
+
399
+ - ${prop} or {$prop} — e.g. &quot;users/${userId}&quot;, &quot;api/sessions/${sessionId}/sync&quot;
400
+ - Nested expressions — e.g. &quot;teams.${teamId}.members&quot;
401
+
402
+ Resolution is done by resolveDynamicPath. The root property names (userId, sessionId, …) are watched via requestAnimationFrame (see dynamicPropertyWatch.ts).
403
+
404
+ Default behaviour (ready / not ready)
405
+
406
+ | Placeholder value | Path ready? | Inserted segment | Notes |
407
+ |-------------------|---------------|------------------|-------|
408
+ | undefined | no | — | Wait until defined |
409
+ | null | no | — | Same as undefined |
410
+ | &quot;&quot; | yes | empty string | e.g. sessions//sync — request may still run |
411
+ | 0 | yes | &quot;0&quot; | Not treated as “missing” |
412
+ | false | yes | &quot;false&quot; | |
413
+ | 42, &quot;alpha&quot; | yes | &quot;42&quot;, &quot;alpha&quot; | |
414
+
415
+ When ready: false, decorators do not call the network (for @get / @post / @put / @patch), unsubscribe (@bind / @subscribe), or skip publisher binding (@publish / @handle). The decorated property is often left unchanged or set to undefined (HTTP decorators).
416
+
417
+ When the placeholder later becomes valid, observers run again and behaviour r</pre>
418
+ </section>
419
+ <section id="docs-_misc-endpoint" data-doc-id="docs/_misc/endpoint">
420
+ <h2><a href="../docs/_misc/endpoint.html">Endpoint</a></h2>
421
+ <p><strong>Doc ID:</strong> <code>docs/_misc/endpoint</code> · <a href="../docs/_misc/endpoint.html">full page</a></p>
422
+ <p>Endpoint&lt;T, U&gt; describes a single HTTP path (or a path accepted by API.get) and carries the expected response type T. Unlike DataProviderKey, there is no dot-navigation: the path is one string.</p>
423
+ <pre class="doc-excerpt">Endpoint
424
+
425
+ Endpoint describes a single HTTP path (or a path accepted by API.get) and carries the expected response type T. Unlike DataProviderKey, there is no dot-navigation: the path is one string.
426
+
427
+ The optional second generic U (default any) describes host properties used to resolve dynamic segments in the path (${…} / {$…}), for example with @get or @post. See Dynamic path placeholders for null / undefined / &quot;&quot; / 0 and skipEmptyPlaceholder.
428
+
429
+ Import
430
+
431
+ import { Endpoint } from &quot;@supersoniks/concorde/utils/endpoint&quot;;
432
+
433
+ Construction
434
+
435
+ const users = new Endpoint&amp;lt;User[]&amp;gt;(&quot;users?limit=10&quot;);
436
+ users.path; // &quot;users?limit=10&quot;
437
+
438
+ const one = new Endpoint&amp;lt;User, { userId: string }&amp;gt;(&quot;users/${userId}&quot;);
439
+ // userId on the host class is observed when used with @get
440
+
441
+ Normalization
442
+
443
+ Endpoint.normalizePath trims the string, rejects an empty path, strips leading slashes for paths relative to serviceURL, collapses duplicate slashes, and validates absolute http(s):// URLs.
444
+
445
+ Publisher key for payloads
446
+
447
+ getDataProviderKey() returns a typed publisher key whose path matches the endpoint path (payload typing follows ApiResult for this endpoint). Useful when pairing @get with @publish / @subscribe (see</pre>
448
+ </section>
449
+ </article>
450
+ </main>
451
+ </body>
452
+ </html>
@@ -0,0 +1,103 @@
1
+ <!DOCTYPE html>
2
+ <html lang="fr" data-doc-id="crawl-index">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Concorde documentation index</title>
7
+ <meta name="description" content="Static crawl index for Concorde framework documentation. All pages use .html under /crawl/.">
8
+ <meta name="keywords" content="Concorde, documentation index, web components, Lit, DataProvider">
9
+ <link rel="canonical" href="https://concorde.supersoniks.org/crawl/index.html">
10
+ </head>
11
+ <body>
12
+ <header>
13
+ <h1>Concorde documentation</h1>
14
+ <p>Static pages for crawlers and AI indexing. Interactive docs: <a href="https://concorde.supersoniks.org/">https://concorde.supersoniks.org/</a></p>
15
+ <p>Full text mirror: <a href="https://concorde.supersoniks.org/llms-full.txt">llms-full.txt</a></p>
16
+ <ul>
17
+ <li><a href="hubs/decorators.html">Decorators hub (@get, @post, …)</a></li>
18
+ <li><a href="hubs/remote-data.html">Remote data hub (@get, List, Queue)</a></li>
19
+ <li><a href="hubs/form-components.html">Form components hub</a></li>
20
+ </ul>
21
+ </header>
22
+ <main>
23
+ <ul>
24
+ <li><a href="core/components/functional/date/date.html">Date</a> <small>(core/components/functional/date/date)</small></li>
25
+ <li><a href="core/components/functional/fetch/fetch.html">Fetch</a> <small>(core/components/functional/fetch/fetch)</small></li>
26
+ <li><a href="core/components/functional/if/if.html">if</a> <small>(core/components/functional/if/if)</small></li>
27
+ <li><a href="core/components/functional/jsonata/jsonata.html">Jsonata</a> <small>(core/components/functional/jsonata/jsonata)</small></li>
28
+ <li><a href="core/components/functional/list/list.html">List</a> <small>(core/components/functional/list/list)</small></li>
29
+ <li><a href="core/components/functional/mix/mix.html">Mix</a> <small>(core/components/functional/mix/mix)</small></li>
30
+ <li><a href="core/components/functional/queue/queue.html">Queue</a> <small>(core/components/functional/queue/queue)</small></li>
31
+ <li><a href="core/components/functional/router/router.html">Router</a> <small>(core/components/functional/router/router)</small></li>
32
+ <li><a href="core/components/functional/sdui/sdui-extension-points.html">SDUI — points d’extension publics</a> <small>(core/components/functional/sdui/sdui-extension-points)</small></li>
33
+ <li><a href="core/components/functional/sdui/sdui.html">SDUI</a> <small>(core/components/functional/sdui/sdui)</small></li>
34
+ <li><a href="core/components/functional/states/states.html">States</a> <small>(core/components/functional/states/states)</small></li>
35
+ <li><a href="core/components/functional/submit/submit.html">Submit</a> <small>(core/components/functional/submit/submit)</small></li>
36
+ <li><a href="core/components/functional/subscriber/subscriber.html">Subscriber</a> <small>(core/components/functional/subscriber/subscriber)</small></li>
37
+ <li><a href="core/components/functional/value/value.html">Value</a> <small>(core/components/functional/value/value)</small></li>
38
+ <li><a href="core/components/ui/alert-messages/alert-messages.html">Alert messages</a> <small>(core/components/ui/alert-messages/alert-messages)</small></li>
39
+ <li><a href="core/components/ui/alert/alert.html">Alert</a> <small>(core/components/ui/alert/alert)</small></li>
40
+ <li><a href="core/components/ui/badge/badge.html">Badge</a> <small>(core/components/ui/badge/badge)</small></li>
41
+ <li><a href="core/components/ui/button/button.html">Button</a> <small>(core/components/ui/button/button)</small></li>
42
+ <li><a href="core/components/ui/captcha/captcha.html">Captcha</a> <small>(core/components/ui/captcha/captcha)</small></li>
43
+ <li><a href="core/components/ui/card/card.html">Card</a> <small>(core/components/ui/card/card)</small></li>
44
+ <li><a href="core/components/ui/divider/divider.html">Divider</a> <small>(core/components/ui/divider/divider)</small></li>
45
+ <li><a href="core/components/ui/form/checkbox/checkbox.html">Checkbox</a> <small>(core/components/ui/form/checkbox/checkbox)</small></li>
46
+ <li><a href="core/components/ui/form/fieldset/fieldset.html">Fieldset</a> <small>(core/components/ui/form/fieldset/fieldset)</small></li>
47
+ <li><a href="core/components/ui/form/form-actions/form-actions.html">Form actions</a> <small>(core/components/ui/form/form-actions/form-actions)</small></li>
48
+ <li><a href="core/components/ui/form/form-layout/form-layout.html">Form layout</a> <small>(core/components/ui/form/form-layout/form-layout)</small></li>
49
+ <li><a href="core/components/ui/form/input-autocomplete/input-autocomplete.html">Input-autocomplete</a> <small>(core/components/ui/form/input-autocomplete/input-autocomplete)</small></li>
50
+ <li><a href="core/components/ui/form/input/input.html">Input</a> <small>(core/components/ui/form/input/input)</small></li>
51
+ <li><a href="core/components/ui/form/radio/radio.html">Radio</a> <small>(core/components/ui/form/radio/radio)</small></li>
52
+ <li><a href="core/components/ui/form/select/select.html">Select</a> <small>(core/components/ui/form/select/select)</small></li>
53
+ <li><a href="core/components/ui/form/switch/switch.html">Switch</a> <small>(core/components/ui/form/switch/switch)</small></li>
54
+ <li><a href="core/components/ui/form/textarea/textarea.html">Textarea</a> <small>(core/components/ui/form/textarea/textarea)</small></li>
55
+ <li><a href="core/components/ui/group/group.html">Group</a> <small>(core/components/ui/group/group)</small></li>
56
+ <li><a href="core/components/ui/icon/icon.html">Icon</a> <small>(core/components/ui/icon/icon)</small></li>
57
+ <li><a href="core/components/ui/image/image.html">Image</a> <small>(core/components/ui/image/image)</small></li>
58
+ <li><a href="core/components/ui/link/link.html">Link</a> <small>(core/components/ui/link/link)</small></li>
59
+ <li><a href="core/components/ui/loader/loader.html">Loader</a> <small>(core/components/ui/loader/loader)</small></li>
60
+ <li><a href="core/components/ui/menu/menu.html">Menu</a> <small>(core/components/ui/menu/menu)</small></li>
61
+ <li><a href="core/components/ui/modal/modal.html">Modal</a> <small>(core/components/ui/modal/modal)</small></li>
62
+ <li><a href="core/components/ui/pop/pop.html">Pop</a> <small>(core/components/ui/pop/pop)</small></li>
63
+ <li><a href="core/components/ui/progress/progress.html">Progress</a> <small>(core/components/ui/progress/progress)</small></li>
64
+ <li><a href="core/components/ui/table/table.html">Table</a> <small>(core/components/ui/table/table)</small></li>
65
+ <li><a href="core/components/ui/theme/theme.html">Theme</a> <small>(core/components/ui/theme/theme)</small></li>
66
+ <li><a href="core/components/ui/toast/toast.html">Toast</a> <small>(core/components/ui/toast/toast)</small></li>
67
+ <li><a href="core/components/ui/tooltip/tooltip.html">Tooltip</a> <small>(core/components/ui/tooltip/tooltip)</small></li>
68
+ <li><a href="docs/_core-concept/dataFlow.html">Data flow</a> <small>(docs/_core-concept/dataFlow)</small></li>
69
+ <li><a href="docs/_core-concept/overview.html">lit + tailwind + vite</a> <small>(docs/_core-concept/overview)</small></li>
70
+ <li><a href="docs/_core-concept/subscriber.html">Legacy: Subscriber mixin</a> <small>(docs/_core-concept/subscriber)</small></li>
71
+ <li><a href="docs/_decorators/ancestor-attribute.html">@ancestorAttribute</a> <small>(docs/_decorators/ancestor-attribute)</small></li>
72
+ <li><a href="docs/_decorators/auto-subscribe.html">@autoSubscribe</a> <small>(docs/_decorators/auto-subscribe)</small></li>
73
+ <li><a href="docs/_decorators/bind.html">@bind</a> <small>(docs/_decorators/bind)</small></li>
74
+ <li><a href="docs/_decorators/get.html">@get</a> <small>(docs/_decorators/get)</small></li>
75
+ <li><a href="docs/_decorators/handle.html">@handle</a> <small>(docs/_decorators/handle)</small></li>
76
+ <li><a href="docs/_decorators/on-assign.html">@onAssign</a> <small>(docs/_decorators/on-assign)</small></li>
77
+ <li><a href="docs/_decorators/patch.html">@patch</a> <small>(docs/_decorators/patch)</small></li>
78
+ <li><a href="docs/_decorators/post.html">@post</a> <small>(docs/_decorators/post)</small></li>
79
+ <li><a href="docs/_decorators/publish.html">@publish</a> <small>(docs/_decorators/publish)</small></li>
80
+ <li><a href="docs/_decorators/put.html">@put</a> <small>(docs/_decorators/put)</small></li>
81
+ <li><a href="docs/_decorators/subscribe.html">@subscribe</a> <small>(docs/_decorators/subscribe)</small></li>
82
+ <li><a href="docs/_decorators/wait-for-ancestors.html">@awaitConnectedAncestors and @dispatchConnectedEvent</a> <small>(docs/_decorators/wait-for-ancestors)</small></li>
83
+ <li><a href="docs/_directives/sub.html">sub()</a> <small>(docs/_directives/sub)</small></li>
84
+ <li><a href="docs/_getting-started/ai-agents.html">AI agents (skills &amp; AGENTS.md)</a> <small>(docs/_getting-started/ai-agents)</small></li>
85
+ <li><a href="docs/_getting-started/concorde-manual-install.html">Manual installation (Vite)</a> <small>(docs/_getting-started/concorde-manual-install)</small></li>
86
+ <li><a href="docs/_getting-started/concorde-outside.html">Installation</a> <small>(docs/_getting-started/concorde-outside)</small></li>
87
+ <li><a href="docs/_getting-started/create-a-component.html">Creating components</a> <small>(docs/_getting-started/create-a-component)</small></li>
88
+ <li><a href="docs/_getting-started/my-first-component.html">My first component</a> <small>(docs/_getting-started/my-first-component)</small></li>
89
+ <li><a href="docs/_getting-started/my-first-subscriber.html">Legacy: My first subscriber component</a> <small>(docs/_getting-started/my-first-subscriber)</small></li>
90
+ <li><a href="docs/_getting-started/pubsub.html">Legacy: Sharing data</a> <small>(docs/_getting-started/pubsub)</small></li>
91
+ <li><a href="docs/_getting-started/start.html">Introduction</a> <small>(docs/_getting-started/start)</small></li>
92
+ <li><a href="docs/_getting-started/theming.html">Customization</a> <small>(docs/_getting-started/theming)</small></li>
93
+ <li><a href="docs/_misc/api-configuration.html">API configuration</a> <small>(docs/_misc/api-configuration)</small></li>
94
+ <li><a href="docs/_misc/dataProviderKey.html">DataProviderKey</a> <small>(docs/_misc/dataProviderKey)</small></li>
95
+ <li><a href="docs/_misc/docs-mock-api.html">Local API demos (offline)</a> <small>(docs/_misc/docs-mock-api)</small></li>
96
+ <li><a href="docs/_misc/dynamic-path.html">Dynamic path placeholders</a> <small>(docs/_misc/dynamic-path)</small></li>
97
+ <li><a href="docs/_misc/endpoint.html">Endpoint</a> <small>(docs/_misc/endpoint)</small></li>
98
+ <li><a href="docs/_misc/formelement-subscriber-removal.html">FormElement without Subscriber (REDMINE-79569)</a> <small>(docs/_misc/formelement-subscriber-removal)</small></li>
99
+ <li><a href="docs/_misc/html-integration.html">HTML integration (no Lit)</a> <small>(docs/_misc/html-integration)</small></li>
100
+ </ul>
101
+ </main>
102
+ </body>
103
+ </html>
package/docs/index.html CHANGED
@@ -10,7 +10,7 @@
10
10
  <!-- <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
11
11
  -->
12
12
  <script src="https://cdn.jsdelivr.net/npm/marked@13.0.3"></script>
13
- <script type="module" crossorigin src="./assets/index-Bb-_LRyY.js"></script>
13
+ <script type="module" crossorigin src="./assets/index-D_alEsng.js"></script>
14
14
  <link rel="stylesheet" crossorigin href="./assets/index-CD4WyL6o.css">
15
15
  </head>
16
16
  <body class="px-6 lg:px-20">