@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
@@ -1,13 +0,0 @@
1
- ---
2
- description: sonic-theme — design tokens, not API scope
3
- globs: **/*.{ts,tsx,css,html}
4
- alwaysApply: false
5
- ---
6
-
7
- # Theme
8
-
9
- Skill **`concorde-theme`**
10
-
11
- - `<sonic-theme color font class="block bg-base">` + `--sc-*` CSS variables
12
- - `theme="dark"` for built-in dark palette
13
- - Not for `serviceURL` / API — use **`concorde-scope`**
@@ -1,66 +0,0 @@
1
- ---
2
- description: Patterns Concorde — DataProvider, décorateurs, templates Lit list/queue, pas sonic-fetch
3
- globs: **/*.{ts,tsx,js,mjs}
4
- alwaysApply: false
5
- ---
6
-
7
- # Concorde — patterns
8
-
9
- Référence : `.cursor/skills/concorde/SKILL.md` + `.cursor/skills/concorde-imports/SKILL.md`
10
- Migration get/set/dp : `.cursor/skills/concorde-get-set-dp/SKILL.md`
11
-
12
- ## Imports
13
-
14
- **Apps externes** : chemins courts (`@supersoniks/concorde/list`, `/menu`, `/decorators`, …) — voir skill `concorde-imports`.
15
-
16
- **Dépôt Concorde (lib + doc)** : chemins longs ou relatifs — ex. `core/components/functional/list/list`, `core/decorators/Subscriber`, `core/utils/dataProviderKey`. Pas `@supersoniks/concorde/list` ici.
17
-
18
- ## Vocabulaire
19
-
20
- - **DataProvider** (jamais « publisher »)
21
- - Accès impératif : **`dp(clé).get()` / `.set()` / `.invalidate()`** ou `get(clé)` / `set(clé, v)` — **jamais** `PublisherManager.getInstance()` ni `PublisherManager.get()` dans le code métier (bootstrap `dp.ts` excepté)
22
-
23
- ## Interdits (nouveau code)
24
-
25
- - `sonic-fetch` → `sonic-queue` + filtre, ou `@get`
26
- - Les décorateurs API (`@get`, `@post`, `@put`, `@patch`) s'adaptent aux
27
- propriétés et aux méthodes
28
- - `@onAssign` → `@handle` + `DataProviderKey`
29
- - `@bind` → `@subscribe` + `DataProviderKey<T, U>` (pas sur composants métier)
30
- - `data-bind` HTML → `@subscribe` / `sub()`
31
- - `sonic-input` + `@input` → `formDataProvider` + `name`
32
- - Templates HTML sur list/queue → `.items`, `.separator`, `.noItems`, `.skeleton`
33
-
34
- ## DataProviderKey dynamique
35
-
36
- ```typescript
37
- new DataProviderKey<T, { userIndex: number }>("users.${userIndex}")
38
- ```
39
-
40
- Placeholder `${prop}` = chaîne normale, résolu depuis le composant hôte.
41
-
42
- ## get / set / dp vs sub()
43
-
44
- - **`get` / `set` / `dp`** : pas de `${` / `{$` dans la string passée (clé statique ou chemin JS évalué).
45
- - **`sub(chemin | DataProviderKey)`** : dynamique OK dans les templates (placeholders `${…}` sur l’hôte).
46
- - Clé dynamique → décorateur ou `dp(idRésolu)`, pas `dp(cléAvecPlaceholder)`.
47
-
48
- ## Scope / theme
49
-
50
- - **Scope** : `<sonic-scope serviceURL="…">` · `@get(endpoint)` ou `@get(endpoint, apiConfigKey)` — skills `concorde-scope`
51
- - **GET + handler** : `@get(endpoint)` sur une méthode ; le handler reçoit
52
- `result`, `response`, `request`, ou `undefined`. Conserver le handle retourné
53
- par `get` pour `refetch`.
54
- - **Write + handler** : même modèle avec `post`, `put`, `patch` ; `@send`
55
- reste le déclencheur explicite.
56
- - **Theme** : `<sonic-theme color font class="block bg-base">` · `--sc-*` — skill `concorde-theme`
57
-
58
- ## Migration Subscriber / sonic-fetch (piège fréquent)
59
-
60
- - Retirer `extends Subscriber` **sans** `@subscribe` sur chaque champ affiché → UI vide (props orphelines).
61
- - Remplacer `sonic-fetch` : `@get` + alimenter le DP ; UI en `@subscribe` feuille ou hôte `Subscriber` + `dataProvider`/`subDataProvider`.
62
- - `@get` + placeholders `${prop}` : propriétés homonymes sur l'hôte (ou sync dans `willUpdate`).
63
- - Modale / portal : `@get(endpoint, apiConfigKey)` si pas de `serviceURL` ascendant.
64
- - `@subscribe` → préférer `@state()`, pas `@property`.
65
-
66
- Détail : skill `concorde` — section « Piège migration Subscriber → LitElement ».
@@ -1,53 +0,0 @@
1
- # Concorde — patterns agent
2
-
3
- Référence doc : fichiers `.md` dans `node_modules/@supersoniks/concorde/src/`.
4
-
5
- ## Imports
6
-
7
- **Apps externes** : chemins courts (`/menu`, `/list`, `/decorators`, `/dataProviderKey`, …).
8
-
9
- **Dépôt Concorde (lib + doc)** : `core/components/functional/list/list`, `core/decorators/Subscriber`, `core/utils/dataProviderKey` — pas `@supersoniks/concorde/list` ici.
10
-
11
- ## Vocabulaire
12
-
13
- - **DataProvider** (jamais « publisher »)
14
- - Accès : **get / set** — pas PublisherManager
15
-
16
- ## Interdits (nouveau code)
17
-
18
- - sonic-fetch → sonic-queue + filtre, ou @get
19
- - Les décorateurs API (@get, @post, @put, @patch) s'adaptent aux propriétés
20
- et aux méthodes
21
- - @onAssign → @handle + DataProviderKey
22
- - data-bind HTML → @subscribe / sub()
23
- - sonic-input + @input → formDataProvider + name
24
- - Templates HTML list/queue → .items, .separator, .noItems, .skeleton
25
- - Chemins longs ui/…, functional/…, core/… quand un alias racine existe
26
-
27
- ## DataProviderKey dynamique
28
-
29
- Placeholder `${prop}` dans une chaîne normale : `"users.${userIndex}"`.
30
-
31
- ## Scope vs theme
32
-
33
- - **Scope** (`sonic-scope`) : `serviceURL`, `formDataProvider`, icônes — skill `concorde-scope`
34
- - **Theme** (`sonic-theme`) : `--sc-*` tokens, dark mode — skill `concorde-theme`
35
- - `@get(endpoint)` sans clé config → hérite scope ; `@get(endpoint, apiConfigKey)` → DataProvider
36
- - `@get(endpoint)` sur une méthode reçoit `result`, `response`, `request`, ou
37
- `undefined` ; conserver le handle retourné par `get` pour `refetch`
38
- - Même modèle avec `post`, `put`, `patch` ; `@send` reste le déclencheur
39
- explicite de l'opération
40
- - Modale / portal : préférer `apiConfigKey` si pas de scope DOM fiable
41
-
42
- ## Migration Subscriber / sonic-fetch
43
-
44
- - Ne pas retirer `Subscriber` sans `@subscribe` feuille par feuille sur chaque champ du `render()`.
45
- - `sonic-fetch` → `@get` + DP ; `@subscribe` ou hôte `Subscriber` avec `dataProvider`/`subDataProvider`.
46
- - Placeholders Endpoint = propriétés homonymes sur l'hôte (`checkCode` → copier vers `code` si besoin).
47
- - `@subscribe` + `@state()`, pas `@property` pour la lecture DP.
48
-
49
- ## Navigation
50
-
51
- sonic-menu + sonic-menu-item + sonic-divider. pushstate + autoActive="strict".
52
-
53
- Pas de tirets dans les noms de dossiers routes.
@@ -1,194 +0,0 @@
1
- ---
2
- name: concorde-get-set-dp
3
- description: >-
4
- Migration et usage de get/set/dp avec DataProviderKey statique.
5
- Rejet des placeholders ${} par resolveStaticPublisherPath ; sub() et
6
- décorateurs pour le dynamique.
7
- ---
8
-
9
- # Concorde — get / set / dp (chemins statiques)
10
-
11
- Skill de **migration** vers Concorde ≥ 4.6 avec `resolveStaticPublisherPath`.
12
- À activer quand un projet monte de version ou refactorise vers `DataProviderKey`.
13
-
14
- Référence framework : skill **`concorde`**, doc `src/docs/misc/dataProviderKey.md`.
15
-
16
- ## Quand utiliser cette skill
17
-
18
- - Monter `@supersoniks/concorde` avec garde statique sur `get` / `set` / `dp`.
19
- - Auditer un codebase TypeScript existant avant/après upgrade.
20
- - Distinguer **chemin évalué en JS** vs **placeholder Concorde** `${prop}` / `{$prop}`.
21
- - Choisir entre API programmatique (`get/set/dp`) et réactivité (`sub`, décorateurs).
22
-
23
- ## Règle de rejet (runtime)
24
-
25
- `resolveStaticPublisherPath` lève une erreur si la string passée à `get`, `set` ou `dp` contient **`${`** ou **`{$`** :
26
-
27
- | Appel | Résultat |
28
- |-------|----------|
29
- | `dp(new DataProviderKey("users.${userIndex}"))` | **throw** |
30
- | `get("users.${userIndex}")` | **throw** |
31
- | `dp(staticKey.path)` si `.path` contient `${` | **throw** |
32
-
33
- **OK** — le chemin est résolu **avant** l'appel (pas de placeholder littéral) :
34
-
35
- ```typescript
36
- set(`app.pages.${index}.isComplete`, true); // → "app.pages.2.isComplete"
37
- dp(`${this.formDataProvider}/fieldName`); // → "checkoutForm/email"
38
- ```
39
-
40
- **Faux positif fréquent** : grep `${` dans les sources TS ne suffit pas — vérifier la **valeur runtime** passée à `get/set/dp`.
41
-
42
- ## Rétrocompatibilité
43
-
44
- | Avant | Après (recommandé) | Statut |
45
- |-------|-------------------|--------|
46
- | `dp(key.path)` | `dp(key)` | Équivalent si clé statique |
47
- | `set(key.path, v)` | `set(key, v)` | Équivalent |
48
- | `get("myCounter.count")` | `get(key.count)` | Typage amélioré |
49
- | `key.path` dans attribut HTML | Inchangé | Toujours valide |
50
- | `@onAssign(key.path)` | `@handle(key.leaf)` | Migration parallèle (skill `concorde`) |
51
-
52
- Aucune rupture pour le code qui passait déjà des **strings résolues** ou des clés **statiques**.
53
-
54
- ## Trois niveaux d'accès DataProvider
55
-
56
- | Mécanisme | Contexte | Dynamique |
57
- |-----------|----------|-----------|
58
- | **`get` / `set` / `dp`** | Code impératif, snapshot instant T | **Non** (placeholder `${` interdit) |
59
- | **`sub(chemin \| clé)`** | Template Lit, réactivité | **Oui** — string, concat JS, ou `DataProviderKey` avec `${prop}` |
60
- | **`@subscribe` / `@publish` / `@handle`** | Propriétés composant | **Oui** — `DataProviderKey<T, U>` avec `"base.${prop}"` |
61
- | **`@bind`** | Legacy / bidirectionnel | Éviter sur composants métier — préférer `@subscribe` |
62
-
63
- ### `sub()` — dynamique OK (clés incluses), ne pas migrer vers `get()`
64
-
65
- `sub()` accepte `string | DataProviderKey`, résout les placeholders `${prop}` depuis le **composant hôte** du template (comme `@subscribe`), et se ré-abonne quand les props observées changent.
66
-
67
- ```typescript
68
- const userKey = new DataProviderKey<User, { userIndex: number }>("users.${userIndex}");
69
-
70
- html`<p>${sub(userKey.name)}</p>`
71
- html`<p>${sub(counterKey.count)}</p>`
72
- html`<p>${sub(this.formDataProvider + ".email")}</p>`
73
- ```
74
-
75
- Doc : `src/docs/directives/sub.md`.
76
-
77
- **Anti-pattern** : remplacer `sub(…)` par `get(…)` dans un template → perte de réactivité (snapshot unique).
78
-
79
- ### Clé dynamique Concorde → décorateur ou factory
80
-
81
- ```typescript
82
- export const resourceKey = new DataProviderKey<ResourceData, { resourceId: string }>(
83
- "${resourceId}",
84
- );
85
-
86
- // ❌ dp(resourceKey) ou dp(resourceKey.path) → throw
87
- export const resourceProvider = (id: string) => dp<ResourceData>(id);
88
-
89
- @handle(resourceKey.conf.mode)
90
- onMode(mode: Mode) { /* … */ }
91
- ```
92
-
93
- ## Patterns avant / après
94
-
95
- ### Statique typé (nouveau code)
96
-
97
- ```typescript
98
- const cartKey = new DataProviderKey<Cart>("cart");
99
- set(cartKey, { items: [] });
100
- dp(cartKey.items[0].qty).set(1);
101
- ```
102
-
103
- ### ID runtime (string pure, pas placeholder Concorde)
104
-
105
- ```typescript
106
- dp(resolvedId); // ex. "resource-abc123"
107
- set(`forms/${formId}`, formData);
108
- ```
109
-
110
- ### Index ou segment dynamique via JS (compatible)
111
-
112
- **Avant** :
113
-
114
- ```typescript
115
- set(`app.pages.${index}.isComplete`, isComplete);
116
- return get(`app.labels.${language}.${key}`);
117
- ```
118
-
119
- **Après** (option typée, même runtime) :
120
-
121
- ```typescript
122
- const pagesKey = new DataProviderKey<AppState["pages"]>("app.pages");
123
- set(pagesKey[index].isComplete, isComplete);
124
-
125
- const labelsKey = new DataProviderKey<AppState["labels"]>("app.labels");
126
- return get(labelsKey[language][key]);
127
- ```
128
-
129
- **Helper générique** — conserver si le suffixe ne contient jamais `${` :
130
-
131
- ```typescript
132
- export const appSet = <P extends string>(path: P, value: AppValue<P>) => {
133
- set(`app.${path}`, value);
134
- };
135
- ```
136
-
137
- ### Chemins entièrement statiques
138
-
139
- **Avant** :
140
-
141
- ```typescript
142
- set("app.widget.computed", value);
143
- const publisher = dp("app.widget.distance");
144
- ```
145
-
146
- **Après** :
147
-
148
- ```typescript
149
- const widgetKey = new DataProviderKey<AppState["widget"]>("app.widget");
150
- set(widgetKey.computed, value);
151
- const publisher = dp(widgetKey.distance);
152
- ```
153
-
154
- ## Profils de risque (générique)
155
-
156
- | Profil codebase | Risque | Indice |
157
- |-----------------|--------|--------|
158
- | Strings JS uniquement, pas de `DataProviderKey` | Très faible | Chemins déjà résolus avant `get/set/dp` |
159
- | Mix `DataProviderKey` statique + `.path` | Faible | Simplifier `dp(key)` progressivement |
160
- | Clés avec `"${prop}"` passées à `dp()` | **Élevé** | Remplacer par factory `dp(idRésolu)` ou décorateur |
161
- | Templates avec `sub()` | Aucun | Ne pas « migrer » vers `get()` |
162
-
163
- Migrations **distinctes** (hors scope) : `PublisherManager`, `@onAssign` → `@handle`.
164
-
165
- ## Checklist migration (agent)
166
-
167
- 1. [ ] Confirmer version Concorde avec `resolveStaticPublisherPath` dans `dataProviderKey.ts`.
168
- 2. [ ] Chercher `DataProviderKey(` dont le constructeur contient `${` ou `{$`.
169
- 3. [ ] Pour chaque hit : si `get` / `set` / `dp` reçoit la clé → factory `dp(idRésolu)` ou décorateur.
170
- 4. [ ] Simplifier `dp(staticKey.path)` → `dp(staticKey)` sur clés statiques.
171
- 5. [ ] **Ne pas** toucher `sub(...)` ni décorateurs dynamiques sans raison.
172
- 6. [ ] Distinguer grep `${` (source) vs valeur runtime.
173
- 7. [ ] Tests manuels sur les flux métier qui utilisent clés dynamiques et formulaires `sub()`.
174
-
175
- ## Anti-patterns
176
-
177
- | Anti-pattern | Pourquoi |
178
- |--------------|----------|
179
- | `dp(key)` sur clé `"${resourceId}"` | Throw immédiat |
180
- | `sub()` → `get()` dans template | Perte réactivité |
181
- | Refactor global `.path` → clé sur toutes les clés sans tri statique/dynamique | Régressions |
182
- | Confondre migration get/set/dp et suppression `PublisherManager` | Périmètres différents |
183
-
184
- ## Fichiers de référence (package Concorde)
185
-
186
- - `src/core/utils/dataProviderKey.ts` — `resolveStaticPublisherPath`
187
- - `src/core/utils/PublisherProxy.ts` — overloads `get` / `set` / `dp`
188
- - `src/core/utils/publisherPathKey.spec.ts` — tests
189
- - `src/core/directives/DataProvider.ts` — `sub()`
190
- - `src/docs/misc/dataProviderKey.md`
191
-
192
- ## Maintenance
193
-
194
- Mettre à jour quand l'API Concorde évolue ou que de nouveaux cas edge sont documentés dans les specs.
@@ -1,78 +0,0 @@
1
- # Imports Concorde — chemins courts
2
-
3
- Toujours préférer le **chemin export le plus court** documenté dans `package.json` de `@supersoniks/concorde` — **dans les projets consommateurs** (apps qui installent le package).
4
-
5
- Éviter les chemins `ui/…`, `functional/…`, `core/…` quand un alias racine existe **en dehors du monorepo Concorde**.
6
-
7
- ## Dans le dépôt Concorde (lib + doc)
8
-
9
- Les exports courts (`@supersoniks/concorde/list`, `/menu`, `/queue`, …) **ne résolvent pas** ici : l’alias Vite `@supersoniks/concorde` pointe sur `src/`, pas sur les sous-chemins `package.json`.
10
-
11
- | Besoin | ✅ Dans ce repo | ❌ Ne pas utiliser ici |
12
- |--------|----------------|------------------------|
13
- | `sonic-list` | `import "../../core/components/functional/list/list"` ou `@supersoniks/concorde/core/components/functional/list/list` | `@supersoniks/concorde/list` |
14
- | `sonic-queue` | `…/core/components/functional/queue/queue` | `@supersoniks/concorde/queue` |
15
- | UI (button, input, …) | `…/core/components/ui/…` ou relatif depuis `src/docs` | `@supersoniks/concorde/button`, etc. |
16
- | `@subscribe`, `@ancestorAttribute` | `@supersoniks/concorde/core/decorators/Subscriber` | — |
17
- | `DataProviderKey` | `@supersoniks/concorde/core/utils/dataProviderKey` | `@supersoniks/concorde/dataProviderKey` (alias doc seulement si configuré) |
18
-
19
- `@supersoniks/concorde/decorators` peut fonctionner (fichier `src/decorators.ts`) ; préférer quand même les chemins `core/…` dans `src/docs/example/**` pour cohérence.
20
-
21
- ## Composants UI
22
-
23
- | Composant | ✅ Préférer | ❌ Éviter |
24
- |-----------|------------|----------|
25
- | Menu | `@supersoniks/concorde/menu` | `…/ui/menu` |
26
- | Menu item | `@supersoniks/concorde/menu-item` | `…/ui/menu-item` |
27
- | Divider | `@supersoniks/concorde/divider` | `…/ui/divider` |
28
- | Button | `@supersoniks/concorde/button` | `…/ui/button` |
29
- | Theme | `@supersoniks/concorde/theme` | `…/ui/theme` |
30
- | Scope | `@supersoniks/concorde/sonic-scope` | `…/functional/sonic-scope` |
31
- | Input | `@supersoniks/concorde/input` | `…/ui/form/input` |
32
- | Select | `@supersoniks/concorde/select` | `…/ui/form/select` |
33
- | Checkbox | `@supersoniks/concorde/checkbox` | `…/ui/form/checkbox` |
34
-
35
- ## Composants fonctionnels
36
-
37
- | Composant | ✅ Préférer | ❌ Éviter |
38
- |-----------|------------|----------|
39
- | List | `@supersoniks/concorde/list` | `…/functional/list` |
40
- | Queue | `@supersoniks/concorde/queue` | `…/functional/queue` |
41
- | Router | `@supersoniks/concorde/router` | `…/core/components/functional/router/router` |
42
- | Fetch | `@supersoniks/concorde/fetch` | `…/functional/fetch` |
43
- | Value | `@supersoniks/concorde/value` | `…/functional/value` |
44
-
45
- ## Utilitaires & types
46
-
47
- | Besoin | ✅ Préférer | ❌ Éviter |
48
- |--------|------------|----------|
49
- | Décorateurs | `@supersoniks/concorde/decorators` | chemins `…/core/decorators/…` |
50
- | Directives (`sub`) | `@supersoniks/concorde/directives` | — |
51
- | `get` / `set` / `dp` | `@supersoniks/concorde/utils` | `PublisherManager` |
52
- | `DataProviderKey` | `@supersoniks/concorde/dataProviderKey` | `…/core/utils/dataProviderKey` |
53
- | `Endpoint` | `@supersoniks/concorde/utils/endpoint` | `…/core/utils/endpoint` |
54
- | `APIConfiguration` | `@supersoniks/concorde/utils/api` | `…/core/utils/api` |
55
- | Vite config | `@supersoniks/concorde/vite-config` | — |
56
-
57
- ## Exemples
58
-
59
- ```typescript
60
- import "@supersoniks/concorde/menu";
61
- import "@supersoniks/concorde/menu-item";
62
- import "@supersoniks/concorde/divider";
63
- import "@supersoniks/concorde/button";
64
- import "@supersoniks/concorde/theme";
65
- import "@supersoniks/concorde/input";
66
- import "@supersoniks/concorde/list";
67
- import "@supersoniks/concorde/queue";
68
- import "@supersoniks/concorde/router";
69
-
70
- import { subscribe, handle, get } from "@supersoniks/concorde/decorators";
71
- import { sub } from "@supersoniks/concorde/directives";
72
- import { get, set } from "@supersoniks/concorde/utils";
73
- import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
74
- import { Endpoint } from "@supersoniks/concorde/utils/endpoint";
75
- import type { APIConfiguration } from "@supersoniks/concorde/utils/api";
76
- ```
77
-
78
- Side-effect imports (enregistrement custom elements) : toujours le chemin **composant** court ci-dessus.
@@ -1,74 +0,0 @@
1
- ---
2
- name: concorde-menu
3
- description: >-
4
- Menus et navigation Concorde : sonic-menu, sonic-menu-item, sonic-divider.
5
- Sidebar, sections, routes pushstate.
6
- ---
7
-
8
- # Concorde — menus et navigation
9
-
10
- Référence doc : `node_modules/@supersoniks/concorde/src/core/components/ui/menu/menu.md`
11
-
12
- ## Imports
13
-
14
- ```typescript
15
- import "@supersoniks/concorde/menu";
16
- import "@supersoniks/concorde/divider";
17
- ```
18
-
19
- ## Structure type (navigation latérale)
20
-
21
- ```html
22
- <nav aria-label="Navigation latérale">
23
- <sonic-menu direction="column" align="left" size="sm" class="w-full">
24
- <sonic-menu-item pushstate href="/" autoActive="strict">Accueil</sonic-menu-item>
25
-
26
- <sonic-divider label="Section A" align="left" size="sm"></sonic-divider>
27
- <sonic-menu-item pushstate href="/a/page" autoActive="strict">Page A</sonic-menu-item>
28
-
29
- <sonic-divider label="Section B" align="left" size="sm"></sonic-divider>
30
- <sonic-menu-item pushstate href="/b/page" autoActive="strict">Page B</sonic-menu-item>
31
- </sonic-menu>
32
- </nav>
33
- ```
34
-
35
- ## Règles
36
-
37
- | Contexte | Composants |
38
- |----------|------------|
39
- | Liste de liens / nav | **`sonic-menu`** + **`sonic-menu-item`** |
40
- | Séparation de sections | **`sonic-divider`** avec `label` |
41
- | Liens internes (router Concorde) | `pushstate` + `href` sur **`sonic-menu-item`** |
42
- | Item actif | `autoActive="strict"` sur chaque item de route |
43
-
44
- ## Interdits pour la navigation
45
-
46
- - **Ne pas** empiler des **`sonic-button`** ghost pour simuler un menu latéral.
47
- - **Ne pas** inventer des séparateurs custom quand **`sonic-divider`** suffit.
48
- - **Ne pas** oublier `pushstate` sur les liens internes.
49
- - **Ne pas** mettre `autoActive` sur le **`sonic-menu`** — c’est sur chaque **`sonic-menu-item`**.
50
-
51
- ## Attributs utiles
52
-
53
- ### sonic-menu
54
-
55
- `direction="column"`, `align="left"`, `size="sm"` pour une sidebar.
56
-
57
- ### sonic-menu-item
58
-
59
- Hérite de **`sonic-button`** : `pushstate`, `href`, `autoActive`, `variant`.
60
-
61
- ### sonic-divider
62
-
63
- `label`, `align="left"`, `size="sm"`.
64
-
65
- ## Routes fichier
66
-
67
- Pas de **tirets** dans les noms de dossiers sous `routes/` — le générateur Concorde produit des identifiants JS invalides (`dpkey-dynamic` → erreur).
68
-
69
- ## Checklist
70
-
71
- - [ ] `sonic-menu` englobe tous les items
72
- - [ ] Sections séparées par `sonic-divider` avec `label`
73
- - [ ] Chaque route : `pushstate` + `href` + `autoActive="strict"`
74
- - [ ] Imports `@supersoniks/concorde/menu`, `/menu-item`, `/divider` (pas `ui/…`)
@@ -1,70 +0,0 @@
1
- ---
2
- name: concorde-scope
3
- description: >-
4
- Scope (sonic-scope) — inherited API, form, and icon defaults. Not UI.
5
- APIConfiguration via attributes or DataProvider.
6
- ---
7
-
8
- # Scope — configuration héritée
9
-
10
- **Scope** = defaults app-wide via `<sonic-scope>` (light DOM). Les descendants lisent les attributs ancêtres — pas de shadow root.
11
-
12
- ```typescript
13
- import "@supersoniks/concorde/sonic-scope";
14
- ```
15
-
16
- ## Attributs courants
17
-
18
- | Zone | Attributs | Consommé par |
19
- |------|-----------|--------------|
20
- | API | `serviceURL`, `token`, `credentials`, `userName`, `password` | `@get`, `sonic-list`, `sonic-queue`, `sonic-submit` |
21
- | Forms | `formDataProvider`, `dataProvider`, `submitResultDataProvider` | champs form, `sonic-submit` |
22
- | Icons | `customIconLibraryPath`, `customIconDefaultPrefix` | `sonic-icon` `library="custom"` |
23
-
24
- ## APIConfiguration
25
-
26
- Type : `@supersoniks/concorde/utils/api`.
27
-
28
- | Champ | Rôle |
29
- |-------|------|
30
- | `serviceURL` | URL de base API |
31
- | `token` | Bearer |
32
- | `userName` / `password` | Basic auth (si pas de token) |
33
- | `credentials` | Mode `fetch` (`omit`, `same-origin`, `include`) |
34
- | `authToken` | Refresh token (attribut scope : `eventsApiToken`) |
35
- | `tokenProvider` | Chemin pour obtenir un nouveau bearer |
36
- | `cache`, `blockUntilDone`, `keepAlive`, `addHTTPResponse` | Options avancées fetch |
37
-
38
- ## Deux façons de configurer l’API
39
-
40
- **1. Scope** — attributs sur `<sonic-scope>` ou `<sonic-theme>` (API seulement sur scope recommandé) :
41
-
42
- ```html
43
- <sonic-scope serviceURL="https://api.example.com" token="…">
44
- …
45
- </sonic-scope>
46
- ```
47
-
48
- ```typescript
49
- @get(usersEndpoint) // pas de 2ᵉ arg — hérite serviceURL
50
- @state() data: ApiResult<Users> | null = null;
51
- ```
52
-
53
- **2. DataProvider** — objet typé :
54
-
55
- ```typescript
56
- import type { APIConfiguration } from "@supersoniks/concorde/utils/api";
57
-
58
- const apiKey = new DataProviderKey<APIConfiguration>("myApi");
59
- set(apiKey, { serviceURL: "https://api.example.com", credentials: "same-origin" });
60
-
61
- @get(usersEndpoint, apiKey)
62
- @state() data: ApiResult<Users> | null = null;
63
- ```
64
-
65
- Les deux patterns peuvent coexister (scope pour l’URL par défaut, clé explicite quand nécessaire).
66
-
67
- ## Séparation theme / scope
68
-
69
- - **Scope** → API, forms, icônes app-wide
70
- - **Theme** → couleurs, typo (`concorde-theme`) — **pas** `serviceURL`
@@ -1,57 +0,0 @@
1
- ---
2
- name: concorde-theme
3
- description: >-
4
- sonic-theme — design tokens (colors, fonts, dark mode). Not API scope.
5
- ---
6
-
7
- # Theme — design system
8
-
9
- `<sonic-theme>` définit la base visuelle Concorde. **Pas** pour l’API (`serviceURL` → scope, skill `concorde-scope`).
10
-
11
- Les composants ont un **rendu par défaut** sans override : fallbacks dans chaque composant + presets `light` / `dark`. Ne documenter que le **plus petit ensemble** de variables publiques `--sc-*` pour personnaliser un thème.
12
-
13
- ```typescript
14
- import "@supersoniks/concorde/theme";
15
- ```
16
-
17
- ```html
18
- <sonic-theme color font class="block bg-base min-h-screen">
19
- …app…
20
- </sonic-theme>
21
-
22
- <!-- dark -->
23
- <sonic-theme theme="dark" color font class="block bg-base min-h-screen">…</sonic-theme>
24
- ```
25
-
26
- ## Attributs
27
-
28
- | Attribut | Rôle |
29
- |----------|------|
30
- | `class="bg-base block"` (Tailwind) | Fond page / surface (`--sc-base`) |
31
- | `color` | Couleur texte (`--sc-base-content`) |
32
- | `font` | Famille / graisse (`--sc-font-family-base`) |
33
- | *(omit)* \| `theme="custom"` | Défaut : tokens core + vos `--sc-*` ; pas de palette light/dark built-in |
34
- | `theme="light"` \| `"dark"` \| `"auto"` | Presets opt-in ; `auto` suit `prefers-color-scheme` |
35
-
36
- ## Variables CSS essentielles (API publique)
37
-
38
- Override dans `:root`, sur `sonic-theme`, ou fichier CSS projet. **Ne pas** recopier les dérivées (`--sc-rounded-sm`, `--sc-btn-rounded`, …) : elles sont calculées par le thème à partir des primitives.
39
-
40
- Convention : **sans suffixe `-content`** = couleur de **fond / surface / remplissage** ; **avec `-content`** = **texte et icônes** posés sur cette surface (boutons pleins, badges, etc.). Ne pas mélanger les deux rôles.
41
-
42
- - **Surfaces neutres (fonds)** : `--sc-base`, `--sc-base-50` … `--sc-base-900`
43
- - **Texte sur surfaces neutres** : `--sc-base-content` (défaut UI, corps de page)
44
- - **Couleurs sémantiques (fonds)** : `--sc-primary`, `--sc-secondary` (si utilisé), `--sc-success`, `--sc-warning`, `--sc-danger`, `--sc-info`, `--sc-contrast`
45
- - **Texte sur fond sémantique** : `--sc-primary-content`, `--sc-secondary-content`, `--sc-success-content`, `--sc-warning-content`, `--sc-danger-content`, `--sc-info-content`, `--sc-contrast-content`
46
- - **Forme** : `--sc-rounded` (primitive unique pour les rayons)
47
- - **Typo** : `--sc-font-family-base`, `--sc-headings-font-family`, etc.
48
- - **Formulaires (optionnel, global)** : `--sc-border-width`, `--sc-form-height`, `--sc-input-bg`, `--sc-input-color`, `--sc-input-border-color`, états actifs `--sc-input-active-*`
49
-
50
- Privé côté composants : `--sc_*`, `--sc-_color`, … — pas d’API par composant ni `::part()` sauf exceptions documentées.
51
-
52
- Doc utilisateur : `#docs/getting-started/theming.md/theming`.
53
- Doc composant : `node_modules/@supersoniks/concorde/src/core/components/ui/theme/`.
54
-
55
- Popovers, modals, toasts se montent sous le `<sonic-theme>` le plus proche.
56
-
57
- Palette generator : [concordecolors](https://delanfranchi.github.io/concordecolors/).