@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,153 @@
1
+ ---
2
+ name: concorde-docs
3
+ description: >-
4
+ Writes, edits and trims Concorde documentation pages (*.md rendered by the
5
+ doc site): component pages, decorator pages, concept and misc guides. Short,
6
+ sober, generic English with live <sonic-code> examples and one API table.
7
+ Use when creating, rewriting, uniformizing, shortening or removing a doc page,
8
+ touching src/docs/navigation/navigation.ts, or when asked to make the docs
9
+ "cleaner", "shorter" or "less project-specific".
10
+ ---
11
+
12
+ # Concorde docs
13
+
14
+ Concorde is a **public, generic** web-component library. The docs explain the library, nothing else. Write as if the reader has never heard of the company or its products.
15
+
16
+ ## Principles
17
+
18
+ 1. **Short.** One idea per section, 0–4 sentences before an example. Cut anything the example already shows.
19
+ 2. **Example first.** A live `<sonic-code>` beats a paragraph. Prose states defaults, constraints and gotchas, not what the reader can see.
20
+ 3. **Generic.** No product, client, team or internal process. Demo data follows the aviation theme (see [Demo data](#demo-data)).
21
+ 4. **One source of truth.** Link to the page that owns a topic instead of re-explaining it.
22
+ 5. **Current API only.** Document the recommended way. Do not keep "legacy" tutorials; a removed or deprecated API gets one line + a link to its replacement, or nothing.
23
+
24
+ ## Stay generic — never write
25
+
26
+ - Company or product names and history (ticketing, "La Billetterie", "nearly 100 sites", …). The only allowed brand is the npm scope `@supersoniks/concorde`.
27
+ - Ticket / issue references (`REDMINE-12345`, Jira keys), branch names, MR links.
28
+ - Paths or code from consumer apps (`la-billetterie/…`, `src/<app>/components/…`), lists of impacted files, migration audits.
29
+ - Event-ticketing vocabulary in examples: events, shows, venues, orders, tickets, accreditations, counters. Use the aviation theme instead (see [Demo data](#demo-data)).
30
+ - Internal hosts, tokens, real API keys, back-office URLs. Live demos call the local mock API (see below).
31
+ - "We", "our team", "at X we usually…". Address the integrator in the imperative: "Set `announce` when…".
32
+
33
+ Migration notes for one consumer app belong in that app's repo, not here. If such content exists on a page, delete it or move it out (ask before moving).
34
+
35
+ ## Page types
36
+
37
+ | Type | Location | Template |
38
+ |------|----------|----------|
39
+ | UI / functional component | `src/core/components/<ui\|functional>/<name>/<name>.md` | [templates/component.md](templates/component.md) |
40
+ | Decorator / directive | `src/docs/decorators/*.md` · `src/docs/directives/*.md` | [templates/decorator.md](templates/decorator.md) |
41
+ | Getting started / misc | `src/docs/getting-started/` · `src/docs/misc/` | [templates/guide.md](templates/guide.md) |
42
+
43
+ Before writing, read the source (`.ts`: props, slots, defaults, events) and **one sibling page** of the same type. Match the sibling over inventing a layout.
44
+
45
+ Canonical siblings: `ui/alert/alert.md`, `ui/badge/badge.md`, `decorators/subscribe.md`, `getting-started/dataFlow.md`.
46
+
47
+ ## Writing rules
48
+
49
+ - **English** only. Present tense. No marketing ("powerful", "seamless", "very useful").
50
+ - **Title**: `# Alert`, `# @subscribe`, `# Data flow`. No "Legacy:" prefixes, no ticket numbers.
51
+ - **Intro**: one paragraph, 1–3 sentences: what it does, when to choose it, the 1–2 key APIs.
52
+ - **Headings**: sentence case, one concern each (`## Size`, `## Dynamic path`). `##` then `###`, never skip.
53
+ - **Defaults first**: "With no `status`, the alert is `default`."
54
+ - **Inline code**: tags, attributes, props, types in backticks. Never chain backtick spans with commas (they render glued): use `/`, ` · ` or "and".
55
+ - **Bold** for behaviour that prevents misuse, not for every noun.
56
+ - **Tables** for reference data (attributes, slots, options, routes). Not for narrative.
57
+ - **Callouts**: `<sonic-alert status="info|warning">` only for something the reader will get wrong otherwise. Max one per page.
58
+ - No emoji in headings or links.
59
+ - **No "Next step(s)" section.** The pager already links the previous / next page; the sidebar order in `navigation.ts` is the reading order. Fix the order there instead.
60
+
61
+ ## Examples
62
+
63
+ HTML demo (rendered live, editable):
64
+
65
+ ```html
66
+ <sonic-code>
67
+ <template>
68
+ <div class="flex flex-wrap gap-2">
69
+ <sonic-badge>Default</sonic-badge>
70
+ <sonic-badge type="primary">Primary</sonic-badge>
71
+ </div>
72
+ </template>
73
+ </sonic-code>
74
+ ```
75
+
76
+ TypeScript snippet (not executed): `<sonic-code language="typescript">`, escape `<` `>` as `&lt;` `&gt;` inside the template.
77
+
78
+ Lit component demo: put the component in `src/docs/example/<name>.ts`, register it in `DOCS_LIT_DEMO_REGISTRY` (`src/docs/components/docs-demo-sources.ts`), import it in `src/docs/docs.ts`, then embed `<docs-lit-demo for="<tag>"></docs-lit-demo>`. Source and live render then stay in sync.
79
+
80
+ - Show all enum values in **one** grid, not one section per value.
81
+ - Realistic copy from the aviation theme. Lorem ipsum only to demo truncation.
82
+ - Network demos use the local mock: `serviceURL="/docs-mock-api"` + a route from `misc/docs-mock-api.md`. Add a route there (and in `src/docs/mock-api/`) rather than calling a third-party API.
83
+ - Component pages get their `import "@supersoniks/concorde/<name>"` line added automatically under the intro: do not write one.
84
+ - Imports use public entry points: `@supersoniks/concorde/decorators`, `@supersoniks/concorde/dataProviderKey`, … never `../../core/…`.
85
+ - Demo `.ts` files under `src/docs/example/` go through the Vite alias (`@supersoniks/concorde` → `src/`), not the package exports: use `@supersoniks/concorde/decorators` · `directives` · `dataProviderKey` · `endpoint` or `@supersoniks/concorde/core/utils/<x>`. `@supersoniks/concorde/utils/<x>` breaks the dev server (fine in `.md` snippets).
86
+
87
+ ## Demo data
88
+
89
+ The library is named after Concorde: every example tells a small aviation story. Pick the closest fit:
90
+
91
+ | Need | Aviation equivalent |
92
+ |------|---------------------|
93
+ | User / profile | passenger, pilot, crew member (`Ada Lindqvist`, `Captain Leo Marchand`) |
94
+ | List / table rows | flights (`CN 001` · `CDG → JFK` · `Boarding` / `Delayed` / `Landed`), aircraft, airports (`CDG` · `JFK` · `LHR`) |
95
+ | Form | check-in, flight search (from / to / date / cabin), crew sign-up |
96
+ | Status / alert | flight status, gate change, weather warning, turbulence |
97
+ | Numbers / progress | altitude, speed (Mach 2.04), fuel, boarding progress |
98
+ | Cart / selection | cabin class, meal choice, extra baggage |
99
+ | Menu / navigation | Departures · Arrivals · Fleet · Crew |
100
+ | Images | photos in `public/img/concorde/` (see below) — never picsum or any hotlinked URL |
101
+
102
+ - Keep it light: one aviation word per example is enough; the example must still read as generic UI.
103
+ - No real flight bookings or prices presented as genuine.
104
+ - Lists and filters: reuse the `/flights` mock (departures / arrivals, `on-time` · `boarding` · `delayed` · `landed` · `cancelled`) and the `docs-flight-board` demo component (`src/docs/example/docs-flight-demos.ts`). Other mock routes (users, cats…) can stay: relabel them only when you touch the demo anyway.
105
+
106
+ ### Images
107
+
108
+ Use `/img/concorde/plane_XX.jpg` (absolute from the site root, files in `public/img/`). Always set a meaningful `alt`.
109
+
110
+ | File | Subject | Fits |
111
+ |------|---------|------|
112
+ | `plane_03.jpg` | Specifications board, black & white | square crops |
113
+ | `plane_04.jpg` | Concorde on the apron, blue sky | square / card / rounded |
114
+ | `plane_05.jpg` | Concorde behind a car park | wide |
115
+ | `plane_06.jpg` | Ground crew and boarding stairs | wide |
116
+ | `plane_07.jpg` | Crowd around Concorde at night | 3/2 · 16/9 |
117
+ | `plane_09.jpg` | Person on the apron, Concorde behind | wide |
118
+ | `plane_10.jpg` | Fleet parked in a star, aerial | cover / fullscreen |
119
+ | `plane_11.jpg` | Concorde flying over a field | object-position demos |
120
+ | `plane_12.jpg` | Concorde at the gate, black & white | 16/9 · modal |
121
+ | `plane_13.jpg` | Technicians on a wing structure | wide |
122
+ | `plane_01.jpg` | Spectators on a terrace watching Concorde | wide |
123
+ | `plane_02.jpg` | Nose above the boarding stairs (~4 MB: avoid in grids) | portrait-ish |
124
+ | `plane_08.jpg` | Concorde in front of a hangar, with a car | wide |
125
+
126
+ ## Links
127
+
128
+ - Internal link format: `[Data flow](/docs/getting-started/dataFlow)` — same path as under `src/` without `.md`. Components drop the trailing duplicate: `/core/components/ui/button` (source `…/button/button.md`).
129
+ - Same pathnames serve SPA (browser), static HTML (crawlers), and Markdown (`….md` or `Accept: text/markdown`). Do not link `/…/button/button`.
130
+ - Link the first mention of a concept that has its own page, not every mention.
131
+ - Never link to source files of consumer apps or internal tools.
132
+
133
+ ## Adding, renaming or removing a page
134
+
135
+ 1. Edit `src/docs/navigation/navigation.ts` (sidebar order; strings are section titles).
136
+ 2. `grep -rn "<file>.md" src docs ai` and fix or drop every link to it.
137
+ 3. Regenerate search: `node scripts/create-search.js` (also runs on `yarn dev`).
138
+ 4. Component pages: the Components index (`docs-components-index`) reads the nav, nothing else to do.
139
+
140
+ ## Shortening an existing page
141
+
142
+ Cut, in this order: repeated explanations of a linked concept → prose restating the example → "why we built it" history → alternative ways to do the same thing → edge cases nobody hits. Keep working examples untouched unless they are wrong or project-specific.
143
+
144
+ ## Checklist
145
+
146
+ - [ ] Nothing company-, product- or ticket-specific; demo data uses the aviation theme
147
+ - [ ] Title + one-paragraph intro
148
+ - [ ] Each `##` section has an example, or is a short note under one
149
+ - [ ] Defaults and required attributes stated
150
+ - [ ] Exactly one `## API reference`, last, matching the source
151
+ - [ ] No comma-chained inline code
152
+ - [ ] Links resolve; nav and search updated if pages moved
153
+ - [ ] Page is shorter than before, or every added line earns its place
@@ -1,6 +1,6 @@
1
1
  # ComponentName
2
2
 
3
- One paragraph: what **`sonic-component`** does, when to use it instead of alternatives, and the most important `` `attributes` `` / slots. Mention defaults only if they prevent mistakes.
3
+ One paragraph: what **`sonic-component`** does, when to use it instead of alternatives, and the key attributes / slots. Mention defaults only if they prevent mistakes.
4
4
 
5
5
  ## Basic example
6
6
 
@@ -25,7 +25,7 @@ Short explanation of default and allowed values.
25
25
 
26
26
  ## Accessibility
27
27
 
28
- When screen readers or keyboard users need special handling.
28
+ Only when screen readers or keyboard users need special handling. Otherwise drop this section.
29
29
 
30
30
  <sonic-code>
31
31
  <template>
@@ -43,3 +43,7 @@ When screen readers or keyboard users need special handling.
43
43
  |------|-------------|
44
44
  | *(default)* | Primary content |
45
45
  | `named` | Optional slot purpose |
46
+
47
+ If the component has no slots, replace the slots table with one line: "No slots."
48
+
49
+ Values: list literals with ` · ` (`sm` · `md` · `lg`) or a range with `…` (`2xs` … `2xl`), never commas between backtick spans.
@@ -0,0 +1,43 @@
1
+ # @decoratorName
2
+
3
+ One paragraph: what it keeps in sync or triggers, on which property/method, and the key argument (`DataProviderKey`, `Endpoint`, …). Link the owning concept once ([Data flow](#docs/getting-started/dataFlow.md/dataFlow)).
4
+
5
+ ## Import
6
+
7
+ <sonic-code language="typescript">
8
+ <template>
9
+ import { decoratorName } from "@supersoniks/concorde/decorators";
10
+
11
+ @decoratorName(key)
12
+ @state()
13
+ value: Type | null = null;
14
+ </template>
15
+ </sonic-code>
16
+
17
+ ## Basic usage
18
+
19
+ One sentence on the default behaviour.
20
+
21
+ <docs-lit-demo for="docs-decorator-name-demo"></docs-lit-demo>
22
+
23
+ ## Option or variant
24
+
25
+ What changes, and the default.
26
+
27
+ <sonic-code language="typescript">
28
+ <template>
29
+ @decoratorName(key, { option: true })
30
+ </template>
31
+ </sonic-code>
32
+
33
+ ## Notes
34
+
35
+ - Lifecycle constraint (when it runs, when it stops)
36
+ - Interaction with sibling decorators — link, don't re-explain
37
+
38
+ ## API reference
39
+
40
+ | Argument | Type | Description |
41
+ |----------|------|-------------|
42
+ | `key` | `DataProviderKey<T>` | Path to read |
43
+ | `options.option` | `boolean` (default `false`) | Behaviour in one line |
@@ -0,0 +1,25 @@
1
+ # Topic
2
+
3
+ One paragraph: the problem this page solves and the recommended approach. No history, no "why we built it".
4
+
5
+ ## Minimal example
6
+
7
+ <sonic-code language="typescript">
8
+ <template>
9
+ // smallest working code
10
+ </template>
11
+ </sonic-code>
12
+
13
+ ## Step or concept
14
+
15
+ Two to four sentences, then an example. Link pages that own sub-topics instead of repeating them.
16
+
17
+ ## Reference
18
+
19
+ | Item | Role |
20
+ |------|------|
21
+ | `thing` | One line |
22
+
23
+ ## See also
24
+
25
+ - [Related page](#docs/getting-started/dataFlow.md/dataFlow)
package/.claude/skills ADDED
@@ -0,0 +1 @@
1
+ ../.agents/skills
@@ -0,0 +1,21 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [master, main]
6
+ pull_request:
7
+ branches: [master, main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+
15
+ - uses: actions/setup-node@v4
16
+ with:
17
+ node-version: "22"
18
+ cache: yarn
19
+
20
+ - run: yarn install --frozen-lockfile
21
+ - run: yarn test:ci
@@ -0,0 +1,30 @@
1
+ # Arborescence exclue du miroir public GitHub (GitLab reste complet).
2
+ # Syntaxe : une entrée par ligne, # = commentaire.
3
+
4
+ # Site doc
5
+ index.html
6
+ src/docs.ts
7
+ src/docs/
8
+ docs/
9
+ img/
10
+ scripts/create-search.js
11
+ scripts/post-build-docs.js
12
+ scripts/docs-mock-api-vite-plugin.ts
13
+ scripts/docs-open-in-editor-plugin.ts
14
+ public/docs-mock-api-sw.js
15
+ public/docs-mock-api-sw.js.map
16
+
17
+ # Captcha (dépend de altcha.supersoniks.org)
18
+ src/core/components/ui/captcha/
19
+
20
+ # Démos intégrées à la doc
21
+ **/*.demo.ts
22
+
23
+ # CI / infra interne
24
+ gitlab/
25
+
26
+ # Artefacts locaux
27
+ dist/
28
+ build-infos.json
29
+ concorde-core.bundle.js
30
+ concorde-core.es.js
@@ -0,0 +1,59 @@
1
+ # Contribuer à Concorde
2
+
3
+ Merci de votre intérêt pour `@supersoniks/concorde` !
4
+
5
+ ## Modèle de contribution (phase 1)
6
+
7
+ Concorde utilise un dépôt **GitLab interne** comme source complète, avec un **export public filtré** sur GitHub (librairie uniquement — pas le site doc, pas le composant captcha lié à l’infra Supersoniks).
8
+
9
+ | Qui | Où | Comment |
10
+ |-----|-----|---------|
11
+ | Équipe Supersoniks | GitLab | Branche + **Merge Request** vers `master` |
12
+ | Contributeurs externes | GitHub | **Issues** pour signaler bugs ou proposer des améliorations |
13
+ | Contributeurs externes (code) | GitHub / email | Décrire le changement dans une issue, ou proposer un patch que l'équipe intègre sur GitLab |
14
+
15
+ > Les Pull Requests sur le dépôt GitHub public **ne sont pas mergées directement** : le miroir GitLab → GitHub écraserait ces changements. Ouvrez une issue pour discuter avant d'investir du temps.
16
+
17
+ ## Prérequis
18
+
19
+ - Node.js 20+ (22 recommandé)
20
+ - Yarn 1.22 (`packageManager` dans `package.json`)
21
+
22
+ ## Workflow développeur interne
23
+
24
+ ```bash
25
+ git checkout -b ma-branche
26
+ yarn install
27
+ # … modifications …
28
+ yarn test:ci
29
+ # Ouvrir une Merge Request vers master sur GitLab
30
+ ```
31
+
32
+ ## Tests
33
+
34
+ ```bash
35
+ yarn test # watch (développement)
36
+ yarn test:ci # exécution unique (CI)
37
+ ```
38
+
39
+ ## Build
40
+
41
+ ```bash
42
+ yarn build # librairie → dist/
43
+ yarn build-docs # documentation statique → docs/
44
+ yarn dev # serveur de doc local (https://localhost:3000)
45
+ ```
46
+
47
+ ## Conventions
48
+
49
+ - Suivre les patterns existants (Lit, décorateurs, DataProviderKey).
50
+ - Pas de `console.log` oubliés (bloqué par `prepublishOnly`).
51
+ - Documentation : fichiers `.md` colocalisés avec les composants dans `src/`.
52
+
53
+ ## Signaler un problème de sécurité
54
+
55
+ Ne pas ouvrir d'issue publique. Contacter l'équipe Supersoniks directement.
56
+
57
+ ## Évolution prévue
58
+
59
+ Si des contributions externes deviennent fréquentes, le dépôt GitHub pourra devenir la source canonique (modèle inversé). En attendant, GitLab reste le point d'entrée pour le code.
package/DEV.md ADDED
@@ -0,0 +1,54 @@
1
+ # Développement local — consommer Concorde depuis un autre projet
2
+
3
+ ## Recommandé : `file:` (sans `yarn link`)
4
+
5
+ Dans le projet consommateur (la-billetterie, etc.) :
6
+
7
+ ```bash
8
+ yarn add @supersoniks/concorde@file:../../concorde
9
+ ```
10
+
11
+ - Pas de `yarn link` / `yarn unlink` à gérer
12
+ - Comportement proche d’un install registry
13
+ - Après modification de Concorde : `yarn build` dans concorde (génère `dist/js/` + `dist/types/`), puis rebuild du consommateur
14
+
15
+ ## Alternative : `yarn link`
16
+
17
+ Toujours supporté. Dans Concorde :
18
+
19
+ ```bash
20
+ yarn link
21
+ ```
22
+
23
+ Dans le consommateur :
24
+
25
+ ```bash
26
+ yarn link @supersoniks/concorde
27
+ ```
28
+
29
+ ### Pourquoi `vite-config` exclut Concorde du pre-bundle
30
+
31
+ Dans `vite/config.js`, quand un `tsconfig` est passé :
32
+
33
+ ```js
34
+ optimizeDeps: {
35
+ exclude: ["@supersoniks/concorde"],
36
+ // ...
37
+ }
38
+ ```
39
+
40
+ **Toujours utile** avec `yarn link` ou `file:` : Vite ne met pas Concorde en cache dans `node_modules/.vite`, donc les changements dans `dist/js/` (après `yarn build` dans Concorde) sont pris en compte au prochain HMR / rebuild.
41
+
42
+ Les exports npm pointent vers `dist/js/` (runtime) et `dist/types/` (types) — le source `src/` sert au développement de Concorde lui-même.
43
+
44
+ ## Types (`.d.ts`) et runtime (`.js`)
45
+
46
+ `yarn build` exécute `prebuild` (exports) → bundle Vite → `postbuild` (génération de `dist/types/` + `dist/js/`).
47
+
48
+ `yarn build:types` / `yarn build:js` restent disponibles pour régénérer uniquement les déclarations ou le JS.
49
+
50
+ ## Scripts la-billetterie
51
+
52
+ `link:concorde` / `unlink:concorde` dans `la-billetterie/concorde/package.json` restent valides.
53
+
54
+ `test:concorde-lib` pointe vers un fichier `resolvePublisher.spec.ts` **supprimé** — script obsolète à nettoyer côté billetterie.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Supersoniks
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,133 @@
1
+ # Point d'étape — Open Source Concorde
2
+
3
+ > Modèle retenu (phase 1) : **GitLab = source complète**, **GitHub = export filtré** (librairie seule).
4
+
5
+ Dernière mise à jour : juin 2025.
6
+
7
+ ---
8
+
9
+ ## ✅ Fait (dans ce dépôt GitLab)
10
+
11
+ | Élément | Fichier / action |
12
+ |---------|------------------|
13
+ | Licence MIT | `LICENSE` |
14
+ | Retrait Typekit inutilisé | `index.html` |
15
+ | Métadonnées npm (repo, homepage, bugs) | `package.json` |
16
+ | README mis à jour | `README.md` |
17
+ | Guide contributeurs | `CONTRIBUTING.md` |
18
+ | CI GitHub Actions | `.github/workflows/ci.yml` |
19
+ | **Liste d'exclusion GitHub** | `.github-export-ignore` |
20
+ | **Script d'export filtré** | `scripts/github-export.mjs` |
21
+ | **Job CI miroir GitHub** | `gitlab/job_github_mirror.sh` |
22
+
23
+ ### Ce qui reste sur GitLab uniquement (pas sur GitHub)
24
+
25
+ | Exclu | Raison |
26
+ |-------|--------|
27
+ | `index.html`, `src/docs/`, `src/docs.ts` | Site doc → [concorde.supersoniks.org](https://concorde.supersoniks.org/) |
28
+ | `src/core/components/ui/captcha/` | Dépend de `altcha.supersoniks.org` |
29
+ | `**/*.demo.ts` | Démos intégrées à la doc |
30
+ | `gitlab/` | CI / infra interne |
31
+
32
+ Le script retire aussi l'import captcha dans `ui.ts` et filtre les `exports` npm liés à la doc/captcha.
33
+
34
+ ---
35
+
36
+ ## ⏳ À faire de votre côté
37
+
38
+ ### 1. Merger ces changements sur GitLab
39
+
40
+ ```bash
41
+ git add LICENSE README.md CONTRIBUTING.md OPEN_SOURCE_CHECKPOINT.md \
42
+ .github-export-ignore scripts/github-export.mjs \
43
+ .github/workflows/ci.yml .gitlab-ci.yml \
44
+ gitlab/job_github_mirror.sh package.json index.html
45
+ git commit -m "Open source : export GitHub filtré (sans doc ni captcha)"
46
+ # MR vers master
47
+ ```
48
+
49
+ ### 2. Créer le dépôt GitHub public
50
+
51
+ 1. https://github.com/organizations/supersoniks → **New repository** → `concorde`
52
+ 2. **Public**, sans README initial
53
+
54
+ ### 3. Variables CI GitLab
55
+
56
+ **Settings → CI/CD → Variables** (masquées) :
57
+
58
+ | Variable | Exemple |
59
+ |----------|---------|
60
+ | `GITHUB_REPO_URL` | `https://github.com/supersoniks/concorde.git` |
61
+ | `GITHUB_TOKEN` | PAT GitHub scope `repo` |
62
+
63
+ ### 4. Premier export (manuel ou CI)
64
+
65
+ **En local :**
66
+
67
+ ```bash
68
+ node scripts/github-export.mjs /tmp/concorde-github
69
+ cd /tmp/concorde-github
70
+ git init && git add -A && git commit -m "Initial export lib"
71
+ git remote add origin git@github.com:supersoniks/concorde.git
72
+ git push -u origin master
73
+ ```
74
+
75
+ **Via GitLab CI** (après merge sur `master`) :
76
+
77
+ - Lancer le job manuel **`github-mirror`** dans la pipeline
78
+
79
+ > **Ne pas** utiliser le push mirror GitLab natif (il enverrait tout, doc + captcha inclus).
80
+
81
+ ### 5. Vérifier GitHub
82
+
83
+ ```bash
84
+ git clone https://github.com/supersoniks/concorde.git
85
+ cd concorde
86
+ yarn install && yarn test:ci
87
+ ```
88
+
89
+ - Pas de `index.html`, pas de `src/docs/`, pas de `captcha.ts`
90
+ - Pas de référence à `cdn.supersoniks.com` ni `altcha.supersoniks.org` dans le tree
91
+
92
+ ### 6. npm
93
+
94
+ ```bash
95
+ yarn build
96
+ npm publish --access public
97
+ ```
98
+
99
+ (idéalement depuis l'export filtré ou après avoir aligné `files` / `exports` npm)
100
+
101
+ ### 7. Documentation en ligne
102
+
103
+ Doc hébergée sur **https://concorde.supersoniks.org/** (build depuis GitLab, pas depuis GitHub).
104
+
105
+ ---
106
+
107
+ ## Schéma
108
+
109
+ ```
110
+ ┌──────────────────────────────────────────┐
111
+ │ GitLab (interne) — tout le dépôt │
112
+ │ doc + captcha + dev (yarn dev) + CI │
113
+ └──────────────────┬───────────────────────┘
114
+ │ scripts/github-export.mjs
115
+ │ (job github-mirror)
116
+ ▼
117
+ ┌──────────────────────────────────────────┐
118
+ │ GitHub (public) — librairie seule │
119
+ │ src/core, décorateurs, tests, CI Actions │
120
+ └──────────────────────────────────────────┘
121
+
122
+ Doc en ligne : concorde.supersoniks.org (déployée depuis GitLab)
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Checklist finale
128
+
129
+ - [ ] Export GitHub sans `cdn.supersoniks` / `altcha.supersoniks`
130
+ - [ ] `yarn test:ci` OK sur clone GitHub
131
+ - [ ] Job `github-mirror` configuré
132
+ - [ ] npm `@supersoniks/concorde` publié
133
+ - [ ] Doc accessible sur concorde.supersoniks.org
package/README.md CHANGED
@@ -23,7 +23,7 @@ yarn ai-init
23
23
  node node_modules/@supersoniks/concorde/scripts/ai-init.mjs
24
24
  ```
25
25
 
26
- Installe `.cursor/skills`, `.cursor/rules`, `.aiassistant/rules` et `AGENTS.md`. Voir [ai/README.md](ai/README.md).
26
+ Installe la skill `concorde` dans `.agents/skills` (liée depuis `.claude/skills` et `.junie/skills`). `AGENTS.md` n’est jamais touché. Voir [ai/README.md](ai/README.md).
27
27
 
28
28
  ## 📁 Structure du projet
29
29
 
@@ -77,8 +77,8 @@ flowchart LR
77
77
 
78
78
  ### Les briques de données
79
79
 
80
- - **`DataProviderKey<T>`** — chemin **typé** en notation pointée vers une structure composite, ex. `new DataProviderKey<Data>("data").items[0]` → `"data.items.0"`. Navigation type-safe, chemins dynamiques via `${prop}`. Import : `@supersoniks/concorde/dataProviderKey`. Voir [la doc DataProviderKey](https://doc.concorde.test/#docs/_misc/dataProviderKey.md/dataProviderKey).
81
- - **`Endpoint<T, U>`** — un **unique chemin HTTP** (sans notation pointée) portant le type de réponse `T` ; segments dynamiques `${...}`. Consommé par `@get`. Import : `@supersoniks/concorde/utils/endpoint`. Voir [la doc Endpoint](https://doc.concorde.test/#docs/_misc/endpoint.md/endpoint).
80
+ - **`DataProviderKey<T>`** — chemin **typé** en notation pointée vers une structure composite, ex. `new DataProviderKey<Data>("data").items[0]` → `"data.items.0"`. Navigation type-safe, chemins dynamiques via `${prop}`. Import : `@supersoniks/concorde/dataProviderKey`. Voir [la doc DataProviderKey](https://doc.concorde.test/#docs/misc/dataProviderKey.md/dataProviderKey).
81
+ - **`Endpoint<T, U>`** — un **unique chemin HTTP** (sans notation pointée) portant le type de réponse `T` ; segments dynamiques `${...}`. Consommé par `@get`. Import : `@supersoniks/concorde/utils/endpoint`. Voir [la doc Endpoint](https://doc.concorde.test/#docs/misc/endpoint.md/endpoint).
82
82
  - **DataProvider** — le publisher observable qui notifie ses abonnés à chaque assignation.
83
83
 
84
84
  ### Les décorateurs (`src/core/decorators/subscriber/`)
@@ -91,7 +91,7 @@ flowchart LR
91
91
  | `@handle(...keys)` | Appelle une **méthode typée** à chaque assignation (effets de bord, calculs) | jusqu'à 3 `DataProviderKey<T>` |
92
92
  | `@get(endpoint)` | Charge des données via l'API ; la propriété devient `ApiResult<T> \| null` | `Endpoint<T>` |
93
93
 
94
- `DataProviderKey` est la pierre angulaire : c'est lui qui fournit les chemins **typés** utilisés par `@subscribe`, `@publish`, `@bind` et `@handle`, tandis que `Endpoint` fait le pont avec les données distantes via `@get`. Détails et exemples sur la [documentation des décorateurs](https://doc.concorde.test/#docs/_decorators/subscribe.md/subscribe).
94
+ `DataProviderKey` est la pierre angulaire : c'est lui qui fournit les chemins **typés** utilisés par `@subscribe`, `@publish`, `@bind` et `@handle`, tandis que `Endpoint` fait le pont avec les données distantes via `@get`. Détails et exemples sur la [documentation des décorateurs](https://doc.concorde.test/#docs/decorators/subscribe.md/subscribe).
95
95
 
96
96
  ## 🛠️ Développement
97
97