@supersoniks/concorde 5.1.2 → 5.1.3-immutable.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/.agents/skills/concorde-docs/SKILL.md +1 -1
  2. package/.claude/skills +1 -0
  3. package/.github/workflows/ci.yml +21 -0
  4. package/.github-export-ignore +30 -0
  5. package/CONTRIBUTING.md +59 -0
  6. package/DEV.md +54 -0
  7. package/LICENSE +21 -0
  8. package/OPEN_SOURCE_CHECKPOINT.md +133 -0
  9. package/README.md +1 -1
  10. package/ai/README.md +29 -41
  11. package/ai/skills/concorde/SKILL.md +54 -324
  12. package/ai/skills/concorde/rules/composition.md +32 -0
  13. package/ai/skills/concorde/rules/data.md +47 -0
  14. package/ai/skills/concorde/rules/http.md +25 -0
  15. package/ai/skills/concorde/rules/lists-forms.md +35 -0
  16. package/ai/skills/concorde/rules/styling.md +46 -0
  17. package/ai/skills/concorde/rules/troubleshooting.md +45 -0
  18. package/build-infos.json +1 -1
  19. package/concorde-core.bundle.js +177 -177
  20. package/concorde-core.es.js +4993 -4833
  21. package/custom-elements-manifest.public.config.mjs +8 -0
  22. package/{.tmp-cem/custom-elements.json → custom-elements.json} +11722 -8868
  23. package/dist/concorde-core.bundle.js +177 -177
  24. package/dist/concorde-core.es.js +4993 -4833
  25. package/dist/docs-mock-api-sw.js +58 -223
  26. package/dist/docs-mock-api-sw.js.map +4 -4
  27. package/dist/img/og-concorde.jpg +0 -0
  28. package/dist/robots.txt +11 -10
  29. package/docs/assets/index-CD4WyL6o.css +1 -0
  30. package/docs/assets/index-D_alEsng.js +12122 -0
  31. package/docs/crawl/core/components/functional/date/date.html +190 -0
  32. package/docs/crawl/core/components/functional/fetch/fetch.html +109 -0
  33. package/docs/crawl/core/components/functional/if/if.html +27 -0
  34. package/docs/crawl/core/components/functional/jsonata/jsonata.html +79 -0
  35. package/docs/crawl/core/components/functional/list/list.html +70 -0
  36. package/docs/crawl/core/components/functional/mix/mix.html +45 -0
  37. package/docs/crawl/core/components/functional/queue/queue.html +96 -0
  38. package/docs/crawl/core/components/functional/router/router.html +106 -0
  39. package/docs/{core → crawl/core}/components/functional/sdui/sdui-extension-points.html +8 -9
  40. package/docs/crawl/core/components/functional/sdui/sdui.html +368 -0
  41. package/docs/crawl/core/components/functional/states/states.html +66 -0
  42. package/docs/crawl/core/components/functional/submit/submit.html +160 -0
  43. package/docs/{core → crawl/core}/components/functional/subscriber/subscriber.html +5 -6
  44. package/docs/crawl/core/components/functional/value/value.html +51 -0
  45. package/docs/{core → crawl/core}/components/ui/alert/alert.html +63 -53
  46. package/docs/{core → crawl/core}/components/ui/alert-messages/alert-messages.html +5 -6
  47. package/docs/{core → crawl/core}/components/ui/badge/badge.html +33 -33
  48. package/docs/crawl/core/components/ui/button/button.html +150 -0
  49. package/docs/crawl/core/components/ui/captcha/captcha.html +112 -0
  50. package/docs/{core → crawl/core}/components/ui/card/card.html +11 -12
  51. package/docs/{core → crawl/core}/components/ui/divider/divider.html +14 -14
  52. package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +73 -0
  53. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +266 -0
  54. package/docs/{core → crawl/core}/components/ui/form/form-actions/form-actions.html +23 -23
  55. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +121 -0
  56. package/docs/crawl/core/components/ui/form/input/input.html +109 -0
  57. package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +38 -0
  58. package/docs/crawl/core/components/ui/form/radio/radio.html +56 -0
  59. package/docs/crawl/core/components/ui/form/select/select.html +73 -0
  60. package/docs/crawl/core/components/ui/form/switch/switch.html +56 -0
  61. package/docs/crawl/core/components/ui/form/textarea/textarea.html +59 -0
  62. package/docs/crawl/core/components/ui/group/group.html +104 -0
  63. package/docs/{core → crawl/core}/components/ui/icon/icon.html +9 -10
  64. package/docs/crawl/core/components/ui/image/image.html +298 -0
  65. package/docs/{core → crawl/core}/components/ui/link/link.html +11 -12
  66. package/docs/crawl/core/components/ui/loader/loader.html +124 -0
  67. package/docs/{core → crawl/core}/components/ui/menu/menu.html +33 -34
  68. package/docs/crawl/core/components/ui/modal/modal.html +342 -0
  69. package/docs/crawl/core/components/ui/pop/pop.html +296 -0
  70. package/docs/{core → crawl/core}/components/ui/progress/progress.html +7 -8
  71. package/docs/crawl/core/components/ui/table/table.html +545 -0
  72. package/docs/crawl/core/components/ui/theme/theme.html +131 -0
  73. package/docs/crawl/core/components/ui/toast/toast.html +233 -0
  74. package/docs/crawl/core/components/ui/tooltip/tooltip.html +140 -0
  75. package/docs/{docs/getting-started → crawl/docs/_core-concept}/dataFlow.html +29 -26
  76. package/docs/crawl/docs/_core-concept/overview.html +66 -0
  77. package/docs/crawl/docs/_core-concept/subscriber.html +75 -0
  78. package/docs/crawl/docs/_decorators/ancestor-attribute.html +117 -0
  79. package/docs/crawl/docs/_decorators/auto-subscribe.html +202 -0
  80. package/docs/crawl/docs/_decorators/bind.html +141 -0
  81. package/docs/crawl/docs/_decorators/get.html +149 -0
  82. package/docs/crawl/docs/_decorators/handle.html +165 -0
  83. package/docs/crawl/docs/_decorators/on-assign.html +355 -0
  84. package/docs/crawl/docs/_decorators/patch.html +78 -0
  85. package/docs/crawl/docs/_decorators/post.html +139 -0
  86. package/docs/crawl/docs/_decorators/publish.html +61 -0
  87. package/docs/crawl/docs/_decorators/put.html +78 -0
  88. package/docs/crawl/docs/_decorators/subscribe.html +109 -0
  89. package/docs/crawl/docs/_decorators/wait-for-ancestors.html +137 -0
  90. package/docs/crawl/docs/_directives/sub.html +93 -0
  91. package/docs/{docs/getting-started → crawl/docs/_getting-started}/ai-agents.html +11 -12
  92. package/docs/crawl/docs/_getting-started/concorde-manual-install.html +100 -0
  93. package/docs/crawl/docs/_getting-started/concorde-outside.html +58 -0
  94. package/docs/{docs/getting-started → crawl/docs/_getting-started}/create-a-component.html +14 -11
  95. package/docs/{docs/getting-started → crawl/docs/_getting-started}/my-first-component.html +22 -13
  96. package/docs/crawl/docs/_getting-started/my-first-subscriber.html +110 -0
  97. package/docs/crawl/docs/_getting-started/pubsub.html +62 -0
  98. package/docs/crawl/docs/_getting-started/start.html +76 -0
  99. package/docs/{docs/getting-started → crawl/docs/_getting-started}/theming.html +9 -10
  100. package/docs/{docs/misc → crawl/docs/_misc}/api-configuration.html +18 -18
  101. package/docs/{docs/misc → crawl/docs/_misc}/dataProviderKey.html +11 -12
  102. package/docs/{docs/misc → crawl/docs/_misc}/docs-mock-api.html +28 -25
  103. package/docs/{docs/misc → crawl/docs/_misc}/dynamic-path.html +15 -16
  104. package/docs/{docs/misc → crawl/docs/_misc}/endpoint.html +15 -16
  105. package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +138 -0
  106. package/docs/{docs/misc → crawl/docs/_misc}/html-integration.html +15 -12
  107. package/docs/crawl/hubs/decorators.html +547 -0
  108. package/docs/crawl/hubs/form-components.html +381 -0
  109. package/docs/crawl/hubs/remote-data.html +452 -0
  110. package/docs/crawl/index.html +103 -0
  111. package/docs/docs-mock-api-sw.js +223 -58
  112. package/docs/docs-mock-api-sw.js.map +4 -4
  113. package/docs/index.html +68 -95
  114. package/docs/llms-full.txt +3610 -2231
  115. package/docs/llms.txt +86 -94
  116. package/docs/robots.txt +10 -11
  117. package/docs/sitemap.xml +84 -78
  118. package/docs/src/core/components/functional/date/date.md +231 -91
  119. package/docs/src/core/components/functional/fetch/fetch.md +83 -66
  120. package/docs/src/core/components/functional/if/if.md +3 -28
  121. package/docs/src/core/components/functional/jsonata/jsonata.md +37 -42
  122. package/docs/src/core/components/functional/list/list.md +43 -99
  123. package/docs/src/core/components/functional/mix/mix.md +26 -31
  124. package/docs/src/core/components/functional/queue/queue.md +61 -40
  125. package/docs/src/core/components/functional/router/router.md +65 -64
  126. package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  127. package/docs/src/core/components/functional/sdui/component-catalog.json +1 -1
  128. package/docs/src/core/components/functional/sdui/example.json +86 -19
  129. package/docs/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
  130. package/docs/src/core/components/functional/sdui/sdui.md +358 -187
  131. package/docs/src/core/components/functional/states/states.md +61 -86
  132. package/docs/src/core/components/functional/submit/submit.md +72 -64
  133. package/docs/src/core/components/functional/value/value.md +22 -34
  134. package/docs/src/core/components/ui/alert/alert.md +58 -48
  135. package/docs/src/core/components/ui/badge/badge.md +34 -27
  136. package/docs/src/core/components/ui/button/button.md +106 -139
  137. package/docs/src/core/components/ui/captcha/captcha.md +32 -17
  138. package/docs/src/core/components/ui/card/card.md +6 -6
  139. package/docs/src/core/components/ui/divider/divider.md +11 -8
  140. package/docs/src/core/components/ui/form/checkbox/checkbox.md +42 -90
  141. package/docs/src/core/components/ui/form/fieldset/fieldset.md +75 -31
  142. package/docs/src/core/components/ui/form/form-actions/form-actions.md +16 -14
  143. package/docs/src/core/components/ui/form/form-layout/form-layout.md +29 -19
  144. package/docs/src/core/components/ui/form/input/input.md +95 -95
  145. package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +29 -0
  146. package/docs/src/core/components/ui/form/radio/radio.md +34 -55
  147. package/docs/src/core/components/ui/form/select/select.md +45 -60
  148. package/docs/src/core/components/ui/form/switch/switch.md +34 -57
  149. package/docs/src/core/components/ui/form/textarea/textarea.md +38 -55
  150. package/docs/src/core/components/ui/group/group.md +33 -35
  151. package/docs/src/core/components/ui/icon/icon.md +4 -4
  152. package/docs/src/core/components/ui/image/image.md +107 -41
  153. package/docs/src/core/components/ui/link/link.md +6 -6
  154. package/docs/src/core/components/ui/loader/loader.md +55 -30
  155. package/docs/src/core/components/ui/menu/menu.md +27 -27
  156. package/docs/src/core/components/ui/modal/modal.md +96 -72
  157. package/docs/src/core/components/ui/pop/pop.md +158 -80
  158. package/docs/src/core/components/ui/progress/progress.md +2 -2
  159. package/docs/src/core/components/ui/table/table.md +255 -91
  160. package/docs/src/core/components/ui/theme/theme.md +36 -11
  161. package/docs/src/core/components/ui/toast/toast.md +117 -48
  162. package/docs/src/core/components/ui/tooltip/tooltip.md +62 -27
  163. package/docs/{docs/getting-started → src/docs/_core-concept}/dataFlow.md +18 -17
  164. package/docs/src/docs/_core-concept/overview.md +57 -0
  165. package/docs/src/docs/_core-concept/subscriber.md +75 -0
  166. package/docs/src/docs/_decorators/ancestor-attribute.md +128 -0
  167. package/docs/src/docs/_decorators/auto-subscribe.md +202 -0
  168. package/docs/src/docs/_decorators/bind.md +167 -0
  169. package/docs/src/docs/_decorators/get.md +162 -0
  170. package/docs/src/docs/_decorators/handle.md +175 -0
  171. package/docs/src/docs/_decorators/on-assign.md +390 -0
  172. package/docs/src/docs/_decorators/patch.md +70 -0
  173. package/docs/src/docs/_decorators/post.md +146 -0
  174. package/docs/src/docs/_decorators/publish.md +55 -0
  175. package/docs/src/docs/_decorators/put.md +70 -0
  176. package/docs/src/docs/_decorators/subscribe.md +100 -0
  177. package/docs/src/docs/_decorators/wait-for-ancestors.md +163 -0
  178. package/docs/src/docs/_directives/sub.md +91 -0
  179. package/docs/src/docs/{getting-started → _getting-started}/ai-agents.md +3 -3
  180. package/docs/src/docs/_getting-started/concorde-manual-install.md +133 -0
  181. package/docs/src/docs/_getting-started/concorde-outside.md +33 -0
  182. package/docs/{docs/getting-started → src/docs/_getting-started}/create-a-component.md +6 -3
  183. package/docs/src/docs/{getting-started → _getting-started}/my-first-component.md +14 -5
  184. package/docs/src/docs/_getting-started/my-first-subscriber.md +120 -0
  185. package/docs/src/docs/_getting-started/pubsub.md +37 -0
  186. package/docs/src/docs/{getting-started → _getting-started}/start.md +13 -1
  187. package/docs/src/docs/{getting-started → _getting-started}/theming.md +2 -2
  188. package/docs/src/docs/{misc → _misc}/api-configuration.md +12 -10
  189. package/docs/src/docs/{misc → _misc}/dataProviderKey.md +4 -4
  190. package/docs/{docs/misc → src/docs/_misc}/docs-mock-api.md +13 -12
  191. package/docs/{docs/misc → src/docs/_misc}/dynamic-path.md +8 -8
  192. package/docs/{docs/misc → src/docs/_misc}/endpoint.md +8 -8
  193. package/docs/src/docs/_misc/formelement-subscriber-removal.md +115 -0
  194. package/docs/{docs/misc → src/docs/_misc}/html-integration.md +5 -4
  195. package/docs/src/docs/search/docs-search.json +4375 -2420
  196. package/docs/src/tsconfig.declarations.json +22 -0
  197. package/docs/src/tsconfig.emit.json +23 -0
  198. package/docs/src/tsconfig.json +2 -23
  199. package/gitlab/job_github_mirror.sh +39 -0
  200. package/index.html +89 -0
  201. package/package.json +22 -4
  202. package/public/img/og-concorde.jpg +0 -0
  203. package/scripts/ai-init.mjs +104 -379
  204. package/scripts/ai-init.test.mjs +81 -239
  205. package/scripts/docs-markdown-vite-plugin.ts +11 -5
  206. package/scripts/docs-public-url.mjs +6 -0
  207. package/scripts/docs.htaccess +7 -0
  208. package/scripts/generate-cem.mjs +244 -0
  209. package/scripts/generate-cem.test.mjs +122 -0
  210. package/scripts/generate-crawl-docs.mjs +29 -5
  211. package/scripts/generate-sdui-catalog.mjs +11 -10
  212. package/scripts/github-export.mjs +150 -0
  213. package/scripts/post-build-docs.js +3 -0
  214. package/scripts/post-build.mjs +0 -0
  215. package/scripts/pre-publish.mjs +2 -1
  216. package/scripts/site-pages.mjs +212 -0
  217. package/scripts/site-pages.test.mjs +116 -0
  218. package/site-pages/about.md +22 -0
  219. package/site-pages/privacy.md +32 -0
  220. package/src/core/components/functional/date/date.md +1 -1
  221. package/src/core/components/functional/example/example.ts +3 -1
  222. package/src/core/components/functional/if/if.ts +0 -0
  223. package/src/core/components/functional/list/list.demo.ts +0 -0
  224. package/src/core/components/functional/list/list.md +6 -2
  225. package/src/core/components/functional/list/list.ts +17 -4
  226. package/src/core/components/functional/mix/mix.md +0 -0
  227. package/src/core/components/functional/router/router.demo.ts +0 -0
  228. package/src/core/components/functional/router/router.ts +0 -0
  229. package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +0 -0
  230. package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
  231. package/src/core/components/functional/sdui/component-catalog.json +2 -2
  232. package/src/core/components/functional/sdui/example.json +0 -0
  233. package/src/core/components/functional/sdui/sdui-immutable.spec.ts +74 -0
  234. package/src/core/components/functional/sdui/sdui.ts +33 -8
  235. package/src/core/components/functional/sdui/types.ts +0 -0
  236. package/src/core/components/functional/states/states.ts +0 -0
  237. package/src/core/components/functional/submit/submit.spec.ts +60 -0
  238. package/src/core/components/functional/submit/submit.ts +6 -3
  239. package/src/core/components/functional/subscriber/subscriber.ts +0 -0
  240. package/src/core/components/functional/value/value.md +0 -0
  241. package/src/core/components/functional/value/value.ts +0 -0
  242. package/src/core/components/ui/_css/size.ts +0 -0
  243. package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
  244. package/src/core/components/ui/card/card.md +1 -1
  245. package/src/core/components/ui/form/input/input.md +19 -1
  246. package/src/core/components/ui/form/input/input.ts +8 -2
  247. package/src/core/components/ui/form/radio/radio.md +14 -0
  248. package/src/core/components/ui/image/image.md +17 -17
  249. package/src/core/components/ui/modal/modal.md +2 -2
  250. package/src/core/decorators/subscriber/bind.ts +9 -14
  251. package/src/core/decorators/subscriber/subscribe.ts +15 -9
  252. package/src/core/decorators/subscriber/subscribe.type-test.ts +14 -5
  253. package/src/core/mixins/Subscriber.ts +0 -0
  254. package/src/core/utils/DataBindObserver.ts +0 -0
  255. package/src/core/utils/Objects.ts +0 -0
  256. package/src/core/utils/PublisherProxy.ts +166 -125
  257. package/src/core/utils/deepReadonly.spec.ts +66 -0
  258. package/src/core/utils/deepReadonly.ts +71 -0
  259. package/src/core/utils/immutableValue.spec.ts +54 -0
  260. package/src/core/utils/immutableValue.ts +102 -0
  261. package/src/core/utils/nestedDotForm.spec.ts +88 -0
  262. package/src/core/utils/publisherImmutable.spec.ts +76 -0
  263. package/src/core/utils/route.ts +0 -0
  264. package/src/core/utils/strictGet.spec.ts +61 -0
  265. package/src/core/utils/strictGet.ts +102 -0
  266. package/src/css.d.ts +19 -0
  267. package/src/docs/components/docs-demo-sources.ts +3 -3
  268. package/src/docs/decorators/bind.md +23 -24
  269. package/src/docs/docs-location.spec.ts +10 -0
  270. package/src/docs/docs-location.ts +10 -0
  271. package/src/docs/example/decorators-demo-bind-demos.ts +11 -28
  272. package/src/docs/example/docs-toggle-demos.ts +1 -1
  273. package/src/docs/example/users.ts +0 -0
  274. package/src/docs/getting-started/ai-agents.md +29 -55
  275. package/src/docs/getting-started/dataFlow.md +2 -2
  276. package/src/docs/home/home.ts +3 -1
  277. package/src/docs/misc/publisher-get-immutability-docs-crawl.json +902 -0
  278. package/src/docs/misc/publisher-get-immutability-docs-recheck.json +13 -0
  279. package/src/docs/misc/publisher-get-immutability-study.md +229 -0
  280. package/src/docs/navigation/navigation.ts +5 -1
  281. package/src/docs/search/docs-search.json +358 -58
  282. package/src/docs/search/markdown-renderer.ts +6 -1
  283. package/src/docs/tailwind/css/docs/content.css +4 -5
  284. package/src/tsconfig.declarations.json +22 -0
  285. package/src/tsconfig.emit.json +23 -0
  286. package/src/tsconfig.json +53 -5
  287. package/src/tsconfig.tsbuildinfo +1 -1
  288. package/.taste-skill/after/desktop-fold.jpg +0 -0
  289. package/.taste-skill/after/desktop-page-01.jpg +0 -0
  290. package/.taste-skill/after/desktop-page-02.jpg +0 -0
  291. package/.taste-skill/after/desktop-page-03.jpg +0 -0
  292. package/.taste-skill/after/mobile-fold.jpg +0 -0
  293. package/.taste-skill/after/mobile-page-01.jpg +0 -0
  294. package/.taste-skill/after/report.json +0 -4103
  295. package/.taste-skill/after/tablet-fold.jpg +0 -0
  296. package/.taste-skill/after/tablet-page-01.jpg +0 -0
  297. package/.taste-skill/after/tablet-page-02.jpg +0 -0
  298. package/.taste-skill/before/desktop-fold.jpg +0 -0
  299. package/.taste-skill/before/desktop-page-01.jpg +0 -0
  300. package/.taste-skill/before/desktop-page-02.jpg +0 -0
  301. package/.taste-skill/before/mobile-fold.jpg +0 -0
  302. package/.taste-skill/before/mobile-page-01.jpg +0 -0
  303. package/.taste-skill/before/report.json +0 -2556
  304. package/.taste-skill/before/tablet-fold.jpg +0 -0
  305. package/.taste-skill/before/tablet-page-01.jpg +0 -0
  306. package/.taste-skill/direction.json +0 -510
  307. package/.taste-skill/notes.md +0 -84
  308. package/.taste-skill/prod/desktop-fold.jpg +0 -0
  309. package/.taste-skill/prod/desktop-page-01.jpg +0 -0
  310. package/.taste-skill/prod/desktop-page-02.jpg +0 -0
  311. package/.taste-skill/prod/desktop-page-03.jpg +0 -0
  312. package/.taste-skill/prod/mobile-fold.jpg +0 -0
  313. package/.taste-skill/prod/mobile-page-01.jpg +0 -0
  314. package/.taste-skill/prod/mobile-page-02.jpg +0 -0
  315. package/.taste-skill/prod/report.json +0 -1973
  316. package/.taste-skill/prod/tablet-fold.jpg +0 -0
  317. package/.taste-skill/prod/tablet-page-01.jpg +0 -0
  318. package/.taste-skill/prod/tablet-page-02.jpg +0 -0
  319. package/AUDIT.md +0 -228
  320. package/PLAN-AMELIORATION.md +0 -220
  321. package/PLAN-DOCS-AGENTS.md +0 -80
  322. package/ai/AGENTS.md +0 -56
  323. package/ai/cursor/rules/concorde-menu.mdc +0 -15
  324. package/ai/cursor/rules/concorde-scope.mdc +0 -14
  325. package/ai/cursor/rules/concorde-theme.mdc +0 -13
  326. package/ai/cursor/rules/concorde.mdc +0 -66
  327. package/ai/jetbrains/rules/concorde.md +0 -53
  328. package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
  329. package/ai/skills/concorde-imports/SKILL.md +0 -78
  330. package/ai/skills/concorde-menu/SKILL.md +0 -74
  331. package/ai/skills/concorde-scope/SKILL.md +0 -70
  332. package/ai/skills/concorde-theme/SKILL.md +0 -57
  333. package/docs/.htaccess +0 -75
  334. package/docs/404.html +0 -15
  335. package/docs/404.md +0 -5
  336. package/docs/assets/index-BgG6FFPt.js +0 -11765
  337. package/docs/assets/index-x89XINSG.css +0 -1
  338. package/docs/core/components/functional/date/date.html +0 -211
  339. package/docs/core/components/functional/date/date.md +0 -150
  340. package/docs/core/components/functional/fetch/fetch.html +0 -180
  341. package/docs/core/components/functional/fetch/fetch.md +0 -108
  342. package/docs/core/components/functional/if/if.html +0 -65
  343. package/docs/core/components/functional/if/if.md +0 -34
  344. package/docs/core/components/functional/jsonata/jsonata.html +0 -110
  345. package/docs/core/components/functional/jsonata/jsonata.md +0 -61
  346. package/docs/core/components/functional/list/list.html +0 -198
  347. package/docs/core/components/functional/list/list.md +0 -121
  348. package/docs/core/components/functional/mix/mix.html +0 -78
  349. package/docs/core/components/functional/mix/mix.md +0 -46
  350. package/docs/core/components/functional/queue/queue.html +0 -155
  351. package/docs/core/components/functional/queue/queue.md +0 -51
  352. package/docs/core/components/functional/router/router.html +0 -154
  353. package/docs/core/components/functional/router/router.md +0 -93
  354. package/docs/core/components/functional/sdui/sdui-extension-points.md +0 -94
  355. package/docs/core/components/functional/sdui/sdui.html +0 -397
  356. package/docs/core/components/functional/sdui/sdui.md +0 -307
  357. package/docs/core/components/functional/states/states.html +0 -141
  358. package/docs/core/components/functional/states/states.md +0 -112
  359. package/docs/core/components/functional/submit/submit.html +0 -178
  360. package/docs/core/components/functional/submit/submit.md +0 -106
  361. package/docs/core/components/functional/subscriber/subscriber.md +0 -91
  362. package/docs/core/components/functional/translation/translation.html +0 -60
  363. package/docs/core/components/functional/translation/translation.md +0 -38
  364. package/docs/core/components/functional/value/value.html +0 -81
  365. package/docs/core/components/functional/value/value.md +0 -47
  366. package/docs/core/components/ui/alert/alert.md +0 -186
  367. package/docs/core/components/ui/alert-messages/alert-messages.md +0 -85
  368. package/docs/core/components/ui/badge/badge.md +0 -181
  369. package/docs/core/components/ui/button/button.html +0 -309
  370. package/docs/core/components/ui/button/button.md +0 -216
  371. package/docs/core/components/ui/captcha/captcha.html +0 -80
  372. package/docs/core/components/ui/captcha/captcha.md +0 -56
  373. package/docs/core/components/ui/card/card.md +0 -215
  374. package/docs/core/components/ui/divider/divider.md +0 -126
  375. package/docs/core/components/ui/form/checkbox/checkbox.html +0 -200
  376. package/docs/core/components/ui/form/checkbox/checkbox.md +0 -125
  377. package/docs/core/components/ui/form/fieldset/fieldset.html +0 -238
  378. package/docs/core/components/ui/form/fieldset/fieldset.md +0 -161
  379. package/docs/core/components/ui/form/form-actions/form-actions.md +0 -98
  380. package/docs/core/components/ui/form/form-layout/form-layout.html +0 -115
  381. package/docs/core/components/ui/form/form-layout/form-layout.md +0 -109
  382. package/docs/core/components/ui/form/input/input.html +0 -235
  383. package/docs/core/components/ui/form/input/input.md +0 -142
  384. package/docs/core/components/ui/form/radio/radio.html +0 -144
  385. package/docs/core/components/ui/form/radio/radio.md +0 -78
  386. package/docs/core/components/ui/form/select/select.html +0 -178
  387. package/docs/core/components/ui/form/select/select.md +0 -86
  388. package/docs/core/components/ui/form/switch/switch.html +0 -146
  389. package/docs/core/components/ui/form/switch/switch.md +0 -80
  390. package/docs/core/components/ui/form/textarea/textarea.html +0 -162
  391. package/docs/core/components/ui/form/textarea/textarea.md +0 -82
  392. package/docs/core/components/ui/group/group.html +0 -113
  393. package/docs/core/components/ui/group/group.md +0 -77
  394. package/docs/core/components/ui/icon/icon.md +0 -214
  395. package/docs/core/components/ui/image/image.html +0 -194
  396. package/docs/core/components/ui/image/image.md +0 -167
  397. package/docs/core/components/ui/link/link.md +0 -81
  398. package/docs/core/components/ui/loader/loader.html +0 -114
  399. package/docs/core/components/ui/loader/loader.md +0 -87
  400. package/docs/core/components/ui/menu/menu.md +0 -370
  401. package/docs/core/components/ui/modal/modal.html +0 -324
  402. package/docs/core/components/ui/modal/modal.md +0 -211
  403. package/docs/core/components/ui/pop/pop.html +0 -250
  404. package/docs/core/components/ui/pop/pop.md +0 -216
  405. package/docs/core/components/ui/progress/progress.md +0 -109
  406. package/docs/core/components/ui/table/table.html +0 -333
  407. package/docs/core/components/ui/table/table.md +0 -267
  408. package/docs/core/components/ui/theme/theme.html +0 -116
  409. package/docs/core/components/ui/theme/theme.md +0 -97
  410. package/docs/core/components/ui/toast/toast.html +0 -185
  411. package/docs/core/components/ui/toast/toast.md +0 -147
  412. package/docs/core/components/ui/tooltip/tooltip.html +0 -112
  413. package/docs/core/components/ui/tooltip/tooltip.md +0 -89
  414. package/docs/docs/decorators/ancestor-attribute.html +0 -71
  415. package/docs/docs/decorators/ancestor-attribute.md +0 -59
  416. package/docs/docs/decorators/auto-subscribe.html +0 -61
  417. package/docs/docs/decorators/auto-subscribe.md +0 -40
  418. package/docs/docs/decorators/bind.html +0 -86
  419. package/docs/docs/decorators/bind.md +0 -77
  420. package/docs/docs/decorators/get.html +0 -166
  421. package/docs/docs/decorators/get.md +0 -160
  422. package/docs/docs/decorators/handle.html +0 -139
  423. package/docs/docs/decorators/handle.md +0 -119
  424. package/docs/docs/decorators/on-assign.html +0 -72
  425. package/docs/docs/decorators/on-assign.md +0 -63
  426. package/docs/docs/decorators/patch.html +0 -76
  427. package/docs/docs/decorators/patch.md +0 -44
  428. package/docs/docs/decorators/post.html +0 -150
  429. package/docs/docs/decorators/post.md +0 -134
  430. package/docs/docs/decorators/publish.html +0 -74
  431. package/docs/docs/decorators/publish.md +0 -56
  432. package/docs/docs/decorators/put.html +0 -83
  433. package/docs/docs/decorators/put.md +0 -51
  434. package/docs/docs/decorators/subscribe.html +0 -91
  435. package/docs/docs/decorators/subscribe.md +0 -87
  436. package/docs/docs/decorators/wait-for-ancestors.html +0 -82
  437. package/docs/docs/decorators/wait-for-ancestors.md +0 -76
  438. package/docs/docs/directives/sub.html +0 -79
  439. package/docs/docs/directives/sub.md +0 -75
  440. package/docs/docs/directives/t.html +0 -91
  441. package/docs/docs/directives/t.md +0 -73
  442. package/docs/docs/getting-started/ai-agents.md +0 -76
  443. package/docs/docs/getting-started/components.html +0 -27
  444. package/docs/docs/getting-started/components.md +0 -5
  445. package/docs/docs/getting-started/installation.html +0 -69
  446. package/docs/docs/getting-started/installation.md +0 -36
  447. package/docs/docs/getting-started/my-first-component.md +0 -227
  448. package/docs/docs/getting-started/start.html +0 -47
  449. package/docs/docs/getting-started/start.md +0 -35
  450. package/docs/docs/getting-started/theming.md +0 -253
  451. package/docs/docs/index.html +0 -99
  452. package/docs/docs/misc/api-configuration.md +0 -79
  453. package/docs/docs/misc/dataProviderKey.md +0 -168
  454. package/docs/hubs/decorators.html +0 -443
  455. package/docs/hubs/form-components.html +0 -404
  456. package/docs/hubs/remote-data.html +0 -371
  457. package/docs/img/archive/concorde-001-2cv.webp +0 -0
  458. package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
  459. package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
  460. package/docs/img/archive/credits.json +0 -28
  461. package/docs/index.md +0 -22
  462. package/docs/src/core/components/functional/translation/translation.md +0 -38
  463. package/docs/src/docs/decorators/ancestor-attribute.md +0 -59
  464. package/docs/src/docs/decorators/auto-subscribe.md +0 -40
  465. package/docs/src/docs/decorators/bind.md +0 -77
  466. package/docs/src/docs/decorators/get.md +0 -160
  467. package/docs/src/docs/decorators/handle.md +0 -119
  468. package/docs/src/docs/decorators/on-assign.md +0 -63
  469. package/docs/src/docs/decorators/patch.md +0 -44
  470. package/docs/src/docs/decorators/post.md +0 -134
  471. package/docs/src/docs/decorators/publish.md +0 -56
  472. package/docs/src/docs/decorators/put.md +0 -51
  473. package/docs/src/docs/decorators/subscribe.md +0 -87
  474. package/docs/src/docs/decorators/wait-for-ancestors.md +0 -76
  475. package/docs/src/docs/directives/sub.md +0 -75
  476. package/docs/src/docs/directives/t.md +0 -73
  477. package/docs/src/docs/getting-started/components.md +0 -5
  478. package/docs/src/docs/getting-started/create-a-component.md +0 -136
  479. package/docs/src/docs/getting-started/dataFlow.md +0 -87
  480. package/docs/src/docs/getting-started/installation.md +0 -36
  481. package/docs/src/docs/misc/docs-mock-api.md +0 -62
  482. package/docs/src/docs/misc/dynamic-path.md +0 -71
  483. package/docs/src/docs/misc/endpoint.md +0 -45
  484. package/docs/src/docs/misc/html-integration.md +0 -14
  485. /package/{docs → dist}/img/concorde/plane_01.jpg +0 -0
  486. /package/{docs → dist}/img/concorde/plane_02.jpg +0 -0
  487. /package/{docs → dist}/img/concorde/plane_03.jpg +0 -0
  488. /package/{docs → dist}/img/concorde/plane_04.jpg +0 -0
  489. /package/{docs → dist}/img/concorde/plane_05.jpg +0 -0
  490. /package/{docs → dist}/img/concorde/plane_06.jpg +0 -0
  491. /package/{docs → dist}/img/concorde/plane_07.jpg +0 -0
  492. /package/{docs → dist}/img/concorde/plane_08.jpg +0 -0
  493. /package/{docs → dist}/img/concorde/plane_09.jpg +0 -0
  494. /package/{docs → dist}/img/concorde/plane_10.jpg +0 -0
  495. /package/{docs → dist}/img/concorde/plane_11.jpg +0 -0
  496. /package/{docs → dist}/img/concorde/plane_12.jpg +0 -0
  497. /package/{docs → dist}/img/concorde/plane_13.jpg +0 -0
@@ -780,7 +780,7 @@
780
780
  }
781
781
  },
782
782
  {
783
- "search": "sonic-list renders one row per entry of its props array, either set directly or loaded with fetch. From Lit, pass a row renderer on the items property; in plain HTML, declare <template> children. Each row gets its own data provider at <dataProvider>/list-item/<index>.\n",
783
+ "search": "sonic-list renders one row per entry of its props array, either set directly or loaded with fetch. In TypeScript, prefer the .items row renderer (with .separator · .noItems · .skeleton); <template> children are for plain HTML hosts without Lit. Each row gets its own data provider at <dataProvider>/list-item/<index>.\n",
784
784
  "files": {
785
785
  "core/components/functional/list/list.md": {
786
786
  "title": "List",
@@ -810,7 +810,7 @@
810
810
  }
811
811
  },
812
812
  {
813
- "search": "Fetch attributes (lazyload · refetchEveryMs · headers · authentication) are shared with Fetch.\n",
813
+ "search": "This example uses HTML templates; from Lit, use the row renderer instead. Fetch attributes (lazyload · refetchEveryMs · headers · authentication) are shared with Fetch.\n",
814
814
  "files": {
815
815
  "core/components/functional/list/list.md": {
816
816
  "title": "List",
@@ -914,6 +914,36 @@
914
914
  }
915
915
  }
916
916
  },
917
+ {
918
+ "search": "Properties (TypeScript / Lit, preferred):\n",
919
+ "files": {
920
+ "core/components/functional/list/list.md": {
921
+ "title": "List",
922
+ "hashes": {
923
+ "api-reference": {
924
+ "count": 1,
925
+ "title": "API reference",
926
+ "type": "paragraph"
927
+ }
928
+ }
929
+ }
930
+ }
931
+ },
932
+ {
933
+ "search": "Templates (plain HTML hosts):\n",
934
+ "files": {
935
+ "core/components/functional/list/list.md": {
936
+ "title": "List",
937
+ "hashes": {
938
+ "api-reference": {
939
+ "count": 1,
940
+ "title": "API reference",
941
+ "type": "paragraph"
942
+ }
943
+ }
944
+ }
945
+ }
946
+ },
917
947
  {
918
948
  "search": "Mix",
919
949
  "files": {
@@ -1290,7 +1320,7 @@
1290
1320
  }
1291
1321
  },
1292
1322
  {
1293
- "search": "Aide-mémoire pour les dépôts externes (adaptateurs, shells).Pas une page de la doc site — à lire dans le package npm(node_modules/@supersoniks/concorde/src/core/components/functional/sdui/sdui-extension-points.md).La doc utilisateur / crawl reste sdui.md (auto-suffisante).\n",
1323
+ "search": "Aide-mémoire pour les dépôts externes (adaptateurs, shells).Pas une page de la doc site — à lire dans le package npm(node_modules/@supersoniks/concorde/src/core/components/functional/sdui/sdui-extension-points.md).La doc utilisateur reste sdui.md (auto-suffisante).\n",
1294
1324
  "files": {
1295
1325
  "core/components/functional/sdui/sdui-extension-points.md": {
1296
1326
  "title": "SDUI — points d’extension publics",
@@ -3845,14 +3875,29 @@
3845
3875
  }
3846
3876
  },
3847
3877
  {
3848
- "search": "sameValueAs sets pattern to the value of another field in the same store, for confirmation fields.\n",
3878
+ "search": "A dot in name stores a nested object in the form publisher.\n",
3849
3879
  "files": {
3850
3880
  "core/components/ui/form/input/input.md": {
3851
3881
  "title": "Input",
3852
3882
  "hashes": {
3853
- "form-data": {
3883
+ "nested-keys": {
3854
3884
  "count": 1,
3855
- "title": "Form data",
3885
+ "title": "Nested keys",
3886
+ "type": "paragraph"
3887
+ }
3888
+ }
3889
+ }
3890
+ }
3891
+ },
3892
+ {
3893
+ "search": "sameValueAs sets pattern to the value of another field in the same store, for confirmation fields. Dot paths are supported.\n",
3894
+ "files": {
3895
+ "core/components/ui/form/input/input.md": {
3896
+ "title": "Input",
3897
+ "hashes": {
3898
+ "nested-keys": {
3899
+ "count": 1,
3900
+ "title": "Nested keys",
3856
3901
  "type": "paragraph"
3857
3902
  }
3858
3903
  }
@@ -3919,6 +3964,21 @@
3919
3964
  }
3920
3965
  }
3921
3966
  },
3967
+ {
3968
+ "search": "A dot in name writes a nested object in the form store (same as Submit nested fields).\n",
3969
+ "files": {
3970
+ "core/components/ui/form/radio/radio.md": {
3971
+ "title": "Radio",
3972
+ "hashes": {
3973
+ "nested-keys": {
3974
+ "count": 1,
3975
+ "title": "Nested keys",
3976
+ "type": "paragraph"
3977
+ }
3978
+ }
3979
+ }
3980
+ }
3981
+ },
3922
3982
  {
3923
3983
  "search": "The radio group writes one status value to the store used as dataFilterProvider by a sonic-queue. See Checkbox for the multi-value version.\n",
3924
3984
  "files": {
@@ -6020,7 +6080,7 @@
6020
6080
  }
6021
6081
  },
6022
6082
  {
6023
- "search": "Keeps a class property in sync with a path of the DataProvider store, in both directions when needed. Pass a dot-notation string or a DataProviderKey; add { reflect: true } to push local writes back to the store. For read-only sync prefer @subscribe, and see Data flow for the overall model.\n",
6083
+ "search": "@bind(key) keeps a class property and one path of the DataProvider store in sync. With { reflect: true } the sync goes both ways: the property follows the store, and each assignment is written back to it. For one direction only, use the complementary decorators: @subscribe to read, @publish to write. See Data flow for the overall model.\n",
6024
6084
  "files": {
6025
6085
  "docs/decorators/bind.md": {
6026
6086
  "title": "@bind",
@@ -6035,7 +6095,7 @@
6035
6095
  }
6036
6096
  },
6037
6097
  {
6038
- "search": "@bind("flight.gate")\n@state()\ngate = "";\n \n\n",
6098
+ "search": "type Flight = { flight: string; gate: string; boarded: number };\nconst flightKey = new DataProviderKey<Flight>("flight");\n",
6039
6099
  "files": {
6040
6100
  "docs/decorators/bind.md": {
6041
6101
  "title": "@bind",
@@ -6050,29 +6110,14 @@
6050
6110
  }
6051
6111
  },
6052
6112
  {
6053
- "search": "The first path segment is the data provider id, the rest is dot notation (array items use a numeric index: passengers.0). The property updates each time the store value changes. Add @state() so Lit re-renders.\n",
6054
- "files": {
6055
- "docs/decorators/bind.md": {
6056
- "title": "@bind",
6057
- "hashes": {
6058
- "basic-usage": {
6059
- "count": 1,
6060
- "title": "Basic usage",
6061
- "type": "paragraph"
6062
- }
6063
- }
6064
- }
6065
- }
6066
- },
6067
- {
6068
- "search": "With a DataProviderKey<T>, TypeScript checks that the property type matches T at that path.\n",
6113
+ "search": "@bind(flightKey.boarded, { reflect: true })\n@state()\nboarded = 0;\n \n\n",
6069
6114
  "files": {
6070
6115
  "docs/decorators/bind.md": {
6071
6116
  "title": "@bind",
6072
6117
  "hashes": {
6073
- "typed-key": {
6118
+ "import": {
6074
6119
  "count": 1,
6075
- "title": "Typed key",
6120
+ "title": "Import",
6076
6121
  "type": "paragraph"
6077
6122
  }
6078
6123
  }
@@ -6080,14 +6125,14 @@
6080
6125
  }
6081
6126
  },
6082
6127
  {
6083
- "search": "type Flight = { flight: string; gate: string; boarded: number };\nconst flightKey = new DataProviderKey<Flight>("flight");\n",
6128
+ "search": "The key is a DataProviderKey: TypeScript checks that the property type matches T at that path. The property updates each time the store value changes. Add @state() so Lit re-renders.\n",
6084
6129
  "files": {
6085
6130
  "docs/decorators/bind.md": {
6086
6131
  "title": "@bind",
6087
6132
  "hashes": {
6088
- "typed-key": {
6133
+ "basic-usage": {
6089
6134
  "count": 1,
6090
- "title": "Typed key",
6135
+ "title": "Basic usage",
6091
6136
  "type": "paragraph"
6092
6137
  }
6093
6138
  }
@@ -6095,14 +6140,14 @@
6095
6140
  }
6096
6141
  },
6097
6142
  {
6098
- "search": "@bind(flightKey.boarded, { reflect: true })\n@state()\nboarded = 0;\n \n\n",
6143
+ "search": "With reflect: true, each assignment to the property calls set() at the key path, so every other subscriber sees the new value. An internal guard prevents update loops. Without reflect (the default), assigning the property does not touch the store, and @bind behaves like @subscribe.\n",
6099
6144
  "files": {
6100
6145
  "docs/decorators/bind.md": {
6101
6146
  "title": "@bind",
6102
6147
  "hashes": {
6103
- "typed-key": {
6148
+ "reflect": {
6104
6149
  "count": 1,
6105
- "title": "Typed key",
6150
+ "title": "Reflect",
6106
6151
  "type": "paragraph"
6107
6152
  }
6108
6153
  }
@@ -6110,14 +6155,14 @@
6110
6155
  }
6111
6156
  },
6112
6157
  {
6113
- "search": "By default (reflect: false) the binding is one-way: assigning the property does not touch the store. With reflect: true, each assignment calls set() on the publisher, so every other subscriber sees the new value. An internal guard prevents update loops.\n",
6158
+ "search": "Placeholders such as ${index} are resolved from properties of the same component, and @bind re-subscribes when they change. Declare them in the key's second generic and write them in a plain string, not a backtick template literal. While a placeholder is null or undefined the binding is inactive; { skipEmptyPlaceholder: true } also waits on "". Full rules: Dynamic paths.\n",
6114
6159
  "files": {
6115
6160
  "docs/decorators/bind.md": {
6116
6161
  "title": "@bind",
6117
6162
  "hashes": {
6118
- "reflect": {
6163
+ "dynamic-path": {
6119
6164
  "count": 1,
6120
- "title": "Reflect",
6165
+ "title": "Dynamic path",
6121
6166
  "type": "paragraph"
6122
6167
  }
6123
6168
  }
@@ -6125,7 +6170,7 @@
6125
6170
  }
6126
6171
  },
6127
6172
  {
6128
- "search": "Placeholders such as ${index} are resolved from properties of the same component, and @bind re-subscribes when they change. Write them in a plain string, not a backtick template literal. While a placeholder is null or undefined the binding is inactive; { skipEmptyPlaceholder: true } also waits on "". Full rules: Dynamic paths.\n",
6173
+ "search": "@bind(personKey)\n@state()\nperson: Person | null = null;\n \n\n",
6129
6174
  "files": {
6130
6175
  "docs/decorators/bind.md": {
6131
6176
  "title": "@bind",
@@ -8135,12 +8180,12 @@
8135
8180
  }
8136
8181
  },
8137
8182
  {
8138
- "search": "AI agents (skills & AGENTS.md)",
8183
+ "search": "AI agents (skill)",
8139
8184
  "files": {
8140
8185
  "docs/getting-started/ai-agents.md": {
8141
- "title": "AI agents (skills & AGENTS.md)",
8186
+ "title": "AI agents (skill)",
8142
8187
  "hashes": {
8143
- "ai-agents-skills--agentsmd": {
8188
+ "ai-agents-skill": {
8144
8189
  "count": 1,
8145
8190
  "title": "",
8146
8191
  "type": "page"
@@ -8150,12 +8195,12 @@
8150
8195
  }
8151
8196
  },
8152
8197
  {
8153
- "search": "Concorde ships skills, rules, and a root AGENTS.md so Cursor, JetBrains AI Assistant, and other coding agents follow framework patterns (DataProvider, decorators, short imports, scope, theme, migrations).\n",
8198
+ "search": "Concorde ships one Agent Skill, concorde, so coding agents follow the framework patterns. Cursor, Claude Code, JetBrains Junie and other agents load it on their own when they work on Concorde code; there is nothing to add to your AGENTS.md.\n",
8154
8199
  "files": {
8155
8200
  "docs/getting-started/ai-agents.md": {
8156
- "title": "AI agents (skills & AGENTS.md)",
8201
+ "title": "AI agents (skill)",
8157
8202
  "hashes": {
8158
- "ai-agents-skills--agentsmd": {
8203
+ "ai-agents-skill": {
8159
8204
  "count": 1,
8160
8205
  "title": "",
8161
8206
  "type": "paragraph"
@@ -8165,12 +8210,12 @@
8165
8210
  }
8166
8211
  },
8167
8212
  {
8168
- "search": "On a starter project, run yarn ai:sync after install. On an existing project, install Concorde first, then use ai-init below.\n",
8213
+ "search": "On a starter project, run yarn ai:sync after install. On an existing project, install Concorde first, then run ai-init.\n",
8169
8214
  "files": {
8170
8215
  "docs/getting-started/ai-agents.md": {
8171
- "title": "AI agents (skills & AGENTS.md)",
8216
+ "title": "AI agents (skill)",
8172
8217
  "hashes": {
8173
- "ai-agents-skills--agentsmd": {
8218
+ "ai-agents-skill": {
8174
8219
  "count": 1,
8175
8220
  "title": "",
8176
8221
  "type": "paragraph"
@@ -8180,14 +8225,44 @@
8180
8225
  }
8181
8226
  },
8182
8227
  {
8183
- "search": "node node_modules/@supersoniks/concorde/scripts/ai-init.mjs\n \n\n",
8228
+ "search": "Re-run the same command after each Concorde upgrade to refresh the skill.\n",
8229
+ "files": {
8230
+ "docs/getting-started/ai-agents.md": {
8231
+ "title": "AI agents (skill)",
8232
+ "hashes": {
8233
+ "commands": {
8234
+ "count": 1,
8235
+ "title": "Commands",
8236
+ "type": "paragraph"
8237
+ }
8238
+ }
8239
+ }
8240
+ }
8241
+ },
8242
+ {
8243
+ "search": "SKILL.md is the entry point: where to find the truth (the project, these docs, custom-elements.json), the critical rules and the imports. Details live in rules/ files that the agent reads only for the topic at hand.\n",
8244
+ "files": {
8245
+ "docs/getting-started/ai-agents.md": {
8246
+ "title": "AI agents (skill)",
8247
+ "hashes": {
8248
+ "the-skill": {
8249
+ "count": 1,
8250
+ "title": "The skill",
8251
+ "type": "paragraph"
8252
+ }
8253
+ }
8254
+ }
8255
+ }
8256
+ },
8257
+ {
8258
+ "search": "Where symlinks are not allowed (some Windows setups), the skill is copied instead. Your own skills in these folders are never touched. Commit .agents/ and the links if your team shares agent settings.\n",
8184
8259
  "files": {
8185
8260
  "docs/getting-started/ai-agents.md": {
8186
- "title": "AI agents (skills & AGENTS.md)",
8261
+ "title": "AI agents (skill)",
8187
8262
  "hashes": {
8188
- "manual--existing-project": {
8263
+ "what-gets-installed": {
8189
8264
  "count": 1,
8190
- "title": "Manual / existing project",
8265
+ "title": "What gets installed",
8191
8266
  "type": "paragraph"
8192
8267
  }
8193
8268
  }
@@ -8195,14 +8270,14 @@
8195
8270
  }
8196
8271
  },
8197
8272
  {
8198
- "search": "Everything after <!-- concorde-ai --> is replaced on each ai-init run (idempotent). Do not paste a full copy of the Concorde guide above the marker — put project-specific notes in AGENTS.concorde.md (overlay). If the preamble duplicates package AGENTS.md, ai-init slims or drops it and prints a warning. Legacy filenames AGENTS.overlay.md / AGENTS.starter.md are still accepted with a deprecation warning.\n",
8273
+ "search": "AGENTS.md stays yours: ai-init never reads or writes it.\n",
8199
8274
  "files": {
8200
8275
  "docs/getting-started/ai-agents.md": {
8201
- "title": "AI agents (skills & AGENTS.md)",
8276
+ "title": "AI agents (skill)",
8202
8277
  "hashes": {
8203
- "agentsmd-policy-non-invasive": {
8278
+ "what-gets-installed": {
8204
8279
  "count": 1,
8205
- "title": "`AGENTS.md` policy (non-invasive)",
8280
+ "title": "What gets installed",
8206
8281
  "type": "paragraph"
8207
8282
  }
8208
8283
  }
@@ -8210,14 +8285,14 @@
8210
8285
  }
8211
8286
  },
8212
8287
  {
8213
- "search": "Source files in the npm package: node_modules/@supersoniks/concorde/ai/ (see also ai/README.md in the Concorde repository).\n",
8288
+ "search": "Source files in the npm package: node_modules/@supersoniks/concorde/ai/skills/concorde/.\n",
8214
8289
  "files": {
8215
8290
  "docs/getting-started/ai-agents.md": {
8216
- "title": "AI agents (skills & AGENTS.md)",
8291
+ "title": "AI agents (skill)",
8217
8292
  "hashes": {
8218
- "workflow": {
8293
+ "flags": {
8219
8294
  "count": 1,
8220
- "title": "Workflow",
8295
+ "title": "Flags",
8221
8296
  "type": "paragraph"
8222
8297
  }
8223
8298
  }
@@ -8570,7 +8645,7 @@
8570
8645
  }
8571
8646
  },
8572
8647
  {
8573
- "search": "Skill: concorde-get-set-dp in the package ai/ folder.\n",
8648
+ "search": "Agent skill: concorde (rules/data.md), see AI agents.\n",
8574
8649
  "files": {
8575
8650
  "docs/getting-started/dataFlow.md": {
8576
8651
  "title": "Data flow",
@@ -10283,5 +10358,230 @@
10283
10358
  }
10284
10359
  }
10285
10360
  }
10361
+ },
10362
+ {
10363
+ "search": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10364
+ "files": {
10365
+ "docs/misc/publisher-get-immutability-study.md": {
10366
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10367
+ "hashes": {
10368
+ "étude--immutabilité-dataprovider--get-redmine-79567": {
10369
+ "count": 1,
10370
+ "title": "",
10371
+ "type": "page"
10372
+ }
10373
+ }
10374
+ }
10375
+ }
10376
+ },
10377
+ {
10378
+ "search": "Nature : étude d’opportunité + ADR de direction.Branche : 79567_publisher_get_immutability_study.Recadrage (oct. 2026) : la cible n’est plus un empilement de gardes opt-in, mais un store immutable clair.\n",
10379
+ "files": {
10380
+ "docs/misc/publisher-get-immutability-study.md": {
10381
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10382
+ "hashes": {
10383
+ "étude--immutabilité-dataprovider--get-redmine-79567": {
10384
+ "count": 1,
10385
+ "title": "",
10386
+ "type": "paragraph"
10387
+ }
10388
+ }
10389
+ }
10390
+ }
10391
+ },
10392
+ {
10393
+ "search": "Le publisher possède les données. On ne mute jamais. On remplace.\n",
10394
+ "files": {
10395
+ "docs/misc/publisher-get-immutability-study.md": {
10396
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10397
+ "hashes": {
10398
+ "contrat-cible": {
10399
+ "count": 1,
10400
+ "title": "Contrat cible",
10401
+ "type": "paragraph"
10402
+ }
10403
+ }
10404
+ }
10405
+ }
10406
+ },
10407
+ {
10408
+ "search": "Empiler DeepReadonly + strictGet warn/throw + clone parfois = pansements autour d’un moteur encore mutable. Utile en radar de migration, pas comme architecture cible.\n",
10409
+ "files": {
10410
+ "docs/misc/publisher-get-immutability-study.md": {
10411
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10412
+ "hashes": {
10413
+ "ce-quon-ne-garde-pas-comme-design-produit": {
10414
+ "count": 1,
10415
+ "title": "Ce qu’on ne garde pas comme design produit",
10416
+ "type": "paragraph"
10417
+ }
10418
+ }
10419
+ }
10420
+ }
10421
+ },
10422
+ {
10423
+ "search": "Refonte du moteur PublisherProxy : plus de _value_[k] = … / delete _value_[k] / sync parent par mutation. Updates immutables (Immer ou setIn maison) sur tout chemin d’écriture (y compris traps Proxy / sous-proxies).\n",
10424
+ "files": {
10425
+ "docs/misc/publisher-get-immutability-study.md": {
10426
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10427
+ "hashes": {
10428
+ "conséquence-technique": {
10429
+ "count": 1,
10430
+ "title": "Conséquence technique",
10431
+ "type": "paragraph"
10432
+ }
10433
+ }
10434
+ }
10435
+ }
10436
+ },
10437
+ {
10438
+ "search": "Aujourd’hui get() renvoie la référence live de _value_. Une mutation locale (cart.items.push…) contourne set et les listeners → état partagé / UI désynchronisés.\n",
10439
+ "files": {
10440
+ "docs/misc/publisher-get-immutability-study.md": {
10441
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10442
+ "hashes": {
10443
+ "1-problème-rappel": {
10444
+ "count": 1,
10445
+ "title": "1. Problème (rappel)",
10446
+ "type": "paragraph"
10447
+ }
10448
+ }
10449
+ }
10450
+ }
10451
+ },
10452
+ {
10453
+ "search": "Écritures « officielles » (set, sous-proxies, publisher.clé = …) notifient ; le trou est get + mutation et réutilisation de la ref passée à set.\n",
10454
+ "files": {
10455
+ "docs/misc/publisher-get-immutability-study.md": {
10456
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10457
+ "hashes": {
10458
+ "1-problème-rappel": {
10459
+ "count": 1,
10460
+ "title": "1. Problème (rappel)",
10461
+ "type": "paragraph"
10462
+ }
10463
+ }
10464
+ }
10465
+ }
10466
+ },
10467
+ {
10468
+ "search": "Fichier central : src/core/utils/PublisherProxy.ts.\n",
10469
+ "files": {
10470
+ "docs/misc/publisher-get-immutability-study.md": {
10471
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10472
+ "hashes": {
10473
+ "1-problème-rappel": {
10474
+ "count": 1,
10475
+ "title": "1. Problème (rappel)",
10476
+ "type": "paragraph"
10477
+ }
10478
+ }
10479
+ }
10480
+ }
10481
+ },
10482
+ {
10483
+ "search": "Le modèle F met le coût là où il est acceptable (écritures), avec une sémantique nette.\n",
10484
+ "files": {
10485
+ "docs/misc/publisher-get-immutability-study.md": {
10486
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10487
+ "hashes": {
10488
+ "perf-ordre-de-grandeur": {
10489
+ "count": 1,
10490
+ "title": "Perf (ordre de grandeur)",
10491
+ "type": "paragraph"
10492
+ }
10493
+ }
10494
+ }
10495
+ }
10496
+ },
10497
+ {
10498
+ "search": "Déjà présent (ne pas confondre avec la cible) :\n",
10499
+ "files": {
10500
+ "docs/misc/publisher-get-immutability-study.md": {
10501
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10502
+ "hashes": {
10503
+ "33-rôle-du-spike-actuel-sur-cette-branche": {
10504
+ "count": 1,
10505
+ "title": "3.3 Rôle du spike actuel sur cette branche",
10506
+ "type": "paragraph"
10507
+ }
10508
+ }
10509
+ }
10510
+ }
10511
+ },
10512
+ {
10513
+ "search": "→ Radar pour lister les mutations pendant la migration vers F. Destiné à disparaître ou à se réduire une fois le moteur immutable en place.\n",
10514
+ "files": {
10515
+ "docs/misc/publisher-get-immutability-study.md": {
10516
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10517
+ "hashes": {
10518
+ "33-rôle-du-spike-actuel-sur-cette-branche": {
10519
+ "count": 1,
10520
+ "title": "3.3 Rôle du spike actuel sur cette branche",
10521
+ "type": "paragraph"
10522
+ }
10523
+ }
10524
+ }
10525
+ }
10526
+ },
10527
+ {
10528
+ "search": "Oui : publier le chantier sur un dist-tag npm dédié, pas sur latest, le temps d’un usage approfondi.\n",
10529
+ "files": {
10530
+ "docs/misc/publisher-get-immutability-study.md": {
10531
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10532
+ "hashes": {
10533
+ "4-canal-de-livraison--dist-tag-npm-reco": {
10534
+ "count": 1,
10535
+ "title": "4. Canal de livraison — dist-tag npm (reco)",
10536
+ "type": "paragraph"
10537
+ }
10538
+ }
10539
+ }
10540
+ }
10541
+ },
10542
+ {
10543
+ "search": "Versions du type 6.0.0-immutable.1, .2, … (prerelease) : claires dans le lockfile, republish fréquentes OK.\n",
10544
+ "files": {
10545
+ "docs/misc/publisher-get-immutability-study.md": {
10546
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10547
+ "hashes": {
10548
+ "proposition-de-tags": {
10549
+ "count": 1,
10550
+ "title": "Proposition de tags",
10551
+ "type": "paragraph"
10552
+ }
10553
+ }
10554
+ }
10555
+ }
10556
+ },
10557
+ {
10558
+ "search": "Go dist-tag immutable. C’est le bon niveau de netteté : chantier puissant isolé, adoption volontaire, mesure avant major. Le spike strictGet peut vivre sur la même branche/tag comme aide à la migration, documenté comme temporaire.\n",
10559
+ "files": {
10560
+ "docs/misc/publisher-get-immutability-study.md": {
10561
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10562
+ "hashes": {
10563
+ "avis": {
10564
+ "count": 1,
10565
+ "title": "Avis",
10566
+ "type": "paragraph"
10567
+ }
10568
+ }
10569
+ }
10570
+ }
10571
+ },
10572
+ {
10573
+ "search": "Zones Billetterie chaudes : access-control/**, utils/cart.ts + components/cart/**, placing/**, subscription / tarifs, forms, ~300 onAssign, legacy lb_placement JS.\n",
10574
+ "files": {
10575
+ "docs/misc/publisher-get-immutability-study.md": {
10576
+ "title": "Étude — immutabilité DataProvider / `get()` (REDMINE-79567)",
10577
+ "hashes": {
10578
+ "5-impact-consommateurs-rappel-audit": {
10579
+ "count": 1,
10580
+ "title": "5. Impact consommateurs (rappel audit)",
10581
+ "type": "paragraph"
10582
+ }
10583
+ }
10584
+ }
10585
+ }
10286
10586
  }
10287
10587
  ]
@@ -38,7 +38,12 @@ export class DocsMakdownRenderer extends Subscriber(LitElement) {
38
38
  private _text = "";
39
39
  set text(value: string) {
40
40
  this._text = parseMarkdownWithSonicCode(
41
- (markdown) => marked.parse(markdown) as string,
41
+ // Tables scroll in a wrapper, so they keep their full width on phones
42
+ (markdown) =>
43
+ (marked.parse(markdown) as string).replace(
44
+ /<table>[\s\S]*?<\/table>/g,
45
+ (table) => `<div class="docs-table-scroll">${table}</div>`,
46
+ ),
42
47
  value,
43
48
  );
44
49
  this.requestUpdate();
@@ -19,14 +19,13 @@ docs-markdown-renderer :is(h1, h2, h3, h4)[id] {
19
19
  docs-page.prose :where(img) {
20
20
  max-width: 100%;
21
21
  }
22
+ /* Markdown tables keep 100% width; the wrapper scrolls when columns overflow */
23
+ docs-page .docs-table-scroll {
24
+ overflow-x: auto;
25
+ }
22
26
  /* Wide demos (fixed min-width groups…) scroll instead of widening the page on phones */
23
27
  @media (max-width: 639px) {
24
28
  docs-page sonic-code > div {
25
29
  overflow-x: auto;
26
30
  }
27
- /* tables stay 100% wide on larger screens; on phones they scroll */
28
- docs-page.prose :where(table) {
29
- display: block;
30
- overflow-x: auto;
31
- }
32
31
  }
@@ -0,0 +1,22 @@
1
+ {
2
+ "extends": "./tsconfig-model.json",
3
+ "compilerOptions": {
4
+ "noEmit": false,
5
+ "emitDeclarationOnly": true,
6
+ "declaration": true,
7
+ "declarationMap": true,
8
+ "outDir": "../dist/types",
9
+ "rootDir": "."
10
+ },
11
+ "include": ["**/*.ts"],
12
+ "exclude": [
13
+ "node_modules/**/*",
14
+ "**/*.spec.ts",
15
+ "**/*.test.ts",
16
+ "**/*.demo.ts",
17
+ "**/*.stories.ts",
18
+ "**/*.type-test.ts",
19
+ "docs.ts",
20
+ "docs/**/*"
21
+ ]
22
+ }